CN117014501A - 基于可编程交换机的无状态SRv6服务链代理方法及系统 - Google Patents
基于可编程交换机的无状态SRv6服务链代理方法及系统 Download PDFInfo
- Publication number
- CN117014501A CN117014501A CN202210469576.7A CN202210469576A CN117014501A CN 117014501 A CN117014501 A CN 117014501A CN 202210469576 A CN202210469576 A CN 202210469576A CN 117014501 A CN117014501 A CN 117014501A
- Authority
- CN
- China
- Prior art keywords
- srv
- data packet
- service
- service chain
- segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000013507 mapping Methods 0.000 claims abstract description 24
- 230000006870 function Effects 0.000 claims description 60
- 230000011218 segmentation Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于可编程交换机的无状态SRv6服务链方法及系统。所述方法将SRv6服务链信息作为“标签”携带到数据包中,并基于SRv6分段标签到服务功能编号的映射表,对SRv6服务链信息进行了压缩。本发明在可编程交换机的数据平面上实现了无状态的SRv6服务链代理,且在可编程交换机的数据平面采用了流水线的设计架构,保证了其可以线速地进行数据包处理,实现了一个高性能的SRv6服务链代理方案。
Description
技术领域
本发明设计了一种基于可编程交换机的无状态SRv6服务链方法及系统,属于计算机网络领域。
背景技术
如今,服务链技术已经成为云网络和ISP(Internet Service Provider,互联网服务提供商)网络中按需对数据报文进行处理的重要手段。服务链技术是指数据报文按照一定的顺序经过一系列服务功能(如入侵检测系统、负载均衡、防火墙等)的处理,以达到安全防护、服务优化等目的。
在服务链的不同实现方案中,基于SRv6的服务链与物理拓扑解耦、支持在服务功能之间传递元数据,具有更高的灵活性;同时不需要在中间节点维护转发状态、支持在IPv6网络中平滑升级,部署复杂度更低,是实现服务链的最佳方案。
虽然网络设备和网络服务功能对SRv6的支持能力在逐渐提升,但目前大部分网络服务功能还没有实现对SRv6服务链这样高级功能的支持。对于还未支持SRv6服务链功能的传统网络服务节点,还需要引入服务链代理。服务链代理主要完成的工作如下:
·当数据包到达服务链代理时,服务链代理将数据包的服务链封装进行剥离,并在本地进行缓存,然后将数据包转发至相应的网络服务功能进行业务处理;
·当数据包从网络服务功能返回时,再将缓存的服务链封装信息重新添加回数据包当中,·继续执行后续的数据包处理流程。
然而,目前已有的SRv6代理方案中无论是基于Linux内核扩展实现的SRv6服务链代理还是基于开源软件VPP实现的SRv6服务链代理性能表现都不是很好,这在很大程度上限制了SRv6服务链的大规模部署。可编程交换机具有高吞吐(Tbps级)、低延迟(ns级)的高处理性能,并且具有数据平面的可编程性,在网络性能提升工作中得到了广泛应用,成为提升服务链代理性能的最佳选择。
目前已有的SRv6服务链代理方案可以分为两类:有状态的SRv6代理和无状态的SRv6代理。
其中,将有状态的SRv6代理卸载到可编程交换机上实现服务链的加速面临如下挑战:(1)状态更新。可编程交换机中任意的表项更新都需要控制平面的参与,而控制平面相对于数据平面处理较慢,因此服务链代理中频繁的表项更新会严重影响可编程交换机的性能表现;(2)状态存储。SRv6代理中状态的存储需要占用可编程交换机上大量的存储空间,而可编程交换机上的存储空间是十分有限的。这些原因也说明了并不适合将有状态的SRv6服务链代理卸载到可编程交换机上。
此外,目前已有的无状态SRv6伪装代理方案是通过将IPv6数据包的目的地址设置为SRH扩展报文头的最后一个标签,即最终的目的地址,这样作为中间传输节点的服务功能节点就不会检查或处理路由扩展报文头,达到“伪装”的目的。虽然这种方式适合在可编程交换机上实现,但是却只能为IPv6数据包提供代理服务,而且不能为最后一跳的服务功能节点提供代理服务,应用场景受限比较大。
发明内容
为了解决SRv6服务链代理性能表现欠佳的问题,本发明提出了一种基于可编程交换机的无状态SRv6服务链方法及系统,可以充分发挥可编程交换机的性能优势,在数据平面实现高性能的SRv6代理。本发明主要适用于SRv6服务链中为不支持SRv6服务链功能的传统服务功能提供代理服务。
为了达到上述目的,本发明的技术方案如下:
一种基于可编程交换机的无状态SRv6服务链代理方法,应用于SRv6服务链代理节点,所述方法包括:
接收服务链中的第一SRv6数据包;
基于SRv6分段标签到服务功能编号的映射表,实现第一SRv6数据包中的SRv6服务链信息的压缩,并修改指示下一跳分段标签位置的指针偏移,其中每一所述SRv6服务链信息对应一或多个的所述SRv6分段标签;
将压缩后的所述SRv6服务链信息封装到所述第一SRv6数据包中,并移除SRv6报文头,得到服务功能节点所需的第一数据包;
将所述第一数据包转发至服务功能节点;
和,
接收服务功能节点发送的第二数据包;
根据所述第二数据包携带的服务链信息,查询服务功能编号到分段标签的映射表,得到分段标签;
还原SRv6数据包的报文头,并结合所述分段标签,得到第二SRv6数据包;
将所述第二SRv6数据包发送到服务链中的转发节点。
进一步地,所述SRv6服务链信息包括:分段标签列表、下一跳分段标签位置索引和分段标签总数。
进一步地,所述将所述SRv6服务链信息封装到所述SRv6数据包中,包括:
使用源mac地址和目的mac地址携带分段标签列表;
利用IPv4数据报文中的DSF字段或者IPv6数据报文中的TC字段保存下一跳分段标签的位置索引和分段标签总数。
进一步地,所述根据所述第二数据包携带的服务链信息,查询服务功能编号到分段标签的映射表,得到分段标签,包括:
将所述服务功能编号到分段标签的映射表拆分为若干个服务功能编号到分段标签的子映射表;
根据所述第二数据包携带的服务链信息,查询服务功能编号到分段标签的子映射表,得到分段标签。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述基于可编程交换机的无状态SRv6服务链代理方法。
一种电子装置,所述电子装置包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行,以实现上述基于可编程交换机的无状态SRv6服务链代理方法。
一种基于可编程交换机的无状态SRv6服务链代理系统,包括:
SRv6服务链代理节点,用于接收服务链中的第一SRv6数据包;基于SRv6分段标签到服务功能编号的映射表,实现第一SRv6数据包中的SRv6服务链信息的压缩,并修改指示下一跳分段标签位置的指针偏移,其中每一所述SRv6服务链信息对应一或多个的所述SRv6分段标签;将所述压缩后的SRv6服务链信息封装到所述第一SRv6数据包中,并移除SRv6报文头,得到服务功能节点所需的第一数据包;将所述第一数据包转发至服务功能节点;和,接收服务功能节点发送的第二数据包;根据所述第二数据包携带的服务链信息,查询服务功能编号到分段标签的映射表,得到分段标签;还原SRv6数据包的报文头,并结合所述分段标签,得到第二SRv6数据包;将所述第二SRv6数据包发送到服务链中的转发节点;
服务应用,用于向SRv6服务链代理节点发送的第二数据包,所述第二数据包包含SRv6服务链信息;对SRv6服务链代理节点发送的第一数据包提供服务;
转发节点,用于将服务链中的第一SRv6数据包转发给SRv6服务链代理节点;对SRv6服务链代理节点发送的第二SRv6数据包进行转发。
进一步地,所述系统还包括:服务链分类器,所述服务链分类器用于按照分类规则对经过的数据包添加服务链封装信息,并将符合不同分类规则的数据包会被导流进入不同的业务处理路径。
现有技术相比,本发明在可编程交换机的数据平面上实现了无状态的SRv6服务链代理,而可编程交换机的数据平面采用了流水线的设计架构,保证了其可以线速地进行数据包处理,从而实现了一个高性能的SRv6服务链代理方案。
附图说明
图1为服务链代理部署架构图。
图2为基于可编程交换机的无状态SRv6服务链代理中的数据包处理流程图。
图3为SRv6报文头格式图。
具体实施方式
下面将结合附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明特定实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
本发明中服务链代理的部署架构图如图1所示,服务链代理为不支持服务链功能的传统服务功能节点提供代理服务。除此之外,SRv6服务链的其他组成部分如下:
·服务链分类器:作为服务链的入节点,按照一定的分类规则对经过的数据包添加服务链封装信息,符合不同分类规则的数据包会被导流进入不同的业务处理路径。
·服务功能节点:提供特定网络服务的节点,主要针对数据包完成相应的业务处理。
·服务转发节点:为数据包提供中转服务的节点。
本发明内部的数据包处理流程如图2所示,首先根据接收到的数据包是否为SRv6数据包判断是将要转发至服务功能节点进行业务处理的数据包还是从服务功能节点返回的数据包。如果是SRv6数据包,则查询分段标签到服务功能编号的映射表,将分段标签转换为服务功能编号(服务链信息的压缩),然后修改指示下一跳分段标签位置的指针偏移,将服务链信息封装到数据包中,并移除SRv6报文头,最后将数据包转发至服务功能节点;如果不是SRv6数据包,则根据数据包携带的服务链信息,查询服务功能编号到分段标签的映射表(服务链信息的还原),还原原始的SRv6报文头,然后将数据包转发至下一跳。
SRv6服务链信息的压缩。SRv6扩展报文头的格式如图3所示,为了在后续能够还原服务链信息,数据包中需要携带的服务链字段信息包括:
(1)Segment List[0]~Segment List[n]:分段标签列表,指示一条具体的服务链路径;
(2)Segment Left:指示下一跳分段标签的位置索引;
(3)Last Entry:指示分段标签的总数。
如表1所示,通过建立SRv6分段标签和服务功能编号的映射表,可以大大压缩数据包所需要携带的分段标签列表字节数。原始的SRv6分段标签为IPv6地址(16字节),而将服务功能编号设置为2个字节(最多可以支持65536个服务功能),这样数据包只需要携带SRv6分段标签列表所对应的服务功能编号列表即可。
表1 SRv6分段标签和服务功能编号映射表
但是,可编程交换机为了保证数据平面线速地进行数据包处理,采取了流水线的架构设计,这样的架构设计同样限制了每次数据包处理流程只能匹配同一张表一次,这也就意味着一次的数据包处理流程不能完成SRv6分段标签列表到服务功能编号的转换过程。虽然,可编程交换机支持循环模式,但是多次的循环过程会降低服务链代理的性能表现。
进一步地,根据服务功能在服务链中出现的阶段,可以将原始的映射表拆分为一系列映射表的组合,如表2所示,ID列表示服务功能编号,SID列表示分段标签,其中分段标签IPv6_1和IPv6_4出现在服务链的第一阶段,分段标签IPv6_2和IPv6_3出现在服务链的第二阶段,以此类推。这样就可以在可编程交换机中的一次数据包处理流程中按顺序完成分段标签列表到服务功能编号列表的转换,同时这样也可以更好地利用可编程交换机中分布在一系列MAU(Match-Action Unit,匹配执行单元)上的资源。
表2 SRv6分段标签和服务功能编号映射表拆分
确定数据包中合适的字段保存服务链信息。令服务功能节点的网卡工作于混杂模式,此时,该节点上的网卡能够接受所有经过该节点的数据包,这样就可以同时利用数据包中的源mac地址和目的mac地址携带服务链信息(服务功能编号列表),可以实现对长度不超过6的服务链的支持。同时,利用IPv4数据报文中的DSF字段或者IPv6数据报文中的TC字段保存Segment Left(下一跳分段标签位置索引)和Last Entry(分段标签总数)信息。
以上所述仅为本发明的较佳实施方式,本发明的保护范围并不以上述实施方式为限,但凡本领域普通技术人员根据本发明所述内容做等效变化,皆应纳入权利要求书中所记载的保护范围内。
Claims (8)
1.一种基于可编程交换机的无状态SRv6服务链代理方法,应用于SRv6服务链代理节点,所述方法包括:
接收服务链中的第一SRv6数据包;
基于SRv6分段标签到服务功能编号的映射表,实现第一SRv6数据包中的SRv6服务链信息的压缩,并修改指示下一跳分段标签位置的指针偏移,其中每一所述SRv6服务链信息对应一或多个的所述SRv6分段标签;
将所述压缩后的SRv6服务链信息封装到所述第一SRv6数据包中,并移除SRv6报文头,得到服务功能节点所需的第一数据包;
将所述第一数据包转发至服务功能节点;
和,
接收服务功能节点发送的第二数据包;
根据所述第二数据包携带的服务链信息,查询服务功能编号到分段标签的映射表,得到分段标签;
还原SRv6数据包的报文头,并结合所述分段标签,得到第二SRv6数据包;
将所述第二SRv6数据包发送到服务链中的转发节点。
2.如权利要求1所述的方法,其特征在于,所述SRv6服务链信息包括:分段标签列表、下一跳分段标签位置索引和分段标签总数。
3.如权利要求1所述的方法,其特征在于,所述将所述SRv6服务链信息封装到所述SRv6数据包中,包括:
使用源mac地址和目的mac地址携带分段标签列表;
利用IPv4数据报文中的DSF字段或者IPv6数据报文中的TC字段保存下一跳分段标签的位置索引和分段标签总数。
4.如权利要求1所述的方法,其特征在于,所述根据所述第二数据包携带的服务链信息,查询服务功能编号到分段标签的映射表,得到分段标签,包括:
将所述服务功能编号到分段标签的映射表拆分为若干个服务功能编号到分段标签的子映射表;
根据所述第二数据包携带的服务链信息,查询服务功能编号到分段标签的子映射表,得到分段标签。
5.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4中任一所述方法。
6.一种电子装置,所述电子装置包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行,以实现权利要求1-8中任一所述方法。
7.一种基于可编程交换机的无状态SRv6服务链代理系统,包括:
SRv6服务链代理节点,用于接收服务链中的第一SRv6数据包;基于SRv6分段标签到服务功能编号的映射表,实现第一SRv6数据包中的SRv6服务链信息的压缩,并修改指示下一跳分段标签位置的指针偏移,其中每一所述SRv6服务链信息对应一或多个的所述SRv6分段标签;将所述压缩后的SRv6服务链信息封装到所述第一SRv6数据包中,并移除SRv6报文头,得到服务功能节点所需的第一数据包;将所述第一数据包转发至服务功能节点;和,接收服务功能节点发送的第二数据包;根据所述第二数据包携带的服务链信息,查询服务功能编号到分段标签的映射表,得到分段标签;还原SRv6数据包的报文头,并结合所述分段标签,得到第二SRv6数据包;将所述第二SRv6数据包发送到服务链中的转发节点;
服务应用,用于向SRv6服务链代理节点发送的第二数据包,所述第二数据包包含SRv6服务链信息;对SRv6服务链代理节点发送的第一数据包提供服务;
转发节点,用于将服务链中的第一SRv6数据包转发给SRv6服务链代理节点;对SRv6服务链代理节点发送的第二SRv6数据包进行转发。
8.如权利要求7所述的系统,其特征在于,所述系统还包括:服务链分类器,所述服务链分类器用于按照分类规则对经过的数据包添加服务链封装信息,并将符合不同分类规则的数据包会被导流进入不同的业务处理路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210469576.7A CN117014501A (zh) | 2022-04-28 | 2022-04-28 | 基于可编程交换机的无状态SRv6服务链代理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210469576.7A CN117014501A (zh) | 2022-04-28 | 2022-04-28 | 基于可编程交换机的无状态SRv6服务链代理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117014501A true CN117014501A (zh) | 2023-11-07 |
Family
ID=88573233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210469576.7A Pending CN117014501A (zh) | 2022-04-28 | 2022-04-28 | 基于可编程交换机的无状态SRv6服务链代理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117014501A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117459454A (zh) * | 2023-12-26 | 2024-01-26 | 明阳产业技术研究院(沈阳)有限公司 | 一种数据转发方法、系统、交换装置、介质及设备 |
-
2022
- 2022-04-28 CN CN202210469576.7A patent/CN117014501A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117459454A (zh) * | 2023-12-26 | 2024-01-26 | 明阳产业技术研究院(沈阳)有限公司 | 一种数据转发方法、系统、交换装置、介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10445380B2 (en) | System and method for direct storage access in a content-centric network | |
US7620046B2 (en) | Dynamically assigning packet flows | |
CN101217493B (zh) | 一种tcp数据包的传输方法 | |
US8913613B2 (en) | Method and system for classification and management of inter-blade network traffic in a blade server | |
CN101217464B (zh) | 一种udp数据包的传输方法 | |
US9237124B2 (en) | Scaling of virtual machine addresses in datacenters | |
EP2940949B1 (en) | Method and device for packet handling | |
CN101170512B (zh) | 报文业务处理方法 | |
US20210160350A1 (en) | Generating programmatically defined fields of metadata for network packets | |
US20170237689A1 (en) | Two-Stage Port-Channel Resolution in a Multistage Fabric Switch | |
WO2024067336A1 (zh) | 报文处理方法、可编程网卡设备、物理服务器及存储介质 | |
CN108471390B (zh) | 业务报文跨板处理系统及业务报文的重定向方法 | |
CN106713144A (zh) | 一种报文出口信息的读写方法及转发引擎 | |
CN113746749A (zh) | 网络连接设备 | |
US20150256460A1 (en) | System and method for packet forwarding using a conjunctive normal form strategy in a content-centric network | |
WO2023236858A1 (zh) | 流表规则的管理方法、流量管理方法、系统及存储介质 | |
CN112153696A (zh) | Rlc sdu分段处理方法、装置及终端 | |
CN114338524A (zh) | 一种提升大规模容器云集群网络Service性能的方法及系统 | |
CN117014501A (zh) | 基于可编程交换机的无状态SRv6服务链代理方法及系统 | |
US6728778B1 (en) | LAN switch with compressed packet storage | |
CN114338529B (zh) | 五元组规则匹配方法及装置 | |
CN116032837A (zh) | 一种流表卸载方法及装置 | |
CN105072057A (zh) | 一种用于网络数据传输的中间交换设备及网络通信系统 | |
CN113676544A (zh) | 一种云存储网络和在实体服务器中实现业务隔离的方法 | |
CN111050339B (zh) | 一种基于协议无感知转发的高速数据更新系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |