上海品茶

ODCC:P4超融合网关技术白皮书(2022)(97页).pdf

编号:100486 PDF 97页 2.69MB 下载积分:VIP专享
下载报告请您先登录!

ODCC:P4超融合网关技术白皮书(2022)(97页).pdf

1、1P4 超融合网关技术白皮书ODCC-2022-0300C分布式存储技术与产业分布式存储技术与产业分析报告分析报告编号 ODCC-2022-0300CP4 超融合网关技术白皮书开放数据中心标准推进委员会开放数据中心标准推进委员会2022-09 发布发布IP4 超融合网关技术白皮书ODCC-2022-0300C版权版权声声明明ODCC(开放数据中心委员会)发布的各项成果,受著作权法保护,编制单位共同享有著作权。转载、摘编或利用其它方式使用 ODCC 成果中的文字或者观点的,应注明来源:“开放数据中心委员会 ODCC”。对于未经著作权人书面同意而实施的剽窃、复制、修改、销售、改编、汇编和翻译出版等

2、侵权行为,ODCC 及有关单位将追究其法律责任,感谢各单位的配合与支持。IIP4 超融合网关技术白皮书ODCC-2022-0300C编制说明编制说明本白皮书在撰写过程中得到了多家单位的大力支持,在此特别感谢以下参编单位和参编人员:参编单位(排名不分先后):中国信通院(云大所)、阿里、腾讯、百度、美团、京东、中国移动研究院、思科、INTEL、星融元、思博伦参编人员(排名不分先后):汤明、谭海洋、尹双双、李兆耕、龚志敏、王佩龙、黄淮、李力,董玢,刘松林、金可、李志强,姚柯翰、蒋星、茅新民、万俊君、徐志骏、李嘉明、周刚、康海涛、丁晓燕、孙金超、胡波,袁永轲、赵隽琪、王少鹏、孙聪IIIP4 超融合网关

3、技术白皮书ODCC-2022-0300C前言前言P4 可编程领域现状可编程领域现状P4网络可编程技术已经成为业界广泛使用的一种可编程芯片技术。基于 P4可编程芯片技术的应用在各大互联网公司也已逐步承载海量业务流量,在解决网络高带宽,低时延,快速迭代和易运维的多种诉求中,扮演了重要角色。P4 网络可编程技术以其开放,透明,生态等特点吸引众多学术界和工业界的持续重点关注。在全球领域,无论是 P4语言标准,P4TARGETS(交换芯片,网卡,模拟器软件等等),ODM 厂商,或者科研机构都发展迅速,各大知名公司等都纷纷入场,围绕 P4 可编程的各种应用,更是百花齐放,生态体系越来越成熟,如图 1所示,

4、来源 ONF。图 1 P4 可编程生态P4超融合网关技术随着超大型数据中心云,分布式小型云为代表的不同场景的网络应用,网络技术的发展也趋向于两种细分领域。IVP4 超融合网关技术白皮书ODCC-2022-0300C一是以超大型数据中心为代表的中心云,其核心诉求通常是高带宽,低时延的极致网络诉求。二是以小规模数据中心为代表的边缘云,其核心诉求通常是低成本,功能全的综合网络诉求。图 2 小规模数据中心在大型数据中心中,服务器规模通常可达上万台,多种网元功能角色(各种网元如 SLB,NAT,SWITCH 等等)通常分布在不同的资源池,而网络的整体衔接通过网络架构的方式连接起来。由于服务器规模较大,网

5、络整体的成本消耗占比通常很小,通常可以忽略,通过网络架构的设计保障了网络的高效协同。但在小型数据中心中,服务器规模可能小至几十台。如果仍然采用复杂的物理网络架构将分散的网元功能协同在一起,网络的整体成本消耗占比会非常高,甚至可能出现一个节点总成本中有一半以上在处理网络消耗。而小型数据中心通常节点众多,使得这一问题越发严峻,成为不可忽视的问题,业界急需一种新型的低成本综合网络解决方案。随着各大公司对 P4可编程芯片技术的深入研究和大量工程落地,以及成熟生态体系,一种新型的超融合网关技术应运而生,P4 超融合网关技术旨在通过VP4 超融合网关技术白皮书ODCC-2022-0300CP4可编程芯片技

6、术为核心,融合多种网元功能于一体,利用软硬件一体化技术,较好的解决此类问题,如图 3所示为一种超融合网关使用示意图。图 3 超融合网关本文由多家知名公司合力编写,将分别从单体网元维度,超融合网关融合场景应用维度,测试维度,以及 P4 变成通道等方面分别阐述 P4 超融合网关技术。VIP4 超融合网关技术白皮书ODCC-2022-0300C目录目录版权声明.I编制说明.II前言.III一、参考资料.1二、缩略术语.1三、P4 单体网元设计与研发.1(一)网元一:SLB 网元.21 背景说明.22 概要设计.23 详细设计.3(二)网元二:NAT 网元.81 背景说明.82 概要设计.83 详细设

7、计.10(三)网元三:EIP 网元.121 背景说明.122 概要设计.123 详细设计.12(四)网元四:防火墙网元.161 背景说明.162 概要设计.16VIIP4 超融合网关技术白皮书ODCC-2022-0300C3 详细设计.17(五)网元五:VXLAN 路由交换网元.181 背景说明.182 概要设计.193 详细设计.20(六)网元六:SRv6PE 路由交换网元.271 背景说明.272 概要设计.283 详细设计.31(七)网元七:EVPN 网元.381 背景说明.382 概要设计.393 详细设计.41四、P4 超融网关设计与研发.46(一)融合场景一:小型云边缘节点网关.4

8、61 背景说明.462 概要设计.473 详细设计.48(二)融合场景二:云计算边缘接入网关.521 背景说明.532 概要设计.533 详细设计.56(三)融合场景三:算力调度融合网关.68VIIIP4 超融合网关技术白皮书ODCC-2022-0300C1 背景说明.682 概要设计.693 详细设计.70五、P4 超融网关测试方案.70(一)测试方案.701 业务流程测试.712 基准性能测试.713 综合性能测试.744 业务性能测试.75六、P4 超融网关通道设计 PINS.76(一)PINS 整体背景介绍.76(二)SONIC 交换机网元介绍.76(三)PINS 系统架构.78(四)

9、P4RTservicecontainer.791 P4RTTables(newinAPP/CONFIGDB).792 P4ORCH(newinSWSScontainer).793 APPLStateDBandResponseMessage.804 SAI-P4-extension(newinASICDB)Intelisworkingonthis.80(五)PINS 安装路由示例.86(六)PINS 的使用用例.87(七)PINS 总结.87七、结语.881P4 超融合网关技术白皮书ODCC-2022-0300C一、一、参考资料参考资料下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,

10、仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改)适用于本文件。P4 编程介绍 https:/p4.org/P4 语言编程规范 https:/ SWITCH,SLB,NAT,EIP,防火墙,专线接入,网络流量分析,网络流量限速,流量加解密,OVS 等,每一个都是一个单体网元,网元可大可小,本文为一种常见理解上的定义超融合网关:通常在一台设备实体上,会包含多个单体网元,同时提供多种网络功能,甚至所有需要的网元超融合场景:应用超融合网关技术来解决具体的应用场景超融合硬件载体:承载超融合网关的实物硬件载体TOFINO:一款支持 P4 的可编程交换芯片SiliconONE

11、:一款支持 P4 的可编程交换芯片FPGA:一种半定制可编程器件,本文中通常用来作为可编程芯片的存储补充ToR:Topofrack,通常指接入层交换机三、三、P4P4 单体网元设计与研发单体网元设计与研发2P4 超融合网关技术白皮书ODCC-2022-0300C(一)(一)网元一网元一:SLB:SLB 网元网元1 1背景说明背景说明负载均衡器的作用是按照特定的调度策略将网络流量以连接为粒度分发到一组后端服务器上。负载均衡器的实现方案主要分为两类:有状态负载均衡器和无状态负载均衡器。无状态负载均衡器通常需要实现一致性哈希算法以确保在后端服务器列表变更的情况下实现一致性调度(即同一个连接调度给同一

12、个后端服务器),但难以支持灵活的调度算法。有状态负载均衡器则通过维护session 表记录连接的调度状态以保证一致性调度,能够支持多种调度算法,功能更加灵活。此外,负载均衡器还有多种工作模式,如 FULLNAT 模式、DR 模式、Tunnel 模式等。以下我们以 Tunnel 模式下的有状态负载均衡器为例,说明 SLB 在 P4 上的实现。2 2概要设计概要设计有状态负载均衡器的关键处理流程包括:(1)session 调度和新建:网络连接的首包到来之后,触发新建session。根据用户配置的调度算法从后端服务器列表中调度一台后端服务器,然后新建一条 session 并插入到 session 表

13、里。(2)session 查找和包处理:该连接后续的包到来之后,在 session 表中查到 session,然后按照 session 里记录的 action 执行数据包处理和转发(在 Tunnel 模式下,action 包括增加隧道报文头)。(3)session 结束和删除:收到 TCP 断连报文(FIN/RST)之后,触发session 正常结束和删除。对于无法识别到断连标识的连接(例如:UDP 连接,或者非正常断开的 TCP 连接),采用 IdleTimeout 机制对连接进行超时删除。其中,(2)可以在可编程交换芯片上使用 P4 实现,但是(1)和(3)目前还很难直接在芯片硬件上实现,

14、所以完整的处理流程需要软硬件配合。因此,为了实现完整的 SLB 功能,建议采用超融合 ServerSwitch 进行部署。所谓超融3P4 超融合网关技术白皮书ODCC-2022-0300C合 ServerSwitch,指的是将 Server 级别的 CPU 和 P4 可编程芯片融合在一个设备中,并通过高带宽网卡(NIC)进行互联(如下图所示)。图 4 超融合 ServerSwitchP4SLB 系统架构在这种超融合设备部署场景中,P4SLB 方案主要包括以下三部分:(1)硬件 session 表(快路径):在可编程交换芯片上实现,负责查找session 并执行对应的 action,处理完成之后

15、直接转发出去。(2)软件 LB(慢路径):运行在主机 CPU 上,网络连接的首包上送给软件 LB 进行 session 的新建,硬件上无法处理的报文也是上送给软件 LB 处理。软件 LB 可以根据自定义算法选择将部分 session 下发到硬件 session 表里。(3)SessionOffloadEngine:运 行 在 主 机 CPU 上,负 责 管 理 硬 件session 表项的新建和删除。软件 LB 通过调用 SessionOffloadEngine 的接口将 session 下发到硬件 session 表里。3 3详细设计详细设计(1)数据包处理流程数据包处理流程首包处理流程(慢

16、路径)4P4 超融合网关技术白皮书ODCC-2022-0300C报文从可编程交换芯片接口输入,匹配硬件 session 表,查找失败。报文被转发给软件 LB,软件 LB 执行调度、新建 session 并对数据包进行相应处理,处理完成后,报文被重新转发给可编程交换芯片。报文从可编程交换芯片接口发出。软件 LB 调用 SessionOffloadEngine 的接口将新建的 session 下发。SessionOffloadEngine 调用交换芯片 SDK 将新建 session 下发到硬件session 表。如果数据包未触发新建 session,则无需下发给硬件。下发session 的时候可

17、以设置 Idletimeout。后续数据报文处理流程(快路径)报文从可编程交换芯片接口输入,匹配硬件 session 表,查找成功,执行session 对应的 action 完成报文修改。报文从可编程交换芯片接口发出。3.FIN/RST 报文处理流程(慢路径)报文从可编程交换芯片接口输入,进入 session 表模块,判断 TCP 的 flag标记,识别出 FIN/RST 报文。报文被转发给软件 LB,软件 LB 根据 FIN/RST 标记修改 session 状态和超时时间,报文处理完成后,被重新转发给可编程交换芯片。报文从可编程交换芯片接口发出。软件 LB 调用 SessionOffloa

18、dEngine 的接口将该 session 删除。SessionOffloadEngine 调用交换芯片 SDK 将 session 从硬件 session 表中删除。如果该连接后续仍有报文到达,会查不到 session 并上送给慢路径处理。5P4 超融合网关技术白皮书ODCC-2022-0300C(2)P4 数据面(快路径)数据面(快路径)硬件 session 表的 P4 代码参考实现如下:/默认 action:上送给主机慢路径actionforward_to_slow_path(ig_md.forward_action=FORWARD_TO_SLOW_PATH;)/快路径 action:封

19、装隧道头,转发给后端服务器actionforward_to_real_server(ipv4_addr_tlocal_ip,ipv4_addr_treal_server_ip)/添加隧道头,这里以 IPIP 隧道举例说明hdr.outer_ipv4.setValid();hdr.outer_ipv4.version=4w4;hdr.outer_ipv4.ihl=4w5;hdr.outer_ipv4.protocol=IP_PROTOCOLS_IPINIP;hdr.outer_ipv4.total_len=hdr.ipv4.total_len+16w20;hdr.outer_ipv4.src_a

20、ddr=local_ip;hdr.outer_ipv4.dst_addr=real_server_ip;ig_md.forward_action=FORWARD_TO_REAL_SERVER;6P4 超融合网关技术白皮书ODCC-2022-0300C/硬件 session 表定义tablesession_table/session 表的 key 是五元组key=hdr.ipv4.src_addr:exact;hdr.ipv4.dst_addr:exact;hdr.ipv4.protocol:exact;ig_md.l4_src_port:exact;ig_md.l4_dst_port:exac

21、t;/session 表的 action 类型actions=forward_to_real_server;defaultonlyforward_to_slow_path;/session 表的执行逻辑apply/匹配 session 表7P4 超融合网关技术白皮书ODCC-2022-0300Csession_table.apply();/判断报文是否是 TCP 建连或断连报文if(ig_md.pkt_type=PKT_TYPE_TCP)if(hdr.tcp.flags&TCP_FLAG_SYN)=TCP_FLAG_SYN|(hdr.tcp.flags&TCP_FLAG_FIN)=TCP_FL

22、AG_FIN|(hdr.tcp.flags&TCP_FLAG_RST)=TCP_FLAG_RST)/将建连和断连报文上送给主机慢路径ig_md.forward_action=FORWARD_TO_SLOW_PATH;(3)软件软件 LB(慢路径)(慢路径)软件 LB 新增的主要功能:在新建软件 session 时,调用 SessionOffloadEngine 接口创建硬 件session。在删除软件 session 时,调用 SessionOffloadEngine 接口删除硬 件session。(4)SessionOffloadEngineSessionOffloadEngine 是可编程

23、交换芯片的控制面模块,主要功能有:可编程交换芯片的初始化8P4 超融合网关技术白皮书ODCC-2022-0300CSession 表项的增删改查P4 流水线其他辅助表项的配置管理为软件 LB 和外部运维工具提供调用接口(二)(二)网元二:网元二:NATNAT 网元网元1 1背景说明背景说明NAT(NetworkAddressTranslation)在计算机网络中是一种在 IP 数据包通过路由器或防火墙时重写源 IP 地址或目的 IP 地址的技术。主要用来解决:IPv4 地址耗尽问题,安全问题以及费用问题。NAT 可以按地址转换的对象是对源地址还是目的地址,被分为源 NAT、目的NAT 和双向

24、NAT。而源 NAT 中,根据是否对源端口号进行转换,可以被细化为NATNo-PAT,PAT(NAPT)和 EASYIP;目的 NAT 中根据转换之后的地址是否存在一定的映射关系,可以被细化为静态目的 NAT,动态目的 NAT 和 NATServer;双向 NAT 是源 NAT 和目的 NAT 的组合,其主要针对同一条流,在该流经过设备时同时转换报文的源地址和目的地址。NAT 网元的应用场景有:通过互联网网关连接互联网,私有子网接入互联网,具有重复 IP 子网的互通,连接线下数据中心与 VPC,使用允许的 IP 地址访问网络,v4v6 转换等。NAT 网元承担了众多的 IP 映射规则,常规可编

25、程芯片如 Tofino 设备没有足够的资源部署,因此使用 XLT 设备中 FPGAX86 等硬件,为其提供超大表项的承载能力。2 2概要设计概要设计NAT 网元具有多种应用场景,本设计以最常见的访问外网场景为例进行设计。9P4 超融合网关技术白皮书ODCC-2022-0300C在此场景下该网元主要负责将内部 IP 地址通过边界路由转换成外网 IP 地址,在边界路由的 NAT 地址转换表记录下这个转换映射记录,当外部数据返回时,路由使用 NAT 技术查询 NAT 转换表,再将目标地址替换成内网用户 IP 地址。具体来说,当 vm 访问外网客户端产生一个 vmip-cip 的报文时,经由 xlt实

26、 现 的 NAT 功 能 将 vmip-cip 的 报 文 根 据 NAT 分 类 转 换 为 eip(none/port/vni)-cip 的报文,该报文经过 ISP 访问外网客户端后,客户端返回一个 cip-eip(none/port/vni)的报文,该报文经由 NAT 转换为 cip-vmip 的报文。NAT 网元的概要设计架构如图,其在 XLT 中的实现按硬件可以划分为三部分。Tofino:用片上资源实现 NAT 功能,在 Tofino 中主要承载大流的网络地址转换,并进行 IPMAP 表项中热点规则的跟踪统计,未命中的报文则重定向到fpga 处理。FPGA:在 FPGA 中实现 NA

27、T 功能,并进行流命中 IPMAP 表项的统计分析。未命中的报文交付 CPU 进行兜底处理。10P4 超融合网关技术白皮书ODCC-2022-0300CCPU:实现完整的 NAT 网元流水线,来实现对于快路径难处理或未命中报文的兜底处理。对于新元组的 NAT 请求,实现 IPMAP 的创建(从 eip 资源池里分配为新元组分配资源),并部署在 FPGA 或 Tofino 中。对 FPGA 和 Tofino 中IPMAP 的命中情况进行统计分析,根据命中频次实现 FPGATofino 的规则交换,卸载更多的热点 NAT 规则到 Tofino 中。3 3详细设计详细设计核心思想为通过报文的元组信息

28、,对特定的元组进行源或目的地址的值改写和源或目的端口的值改写,详细设计部分仅以修改 IP 和 TCPport 为例:Plaintextactionrewrite_ip_dst_addr(bitdst_ip)hdr.ipv4.dst_addr=dst_ip;actionrewrite_ip_src_addr(bitdst_ip)hdr.ipv4.dst_addr=dst_ip;actionrewrite_ip_dst_addr_dport(bitdst_ip,bitdport)hdr.ipv4.dst_addr=dst_ip;hdr.tcp.dst_port=dport;actionrewrit

29、e_ip_src_addr_sport(bitsrc_ip,bitsport)hdr.ipv4.dst_addr=dst_ip;11P4 超融合网关技术白皮书ODCC-2022-0300Chdr.tcp.src_port=sport;tablenatkey=hdr.ipv4.proto:exact;hdr.ipv4.dst_addr:exact;hdr.ipv4.src_addr:exact;hdr.tcp.src_port:exact;hdr.tcp.dst_port:exact;actions=rewrite_ip_dst_addr;rewrite_ip_src_addr;rewrite_

30、ip_dst_addr_dport;rewrite_ip_src_addr_sport;size=NAT_TABLE_SIZEapplynat.apply();12P4 超融合网关技术白皮书ODCC-2022-0300C(三)(三)网元三:网元三:EIPEIP 网元网元1 1背景说明背景说明弹性公网 IP(ElasticIPAddress,简称 EIP)是可以独立购买和持有的公网IP 地址,通过弹性的绑定后端专有网络(VirtualPrivateCloud,简称 VPC)内的云服务器等实例上,提供 underlay 到 overlay 的公网通信能力。2 2概要设计概要设计EIP 网 元 提

31、供 了 灵 活 的 公 网 IP 静 态 NAT 能 力,通 过 P4table 的match/action 实现高性能的 IP 替换和报文转发,支持 IPv4/IPv6 地址。公网入方向 underlay 报文匹配 EIP,替换报文目的 IP 地址为所绑定的 VPC内 IP 地址,并封装所属 VPC 的 vni 构造 overlayvxlan 报文转发至对应的vswitch 或 EVPN 交换机,最终到达云服务器等实例上。VPC 出公网方向 overlayvxlan 报文匹配 vni 和内层源 IP 地址,解封装vxlan 并替换报文源 IP 地址为所绑定的公网 IP 地址,最终从公网发出。

32、3 3详细设计详细设计(1)3.1VPCEIP 卸载转发层设计卸载转发层设计本案例假设 VPC 报文均为 VXLAN 报文。13P4 超融合网关技术白皮书ODCC-2022-0300C(1)公网入方向进 VPC通过 BGP 或 OSPF 协议等价路由发布 EIP 对应 32/128 位掩码路由,引流公网入方向报文。根据 IPV4/IPV6 协议分别匹配对应目的 IP,转换为 VXLAN 报文,目的 IP 转换为 VPC 内的 IP。actionset_vpc_innerip(bitvni,bitnc_ip,bitinner_dip)ig_md.vni=vni;ig_md.nc_ip=nc_ip

33、;ig_md.inner_dip=inner_dip;tableeip_to_vpckey=hdr.ipv4.dst_addr:exact;actions=set_vpc_innerip;size=1024*32;actionset_vpc_innerip_v6(bitvni,bitnc_ip,bitinner_dip_v6)ig_md.vni=vni;ig_md.nc_ip=nc_ip;ig_md.inner_dip_v6=inner_dip_v6;14P4 超融合网关技术白皮书ODCC-2022-0300Ctableeip_to_vpc_v6key=hdr.ipv6.dst_addr:ex

34、act;actions=set_vpc_innerip_v6;size=1024*8;if(hdr.ipv4.isValid()eip_to_vpc();elseif(hdr.ipv6.isValid()eip_to_vpc_v6();替换目的 IP 后,进行 hdr.vxlan.setValid(),对相应 VXLAN 报文的各字段进行赋值,最后计算校验和后 pkt.emit(hdr)即可,常规操作,略去代码。(2)VPC 出方向公网发出通过 BGP 或 OSPF 协议等价路由发布 NC_IP 对应 32 位掩码路由,引流出方向 VXLAN 报文。根据 IPV4/IPV6 协议分别匹配对应源

35、 IP 和 VNI,转换为UNDERLAY 报文,源 IP 转换为 EIP 发往公网。actionset_vpc_eip(biteip)ig_md.sip=eip;tablevpc_to_eip15P4 超融合网关技术白皮书ODCC-2022-0300Ckey=hdr.vxlan.vni:exact;hdr.inner_ipv4.src_addr:exact;actions=set_vpc_eip;size=1024*256;actionset_vpc_eip_v6(biteip_v6)ig_md.sip_v6=eip_v6;tablevpc_to_eip_v6key=hdr.vxlan.vn

36、i:exact;hdr.inner_ipv6.src_addr:exact;actions=set_vpc_eip_v6;size=1024*64;if(hdr.vxlan.isValid()&hdr.inner_ipv4.isValid()16P4 超融合网关技术白皮书ODCC-2022-0300Cvpc_to_eip();elseif(hdr.vxlan.isValid()&hdr.inner_ipv6.isValid()vpc_to_eip_v6();替换源 IP 后,进行 hdr.vxlan.setInvalid(),计算校验和后发出,常规操作,略去代码。(2)3.2VPCEIP 卸载

37、控制层设计卸载控制层设计控制侧主要维护住两个方向的规则,根据 IPV4/IPV6 协议下发到芯片即可。一个是公网入方向:eip/eip_v6-vni+vpcinnerip/innerip_v6一个是公网出方向:vni+vpcinnerip/innerip_v6-eip/eip_v6(四)(四)网元四:防火墙网元网元四:防火墙网元1 1背景说明背景说明MFW 是美团的内外网防火墙,主要做四七层的流量安全控制,东西向流量有上 TB,通常需要几十台 X86 架构服务器,不仅成本高,而且还占用核心接入区的交换机网口。所以需要一种通用的高吞吐的网元,降低成本的同时,又能满足功能需求。2 2概要设计概要设

38、计17P4 超融合网关技术白皮书ODCC-2022-0300C多功能防火墙,四层主要是通过五元组来过滤,七层主要是通过HTTPHEADER 中的 SNI 字段过滤。大概有以下部分组成:协议栈;初始化向 knet 中添加 host 接口;并且设置接口名称、IP、mac;控制面(1)配置初始化(grpc 相关)(2)解析配置文件(3)下发接口配对转发表(4)下发源 mac 表项(5)下发 cpu、fabric 表项(6)启动之后,定期向 host 接口对应网关发送 arp 请求报文(7)根据 arp 响应下发目的 mac 表项数据面(1)报文解析,协议识别(2)表项匹配(3)上送 cpu(4)报文

39、封装、出接口转发3 3详细设计详细设计/根据芯片的不同,防火墙这部分的操作方式可能有所不同,以下以barefoot 芯片为例actionset_fwd_port(bitport)18P4 超融合网关技术白皮书ODCC-2022-0300Cfw_md.out_port=port;tablefw_tablekey=ig_md.l4_sip:lpm;ig_md.l4_dip:lpm;ig_md.vni:ternary;ig_md.ip_proto:exact;ig_md.l4_sport:range;ig_md.l4_dport:range;actions=set_fwd_port;NoAction

40、;applyfw_table.apply();Cpuport 收到的包通过 DPDK 进行包过滤,需要转发的包再下发给 barefoot芯片进行转发;控制层设计控制层上,主要完成 mac 地址学习,路由学习等功能,流表信息更新;(五)(五)网元五:网元五:VXLANVXLAN 路由交换网元路由交换网元1 1背景说明背景说明19P4 超融合网关技术白皮书ODCC-2022-0300C随着云与虚拟化业务的快速发展,数据中心网络对于租户业务的隔离以及租户 VPN 的可扩展性要求日益增高。VXLAN 作为数据中心网络虚拟化 Overlay的关键技术,通过将第二、三层的业务网络(overlay)封装 V

41、XLAN 的外层报文,并通过第三层基础设施(underlay)网络实现跨数据中心乃至跨城域网的路由交换,从而构建超大规模的 Overlay 逻辑业务网络。VXLAN 是行业标准协议,采用 MACinUDP 封装方式,支持 24bits 的 VNI(虚拟网络实例,VirtualNetworkInstance)ID,满足数据中心大二层 VM 迁移和多租户的可扩展性需求。VXLAN 在入口的 VTEP(VXLANtunnelendpoint)设备将以太网帧封装上 VXLANUDP 包头,并使用正常的 IP 路由和转发机制将封装的数据包通过底层网络传输到远端 VTEP,再根据 VXLAN 的包头信息完

42、成解封装后,实现二层或三层的转发。下图显示了 VXLAN 数据包格式。该数据包具有 8 字节 VXLAN 包头、UDP 包头、外部 IP 包头和外部 MAC 包头。本篇重点介绍 VXLAN 桥接实现逻辑;2 2概要设计概要设计VXLAN 桥接是 VTEP 设备提供的功能,用于将 VLAN 扩展到第 3 层基础设施。20P4 超融合网关技术白皮书ODCC-2022-0300C下图显示了 VLAN 至 VLAN 的桥接的概要设计示意图。为了简化起见本章节只针对完成 VXLAN 报文转发所需要封装的核心字段进行描述。3 3详细设计详细设计入口 VTEP 设备工作流程,P4 程序按照以下流程完成所需信

43、息的查找和报文封装:流程TableKeyAction说明1vxlan_nh_attributespd.nh_id:exactset_vxlan_tunnel_id使用”vxlannexthopid”查表结果获得 vxlantunnelID2vrf_mappping_vni_tablepd.vrf_id:exact;pd.vxlan_tunnel_id:exact;set_vni_encap使 用“vrfID”和“vxlantunnelid”共同查 表 结 果,获 得vxlanVNI21P4 超融合网关技术白皮书ODCC-2022-0300C3vxlan_tunnl_attributespd.v

44、xlan_tunnel_id:exactset_vxlan_ip_encap使用“vxlantunnelid”查表结果,获得 vxlan 隧道的“源 IP,目的 IP,TTL 和下一跳 ID”4nh_attributespd.nh_id:exactset_eth_dst_encap使用“下一跳 ID”查表结果,获得”L3 出接口 ID”和“目的 MAC”信息5l3_port_attributespd.l3_port_id:exactset_eth_src_encap使 用“L3 出 接 口ID”查表结果,获得”L3出 接 口 源MAC”和“VLAN”信息入口 VTEP 设备 P4 代码示例:/

45、l3vpnvxlanencapcontrolVxlan_Encap(inoutParsed_packethdr,inoutPacket_descriptorpd)actionDrop_action()pd.ctrl.drop=true;actionset_vxlan_tunnel_id(bitvxlan_tunnel_id)pd.vxlan_tunnel_id=vxlan_tunnel_id;tablevxlan_nh_attributeskey=22P4 超融合网关技术白皮书ODCC-2022-0300Cpd.nh_id:exact;action=Drop_action;set_vxlan_

46、tunnel_id;actionset_vni_encap(bitvni)hdr.vxlan_h.vni=vni;tablevrf_mappping_vni_tablekey=pd.vrf_id:exact;pd.vxlan_tunnel_id:exact;action=Drop_action;set_vni_encap;constdefault_action=Drop_action;actionset_vxlan_ip_encap(ipv4_addr_tsip,ipv4_addr_tdip,bitttl,bitnh_id)hdr.ipv4.src_addr=sip;hdr.ipv4.dst_

47、addr=dip;23P4 超融合网关技术白皮书ODCC-2022-0300Chdr.ipv4.ttl=ttl;pd.nh_id=nh_id;tablevxlan_tunnl_attributeskey=pd.vxlan_tunnel_id:exact;actions=Drop_action;set_vxlan_ip_encap;constdefault_action=Drop_action;actionset_eth_dst_encap(bitl3_port_id,mac_addr_tmac,bitout_port)pd.l3_port_id=l3_port_id;pd.out_port=o

48、ut_port;hdr.ethernet_h.dst_addr=mac;tablenh_attributeskey=pd.nh_id:exact;actions=Drop_action;24P4 超融合网关技术白皮书ODCC-2022-0300Cset_eth_dst_encap;constdefault_action=Drop_action;actionset_eth_src_encap(mac_addr_tmac,vlan_id_tvid)hdr.ethernet_h.src_addr=mac;hdr.vlan_tag_h.vid=vid;tablel3_port_attributeske

49、y=pd.l3_port_id:exact;actions=Drop_action;set_eth_src_encap;constdefault_action=Drop_action;applyif(pd.ctrl.vxlan_encap=false)return;vxlan_nh_attributes.apply();if(pd.ctrl.drop)return;vrf_mappping_vni_table.apply();if(pd.ctrl.drop)return;vxlan_tunnl_attributes.apply();25P4 超融合网关技术白皮书ODCC-2022-0300Ci

50、f(pd.ctrl.drop)return;nh_attributes.apply();if(pd.ctrl.drop)return;l3_port_attributes.apply();出口 VTEP 设备 P4 程序工作流程:流程TableKeyAction说明1vxlan_tunnel_terminalhdr.ipv4.src_addr:ternary;hdr.ipv4.dst_addr:ternary;set_vxlan_tunnel_id使用”源地址+目的地址”查表结果获得 vxlantunnelID2vni_mapping_tablehdr.vxlan_h.vni:exact;pd

51、.vxlan_tunnel_id:exact;set_vrf_id使用“vxlantunnelID”查表结果,获得 OverlayvrfID.后续为根据 vrfId 的标准 VRF查表转发流程,略去。出口 VTEP 设备 P4 示例代码:/vxlandecapcontrolTunnelTerminal(inoutParsed_packethdr,inoutPacket_descriptorpd)actionDrop_action()pd.ctrl.drop=true;actionset_vxlan_tunnel_id(bitvxlan_tunnel_id)pd.vxlan_tunnel_id=

52、vxlan_tunnel_id;26P4 超融合网关技术白皮书ODCC-2022-0300Cpd.ctrl.tunnel_decap=true;actionset_no_decap()pd.ctrl.tunnel_decap=false;tablevxlan_tunnel_terminalkey=hdr.ipv4.src_addr:ternary;hdr.ipv4.dst_addr:ternary;action=set_vxlan_tunnel_id;set_no_decap;constdefault_action=set_no_decap;actionset_vrf_id(bitvrf_id

53、)pd.vrf_id=vrf_id;tablevni_mapping_tablekey=hdr.vxlan_h.vni:exact;pd.vxlan_tunnel_id:exact;action=27P4 超融合网关技术白皮书ODCC-2022-0300CDrop_action;set_vrf_id;constdefault_action=Drop_action;applyvxlan_tunnel_terminal.apply();if(pd.ctrl.decap=false)return;vni_mapping_table.apply();(六)(六)网元六:网元六:SRv6PESRv6PE

54、 路由交换网元路由交换网元1 1背景说明背景说明随着中国新基建的政策推进,作为下一代宽带互联网核心技术的SegmentRoutingv6(简称 SRv6)正在步入技术和应用创新的快车道。SRv6 赋能网络真正的智能调度优化能力,可以让游戏更顺畅,使金融交易更加快速并避免网络问题带来的交易失败和中断,SRv6 还可以通过将流量调度到空闲链路上从而提升链路利用率,降低网络费用。SRv6 已经被越来越多的运营商、互联网企业和大型企业所认可,并开始积极研究与部署。为了保持和 IPV6 地址的兼容性,SRv6 用于流量调度的路径 SegmentID(SID)都采用了 128 比特的报文长度。相比较于 S

55、RMPLS 的每个标识 32 比特报文长度,足足多出来了 96 比特。在 10 跳路由器点的网络场景下,部署 SRv6 后每条线路有效带宽将会减少了 25%。这会导致 SRv6 流量工程部署的场景下链路利用率过低的问题。28P4 超融合网关技术白皮书ODCC-2022-0300C为了提高 SRv6 的包头封装效率,IETFSPRING 工作组已经制定了 SRv6 包头压缩的工作组草案,https:/datatracker.ietf.org/doc/draft-ietf-spring-srv6-srh-compression/,草案定义了 SRv6 包头压缩的两种风格,即 NEXT-C-SID

56、风格与 REPLACE-C-SID 风格。本章节以 NEXT-C-SID 风格为例,说明 SRv6L3VPN 的 PE 路由器如何使用 P4编程实现的 SRv6 压缩包头的封装与解封装,从而实现边缘数据中心与核心数据中心之间多租户 L3VPN 业务的路由与转发。2概要设计概要设计SRv6 包头压缩原理简介上图是一个正常的 SRv6 包头(SRH),每一个 SID 都需要保存相同的公共前缀,但这些相同的部分实在是多余。把 SIDList 中相同的公共前缀(网段)提取作为压缩包头的公共前缀块,将 NodeID 和 FunctionID 作为压缩 Next-C-SID(uSID)与公共前缀一起形成压

57、缩后的 SID 列表。(如下图)29P4 超融合网关技术白皮书ODCC-2022-0300C可以看出经过压缩后的 SRv6 包头大大缩短了包头长度,当网络的 SIDlist小于六跳时,甚至无需使用 SRH 扩展包头,只需要将 SIDList 放到 IPv6 的目标地址字段即可。如下图蓝色部分,标识了一个经过 5 跳网络节点的 Next-C-SID包头地址编码。当 uSID 大于 6 跳,只需要增加 SRH 即可实现更多的 SIDList,SRH 中的SID 即可以采用压缩格式,也可以用非压缩格式,甚至支持混合编排,在获得包头压缩的好处的同时,也可灵活兼容非压缩设备与原有 SR 网络的分阶段升级

58、。如下图:图 6 SRv6L3VPN 的 P4 设计30P4 超融合网关技术白皮书ODCC-2022-0300C使用 P4 可编程语言可以方便的针对 L3VPN 业务实现 SRv6 包头解析、封装与解封装、包头修改以及转发。入口 PE 报文处理流程:当 IP 业务报文进入 L3VPNVRF 后,通过路由查表结果确定是 SRv6L3VPN 业务后,封装出口PE路由器VPNFunctionSID,如果有SRv6TE(TrafficEngineering)的需求,则封装到达出口 路由器所相应的SRv6Policy 路径(NEXT-C-SIDList),然后根据下一跳和出接口的信息封装相应的 IPv6

59、 地址/MAC 地址/VLAN 等包头信息后完成转发。中间 P 路由器报文处理流程:中间路由器接收到 IPv6 报文后,首先判断是否是需要自己处理的 SRv6 报文。如果是需要本节点处理的报文,则判别 FunctionID,如果 FunctionID 是uN(End),或 uA(End.X),则表明本节点为中间节点,根据 uN/uA 执行目标地址的bit 位移,构造新的目标地址,完成后续转发。出口 PE 路由器报文处理出口路由器接收到 IPv6 报文后,首先判断是否是需要自己处理的 SRv6 报文。如果是需要本节点处理的报文,则判别 FunctionID,如果 FunctionID 是uDT4

60、,uDT6 或 uDT46 则表明该报文为本节点终结的 L3VPN 报文,根据 Function执行包头的解封装,根据 FunctionID 查找对应的 VRF 表,根据 VRF 查表完成后续标准的三层报文的构造与转发。31P4 超融合网关技术白皮书ODCC-2022-0300C3 3详细设计详细设计SRv6 入口 PEP4 代码示例/SRv6sourcepoint,在路由查找结果是 SRv6 封装的时候进入此逻辑,/以 NEXT-C-SID(uSID)压缩格式为例controlSrv6_Encap(inoutParsed_packethdr,inoutPacket_descriptorpd)

61、actionDrop_action()pd.ctrl.drop=true;actionset_srv6_list(bitpath_sid_list_id,bitvpn_sid_list_id,boolvpn_sid_valid)pd.srv6.sid_list_id=path_sid_list_id;pd.srv6.vpn_sid_valid=vpn_sid_valid;pd.srv6.vpn_sid_list_id=vpn_sid_list_id;tablesrv6_nh_tablekey=pd.nh_id:exact;action=Drop_action;set_srv6_list;con

62、stdefault_action=Drop_action;32P4 超融合网关技术白皮书ODCC-2022-0300Cactionset_srv6_encap(ipv6_addr_tsid0,ipv6_addr_tsid1,bitsid_length,bitnh_id)pd.nh_id=nh_id;pd.enc.sid0=sid0;pd.enc.sid1=sid1;pd.enc.sid_length=sid_length;tablesrv6_sid_list_tablekey=pd.srv6_sid_list_id:exact;action=Drop_action;set_srv6_encap

63、;constdefault_action=Drop_action;actionset_srv6_vpn_encap(ipv6_addr_tvpn_sid)pd.enc.vpn_sid=vpn_sid;tablesrv6_vpn_sid_tablekey=pd.srv6_vpn_sid_list_id:exact;action=33P4 超融合网关技术白皮书ODCC-2022-0300Cset_srv6_vpn_encap;actionset_eth_dst_encap(bitl3_port_id,mac_addr_tmac,bitout_port)pd.l3_port_id=l3_port_i

64、d;pd.out_port=out_port;hdr.ethernet_h.dst_addr=mac;tablenh_attributeskey=pd.nh_id:exact;actions=Drop_action;set_eth_dst_encap;constdefault_action=Drop_action;actionset_eth_src_encap(mac_addr_tmac,vlan_id_tvid)hdr.ethernet_h.src_addr=mac;hdr.vlan_tag_h.vid=vid;tablel3_port_attributeskey=34P4 超融合网关技术白

65、皮书ODCC-2022-0300Cpd.l3_port_id:exact;actions=Drop_action;set_eth_src_encap;constdefault_action=Drop_action;applyif(pd.ctrl.srv6_encap=false)return;srv6_nh_table.apply();if(pd.ctrl.drop)return;srv6_sid_list_table.apply();if(pd.ctrl.drop)return;if(pd.srv6_vpn_valid)srv6_vpn_sid_table.apply();if(pd.ctr

66、l.drop)return;hdr.ipv6_h.dst_addr=pd.enc.sid0;if(pd.enc.segment_leftUSID_PER_SID)pd.enc.push_srh=true;hdr.sr_h.segment_left=pd.enc.segment_left-USID_PER_SID;hdr.sr_h.sid0=pd.enc.sid1if(pd.srv6_vpn_sid_valid)hdr.sr_h.sid1=pd.enc.vpn_sid;35P4 超融合网关技术白皮书ODCC-2022-0300Chdr.sr_h.segment_left=hdr.sr_h.seg

67、ment_left+1;nh_attributes.apply();if(pd.ctrl.drop)return;l3_port_attributes.apply();SRv6 中间节点和出口 PE 节点 P4 代码示例/SRv6end/terminal,以 NEXT-C-SID(uSID)压缩格式为例controlSrv6_Termination(inoutParsed_packethdr,inoutPacket_descriptorpd)actionDrop_action()pd.ctrl.drop=true;actionset_srv6_attribute(bitvrf_id,bitac

68、tion,bitnh_id)pd.vrf_id=vrf_id;pd.srv6.action=action;pd.nh_id=nh_id;pd.ctrl.srv6_end=true;acitonset_srv6_no_term()pd.ctrl.srv6_end=false;36P4 超融合网关技术白皮书ODCC-2022-0300Ctablesrv6_usid_terminal_tablekey=hdr.ipv6_h.dst_addr79:64:ternary;hdr.ipv6_h.dst_addr95:80:exact;actions=set_srv6_attribute;set_srv6_

69、no_term;constdefault_action=set_srv6_no_term;applysrv6_usid_terminal_table.apply();if(pd.ctrl.srv6_end=false)return;if(pd.srv6.action=DT46)pd.enc.pop_header=true;/后续按 overlay 的 dip 和 vrfid 在普通 L3 转发流程中转发处理elseif(pd.srv6.action=Shift_Fwd)hdr.ipv6_h.dst_addr95:80=hdr.ipv6_h.dst_addr79:64;hdr.ipv6_h.ds

70、t_addr79:64=hdr.ipv6_h.dst_addr63:48;hdr.ipv6_h.dst_addr47:32=hdr.ipv6_h.dst_addr31:16;hdr.ipv6_h.dst_addr31:16=hdr.ipv6_h.dst_addr15:0;if(pd.srh_vaild)37P4 超融合网关技术白皮书ODCC-2022-0300Chdr.ipv6_h.dst_addr15:0=hdr.sr_h.sid095:80;if(hdr.sr_h.segment_left=1&last_usid_in_srh)pd.enc.remove_srh=true;elsehdr.

71、sr_h.segment_left=hdr.sr_h.segment_left;hdr.sr_h.sid095:80=hdr.sr_h.sid079:64;hdr.sr_h.sid079:64=hdr.sr_h.sid063:48;hdr.sr_h.sid047:32=hdr.sr_h.sid031:16;hdr.sr_h.sid031:16=hdr.sr_h.sid015:0;hdr.sr_h.sid015:0=160;/ifsid1existed,shirftsid1tosid0elsehdr.ipv6_h.dst_addr15:0=160;/后续按 ipv6addr+vrf 进入普通 L

72、3 转发流程中转发处理if(pd.srv6.action=END)hdr.ipv6_h.dst_addr95:64=hdr.ipv6_h.dst_addr63:32;hdr.ipv6_h.dst_addr63:32=hdr.ipv6_h.dst_addr31:0;if(pd.srh_vaild)hdr.ipv6_h.dst_addr31:0=if(hdr.sr_h.sid_length=1&last_usid_in_srh)pd.enc.remove_srh=true;elsehdr.sr_h.segment_left=hdr.sr_h.segment_left-1;38P4 超融合网关技术白

73、皮书ODCC-2022-0300Chdr.sr_h.sid095:64=hdr.sr_h.sid063:32;hdr.sr_h.sid063:32=hdr.sr_h.sid031:0;hdr.sr_h.sid031:0=320;/ifsid1existed,shirftsid1tosid0elsehdr.ipv6_h.dst_addr31:0=320;/后 续 按pd.nh_id直 接 进 入nh处 理 流 程,nh_attributes.apply()(七)(七)网元七:网元七:EVPNEVPN 网元网元1 1背景说明背景说明VXLAN 是今天云数据中心内部广泛部署的虚拟网络协议,通过在物理

74、网络上构建一层虚拟网络,VXLAN 成功地解决了数据中心云网络所面临的海量租户隔离、虚拟计算节点灵活迁移、横向扩展性、多数据中心互连以及网络优化等问题。但是,VXLAN 自身也面临着配置复杂、维护困难、广播报文泛滥、转发效率低下等问题。39P4 超融合网关技术白皮书ODCC-2022-0300CEVPN(EthernetVirtualPrivateNetwork,以太网虚拟专用网络)解决方案作为下一代 EthernetL2VPN 解决方案之一,通过 BGP 协议承载路由通告控制平面信令,具有从接入侧学习本地 MAC 地址、从骨干网上学习远端 MAC 地址的能力,这种基于控制平面的协议对 MAC

75、/IP 的学习过程具备很强的控制能力,同时增强了原有 VXLAN 网络的扩展性,支持分布式三层网关,并能维护主机或虚拟机群彼此间的隔离性,解决了设备多归属或网络多归属接入时的负载分担问题,改善了网络出现故障时的收敛时间,还具备 VPN 自动发现的能力。在 NetworkOverlay 的云数据中心网络中,与 VTEP 类似,一般会在 ToR(或者 Leaf)位置的设备上支持 EVPN 相关功能。下面是一个支持 EVPN 的云网络的示意图:本节内容描述一个在 P4 超融合网关上实现 EVPN 网元的方案。2 2概要设计概要设计该 EVPN 方案分为两部分:控制平面和数据平面(即 VXLAN)。4

76、0P4 超融合网关技术白皮书ODCC-2022-0300C控制平面基于开源网络操作系统 SONiC 开发,整体上继承 SONiC 的容器化架构,所有应用服务均容器化,以实现新增应用功能快速开发与集成,同时,通过以 Redis 为中心的数据驱动模式实现所有模块之间的关联解耦合。下图描述了融合了 EVPN 的 SONiC 控制平面的整体架构:图 7 控制平面的整体架构数据平面基于具备 P4 可编程能力的芯片开发,向上对控制平面提供统一的SAI 接口,以屏蔽不同芯片之间 SDK 的差异。数据平面能够支持协议解析可编程、资源可编程、转发逻辑可编程特性,通过 P4 编程实现软硬件转发逻辑,能够适应应用场

77、景中灵活多变的报文转发需求,并能够根据需要调整表项以满足不同场景下的线速转发要求。下图描述了基于具备 P4 可编程能力芯片的数据平面的上下行处理流程:41P4 超融合网关技术白皮书ODCC-2022-0300C3 3详细设计详细设计EVPN 控制平面详细设计CONFIG_DBEVPN 开关与映射EVPN|Configenable:true/falselocal_vtep:ip_addressEVPN_TUNNEL_MAP|vnimap:vlan_name/vnet_nametype:vlan/vrf42P4 超融合网关技术白皮书ODCC-2022-0300CVlan 与 vnet:VNET|v

78、net_namevni:vniVLAN_INTERFACE|vlan_namevnet_name:vnet_namemac_addr:macVLAN_INTERFACE|vlan_name|ip/maskNULLNULLAPP_DBEVPN 开关与映射EVPN_TABLE|Configenable:true/falselocal_vtep:ip_addressEVPN_TUNNEL_MAP_TABLE:vnimap:vlan_name/vnet_nametype:vlan/vrfVlan 与 vnet:VNET|vnet_namevni:vniINTF_TABLE:vlan_namevnet_

79、name:vnet_namemac_addr:macINTF_TABLE:vlan_name|ip/maskscope:global43P4 超融合网关技术白皮书ODCC-2022-0300Cfamily:IPv4邻居表:NEIGH_TABLE:interface:ipfamily:neigh:macevpn:true/false隧道与映射:EVPN_TUNNEL_TABLE:vni:tunnel_namesrc_ip:macdst_ip:true/falsemap:vlan_name/vnet_name转发表:VNET_ROUTE_TABLE:vnet_name|ip/32remote_vt

80、ep:remote_vtep_ipFDB_TABLE:vlan:macport:tunnel_nametype:staticROUTE_TABLE:prefixifname:nexthop:VNET_ROUTE_TABLE:vnet_name|prefixifname:nexthop:EVPN 数据平面详细设计44P4 超融合网关技术白皮书ODCC-2022-0300C内层为 ARP 的 VXLAN 报文处理解析内层 ARP 报文stateparse_inner_arppkt.extract(hdr.inner_arp);transitionaccept;处理内层 ARP 报文Keys:hdr

81、.inner_arp.isValid()Action:set_arp_opcode()Data:arp_op_codesystem_acl 会根据 arp_op_code,进行匹配上传至 CPU 处理。内层为 ND 的 VXLAN 报文处理解析 ICMPv6 报文stateparse_inner_icmppkt.extract(hdr.inner_icmp);transitionaccept;处理内层 ND 报文Keys:hdr.inner_icmp.isValid()Action:set_icmp_type()Data:icmp_typesystem_acl 会根据 icmp_type,进行

82、匹配上传至 CPU 处理。45P4 超融合网关技术白皮书ODCC-2022-0300C内层为数据报文的 VXLAN 报文处理-Ingress对进入转发面的 VXLAN 报文进行匹配并解析内层报文tabledst_vtepkey=lkp.ip_src_addr31:0:exactname(src_addr);lkp.ip_dst_addr31:0:exactname(dst_addr);ig_md.vrf:exact;ig_md.tunnel.type:exact;actions=NoAction;dst_vtep_hit;本地 VNI 映射为本地 VRFactionset_vni_proper

83、ties(switch_vrf_tvrf)ig_md.vrf=vrf;tablevni_to_bd_mappingkey=ig_md.tunnel.id:exact;actions=NoAction;set_vni_properties;解析内层报文:将内层报文提取出来,后续转发逻辑将根据内层报文内容进行根据内层报文,以及控制面下发的跨 VNI 转发路由进行路由匹配,匹配下一跳地址为连接对端的 VXLAN 隧道46P4 超融合网关技术白皮书ODCC-2022-0300C内层为数据报文的 VXLAN 报文处理-Egress根据 INGRESS 阶段输出的下一跳隧道路由索引,修改内层报文 DMAC

84、 以及VNIactionrewrite_l3_with_tunnel_id(mac_addr_tdmac,switch_tunnel_type_ttype,switch_tunnel_id_tid)eg_md.flags.routed=true;hdr.ethernet.dst_addr=dmac;eg_md.bd=SWITCH_BD_DEFAULT_VRF;eg_md.tunnel.type=type;eg_md.tunnel.id=id;tablenexthop_rewritekey=eg_md.nexthop:exact;actions=NoAction;rewrite_l3_with_

85、tunnel_id;后续将内层报文进行封装后,转发,实现 OVERLAY 路由跨 VNI 转发四、四、P4P4 超融网关设计与研发超融网关设计与研发(一)(一)融合场景一:小型云边缘节点网关融合场景一:小型云边缘节点网关1 1背景说明背景说明网络的发展从中心云逐步走近用户侧,从超大数据中心逐步延时出很多小节点云,这些节点规模通常都比较小,通常只有几十台服务器。47P4 超融合网关技术白皮书ODCC-2022-0300C如果单纯复用中心云的方式,引入复杂的网络拓扑和多种独立的网元服务器,会导致过高的网络成本开销,而节点虽小,想要在此之上构建完整的云的服务体系(如各种网元都需要支持 VPC 网元)

86、,则急需一种新的技术方案,来既满足各种功能诉求,又满足低成本的诉求。小规模服务器的节点,通常属于东西向流量较大,流量可能上 TB,但南北流量通常还是在百 GB 的级别,这给将这些网元同时放到一款超融合ServerSwitch 上的可能。同时,通过 P4 灵活的可编程技术,结合 X86,和一些外扩智能网卡,加速卡等技术,通过使用业界 ServerSwitch 硬件载体,可以很好的在一台设备上,同时集多种单体网元于一体,形成小规模节点情况下,云化网络的整体解决方案,同时兼顾功能和成本的问题。2 2概要设计概要设计本场景主要运用 P4 超融合网关技术,在 ServerSwitch 型硬件载体上,同时

87、实现多种网元于一体。整体系统架构如下图所示:图 8 整体系统架构48P4 超融合网关技术白皮书ODCC-2022-0300C其中,分为五个层面:第一层为硬件载体:提供基础硬件环境,包括 P4 可编程交换芯片,X86 体系,以及可以配套传统的网卡,以及按需在 X86 上搭配各种其他 PCIE 卡(如FPGA,智能网卡,加解密卡等),智能网卡可通过光纤连接到交换芯片上。整体提供可覆盖该节点网络整体消耗的硬件资源集合。第二层为可编程芯片技术:该层提供网元服务编排能力,以及 P4SWITCH 交换机,以及多种 P4 网元转发卸载逻辑(由于节点小,每个网元的规模不会很大)。其中网元服务编排为较为重要的部

88、分,主要完成对流量的分发,如决定数据走 SWITCH 交换机逻辑,还是走 SLB 逻辑,还是走 NAT,EVPN,VXLAN,专线等等各种网元逻辑,以及决定数据报文是否送到超融合网关的 SLOWPATH,或者是从前面端口进行转发等等,整体完成所有网元的网络流量编排。第三层为操作系统层:该层主要运行 SONIC 交换机操作系统,结合 P4 技术提供完整的交换机逻辑,以及解决交换机的管理问题。第四层为网元容器层:该层主要在 SONIC 的基础上,以 DOCKER 的方式运行各种网元的控制面或者转发层的 SLOWPATH(P4 为 FASTPATH),在 P4 芯片难以处理的时候,流量通过网卡送到

89、DOCKER 里面来,网卡层面可以通过 SRIOV 或者主流的分流技术,将网络流量直接送到 DOCKER 中,同时在 DOCKER 中运行 DPDK等高性能转发技术,保持 SLOWPATH 的高转发能力。而通过 DOCKER 技术,也可以很好的将多个网元相互隔离,保持各自的独立运行。第五层为业务控制层:该层主要运行在不同的 DOCKER 容器中,独立运行各单体网元的 P4 控制层逻辑,或各类对接云管的管理逻辑。3 3详细设计详细设计P4 超融合网关技术在超融合网关硬件设备载体上,整体细节实现如下:49P4 超融合网关技术白皮书ODCC-2022-0300C其中,对应 P4 转发层面主要为网络编

90、排分发中心,以及各种单体网元卸载技术,简述如下:其中网络编排中心核心的职责是对流量进行打标分类,以及把流量送到不同的单体网元处理。#defineTO_CPU_NIC1_PORT_19w20#defineTO_CPU_NIC2_PORT_29w28#defineTO_PEER_DEV_PORT_19w44#defineTO_PEER_DEV_PORT_29w36#defineTO_PEER_DEV_PORT_39w60#defineTO_PEER_DEV_PORT_49w52#defineTO_CPU_MGT_PORT_19w64#defineTO_CPU_MGT_PORT_29w65#defi

91、neTO_FPGA_PORT_19w66#defineTO_FPGA_PORT_49w67constbitENS_GW_TYPE_NATGW=1;constbitENS_GW_TYPE_EGW=2;50P4 超融合网关技术白皮书ODCC-2022-0300CconstbitENS_GW_TYPE_SESSION_SYNC=3;constbitENS_GW_TYPE_SLBDR=4;constbitENS_GW_TYPE_SLBDNAT=5;constbitENS_GW_TYPE_EIP=6;constbitENS_GW_TYPE_DNAT=7;constbitENS_GW_TYPE_FULLN

92、AT=8;constbitENS_GW_TYPE_FPGA=9;constbitENS_GW_TYPE_NIC=10;.controlFlowDistinguish(inswitch_lookup_fields_tlkp,inoutapp_ingress_metadata_tapp_ig_md)(switch_uint32_tflow_distinguish_table_size=10192)AppEgressPortRedirect()app_egress_port_redirect;actionset_ens_gw(bituser_id,bitflow_type,bitdirection,

93、bitport_mask,bitext_id)app_ig_md.ens_property.user_id=user_id;app_ig_md.ens_property.flow_type=flow_type;51P4 超融合网关技术白皮书ODCC-2022-0300Capp_ig_md.ens_property.direction=direction;/特殊流量标记app_ig_md.ens_property.f_ext_id=ext_id;app_ig_md.ens_property.port_mask=port_mask;app_ig_md.ens_property.to_slowpat

94、h=direction;tableens_flow_matchedkey=app_ig_md.ip_dst_addr_index:ternary;app_ig_md.ip_src_addr_index:ternary;lkp.vni:ternaryname(lkp.ens_vni);lkp.ip_proto:ternary;lkp.l4_dst_port:ternary;lkp.l4_src_port:ternary;app_ig_md.flags.cpu_data_flag:ternary;app_ig_md.flags.smartnic_data_flag:ternaryactions=s

95、et_ens_gw;NoAction;constdefault_action=NoAction;size=flow_distinguish_table_size;52P4 超融合网关技术白皮书ODCC-2022-0300Capplyif(ens_flow_matched.apply().hit)do_gw_forward();elsedo_switch_forward();其中网元首先分为两类,交换机逻辑和网关逻辑。在控制层面通过下发表项,来对网络流量按照网元的不同地址或端口等规划的不同,进行整体流量的划分,从而得到 flow_type,user_id 等等流量标记;在转发层面,match 了

96、相关表项后,流量通过 P4 走不同的处理逻辑。其中 do_switch_forward()为比较通用的 P4 交换机对应的 switch.p4 逻辑。do_gw_forward()主要依据 flow_type,user_id 等等已经计算得到的流量分类,走到不同的网元处理逻辑上,比如如果是 CPU 侧或智能网卡已经处理好的流量,则 do_gw_forward()继续走 switch 逻辑,把流量最终送出;否则会继续走网关逻辑,网关逻辑中,如果 flow_type 为 SLB 的流量,继续走 P4 的 SLB 卸载逻辑,如果没有命中卸载逻辑,则通过 P4 逻辑控制上送到各普通网卡或智能网卡中,原

97、理回归到上述各种 P4 超融合网关的单体网元部分.(二)(二)融合场景二:云计算边缘接入网关融合场景二:云计算边缘接入网关53P4 超融合网关技术白皮书ODCC-2022-0300C1背景说明背景说明腾讯云专线接入(DirectConnect,DC)提供了一种快速安全连接腾讯云与本地数据中心的方法。用户可以通过一条物理专线,一次性打通位于多地域的云计算资源,实现灵活可靠的混合云部署。2概要设计概要设计(1)软件定义路由器软件定义路由器 DSR腾 讯 云 专 线 系 统 是 通 过 自 研 软 件 定 义 路 由 器(DSR,DisaggregatedSoftware-DefinedRouter

98、),实现多租户隔离与高性能接入。DSR 系统架构与组件功能说明如下:54P4 超融合网关技术白皮书ODCC-2022-0300C接入模块(AccessModule):基于商用交换机实现内部云网络和外部对等点之间的互连。对于 overlay 网络,它使用交换机内置的 VLAN 功能实现租户的2 层隔离。VXLAN 隧道用于接入模块和转发模块之间的通信。转发模块(ForwardingModule):转发模块负责使用大型转发表进行高性能数据包处理和路由。它通过 2 层 VXLAN 隧道向路由模块发送 BGP/BFD 消息,并通过云数据中心中自定义的 GRE 隧道转发数据路径流量 VPC。转发模块采用

99、P4 可编程交换机集群构建,支持横向扩展,用于租户隔离与流量转发。路由模块(Routingmodule):路由模块的主要目的是:(i)使用 BGP 通过动态路由与外部对等方(商用设备)互连;(ii)支持大量客户,维护邻居信息;(iii)实现路由信息更新和网络故障时的快速收敛和故障切换。路由模块的内核是自研 BGPspeaker。对于出站流量,控制模块将 VPC 路由馈送至路由模块,路由模块将路由传送至外部对等方。BGP 消息通过 VXLAN 隧道传输,因此它们能够直接在外部对等方和路由模块之间建立 BGP 会话。控制模块(Controlmodule):控制模块充当本地控制器。它存储路由信息,负

100、责优化流量控制计算,转发表项下发转发模块。此外,控制模块还提供分布55P4 超融合网关技术白皮书ODCC-2022-0300C式消息队列,以便在转发模块集群和路由模块集群之间高效地同步动态转发规则。编排器(Orchestrator):编排器充当全局控制器。它负责将操作员的配置请求分发给相应的控制模块。编排器从外部管理系统收集特定的流量调度请求,并将其与控制模块同步。(2)专线系统架构专线系统架构专线接入由物理专线、专用通道和专线网关组成。物理专线:连接腾讯云与本地数据中心的物理线路连接。物理专线支持双线热备接入,双线接入点供电,网络管道完全隔离。专用通道:专用通道是物理专线的网络链路划分。用户

101、可以创建连接至不同专线网关的专用通道,实现本地数据中心与多个私有网络的互联。专线网关:私有网络的专线流量出入口,可以通过接入多个专用通道与多个不同的 IDC 互联。专线网关通过集群方式实现,全路无单点故障风险,满足金融级网络互联要求。P4 卸载转发面网关,在专用通道场景为 vAR(VirtualAccessRouter),在专线网关场景为 vDR(VirtualDatacenterRouter)。P4 转发面网关通过一套硬件流水线同时支持 vAR 与 vDR,控制器通过对转发网关下发不同表项来实现转发行为灵活控制。56P4 超融合网关技术白皮书ODCC-2022-0300C3详细设计详细设计(

102、1)专线网关卸载转发层设计专线网关卸载转发层设计入向隧道映射虚拟路由转发域(VRF)本案例入向隧道报文根据方向不同分为两类:客户 IDC 到 VPC 方向,入向报文为 VXLAN 报文。从 VPC 到客户 IDC 方向,入向报文为腾讯自定义 TGRE 报文。报文解析 parser 阶段识别隧道类型为 VXLAN 或者 TGRE,并提取不同隧道的字段作为查找键值。VXLAN 隧道提取 VNI 作为标识,T-GRE 隧道的 option 字段作为 VPCID 标识。然后根据隧道类型与查找键值查找映射的 VRF 索引。controlVrfMapping(inoutswitch_header_thdr

103、,inoutswitch_ingress_metadata_tig_md)(switch_uint32_ttunnel_to_vrf_table_size,switch_uint32_tvrf_attribute_table_size)actionmap_tunnel_to_vrf(switch_vrf_tvrf,boolurpf)ig_md.vrf=vrf;ig_md.checks.urpf=urpf;actionmap_tunnel_to_vrf_miss()ig_md.pkt_action=PKT_ACTION_DROP;ig_md.drop_reason=SWITCH_DROP_REA

104、SON_TUNNEL_MAPPING_NO_VRF;57P4 超融合网关技术白皮书ODCC-2022-0300Ctabletunnel_to_vrf_tablekey=ig_md.tunnel.type:exact;ig_md.tunnel.key:exact;actions=map_tunnel_to_vrf_miss;map_tunnel_to_vrf;constdefault_action=map_tunnel_to_vrf_miss;size=tunnel_to_vrf_table_size;applyif(ig_md.pkt_action=PKT_ACTION_ACCEPT)tunn

105、el_to_vrf_table.apply();overlay 路由查找Overlay 路由查找支持多租户隔离,核心为将 VRF 索引作为 LPM 查找的输入键值。网关同时支持业务流量与 BGP 协议流量转发,对于 BGP 协议流量 LPM58P4 超融合网关技术白皮书ODCC-2022-0300C查找结果中标识三层转发需要保持 TTL 不变。当业务流量 TTL=1 时,需要将报文上送 CPU,由 CPU 协议面构造并回复源端 overlayICMP 报文controlIPv4Fib(inoutswitch_ingress_metadata_tig_md,inoutingress_intrin

106、sic_metadata_for_tm_tig_intr_md_for_tm)(switch_uint32_tlpm_table_size,switch_uint32_thost_table_size)actionset_lpm_nexthop_index(switch_nexthop_tnexthop_index,boolnottl)ig_md.nexthop=nexthop_index;ig_md.flags.lpm_hit=true;ig_md.flags.nottl=nottl;Alpm(number_partitions=ipv4_lpm_number_partitions,subt

107、rees_per_partition=ipv4_lpm_subtrees_per_partition)algo_lpm;tableipv4_lpmkey=ig_md.vrf:exact;ig_md.lkp.ip_dst_addr:lpm;actions=NoAction;set_lpm_nexthop_index();constdefault_action=NoAction;59P4 超融合网关技术白皮书ODCC-2022-0300Csize=lpm_table_size;implementation=algo_lpm;requires_versioning=false;actionset_h

108、ost_nexthop_index(switch_nexthop_tnexthop_index)ig_md.nexthop=nexthop_index;ig_md.flags.host_hit=true;ig_md.flags.lpm_hit=false;ig_md.flags.nottl=false;applyig_md.flags.lpm_hit=false;ig_md.flags.host_hit=false;ig_md.flags.nottl=false;if(ig_md.pkt_action=PKT_ACTION_ACCEPT)switch(ipv4_lpm.apply().acti

109、on_run)NoAction:default:if(ig_md.flags.nottl=false&ig_md.lkp.ip_ttl=1)ig_md.pkt_action=PKT_ACTION_TO_CPU;60P4 超融合网关技术白皮书ODCC-2022-0300C(3)overlay 路由 ECMP 下一跳选择VPC 到客户 IDC 支持多专线通道接入,到 IDC 方向的路由查找结果为 ECMP多个下一跳。网关根据 overlay 报文的 5 元组(非分片 IP 报文)或者 3 元组(IP 分片)计算哈希值,并基于该哈希值选择下一跳以实现同流保序。controlIPv4Ecmp(inou

110、tswitch_egress_metadata_teg_md)(switch_uint32_tecmp_group_table_size,switch_uint32_tecmp_selection_table_size,switch_uint32_tecmp_max_members_per_group=64)Hash(HashAlgorithm_t.IDENTITY)selector_hash;ActionProfile(ecmp_selection_table_size)ecmp_action_profile;ActionSelector(ecmp_action_profile,select

111、or_hash,SelectorMode_t.FAIR,ecmp_max_members_per_group,ecmp_group_table_size)ecmp_selector;actionset_ecmp_properties(switch_nexthop_tnexthop_index)eg_md.nexthop=nexthop_index;tableecmpkey=61P4 超融合网关技术白皮书ODCC-2022-0300Ceg_md.nexthop:exact;eg_md.inner_five_tuples_hash:selector;actions=defaultonlyNoAct

112、ion;set_ecmp_properties;constdefault_action=NoAction;size=ecmp_group_table_size;implementation=ecmp_selector;applyif(eg_md.pkt_action=PKT_ACTION_ACCEPT)ecmp.apply();(3)路由下一跳隧道封装信息路由下一跳为出向隧道封装信息索引,根据索引查找得到隧道类型,隧道封装标识,隧道外层目的 ID 等信息,并记录在 PHV 中。controlTunnelNexthop(inoutswitch_header_thdr,inoutswitch_eg

113、ress_metadata_teg_md)(switch_uint32_ttunnel_nexthop_table_size)62P4 超融合网关技术白皮书ODCC-2022-0300Cactionencap_vxlan(switch_tunnel_vni_tvni,ipv4_addr_tdst_addr,switch_neighbor_index_tneighbor_index)eg_md.tunnel.type=SWITCH_TUNNEL_TYPE_VXLAN;eg_md.tunnel.key23:0=vni;eg_md.tunnel.dst_addr=dst_addr;eg_md.inn

114、er_neighbor_index=neighbor_index;actionencap_gre(switch_vpc_id_tvpcid,ipv4_addr_tdst_addr)eg_md.tunnel.type=SWITCH_TUNNEL_TYPE_GRE;eg_md.tunnel.gre_type=1;eg_md.tunnel.key=vpcid;eg_md.tunnel.vm_addr=0;eg_md.tunnel.dst_addr=dst_addr;actiondrop_pkt()eg_md.pkt_action=PKT_ACTION_DROP;eg_md.drop_reason=S

115、WITCH_DROP_REASON_NO_NEXTHOP;tabletunnel_nexthopkey=eg_md.nexthop:exact;actions=drop_pkt;encap_vxlan;encap_gre;63P4 超融合网关技术白皮书ODCC-2022-0300Cconstdefault_action=drop_pkt;size=tunnel_nexthop_table_size;applyif(eg_md.pkt_action=PKT_ACTION_ACCEPT&eg_md.flags.nexthop_hit=false)tunnel_nexthop.apply();(3)

116、隧道封装根据隧道类型与隧道标识,对 overlay 报文添加隧道头部controlTunnelEncap(inoutswitch_header_thdr,inoutswitch_egress_metadata_teg_md)()bitpayload_len;actionadd_udp_header(bitsrc_port,bitdst_port)hdr.udp.setValid();hdr.udp.src_port=src_port;hdr.udp.dst_port=dst_port;hdr.udp.checksum=0;actionadd_vxlan_header(bitvni)hdr.vx

117、lan.setValid();64P4 超融合网关技术白皮书ODCC-2022-0300Chdr.vxlan.flags=8w0 x08;/hdr.vxlan.reserved=0;hdr.vxlan.vni=vni;actionadd_gre_header(switch_vpc_id_tvpcid,bitproto)hdr.gre1.setValid();hdr.gre1.C=0;hdr.gre1.R=0;hdr.gre1.K=1;hdr.gre1.S=0;hdr.gre1.s=0;hdr.gre1.recurse=0;hdr.gre1.flags=0;hdr.gre1.version=0;

118、hdr.gre1.protocol=proto;hdr.gre1.vpcid=vpcid;actionadd_ipv4_header(bitproto)hdr.ipv4.setValid();hdr.ipv4.version=4w4;hdr.ipv4.ihl=4w5;/hdr.ipv4.total_len=0;hdr.ipv4.identification=0;hdr.ipv4.ttl=0 xff;hdr.ipv4.flag_rs=0;65P4 超融合网关技术白皮书ODCC-2022-0300Chdr.ipv4.flag_df=0;hdr.ipv4.flag_mf=0;hdr.ipv4.fra

119、g_offset=0;hdr.ipv4.protocol=proto;actioncopy_ipv4_header()/CopyalloftheIPv4headerfields.hdr.inner_ipv4.setValid();hdr.inner_ipv4.version=hdr.ipv4.version;hdr.inner_ipv4.ihl=hdr.ipv4.ihl;hdr.inner_ipv4.diffserv=hdr.ipv4.diffserv;hdr.inner_ipv4.total_len=hdr.ipv4.total_len;hdr.inner_ipv4.identificati

120、on=hdr.ipv4.identification;hdr.inner_ipv4.flag_rs=hdr.ipv4.flag_rs;hdr.inner_ipv4.flag_df=hdr.ipv4.flag_df;hdr.inner_ipv4.flag_mf=hdr.ipv4.flag_mf;hdr.inner_ipv4.frag_offset=hdr.ipv4.frag_offset;hdr.inner_ipv4.ttl=hdr.ipv4.ttl;hdr.inner_ipv4.protocol=hdr.ipv4.protocol;/hdr.inner_ipv4.hdr_checksum=hd

121、r.ipv4.hdr_checksum;hdr.inner_ipv4.src_addr=hdr.ipv4.src_addr;hdr.inner_ipv4.dst_addr=hdr.ipv4.dst_addr;eg_md.inner_ipv4_checksum_update_en=true;actionrewrite_vxlan_inner_ipv4(bitvxlan_port)66P4 超融合网关技术白皮书ODCC-2022-0300C/innerippayload_len=hdr.ipv4.total_len;copy_ipv4_header();/innerethhdr.inner_eth

122、ernet.setValid();hdr.inner_ethernet=hdr.ethernet;/outervxlanadd_vxlan_header(eg_md.tunnel.key23:0);/outerudpadd_udp_header(eg_md.vxlan_src_port_hash,vxlan_port);hdr.udp.length=payload_len+16w30;/UDP(8)+VXLAN(8)+InnerEthernet(14)/outeripadd_ipv4_header(IP_PROTOCOLS_UDP);hdr.ipv4.total_len=payload_len

123、+16w50;/IPv4(20)+UDP(8)+VXLAN(8)+InnerEthernet(14)/outerethhdr.ethernet.ether_type=ETHERTYPE_IPV4;actionrewrite_gre_inner_ipv4()/innerippayload_len=hdr.ipv4.total_len;copy_ipv4_header();/outergre1add_gre_header(eg_md.tunnel.key,GRE_PROTOCOLS_IP);/outerip67P4 超融合网关技术白皮书ODCC-2022-0300Cadd_ipv4_header(

124、IP_PROTOCOLS_GRE);hdr.ipv4.total_len=payload_len+16w28;/IPv4(20)+GRE1(8)/outerethhdr.ethernet.ether_type=ETHERTYPE_IPV4;tabletunnel_encapkey=eg_md.tunnel.type:exact;eg_md.tunnel.gre_type:ternary;hdr.ipv4.isValid():exact;actions=NoAction;rewrite_vxlan_inner_ipv4;rewrite_gre_inner_ipv4;constentries=(S

125、WITCH_TUNNEL_TYPE_VXLAN,_,true,_):rewrite_vxlan_inner_ipv4(UDP_PORT_VXLAN);(SWITCH_TUNNEL_TYPE_GRE,1,true):rewrite_gre_inner_ipv4();constdefault_action=NoAction;68P4 超融合网关技术白皮书ODCC-2022-0300Csize=8;applyif(eg_md.pkt_action=PKT_ACTION_ACCEPT)tunnel_encap.apply();(2)专线网关卸载控制面设计专线网关卸载控制面设计隧道终结表:vxlan+v

126、ni 或者 gre+vpcid-vrfid路由查找表:vrfid+overlay-dest-ip-nexthop_id隧道封装表:nexthop_id-vxlan+vni 或者 gre+vpcid,dest-ip(三)(三)融合场景三:算力调度融合网关融合场景三:算力调度融合网关1 1背景说明背景说明随着 AR/VR、车联网等业务产业化不断推进,边缘算网基础设施正面临着更多挑战,一方面需要提供低时延、高带宽的网络转发能力,另一方面需要提供更强大的计算能力,满足大量的并发业务处理需求。传统的边缘算力基础设施(如 MEC)通常包含分布在不同地域的多台 x86服务器,每台服务器配置大量的 CPU 计

127、算核心处理计算任务,CPU 核心之间通过总线和 L3Cache 进行数据交互。考虑到高速网络处理任务中,Cachemiss 或者 Buscontention 将会导致大量的时延,因此,当服务器处理高速的并发流量时,通常采用“Run-to-Completion”的计算架构,将相同的处理程序运行在每69P4 超融合网关技术白皮书ODCC-2022-0300C个 CPU 核心上,使用网卡的 RSS(Receiver-SideScaling)功能将到达的并发流基于五元组哈希到多个 CPU 核心上。由于流和流之间没有相互依赖,对每一个流的处理都在特定的 CPU 核心上完成,不会造成核间通信,从而具备较高

128、的处理性能。然而,考虑到现实中存在大流、小流的情况,即使 RSS 和哈希函数足够随机均匀,仍然会出现多个大流被哈希到同一个 CPU 核心上导致 CPU 核间负载不均衡的情况,甚至出现单个 CPU 核心被大流打爆的情况。由于一个 CPU 核心上往往会运行大量的并发流处理任务,CPU 核心被打爆会造成大量并发流或租户业务的丢包,从而影响端侧用户的使用体验。考虑到边缘计算的服务器本身计算资源有限,为了避免出现 CPU 被打爆的情况,往往只能将处理负载维持在较低的水平,这又严重的影响了边缘算力节点的最大算力释放。在新型异构算力设施中,除了 x86 多核处理器,往往还包括可编程网络交换芯片(如 Inte

129、lTofinoP4),甚至还包括 FPGA 芯片。利用新型异构算力设施中的网络交换资源,我们设计了面向异构算力设施的新型“Run-to-Completion”计算架构,解决通过 RSS 投送计算任务导致核间负载不均衡的问题,从而更好的提升边缘算力设施的计算效率。2 2概要设计概要设计相比较于传统网卡 RSS 盲目基于五元组哈希的方法,我们希望基于实时算力负载进行更加合理高效的流量调度,为此我们需要掌握异构算力设施内部不同组件上的算力负载。例如,在单个算力节点上,我们可以对多个 CPU 的算力使用情况进行感知,并反馈给多核 CPU 前端的调度模块(例如网卡的 RSS 模块或异构算力设备中的可编程

130、交换芯片),由调度模块实现自适应的计算任务向特定 CPU 核心的投放,进而实现核间算力的负载均衡。考虑到常规的网卡并不具备可编程能力,只能被动的执行 RSS 功能,而在新型的算网融合设备中,可编程交换芯片恰好能够70P4 超融合网关技术白皮书ODCC-2022-0300C充当原来网卡的流量投放角色,从而更加精确的将流量或计算任务投放到最适合处理的 CPU 核上,由此实现基于 CPU 算力使用情况的闭环负载均衡。3 3详细设计详细设计可编程交换芯片赋予了异构设施更加强大的转发能力,因此,我们用 P4 语言在可编程交换芯片中实现了算力调度功能,对于大规模的待处理业务流,我们的流量调度框架可以在维护

131、流一致性的前提下尽力均衡处理器的负载。为了获得硬件设备的实时算力,可编程交换芯片需要主动获取异构算力设施上的 CPU 负载,并在芯片内部根据各个 CPU 核的实时算力做出合适的数据包转发行为,对于新到的业务流,交换芯片判断其为新流并查找最适合处理该计算任务的 CPU,并将此任务投送到对应的 CPU 核心上。在考虑流量传输的一致性时,我们选择带状态的处理方式,因为无状态的 FlowAffinity 保证需要在客户端对流量加以处理,不适合我们的算力调度融合网关,所以对于已经确定投送的计算任务,我们通过采用带状态的方法去实时保证 FlowAffinity,记录正在处理的任务及其投送的 CPU 核的状

132、态,后续数据包可以根据此状态中找到投送的 CPU,以此维护流量传输的一致性。在设计过程中同时考虑到了负载感知开销,排队时延,处理时延等影响因素,可以在让网关的转发能力得到极大提升。五、五、P4P4 超融网关测试方案超融网关测试方案(一)(一)测试方案测试方案P4 超融合网关可以帮助网元设备和系统达到最佳的灵活性和性能的平衡:P4 编程为设备提供灵活性,支持 Cloud 上不同类型的业务。ASIC 芯片提供线速级别的性能。本文介绍一种 P4 超融合网关的测试方案,能够同时测试这两个方面。71P4 超融合网关技术白皮书ODCC-2022-0300C测试方案分为业务功能,基准性能,综合性能和业务性能

133、四个部分。1 1业务流程测试业务流程测试测试例 1.1业务流程测试测试目的验证 P4 编程实现的业务流程测试拓扑测试步骤测试仪编辑源业务报文并发送给被测设备。在测试仪的接收端接收报文并解码以上测试步骤,根据网元类型,覆盖不同的业务类型和业务路径。比如 VPC 内部通信,同租户 VPC 间通信,异租户通信,VPC 与互联网通信等路径。预期结果测试仪接收端能接收到报文解码验证测试报文经过的处理与预期相符。2 2基准性能测试基准性能测试测试例 2.1吞吐量测试测试目的验证网元设备的吞吐量测试拓扑测试步骤测试仪表模拟一路业务,采用 IPv4/UDP 封装。按照 RFC2544 吞吐量测试流量,用二分法

134、测试 88 字节,128 字节,256 字节,1024 字节,1518 字节和 9000 字节的吞吐量。记录吞吐量(bps 和 pps)72P4 超融合网关技术白皮书ODCC-2022-0300C测试仪表模拟一路业务,采用 IPv6/UDP 封装重复步骤 2-3.测 试 仪 模 拟 一 路 IPv4 业 务 和 一 路 IPv6 业 务,分 别 采 用IPv4/UDP 封装和 IPv6/UDP 封装。IPv4:IPv6 为 3:1.重复步骤 2-3.预期结果吞吐量IPv4IPv6IPv4&IPv6bpsppsbpsppsbps88 字节128 字节256 字节1024 字节1518 字节900

135、0 字节测试例2.2时延测试测试目的验证网元设备的时延测试拓扑测试步骤测试仪表模拟一路业务,采用 IPv4/UDP 封装。分别以线速率的 10%,50%和吞吐量的 90%,测试 88 字节,128 字节,256 字节,1024 字节,1518 字节和 9000 字节的平均时延和最大时延。记录平均时延和最大时延测试仪表模拟一路业务,采用 IPv6/UDP 封装73P4 超融合网关技术白皮书ODCC-2022-0300C重复步骤 2-3.测试仪模拟一路 IPv4 业务和一路 IPv6 业务,分别采用 IPv4/UDP 封装和IPv6/UDP 封装。IPv4:IPv6 为 3:1.重复步骤 2-3.

136、预期结果时延负载IPv4IPv6IPv4&IPv6平均时延最大时延平均时延最大时延平均时延最大时延88 字节10%50%90%吞吐量128 字节10%50%90%吞吐量256 字节10%50%90%吞吐量1024 字节10%50%90%吞吐量1518 字节10%50%90%吞吐量9000 字节10%50%90%吞吐量74P4 超融合网关技术白皮书ODCC-2022-0300C3 3综合性能测试综合性能测试测试例 3.1综合性能测试测试目的可编程网元的设计,需要考虑综合应用场景下的众多因素,存在性能和设计的妥协,这个测试项目的是考察下列设计和算法实现对性能的影响:负载均衡多链路,Cluster

137、中多节点,芯片中并行处理TCAM,SRAM,DRAM 多级表命中率哈希冲突处理IPv6 超长地址表项处理这个测试项目对上述问题做定量分析测试拓扑测试步骤建模网元的应用规模,设 IPv4 虚机数量为 m,IPv6 虚机数量为 n,服务器数量为 x,VNI 数量为 y,根据应用规模建立模型测试仪模拟对应规模数量的 IPv4 虚机,IPv6 虚机,主机以及 VNI,所有仿真地址和 VNI 按照随机模型或者应用场景内分布模型实现。虚机通信模型按比例覆盖 VPC 内部通信,同租户 VPC 间通信,异租户通信,VPC 与互联网通信。测试负载设置:根据 8/2 原则,选择 20%的仿真虚机产生 80%的总负

138、载,80%的仿真虚机产生 20%的负载。测试帧长设置:根据应用场景选择典型帧长或者混合帧长测试。测试带宽:总带宽的 90%。75P4 超融合网关技术白皮书ODCC-2022-0300C测试时间:60minutes 或者以上。记录丢包率,最大时延和平均时延。预期结果仿真模型/测试配置说明丢包率最大时延平均时延4 4业务性能测试业务性能测试测试例 4.1业务性能测试测试目的测试例 3.1 中队下列设计和算法实现对性能的影响进行定量分析:负载均衡多链路,Cluster 中多节点,芯片中并行处理TCAM,SRAM,DRAM 多级表命中率哈希冲突处理IPv6 超长地址表项处理上述设计上在传输层面的性能,

139、对 TCP 和 UDP 不同应用层上的放大因子是不同的。本测试例用基于状态的业务流量定性分析性能。测试拓扑测试步骤建模网元的应用规模,设 IPv4 虚机数量为 m,IPv6 虚机数量为 n,服务器数量为 x,VNI 数量为 y,根据应用规模建立模型测试仪模拟对应规模数量的 IPv4 虚机,IPv6 虚机,主机以及 VNI,所有仿真地址和 VNI 按照随机模型或者应用场景内分布模型实现。虚机通信模型按比例覆盖 VPC 内部通信,同租户 VPC 间通信,异租户通信,VPC 与互联网通信。业务选择:根据应用场景选择真实业务类型,比如 HTTP,HTTPs,QUIC,视频,存储等等,按比率配置。测试负

140、载设置:根据 8/2 原则,选择 20%的仿真虚机产生 80%的总负载,76P4 超融合网关技术白皮书ODCC-2022-0300C80%的仿真虚机产生 20%的负载。测试负载:总负载的 90%。测试时间:60minutes 或者以上。记录有效带宽,业务失败率以及业务平均和最大响应时间预期结果仿真模型/测试配置说明有效带宽业 务 失败率平均响应时间最大响应时间六、六、P4P4 超融网关通道设计超融网关通道设计 PINSPINS控制层向转发层下发数据的过程,可能会调用 P4 芯片厂商提供的SDKRUNTIMEAPI 直接下发表项,也可能会通过扩展 SONIC 的网络操作系统的 SAI接口实现。本

141、部分介绍的是一种当超融合网关融合了 SONIC 交换网元和其他的网元时,可以通过 PINS 整体设计统一芯片表项下发通道的问题。(一)(一)PINSPINS 整体背景介绍整体背景介绍PINS(P4IntegratedNetworkStack)是一项行业协作的开源项目,目的是为了给传统的路由设备注入 P4 可编程能力和 SDN 功能。具体来说,该项目使用P4 对 SAI 流水线进行建模,为流水线添加可编程扩展,并引入 P4Runtime 作为新的控制平面接口来控制流水线。在这个开源项目中,英特尔、谷歌和 ONF 对架构和代码做出了初步贡献。Intel 主要贡献于 SAIP4 扩展,下面将详细介绍

142、。(二)(二)SONICSONIC 交换机网元介绍交换机网元介绍SONiC(SoftwareforOpenNetworkingintheCloud)是一个基于 Linux 的开源网络操作系统,由微软和 OpenComputeProject 共同开发。SONiC 包括功能齐全的 L3 设备所需的网络软件组件,旨在满足云数据中心的要求。它允许云运营商跨来自不同交换机供应商的硬件共享相同的软件堆栈。77P4 超融合网关技术白皮书ODCC-2022-0300C由于以下原因,SONIC 现在被云运营商广泛采用:将软件与硬件分离;开源;与芯片无关的统一 SAI 和平台 API;充满活力的生态系统.图 9

143、SONIC 架构SAIextensions1是 SONIC 中引入的新功能,以允许创新并提高 SAI 本地网络管道中新增功能的速度。当前的 SAI 扩展有一堆描述硬件表的属性,并且可能需要为每个新的 HW 表创建一个新的头文件,因此可扩展性不是很好。问题:如何灵活支持在具有固定 SAIAPI 的可编程数据平面上运行的创新网络功能?PINS 介绍PINS 本质上在 SONIC 中添加了 SDN 功能,以允许可编程开关中的远程SAIobjects。通过启用 SAIobject 的 runtimecontrol 和支持添加新的非SAIobject,PINS 使得 SDN 控制器可以用标准方式参与 S

144、ONIC 生态系统,以控制管理 SONICp4 交换机。1CurrentSAIextensionhttps:/ 超融合网关技术白皮书ODCC-2022-0300CPINS 是一个开源项目。P4 程序、P4RT 应用服务器、从 P4RT 转换为 SAI 的orchagent 代码、验证框架以及任何 P4 扩展都将开源。交换机管道的用户和供应商特定方面被清晰地分为扩展表和可配置表。P4 程序对 SAI 转发 pipeline 进行了建模,而 P4RT 接口也广为 SONiC/SAI的使用者所熟悉和接纳。P4RT 接口提供了基本的网络功能(L2 桥接、L3 路由、ACL 等),使用户能够快速了解如何

145、使用这个新 API。(三)(三)PINSPINS 系统架构系统架构SONiC 被结构化为各种容器,这些容器通过共享的 Redis 实例,并且通过多个逻辑数据库来进行通信。为了添加 SDN 支持,PINS 在 SONiC 系统中引入了一些新组件:P4RT:从控制器接收 P4 编程请求并将请求编程到 APPLDB 的应用程序P4RTtables:定义 P4 编程请求的新 APPLDB 表P4Orch:一个新的 Orch,将 P4RT 表从 APPLDB 编程到 ASICDB。它还向 P4RT发送响应通知并管理 APPLSTATEDBAPPLSTATEDB:用于应用程序查询系统状态的新 DB。它具有

146、与 APPLDB 相同的模式SAIP4Extension:描述新增的 tables 和 metadata79P4 超融合网关技术白皮书ODCC-2022-0300C图 10 PINSArchitecture(四)(四)P4RTservicecontainerP4RTservicecontainerP4RT 应用程序在自己的容器中运行,并支持多个 gRPC 客户端会话。应用程序负责解析来自其客户端的请求,验证它们并将内容写入 APPLDB 中的新P4table,并通知客户端最终成功/失败的意图。P4RT 应用程序还支持来自其客户端的读取请求。读取请求向客户端提供交换机的当前状态信息。补充文件中提

147、供了有关 P4RT 应用程序的更多详细信息:P4RTApplication.1 1P4RTTables(newinAPP/CONFIGDB)P4RTTables(newinAPP/CONFIGDB)这是 P4RT 应用程序和 P4RTOrch 代理之间的接口。在 SONiC 中,与 ASICDB 表相比,APPLDB 包含上层的编程细节。与传统的SONiC 应用程序不同,SDN 控制器提供底层细节,大多数现有的 APPLDB 表都不支持这样的详细编程级别。为了克服这个限制,PINS 体系结构定义了称为 P4RT表的新 APPL_DB 表,它允许更详细的定义。P4RT 应用程序写入这些表。P4R

148、TOrchagent 使用这些表。2 2P4ORCH(newinSWSScontainer)P4ORCH(newinSWSScontainer)80P4 超融合网关技术白皮书ODCC-2022-0300CP4Orchagent(P4Orch)处理由 P4RT 应用程序添加到 APPLDB 中的新 P4 表的条目,解析它们,然后创建必要的 SAI 对象并将它们作为条目添加到 ASICDB。P4Orch 创建的 SAI 对象可以引用其他 orchagent 创建的 SAI 对象。在这些情况下,P4Orch 将与相应的 orchagent 交互以引用这些对象并在必要时增加引用计数器。3 3APPLS

149、tateDBandResponseMessageAPPLStateDBandResponseMessagePINS 引入了应用程序级响应的概念。SONiC 目前支持 SWSS 和 SYNCD 容器之间的同步通信。PINS 将同步通信扩展到应用程序。大多数 SDN 控制器需要确认每个编程请求的成功或失败。控制器的后续编程取决于响应。SDN 控制器是智能的,可以快速适应故障。如果其中一个开关发生故障,控制器可以利用其他开关来实现其目标。控制器需要来自开关的状态信息来快速识别任何故障。这是通过添加应用程序级响应和状态来实现的。4 4SAI-P4-extension(newinASICDB)SAI-P

150、4-extension(newinASICDB)IntelisworkingonIntelisworkingonthisthis第一版 SAI-P4-ext 提案于 2021 年 10 月提交(byIntel2)。SAIP4扩 展 引 入 了object_type_oid的 单 个 新SAI对 象SAI_OBJECT_TYPE_P4EXT_ENTRY。该对象及其属性提供了目标特定可配置特征的抽象,否则 SAI 中未通过匹配动作范式以与特征无关的方式进行描述。与其他SAI 对象 1:1 映射到 SAI 管道网络对象模型中的实体相比,例如 VLAN、邻居、镜像等;SAIP4Extensions 引

151、入了 SAI_OBJECT_TYPE_P4EXT_ENTRY 对象和小众特征 Feature1、Feature2 等之间的 1:N 映射。这种新范式支持以下特征:能够添 加 独 家 功 能;能 够 展 现 设 备 特 定 能 力;快 速 应 用 原 型。由 于P4extentionobject 与其他 SAIobject 模型相似,从 SAIP4extentionCRUDAPI2https:/ 超融合网关技术白皮书ODCC-2022-0300C迁移到 SAI 功能/对象特定 CRUDAPI 的新功能被社区广泛接受带有 SAIP4 扩展表的 SAI 管道的高层视图如下所示。图 11 SAIpip

152、eline新的头文件 saip4ext.h 为 P4EXT_ENTRY 类型的单个对象定义了接口。这个新对象模仿 P4 表实体。sai_p4ext_entry_attr_t 定义 SAIP4 扩展属性。对象的属性定义了各种表结构,例如表名、匹配键、动作名称和动作参数。这些属性中的每一个都被定义为字符串类型。对于与 P4 兼容的 SAI 实现,这些字符串可以简单地设置为相应的 P4 表结构。对于不在 P4 中表达其管道的 SAI 实现,可以实现一个映射库以通过一些转换逻辑将 P4 扩展 SAIAPI 调用映射到相应的驱动程序 API。这种转换可以是静态的,在这种情况下,SAI 重新编译将成为实现

153、新功能所必需的,也可以是动态的。向最终用户公开有关表格、匹配字段、操作等信息的确切机制则是由运行P4 的目标设备的 P4 编译器来生成。SAIP4EXTEntryAttributes/*briefAttributeIdforP4ext*/typedefenum_sai_p4ext_entry_attr_t/*82P4 超融合网关技术白皮书ODCC-2022-0300C*briefStartofattributes*/SAI_P4EXT_ENTRY_ATTR_START,/*briefSAIP4EXTtableid*typesai_s8_list_t*flagsCREATE_AND_SET*de

154、faultempty*/SAI_P4EXT_ENTRY_ATTR_TABLE_ID=SAI_P4EXT_ENTRY_ATTR_START,/*briefSAIP4EXTMatchfield*typesai_s8_list_t*flagsCREATE_AND_SET*defaultempty*/SAI_P4EXT_ENTRY_ATTR_MATCH_FIELD_ID,/*briefSAIP4EXTActionid*83P4 超融合网关技术白皮书ODCC-2022-0300C*typesai_s8_list_t*flagsCREATE_AND_SET*defaultempty*/SAI_P4EXT_

155、ENTRY_ATTR_ACTION_ID,/*briefSAIP4EXTActionparameters*typesai_s8_list_t*flagsCREATE_AND_SET*defaultempty*/SAI_P4EXT_ENTRY_ATTR_PARAMETER_ID,/*briefEndofattributes*/SAI_P4EXT_ENTRY_ATTR_END,/*Customrangebasevalue*/SAI_P4EXT_ENTRY_ATTR_CUSTOM_RANGE_START=0 x10000000,/*Endofcustomrangebase*/SAI_P4EXT_EN

156、TRY_ATTR_CUSTOM_RANGE_END84P4 超融合网关技术白皮书ODCC-2022-0300Csai_p4ext_entry_attr_t;SAIExtensionAPI/*briefCreateanP4tableentry*paramoutp4ext_entry_idTheP4tableid*paraminswitch_idTheSwitchObjectid*paraminattr_countNumberofattributes*paraminattr_listArrayofattributes*return#SAI_STATUS_SUCCESSonsuccess,failu

157、restatuscodeonerror*/typedefsai_status_t(*sai_create_p4ext_entry_fn)(_Out_sai_object_id_t*p4ext_entry_id,_In_sai_object_id_tswitch_id,_In_uint32_tattr_count,_In_constsai_attribute_t*attr_list);/*briefDeleteanP4entry*paraminp4ext_entry_idTheP4tableid*85P4 超融合网关技术白皮书ODCC-2022-0300C*return#SAI_STATUS_S

158、UCCESSonsuccess,failurestatuscodeonerror*/typedefsai_status_t(*sai_remove_p4ext_entry_fn)(_In_sai_object_id_tp4ext_entry_id);/*briefSetP4Tableentryattribute*paraminp4ext_entry_idTheP4tableid*paraminattrAttribute*return#SAI_STATUS_SUCCESSonsuccess,failurestatuscodeonerror*/typedefsai_status_t(*sai_se

159、t_p4ext_entry_attribute_fn)(_In_sai_object_id_tp4ext_entry_id,_In_constsai_attribute_t*attr);/*briefGetP4entryattribute*paraminp4ext_entry_idP4tableid*paraminattr_countNumberofattributes*paraminoutattr_listArrayofattributes*return#SAI_STATUS_SUCCESSonsuccess,failurestatuscodeonerror86P4 超融合网关技术白皮书OD

160、CC-2022-0300C*/typedefsai_status_t(*sai_get_p4ext_entry_attribute_fn)(_In_sai_object_id_tp4ext_entry_id,_In_uint32_tattr_count,_Inout_sai_attribute_t*attr_list);在当前的 SAIP4 扩展提案中,新引入的 SAI_OBJECT_TYPE_P4EXT_ENTRY 将与 SAI 管道对象图保持断开连接。换句话说,从/到其他 SAI 对象与SAI_OBJECT_TYPE_P4EXT_ENTRY 之间不会有依赖关系。此外,该提案对新功能/表在

161、SAI 管道中的相对位置没有任何限制。社区普遍同意这样的通用扩展。英特尔正在开发第二个版本来解决分歧的技术点,并将很快上传到开源社区。(五)(五)PINSPINS 安装路由示例安装路由示例P4 信息从 SDN 控制器以 gRPC 写入的形式传入,然后被新添加的 P4RT 容器拦截。在此示例中,我们正在安装到下一跳的路由。匹配键为 vrf-id 和 IPv4目的地址,动作参数为 nexhopids1。控制器发送的此信息被转换为应用程序 DB表示。Orchagent 接受这个并将这个 nexthops1 转换为 oid,并且 vrf-id 也被转换为 vrf 的 oid,这发生在 P4Orch 与

162、 vrf-orchagent 交谈时。因此它依赖于其他 orchagents 来解决这些依赖关系并将这些条目添加到 ASICDB 中。响应在应用程序状态 DB 中标记。SAIAPI 成功调用被写入 ASICDB,并由Orchagent 传播到 APP 状态 DB,后者将其作为响应状态的一部分传播给客户端。87P4 超融合网关技术白皮书ODCC-2022-0300C图 12 路由安装例子(六)(六)PINSPINS 的使用用例的使用用例许多软件定义的网络用例都可以通过 PINS 实现,例如服务器负载均衡、防火墙网络扩展、数据平面遥测、不等价多路径扩展等。以服务器负载均衡扩展为例。控制平面可以通过

163、 P4runtime 远程管理 L4LB表,远程管理 VIP-DIP 映射连接表。而带有 BGPspeaker 的 localSONIC 例程则继续完成现有的 SONIC 功能,向物理交换机发布 VIPaddress。图 13 L4LExample(七)(七)PINSPINS 总结总结88P4 超融合网关技术白皮书ODCC-2022-0300CPINS 允许 SDN 控制器以标准方式参与 SONiC 生态系统,以控制正在运行的SONiC 交换机,同时受益于开放和对芯片没有依赖的的标准开放 P4RTAPI,以实现可编程转发平面的运行时控制。七、七、结语结语P4 超融合网关技术已成为业界广泛使用的网络软硬一体技术,在各大公司均有多种应用部署,承担重要的角色。尤其在接下来各交换芯片和智能网卡继续快速发展的过程中,更多支持 P4 的可编程芯片会越来会多,而 P4 超融合网关技术可以较好的将各种软硬件优势协同在一起,具有广阔的应用场景。P4 超融合网关技术白皮书希望能够引发更多同仁的共鸣,促进 P4 可编程生态的健康发展。同时抛砖引玉,欢迎更多同仁一起来创建更多创新的应用。由于作者时间和水平有限,文中内容不免有不足和错误,恳请各位读者朋友和行业专家指正并不吝赐教!

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(ODCC:P4超融合网关技术白皮书(2022)(97页).pdf)为本站 (小时候) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
客服
商务合作
小程序
服务号
会员动态
会员动态 会员动态:

 133**67...  升级为至尊VIP wei**n_...  升级为至尊VIP 

柯平 升级为高级VIP  shi**ey... 升级为高级VIP 

153**71... 升级为至尊VIP    132**42... 升级为高级VIP

 wei**n_... 升级为至尊VIP  178**35... 升级为至尊VIP

wei**n_... 升级为高级VIP wei**n_... 升级为至尊VIP  

 wei**n_...  升级为高级VIP   wei**n_... 升级为高级VIP

133**95... 升级为高级VIP 188**50...  升级为高级VIP

138**47...  升级为高级VIP 187**70...  升级为高级VIP 

 Tom**12... 升级为至尊VIP  微**... 升级为至尊VIP

 wei**n_... 升级为至尊VIP  156**93... 升级为至尊VIP

wei**n_... 升级为高级VIP  wei**n_... 升级为至尊VIP

wei**n_...  升级为标准VIP 小敏  升级为高级VIP

 hak**a9... 升级为至尊VIP    185**56... 升级为高级VIP

 156**93...  升级为标准VIP wei**n_...   升级为至尊VIP

 wei**n_... 升级为至尊VIP Br**e有... 升级为至尊VIP

 wei**n_... 升级为标准VIP   wei**n_... 升级为高级VIP 

wei**n_... 升级为至尊VIP  156**20... 升级为至尊VIP

 wei**n_... 升级为至尊VIP 微**... 升级为标准VIP  

135**45...  升级为标准VIP wei**n_...  升级为至尊VIP

 wei**n_... 升级为高级VIP  157**60... 升级为高级VIP

150**45...  升级为至尊VIP wei**n_...  升级为标准VIP 

wei**n_...   升级为至尊VIP 151**80...  升级为高级VIP

135**10...  升级为标准VIP  wei**n_...  升级为高级VIP

 wei**n_... 升级为高级VIP  wei**n_... 升级为至尊VIP 

wei**n_...  升级为标准VIP wei**n_...  升级为高级VIP

wei**n_...  升级为高级VIP 135**22...  升级为高级VIP

wei**n_...  升级为至尊VIP   181**62...  升级为至尊VIP

黑**...  升级为至尊VIP wei**n_...  升级为至尊VIP 

178**61...  升级为高级VIP   186**20...  升级为高级VIP

wei**n_... 升级为标准VIP   wei**n_... 升级为高级VIP 

 wei**n_... 升级为标准VIP wei**n_... 升级为至尊VIP

wei**n_... 升级为标准VIP  152**94... 升级为高级VIP

 wei**n_... 升级为标准VIP wei**n_...  升级为标准VIP

185**27... 升级为标准VIP   135**37... 升级为至尊VIP

 159**71... 升级为高级VIP  139**27... 升级为至尊VIP

wei**n_... 升级为高级VIP wei**n_... 升级为高级VIP

188**66...  升级为标准VIP wei**n_... 升级为至尊VIP 

wei**n_...   升级为高级VIP  wei**n_... 升级为至尊VIP

 wei**n_... 升级为高级VIP   wei**n_... 升级为高级VIP 

wei**n_...   升级为至尊VIP 177**81...  升级为标准VIP

185**22...  升级为标准VIP   138**26... 升级为至尊VIP

军歌  升级为至尊VIP   159**75... 升级为至尊VIP

wei**n_...  升级为标准VIP  wei**n_... 升级为至尊VIP 

wei**n_...  升级为高级VIP su2**62... 升级为至尊VIP 

 wei**n_... 升级为至尊VIP  wei**n_... 升级为至尊VIP 

 186**35... 升级为高级VIP 186**21...  升级为标准VIP

 wei**n_... 升级为标准VIP wei**n_...  升级为标准VIP

wei**n_... 升级为标准VIP  137**40...  升级为至尊VIP

 wei**n_... 升级为至尊VIP 186**37... 升级为至尊VIP 

 177**05... 升级为至尊VIP  wei**n_...  升级为高级VIP