路由器工作原理

输入端口概述

《计算机网络——自顶向下方法》精炼——4.3.1-4.4.1-LMLPHP

输入端口执行的查找操作是一个很重要的功能。在硬件层面上,使用嵌入式片上DRAM和SRAM内存设计,三态内容可寻址存储器(TCAM) 也用于查找,多种硬件的应用造就了超出简单线性搜索的查找技术。
除了查找外,如果分组在进入交换结构前有其他分组正在使用交换结构,那么分组被暂时阻塞在输入端口,等待稍后被调度以通过交换结构。另外,输入端口还要进行物理层和链路层处理;检查分组版本号、检验和及寿命字段并重写部分字段;更新用于网路管理的计数器。

交换结构概述

交换结构负责将分组从输入接口转发到输出接口,通常有三种方式:
《计算机网络——自顶向下方法》精炼——4.3.1-4.4.1-LMLPHP

  • 内存交换(右上图):这里的内存指的是路由选择处理器的内存。使用这种方式时,一个输入端口的分组被复制到处理器内存中,处理器提取目的地址信息并在转发表中查找到合适的输出端口,再将分组复制到输出端口。由于输入端口和输出端口都共享一条系统总线,因此这种方式一次只能转发一个分组
  • 总线交换(右下图):这种方式不需要路由选择处理器干预。这种方式下输入端口和输出端口之间有一条共享总线,输入端口查找转发表,为即将发送的分组打上标签,这个标签指示分组合适的输出端口,然后将该分组通过总线发送给所有的输出端口,但只有与标签匹配的接口才能保存分组。由于总线只有一条,因此这种方式一次也只能发送一个分组
  • 互联网络交换(右上图):使用2N条总线构成一个互联网络,在两条总线的交叉点设置交换结构控制器,能控制交叉点开启和闭合,当交叉点闭合时,两条总线相连接,分组可以通过。这种方式下,两个输入端口和输出端口都不同的分组可以同时被发送

输出端口

《计算机网络——自顶向下方法》精炼——4.3.1-4.4.1-LMLPHP
输出接口与输入接口几乎相同,不多赘述。

何处出现排队

显然如果交换结构的交换速率不当,输入端口和输出端口都可能出现堵塞甚至丢包。先讨论输出端口的排队情况。
当输出端口排队时,端口上的分组调度程序在排队的分组中选出一个来发送。分组调度程序可能有多种原则,例如先来先服务调度或加权公平排队(WFQ)规则。分组调度程序对提供服务质量保证方面其关键作用。
当输出端口出现丢包时,要么丢弃到达的分组(称为弃尾),要么删除之前到达的分组。有时在缓存填满前就丢弃或标记一个分组为丢弃,以便向发送方发送拥塞反馈的做法有利于降低拥塞,这种做法被称为主动队列管理(AQM)。随机早期检测(RED)算法是一种AQM算法,它为输出队列长度维护一个加权平均值,再计算一个最小阈值和一个最大阈值。当加权平均值小于最小阈值时,新加入的分组顺利加入队列;当加权平均值在最小阈值和最大阈值之间时,新加入的分组有一定概率被丢弃或标记为丢弃;当加权平均值大于最大阈值时,新加入的分组一定被丢弃或标记为丢弃。
在输入端口中,由于一次只能发送一个分组,那么即使后面的分组要发送到当前空闲的输出端口,也会被阻塞,这种现象称为线路前部(HOL)阻塞
由于上述原因,路由器需要缓存来缓和链路流量的波动,这个缓存的大小约为B=RTT*C/N。

路由选择控制平面

网络层面上的路由选择控制平面运行在各个路由器的路由选择处理器上,因此它是分布式的。但某些研究人员抽离了部分控制平面在集中式的路由器中以期简化路由选择和网络创新。

网际协议:因特网中的转发和编址

在因特网中,转发和编址功能是网际协议(IP)的重要组件。因特网的网络层有三个组件:
《计算机网络——自顶向下方法》精炼——4.3.1-4.4.1-LMLPHP

  • IP协议。
  • 路由选择部分:决定数据报从源到目的地的路径。
  • 报告数据报差错,对某些网络层信息请求进行响应的设施,依靠互联网控制报文协议(ICMP)。

数据报格式

IPv4数据报的格式如下:
《计算机网络——自顶向下方法》精炼——4.3.1-4.4.1-LMLPHP

  • 版本:规定了数据报的IP协议版本,由于不同版本的IP数据报有不同格式,路由器根据版本确定如何解释这个IP数据报。
  • 首部长度:确定该数据报首部长度,以区分首部部分和数据部分。IP数据报拥有可变数量的选项,因此即使是相同版本的IP数据报,其首部长度也可能不同。
  • 服务类型(TOS):对不同类型的IP数据报,需要提供不同的服务。比如,将实时数据报(例如电话等应用)与非实时的数据报区分开有利于更好地提供实时服务。
  • 数据报长度:IP数据报的总长度。
  • 标识,标志,片偏移:与分片有关。
  • 寿命(TTL)字段:每经过一个路由器,TTL字段减1,为0时被路由器丢弃。该字段确保数据报不会永远占据链路资源。
  • 上层协议:指定该数据报应交给哪个上层协议。
  • 首部检验和:检验数据报中的差错。将首部中的每2个字节当做一个数,用反码运算对这些数求和,将这个和存在检验和字段。到达的路由器重新计算检验和,
  • 源和目的IP地址:存放源主机和目的主机的IP地址。
  • 选项:允许IPv4数据报扩展功能,在IPv6中已被去掉。
  • 数据(有效载荷):存放数据的字段。

IP数据报分片

由于一个链路层帧最大承载的数据量称为最大传送单元(MTU),并且每个链路的MTU不同,所以单个IP数据报的长度也被严格限制。如果当一个IP数据报到达一个新链路时发现封装成链路层帧后长度大于该链路的MTU,那么这个IP数据报需要被分片成多个小的数据报。这是标识,标志和片偏移字段就起作用了。

  • 标识:发送主机将它发送的每一个数据报标识号+1。在分片时,由同一个IP数据报切片成的多个数据报拥有同一个初始数据报的标识,于是目的主机知道他们来自同一个大的数据报。
  • 标志:由于IP协议不能保证数据报不丢失,因此目的主机需要知道被分片的数据报的最后一部分是哪个。当分片时,如果标志字段为0,代表该分片是最后一部分;否则该分片后还有来自同一数据报的分片。
  • 偏移:指示该分片的开始位置,该字段设置的值是初始字节序号除以8。
    下面是一个切片的例子:
    《计算机网络——自顶向下方法》精炼——4.3.1-4.4.1-LMLPHP
    在目的地,网络层将IP数据报重构为初始数据报,如果发现有分片丢失,那么将整个数据报丢弃并告诉源主机重传。
    《计算机网络——自顶向下方法》精炼——4.3.1-4.4.1-LMLPHP
    我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的知识讲解!
06-08 00:05