在网络中的每一台主机和路由器中都有一个网络层部分。
网络层能够被分解为两个相互作用的部分,即数据平面和控制平面。
每台路由器的数据平面的主要作用是从其输入链路向其输出链路转发数据报;控制平面的主要作用是协调这些本地的每路由器转发动作,使得数据报沿着源和目的地主机之间的路由器路径最终进行端到端传送。
网络层作用:将分组从一台发送主机移动到一台接收主机。
两种重要的网络层功能:
转发(forwarding)是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。转发发生的时间尺度很短(通常为几纳秒),因此通常用硬件来实现。
路由选择(routing)是指确定分组从源到目的地所采取的端到端路径的网络范围处理过程。路由选择发生的时间尺度长得多(通常为几秒),因此通常用软件来实现。
例子:转发就像通过单个立交桥的过程:一辆汽车从其道路上进入立交桥的一个入口,并且决定应当走哪条路来离开该立交桥。我们可以把路由选择看作是规划从宾夕法尼亚州到佛罗里达州行程的过程:在着手行程之前,驾驶员已经查阅了地图并在许多可能的路径中选择一条,其中每条路径都由一系列经立交桥连接的路段组成。
网络路由器中有一个关键元素是它的转发表:路由器检査到达分组首部的一个或多个字段值,进而使用这些首部值在其转发表中索引,通过这种方法来转发分组。这些值对应存储在转发表项中的值,指出了该分组将被转发的路由器的输出链路接口。
1.控制平面:传统的方法
在每一个路由器中的单独路由器算法元件,在控制平面进行交互
2.控制平面:SDN方法
每台路由器都有一个与其他路由器的路由选择组件通信的路由选择组件。
远程控制器计算和分发转发表以供每台路由器所使用。
而在上图中,控制平面路由选择功能与物理的路由器是分离的,即路由选择设备仅执行转发,而远程控制器计算并分发转发表。
显示在上图中的控制平面方法是软件定义网络(Soft-ware-Defined Networking, SDN)的本质,因为计算转发表并与路由器交互的控制器是用软件实现的,故网络是“软件定义”的。
问题: 从发送方主机到接收方主机传输数据报的“通道”网络提供什么样的服务模型?
对于单个数据报的服务:
确保交付。该服务确保分组将最终到达目的地
具有时延上界的确保交付。该服务不仅确保分组的交付,而且在特定的主机到主机
时延上界内交付。
对于数据报流的服务:
网络层提供了单一的服务,称为尽力而为服务
分组交换机是指一台通用分组交换设备,它根据分组首部字段中的值,从输入链路接口到输出链路接口转移分组。
关注网络层的转发功能,即实际将分组从一台路由器的入链路传送到适当的出链路
下图显示了一个通用路由器体系结构的总体视图,其中标识了一台路由器的4个组件。
任何一个端口既是输入端口,又是输出端口
分布式交换:
路由器使用转发表来查找输出端口,使得到达的分组能经过交换结构转发到该输出端口。转发表是由路由选择处理器计算和更新的(使用路由选择协议与其他网络路由器中的路由选择处理器进行交转发表从路由选择处理器经过独立
转发表从路由选择处理器经过独立总线(例如一个PCI总线)复制到线路卡。
路由器用分组目的地址的前缀(prefix)与该表中的表项进行匹配;如果存在一个匹配项,则路由器向与该匹配项相关联的链路转发分组。
最长前缀匹配
即在该表中寻找最长的匹配项,并向与最长前缀匹配相关联的链路接口转发分组。
最长前缀匹配:在路由器中经常采用TCAMs(ternary content addressable memories)硬件来完成
输入端口缓存
当交换机构的速率小于输入端口的汇聚速率时,在输入端口可能要排队
交换结构位于一台路由器的核心部位, 因为正是通过这种交换结构, 分组才能实际地从一个输入端口交换(即转发)到一个输出端口中。
交换速率:分组可以按照该速率从输入传输到输出
运行速度经常是输入/输出链路速率的若干倍
N 个输入端口:交换机构的交换速度是输入线路速度的N倍比较理想,才不会成为瓶颈
3种典型的交换机构
输出端口处理取出已经存放在输出端口内存中的分组并将其发送到输出链路上。
当数据报从交换机构的到达速度比传输速率快,就需要输出端口缓存
在输入端口和输出端口处都可以形成分组队列,排队的位置和程度(或者在输入端口排队,或者在输岀端口排队)将取决于流量负载、交换结构的相对速率和线路速率。
随着这些队列的增长,路由器的缓存空间最终将会耗尽,并且当无内存可用于存储到达的分组时将会出现丢包(packet loss)
假定输入线路速度与输出线路速度(传输速率)是相同的,均为Rline (单位为每秒分组数),并且有N个输入端口和N个输出端口。假设所有分组具有相同的固定长度,分组以同步的方式到达输入端口。
定义交换结构传送速率Rswitch为从输入端口到输出端口能够移动分组的速率
如果Rline比Rswitch快N倍,则在输入端口处仅会出现微不足道的排队。
1.输入排队
如果交换结构不能快得(相对于输入线路速度而言)使所有到达分组无时延地通过它传送,在输入端口也将岀现分组排队,因为到达的分组必须加入输入端口队列中,以等待通过交换结构传送到输出端口。
2.输出排队
到达N个输入端口的每个端口的分组,其目的地是相同的输出端口。因为输出端口在一个单位时间(该分组的传输时间)内仅能传输一个分组,这N个到达分组必须排队(等待)经输岀链路传输。
当没有足够的内存来缓存一个入分组时,就必须做出决定:要么丢弃到达的分组(采用一种称为弃尾(drop tail)的策略),要么删除一个或多个已排队的分组为新来的分组腾出空间。
现在讨论排队的分组如何经输出链路传输的问题
调度: 选择下一个要通过链路传输的分组
1.FIFO (first in first out) scheduling: 按照分组到来的次序发送
丢弃策略: 如果分组到达一个满的队列,哪个分组将会被抛弃?
tail drop: 丢弃刚到达的分组
priority: 根据优先权丢失/移除分组
random: 随机地丢弃/移除
2.优先权调度:发送最高优先权的分组
当选择一个分组传输时,优先权排队规则将从队列为非空(也就是有分组 等待传输)的最高优先权类中传输一个分组。在同一优先权类的分组之间的选择通常以FIFO方式完成
3.循环和加权公平排队
Round Robin (RR) scheduling:
在循环排队规则(nnmcl robin queuing discipline)下,分组像使用优先权排队那样被分类。
一个所谓的保持工作排队(work .conserving queuing)规则在有(任何类的)分组排队等待传输时,不允许链路保持空闲。
Weighted Fair Queuing (WFQ):
一般化的Round Robin
在一段时间内,每个队列得到的服务时间是: Wi/(XIGMA(Wi))*t,和权重成正比
每个类在每一个循环中获得不同权重的服务量
网络层分组被称为数据报
IPv4数据报格式:
并不是所有链路层协议都能承载相同长度的网络层分组。一个链路层帧能承载的最大数据量叫作最大传送单元(MTU)
解决较大MTU转发到较小MTU链路上的方法是将IP数据报中的数据分片成两个或更多个较小的IP数据报,用单独的链路层帧封装这些较小的IP数据报,然后通过输出链路发送这些帧。每个这些较小的数据报都称为片
当生成一个数据报时,发送主机在为该数据报设置源和目的地址的同时贴上标识号。当目的地从同一发送主机收到一系列数据报时,它能够检查数据报的标识号以确定哪些数据报实际上是同一较大数据报的片。
最后一个片的标志比特被设为0,而所有其他片的标志比特被设为1,用来判断是否收到最后一个片
为了让目的主机确定是否丢失了一个片(且能按正确的顺序重新组装片),使用偏移字段指定该片应放在初始IP数据报的哪个位置
主机与物理链路之间的边界叫作接口
一个IP地址与一个接口相关联,而不是与包括该接口的主机或路由器相关联。路由器有两个或以上个接口
IP地址用点分十进制记法(dotled decimal notation)书写,地址中的每个字节用它的十进制形式书写,各字节间以句点隔开,比如地址193.32.216.9的二进制记法是:
11000001 00100000 11011000 00001001
在全球因特网中的每台主机和路由器上的每个接口,都必须有一个全球唯一的IP地址。一个接口的IP地址的一部分需要由其连接的子网来决定
中左上侧的3台主机以及它们连接的路由器接口,都有一个形如223.1.1.xxx的IP地址。互联这3个主机接口与1个路由器接口的网络形成一个子网
IP编址为这个子网分配一个地址223.1.1.0/24,其中的**/24记法,有时称为子网掩码**(network mask),指示32比特中的最左侧24比特定义了子网地址。
系统定义子网:
为了确定子网,分开主机和路由器的每个接口,产生几个隔离的网络岛,使 用接口端接这些隔离的网络的端点。这些隔离的网络中的每一个都叫作一个子网(subnet)
因特网的地址分配策略被称为无类别域间路由选择(Classless Inlerdomain Routing, CIDR)。当使用子网寻址时,32比特的IP地址被划分为两部分,并且也具有点分十进制数形式 a.h.c.d/x ,其中x指示了地址的第一部分中的比特数
形式为a.b.c.d/x的地址的x最高比特构成了IP地址的网络部分,并且经常被称为该地址的前缀(prefix)(或网络前缀)
特殊IP地址:
一个地址的剩余32-x比特可认为是用于区分该组织内部设备的
在CIDR被采用之前,IP地址的网络部分被限制为长度为8、16或24比特,这是一种 称为分类编址(classful addressing)的编址方案,这是因为具有8、16和24比特子网地址的子网分别被称为A、B和C类网络
一个C类(/24)子网仅能容纳多达28-2 =254 (28=256, 其中的两个地址预留用于特殊用途)台主机
当一台主机发出一个目的地址为**255.255.255.255(IP广播地址)**的数据报时,该报文会交付给同一个网络中的所有主机
如何获取一块地址?
对于一台新到达的主机而言,DHCP协议是一个4个步骤的过程,yiddr (表示“你的因特网地址”之意)指示分配给该新到达客户的地址
一旦客户收到DHCP ACK后,交互便完成了,并且该客户能够在租用期内使用DHCP分配的IP地址
DHCP缺点:为每当节点连到一个新子网,要从DHCP得到一个新的IP地址,当一个移动节点在子网之间移动时,就不能维持与远程应用之间的TCP连接
网络地址转换(Network Address Translation ,NAT)
具有专用地址的地域是指其地址仅对该网络中的设备有意义的网络
从广域网到达NAT路由器的所有数据报都有相同的目的IP地址,路由器使用NAT路由器上的一张NAT转换表(NAT translation table),并且在表项中包含了端口号及其IP地址。
NAT动机:本地网络只有一个有效IP地址
NAT知识点
1.IPv6数据报格式
与IPv4的区别:
IPv6数据报的结构更简单、更高效
几个从IPv4移出的字段:
2.从IPv4到IPv6的迁移
基于IPv4的公共因特网如何迁移到IPv6呢?
还有其他种类繁多网络设备(中间盒):
互联网网络设备:传统方式都是通过分布式,每台设备的方法来实现数据平面和控制平面功能
传统方式实现网络功能的问题
基于目的地转发的特征总结为两个步骤:
的通用“匹配加动作”范式
能够对协议栈的多个首部字段进行“匹配” ,这些首部字段是与不同层次的不同协议相关联的。
“动作”能够包括:
- 将分组转发到一个或多个输出端口(就像在基于目的地转发中一样)
- 跨越多个通向服务的离开接口进行负载均衡分组(就像在负载均衡中一样)
- 重写首部值(就像在NAT中一样)
- 有意识地阻挡/丢 弃某个分组(就像在防火墙中一样)
- 为进一步处理和动作而向某个特定的服务器发送一个分组(就像在DPI —样)
下图中的转发设备更为准确地描述为“分组交换机”而不是第三层“路由器”或第二层“交换机”。下图显示了位于每台分组交换机中的一张匹配加动作表,该表由远程控制器计算、 安装和更新。
OpenFlow是一个得到高度认可和成功的标准,匹配加动作转发表在OpenFlow中称为流表(flow table),它的每个表项包括:
下图为OpenFlow 1. 0流表的11个分组首部字段
流表项也可以有通配符。例
128.119.*.*
将匹配其地址的前16比特为128. 119的任何数据报所对应的地址字段。流表项如果有多个动作,它们以在表中规定的次序执行。
书本p235页,主要讲了一些例子
总结:在本章中,我们讨论了网络层的数据平面(data plane)功能,即每台路由器的如下功能:决定到达路由器的输入链路之一的分组如何转发到该路由器的输岀链路之一