P4超融合网关技术白皮书ODCC-2022-0300C 分布式存储技术与产业分析报告 1 [编号ODCC-2022-0300C] P4超融合网关技术白皮书 开放数据中心标准推进委员会 2022-09发布 P4超融合网关技术白皮书ODCC-2022-0300C 版权声明 ODCC(开放数据中心委员会)发布的各项成果,受《著作权法》保护,编制单位共同享有著作权。 转载、摘编或利用其它方式使用ODCC成果中的文字或者观点的,应注明来源:“开放数据中心委员会ODCC”。 对于未经著作权人书面同意而实施的剽窃、复制、修改、销售、改编、汇编和翻译出版等侵权行为,ODCC及有关单位将追究其法律责任,感谢各单位的配合与支持。 I P4超融合网关技术白皮书ODCC-2022-0300C 编制说明 本白皮书在撰写过程中得到了多家单位的大力支持,在此特别感谢以下参编单位和参编人员: 参编单位(排名不分先后): 中国信通院(云大所)、阿里、腾讯、百度、美团、京东、中国移动研究院、思科、INTEL、星融元、思博伦 参编人员(排名不分先后): 汤明、谭海洋、尹双双、李兆耕、龚志敏、王佩龙、黄淮、李力,董玢,刘松林、金可、李志强,姚柯翰、蒋星、茅新民、万俊君、徐志骏、李嘉明、周刚、康海涛、丁晓燕、孙金超、胡波,袁永轲、赵隽琪、王少鹏、孙聪 II P4超融合网关技术白皮书ODCC-2022-0300C 前言 P4可编程领域现状 P4网络可编程技术已经成为业界广泛使用的一种可编程芯片技术。基于P4可编程芯片技术的应用在各大互联网公司也已逐步承载海量业务流量,在解决网络高带宽,低时延,快速迭代和易运维的多种诉求中,扮演了重要角色。 P4网络可编程技术以其开放,透明,生态等特点吸引众多学术界和工业界的持续重点关注。在全球领域,无论是P4语言标准,P4TARGETS(交换芯片,网卡,模拟器软件等等),ODM厂商,或者科研机构都发展迅速,各大知名公司等都纷纷入场,围绕P4可编程的各种应用,更是百花齐放,生态体系越来越成熟,如图1所示,来源ONF。 图1P4可编程生态 P4超融合网关技术 随着超大型数据中心云,分布式小型云为代表的不同场景的网络应用,网络技术的发展也趋向于两种细分领域。 III P4超融合网关技术白皮书ODCC-2022-0300C 一是以超大型数据中心为代表的中心云,其核心诉求通常是高带宽,低时延的极致网络诉求。 二是以小规模数据中心为代表的边缘云,其核心诉求通常是低成本,功能全的综合网络诉求。 图2小规模数据中心 在大型数据中心中,服务器规模通常可达上万台,多种网元功能角色(各种网元如SLB,NAT,SWITCH等等)通常分布在不同的资源池,而网络的整体衔接通过网络架构的方式连接起来。由于服务器规模较大,网络整体的成本消耗占比通常很小,通常可以忽略,通过网络架构的设计保障了网络的高效协同。 但在小型数据中心中,服务器规模可能小至几十台。如果仍然采用复杂的物理网络架构将分散的网元功能协同在一起,网络的整体成本消耗占比会非常高,甚至可能出现一个节点总成本中有一半以上在处理网络消耗。而小型数据中心通常节点众多,使得这一问题越发严峻,成为不可忽视的问题,业界急需一种新型的低成本综合网络解决方案。 随着各大公司对P4可编程芯片技术的深入研究和大量工程落地,以及成熟生态体系,一种新型的超融合网关技术应运而生,P4超融合网关技术旨在通过 IV P4超融合网关技术白皮书ODCC-2022-0300C P4可编程芯片技术为核心,融合多种网元功能于一体,利用软硬件一体化技术,较好的解决此类问题,如图3所示为一种超融合网关使用示意图。 图3超融合网关 本文由多家知名公司合力编写,将分别从单体网元维度,超融合网关融合场景应用维度,测试维度,以及P4变成通道等方面分别阐述P4超融合网关技术。 V P4超融合网关技术白皮书ODCC-2022-0300C 目录 版权声明I 编制说明II 前言III 一、参考资料1 二、缩略术语1 三、P4单体网元设计与研发1 (一)网元一:SLB网元2 1.背景说明2 2.概要设计2 3.详细设计3 (二)网元二:NAT网元8 1.背景说明8 2.概要设计8 3.详细设计10 (三)网元三:EIP网元12 1.背景说明12 2.概要设计12 3.详细设计12 (四)网元四:防火墙网元16 1.背景说明16 2.概要设计16 VI P4超融合网关技术白皮书ODCC-2022-0300C 3.详细设计17 (五)网元五:VXLAN路由交换网元18 1.背景说明18 2.概要设计19 3.详细设计20 (六)网元六:SRv6PE路由交换网元27 1.背景说明27 2.概要设计28 3.详细设计31 (七)网元七:EVPN网元38 1.背景说明38 2.概要设计39 3.详细设计41 四、P4超融网关设计与研发46 (一)融合场景一:小型云边缘节点网关46 1.背景说明46 2.概要设计47 3.详细设计48 (二)融合场景二:云计算边缘接入网关52 1.背景说明53 2.概要设计53 3.详细设计56 (三)融合场景三:算力调度融合网关68 VII P4超融合网关技术白皮书ODCC-2022-0300C 1.背景说明68 2.概要设计69 3.详细设计70 五、P4超融网关测试方案70 (一)测试方案70 1.业务流程测试71 2.基准性能测试71 3.综合性能测试74 4.业务性能测试75 六、P4超融网关通道设计PINS76 (一)PINS整体背景介绍76 (二)SONIC交换机网元介绍76 (三)PINS系统架构78 (四)P4RTservicecontainer79 1.P4RTTables(newinAPP/CONFIGDB)79 2.P4ORCH(newinSWSScontainer)79 3.APPLStateDBandResponseMessage80 4.SAI-P4-extension(newinASICDB)–Intelisworkingonthis80 (五)PINS安装路由示例86 (六)PINS的使用用例87 (七)PINS总结87 七、结语88 VIII P4超融合网关技术白皮书ODCC-2022-0300C 一、参考资料 下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改)适用于本文件。 P4编程介绍https://p4.org/ P4语言编程规范https://github.com/p4lang/p4-spec/tree/master/p4- 16 二、缩略术语 单体网元:实现特定网络特定功能的一个单元,如SWITCH,SLB,NAT,EIP,防火墙,专线接入,网络流量分析,网络流量限速,流量加解密,OVS等,每一个都是一个单体网元,网元可大可小,本文为一种常见理解上的定义 超融合网关:通常在一台设备实体上,会包含多个单体网元,同时提供多种网络功能,甚至所有需要的网元 超融合场景:应用超融合网关技术来解决具体的应用场景超融合硬件载体:承载超融合网关的实物硬件载体TOFINO:一款支持P4的可编程交换芯片 SiliconONE:一款支持P4的可编程交换芯片 FPGA:一种半定制可编程器件,本文中通常用来作为可编程芯片的存储补充ToR:Topofrack,通常指接入层交换机 三、P4单体网元设计与研发 1 P4超融合网关技术白皮书ODCC-2022-0300C (一)网元一:SLB网元 1.背景说明 负载均衡器的作用是按照特定的调度策略将网络流量以连接为粒度分发到一组后端服务器上。负载均衡器的实现方案主要分为两类:有状态负载均衡器和无状态负载均衡器。无状态负载均衡器通常需要实现一致性哈希算法以确保在后端服务器列表变更的情况下实现一致性调度(即同一个连接调度给同一个后端服务器),但难以支持灵活的调度算法。有状态负载均衡器则通过维护session表记录连接的调度状态以保证一致性调度,能够支持多种调度算法,功能更加灵活。此外,负载均衡器还有多种工作模式,如FULLNAT模式、DR模式、Tunnel模式等。以下我们以Tunnel模式下的有状态负载均衡器为例,说明SLB在P4上的实现。 2.概要设计 有状态负载均衡器的关键处理流程包括: (1)session调度和新建:网络连接的首包到来之后,触发新建session。根据用户配置的调度算法从后端服务器列表中调度一台后端服务器,然后新建一条session并插入到session表里。 (2)session查找和包处理:该连接后续的包到来之后,在session表中查到session,然后按照session里记录的action执行数据包处理和转发 (在Tunnel模式下,action包括增加隧道报文头)。 (3)session结束和删除:收到TCP断连报文(FIN/RST)之后,触发session正常结束和删除。对于无法识别到断连标识的连接(例如:UDP连接,或者非正常断开的TCP连接),采用IdleTimeout机制对连接进行超时删除。 其中,(2)可以在可编程交换芯片上使用P4实现,但是(1)和(3)目前还很难直接在芯片硬件上实现,所以完整的处理流程需要软硬件配合。因此,为了实现完整的SLB功能,建议采用超融合ServerSwitch进行部署。所谓超融 2 P4超融合网关技术白皮书ODCC-2022-0300C 合ServerSwitch,指的是将Server级别的CPU和P4可编程芯片融合在一个设备中,并通过高带宽网卡(NIC)进行互联(如下图所示)。 图4超融合ServerSwitch P4SLB系统架构 在这种超融合设备部署场景中,P4SLB方案主要包括以下三部分: (1)硬件session表(快路径):在可编程交换芯片上实现,负责查找session并执行对应的action,处理完成之后直接转发出去。 (2)软件LB(慢路径):运行在主机CPU上,网络连接的首包上送给软件LB进行session的新建,硬件上无法处理的报文也是上送给软件LB处理。软件LB可以根据自定义算法选择将部分session下发到硬件session表里。 (3)SessionOffloadEngine:运行在主机CPU上,负责管理硬件session表项的新建和删除。软件LB通过调用SessionOffloadEngine的接口将session下发到硬件session表里。 3.详细设计 (1)数据包处理流程 首包处理流程(慢路径) 3 P4超融合网关技术白皮书ODCC-2022-0300C 报文从可编程交换芯片接口输入,匹配硬件session表,查找失败。 报文被转发给软件LB,软件LB执行调度、新建session并对数据包进行相应处理,处理完成后,报文被重新转发给可编程交换芯片。 报文从可编程交换芯片接口发出。 软件LB调用SessionOffloadEngine的接口将新建的session下发。SessionOffloadEngine调用交换芯片SDK将新建session下发到硬件 session表。如果数据包未触发新建session,则无需下发给硬件。下发session的时候可以设置Idletimeout。 后续数据报文处理流程(快路径) 报文从可编程交换芯片接口输入,匹配硬件session表,查找成功,执行session对应的action完成报文修改。 报文从可编程交换芯片接口发出。3.FIN/RST报文处理流程(慢路径) 报文从可编程交换芯片接口输入,进入session表模块,判断TCP的flag标记,识别出FIN/RST报文。 报文被转发给软件LB,软件LB根据FIN/RST标记修改session状态和超时时间,报文处理完成后,被重新转发