网络层的组成——两个平面

网络层主要由 数据平面控制平面 两个部分组成的:

  • 数据平面 :局部的性质,是指每一个交换机内部决定从入口的每一个包应该转发到哪一个出口上
  • 控制平面 :整个网络规模的逻辑概念,决定每一个路由器应当如何导航

两种平面的交互

  • 传统方法:在每一个路由器里面各自实现
  • software-defined nerworking(SDN) :在远程有一个服务器来决定如何转发
    这两种方法的区别如下图:
    传统方法

网络的服务模型

服务模型表示了这个网络的组成方式提供了哪些保证,下面列出了一些服务模型提供的保证:

Best Effort Model

  • 机制非常简单,便于广泛使用
  • 对于绝大多数时间和绝大多数任务提供足够的带宽,包括即时通话和视频传输任务
  • 可以分布式部署,易于复制,可以利用数据中心等技术,从多个位置提供服务
  • 弹性的拥塞控制

路由器模型的综述

路由器的一般模型如下:

路由器会通过读数据头的信息来决定转发给哪个出口

最长前缀匹配

路由器通过匹配最长前缀的方法来决定数据包应该转发到哪一个口里面,例如下图所示的路由表:

当一个数据包到达的时候,路由器会依次尝试匹配最长的可被匹配的前缀,并且去查表,决定转发的出口

switching fabric(交换网络)

在理想的情况下,如果一个路由器有N个入口和N个出口,其中每个口的传输速率为 那么它理想的交换速率应该是

而中间的交换网络有以下几种常见的模型:

前两种是早起的版本,现在版本更多使用第三种全连接的形式,第三种的可并行化程度更高

Queuing Delays(排队延迟是如何产生的)

Input Port Queuing(入口排队)

如果转发的速率比所有入口的传入速率只和要小,那么在入口处会发生排队的情况,最常见的是Head-of-the-Line (HOL) blocking 的情况,即某个入口的第一个包被阻塞了,导致后面的包即使希望传输给其他的出口也无法立即进行转发:

在上面的途中,绿色的包的出口是空闲的,但是必须要等待前面的红色的包完成传输,才能轮得到转发这个绿色的包,这个时候就会出现 queuing delay

输出端口的排队

在输出端口的地方,如果转发的速率为 ,某一个输出端口的上载速率为 那么当很多包都转发到这个端口的时候,一旦速率超过 就需要在出口进行排队,并且当缓冲区满的时候会进行丢包

  • 由于有缓冲区,所以如果发生了网络拥塞和buffer太少,都会丢包
  • 调度的原则是转发表现最好的包,整体表现为优先调度,而网络层是中立的

多少缓冲区是足够的

假设每一条链路的容量是 一共有 条链路,那么需要的缓冲区大小为:

上面的是经验公式,比理论公式更有实用性

缓冲区控制

缓冲区控制主要解决两个问题;

  • 当缓冲区满的时候什么包应该被丢弃
  • 什么样的包标志着拥塞的产生

包调度方法

包调度主要解决应该把哪一个包从缓冲区里面拿出来发出去,一般采用如下的原则:

  • first come, first serve
  • priority
  • round robin
  • weighted fair queueing
    其中的 first come, first serve 又称为First-in-first-out(FIFO) 抽象的数据结构就是一个queue