计算机网络网络层数据平面总结
1. 网络层的结构
网络层有两个方面需要分开介绍。第一个方面就是数据平面的方面,他主要做的事情就是转发。而第二个方面就是控制平面,它的主要目的就是路由选择。那么问题来了。路由选择和转发到底是什么?这个需要仔细介绍一下。转发呢,其实就是根据我们上层计算出的一个路由表,然后根据目的IP地址和源IP地址进行的路由转发操作。比如现在有一台路由器,里面有一张表,我现在发送了一个IP数据报到这个路由器上面,那么路由器就会需要根据这张表的一个映射关系,把IP数据报送到另一个路由器上面(其实是由输入链路到其中一个输出链路的过程。现在暂时这么理解,下面给个图看看)。
下一个问题就是什么是路由选择呢?路由选择可以说是路线的规划。通过什么样的路由器路线来去到目的地,这个就是路由选择在做的事情(这一节并不会详细介绍)。那么路由选择和转发有什么样的关系呢?转发所需要的路由表就是通过路由选择算法计算出来的。而路由选择算法需要多个路由器的信息,进行的一个路线计算,并且规划出路线,分配表到下面。而路由选择有两种方法,第一种就是传统方法,每个路由器都会有路由选择组件,并且可以与多个路由器交换信息来计算出当前路由器的转发表。第二种方法就是SDN方法,远程控制器,它由一个总的路由选择组件进行计算,并且把表各自分发到对应的路由器。这种方法可以节省成本,路由组件不需要有太多的功能。(下面给出图)
(第一种方法)
(第二种方法)
那么网络层提供了什么服务?提供了有序分组,确保交付,带宽限制,安全性。而最基础的网络服务就是尽力而为的服务,尽量把数据报交付,也就是说交付不成功也是正常的。我们可以通过构建网络体系结构来拓展并增加相应的服务,例如ATM网络体系结构,提供了按序时延,有限时延,确保带宽等。还有集成服务体系结构,确保时延和无阻塞通信等。
2. 路由器的内部结构和工作原理
既然是网络层肯定就少不了路由器的转发数据报的功能,那么它是如何转发的呢?前面说过的,路由转发需要路由表,路由表需要路由选择。数据报可以通过路由表的映射进行数据报的发送。而转发需要什么信息,第一种就是基于目的地的转发,第二种就是通用转发,它不仅仅只是目的地,可能包括了多个首部等信息进行匹配加动作的操作。
接下来就看看路由表内部的结构吧。
输入输出端口:它们完成了链路层和物理层的数据转换功能,并且输入端口还能够根据表来选择输出端口
交换结构:本节的关键。它完成了数据报由输入端到输出端的一个传输,它的传输速度非常快。
路由选择控制器:用于计算路由表和保存路由虚选择表和链路状况信息。或者只用于接收远程控制器的信息和分发路由表。
那么问题来了为什么端口和交换结构要使用硬件设计来完成发送。原因是无论是输入输出的发送还是交换结构的传输数据速度非常快,交换结构传输速度在纳秒级别,只靠软件来完成传输速度不够,因此需要硬件设计的支持。
接下来就来讨论交换结构。
第一种交换结构是基于内存进行交换的方式,其实就是通过路由选择管理器来把数据报复制到内存里面,然后根据目的地选择输出端口。然后就把数据报复制到这个输出端口的缓存并发送。
第二种呢就是通过总线进行发送。它会给要发送的数据报加上对应输出端口信息的首部,并且广播出去,对应的端口会接收这个数据报
最后一种是纵横式的,也就是有多条总线交织成网,并通过交换结构来疏通,好比铁路中间的路线调整。前面两种方法的缺陷都是只能够发送一个数据报,而这种只要不是同时发送到同一输出端口就可以发送多个数据报,大大加快了传输的速度。
那么这样路由转发这个过程会不会出现排队时延呢?答案是会的。为什么呢?
从第一部分,输入端开始介绍。我们知道交换结构的纵横式特点就是如果发送到同一端口就会被阻塞。好比现在有3个输入端口(现在各自有多个数据报在排队)需要分别发送1个的数据报到同一个输出端口,那么其它两个端口就需要等待。并且这两个等待的端口后面的数据报需要等待。这种即使HOL线路前部阻塞,如果数据报到达率非常大,占用大量的链路容量(输入输出端口的传输速度)排队的数据报就会无限增加。这是第一个排队时延问题。
第二个就是在输出端口上面出现的。因为我们知道交换结构传输的速度远大于我们输出端口发送的速度。假设输出端口发送速率为1,那么交换结构就是1*n,如果我们这个时候有多个数据报从输入端口通过交换结构传输到输出端口,那么多个数据报就要等待输出端口发送。其它数据报就需要等待。这个就是第二个产生排队时延的地方。
那么既然产生了排队,就需要出队的策略。第一种是先进先出,顾名思义。第二种就是优先权出队,它会把数据报根据优先权划分队列,然后优先权更大的那个队列先出。第三种呢循环加权公平排队,先来讲讲循环排队,其实就是分了多个队列,比如分了1,2,3,那么就会按照1,2,3顺序,队列1出一个,队列2出一个,队列3出一个这样的循环。加权呢,其实就是服务权重,比如1占比20%,2占比20%,3占比60%其实就是哪个队列出队更多元素。
3. IPv4寻址和IPv6
首先介绍一个IPv4的一个报文结构
简单介绍一些重要的
①TOS服务类型:提供的时延上限,带宽限制等服务
②上层协议:运输层协议或者是IPv6的转换,交给哪个协议栈处理,TCP还是UDP
③标识、标志、片偏移:IP报分片操作需要使用的字段
④寿命TTL:用于限制跳转路由的次数
IP数据报遭遇什么情况会分片?我们都知道网络层的下一层就是链路层。链路层协议非常多,而且链路协议的MTU最大可以传输的帧大小也不同。而网络层IP包如果比链路层协议更大,那么就需要把IP包进行分片。并且会给分片的IP包加上标识,和片偏移。而片偏移其实就是记录了IP分片的原来位置。而标志只有0、1数据。0表示的是普通数据,而1呢就是用来记录最后一个IP数据报。IP数据报分片可以在源主机和路由器上面进行,但是重组只能够在目的主机上面进行,原因是如果在路由器上面进行重组,不仅时延大,而且浪费资源,由于链路不同会导致处理方式也非常复杂。
那么什么是子网呢?
就是某个区域的网络标识。这个区域可能有很多主机或者再分子网结构。为什么需要子网?子网可以用于转发表中的匹配,这样可以大大减少转发表的占用空间,不需要说每个目的主机都需要对应一个表项。那么子网和主机的IP地址是怎么获取的?第一种方法就是通过人工设置,这个非常耗费精力,而且需要经常修改和观察。第二种是通过动态分配也就是DHCP动态分配技术。它是一个客户端-服务器端的一个协议技术。每个子网都会分配一个DHCP服务器用于分发这些IP地址,也可以是DHCP代理。那么它是怎么工作的呢?①DHCP服务器发现,客户端广播一个发送报文,由于这个时候客户端没有主机ip所以使用的默认ip 0.0.0.0并且通过广播地址255.255.255.255来发送报文到服务器请求IP地址②DHCP服务器提供,因为一个子网可能会有多个DHCP服务器,所以DHCP服务器会广播回去一个提供报文,里面是推荐的IP地址,网络掩码,租用期等的信息,并由客户端选择一个最近的DHCP服务器端的报文接收③DHCP请求,其实就是请求服务器应用这个参数,上面有多个服务器发送推荐报文,而现在就是决定用谁。④对应服务器应答,证实所要求的参数。
接下来要讨论的是网络转换地址
为什么需要网络地址转换?
因为网络号不够用,我们发现有的区域是互不干扰的,那么就可以使用相同的网络号来标识主机。这种类型的网络是专用网络,专用网络是需要网络转换地址才能够接入互联网。这里使用到的技术是NAT转换技术。NAT路由器只有一个IP地址的单一设备。但是它有很多个端口,每个专用网络中的主机需要接入互联网来通信的时候需要自身IP地址和端口,然后通过路由器进行转换。IP专用->IP互联网,端口(专用)->端口(互联网),这样的转换会保存在NAT转换表中,当需要目的主机要应答的时候就会传输回路由器并转换地址到达源主机。
IPv6的介绍
IPv6其实也是基于IP地址不够用而出现的,它与IPv4非常相似,但是减少了校验字段,因为这个字段在TCP中也提供了校验功能,如果每个路由器都要进行校验操作,并且需要修改TTL这些字段那么耗费的时间非常大。 而且IPv6不支持在路由器进行分片操作,它只能在源主机做好分片和在目的主机进行组合。
而IPv6中与IPv4的字段相似的是下一个首部->协议号,跳限制->TTL,流量类型->TOS这些字段非常相似。IPv6首部只占用了40字节,扩展了IP地址的长度。
4. 通用转发
通用转发与基于目的地转发操作类似于,大集合和小集合。通用转发也包括了基于目的地转发。他把功能拓展,范化了。匹配+动作。不仅仅是转发,也可以丢弃,修改首部等动作。它需要openflow中的流表(首部集合,计算器集合,动作集合)来匹配各种首部。这里的首部集合包括了MAC,IP,TCP等。
总结:网络层数据平面更多讲解的是交换机要怎么做,交换机层面做了什么事情。并且介绍了控制平面与数据平面的关系和简单的交互。下一节将会介绍控制平面,并且梳理数据平面与控制平面之间的关系。