作者|北海以北没有小王
头图 | CSDN从视觉中国付费下载
来源 | CSDN博客
路由器概述
首先,让我们对路由器的大体结构和工作原理有一个大致的了解。
路由器架构
路由器架构如下:
四个重要组成部分如下:
1. 访问端口
将传入物理链路连接到路由器的物理层功能
需要与位于人工链路远端的数据链路层交互的数据链路层功能
在输入端口也完成搜索功能
2. 交换结构
交换结构将路由器的输入端口与输出端口连接起来
该交换结构完全包含在路由器中,即它是网络路由器中的网络!
3. 输出端口
输出端口存储从交换结构接收到的数据包
执行必要的链路层和物理层功能以在传入链路上传输这些数据包
当链路是双向的(即双向传输流量)时,输出端口通常与交换机的输入端口位于同一线路卡(包含一个或多个连接到交换结构的输入端口的印刷电路)上。关联。连接)成对。
4. 路由处理程序
执行路由协议
维护连接的路由表和链路状态信息
计算路由器的转发表
执行网络管理功能
什么是路由器转发平面?
路由器的输入端口、输出端口和交换结构共同实现了这种转发功能,并且始终以硬件的形式实现。这种转发功能统称为路由器转发平面。
如果 N 个端口组合在单个线卡上(实践中经常这样做),数据报处理管道必须以 N 倍的速率运行,这比软件实现速率快得多
实现:转发平面硬件可以使用供应商提供的硬件设计或使用商用硅芯片(例如英特尔和博通出售的芯片)来实现。
虽然转发平面在纳秒时间尺度上运行,但路由器的控制功能(即执行路由协议、响应连接链路上线或下线)在毫秒或秒时间尺度上运行。
这些路由器控制平面(路由器控制平面)通常在软件中实现并在路由处理器(通常是传统的 CPU)上执行。
输入端口
输入端口的详细视图:
输入端口的作用:
输入端口的线路终端功能和链路层处理实现每个输入链路的物理层和链路层
在这个地方,路由器使用转发表来查找输出端口,以便传入的数据包将通过交换结构转发到输出端口。
转发表的更新和使用
转发表由路由处理器计算和更新,但转发表的影子副本通常存储在每个输入端口上。
转发表通过单独的总线(例如 PCI 总线)从路由处理器复制到线卡
影子副本
使用卷影副本,可以在每个输入端口上本地做出转发决策,而无需调用中央路由处理器,从而避免了集中处理的瓶颈。
快速查找算法
查找表在概念上很简单,但实际应用需要在非常短的(例如纳秒)时间内完成查询,因此除了硬件设计之外,还需要一些超越简单线性搜索的技术来处理大型转发表(快速搜索算法的概述可以是见 [Gupta 2001, Ruwo Sanchez 2011])
同时,还需要特别注意内存访问时间。
嵌入式片上 DRAM
更快的 SRAM(用作 DR-C 4 缓存)内存
三态内容可寻址存储器(Tenary Contenl Aclclress Memory 1 TCAM)也常用于查找
输出端口阻塞
一旦数据包被查询以确定输出端口输入输出端口是一种技术,它就可以被发送到交换结构
在某些设计中,如果来自另一个输入端口的数据包正在使用交换结构,则数据包会被阻塞并需要在输入端口排队等待被调度
输入端口的动作
寻找
通过自己的卷影副本确定数据包输出端口
最重要的功能
物理层和链路层处理发生
检查数据包的版本号、校验和和年龄字段,并重写最后两个字段
更新用于网络管理的计数器(例如接收到的 IP 数据报的数量)。
“匹配加动作”的抽象
请注意,输入端口查找 IP 地址然后将数据包发送到交换结构(“动作”)的步骤是更一般的“匹配加动作”抽象的特定情况。
这种抽象在许多网络设备中实现。
在链路层交换机中,除了将帧发送到交换机结构到输出端口外,还要查找链路层目标地址并采取一些措施。
在防火墙中,这是一种过滤选定人工数据包的设备,符合给定标准(例如源/目标 IP 地址和传输层端口号的某种组合)的传入数据包可能会被阻止转发。
在网络地址转换 (NAT) 中,传输层端口号与给定值匹配的数据包将在转发(操作)之前重写其端口号。
交换结构
交换矩阵概述
交换结构是路由器的核心。
正是通过这种交换结构,数据包才能真正从输入端口交换(即转发)到输出端口。
交换可以通过多种方式完成
三种交换技术
传奇
内存交换
最简单最早的路由器是传统的计算机,其间交换工作由CPU完成
输入和输出端口的功能类似于传统操作系统中的 1/0 设备。
内存从输入端口接收数据包并提取包头值并将其缓冲到相应的输出端口
一次只能进行一次内存读写,因此一次只能转发一个数据包
现代内存交换路由器
与早期路由器的主要区别在于,目标地址的查找和将数据包存储(交换)到适当的内存存储位置是由输入线卡处理的。
在某些方面,内存交换路由器看起来很像共享内存多处理器,使用线卡上的处理将数据包交换(写入)到相应输出端口的内存中
巴士换乘
输入端口通过共享总线将数据包直接传输到输出端口,而无需路由处理器的干预。
交换方式
让输入端口为数据包预先规划一个交换机内部标签(header),指示本地输出端口,以便数据包在总线上传递,并传输到输出端口。
所有输出端口都可以接收数据包,但只有与标签匹配的端口才能保存数据包。
然后在输出端口移除标签,因为它仅在交换机内部用于跨越总线
在总线交换下,路由器中只能同时转发一个数据包,因为每个数据包会完全占据整个总线。
但是对于在小型 LAN 和公司网络上运行的路由器,通过总线进行切换通常就足够了。
通过互联网交换
通过 Internet 切换以克服单一共享总线带宽限制
交叉开关是由连接 N 个输入端口和 N 个输出端口的 2N 条总线组成的互连网络
每条垂直总线在交叉点处与每条水平总线交叉,该交叉点可由交换结构控制器随时打开和关闭,其逻辑是交换结构本身的一部分。
当一个数据包到达端口 A 需要转发到端口 Y 时,交换机控制器关闭总线 A 和 Y 的交叉点,然后端口 A 将数据包发送到其总线上,该数据包仅由总线 Y 接收。
不同输出端口的数据包可以同时转发,但是输出端口相同的数据包仍然需要等待
输出端口
输出端口处理获取存储在输出端口内存中的数据包并将它们发送到输出链路上。
在哪里排队
什么是排队?
只要输入速度大于处理速度,输入端口和输出端口都可能出现排队。
排队的位置和范围(在输入端口或在输出端口)将取决于流量负载、交换结构的相对速度和线路速率。
什么是丢包?
当输出端口排队时,排队的数据包会进入路由器的缓存空间,当缓存空间用完时会发生丢包。
路由器缓存?
应该设置多少缓存空间?
缓冲区的数量 ( B ) 应该等于平均往返延迟 (RTI, 比如说 250ms) 乘以链路的容量 ( C )。
因此,具有 250ms RTT 的 10Gbps 链路将需要等于 B = RTT * C = 2. 5Gb 的缓冲区量。
缓存满了怎么办?
如果没有足够的内存来缓存人类数据包输入输出端口是一种技术,则必须做出决定:要么丢弃到达的数据包(一种称为 drop-tail 的策略),要么删除一个或多个排队的数据包给新到达的组腾出空间;
这些统称为 AQM 主动队列管理算法;
随机早期检测。
随机早期检测 (RED) 算法是研究和实现最广泛的 AQM 算法之一。
当平均队列长度小于最小阈值 min 时,允许新的数据包进入队列
当平均队列长度大于最大阈值max时,新的数据包将被标记或丢弃
当长度在最大值和最小值之间时,会以一定的概率被接受或接受
包调度器
在输出端口排队的结果是输出端口上的数据包调度程序必须选择这些排队的数据包之一发送
最简单的原则:先到先得
更复杂的原理:加权公平排队(WFQ)
路由控制平面
前面我们已经隐含地假设路由控制平面都驻留在并运行在路由器的路由处理器上。
网络范围的路由控制平面因此是分布式的,即不同的部分(例如路由算法)在不同的路由器上执行并通过相互发送控制消息进行交互。
新型路由器控制平面架构,其中数据平面与控制平面的部分(例如,链路状态的本地测量/报告、转发表的安装和维护)一起在路由器中实现,并且控制平面的部分可以在外部实现路由器(例如在执行路由计算的集中式服务器中实现)。
定义良好的 API 指定了这两个部分如何相互交互和通信。
这些研究人员认为,将软件控制平面与硬件数据平面(具有最少路由器驻留的控制平面)分开可以用集中式路由计算代替分布式路由计算,从而通过允许不同的用户定制来简化路由控制平面在快速硬件数据平面上运行,赋能网络创新。
请登录后发表评论
注册
社交帐号登录