《计算机网络》课程笔记 (Ch04-网络层:数据平面)
网络层:数据平面 / Chapter 4
网络层的数据平面功能,即网络层中每台路由器的功能,决定了到达路由器输入链路之一的数据报如何转发到该路由器的输出链路之一。
网络层概述
网络层提供的服务
-
面向连接:虚电路网络。可靠交付由网络负责。
-
无连接:数据报网络(如因特网用的IP协议)。可靠交付由端系统负责。
尽力而为服务,每一个分组独立发送,不提供服务质量的承诺。
网络层的两个主要功能
-
转发(数据平面):分组从路由器输入链路到适当的输出链路,路由器本地动作
-
路由选择(控制平面):分组从源到目的端所采用的路径,是端到端路径的选择
控制平面有两种方法:
- 传统方法:路由器执行路由算法
- SDN:远程控制器计算并分发转发表
路由器工作原理
基于目的地址的转发
根据转发表,采用最长前缀匹配规则确定转发到的目标接口。
交换方式
-
经内存交换
- 速度受到内存带宽的限制,吞吐量小于B/2,B为内存带宽(每秒最多可写进或读出分组数)
- 不能同时转发两个分组,因为总线共享
-
经总线交换
- 不需要选择处理器的干预
- 一次只能有一个分组通过总线传送。某个分组到达输入端口时如果总线正忙,需要排队
- 速度收到总线速率的限制
-
经互联网络交换
- 输入端口来的分组沿水平总线行动,直到到达与对应输出端口垂直总线的交点
- 输出端口不同时可以同时转发多个分组
输入端口排队
由于输入端口速度高于交换机构的转发速度,因此会在输入端口的缓冲区排队。
线路前部(HOL)阻塞:在队列前面被阻塞的分组阻止了该队列其他分组的转发,即使输出端口无竞争(不同、无排队)。如下图右图所示。
由于HOL阻塞,故输入链路上不是跑满,而是跑到大概58%,输入队列就会无限增长。
输出端口排队
由于交换结构到达的速度超过输出端口的处理速度,因此会在输出端口的缓冲区排队。如下图的红色块。
分组调度
由于路由器排队现象的存在,故需要调度算法来选择下一个要发送到链路上的分组。
FIFO先进先出
按照到达次序传输。
优先权排队
优先发送优先权最高的分组,相同优先权的FIFO。通常采用非抢占策略,不打断已有传输。
循环排队
分组被分为多个类别,每个类别一个队列。轮询每个队列,若该队列没有分组则检查下一个队列。
加权公平排队WFQ
在循环排队的基础上,每个类别在每个周期中获得加权的可服务数量。
网络层协议
IPv4数据报
数据报
- 数据报长度:包含头部的总长度,16比特,这意味着IP数据报理论最大长度为65535字节
- TTL:每当一台路由器处理数据报时该值就减一,避免数据报永远在网络中循环
- 上层协议:TCP或UDP,用于接收方解构时使用
- 源和目的IP地址
不考虑选项字段,一个IP数据报有20字节的首部。如果一个数据报承载一个TCP报文段,则data内再包含一个20字节的TCP首部。有的应用层也有自己的首部,因此overhead=20B+20B+rest。
数据报分片和重组
MTU:最大传输单元。
当数据报过大时,需要分片传输,然后根据IP首部中的标识、标志和片偏移用来进行重组。
IPv4编址
通常采用点分十进制表示。
早期IP编址方法
两级结构,{网络号,主机号}。划分成五个固定类别。
问题是浪费了很多地址空间(因为地址块长度固定),并且不够灵活。
全0和全1的主机号一般不使用(代表本网络和广播地址)。
改进IP编址方法
三级结构,{网络号,子网号,主机号}。将早期方法的主机号的一部分作为子网号。
用子网掩码标识子网。子网掩码中Net-id和子网号用1表示, Host-id用0表示。掩码地址 AND IP地址,可以得到对应子网的实际网络地址。
无类别域间路由选择CIDR
两级结构,{网络前缀,主机部分},网络前缀长度可变,由子网掩码中1的个数确定。
子网掩码斜线记法:/+前缀位数(即1的个数)
拥有相同网络前缀的设备组成了一个子网。同一个子网内的设备不需要路由器连接。
路由聚合
可以统一向外界通告一个更宽泛的地址(注意子网掩码的变化),来接收所有相关的数据报,然后根据最长前缀匹配分发。
动态主机配置协议DHCP
用于主机加入网络后自动分配IP地址及其他相关配置。通常使用UDP 67端口。
过程的关键是通过IP广播地址255.255.255.255进行广播。
网络地址转换NAT
在机构内部采用专用地址,而非全球地址。对外暴露一个统一的IP地址。这样可以缓解IP紧缺,提高安全性。
所有离开本地网络的数据报都使用相同的源地址,但源端口不同。
只能适用于内部向外部传送,不能适用于外部向内部(不知道如何反向转换)。
IPv6
扩大地址容量到128比特;简化首部到40字节;取消分片;取消首部校验和字段。
为了在IPv4兼容网络中传IPv6数据报,可以采用隧道技术包装IPv6数据报为IPv4的。