网络硬件与设备架构深度解析
1. 硬件设计基础
在网络硬件设计中,流量 ID 查找是一个关键问题。为了解决流量 ID 查找问题,可采用流水线查找芯片,该芯片最多可同时处理 16 个并发流量 ID 查找,每个查找访问 RDRAM 的独立存储体。查找芯片会返回一个索引给网络处理器,由其更新流量 ID 计数器。
若要使最坏情况下的查找时间小且有界,二分查找是个不错的选择。假设需以线速对最坏情况下 40 字节的数据包进行流量 ID 查找,芯片仅有 128 纳秒来完成查找。为限制查找延迟,可考虑使用平衡二叉树,如 B 树。树遍历逻辑相对简单,理想情况下,流量 ID 和计数器应存储在 SRAM 中,但对于核心路由器中约一百万个并发流,将状态存储在 SRAM 成本过高。而使用分支因子为 2 的二叉树的普通 DRAM 需要进行 log2 1,000,000 = 20 次内存访问,即使假设 DRAM 周期时间为乐观的 50 纳秒,总查找时间为 1 微秒,仍然太慢。
解决方案是采用流水线技术,如图 2.7 所示,流水线逻辑访问存储在具有 16 个存储体的 RDRAM 中的流量 ID。二叉树中高度为 i 的所有节点都存储在 RDRAM 的第 i 个存储体中。查找芯片可同时处理 16 个流量 ID 查找(针对 16 个数据包)。例如,在 Bank 1 中查找 Packet 1 的根节点后,芯片可在 Bank 2 中查找 Packet 1 的二级树节点,随后在 Bank 1 中查找 Packet 2 的根节点。当 Packet 1 的查找“线程”访问 Bank 16 时,Packet 16 的查找线程访问 Bank 1。由于直接 RDRAM 运行速度为 800 MHz,向 RAMBUS 发出地址请求的时间