CN105099960A - 用于实现服务链的方法和装置 - Google Patents

用于实现服务链的方法和装置 Download PDF

Info

Publication number
CN105099960A
CN105099960A CN201410181399.8A CN201410181399A CN105099960A CN 105099960 A CN105099960 A CN 105099960A CN 201410181399 A CN201410181399 A CN 201410181399A CN 105099960 A CN105099960 A CN 105099960A
Authority
CN
China
Prior art keywords
bag
mac address
destination
service chaining
source mac
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.)
Granted
Application number
CN201410181399.8A
Other languages
English (en)
Other versions
CN105099960B (zh
Inventor
杨保华
郑凯
张跃
刘天成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN201410181399.8A priority Critical patent/CN105099960B/zh
Priority to US14/697,986 priority patent/US9742589B2/en
Publication of CN105099960A publication Critical patent/CN105099960A/zh
Application granted granted Critical
Publication of CN105099960B publication Critical patent/CN105099960B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/127Shortest path evaluation based on intermediate node capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • H04L45/566Routing instructions carried by the data packet, e.g. active networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Abstract

公开了一种用于实现服务链的方法、相应装置和SDN控制器,该方法包括:修改步骤,响应于接收到属于服务链的包并且要将该包发送到该服务链中下一跳的交换机,将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;以及恢复步骤,响应于要将该包发送到该服务链中当前跳的中间盒,将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。

Description

用于实现服务链的方法和装置
技术领域
本发明涉及计算机领域,具体涉及基于SDN(SoftwareDefinedNetworking,软件定义网络)的服务链(servicechaining),更具体涉及一种用于实现服务链的方法和装置。
背景技术
近年来,随着云计算的日益普及,云安全特别是网络安全成为一个十分突出的问题。人们付出越来越多的努力利用新兴技术来提供云网络中的动态和灵活的安全功能。一个典型的例子是使用基于SDN的服务链动态地提供虚拟网络安全服务。
SDN是一种新兴的计算机网络技术,其将做出关于将通信流发送到哪儿的决策的系统(称为控制面)与将通信流转发到选定目标的底层系统(称为数据面)解耦。控制面通常包括SDN控制器,而数据面通常包括一组互连的交换机。控制面使用例如OpenFlow等通信机制与数据面进行通信。
服务链是指一组服务构成的链,即一组服务的有序集合。这些服务可称为中间盒(middlebox),其可执行对通信流的转换、检查、过滤等各种操作,从而可提供例如防火墙等网络安全功能。中间盒通常通过一组交换机相互物理连接。服务链提供了受限制的点到点的转发服务,其中从特定源到特定目标的通信流必须以给定顺序经过由一组给定中间盒构成的第二层(L2)路径。
基于SDN的服务链技术面临如下几个挑战:中间盒可以位于网络中的任何位置,甚至可以动态迁移;中间盒难以被寻址,因为很多中间盒表现得像黑洞,对于任何侦听、探测都不会进行响应;传统的第二层(以太网)转发是无状态的,其转发仅根据目标MAC地址,因此,例如在中间盒A和B都没有MAC地址的情况下,很难知道应当在访问A之后访问B。
目前存在着基于SDN的服务链的实现方案,例如使用CiscovPath封装的CiscoNexus1000v等。但这些方案存在几个缺点,包括:中间盒接收的数据包并非原始的数据包,因此需要特殊的中间盒硬件或软件;无法解决不支持MAC地址的中间盒的处理问题;一个交换机上挂载多个中间盒时可能出现的重入问题;使用私有协议;性能不足;最大传输单元(MTU)过大等。
因此,本领域中需要一种改进的基于SDN的服务链的实现方案。
发明内容
在本发明的一个方面,提供了一种用于实现服务链的方法,包括:修改步骤,响应于接收到属于服务链的包并且要将该包发送到该服务链中下一跳的交换机,将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;以及恢复步骤,响应于要将该包发送到该服务链中当前跳的中间盒,将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
在本发明的另一个方面,提供了一种用于实现服务链的方法,包括:响应于在交换机处接收到包,根据该包的源MAC地址、目标MAC地址和接收端口在转发表中查找匹配的规则,其中,转发表中的规则指定了包的源MAC地址、目标MAC地址和接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和包的转发端口之间的映射;响应于在转发表中找到匹配的规则,对该包的源MAC地址和目标MAC地址执行匹配的规则中指定的修改或恢复操作,并通过匹配的规则中指定的转发端口转发该包,其中,所述修改操作包括:将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;并且其中,所述恢复操作包括:将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
在本发明的又一个方面,提供了一种用于实现服务链的装置,包括:修改装置,被配置为响应于接收到属于服务链的包并且要将该包发送到该服务链中下一跳的交换机,将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;以及恢复装置,被配置为响应于要将该包发送到该服务链中当前跳的中间盒,将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
在本发明的再一个方面,提供了一种用于实现服务链的装置,包括:被配置为响应于在交换机处接收到包,根据该包的源MAC地址、目标MAC地址和接收端口在转发表中查找匹配的规则的装置,其中,转发表中的规则指定了包的源MAC地址、目标MAC地址和接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和包的转发端口之间的映射;被配置为响应于在转发表中找到匹配的规则,对该包的源MAC地址和目标MAC地址执行匹配的规则中指定的修改或恢复操作,并通过匹配的规则中指定的转发端口转发该包的装置,其中,所述修改操作包括:将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;并且其中,所述恢复操作包括:将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
在本发明的还一个方面,提供了一种SDN控制器,包括:中间盒管理器,被配置为管理中间盒及其伪MAC地址;服务链管理器,被配置为通过维护服务链表管理服务链,所述服务链表包含服务链标识与服务链的中间盒列表之间的映射;会话管理器,被配置为通过维护会话表管理会话,所述会话表包含会话标识、服务链标识、包的原始目标MAC地址、原始源目标MAC地址之间的映射;包处理模块,被配置为:响应于从交换机接收到包,根据该包的源MAC地址和目标MAC地址以及所述会话表和服务链表确定包所属的服务链和会话以及包当前在服务链中的位置,从而确定将对包的源MAC地址和目标MAC地址执行的修改或恢复操作以及包的转发端口,并形成包含包的源MAC地址、目标MAC地址、接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和转发端口之间的映射的规则;对包的源MAC地址和目标MAC地址执行所确定的修改或恢复操作,并通过所确定的转发端口转发该包;将所形成的规则发送到交换机,以便由交换机存储到转发表中,以用于对后续包的处理和转发,其中,所述修改操作包括:将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源地址修改为编码有该包的状态信息的编码数据;以及其中,所述恢复操作包括:将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
根据本发明的各实施例的技术方案的优点包括以下一项或多项:由主机和中间盒看到的通信流将保持原来格式,而没有变化,这样服务提供对于租户和中间盒来说都是透明的,因此不影响现有的网络转发;交换机上的转发规则将由SDN控制器产生,不需要对交换机硬件做出任何改变,因此服务链的部署将是容易和灵巧的;SDN交换机可以很好地集成到现有的网络基础设施,甚至可以和非SDN交换机一起工作;此外,转发规则可由SDN控制器动态更新,服务链容易管理,这提供了灵活的性能和安全支持。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了第二层包的结构;
图2示出了根据本发明的实施例修改后的包的结构;
图3示出了根据本发明的实施例的通过修改源MAC地址获得的编码字的示例结构;
图4示出了根据本发明的实施例的用于实现服务链的方法针对一示例性SDN网络拓扑和示例性服务链的示例性操作过程;
图5示出了根据本发明的实施例的针对图4所示的示例性SDN网络拓扑和示例性服务链的包的转发过程;
图6示出了根据本发明的实施例的用于实现服务链的方法的示例性流程图;
图7示出了根据本发明的实施例的SDN控制器的结构框图及运行所在的SDN网络的体系结构图;以及
图8示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本发明基于以下要求或假设:
1.中间盒被当作第二层设备,其表现为黑洞(即,从不对任何请求/侦听/扫描做出响应),其包括防火墙、入侵防止/检测系统、数据泄露防止系统等;
2.中间盒被“置于”特定通信流的线内(inline):相关通信流在到达目标之前以预定顺序通过各中间盒;
3.每个中间盒本身是第二层透明的,表现得类似于导线(开关),即它具有两个接口,并将通信流从一个接口“移动”(清除)到另一个接口;
4.不同的服务链可共享中间盒;
5.中间盒可被置于第二层网络中的任何位置;
6.一个双向链可被实现为两个单向链,因此这里只考虑单向链。
本发明的基本思想可概括为在服务链的跳(hop)之间传输包时对包的目标MAC地址和源MAC地址进行编码,而在每一跳处进行解码。这里,跳可被理解为服务链中的中间盒及其所连接的交换机。
具体地,在向服务链的下一跳传输包时,包的目标MAC地址将被修改为下一跳的中间盒的MAC地址。与IP转发机制类似,每个中间盒将被分配一个伪MAC地址;伪MAC地址与真MAC地址的作用类似,即用于寻址中间盒。
此外,包的源MAC地址将被修改为载有包在服务链中的状态的编码字。由于包的源MAC地址很少用于转发目的,因此修改源MAC地址对(无论是SDN网络还是传统网络的)转发机制影响很小。适当修改包的源MAC地址还可以避免“误导”源学习机制:当包含源MAC地址的包通过“使用定义链”(use-definedchain)中的路径时,拓扑学习机制可能会得到错误的邻接矩阵(adjacentmatrix)。修改后的编码字可包括包所属的会话的ID(其用于在跳之间取回原来的MAC地址),以及包在服务链中的状态信息(例如,包当前在链中的位置)。此外,该编码字还可以包括一编码字指示器,其位于编码字前部,用来指示该字段并非普通的MAC地址,而是根据本发明的编码字。所述编码字指示器可属于保留的MAC地址范围,以便与普通的MAC地址相区别。
在每一跳的交换机处,在将包传送到中间盒之前,应确保将包头恢复为原来的包头(包括原始目标MAC地址和原始源MAC地址)。
图1示出了第二层包的结构。如图所示,每个L2包由8字节的前序(preamble)、14字节的包头(header)、46至1500字节的有效载荷(payload)和4字节的循环冗余校验(CRC)组成。其中,包头包括6字节的目标MAC地址、6字节的源MAC地址和2字节的帧类型。
图2示出了根据本发明的实施例修改后的包的结构。如图中所示,与原来的包结构相比,只是包头部分被修改,其中原来的目标MAC地址被修改为下一跳的中间盒的伪MAC地址,原来的源MAC地址被修改为编码的源MAC地址,即本发明的编码字。
图3示出了根据本发明的实施例的通过修改源MAC地址获得的编码字的示例结构。如图中所示,该编码字的前3个节字(从低位看为第24-47位)为编码字指示器(在该示例中为01:80:C2),第4-23位为会话ID,第0-3位为包当前在服务链中的位置。当然,所示结构仅为示例,而不是对本发明的限制。
现参照图4,其示出了根据本发明的实施例的用于实现服务链的方法针对一示例性SDN网络拓扑和示例性服务链的示例性操作过程。如图所示,该示例性SDN网络包括通过L2网络相连的交换机#1和交换机#2、通过交换机的管理端口M与交换机相连的SDN控制器、与交换机#1的端口8相连的主机(虚拟机)VM1(其MAC地址为00:00:00:11:11:11)、与交换机#1的端口3和4相连的中间盒MB2(其被分配的伪MAC地址为01:80:C2:FF:FF:F2)、与交换机#2的端口6相连的主机VM2(其MAC地址为00:00:00:22:22:22)、与交换机#2的端口1和2相连的中间盒MB1(其被分配的伪MAC地址为01:80:C2:FF:FF:F1)。
如图4中所示,在SDN控制器中存在服务链表,其列出了服务链ID、服务链的流(包括源和目标)、以及服务链所经历的中间盒列表。如图中所示,在服务链表中已包含服务链ID为1、流为SRC=VM1,DST=VM2(即源为VM1,且目标为VM2)、中间盒列表为SRC->MB1->MB2->DST的表项,其表明针对源为VM1且目标为VM2的流,该流中的包要依次经过SRC、MB1、MB2、DST。该表项可以事先根据用户设置创建。
如图4中所示,在SDN控制器中还存在会话表,其列出了会话ID、服务链ID、目标MAC地址、源MAC地址。如图中所示,在会话表中已包含会话ID为00:01、服务链ID为1、目标MAC地址为00:00:00:22:22:22(即VM2的MAC地址)、源MAC地址为00:00:00:11:11:11(即VM1的MAC地址)的表项。该表项可以在SDN控制器自交换机#1接收到该流中的第一个包时根据服务链表中的信息(如服务链ID、流)创建。
如图4所示,在交换机#1和交换机#2中各存在一个转发表,其表项可称为转发规则,转发规则列出了包的入端口、源MAC地址、目标MAC地址,和将针对包执行的操作,以及包的转发端口。也就是说,针对交换机接收到的包,如果包的入端口、源MAC地址和目标MAC地址匹配转发表中的某个表项,则将对该包的源MAC地址和目标MAC地址执行该表项中指定的操作(即根据本发明对包头进行的修改和恢复操作),并将由表项中指定的转发端口转发该包。交换机中转发表中的各转发规则可以是由SDN控制器在接收到来自交换机的流中的第一个包时创建并下载到交换机中的。也就是说,当SDN控制器接收到来自交换机的流中的第一个包(当交换机在其转发表中无法找到匹配的转发规则时就会将包发送到SDN控制器)时,可创建与该流中的包有关的所有转发规则,并下载到相应的交换机。此外,由于交换机在运行过程中其转发规则有可能会被替换出去或因其他原因丢失,交换机在遇到无法在其转发表中找到匹配的转发规则的包(并非流中的第一个包)时也会将包发送到SDN控制器,此时SDN控制器可以针对该包创建转发规则并将其下载到交换机。SDN控制器可根据会话表中的目标MAC地址和源MAC地址信息、服务链表中的中间盒列表信息、以及其所拥有的SDN网络拓扑信息(包括各交换机、中间盒、主机之间的连接关系)创建用于各交换机的转发规则,并下载到各交换机。
现进一步参照图5,其示出了根据本发明的实施例的针对图4所示的示例性SDN网络拓扑和示例性服务链的包的转发过程。如图5所示并结合图4,该转发过程包括如下步骤:
在步骤1,交换机#1由其端口8从主机VM1接收到包,该包的包头中的源MAC地址为00:00:00:11:11:11,目标MAC地址为00:00:00:22:22:22。交换机#1使用入端口8以及所述源MAC地址和目标MAC地址查找其转发表,发现该包对应于转发表中的第一个表项,该表项中指出的操作为DST->01:80:C2:FF:FF:F1,SRC->01:80:C2:00:00:13,Port=5。根据所指定的操作,交换机#1将包的目标MAC地址修改为01:80:C2:FF:FF:F1,即服务链中下一跳的中间盒MB1的伪MAC地址,并将包的源MAC地址修改为编码字01:80:C2:00:00:13,其中,01:80:C2为编码字指示器,00:00:1为会话ID,3表示包目前在服务链中所处的位置。然后,交换机#1将包从端口5发送出去。
在步骤2,交换机#2由其端口9接收到来自交换机#1的包。交换机#2使用包的入端口9、包头中的源MAC地址01:80:C2:00:00:13、目标MAC地址01:80:C2:FF:FF:F1在其转发表中找到匹配的第一个表项,该表项中的操作为DST->00:00:00:22:22:22SRC->00:00:00:11:11:11,Port=1。根据该表项,交换机#2将包的目标MAC地址修改为00:00:00:22:22:22,即恢复为原始目标MAC地址,将包的源MAC地址修改为00:00:00:11:11:11,即恢复为原始源MAC地址,然后,将包从端口1发送出去,即发送给中间盒MB1进行相关处理。
在步骤3,交换机#2由其端口2接收到来自中间盒MB1的包。交换机#2使用包的入端口2、包头中的源MAC地址00:00:00:11:11:11、目标MAC地址00:00:00:22:22:22在其转发表中找到匹配的第二个表项,该表项中的操作为DST->01:80:C2:FF:FF:F2SRC->01:80:C2:00:00:12,Port=9。根据表项中所指定的操作,交换机#2将包的目标MAC地址修改为01:80:C2:FF:FF:F2,即服务链中下一跳的中间盒MB2的伪MAC地址,并将包的源MAC地址修改为编码字01:80:C2:00:00:12,其中,01:80:C2为编码字指示器,00:00:1为会话ID,2表示包目前在服务链中所处的位置(该位置2与步骤1中的位置3相比,已发生变化)。然后,交换机#2将包从端口9发送出去。
在步骤4,交换机#1由其端口5接收到来自交换机#2的包。交换机#1使用包的入端口5、包头中的源MAC地址01:80:C2:00:00:12、目标MAC地址01:80:C2:FF:FF:F2在其转发表中找到匹配的第二个表项,该表项中的操作为DST->00:00:00:22:22:22SRC->00:00:00:11:11:11,Port=3。根据该表项,交换机#2将包的目标MAC地址修改为00:00:00:22:22:22,即恢复为原始目标MAC地址,将包的源MAC地址修改为00:00:00:11:11:11,即恢复为原始源MAC地址,然后,将包从端口3发送出去,即发送给中间盒MB2进行相关处理。
在步骤5,交换机#1由其端口4接收到来自中间盒MB2的包。交换机#1使用包的入端口4、包头中的源MAC地址00:00:00:11:11:11、目标MAC地址00:00:00:22:22:22在其转发表中找到匹配的第三个表项,该表项中的操作为DST->00:00:00:22:22:22SRC->01:80:C2:00:00:11,Port=5。根据表项中所指定的操作,交换机#1将包的目标MAC地址修改为00:00:00:22:22:22(实际未变),即服务链中下一跳的目标主机VM2的MAC地址,并将包的源MAC地址修改为编码字01:80:C2:00:00:11,其中,01:80:C2为编码字指示器,00:00:1为会话ID,1表示包目前在服务链中所处的位置(该位置1与步骤3中的位置2相比,已发生变化)。然后,交换机#1将包从端口5发送出去。
在步骤6,交换机#2由其端口9接收到来自交换机#1的包。交换机#2使用包的入端口9、包头中的源MAC地址01:80:C2:00:00:11、目标MAC地址00:00:00:22:22:22在其转发表中找到匹配的第三个表项,该表项中的操作为SRC->00:00:00:11:11:11,Port=6。根据该表项,交换机#2将包的源MAC地址修改为00:00:00:11:11:11,即恢复为原始源MAC地址,然后,将包从端口6发送出去,即发送给目标主机VM2,从而完成整个转发过程。
如本领域的技术人员所知的,图4和图5中所示及以上描述的包转发过程仅为示例性说明,而不是对本发明的限制。现参照图6,其示出了根据本发明的实施例的用于实现服务链的方法的示例性流程图。
如图所示,在步骤601,交换机接收到包。
在步骤602,交换机根据包的入端口、以及包头中的源MAC地址和目标MAC地址判断是否能在交换机的转发表中找到匹配的转发规则。所述转发表可以具有与图4中所示类似的结构,其表项(即转发规则)包含包的入端口、源MAC地址、目标MAC地址与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作以及包的转发端口之间的映射。
如果步骤602的判断为是,则转到步骤603;如果步骤602的判断为否,则转到步骤604。
在步骤603,由交换机根据匹配的转发规则对包进行处理和转发,即对包的源MAC地址和目标MAC地址执行转发规则中指定的修改或恢复操作,并将包从转发规则中指定的转发端口发送出去。
在步骤604,交换机将包发送到SDN控制器。
在步骤605,SDN控制器判断该包是否属于服务链。SDN控制器可根据包头判断包是否属于服务链。
如果SDN控制器判断包头中的源MAC地址包含根据本发明的实施例的编码字指示器(例如在如图3所示示例中,前24位为01:80:C2),则SDN控制器可判断该包属于服务链,且可从源MAC地址(即编码字)中提取会话ID,并可使用会话ID从SDN控制器所维护的会话表中获得包所属的服务链的ID。如以上参照图4所示,SDN控制器所维护的会话表包含了会话ID、服务链ID、原始目标MAC地址、原始源MAC地址之间的映射。
如果SDN控制器判断包头中的源MAC地址不包含根据本发明的实施例的编码字指示器(例如在如图3所示的示例中,前24位不是01:80:C2),即包的源MAC地址(以及目标MAC地址)为普通的MAC地址,则SDN控制器可将包的源MAC地址和目标MAC地址与其维护的服务链表进行匹配来发现服务链ID。如以上参照4所示,SDN控制器所维护的服务链表可包含服务链ID、流的源设备和目标设备(源设备和目标设备的MAC地址即包的源MAC地址和目标MAC地址)、以及服务链的中间盒列表。如果SDN控制器在服务链表中找到匹配的服务链ID,则可判断该包属于该服务链;如果SDN控制器在服务链表中没有找到匹配的服务链ID,则可判断该包不属于服务链。
如果步骤605的判断为否,转到步骤606;如果步骤605的判断为是,转到步骤607。
在步骤606,SDN控制器针对该包执行与本发明无关的其他处理,如进行现有技术中的转发等(在此不再详细)。
在步骤607,SDN控制器判断包是否处于会话中。
如果SDN控制器在步骤605中已判断包头中的源MAC地址包含根据本发明的实施例的编码字指示器,则SDN控制器可判断该包处于会话中(且已在步骤605中从编码字中提取了会话ID)。
如果SDN控制器在步骤605中已判断包头中的源MAC地址不包含根据本发明的实施例的编码字指示器,即包头中的源MAC地址和目标MAC地址为普通的源MAC地址和目标MAC地址,则SDN控制器可使用其维护的会话表(或反向会话表)来查找匹配的会话ID。如以上参照图4所示,所述会话表包含了会话ID、服务链ID、原始目标MAC地址、原始源MAC地址之间的映射。所述反向会话表可包含原始目标MAC地址、原始源MAC地址和会话ID之间的映射。如果SDN控制器在会话表(或反向会话表)中找到匹配的会话ID,则可判断包处于该会话中;如果SDN控制器在会话表(或反向会话表)中没有找到匹配的会话ID,则可判断包不处于会话中。
如果步骤607的判断为否,则转到步骤608;如果步骤607的判断为是,则转到步骤609。
在步骤608,SDN控制器为该包所属的流创建会话,包括在会话表中创建包含会话ID、服务链ID、原始目标MAC地址、原始源MAC地址的新表项。然后,转到步骤609。
在步骤609,SDN控制器发现包当前在服务链中的位置。对于已在步骤605中判断包头中的源MAC地址包含根据本发明的实施例的编码字指示器的包,SDN控制器可直接从该源MAC地址(即根据本发明的实施例的编码字)中获得所包含的包当前在服务链中的位置。而对于在步骤605中判断包头中的源MAC地址不包含根据本发明的实施例的编码字指示器的包,SDN控制器可首先使用该包的服务链ID从其维护的服务链表中获得该服务链的中间盒列表,然后根据该包在交换机中的入端口以及SDN控制器所维护的关于各交换机与中间盒之间的连接关系,得出该包来自于哪个中间盒,从而得出该包当前在服务链中的位置。
在步骤610,SDN控制器判断是否应当对包头执行修改操作或者恢复操作。
如果SDN控制器已在步骤605中判断包头中的源MAC地址包含根据本发明的实施例的编码字指示器,且判断当前交换机(即包所来自的交换机)为服务链中的下一跳的交换机,则SDN控制器判断应对包头执行恢复操作,且转到步骤611。
如果SDN控制器已在步骤605中判断包头中的源MAC地址不包含根据本发明的实施例的编码字指示器,则SDN控制器判断应对包头执行修改操作,且转到步骤612。
在步骤611,SDN控制器对包头执行恢复操作,即将该包的源MAC地址(即编码字)恢复为原始源MAC地址,将该包的目标MAC地址(即中间盒的伪MAC地址)恢复为该包原始目标MAC地址,并将包发送给当前跳(即包当前在服务链中所处于的跳)的中间盒。SDN控制器可通过从编码字中提取会话ID,并使用会话ID从其维护的会话表中获得该包的原始源MAC地址和原始目标MAC地址。SDN控制器可根据在步骤609发现的包当前在服务链中的位置获得当前跳的中间盒,以及该中间盒所连接的交换机端口,并将该包发送给该中间盒。然后,转到步骤613。
在步骤612,SDN控制器对包头执行修改操作,即将该包的源MAC地址修改为根据本发明的实施例的编码字,将该包的目标MAC地址修改为下一跳的中间盒的伪MAC地址,并将包发送给下一跳的交换机。SDN控制器可使用在步骤607查找的会话ID或在步骤608创建的会话ID以及在步骤609发现的包当前在服务链中的位置来形成根据本发明的实施例的编码字,并可从其维护的中间盒表中获得下一跳的中间盒伪MAC地址。SDN控制器可根据包所来自的当前交换机、下一跳的中间盒以及其维护的交换机与交换机及中间盒之间的连接拓扑关系获得该包在当前交换机中的转发端口,并将该包转发给下一跳的交换机。然后,转到步骤613。
在步骤613,SDN控制器生成转发规则并将其下载到交换机。SDN控制器可根据包的接收端口、源MAC地址、目标MAC地址以及在步骤611或步骤612确定的将对包执行的恢复或修改操作以及包的转发端口来形成转发规则,并将其下载到交换机。此外,根据本发明的实施例,如果SDN控制器步骤607中判断该包不处于会话中,从而判断该包属于流中的第一个包,则SDN控制器可以形成包在服务链中通过所需的全部转发规则,并将其下载到相关交换机。SDN控制器可根据该服务链、服务链中的各中间盒与各交换机及交换机之间的连接关系确定包在服务链中的各跳中所需的转发规则(包括包的入端口、源MAC地址、目标MAC地址与将针对包头执行的修改或恢复操作及转发端口之间的映射),并将其下载到相应的交换机。然后,在过程结束。此后,交换机可在接收到该流中后续的包后,重新开始上述过程。
以上参照附图描述了根据本发明的实施例的用于实现服务链的方法的示例性流程图。应指出的是,以上描述中包括的大量细节仅是对本发明的示例性说明,而不是对本发明的限制。在本发明的其他实施例中,该方法可具有更多、更少或不同的步骤,且各步骤之间的顺序、包含、功能等关系可以与所描述和图示的不同。
在本发明的另一个方面,还提供了一种用于实现服务链的装置,其包括:修改装置,被配置为响应于接收到属于服务链的包并且要将该包发送到该服务链中下一跳的交换机,将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址(例如,伪MAC地址),并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;以及恢复装置,被配置为响应于要将该包发送到该服务链中当前跳的中间盒,将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
根据本发明的实施例,所述包的状态信息包括包所属的会话的标识以及包在服务链中所处的位置。
根据本发明的实施例,所述编码数据还包括编码数据指示器。
在本发明的又一个方面,还提供了用于实现服务链的装置,其包括:被配置为响应于在交换机处接收到包,根据该包的源MAC地址、目标MAC地址和接收端口在转发表中查找匹配的规则的装置,其中,转发表中的规则指定了包的源MAC地址、目标MAC地址和接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和包的转发端口之间的映射;被配置为响应于在转发表中找到匹配的规则,对该包的源MAC地址和目标MAC地址执行匹配的规则中指定的修改或恢复操作,并通过匹配的规则中指定的转发端口转发该包的装置,其中,所述修改操作包括:将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;并且其中,所述恢复操作包括:将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
根据本发明的实施例,所述包的状态信息包括包所属的会话的标识以及包当前在服务链中所处的位置,且所述编码数据还包括编码数据指示器。
根据本发明的实施例,所述用于实现服务链的装置还包括:用于响应于在转发表中没有找到匹配的规则,将该包发送到SDN控制器的装置;用于在SDN控制器处,根据该包的源MAC地址和目标MAC地址确定包所属的服务链和会话以及包当前在服务链中的位置,从而确定将对包的源MAC地址和目标MAC地址执行的修改或恢复操作以及包的转发端口,并形成包含包的源MAC地址、目标MAC地址、接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和转发端口之间的映射的规则的装置;用于对包的源MAC地址和目标MAC地址执行所确定的修改或恢复操作,并通过所确定的转发端口转发该包的装置;用于将所形成的规则发送给交换机,以便由交换机存储到转发表中,以用于对后续包的处理和转发的装置。
根据本发明的实施例,所述在SDN控制器处根据该包的源MAC地址和目标MAC地址或确定包所属的服务链和会话以及包当前在服务链中的位置包括:用于响应于判断包的源MAC地址包括指示该源MAC地址为编码数据的所述编码数据指示器,从编码数据中获得包所属的会话的标识以及包当前在服务链中的位置,并根据所述会话的标识从SDN控制器中维护的会话表中获得包所属的服务链的标识的装置;用于响应于判断包的源MAC地址不包括指示该源MAC地址为编码数据的所述编码数据指示器,使用SDN控制器中维护的会话表和服务链表来确定包所属的服务链和会话以及包当前在服务链中的位置的装置,其中,所述会话表包含会话标识、服务链标识、包的原始目标MAC地址、原始源目标MAC地址之间的映射,且所述服务链表包含服务链标识和服务链的中间盒列表之间的映射。
根据本发明的实施例,所述在SDN控制器处根据该包的源MAC地址和目标MAC地址确定包所属的会话包括:确定该包为流中的第一个包,并创建会话;所述形成包含包的源MAC地址、目标MAC地址、接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和转发端口之间的映射的规则包括:形成包在服务链中通过所需的全部规则;以及所述将所形成的规则下载并存储到交换机的转发表中以用于对后续包的处理和转发包括:将包在服务链中通过所需的全部规则下载并存储到相应的交换机的转发表中以用于对后续包的处理和转发。
在本发明的再一个方面,还提供了一种SDN控制器。现参照图7,其示出了根据本发明的实施例的SDN控制器的结构框图及运行所在的SDN网络的体系结构图。如图7所示,该SDN网络包括三个交换机(交换机#1、交换机#2和交换机#3),且每个交换机分别与一个中间盒(中间盒1、中间盒2、中间盒3)相连。SDN控制器700用于与三个交换机相连以控制这三个交换机。
如图7所示,包括:该SDN控制器700包括如下模块:
中间盒管理器701,其被配置为管理中间盒及其伪MAC地址。
服务链管理器702,其被配置为通过维护服务链表管理服务链,所述服务链表包含服务链标识与服务链的中间盒列表之间的映射。
会话管理器703,其被配置为通过维护会话表管理会话,所述会话表包含会话标识、服务链标识、包的原始目标MAC地址、原始源目标MAC地址之间的映射。
包处理模块704,其被配置为:响应于从交换机接收到包,根据该包的源MAC地址和目标MAC地址以及所述会话表和服务链表确定包所属的服务链和会话以及包当前在服务链中的位置,从而确定将对包的源MAC地址和目标MAC地址执行的修改或恢复操作以及包的转发端口,并形成包含包的源MAC地址、目标MAC地址、接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和转发端口之间的映射的规则;对包的源MAC地址和目标MAC地址执行所确定的修改或恢复操作,并通过所确定的转发端口转发该包;将所形成的规则发送给交换机,以便由交换机存储到转发表中,以用于对后续包的处理和转发,其中,所述修改操作包括:将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;以及其中,所述恢复操作包括:将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
根据本发明的实施例,所述根据该包的源MAC地址和目标MAC地址以及所述会话表和服务链表确定包所属的会话包括:确定该包为流中的第一个包,并创建会话;所述形成包含包的源MAC地址、目标MAC地址、接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和转发端口之间的映射的规则包括:形成包在服务链中通过所需的全部规则;以及所述将所形成的规则下载并存储到交换机的转发表中以用于对后续包的处理和转发包括:将包在服务链中通过所需的全部规则下载并存储到相应的交换机的转发表中以用于对后续包的处理和转发。
以上参照附图描述了根据本发明的实施例的SDN控制器,应指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他实施例中,该SDN控制器可具有更多、更少或不同的模块,且各模块之间的连接、包含和功能等关系可以与所描述和图示的不同。
根据本发明的各实施例的技术方案的优点包括以下一项或多项:由主机和中间盒看到的通信流将保持原来格式,而没有变化,这样服务提供对于租户和中间盒来说都是透明的,因此不影响现有的网络转发;交换机上的转发规则将由SDN控制器产生,不需要对交换机硬件做出任何改变,因此服务链的部署将是容易和灵巧的;SDN交换机可以很好地集成到现有的网络基础设施,甚至可以和非SDN交换机一起工作;此外,转发规则可由SDN控制器动态更新,服务链容易管理,这提供了灵活的性能和安全支持。
图8示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图8显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (16)

1.一种用于实现服务链的方法,包括:
修改步骤,响应于接收到属于服务链的包并且要将该包发送到该服务链中下一跳的交换机,将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;以及
恢复步骤,响应于要将该包发送到该服务链中当前跳的中间盒,将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
2.根据权利要求1的方法,其中,所述包的状态信息包括包所属的会话的标识以及包当前在服务链中所处的位置,且所述编码数据还包括编码数据指示器。
3.一种用于实现服务链的方法,包括:
响应于在交换机处接收到包,根据该包的源MAC地址、目标MAC地址和接收端口在转发表中查找匹配的规则,其中,转发表中的规则指定了包的源MAC地址、目标MAC地址和接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和包的转发端口之间的映射;
响应于在转发表中找到匹配的规则,对该包的源MAC地址和目标MAC地址执行匹配的规则中指定的修改或恢复操作,并通过匹配的规则中指定的转发端口转发该包,
其中,所述修改操作包括:将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;并且
其中,所述恢复操作包括:将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
4.根据权利要求3的方法,其中,所述包的状态信息包括包所属的会话的标识以及包当前在服务链中所处的位置,且所述编码数据还包括编码数据指示器。
5.根据权利要求4的方法,还包括:
响应于在转发表中没有找到匹配的规则,将该包发送到SDN控制器;
在SDN控制器处,根据该包的源MAC地址和目标MAC地址确定包所属的服务链和会话以及包当前在服务链中的位置,从而确定将对包的源MAC地址和目标MAC地址执行的修改或恢复操作以及包的转发端口,并形成包含包的源MAC地址、目标MAC地址、接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和转发端口之间的映射的规则;
对包的源MAC地址和目标MAC地址执行所确定的修改或恢复操作,并通过所确定的转发端口转发该包;
将所形成的规则发送给交换机以便交换机存储到转发表中,以用于对后续包的处理和转发。
6.根据权利要求5的方法,其中,所述在SDN控制器处根据该包的源MAC地址和目标MAC地址确定包所属的服务链和会话以及包当前在服务链中的位置包括:
响应于判断包的源MAC地址包括指示该源MAC地址为编码数据的所述编码数据指示器,从编码数据中获得包所属的会话的标识以及包当前在服务链中的位置,并根据所述会话的标识从SDN控制器中维护的会话表中获得包所属的服务链的标识;
响应于判断包的源MAC地址不包括指示该源MAC地址为编码数据的所述编码数据指示器,使用SDN控制器中维护的会话表和服务链表来确定包所属的服务链和会话以及包当前在服务链中的位置,
其中,所述会话表包含会话标识、服务链标识、包的原始目标MAC地址、原始源目标MAC地址之间的映射,且所述服务链表包含服务链标识和服务链的中间盒列表之间的映射。
7.根据权利要求6的方法,其中,
所述在SDN控制器处根据该包的源MAC地址和目标MAC地址确定包所属的会话包括:确定该包为流中的第一个包,并创建会话;
所述形成包含包的源MAC地址、目标MAC地址、接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和转发端口之间的映射的规则包括:形成包在服务链中通过所需的全部规则;以及
所述将所形成的规则下载并存储到交换机的转发表中以用于对后续包的处理和转发包括:将包在服务链中通过所需的全部规则下载并存储到相应的交换机的转发表中以用于对后续包的处理和转发。
8.一种用于实现服务链的装置,包括:
修改装置,被配置为响应于接收到属于服务链的包并且要将该包发送到该服务链中下一跳的交换机,将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;以及
恢复装置,被配置为响应于要将该包发送到该服务链中当前跳的中间盒,将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
9.根据权利要求8的装置,其中,所述包的状态信息包括包所属的会话的标识以及包当前在服务链中所处的位置,且所述编码数据还包括编码数据指示器。
10.一种用于实现服务链的装置,包括:
被配置为响应于在交换机处接收到包,根据该包的源MAC地址、目标MAC地址和接收端口在转发表中查找匹配的规则的装置,其中,转发表中的规则指定了包的源MAC地址、目标MAC地址和接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和包的转发端口之间的映射;
被配置为响应于在转发表中找到匹配的规则,对该包的源MAC地址和目标MAC地址执行匹配的规则中指定的修改或恢复操作,并通过匹配的规则中指定的转发端口转发该包的装置,
其中,所述修改操作包括:将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;并且
其中,所述恢复操作包括:将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
11.根据权利要求10的装置,其中,所述包的状态信息包括包所属的会话的标识以及包当前在服务链中所处的位置,且所述编码数据还包括编码数据指示器。
12.根据权利要求11的装置,还包括:
用于响应于在转发表中没有找到匹配的规则,将该包发送到SDN控制器的装置;
用于在SDN控制器处,根据该包的源MAC地址和目标MAC地址确定包所属的服务链和会话以及包当前在服务链中的位置,从而确定将对包的源MAC地址和目标MAC地址执行的修改或恢复操作以及包的转发端口,并形成包含包的源MAC地址、目标MAC地址、接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和转发端口之间的映射的规则的装置;
用于对包的源MAC地址和目标MAC地址执行所确定的修改或恢复操作,并通过所确定的转发端口转发该包的装置;
用于将所形成的规则发送给交换机以便交换机存储到转发表中,以用于对后续包的处理和转发的装置。
13.根据权利要求12的装置,其中,所述在SDN控制器处根据该包的源MAC地址和目标MAC地址或确定包所属的服务链和会话以及包当前在服务链中的位置包括:
用于响应于判断包的源MAC地址包括指示该源MAC地址为编码数据的所述编码数据指示器,从编码数据中获得包所属的会话的标识以及包当前在服务链中的位置,并根据所述会话的标识从SDN控制器中维护的会话表中获得包所属的服务链的标识的装置;
用于响应于判断包的源MAC地址不包括指示该源MAC地址为编码数据的所述编码数据指示器,使用SDN控制器中维护的会话表和服务链表来确定包所属的服务链和会话以及包当前在服务链中的位置的装置,
其中,所述会话表包含会话标识、服务链标识、包的原始目标MAC地址、原始源目标MAC地址之间的映射,且所述服务链表包含服务链标识和服务链的中间盒列表之间的映射。
14.根据权利要求13的装置,其中,
所述在SDN控制器处根据该包的源MAC地址和目标MAC地址确定包所属的会话包括:确定该包为流中的第一个包,并创建会话;
所述形成包含包的源MAC地址、目标MAC地址、接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和转发端口之间的映射的规则包括:形成包在服务链中通过所需的全部规则;以及
所述将所形成的规则下载并存储到交换机的转发表中以用于对后续包的处理和转发包括:将包在服务链中通过所需的全部规则下载并存储到相应的交换机的转发表中以用于对后续包的处理和转发。
15.一种SDN控制器,包括:
中间盒管理器,被配置为管理中间盒及其伪MAC地址;
服务链管理器,被配置为通过维护服务链表管理服务链,所述服务链表包含服务链标识与服务链的中间盒列表之间的映射;
会话管理器,被配置为通过维护会话表管理会话,所述会话表包含会话标识、服务链标识、包的原始目标MAC地址、原始源目标MAC地址之间的映射;
包处理模块,被配置为:
响应于从交换机接收到包,根据该包的源MAC地址和目标MAC地址以及所述会话表和服务链表确定包所属的服务链和会话以及包当前在服务链中的位置,从而确定将对包的源MAC地址和目标MAC地址执行的修改或恢复操作以及包的转发端口,并形成包含包的源MAC地址、目标MAC地址、接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和转发端口之间的映射的规则;
对包的源MAC地址和目标MAC地址执行所确定的修改或恢复操作,并通过所确定的转发端口转发该包;
将所形成的规则发送到交换机,以便由交换机存储到转发表中,以用于对后续包的处理和转发,
其中,所述修改操作包括:将该包的原始目标MAC地址修改为该服务链中下一跳的中间盒的指定MAC地址,并将该包的原始源MAC地址修改为编码有该包的状态信息的编码数据;以及
其中,所述恢复操作包括:将该包的修改后的目标MAC地址恢复为该包的原始目标MAC地址,并将该包的修改后的源MAC地址恢复为该包的原始源MAC地址。
16.根据权利要求15的SDN控制器,其中,
所述根据该包的源MAC地址和目标MAC地址以及所述会话表和服务链表确定包所属的会话包括:确定该包为流中的第一个包,并创建会话;
所述形成包含包的源MAC地址、目标MAC地址、接收端口与将对包的源MAC地址和目标MAC地址执行的修改或恢复操作和转发端口之间的映射的规则包括:形成包在服务链中通过所需的全部规则;以及
所述将所形成的规则下载并存储到交换机的转发表中以用于对后续包的处理和转发包括:将包在服务链中通过所需的全部规则下载并存储到相应的交换机的转发表中以用于对后续包的处理和转发。
CN201410181399.8A 2014-04-30 2014-04-30 用于实现服务链的方法和装置 Expired - Fee Related CN105099960B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410181399.8A CN105099960B (zh) 2014-04-30 2014-04-30 用于实现服务链的方法和装置
US14/697,986 US9742589B2 (en) 2014-04-30 2015-04-28 Techniques for realizing service chaining

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410181399.8A CN105099960B (zh) 2014-04-30 2014-04-30 用于实现服务链的方法和装置

Publications (2)

Publication Number Publication Date
CN105099960A true CN105099960A (zh) 2015-11-25
CN105099960B CN105099960B (zh) 2018-03-16

Family

ID=54356036

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410181399.8A Expired - Fee Related CN105099960B (zh) 2014-04-30 2014-04-30 用于实现服务链的方法和装置

Country Status (2)

Country Link
US (1) US9742589B2 (zh)
CN (1) CN105099960B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107196807A (zh) * 2017-06-20 2017-09-22 清华大学深圳研究生院 网络中间设备及其部署方法
CN107204942A (zh) * 2016-03-18 2017-09-26 上海有云信息技术有限公司 一种基于五元组实现服务链透明传输的实现方法
WO2018023692A1 (en) * 2016-08-05 2018-02-08 Nokia Shanghai Bell Co., Ltd. Security-on-demand architecture
CN107800628A (zh) * 2016-09-07 2018-03-13 华为技术有限公司 用在软件定义网络中的数据转发装置及数据转发方法
WO2018058677A1 (zh) * 2016-09-30 2018-04-05 华为技术有限公司 一种报文处理方法、计算设备以及报文处理装置
CN108886500A (zh) * 2016-04-27 2018-11-23 思科技术公司 在服务功能链的反方向上生成分组
CN110336865A (zh) * 2019-06-21 2019-10-15 北京大米科技有限公司 服务调用方法、装置、存储介质和电子设备
US11256877B2 (en) 2012-03-16 2022-02-22 Huawei Device Co., Ltd. Input method, input apparatus, and terminal

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015174968A1 (en) * 2014-05-13 2015-11-19 Hewlett-Packard Development Company, L.P. Network access control at controller
US10454709B2 (en) * 2014-06-02 2019-10-22 Hewlett Packard Enterprise Development Lp Delivering messages according to a desired delivery order in a software defined network
US9565135B2 (en) * 2014-10-31 2017-02-07 Futurewei Technologies, Inc. System and method for service chaining with tunnel chains in software defined network
US9866472B2 (en) * 2014-12-09 2018-01-09 Oath Inc. Systems and methods for software defined networking service function chaining
US10015208B2 (en) * 2015-06-09 2018-07-03 Cisco Technology, Inc. Single proxies in secure communication using service function chaining
US10367728B2 (en) * 2015-07-15 2019-07-30 Netsia, Inc. Methods for forwarding rule hopping based secure communications
US10187218B2 (en) * 2015-09-15 2019-01-22 Google Llc Systems and methods for processing packets in a computer network
US10171336B2 (en) * 2015-12-16 2019-01-01 Telefonaktiebolaget Lm Ericsson (Publ) Openflow configured horizontally split hybrid SDN nodes
US9819512B2 (en) 2016-01-06 2017-11-14 Cisco Technology, Inc. Network service header (NSH) metadata-based end-to-end multimedia session identification and multimedia service optimization
US10547692B2 (en) * 2016-02-09 2020-01-28 Cisco Technology, Inc. Adding cloud service provider, cloud service, and cloud tenant awareness to network service chains
WO2017180098A1 (en) * 2016-04-12 2017-10-19 Hewlett Packard Enterprise Development Lp Service function chaining based on mac addresses
US10097402B2 (en) 2016-05-11 2018-10-09 Hewlett Packard Enterprise Development Lp Filter tables for management functions
WO2018165182A1 (en) 2017-03-07 2018-09-13 128 Technology, Inc. Router device using flow duplication
CN107124303B (zh) * 2017-04-19 2020-08-04 电子科技大学 低传输时延的服务链优化方法
US11178053B2 (en) * 2017-10-24 2021-11-16 Frontiir Pte Ltd. Network systems and architecture for scaling access networks with network access controller
CN108833166B (zh) * 2018-06-19 2021-07-27 中国联合网络通信集团有限公司 边缘云报文转发方法及系统、网络报文转发方法及系统
CN109728992B (zh) * 2018-11-27 2021-09-28 苏州盛科通信股份有限公司 分配转发域的方法、装置、存储介质及电子装置
CN113169936B (zh) * 2018-12-14 2023-04-18 上海诺基亚贝尔股份有限公司 用于数据流处理的服务链机制

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110299537A1 (en) * 2010-06-04 2011-12-08 Nakul Pratap Saraiya Method and system of scaling a cloud computing network
US20130272305A1 (en) * 2012-04-16 2013-10-17 Telefonaktiebolaget L M Ericsson (Publ) Chaining of inline services using software defined networking
WO2014002460A1 (en) * 2012-06-26 2014-01-03 Nec Corporation Communication method, communication system, information processing apparatus, communication terminal, and program
CN103731377A (zh) * 2013-12-31 2014-04-16 华为技术有限公司 处理报文的方法与设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8923294B2 (en) 2011-06-28 2014-12-30 Polytechnic Institute Of New York University Dynamically provisioning middleboxes
US9304801B2 (en) 2012-06-12 2016-04-05 TELEFONAKTIEBOLAGET L M ERRICSSON (publ) Elastic enforcement layer for cloud security using SDN
EP2993836B1 (en) * 2013-06-14 2020-02-19 Huawei Technologies Co., Ltd. Method and device for routing data message

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110299537A1 (en) * 2010-06-04 2011-12-08 Nakul Pratap Saraiya Method and system of scaling a cloud computing network
US20130272305A1 (en) * 2012-04-16 2013-10-17 Telefonaktiebolaget L M Ericsson (Publ) Chaining of inline services using software defined networking
WO2014002460A1 (en) * 2012-06-26 2014-01-03 Nec Corporation Communication method, communication system, information processing apparatus, communication terminal, and program
CN103731377A (zh) * 2013-12-31 2014-04-16 华为技术有限公司 处理报文的方法与设备

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11256877B2 (en) 2012-03-16 2022-02-22 Huawei Device Co., Ltd. Input method, input apparatus, and terminal
CN107204942A (zh) * 2016-03-18 2017-09-26 上海有云信息技术有限公司 一种基于五元组实现服务链透明传输的实现方法
CN108886500A (zh) * 2016-04-27 2018-11-23 思科技术公司 在服务功能链的反方向上生成分组
WO2018023692A1 (en) * 2016-08-05 2018-02-08 Nokia Shanghai Bell Co., Ltd. Security-on-demand architecture
US11349881B2 (en) 2016-08-05 2022-05-31 Alcatel Lucent Security-on-demand architecture
CN107800628A (zh) * 2016-09-07 2018-03-13 华为技术有限公司 用在软件定义网络中的数据转发装置及数据转发方法
CN107800628B (zh) * 2016-09-07 2020-12-01 华为技术有限公司 用在软件定义网络中的数据转发装置及数据转发方法
CN108141416A (zh) * 2016-09-30 2018-06-08 华为技术有限公司 一种报文处理方法、计算设备以及报文处理装置
CN108141416B (zh) * 2016-09-30 2020-04-03 华为技术有限公司 一种报文处理方法、计算设备以及报文处理装置
US10938748B2 (en) 2016-09-30 2021-03-02 Huawei Technologies Co., Ltd. Packet processing method, computing device, and packet processing apparatus
WO2018058677A1 (zh) * 2016-09-30 2018-04-05 华为技术有限公司 一种报文处理方法、计算设备以及报文处理装置
CN107196807A (zh) * 2017-06-20 2017-09-22 清华大学深圳研究生院 网络中间设备及其部署方法
CN110336865A (zh) * 2019-06-21 2019-10-15 北京大米科技有限公司 服务调用方法、装置、存储介质和电子设备

Also Published As

Publication number Publication date
US20150319089A1 (en) 2015-11-05
US9742589B2 (en) 2017-08-22
CN105099960B (zh) 2018-03-16

Similar Documents

Publication Publication Date Title
CN105099960A (zh) 用于实现服务链的方法和装置
CN111585889B (zh) 逻辑路由器
CN105191215B (zh) 用于双向服务链的数据平面学习的方法和装置
EP3070895B1 (en) Encapsulation method and system for flow identifier
CN104717137A (zh) 管理覆盖网络中的数据流的方法和系统
EP3136654A1 (en) Systems and methods for externalizing network functions via packet trunking
CN104954271A (zh) Sdn网络中的数据包处理方法和装置
CN104378298A (zh) 一种流表条目生成方法及相应设备
JP6633775B2 (ja) パケット伝送
US11184281B2 (en) Packet processing method and apparatus
CN102891803B (zh) 拥塞处理方法及网络设备
CN107426343B (zh) 用于跨网络内的多个接口代理子网内流量的方法、系统和装置
US20170288998A1 (en) Apparatus for processing network packet using service function chaining and method for controlling the same
CN109756521B (zh) 一种nsh报文处理方法、装置及系统
CN107786437A (zh) 报文转发方法及装置
CN109412949A (zh) 一种数据报文传输方法和装置
CN105099916A (zh) 开放流路由交换设备及其对数据报文的处理方法
CN105227498A (zh) 叠加网络交换机及其使用的方法
CN105939216B (zh) 报文传输的方法及装置
US11128568B2 (en) Routing packets in multiple destination networks with overlapping address spaces
US11025542B2 (en) Routing packets in overlapping address spaces
CN111770049B (zh) 全局缓存变量及报文信息存储方法及装置
CN107409088B (zh) 一种数据包转发方法和网络设备
CN105450528B (zh) 对数据包进行路由转发的方法和对应的设备
US9258223B1 (en) Packet routing in a network address translation network

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180316