Switchdev:释放开源Linux的网络力量

作者简介:张渐修,任职于上海同悦信息科技有限公司从事P4可编程交换机市场工作,Wechat: Tooyumzjx。

作为一种用于以太网设备的新型Linux驱动模型,Switchdev搭载DENT等网络操作系统正在向包括智能网卡在内的白盒网络产品进军。

为什么需要Switchdev?

随着多种网络之间的数据传输量不断增加,应对需求的压力也不断增加,这就要求网络设备供应商的解决方案更直观、更灵活、更方便定制化开发。但是目前任何变更都必须依赖厂商的模式根本无法满足不断变化的客户需求。

通常情况下,交换芯片厂商会提供用户态软件开发工具包(SDK)来实现与硬件的接口。要用交换芯片设计一个交换机或路由器产品,设备商需要开发一个网络操作系统(NOS)或者移植像SONiC一样的开源产品。

虽然这种模式支撑传统业务很多年,但它并不能够有效地满足不断变化的市场需求。为了满足网络扩展和应用需求的增长,硬件设备商需要不断开发新技术和新协议,这就导致变更的成本高昂,大部分情况下客户都会抱怨响应速度太慢。

现代网络需要一个更好的解决方案,Switchdev的出现就帮助厂商解决了这一难题,因为它利用大家熟知的Linux开源框架,彻底解脱繁复的SDK,用户利用Linux环境和工具就可以打破厂商的禁锢,这种灵活性和自由度可以更好地满足客户的需求。

定义Switchdev

如图所示,Switchdev位于Linux内核层,它可以将内核的数据转发平面卸载到交换机的ASIC芯片上。通过这种方式,就可以用标准开放的Linux接口取代专有的SDK和NOS接口。Swtichdev的内核模式不是全新造轮子,而是对现有的Linux网络工具和应用进行改造。这种方法对服务器端的SmartNIC和路由器/交换机同样有效,因此终端用户能够消除对厂商特定API的依赖。Switchdev还规划了一个统一的接口,简化了集成、配置和支持的过程。对于设备厂商来说,这个Linux驱动不需要强大的CPU就可以运行。与SONiC等NOS相比,Switchdev驱动的网络系统更加轻量级,支持Switchdev的开源Linux基础架构应而可以实现解耦开放的网络设备。

无论是基于网络处理器、报文处理器、FPGA或者多核CPU,智能网卡厂商也可以利用开放的Linux原生接口来实现对硬件的控制。当前的服务器能够并行运行成百上千的虚拟机或容器,此时管理与外部世界之间的网络连接是个挑战。Switchdev可以用来管理服务器端的网卡,配置物理端口和虚拟端口之间的通信。

Switchdev driver架构图

DENT操作系统

Switchdev项目由Linux内核(具体是netdev)托管,这是Linux基金会旗下的一个开源项目社区。随着Linux内核的变化,无论是增加新的功能还是关键问题的修复,通过社区就可以确保Switchdev基础架构持续向前演进。

Linux有众多的应用程序来实现各种网络协议,主要的愿景就是让这些协议能够利用到交换机的硬件能力,或者说利用到交换芯片来卸载流量处理,这样就不会浪费通用CPU资源。为了将基础级的Switchdev转化为白盒设备所需的全面商用级NOS,Linux基金会正在围绕Switchdev建立一个应用生态系统DENT,创始成员包括亚马逊和一些网络硬件厂商。

DENT操作系统架构图

DENT是基于Ubuntu的Linux发行版,它封装了交换机硬件(风扇、温度传感器、ASIC等)的驱动程序以及开源的FRRouting路由协议套件,其中包括BGP、IS-IS、LDP、OSPF、PIM和RIP的协议守护进程。FRRouting软件使用Linux netlink API对Linux内核的数据包转发进行编程,在硬件交换机平台上,数据包转发由switchdev驱动卸载到ASIC进行线速转发。

DENT采用Linux作为网络操作系统的一个主要优势是,用于配置、管理和监控Linux服务器的工具也可以用来管理网络交换机。此外,DENT虚拟机的运行方式与在物理交换机上运行的DENT完全相同,这样就可以保证配置在进入生产网络之前在虚拟环境中得到充分验证。

应用案例

本案例利用开源的Host sFlow代理从Linux主机收集标准的sFlow遥测数据。在基于switchdev的网络交换机上,通过标准的Linux API就可以收集硬件计数器数据用于监控网络接口。Host sFlow 代理也支持 Linux psample 和 drop_monitor API,可以提供数据流和丢包的可视性。在硬件交换机上,switchdev驱动程序将测量交由交换机ASIC完成,从而可以实现数据包线速转发的可视性。

在基于DENT OS的交换机上安装Host sFlow代理,交换芯片通过标准sFlow硬件模块可以将网络遥测数据流传输到sFlow采集器,例如sFlow-RT,从而可以获得网络自动化所需的实时全网性能视图。

流量采集案例

Switchdev成功的关键

目前高端网络设备市场已经开始普及白盒产品,中低端商用交换机和路由器等细分市场如果想要打开白盒交换机的想象空间,就必须有一套开放、灵活和标准的解决方案,Switchdev的目标就是为客户提供一个全新的、简化的网络设备开发环境。

通过采用Switchdev作为开源基础架构框架,就可以利用到开放的Linux工具,设备厂商省去开发专有NOS或网管系统的商务成本,同时减少整合商业交换芯片所需的繁琐开发流程。统一的Linux界面也降低了客户的使用成本,简化了学习曲线。智能网卡采用Switchdev可以方便地与数据中心或网络编排系统(OpenStack、Kubernetes、XCloud等)集成。

开发Switchdev需要包括Linux内核、驱动和应用方面的相关知识,软件工程师要有底层网络和嵌入式软件开发能力,包括对所选交换芯片SDK的了解和平台集成经验。芯片和设备厂商在为其产品开发Switchdev驱动时,在遵循开源社区的开发原则同时,建议将相应产品的Switchdev驱动向Linux内核提交。因为Switchdev尚在发展中,设备厂商在为产品适配Switchdev时,相关平台代码以及移植问题上传到开源社区,就可以确保在未来的Linux发行版中得到支持。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/24840.html
分享到:
相关文章
条评论

登录后才可以评论

tongyue 发表于21-04-20
0