网络虚拟化和网络包处理

网络与存储 时间:2024-02-05来源:软硬件融合

网络虚拟化基于网络包处理流水线实现,常见的网络包处理流水线有三种:定制的流水线、可软件编程的流水线以及通过FPGA实现的硬件可编程流水线。

1 包处理用于网络虚拟化

网络包处理机制可以用来处理各种不同的网络协议,特别是一些可软件编程的处理引擎的出现,使得增加新的网络协议处理更加的灵活简单。通用的网络包处理机制,也适用于网络虚拟化VLAN/VxLAN的处理。

1.1 虚拟网络,狭义的网络虚拟化

网络虚拟化通常指通过VLAN、VxLAN、NVGRE等虚拟网络相关的协议,在一个大的物理网络的基础上,灵活构建不同的虚拟网络域,也可以通过一定的机制,实现在不同虚拟网络域间的跨域访问。虚拟网络不是在初始构建的那一刻配置完成就结束,而是在网络运行过程中,每条流、每个包都需要经过虚拟网络协议的处理。随着网络带宽的持续增加,为了优化虚拟网络的性能以及CPU资源消耗,势必需要通过硬件加速的方式来实现更高性能的虚拟网络处理。

虚拟网络基于物理网络实现,如图1,以VxLAN为例,最核心的处理是通过VNID和内部目标地址作为关键字,在查找表中查询到对应的外部目标地址。而内部目标地址和外部目标地址的映射关系处理则交给软件去完成,可以实现跟现有的软件虚拟网络系统兼容,支持更加动态且灵活的虚拟网络设计,实现硬件的高效和软件的灵活兼顾。


图1 VxLAN Tx项虚拟化映射

1.2 广义的网络虚拟化

除了虚拟网络场景,还有一些网络场景具有虚拟化的特征:比如负载均衡,通过把数量众多的后端服务器虚拟成一台强大的服务器来提供服务;再比如NAT,内网服务器可以通过一个公网IP访问互联网,站在内网服务器的角度,可以看作是把一个公网访问IP虚拟化成多个公网访问IP。

更广泛的,网络是分层的体系,每一层从下一层的接口获取服务、然后实现本层的功能,再把本层的功能封装成新的接口,通过接口提供服务给上一层。站在整个网络系统的角度,网络的每一层都可以看作是一层虚拟化封装,为上一层提供新的服务接口。

硬件实现的网络包处理架构,可以支持很多不同类型的网络协议。特别是数据面可编程的网络包处理架构,不需要预先把可能要支持的协议都实现,只需要根据自己的场景需要,编程实现特定的若干个协议就好。数据面可编程的网络包处理可以非常方便的支持特定场景应用,实现高效的网络虚拟化硬件加速处理。

2 定制的网络包处理

传统的ASIC实现的定制网络协议处理流水线,在设计的开始,需要确定场景以及支持的协议,理论上可以实现最高的网络包处理性能。

如图2,是一个定制的网络包处理流水线,每个阶段都是固定的功能,支持的是特定协议的处理,想更新新的协议需要重新设计新的芯片,因此对新协议的支持非常困难。


图2 定制协议网络包处理流水线示例

如图3,IETF(Internet Engineering Task Force,互联网工程任务组)的RFC(Request for Comments,请求意见稿,即网络协议)数量一直在爆炸式的增长,应用于各种新型网络场景的新协议层出不穷。但是,传统的网络处理芯片都是封闭的、特定的设计,用于特定协议处理。想要增加新的协议非常困难,并且对新协议的支持受到不同供应商的约束。定制的网络处理芯片,对新协议的支持不足以及缺乏有效的灵活性,这使得要想在网络系统增加新的功能非常困难,限制了客户的网络创新能力。


图3 IETF RFC的数量增长

3 ASIC软件可编程包处理

本节通过数据面编程的背景知识、RMT模型以及流水线映射三个方面介绍可软件编程的ASIC包处理流水线。

3.1 数据面编程的网络包处理流水线

Nick McKeown 在 ONF Connect 2019演讲中定义了SDN发展的三个阶段:

这预示着,未来不管是交换机侧还是网卡侧,均需要实现类似CPU于通用程序设计的完全可编程的网络处理引擎,并且要基于此平台实现一整套的软件堆栈。把一个完全可编程的网络交给用户,支撑用户更快速的网络创新。

图4中介绍的PISA(Protocol Independent Switch Architecture,协议无关的交换架构),是一种支持P4数据面可编程包处理的流水线引擎架构,通过可编程的解析器、多阶段的可编程的匹配动作以及可编程的逆解析器组成的流水线,来实现数据面的编程。这样可以通过编写P4程序,下载到处理器流水线,可以非常方便的支持新协议的处理。


图4 PISA的数据面可编程网络包处理流水线

3.2 可重配置的匹配表模型

RMT(Re-Configurable Match-Action Tables,可重配置匹配表)模型,是一种基于RISC的用于网络包处理的流水线架构。RMT允许自定义数量的包头和包头序列,通过自定义大小的匹配表对字段进行任意匹配,对数据包包头字段进行自定义的写入,以及数据包的状态更新。RMT允许在不更改硬件的情况下在现场更改网络数据面, PISA架构从RMT模型中获得了很多的设计灵感。

如图5所示,是包处理流水线核心处理“匹配动作”阶段的内部架构。每个匹配阶段都允许配置匹配表的大小,例如,对于IP转发,可能需要一个256K 32位前缀的匹配表;输入选择器选择要匹配的字段;数据包修改使用VLIW(Very Long Instruction Word,超长指令字,一种比较特殊的CPU架构实现)架构的ALU动作单元,该指令字可以同时对包头向量中的所有字段进行操作。


图5 匹配动作的架构

如图6,RMT定义了一个可编程的解析器。解析器输入的是数据包数据,输出4K位的数据包头向量。输入的包头数据和解析状态信息不断的送到TCAM去查询,TCAM查询会触发动作,这个动作会更新状态机,并把结果送到字段提取处理,提取出的字段组成数据包字段向量输出。


图6 可编程的解析器模型

3.3 映射处理程序到包处理流水线

当实现了完全可编程的流水线之后,在P4工具链的支持下,就可以通过P4编程的方式来实现自定义的流水线,来达到对自定义协议的支持。

如图7所示,P4定义的Parser程序会被映射到可编程的解析器,数据、包头定义、表以及控制流会被映射到多个匹配动作阶段。图7中把L2处理、IPv4处理、IPv6处理以及访问控制处理分别映射到不同的匹配动作处理单元进行串行或并行的处理,来实现完整的支持各种协议的网络包处理。


图7 基于PISA流水线的数据包处理示例

4 FPGA硬件可编程包处理

Xilinx在2014年推出SDNet(Software Defined Specification Environment for Networking,软件定义网络规范环境)解决方案,将可编程能力和智能化功能从控制面扩展至数据面。SDNet支持可编程数据层功能设计,其功能规范可自动编译到赛灵思的FPGA和SoC中。

如图8, Xilinx的SDNet可以通过编程实现数据面代码的自动生成,可以支持从简单的数据包分类到复杂的数据包编辑的各种数据包处理功能。SDNet支持P4编程,可以通过编写标准的P4程序来实现SDNet的包处理。


图8 Xilinx SDNet解决方案及开发环境

SDNet是充分利用FPGA器件的硬件可编程性来实现包处理的灵活性的,通过P4实现功能灵活且特定的包处理规则,通过SDNet的编译器,把P4程序生成特定的RTL代码,再经过自动化的FPGA流程处理,把生成的镜像更新到FPGA中。而从设计架构的角度,SDNet的实现机制仍属于定制的网络包处理流水线,其解析器、编辑器以及查找动作等处理都是针对特定的包的处理,支持的是特定的(标准的或用户自定义的)网络协议。

SDNet基于模块化设计,包括各种不同类型引擎以及引擎之间的连接接口。这些引擎通过与数据包和元组通信,以实现更大的系统行为。执行模型是被动的,基于同步数据流模型,当所有输入到达时触发引擎工作。输入可以是数据包以及相应的作为元组通信的元数据。

SDNet数据流模型的端口有:

SDNet通过分层的系统构建,包含各种不同类型引擎:

5 案例:Mellanox FlexFlow

高性能的以太网交换机是现代数据中心的网络核心,不断变化的虚拟化和能自我修复的网络架构,都要求交换机具有动态的编程功能。Mellanox FlexFlow使得交换机支持用户自定义功能,FlexFlow具有非常好的可编程能力以及灵活性,支持大规模并行数据包处理以及完全共享的有状态的转发数据库。

如图9,Mellanox FlexFlow的包处理流水线跟传统交换机的包处理流水线相比:


(a) 传统交换机流水线


(b) Mellanox FlexFlow流水线

图9 传统的交换机流水线和FlexFlow比较

FlexFlow具有如下典型特征:

6 网络包处理总结

网络包处理是一个特定的领域,具有非常明显的特征,通过ASIC实现效率最高。有利必有弊,ASIC实现极大的约束了网络的灵活性。上层的网络用户只是一个使用者,只能使用ASIC提供的功能;而不是作为一个开发者,开发创新自己想要的功能。随着这些年来互联网的迅猛发展,新协议层出不穷,甚至有些网络服务商会采用一些私有协议。用户需要极大的网络创新来支撑自己的业务发展,对网络的可管理性、可编程性要求变得越来越高。硬件实现的网络处理加速,势必需要从专用向通用方向适当的回调。

跟通常的硬件加速从通用到专用的趋势不同,网络包处理流水线的实现是反其道而行,走的是从定制到部分可编程的道路。PISA等具有数据面可编程能力的网络包处理流水线很好的实现了通用和专用之间的平衡:

从整个流水线实现架构来看,基于部分可编程能力的PISA等架构实现的网络包处理芯片是一种DSA架构处理器。


关键词: 网络虚拟化 网络通信

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版