当前位置:网站首页>网络设备硬核技术内幕 路由器篇 10 CISCO ASR9900拆解 (三)
网络设备硬核技术内幕 路由器篇 10 CISCO ASR9900拆解 (三)
2022-07-27 14:06:00 【用户8289326】
昨天给大家拆解了ASR 9K的NP实现,那么,当数据包进入ASR99路由器的时候,它会经历一个什么样的生命旅程呢?
请看下图。
图中,入方向PHY可以处理MACSEC、Retimer等简单操作。在NP中查找二层/三层转发表项,执行ACL/QoS/PBR策略。
特别地,端口聚合和ECMP涉及到等价多出口,需要按优化过的Hash算法,将数据包尽量均匀地分担到多条流上。
数据包经过了线卡的Switch Fabric或背板Switch Fabric,就到达了出方向。出方向的FIA和入方向的FIA会配合完成VoQ的信用控制。
如图,FIA芯片在向Switch Fabric芯片发送数据之前,需要先进行请求。得到Switch Fabric仲裁批准后,上游FIA向下游FIA发送数据并消耗相应的信用值(credit)。在下游处理完毕后将返还Credit。
那么,FIA是通过什么样的策略进行负载分担的呢?
实际上,FIA是通过类似Round-Robin的方式进行负载分担的。
如图,在FIA连接多个Fabric ASIC的情况下,FIA会向所有的Fabric仲裁单元发起请求,并向最先响应的Fabric发送数据包。
FIA在发送数据包的时候,利用类似BCM的HiGig的方式,在包头插入metadata,其中就包括数据包的序号。在下游FIA中依据序号进行重新排序,以避免数据包并行处理造成的乱序。
而组播的发送方式则不然。
如上图所示,组播的负载分担是基于(S,G)组的,每个(S,G)组只会分流到一个Fabric ASIC上。这是为了保证每条组播流的完整性。(为什么?)由于组播的转发不涉及到一条流走多个Switch Fabric,也无需向交换网仲裁单元发送请求。
让我们再次回到第一个图:
我们看到,从同一个NP芯片进出的数据包,也需要绕行线卡的Switch Fabric和背板的Switch Fabric,回到NP处理完毕。这是为什么呢?
其实这个问题非常简单。
如果同一个NP进出的数据包,仅在NP内部处理,那么,就没有办法实现基于信用的VoQ流控机制,当NP上接口A、接口B同时对接口C打流,并造成接口C拥塞时,接口A/B发送到其他非拥塞接口的数据包,也会按一定比例被丢弃。
因此,无论是NP内部还是跨NP芯片的转发,都需要经过FIA和两级Switch Fabric处理。
当数据包到达出方向NP后,出方向NP进行出方向二层/三层查找、出方向ACL/PBR处理等。
对于三层转发,还需要在邻接表中查找到目的IP对应的二层地址并发送。由于Tomahawk和LightSpeed集成了TM,QoS等功能也在同一颗芯片内完成。
ASR9900的QoS功能非常强大。以一个3级H-QoS配置为例:
L0和L1为端口组和端口。从L2开始,配置流量整形策略;L3工作在三层子接口上(基于VLAN),可配置不同优先级的流量整形,丢弃策略为WRED。
L4可配置基于CBQ的带宽保障/带宽控制/WRED丢弃等策略。
明天,我们将详解ASR9900的分布式控制平面机制,而QoS的详解,我们将在后面的专题中分享。(其实是我还没有研究透彻)
今天的遗留问题:
既然ASR9900有N+1冗余的交换网板,而且同一线卡之间的NP也需要在交换网板上互通,为什么还要在线卡上设计Switch Fabric?
昨天遗留问题的答案:
多个包处理流水线同时处理数据包,有可能造成数据包乱序,数据包乱序的后果是什么?
答案:在TCP流中,如果数据包发生乱序,接收方先收到了后面的数据包,在设定的时间内没有收到前面的数据包的情况下,会触发快速重传(连续回复3个ACK),相应地,发送方拥塞窗口增加,降低发送速度,最终影响传输效率。
边栏推荐
- 南山区民政局关于开展2022年度南山区社会组织等级评估工作的通知
- Docker practical experience: deploy mysql8 master-slave replication on docker
- Redis
- 巨形象的图解 SQL
- 对话框管理器第三章:创建控件
- Kubernetes CNI 分类/运行机制
- [ManageEngine] what is Siem
- 如何帮助企业优化Office管理
- Import the virtual machine officially made by Kali Linux into Oracle VirtualBox
- 被动收入:回归原始且安全的两种赚取方法
猜你喜欢

STM32 - capacitive touch button experiment

STM32F103C8T6在Arduino框架下驱动SH1106 1.3“ IIC OLED显示

Ten thousand words detailed Google play online application standard package format AAB

Finally, someone finished all the dynamic planning, linked list, binary tree and string required for the interview

如果我们是那晚负责修复 B 站崩了的开发人员

Tencent two sides: @bean and @component are used in the same class, what will happen?

Redis

What you want most is the most comprehensive summary of C language knowledge. Don't hurry to learn

股票买卖4

User question understanding and answer content organization for epidemic disease Science Popularization
随机推荐
Construction and empirical research of post talent demand analysis framework based on recruitment advertisement
[cache series] completely solve the problems of cache avalanche, breakdown and penetration
log4j2 jdbc appender
终于有人把面试必考的动态规划、链表、二叉树、字符串全部撸完了
STM32F103C8T6在Arduino框架下驱动ssd1306 0.96“ IIC OLED显示
TXT把换行 替换为空格或者取消换行
np. Usage and difference of range() and range()
什么是Tor?Tor浏览器更新有什么用?
C language layered understanding (C language array)
周鸿祎:数字安全能力落后也会挨打
Failed to connect to ResourceManager
What is tor? What is the use of tor browser update?
面试官问:如何判断一个元素是否在可视区域?
What you want most is the most comprehensive summary of C language knowledge. Don't hurry to learn
Shell programming specifications and variables
巨形象的图解 SQL
Timestamp of AAC, h264, etc
web上构建3d效果 基于three.js的实例
Navicate reports an error access violation at address 00000000
NEFU117 素数个数的位数【素数定理】