网络层——数据平面
- 数据平面:数据平面决定输入数据报如何转发到输出数据报
数据平面的路由器
路由器的结构
- 输入端
- 输出端
- 交换结构
- 路由选择处理器:执行控制平面功能
- 在传统路由器中,它执行路由选择协议,维护选择表与关联链路的状态信息
- 在SDN路由器中,它通过与远程控制器通信来接收转发表
- 它还执行网络管理功能
- 由于速度的要求,输入端输出端和交换结构总是以硬件形式实现
- 协议的选择,以及响应和对远程控制器通信的功能是以软件形式实现
分组转发
输入输出端口处理和基于目的地转发
- 转发的决策在每一个输入端口就进行处理,而不是调用中央处理器,解决了集中处理的瓶颈
- 转发表一般依靠ip地址前缀匹配转发,前缀长度不一定要相同,因而对于多个可选择的前缀来说,一般采用最长前缀匹配规则
分组交换的主要技术
- 通过内存复制到对应输出端口
- 通过总线连接到输出端口,同一时间只有一对“输入--输出”端口可以共享总线
- 经互联网络交换,如下图所示
![image]()
在同一列(即同一输出端口下),如果有一个分组正在使用此端口,那么就要进行等待;而在同一行(即同一输入端口下),如果一个分组正在使用此端口,那么新来的分组就要等待。
路由中的排队问题
- 输入排队:当某一输入端口处理的速度无法和达该的分组速度相匹配时,就会产生阻塞,叫做线路前部阻塞
- 输出排队:当某一分组经过转发到达某一输出端口,而此时输出端口正在处理其他分组,就会产生阻塞
- 对于输出端口和输入端口的缓存来说,阻塞时间越长,缓存剩余空间越小,当缓存空间过小以至于无法容纳排队的分组的时候,就要丢弃分组。要么弃尾,要么删除正在排队的分组,然后加入新分组
排队问题的相关规则(调度算法)
- 对于分组排队,可以类比操作系统中的进程调度
- 几大调度算法
- 先进先出或先来先服务(FIFO or FCFS)算法
- 优先权算法:按优先级设立队列,到来的分组中携带有优先级信息,根据这个信息分组被分配到相应优先级队列
- 循环公平队列:顾名思义,公平就是指设置n个队列,从1,2,3开始依次选择一个队列进行处理,没有加权值
- 加权公平队列WFQ:保证相同优先级业务间公平,不同优先级业务间加权。
- 例如接口中当前有8个流,它们的优先级分别为O,2,2,3,4,5,6,7。则带宽的总配额将是:所有(流的优先级+1)的和。即:1+3+3+4+5+6+7+8=37;每个流所占带宽比例为:(自己的优先级数+1),(所有(流的优先级+1)的和)。即,每个流可得的带宽分别为:1/37,3/37,3/37,4/37,5/37,5/37,6/37,7/37,8/37
IP协议
IPv4的数据报的结构

- version:规定了IP的版本,通过IP版本确定数据报的格式,IPv4版本的数据报格式如上图所示
- header length:确定IP数据报的报首长度
- type of service:用来区分一些数据报服务类型,例如实时流量应用如网络电话和非实时流量应用如邮箱,这个字段信息可以作为路由器分配策略的参考
- datagram length:数据报的长度,包含报首长度和报文长度
- identifier,flag,offset:存放数据的分组分片信息
- time-to-live:数据报的寿命,因为因特网中的数据报可能会产生回路,所以设置时长,过期了就抛弃
- protocol:指明这个数据报对应的协议,例如UDP或者TCP
- checksum:首部检验和,计算首部是否出了差错,而运输层中的检验和是计算整个报文的检验和
- source IP和destination IP:源IP和目的IP
- options:可选项,允许加入自定义扩展字段。这会使得管理更加复杂,影响性能,在IPv6中被取消
- data:数据段
IPv4的数据分片
- 由于不同的链路之间的协议可能不同,导致数据帧大小不同。MTU即数据帧的最大大小
- IPv4设计者把报文段分片以便于在各种链路中传输。
- 分片的重新组装在端系统中,目的是为了减少路由器的负担
- 分片的时候,数据报会带有三个字段
- 标识:标识这个数据分片是属于哪一个完整的数据报,相同数据报分片的标识相同
- 标志:路由器在分片的时候会给最后一个分片的标志比特位设置为0,而给其他分片标志比特位设置为1,这是由于IP协议的不可靠性导致的
- 片偏移字段:确定片是否丢失,也同时记录了分片的顺序
IPv4编址
- 对于一个路由器,它可以与多个主机相连,即它有多个接口与多主机相连,而每一个主机只有一个接口,因此,在IP协议中,IP地址不是主机的地址,而是指主机与路由器连接的那个接口的地址
- IP地址长32bit
- IP地址用点隔开,每一个间隔是八位二进制数的十进制表示结果
![image]()
- 图中展示了一个例子,观察可以知道,一个子网内的IP地址部分相同,子网地址为
223.1.1.0/24,24表示最左边24位比特是子网标志,子网掩码为255.255.255.0,子网掩码的前24位都为1
因特网地址分配策略
- 无类别域间路由选择策略CIDR
- 使用子网寻址时,一个32位bit的IP地址被划为两部分
a.b.c.d/x,x指示了第一部分的比特数 - 当一个子网更改到一个已有的ISP中,它不会将子网的掩码更改,而是在其对外广播中加入这个子网。在因特网中采用最长前缀匹配原则,新加入的子网前缀要长于原从属ISP,因此不会导致混乱。
255.255.255.255是一个特殊的地址,如果一台主机要向225.225.225.225传送报文,那么它的报文会被发送到同一子网下的所有主机中- 假设一个ISP被分配了一个地址块,例如
200.23.16.0/20,那么假设他能够分8块地址,即三个比特位,则子网的IP掩码为200.23.16.0/23等等 - ICANN是一个组织,负责分配全球ISP的IP地址,同时管理DNS根服务器
- 态主机配置协议DHCP被用来动态分配IP地址,这样可以减少手动配置的麻烦,也被称为即插即用协议
- 一般情况下每一个子网都有一个DHCP服务器,如果没有服务器,则需要一个中继代理,通常是一个路由器
- 当子网新加入一个用户时,要经历一下几个步骤
- DHCP服务器发现新用户。新用户由于没有分配IP地址,要让DHCP得知,需要使用广播地址
255.255.255.255来让子网的所有主机周知,通过向DHCP服务器的端口67发送UDP报文,并且以0.0.0.0的地址作为暂时的源地址 - DHCP收到DHCP发现报文并响应DHCP提供报文。这个DHCP服务器也使用广播地址告知所有节点,报文中包含事务的ID,向客户推荐的IP地址,网络掩码以及IP地址的租用期
- 由于一个子网中可能有多个DHCP,当用户选择了一个DHCP的报文时,会给这个DHCP服务器发送DHCP请求报文响应。
- 服务器收到了DHCP请求之后,就会发送DHCP ACK报文响应,当用户收到这个报文之后,动态分配过程就结束了
- DHCP服务器发现新用户。新用户由于没有分配IP地址,要让DHCP得知,需要使用广播地址
网络地址的转换
- 从上面我们知道,网络地址ISP分配给一个IP段作为子网的掩码。但是这样做有一个缺陷:假如子网变大了,导致地址范围变大,而ISP已经分配了一块连续的地址空间,那么就会导致重新分配
- NAT全名叫网络地址装换,是一种用来转换网络地址的技术。NAT将路由器对外包装成一个具有单一IP地址的单一设备,路由器连接的子网使用一套自己的IP地址。在路由器上保留有一张NAT表,如下图所示
![image]()
表项的一端对应局域网的IP和端口号,一端对应广域网的IP地址,当主机发送请求的时候,路由器会替换报文里面的源IP和端口号,当响应报文返回的时候,路由器会根据NAT转换表来转换成局域网对应的IP和端口号 - 路由器是第三层网络层的设备,NAT涉及到端口,关系到运输层,因此在一定程度上违反了分层的原则
Ipv6协议
- Ipv4协议的IP地址只有32位,迟早有用完的那一天,所以人们引入了Ipv6
IPv6的特性
- Ipv6地址容量扩大至128个比特
- 首部简化,只有40字节,是定长首部,这样就可以更快地处理数据报
- 不允许分片组装,如果遇到较大数据报就丢弃,并告知发送方。是为了加快ip转发速度
IPv6的格式

- version
- type of service:同IPv4
- Flow label:用来确定优先权
- payloadlength:有效长度,给定首部后面的数据字节数量
- next hdr:下一个首部,存放Tcp协议或其他协议首部,也可以存放可选字段
- hop limit:计数器,当到达一个路由器计数器加1,超过一定值丢弃
如何从Ipv4转换至Ipv6
- 建隧道:将Ipv4封装成Ipv6
数据平面中的SDN
- SDN:软件定义网络,目的是让软件管理网络,使得修改安装更加快捷
- SDN的本质是网络软件化,提升网络可编程能力,是一次网络架构的重构,而不是一种新特性、新功能
OpenFlow
- OpenFlow是SDN的一个标准。在SDN中,将匹配加动作转发表称作流表,表项包括:
- 首部字段值集合
- 计数器集合:包括已经与该表匹配的分组数量,以及自从该表项上次更新以来的时间
- 分组匹配表项时采取的动作集合
匹配
- OpenFlow的分组匹配字段如下所示
![image]()
- 可以发现OpenFlow中匹配字段涉及到链路层和网络层以及运输层,这违反了分层原则
- 一个流表项可以有通配符,例如可以匹配IP地址128.119..
动作
- 一个流表项有零个和多个动作列表。如果有多个动作,就按序执行
- 重要动作可能有:
- 转发
- 丢弃
- 修改字段




浙公网安备 33010602011771号