当前位置:网站首页>网络设备硬核技术内幕 路由器篇 7 汤普金森漫游网络世界(下)
网络设备硬核技术内幕 路由器篇 7 汤普金森漫游网络世界(下)
2022-07-27 14:06:00 【用户8289326】
(本篇仿照了美国科学家乔治·盖莫夫在《物理世界奇遇记》中的写作手法,在此致敬)
上回说到,由于路由器转发平面找不到汤普金森先生对应的FIB表项,把汤普金森先生送去了主控板。
主控板的CPU历经千辛万苦,终于找到了汤普金森先生对应的路由表项。
那么,CPU是如何为汤普金森先生找到路由表项的呢?
原来,CPU存储和检索路由表项的方法,与NP线卡存储FIB表的方法,有着根本的区别。
前面提到,NP线卡上的FIB表项,是存储在TCAM处理器中的。
由于TCAM可以将Key的某些位设为not care,因此可以用于实现FIB表的最长匹配查找。
但是,主控板上的RIB(Route Information Base,路由信息库),是只能保存在DRAM里的。这是为什么呢?
原来,RIB的大小远远大于FIB。
实际操作过企业级和电信级路由器的同学一定有印象,在这些路由器中,EBGP,iBGP,OSPF,IS-IS等路由协议是可以互相导入的。也就是说,同样的路由会在多个路由表中出现。这样一来,路由表的数量会大大多于FIB表。因此,只有近期匹配过数据包的路由条目,才会被下发到转发平面高成本的TCAM存储的FIB表中,其余的路由条目存储在主控板的RAM中。对于高端路由器,主控板能够存储的路由条目数可多达20M以上,而线卡上的FIB条目受限于TCAM容量,一般在256K-4M之间。
那么,主控板的CPU应该如何在海量的路由表中,以最快的速度找到最长匹配路由呢?
方法1:通过一种叫做Radix Tree的数据结构组织路由表项的索引。它可以在近似O(1)的时间里实现最长匹配。
方法2:在主控板的CPU上,外挂较小的TCAM,仅用来存储路由表项的索引。查找到路由表的索引后,再去RAM中读取对应的路由表。如下图所示:
CPU通过路由前缀,快速从TCAM内读取到DRAM中存储该路由信息的偏移量,再去DRAM中读取该条路由信息,这样可以利用较少的TCAM资源,节约大量在RAM中查询Radix Tree的时间。
正是这样的过程,让主控板的CPU能够为汤普金森先生找到出路。
汤普金森先生被扔回到NP芯片的传送带里。机器人扫了扫汤普金森先生的二维码,念道:“源地址 123.112.90.43,目的地址 75.126.33.156”
机器人身后的TCAM箱上的指示灯闪烁了一下,机器人继续念:下一跳:90.182.73.116,出接口:GigabitEthernet 3/0/1”,并在汤普金森先生身上贴了个新的二维码。
绿洲精灵看了看汤普金森先生身上的二维码,不禁倒吸一口凉气。
二维码上还写着:入接口:HundredGigabit 0/0/1。
而这里,正是槽位0,来自100G以太网接口的汤普金森先生将被送去槽位3,并从千兆接口挤出去。
汤普金森先生被机器人夹起来,送去一个排着长龙的队尾,人多得仿佛像早上8点的西二旗地铁站。
“这里就是NP的队列。”绿洲精灵告诉汤普金森先生,“NP支持VoQ队列,对每个出方向的接口都有一个虚拟的队列。”
“我们在槽位0,去槽位3的GE 3/0/1需要经过交换网板。但,这个接口现在拥塞状态,你看数据包都挤得跟豆包似的……”
汤普金森先生问:“为什么会拥塞呀?”
“能不嘛,你看你这来自100G接口的,非要从1G接口出去。”绿洲精灵翻了翻白眼。“和你一样要去那个接口的还很多,超过了1G的速率,所以……”
“所以,本线卡去往GE 3/0/1的VoQ队列信用不足,现在开始按WRED方式丢包!”绿洲精灵话音未落,机器人插话了。
绿洲精灵喊道:“等一等……”
但机器人是无情的。机器人从长长的队伍中随机提起了一些人,他们都瞬间消失了。机器人又把汤普金森先生提起来,一阵白光闪过,汤普金森先生什么都不知道了。
当汤普金森先生醒来的时候,演讲已经散场了。收拾会场的保洁阿姨叫醒了他。汤普金森先生摸了摸湿润的嘴边,揉了揉眼睛,走出了会场。
本期问题:
如果路由器按TD方式丢包,汤普金森先生能否走出这台路由器?
上期遗留问题解答:
为什么路由器的NP不需要提前读取数据包的源地址、目的地址等关键信息,而进入CPU时有专用硬件进行预先读取呢?
NP每级流水线中都有可编程的专用硬件,按照微码并行提取这些关键信息。而多核CPU没有这种专门从数据包头读取信息的多级单元,只有一个Parser一次性提取数据包头字段,预先读取并写入数据缓存(data cache)中。
边栏推荐
- FPGA timing constraint sharing 04_ Output delay constraint
- lc marathon 7.26
- 网络设备硬核技术内幕 路由器篇 17 DPDK及其前传(二)
- Who can't capture packets these days? Wireshark packet capture and common protocol analysis are for you!
- Getting started with DirectX
- Kubernetes CNI 分类/运行机制
- What is tor? What is the use of tor browser update?
- Understand the evolution of redis architecture in one article
- Nefu119 combinatorial prime [basic theorem of arithmetic]
- 视觉系统设计实例(halcon-winform)-9.文字显示
猜你喜欢

Import the virtual machine officially made by Kali Linux into Oracle VirtualBox

于不确定中见“安全感” 沃尔沃2022年中问道

Research on Chinese idiom metaphorical knowledge recognition and relevance based on transfer learning and text enhancement

C language layered understanding (C language array)

视觉系统设计实例(halcon-winform)-10.PLC通讯
![[work] about technical architecture](/img/24/f3402c04157ce9a8846580f017f472.png)
[work] about technical architecture

JS epidemic at home, learning can't stop, 7000 word long text to help you thoroughly understand the prototype and prototype chain

Visual system design example (Halcon WinForm) -10. PLC communication

Why is there no unified quotation for third-party testing fees of software products?
How to solve cache avalanche, breakdown and penetration problems
随机推荐
网络设备硬核技术内幕 路由器篇 20 DPDK (五)
What is tor? What is the use of tor browser update?
移动端使用vantUI的list组件,多个tab项来回切换时,列表加载多次导致数据无法正常展示
Summary of basic knowledge of C language
Photo album based on gec6818 development board
JS epidemic at home, learning can't stop, 7000 word long text to help you thoroughly understand the prototype and prototype chain
多表查询_练习1&练习2&练习3
Graphical SQL is too vivid
【云享读书会第13期】视频文件的封装格式
网络设备硬核技术内幕 路由器篇 17 DPDK及其前传(二)
终于有人把面试必考的动态规划、链表、二叉树、字符串全部撸完了
【WORK】关于技术架构
Kubernetes 节点磁盘故障排查
CPU、GPU、NPU的区别
SkyWalking分布式系统应用程序性能监控工具-中
巨形象的图解 SQL
Getting started with DirectX
Import the virtual machine officially made by Kali Linux into Oracle VirtualBox
2022年中国网络视频市场年度综合分析
va_ List usage summary