当前位置:网站首页>网络设备硬核技术内幕 路由器篇 16 DPDK及其前传(一)
网络设备硬核技术内幕 路由器篇 16 DPDK及其前传(一)
2022-07-27 14:05:00 【用户8289326】
在上期专题中,我们提到了,NFV作为SDN的流派之一,以vBRAS等形式推进着运营商网络的重构。事实上,不仅限于在运营商领域,同时,在IDC中,基于网元虚拟化实现的vSwitch以及LB/防火墙等增值业务,也大行其道。这些NFV软件运行的平台,就是基于x86的多核处理器平台。
由于x86上运行的传统Linux的架构限制,x86多核一直无法实现高性能的数据转发,因此,英特尔牵头开发的DPDK(Data Plane Development Kit)已经成为了NFV的标配,各大互联网企业招聘网络业务开发、架构工程师时,也将熟悉DPDK写入了招聘要求之中。DPDK与容器、SD-WAN、边缘计算等概念成为了当下最火热的ICT技术。
但,大家不知道的是,早在2006年,国内已经开始了在多核处理器上进行类似DPDK的研究与开发。
2006年,多核处理器的江湖最炙手可热的辣子鸡炸子鸡是MIPS多核处理器。RMI(已被Broadcom兼并)和Cavium(已被Marvell兼并)之间爆发了激烈的多核处理器军备竞赛。而国内站在科技最前沿的H3C公司则敏锐地洞察到了未来多核通用与半通用处理器将成为网络设备主流处理器的趋势,利用多核处理器开发了一系列中高端路由器与安全产品。
SR6602就是H3C基于多核技术开发的路由器的代表作。它基于当时最先进的8核32硬件线程的处理器,处理器内部框图如下图所示:
可以看出,该处理器具有最高24Gbps的网络IO处理能力,可以外扩TCAM接口,内部有一个快速消息环网(Fast Messaging Network)把来自网络接口、安全加密算法引擎的数据包快速通知对应的CPU/线程,而各个CPU/线程也可以通过FMN互相通信。
H3C的工程师们在开发过程中发现,简单地将网络操作系统中软转发模块在多个CPU上运行,性能并没有线性提升。如原来1个线程上获得200kbps的转发能力时,28个线程的转发性能仅为1500kbps,大大低于产品规划时的预期。这是为什么呢?
原来,对于并行计算,有一个重要的定律——Amdahl加速比定律。
Amdahl加速比定律的内容是,完成复杂工作可获得的加速比是有限的,受限于这个工作中必须被串行执行的部分。也就是说,即使有少量的计算工作需要多个处理器串行执行,总体的性能也会大大下降。
实际上,在多核处理器并行处理数据包时,绝大多数情况下,每一个数据包是可以根据hash算法,负载分担到不同的处理器进行处理的。
但是,大家注意到红色线条框起的局部:
所有的处理器核心共用二级缓存,这样,一旦两个或多个处理器核心共享了一块缓存区域,会造成多个核心排队访问这块缓存区域。
处理器默认的缓存组织方式,是以缓存行(cache line)方式组织的。如MIPS的缓存行为32字节,而数据包缓存(MBuf)的大小为4KB,是32字节的128倍。这样,非常容易造成连续的MBuf使用冲突,在接受后一个数据包的时候,就把前一个数据包踢出了cacheline。
解决的办法也很简单。分配MBuf时,以4KB+32字节为单位。这样,能保证每两个MBuf之间,包头不会映射到同一条cacheline。
另外,多核实现路由器时,还有一个地方容易引发缓存冲突,大家知道是哪里吗?
边栏推荐
- Nefu117 number of prime numbers [prime number theorem]
- TXT把换行 替换为空格或者取消换行
- An example of building 3D effects on the web based on three.js
- Toward Fast, Flexible, and Robust Low-Light Image Enhancement(实现快速、灵活和稳健的弱光图像增强)CVPR2022
- 【科普】精度和分辨率的区别与联系
- @Detailed explanation of repository
- 一文搞懂 Redis 架构演化之路
- 视觉系统设计实例(halcon-winform)-10.PLC通讯
- Unityui aspect processing (induction and accumulation)
- Rtl8762dk environment construction (I)
猜你喜欢

Toward fast, flexible, and robust low light image enhancement cvpr2022

电子制造行业的数字化转型突破点在哪?精益制造是关键

JS 疫情宅在家,学习不能停,七千字长文助你彻底弄懂原型与原型链

Disk troubleshooting of kubernetes node

2022年中国网络视频市场年度综合分析

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

Idea makes jar packages and introduces jar packages

代码覆盖率统计神器-jacoco工具实战

If we were the developer responsible for repairing the collapse of station B that night

Understand JS execution context in an article
随机推荐
炒黄金开户平台有没有正规,安全的
aac 和 h264等的时间戳
HDU3117 Fibonacci Numbers【数学】
User question understanding and answer content organization for epidemic disease Science Popularization
Redis
Timestamp of AAC, h264, etc
JS 疫情宅在家,学习不能停,七千字长文助你彻底弄懂原型与原型链
C语言基础知识梳理总结
STM32F103C8T6在Arduino框架下驱动SH1106 1.3“ IIC OLED显示
Disk troubleshooting of kubernetes node
Detoxify! After Harbin Institute of technology was disabled MATLAB, domestic industrial software fought back domineering
telnet远程登录aaa模式详解【华为eNSP】
Tencent two sides: @bean and @component are used in the same class, what will happen?
Redis
Photo album based on gec6818 development board
Getting started for beginners: build your own blog with WordPress
2022年中国网络视频市场年度综合分析
Differences among CPU, GPU and NPU
这年头谁还不会抓包,WireShark 抓包及常用协议分析送给你!
Spark job uses log4j appender to append logs to local files or mysql