引子
网络层能够被分解为两个相互作用的部分:
数据平面和控制平面。
网络层概述
路由器具有截断的协议栈,即没有网络层以上的部分。
如下图所示,是一个简单网络:
转发和路由选择:数据平面和控制平面
网络层的作用从表面看就是:
将分组从一台发送主机移动到接收主机。
为此,需要两种重要的网络层功能:
转发
当一个分组到达某路由器后,路由器必须将该分组移动到适当的输出链路。
这也是数据平面中实现的唯一功能
路由选择
当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。
计算这些路径的算法被称为路由选择算法。
路由选择将在网络层的控制平面中实现。
区分转发和路由选择
转发是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。
转发发生的时间尺度很短(几纳秒),通常由硬件来实现。
路由选择是指分组从源到目的地所采取的端到端路径的网络范围处理过程,时间比转发长的多,通
常由软件来实现。
转发表
每台网络路由器有一个转发表,路由器检查到达分组首部的一个或多个字段值,进而使用这些首部值在其转发表中索引。
下图就是一个索引表:
控制平面:传统的方法
路由选择算法运行在每一台路由器中,并且在每台路由器中都包含转发和路由选择两种功能。
并且路由器之间的路由选择算法相互通信。
控制平面:SDN方法
SDN方法是路由选择厂商在其产品中采用的传统方法。
每台路由器都有一个与其他路由器的路由选择组件通信的路由选择组件。
即路由器只负责转发,而转发表的计算交由远程控制器计算并且传输给本地路由器。
上图所示的控制平面方法是软件定义网络的本质。
因为计算转发表并与路由器交互的控制器是用软件实现的,故网络是“软件定义的”。
网络服务模型
网络服务模型定义了分组在发送与接收端系统之间的端到端运输特性。
网络层能提供如下服务:
1.确保交付
2.具有时延上界的确保交付。
3.有序分组交付。
4.确保最小宽带。
5.安全性。
因特网的网络层只提供一种单一的服务:
尽力而为服务。
也就是说:
传送的分组既不能保证以它们发送的顺序被接收,也不能保证它们最终交付。
路由器工作原理
下图是一个路由器的四个组件:
值得注意的是,上图的输入端口和输出端口并不是一个程序的端口,而指的是物理输入和物理输出。
输入端口:
它与位于入链路远端的数据链路层交互来执行数据链路层功能。
交换结构:
交换结构将路由器的输入端口连接到它的输出端口。
输出端口:
存储从交换结构接收的分组,并执行必要的链路层和物理层功能在输出链路上传输这些分组。
路由选择处理器:
路由选择执行控制平面功能。
在传统路由器主要负责计算转发表,在SDN路由器中,路由选择处理器负责与远程控制器通信,获
取到控制器计算的转发表,并且储存在本地路由器中。
输入端口处理和基于目的地转发
下图是一个输入端口处理的流程图:
在输入端口执行路由器的转发,并且使用转发表来查找输出端口。
转发表从路由选择处理器进行交互,或者转发表接收来自SDN控制器的内容。
转发表再从路由选择处理器经过独立总线复制到线路卡,使用线路卡转发决策就可以在每个输入端
口本地做出,而无须基于每个分组调用集中式路由选择处理器。
下图是一个仅包括四个表项的转发表:
使用这种风格的转换表,路由器用分组目的地址的前缀与该表中的表项进行匹配。
如果存在一个匹配项,则路由器向该匹配项相关联的链路转发分组。
若一个分组可以和多个链路接口匹配,则使用“最长前缀匹配规则”,即在表中寻找最长的匹配项转发。
交换
交换结构位于一台路由器的核心部位,正是通过这种交换结构,分组才能从输入端口转发到输出端
口。
交换可以由三种方式来完成:
经内存交换
最简单、最早的路由器是传统的计算机,在输入端口与输出端口之间的交换是在CPU(路由选择处
理器)的直接控制下完成的。
当一个分组到达一个输入端口时,该端口会先通过中断方式向路由选择处理器发送信号。
于是,该分组从输入端口被复制到处理器内存中,路由选择器再从首部中提取出目的地址,在转发
表中找到适当的输出端口,并将该分组复制到输出端口的缓存中。
值得注意的是,在内存交换中不能一次性转发两个分组,即使它们有不同的目的端口,因为经过共
享总线一次仅能执行一个内存读/写。
现在路由器大多是内存交换。
经总线交换
输入端口将分组直接传送到输出端口,不需要路由选择处理器的干预。
经互联网络交换
使用一个更复杂的互联网络,即纵横式交换机,由2N条总线组成的互联网络,连接N各输入端口与
N个输出端口。也正因为这样,纵横式交换机是非阻塞的。
输出端口处理
如图所示,输出端口处理取出已经存放在输出端口内存中的分组并将其发送到输出链路上,这包括
选择和取出排队的分组进行传输,执行所需的链路层和物理层传输功能。
何时出现排队
即路由器的缓存空间耗尽,便会出现丢包。
缓存空间可以是输入端口缓存,也可以是输出端口缓存。
输入排队
原因:
交换结构不能快得使所有到达分组无时延地通过,输入排队便会出现。
线路前部阻塞,即在一个输入队列中排队的分组必须等待通过交换结构发送,因为它被另一个分组
所阻塞。
输出排队
如果路由选择处理器交换的速率远大于输出端口从输出缓存发送分组的速率,那么就会出现输出排
队。
并且,当没有足够的缓存来缓存一个入分组时,就必须丢弃到达的分组(弃尾),或者删除一个或
多个已经在排队的分组。
分组调度
对于分组调度,主要有三种调度(排队方式)。
先进先出
先到达的分组先被转发,后到达的分组如果此时缓存已满则丢弃。
该服务也被叫做FIFO。
优先权排队
传送进来的分组被放入优先权队列中,对于高优先权的分组会被放入高优先权队列,
低优先权的分组会被放入低优先权队列,先转发高优先权队列,后转发低优先权队列。
但是在“非抢占式优先权排队”规则下,哪怕一个低优先权分组被转发过程中,来了一个高优先权分
组,低优先权分组也不会被终止。
循环和加权公平排队
在循环排队规则下,分组也会被进行优先权分类。
即先传送类1的分组,后传送类2的分组,在传送类1的分组,如此循环。
下面是一个两类循环队列的操作图例子:
在这个例子中,分组1、2和4属于第一类, 分组3和5属于第二类。分组1 一到达输出队列就立即开
始传输。分组2和3在分组1的 传输过程中到达,因此排队等待传输。在分组1传输后,链路调度器
查找类2的分组,因 此传输分组3 :在分组3传输完成后,调度器查找类1的分组,因此传输分组
2。在分组2 传输完成后,分组4是唯一排队的分组,因此在分组2后立刻传输分组4。