当前位置:网站首页>网络设备硬核技术内幕 路由器篇 21 可重构的路由器
网络设备硬核技术内幕 路由器篇 21 可重构的路由器
2022-07-27 14:05:00 【用户8289326】
在前面20篇专题中,我们看到了,路由器可以通过这些方法实现:
- 家用路由器,一般使用Broadcom或MTK的SoC方案实现,如Broadcom 的BCM7218X,一颗芯片就可以实现集成了Wi-Fi6和IPTV功能的家用路由器盒子。
- 企业级别,1Gbps-200Gbps性能区间的路由器,可以使用Marvell (Cavium),Broadcom(RMI)的MIPS或ARM多核处理器实现。未来也可以利用x86+DPDK实现。
- 企业高端与运营商级别,200G-20T性能区间的路由器,目前一般使用NP实现。
我们发现,性能越高的路由器,使用的转发芯片灵活性越低。以NP为例,NP的报文处理流水线是有限制的。在实践中,出现过这样的案例:
互联网企业需要将城域线路分光出来的流量送到后端进行分析,由于单台分析设备的性能有限,需要按流(业务流的TCP五元组)进行负载均衡。
如下图所示:
其中,右边的数字指的是数据包各个头部字段开始的偏移量。
实际上,用户期望的是,根据内层IP/TCP将数据包分流到多个分析器上。但由于内层IP/TCP被封装在了70多字节以后,而一般的NP/ASIC内置的分析器只能提取报文头部64字节进行解析,因此难以实现这样的功能。对于多核处理器,虽然内部也有硬件解析加速器,同样地,对于这种深层次封装的隧道,处理起来也有困难。
这时候,我们就需要一种可编程的硬件加速单元实现这一功能。工程师们将眼光投向了一类可重构器件——FPGA。
FPGA是"Field Programmable Gate Array" (现场可编程门阵列)的缩写。这个绕口的中文名称实际上可以拆解为几部分:
可编程——它的处理逻辑是可以修改的,不像ASIC那样是相对固化的;
门阵列——它内部的最小编程分配单元是门电路和触发器,因此可以编程的程度很高,可以重构各种处理逻辑;
现场——FPGA内置SRAM存放编译后的代码,可以通过软件在运行时升级,甚至不重启就完成升级;
由于这些特点,FPGA经常用于网络中数据包处理的加速,最典型地就是用于路由器或防火墙的加速。
对于前面提到的城域网镜像流量分析的场景,就是FPGA的用武之地。工程师只需要对FPGA进行编程,让它从78字节处开始提取内层IP/UDP(真实业务地址/端口)的五元组,计算hash后,发送到对应的分析器,就可以完成NP和多核路由器有困难的任务了。
由于FPGA的可重构特性,它实现的可重构路由器更加开放,功能更加强大,也弥补了多核处理器在业务叠加时性能下降的弱点。
大家知道最经典的可重构FPGA路由器是哪款吗?
明天在揭晓答案时,也为大家讲一个路由器故事…
边栏推荐
- How to help enterprises optimize office management
- NEFU118 n! How many zeros are there after [basic theorem of arithmetic]
- An example of building 3D effects on the web based on three.js
- Visual system design example (Halcon WinForm) -10. PLC communication
- lc marathon 7.26
- 图解 SQL,这也太形象了吧
- The interviewer asked: how to judge whether an element is in the visible area?
- OBS 进阶之 DXGI 采集屏幕流程,并如何修改为自己的光标
- 深圳市人力资源和社会保障局关于发放脱贫人口就业有关补贴的通知
- Toward fast, flexible, and robust low light image enhancement cvpr2022
猜你喜欢

Kubernetes CNI 分类/运行机制
![[intensive reading of papers] grounded language image pre training (glip)](/img/3a/4ad136065acb8627df9e064ed8ef32.png)
[intensive reading of papers] grounded language image pre training (glip)

Disk troubleshooting of kubernetes node

Dynamic programming - stock trading 5

STM32 - capacitive touch button experiment

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

JS what is declaration in advance? The order of function and variable declaration in advance (the foreshadowing of execution context)
Database storage series (1) column storage

telnet远程登录aaa模式详解【华为eNSP】

Why is there no unified quotation for third-party testing fees of software products?
随机推荐
Getting started for beginners: build your own blog with WordPress
va_ List usage summary
Photo album based on gec6818 development board
Unityui aspect processing (induction and accumulation)
Navicate reports an error access violation at address 00000000
< C> C language hash table usage
Toward Fast, Flexible, and Robust Low-Light Image Enhancement(实现快速、灵活和稳健的弱光图像增强)CVPR2022
internship:其他配置类的编写
C language layered understanding (C language array)
Nokia's patent business was hit for the first time, and Chinese enterprises are not so easy to knead
telnet远程登录aaa模式详解【华为eNSP】
@Bean 与 @Component 用在同一个类上,会发生什么?
np. Usage and difference of range() and range()
Lecture 4: Longest ascending substring
adb命令 (安装apk包格式:adb install 电脑上apk地址包名)
电子制造行业的数字化转型突破点在哪?精益制造是关键
Timestamp of AAC, h264, etc
STM32 - capacitive touch button experiment
[work] about technical architecture
Thread knowledge summary