路由器分布式系统中的流量控制与内部条带化技术
1. 芯片间流量控制基础
在路由器的运行中,芯片间的流量控制至关重要。TCP 等传输协议虽已解决了流量控制问题,但在芯片间直接复用 TCP 流量控制机制并不合适,因为 TCP 实现复杂,它同时进行错误控制和流量控制,且都使用序列号。而芯片间链路错误较少,可将恢复工作交给原始源计算机,所以可采用不与错误控制交织的流量控制方法。
一种简单的信用流量控制机制如下:
- 发送方维护一个信用寄存器,初始值为接收方分配的缓冲区数量。
- 仅当信用寄存器为正时,发送方才发送信元,并在发送信元后递减信用寄存器。
- 接收芯片从缓冲区移除信元时,向发送方发送信用。
- 发送方收到信用消息后,递增信用寄存器。
2. 内部流量控制性能提升
在实际路由器中,存在多个不同的流量类别共享链路。若为每个类别严格分配管道大小(线路速度与往返延迟的乘积)的缓冲区,可能导致缓冲区数量急剧增加,超出片上 SRAM 的可行限制。因此,有必要进行缓冲区共享。
一种简单的缓冲区共享方法是将缓冲区空间物理划分为公共池和每个类别的私有池。不过,这种方法需要标记数据信元和信用,且要保证每个类别不超过管道大小的缓冲区,较为复杂。
一种更优雅的方法是:
- 概念上,将接收方的整个缓冲区空间划分,每个类别有一个包含 Min 个缓冲区的私有池,还有一个大小为 (B - N * Min) 的公共池(N 为类别数量,B 为总缓冲区空间),Max 表示管道大小。
- 协议有拥塞和非拥塞两种模式:
- 拥塞时,每个类别限制为 Min 个未完成信元。
- 非拥