路由协议和架构/网络设备架构提示
外观
< 路由协议和架构
路由器的架构一直在不断发展,以不断提高其数据包处理能力
第一代路由器基本上是经过修改的个人电脑
- 网络接口:它们是普通的网卡,数量更多,种类更多,与普通个人电脑上的网卡相比;
- 内存:固态存储器(例如 SD 卡)优先,因为与机械硬盘相比,它不太容易出现故障;
- 操作系统:专门针对网络流量处理进行了优化。
- 优点
- 规模经济:它使用大规模生产的组件,而不是专门用于网络世界的组件。
- 缺点
- 瓶颈:
- 共享总线:
- 慢速路径:每个数据包在总线上传输两次;
- 仲裁:一次只有一个网卡可以使用总线→多个接口不能并行工作;
- 内存访问:路由表存储在通用内存中的数据结构中→访问不像传统个人电脑那样本地化,并且缓存很少使用;
- 处理能力:每当数据包到达时,CPU 都会中断操作系统;
- 共享总线:
- 网络接口:传统的网卡没有很多端口,并且只支持最常见的接口类型;
- 维护成本:使用开源组件(例如 PPP 客户端)会导致集成问题和各种配置方式。
目前这种架构用于中低端路由器,其性能足以满足小型办公室的需求。
第二代路由器试图通过将处理负载从核心 CPU 转移到边缘单元来解决性能问题:网卡被线路卡取代,线路卡是“智能”网卡,它们将转发模块添加到物理/MAC 组件中
- CPU:数据包处理器是专门用于“简单”数据包处理的处理器;
- 内存:每个传入的数据包都被存储到一个本地内存中,该内存与包含路由表的内存(通常是 TCAM)分开;
- 路由表:有时更新后的路由表会从中央单元复制到线路卡。
数据包可以遵循两种方式
- 快速路径:符合典型情况(例如 IPv4)的数据包只在总线上传输一次:它们由数据包处理器直接处理,并立即发送到输出接口;
- 慢速路径:最不频繁的数据包(例如 IPv6、OSPF)会留给核心 CPU 进行更复杂的处理,但吞吐量明显降低。
线路卡的工作应由核心 CPU 协调,路由协议(例如 OSPF)也在核心 CPU 上运行,核心 CPU 安装在高端系统中的称为监管器的卡上。
- 优点
- 核心 CPU:它只为快速路径上的数据包工作→它可以不太强大;
- 快速路径优化:连接中的第一个数据包会走慢速路径,然后中央系统会将该连接标记为符合快速路径的条件,所有后续数据包都将走快速路径;
- 灵活性:引入新协议(例如 IPv6)只需要更新中央系统上的软件。
- 缺点
- 共享总线仲裁:一次只有一个线路卡可以使用总线→多个接口不能并行工作。
第三代路由器专注于解决并行化问题,用交换结构(或交叉开关)取代共享总线,该结构能够处理多个传输:一个线路卡通过短路交换矩阵中它们“线”的交点来连接到另一个线路卡。
两个线路卡不能同时连接到同一个线路卡→需要一个仲裁器,它驱动切换点并解决争用情况,避免冲突。
当输出接口的发送数据包速度比交换结构的交换速度慢时,数据包可以以各种方式排队
- 输出排队:缓冲区放置在输出接口上→最坏情况:交换结构的速度是接收速度的N倍,其中N=输入接口的数量;
- 输入排队:缓冲区放置在输入接口上→交换结构的交换速度不依赖于输入接口的数量,但会遇到行首阻塞问题
- 两个输入队列中的两个数据包都将发送到同一个输出队列;
- 仲裁器让其中一个数据包通过,阻塞另一个数据包;
- 输入队列中的所有后续数据包,即使是那些要发送到空闲输出队列的数据包,都必须等待“行首”;
- 虚拟输出排队:通过在每个输入处为每个输出保留一个队列来解决行首阻塞问题;
- 带缓冲交换结构:缓冲区放置在交叉开关内部的切换节点位置。
- 缺点
- 仲裁器:
- 它构成了一个瓶颈,尤其是在由于数据包较小而频繁做出决策的情况下(例如 ATM);
- 服务质量的调度策略可能会使其硬件更加复杂;
- 队列缓冲区:它们是昂贵的内存,因为它们必须很快。
多机箱路由器旨在实现可扩展性:连接多个并排机架,使其看起来像一台路由器
- 处理能力乘以机箱的数量;
- 有更多用于网络接口的物理空间→可以将大量的链接连接到同一个设备;
- 路由集中在一个站点(就像电话世界一样),而不是分散在网络上的许多小型路由器→数据站点可以为一个广阔的地理区域(例如皮埃蒙特)内的所有用户提供服务。
另一个最近的趋势旨在提高灵活性:路由器不再是纯粹的第 3 层设备,因为正在添加许多不属于第 3 层的其他功能,例如缓存、防火墙、网络监控、ACL 等。目标是定制 ISP 提供的服务,将目前掌握在内容提供商手中的部分业务带回。
目前常用的解决方案是服务卡,这是一种增强了增值服务的线路卡,由制造商预先配置。但是,服务卡的灵活性不高:由于不可编程,因此需要购买新的服务卡才能添加服务。
吞吐量现在不再是问题,但当前的主要问题是
- 购买成本:为了降低网络设备的成本,专用组件正在被大规模生产的通用组件取代
- 主流 CPU 的产品生命周期太短,更换时间太长→英特尔最近推出了嵌入式 CPU,与主流 CPU 相比,嵌入式 CPU 的产品生命周期更长,更换时间更短;
- 在专用系统中,程序员可以利用内存层次结构,将 RIB 存储到慢速内存中,将 FIB 存储到快速内存中(例如 TCAM),而通用系统会自动决定将什么放入缓存中→具有分区内存但处理通用性有限的 GPU 应该得到解决;
- 运营成本: 电力消耗和热量散发可能非常大;
- 灵活性: 需要朝着将控制功能与物理硬件分离的方向发展: C3. 软件定义网络简介.