- 运输层依赖网络层的主机到主机的通信服务,提供各种形式的进程到进程的通信。
- 在网络中的每一台主机和路由器都有一个网络层部分。
- 网络层的数据平面功能,也就是网络层中每台路由器的功能(决定数据报是如何转发的)。
- 传统的IP转发(其中转发基于数据报的目的地址)和通用的转发(其中可以使用数据报首部中的几个不同域的值执行转发和其他功能)
1、网络层概述
- 每台路由器的数据平面的主要作用是从其输入链路向其输出链路转发数据报
- 控制平面的主要作用是协调这些本地的每台路由器的转发动作,使得数据报沿着源和目的地主机之间的路由器路径最终进行端到端传送。
- 路由器具有截断的协议栈,没有网络层之上的部分,因为不运行应用层和传输层。
1.1转发和路由选择:数据平面和控制平面
网络层的作用:从一台主机发送到另一台主机。转发和路由选择是网络层的两个重要功能。
- 转发:转发是在数据平面中实现的唯一功能;将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。(很快,通常用硬件实现)
- 路由选择:在控制平面实现(路由选择算法)。确定分组从源到目的地所采取的端到端路径的网络范围处理过程。(通常软件实现)
- 转发表:每台网络路由器中都有这样一个关键元素。通过分组首部在转发表中索引来实现转发分组。
- 控制平面的传统方法:每个路由器里面都有数据平面的转发和控制平面的路由选择,人工配置路由表,彼此之间可以进行路由信息的交换来计算转发表。
- 控制平面的SDN方法:控制平面路由选择功能和物理的路由器是分离的。远程控制器来计算和分发转发表来供每台路由器使用,所以路由器设备只进行转发。在路由器和远程控制器之间也可以通过报文来进行数据交换实现通信。这也是软件定义网络SDN的本质。
1.2网络服务模型
网络服务模型定义了分组在发送与接收端系统之间的端到端运输特性。
-
网络层可能提供的服务: 1)确保交付 2)具有时延上界的确保交付 3)有序分组交付 4)确保最小带宽 5)安全性 -
因特网的网络层提供了单一的服务:尽力而为服务。 尽力而为服务不保证正确交付也不保证按序交付等等。但是,例如ATM网络体系结构提供了确保按序时延、有界时延和确保最小带宽。 -
分组交换机是指一台通用分组交换设备,根据分组首部字段中的值从输入链路接口到输出链路接口转移分组。 -
链路层交换机基于链路层帧中的字段值做出转发决定,属于数据链路层设备。 -
路由器是基于网络层数据报中的首部字段值做出转发决定,属于网络层设备。
2、路由器工作原理
如图,路由器由4个组件组成:
- 输入端口:与物理链路连接的物理层功能;与数据链路层交换的数据链路层功能;查找功能(决定输出端口)
- 输出端口:从交换结构接收分组,并在输出链路上传输这些分组。
- 交换结构:将输入端口连接到输出端口
- 路由选择处理器:执行控制平面功能。在传统路由器中,执行路由选择协议;在SDN路由器中负责与远程控制其通信,接收由远程控制其计算的转发表项,并在输入端口安装这些表项。
输入端口、输出端口和交换结构通常是硬件实现的。 - 转发:基于目的地的转发和通用转发(通用转发里面需要考虑很多因素)
2.1输入端口处理和基于目的地转发
- 1)线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层。
- 2)查找是很重要的一个功能,用来确定输出端口。转发表是由路由选择处理器来计算和更新的。
查找使用前缀匹配:当有多个匹配时,采用最长前缀最匹配规则。 查找需要在很短时间内完成,实践中常常使用三态内容可寻址存储器TCAM来查找。如果交换结构正在处理其他分组,那么该分组需要进入排队阻塞等待。
2.2交换
交换结构位于一台路由器的核心部位。 方式有:经内存交换(由CPU路由选择处理器来进行控制、共享内存)、经总线交换(共享总线,不需要路由选择处理器的干预,有带宽限制)、经互联网络交换(纵横交错,可以并行转发多个分组,非阻塞,但是多个分组进入同一个输出端口,那么有一个分组需要在输入端口进行等待)
2.3输出端口处理
与输入端口的结构相反。取出已经存放在输出端口内存中的分组并将其发送到输出链路上(包括选择和取出排队的分组进行传输,执行所需的链路层和物理层传输功能)
2.4排队
排队的位置和程度取决于流量负载、交换结构的相对速率和线路速率。而且和传输层的缓存一样,当溢出的时候就会出现丢包现象。
2.4.1输入排队
线路前部阻塞:
如图,A和C都各有一个分组需要传输到1输出端口。但是同一时刻只能传输一个分组,假设传输的是A的分组,那么C组的分组就需要进行排队等待。但是我们能看到C组里面还有一个分组时要传输到2输出端口的,但是因为前一个分组还在进行排队等待,所以即使这个时候C组的第二个分组是可以进行传输的,却不得不也进行阻塞等待,这就是输入排队交换机中的线路前部阻塞HOL。
2.4.2输出排队
- 在某些情况下,输出端口处也会形成分组队列,这时,要么丢弃到达的分组(弃尾),要么删除一个或多个以排队的分组为新来的分组腾出空间。通常在缓存填满之前就丢弃一个分组,向发送放提供一个拥塞信号。
- 主动队列管理AQM算法:分组丢弃与标记策略(之一是随机早期检测)
- 输出端口选择队列中的一个分组进行输出就是需要分组调度
- 通常情况下,缓存数量应当等于平均往返时延乘以链路的容量。
2.5分组调度
排队的分组如何经输出链路传输的问题: FCFS先来先服务、优先权、循环排队等等。
2.5.1先进先出FCFS
按照分组到达输出链路队列的相同次序来选择分组在链路上传输。 如图,12345按顺序到达,服务顺序就也是12345,注意在4服务完之后,5还没有到达,所以会有一段空闲时间。
2.5.2优先权排队
到达输出链路的分组被分类放入输出队列中的优先权类,当选择一个分组传输时,优先权排队规则将从队列为非空的最高优先权类中传输一个分组。同一优先权类中采用FCFS。 分为非抢占式优先权排队和抢占式排队:区别在一旦开始服务之后中途能不能被高优先级的打断。 如图,分组134师高优先权类,分组25是低优先权类。在1服务完之后,分组23都在排队中,虽然2到的早,但是3优先权高,所以先执行3。3结束之后再服务2,在2服务的过程中,分组4到达。在非抢占式方式下,只有在2服务完之后才能开始分组4,在抢占式方式下,分组4可以打断分组2.
2.5.3循环和加权公平排队
循环调度器在分的类之间轮流提供服务。
- 保持工作排队规则在有分组排队等待传输时,不允许链路保持空闲。当寻找给定类的分组但是没有找到的时候,保持工作的循环规则将立即检查循环序列中的下一个类。
如图,分组124是第一类,分组35是第二类。在分组1完成之后,就要开始调度第二类的分组了,所以在23之间,是先开始3再开始2。在分组2完成之后,分组4到达,虽然这个时候应该服务第二类分组,但是第二类分组队列为空,所以只能继续调度第一类分组也就是服务分组4,最后分组5才到达。 WFQ加权公平排队:
- 跟循环排队不同的区别在于,每个类在任何时间间隔内可能收到不同数量的服务。
- 每个类i都有分配一个权重wi,在类i有分组要发送的任何时间间隔内,第i类将确保接收到的服务部分等于wi/(w1+w2+…+wj)。
3、网际协议:IPv4、寻址、IPv6及其他
- 网络层著名的网际协议IP(两个著名的版本:IPv4和IPV6)
3.1IPv4数据报格式
网络层分组被称为数据报。 关键字段:
- 版本号:规定了数据报的IP协议版本,不同的版本使用不同的数据报格式。
- 首部长度:用这4比特来确定IP数据报中载荷实际开始的地方。通常IP数据报首部是20字节。
- 服务类型TOS:用来使不同类型的IP数据报能相互区别开来。
- 数据报长度:IP数据报的总长度(首部+数据),该字段长度16比特,所以IP数据报的理论最大长度是65535字节。
- 标识、标志、片偏移:与IP分片有关,IPv6中不允许分片。
- 寿命TTL:确保数据报不会在网络中循环。
- 协议:指示IP数据报的数据部分应该交给哪个特定的运输层协议。协议号是将传输层和网络层绑在一起的粘合剂,而端口号是将传输层和应用层绑在一起。
- 首部校验和:帮助路由器检测收到的IP数据报中的比特错误。用和的反码计算之后进行比较,如果不一致,一般就要丢弃。在每台路由器上都必须重新计算校验和并再次放到原处。
- 源和目的IP地址:通常源主机通过DNS查找来决定目的地址。
- 选项:允许IP首部被扩展。在IPv6中已经去掉了IP选项。
- 数据(有效载荷):IP数据报中的数据字段包含要交付给目的地的运输层报文段。(也可承载其他类型的数据,比如ICMP报文)
3.2IPv4数据报分片
- 一个链路层帧能承载的最大数据量叫做最大传送单元MTU。
- 链路层协议的MTU严格地限制着IP数据报的长度。所以在发送大数据的时候,MTU比IP数据报的长度小,这个时候,对数据报的分片就显得很有必要。
- 片到达目的地之后需要重新组装。在IPv4中,将数据报的重新组装工作放到端系统中,而不是网络路由器中。
- 往往最后一个片的标志比特设置为0,其他片的比特设置为1.使用偏移字段指定该片应放在初始IP数据报的哪个位置。
3.3IPv4编制
- 主机与物理链路之间的边界叫做接口;路由器与它的任意一条链路之间的边界也叫做接口。因为每台主机与路由器都能发送和接收IP数据报,所以IP要求每台主机和路由器接口都拥有自己的IP地址。所以,一个IP地址与一个接口相关联,而不是与包括该接口的主机或者路由器相关联。
- IP地址长4字节,按照点分十进制记法,也就是地址中的每个字节用它的十进制形式书写。如192.168.1.1其中192就是第一个字节的十进制等价位,168就是第二个字节的十进制等价位。
- 一个接口的二IP地址的一部分需要由其连接的子网来决定。
- 子网:如地址233.1.1.1,IP编址为这个子网分配一个地址233.1.1.0/24,其中/24记法,有时称为子网掩码,时最左侧的24比特。
- 因特网的地址分配策略被称为无类别域间路由选择CIDR。a.b.c.d/x,其中x就是地址的第一部分的比特数,构成了IP地址的网络部分(前缀)。前x位时网络号,后32-x位是主机号。
- 分类编址:IP地址网络部分被限制为8、16或24bit(ABC类网络)。
- IP广播地址255.255.255.255,会交付给同一个网络中的所有主机。
- 组织可以获取一块地址,可以由ISP给予。但是由权威机构来进行IP地址空间管理和编号的分配会更方便,这样的话ISP本身就可以得到一块地址,而不用上级ISP分配。
- DHCP动态主机配置协议允许主机自动获取一个IP地址。(临时IP与长久IP)(也被称为即插即用协议或零配置协议)。DHCP是一个cs协议。
如图显示了DHCP的交互过程:
- 1)DHCP服务器发现:一个新主机到达之后,要先发现DHCP服务器,所以会发送广播255.255.255.255,并且源地址是0.0.0.0,发送DHCP发送报文。
- 2)DHCP服务器提供:DHCP服务器收到发送报文之后,就会找到一个合适的IP地址,再加上租约和网关、DNS等信息传过去。这个过程只是告诉主机我可以提供,但是不代表我已经提供了,真正的提供过程是需要后面来完成的。
- 3)DHCP请求:主机实际上会收到不止一个DHCP服务器的推荐,主机从里面选择一个,然后向对应的DHCP服务器发送DHCP请求报文,请求这个地址,回显配置的参数。
- 4)DHCP ACK:对应的DHCP服务器获得请求报文之后,就会对请求报文进行响应,证实所要求的参数。
之后主机就可以使用这个IP地址了,为了不过期,主机还可以进行续约。
3.4网络地址转换技术
一是可以隐藏真正的IP地址(会有一张NAT转换表)
3.6IPv6
因为IPv6没有可选项,所以首部长度是固定的(40字节),所以没有首部长度的字段;而且不能进行分片,所以也没有标志位这些字段,也没有首部校验和。
- 128比特的IP地址长度,40字节的首部,流标签(是发送方要求进行特殊处理的流)
IPv4与IPv6的隧道协议: 实际就是IPv4的路由器会将IPv6传来的数据进行封装打包,然后传给隧道对面的IPv4,再拆包,将数据给IPv6。
4、通用转发和SDN
匹配加动作转发表再OpenFlow中称为流表: 首部字段的集合、计数器集合、动作集合。 匹配 入端口是指分组交换机上接收分组的输入端口。 动作 每个刘翔吧都有0个或多个动作列表,这些动作决定了应用与流表项匹配的分组的处理。 一些重要的动作:转发、丢弃(没有动作的流表项表明某个匹配的分组应当被丢弃)、修改字段(二三四层字段可以被重写)
|