路由器体系结构

点击打开链接

路由器体系结构:


  1. 输入端口
    • 把一条输入的物理链路与路由器连接的物理层功能
    • 与位于入链路远端的数据链路层交互的数据链路层功能
    • 在输入端口完成查找功能 。通过查询转发表决定路由器的输出端口
    • 控制分组从输入端口转发到路由选择处理器
  2. 交换结构
    将路由的输入端口与输出端口相连接
  3. 输出端口
    从交换结构接收分组,并通过执行必要的链路层和物理层功能在输出链路上传输这些分组
  4. 路由选择处理器
    执行路由选择协议,维护路由选择表以及连接的链路状态信息,并为路由器计算转发表。还执行网络管理功能。

输入端口、输出端口和交换结构共同实现了转发功能,并且总是用硬件实现。这些转发功能有时总称为路由器转发平面 (router forwarding plane)
假如有 10Gbps 带宽的输入链路的 64 字节的 IP 数据报,其输入端口在另一个数据报到达前仅有 51.2ns 来处理数据报。 如果 N 个端口结合在一块线路卡上(实践中很常见),数据报处理流水必须以 N 倍速率运行。这远远超过软件时间的速率。

转发平面以纳秒时间尺度运行,路由器的控制功能在毫秒或秒时间尺度上运行。这些路由器控制平面 (router control plane) 通常用软件实现并在路由选择处理器上执行。

一、输入端口


如图,最左边的线路端接功能和数据链路处理功能实现了用于各个输入链路的物理层和链路层。
输入端口进行的查找功能对路由器的执行是至关重要的。转发表的一份影子副本通常会被存放在每个输入端口,从而避免了集中式处理的瓶颈。
由于查找需要在纳秒级执行,因此不仅需要硬件执行查找,而且需要对大型查找表使用超出简单线性搜索的技术。同时,必须对内存访问时间给予特别关注,使用 DRAM 和 SRAM 来设计。
通过查找确定了某分组的输出端口,该分组就能进入交换结构。某些设计中,一个分组可能在进入交换结构时被暂时阻塞。此时,被阻塞的分组必须要在输入端口处排队,并等待稍后被及时调度以通过交换结构。
此外,还需要完成一些其他工作,包括并不限于:

  1. 检查分组的版本号、校验和以及寿命字段,并且重写后两个字段
  2. 更新用户网络管理的计数器

二、交换结构

交换结构位于一台路由器的核心部位。交换可以用多种方式进行,如经内存交换、经总线交换、经互联网络交换。


经内存交换:

一个分组到达输入端口时,该端口先通过中断方式向路由选择处理器发出信号。于是该分组从输入端口被复制到处理器内存中。路由选择处理器从其首部中提取目的地址,在转发表中查找输出端口,并将该分组复制到输出端口的缓存中。不能同时转发两个分组,即使它们有不同的端口号,因为经过共享系统总线一次仅能执行一个内存读/写。

经总线交换:

输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预:让输入端口为分组预先计划一个交换机内部标签(首部),指示本地输出端口,使分组在总线上传送和传输到输出端口。该分组能由所有输出端口收到,但只有与该标签匹配的端口才能保存该分组。然后标签在输出端口被去除。一次只有一个分组能够跨越总线。

经互联网络交换:

如上图,每条垂直的总线和水平的总线在交叉点处交叉,交叉点通过交换结构控制器能够在任何时候开启和闭合。若来自两个不同输入端口的两个分组其目的地为相同的输出端口,则一个分组必须在输入端等待。因为在某个时刻经给定总线仅有一个分组能够发送。

三、 输出端口


基本执行的是和输入端口相反的操作。取出存放在输出端口缓存中的分组并将其发送到输出链路上。包括选择和取出排队的分组进行传输,执行所需的链路层和物理层传输功能。

四、路由器会出现丢包

在输入和输出端口都能够形成分组队列。随着这些队列的增长,路由器的缓存空间最终将会耗尽,此时如果有新的分组到达,会导致丢包 (packet loss)

  • 输出端口队列导致丢包
    假设输入和输出线路的速率都是 每秒R个分组,有 N 个输入端口和 N 个输出端口,交换结构的速率足够快。每个线路上的分组都有相同的固定长度,分组以同步的方式到达输入端口,且每个分组都被转发到同一个输出端口。
    这种情况下,向输出链路发送一个分组的时间内,将有 N 个分组到达该输出端口。这 N 个到达的分组必须排队传输到输出链路上。随着时间的推移,排队的分组数量将耗尽输出端口可用内存,最终导致丢包。                                                                                                                           输出端口排队时,在输出端口的一个分组调度程序必须在这些排队的分组中选出一个来发送,如先来先服务调度FCFS,加权公平排队WFQ。若没足够内存来缓存一个入分组:要么丢弃到达的分组(弃尾),要么删除一个会多个已排队的分组来为新到的分组腾出空间。在某些情况下,在缓存填满前便丢弃一个分组,以便向发送方提供一个拥塞信号。分组丢弃和标记策略有如主动队列管理AQM算法,随机早期检测算法RED是一种最广泛研究和实现的AQM算法,RED中为输出队列维护加权平均值,若平均队列长度小于最小阈值,则当分组到达时,该分组被接纳进队列,若队列满或平均队列长度大于最大阈值,当分组到达时被标记或丢弃,若当分组到达时,平均队列长度在最小阈值和最大阈值之间,则该分组以某种概率被标记或丢弃。
  • 输入端口队列导致丢包
    如果交换结构不能快到使所有到达的分组无时延地通过它传送,则在输入端口也将出现分组排队。因为到达的分组必须加入输入端口队列中,以等待通过交换结构传送到输出端口。


猜你喜欢

转载自blog.csdn.net/qq_22238021/article/details/80475349