首页 > 代码库 > 路由器工作原理

路由器工作原理

技术分享?

  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 个到达的分组必须排队传输到输出链路上。随着时间的推移,排队的分组数量将耗尽输出端口可用内存,最终导致丢包。
  • 输入端口队列导致丢包
    如果交换结构不能快到使所有到达的分组无时延地通过它传送,则在输入端口也将出现分组排队。因为到达的分组必须加入输入端口队列中,以等待通过交换结构传送到输出端口。

路由器工作原理