基于服务链的数据报文转发方法及电子设备与流程

专利2024-03-20  112

1.本发明涉及计算机网络
技术领域
:,尤其涉及一种基于服务链的数据报文转发方法及电子设备。
背景技术
::2.计算机网络由节点及将该节点连接到另一个或者多个节点的链路组成。在采用overlay网络架构中,物理网络的功能单元(例如,物理路由器、物理网关、物理防火墙等)通过虚拟化技术抽象呈虚拟网络功能单元(例如,虚拟路由器、虚拟网关、虚拟防火墙等)。服务链(servicefunctionchain,sc)的各种虚拟网络功能单元通过虚拟机(virtualmachine,vm)来提供必要的运行环境,并在虚拟机内部通过服务链实例si形式完成对数据报文在不同节点间的东西向转发操作。3.路由发生在osi网络参考模型中的第三层(即,网络层)并包括目的地网络、下一跳信息、路由表及出接口(egress)。参图1所示,在虚拟网络(即,net-1)内,同一个虚拟网络中所部署的虚拟机vm1(或者虚拟设备或者节点)只需要一跳就可以到达另一个虚拟机vm2(或者虚拟设备或者节点),因此无法经过服务链实施例si已使用的服务(例如,防火墙服务fw),从而导致服务链(sc)失效。同时,对于不同虚拟网络内或者虚拟网络之间的虚拟机(或者虚拟设备或者节点)可以基于路由方式完成数据报文的转发,但在两个虚拟机(或者虚拟设备或者节点)均属于同一虚拟网络的场景中则无法对数据报文基于路由方式并通过服务链对数据报文执行东西向的转发操作。4.有鉴于此,有必要对现有技术中基于服务链的数据报文转发方法予以改进,以解决上述问题。技术实现要素:5.本发明的目的在于揭示一种基于服务链的数据报文转发方法及系统,用以解决同一虚拟网络环境中虚拟机之间的数据报文无法基于服务链实例执行东西向的转发操作,并实现在不修改现有路由表的前提下,对部署于同一虚拟网络内的虚拟机之间基于服务链实例执行数据报文的转发操作。6.为实现上述目的之一,本发明提供了一种基于服务链的数据报文转发方法,包括:7.对自源端虚拟机发出并被执行转发的数据报文设置下一跳信息;8.基于所述下一跳信息生成对加入服务链的源端虚拟机与对端虚拟机之间执行数据报文转发的转发表;9.添加转发头信息至所述数据报文,查找所述转发表以将所述被执行转发的数据报文重定向至位于同一服务链上的对端虚拟机,以确定接收数据报文的对端虚拟机并将所述数据报文转发至对端虚拟机。10.作为本发明的进一步改进,所述源端虚拟机与对端虚拟机均部署于同一虚拟网络,所述源端虚拟机与对端虚拟机加入服务链实例,并在所述源端虚拟机与对端虚拟机之间基于服务链关联形成数据报文转发链路。11.作为本发明的进一步改进,所述服务链关联至少两个虚拟机,以通过所述服务链关联至少两个加入服务链实例的虚拟机,其中,一个虚拟机为源端虚拟机,另一个虚拟机为对端虚拟机。12.作为本发明的进一步改进,还包括:13.向所述源端虚拟机与对端虚拟机所包含的tap端口添加标识字段,以通过所述标识字段区分所述执行数据报文转发操作的源端虚拟机与对端虚拟机是否加入服务链实例。14.作为本发明的进一步改进,所述转发表由服务链名称、下一跳信息、源接口及动作组成,所述服务链名称由租户自定义配置,所述动作包括标记下一跳信息或者删除下一跳信息。15.作为本发明的进一步改进,所述源端虚拟机与对端虚拟机之间通过服务链关联至少一中间虚拟机,所述方法还包括:16.配置部署于同一虚拟网络中建立服务链实例确定的转发路径中的源端虚拟机与中间虚拟机之间、两个中间虚拟机之间或者中间虚拟机与对端虚拟机之间所执行的数据报文转发过程中所使用的转发表,对从形成服务链实例一端的源端虚拟机向位于服务链中的任意一个中间虚拟机或者对端虚拟机所转发的数据报文设置下一跳信息,添加转发头信息至所述数据报文,以确定接收数据报文的中间虚拟机或者对端虚拟机,其中,所述源端虚拟机、中间虚拟机及对端虚拟机均部署于同一虚拟网络。17.作为本发明的进一步改进,所述服务链包括:深度包检测与防火墙,以确定是否对数据报文执行转发操作或者截断操作。18.作为本发明的进一步改进,还包括:对未加入服务链实例的源端虚拟机或者中间虚拟机所转发的数据报文添加转发头信息,并在数据报文中增加vlan头部信息。19.作为本发明的进一步改进,还包括:在将所述数据报文转发至对端虚拟机之前还包括:删除包含vlan头部信息的转发头信息。20.作为本发明的进一步改进,还包括:判断转发表是否存在下一跳信息;21.若是,将下一跳信息所关联的中间虚拟机或者对端虚拟机所标记的下一跳信息替换被执行转发操作的数据报文设置下一跳信息;22.若否,通过路由表对数据报文执行转发操作。23.作为本发明的进一步改进,还包括:24.确定所述转发头信息是否为服务链实例所关联的源端虚拟机或者对端虚拟机所转发;25.若是,解析并确定转发头信息所包含的下一跳信息,通过查找所述下一跳信息所关联的目的地的下一跳信息,以将所述目的地的下一跳信息作为服务链实例转发过程中被执行转发操作的数据报文所含vlan头部信息中的下一跳信息;26.若否,查找转发头信息所包含的下一跳信息并添加至服务链实例转发过程中被执行转发操作的数据报文所含vlan头部信息。27.作为本发明的进一步改进,所述基于所述下一跳信息生成对加入服务链的源端虚拟机与对端虚拟机之间执行数据报文转发的转发表包括:28.依次将源端虚拟机与中间虚拟机之间、两个中间虚拟机之间或者中间虚拟机与对端虚拟机之间执行数据报文转发的转发表位于同一服务链中的下一跳信息配置为下一个服务链实例的源接口,并将中间虚拟机或者对端虚拟机的下一跳信息设置为空。29.作为本发明的进一步改进,当所述转发头信息为服务链实例所关联的源端虚拟机或者对端虚拟机所转发且转发头信息所包含的下一跳信息为空时,还包括:30.查找虚拟网络的路由表,以确定所述数据报文的转发对象,所述路由表保存于linux内核模块中。31.作为本发明的进一步改进,所述路由表部署于同一个节点,32.或者,33.两个或者两个以上的节点所组成的虚拟化集群中;所述节点内或者节点间通过服务链对数据报文在源端虚拟机与对端虚拟机之间执行数据报文的东西向转发操作。34.作为本发明的进一步改进,所述源端虚拟机与对端虚拟机部署于同一个节点或者分别部署于逻辑上独立的两个节点。35.基于相同发明思想,本发明还揭示了一种电子设备,包括:36.一个或者多个处理器,由至少一个存储单元组成的存储装置,以及37.在处理器与存储装置之间建立通信连接的通信总线;38.所述处理器用于执行存储装置中存储的一个或者多个程序,以实现如前述任一项发明创造所述的基于服务链的数据报文转发方法。39.与现有技术相比,本发明的有益效果是:40.在本技术中,通过依次配置下一跳信息及包含下一跳信息的转发表,实现了位于同一服务链上的虚拟机内部及虚拟机之间执行东西向的数据报文的转发操作,由此,不仅可以有效地避免服务链功能发生失效,还实现了避免修改路由表的目的,从而提高了虚拟网络中路由表的稳定性及虚拟网络的安全性,实现了nfv资源池的动态创建和自动化部署及实际业务需求进行自动部署、弹性伸缩、故障隔离和自愈。附图说明41.图1为现有技术中在同一虚拟网络中相同虚拟网络在基于运行于虚拟机中的由一个服务链实例所构成的服务链执行数据报文的东西向转发的实例图;42.图2为本发明一种基于服务链的数据报文转发方法的整体流程图;43.图3为vlan头部信息的数据格式;44.图4为一个节点中多个虚拟机之间基于虚拟路由转发表的虚拟路由器的示意图,其中,图4中的虚拟机vm1~vmn被视为源端虚拟机、中间虚拟机及对端虚拟机;45.图5为两个节点中多个虚拟机之间基于虚拟路由转发表的虚拟路由器的示意图,其中,虚拟机vm1与vm2被视为源端虚拟机及对端虚拟机的一种具体实例;46.图6为转发表(fib)的示意图;47.图7为本发明一种基于服务链的数据报文转发方法的详细流程图;48.图8为由一个服务链实例所组成的服务链场景中位于第一虚拟网络中的虚拟机vm1通过前述服务链转发数据报文至第一虚拟网络中的虚拟机vm2的示意图;49.图9为由两个服务链实例所组成的服务链场景中位于第一虚拟网络中的虚拟机vm1通过前述服务链转发数据报文至第一虚拟网络中的虚拟机vm2的示意图;50.图10为虚拟化集群在一种实施例中的拓扑图;51.图11为虚拟化集群在另一种实施例中的拓扑图;52.图12为本发明一种电子设备的拓扑图。具体实施方式53.下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。54.需要说明的是,当一个元件/组件/单元被认为是“连接”另一个元件/组件/单元,它可以是直接连接到另一个元件/组件/单元或者可能同时存在居中元件。在详细阐述本技术所含技术方案及发明思想之前,对本技术所涉及的部分术语或者缩写所指技术含义予以简述或者定义。除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的
技术领域
:的技术人员通常理解的含义相同。55.在详细本技术各个实施例之前,对本技术各个实施例中所出现的主要技术或者英文缩写予以概要性定义与解释。56.术语“si”:服务链实例(servicechaininstance),定义出服务链的计算机实例。数据报文在网络中传递时,需要经过各种各样的业务节点,才能保证网络能够按照设计要求,提供给租户安全、快速、稳定的网络服务。当网络流量按照业务逻辑所要求的既定的顺序,经过这些业务点(主要指安全设备如防火墙、负载均衡(lb)等)即形成所谓服务链(servicefunctionchain,sc)。服务链可以理解为一种业务形式,服务链可自定义网络功能单元,自定义流量路径,从而支撑sdn网络。57.术语“vrf”:虚拟路由转发表(virtualroutingforwarding),vpn路由转发实例,每一个vrf可视为一个虚拟路由器,其包括包含独立地址空间的路由表、归属于该vrf的接口集合、归属于该vrf的路由协议。一个pe路由器,可以维护一个或多个vrf,同时维护一个公网的路由表(又称全局路由表),多个vrf实例相互分离独立;其中,pe路由器(provideredge)是mplsvpn网络的关键设备,根据pe路由器是否参与客户端的路由。mplsvpn分成l3mplsvpn和l2mplsvpn;其中,l3mplsvpn遵循rfc2547bis标准,使用mbgp在pe路由器之间分发路由信息,使用mpls技术在vpn站点之间传送数据,因而又称为“bgp/mplsvpn”。58.下述通过若干实施例对本发明之核心要义予以阐述。59.本实施例所揭示的基于服务链的数据报文转发方法利用了三层路由协议(l3),以实现虚拟网络内不同虚拟机(或者虚拟设备)的服务链实现技术。每个服务链由通过服务功能数据描述的一个或者多个服务功能组成。通过由一个或者多个服务功能的有序组合转发,以提供整体的网络服务、计算服务、注册服务、认证服务、策略路由服务等各种计算机事件所定义的能够响应租户在客户端(例如,具gui的电子设备、具输入/输出装置的电子设备)发起的各种请求所对应的各种服务。租户可通过客户端并基于访问host直接获取资源或者直接对数据报文执行东西向的转发操作。前述转发操作可基于服务或者应用的执行予以被动地发生并执行。同时,本实施例中的转发操作被理解为从一个设备(虚拟机的上位概念)发送至另一个设备的单向转发过程,或者,一个设备与另一个设备之间所进行的双向转发过程。同时,该转发方法在基于服务链实例并加入服务链执行数据报文的东西向转发过程中,不需要借助物理交换机或者物理路由器,并由租户通过自定义的转发表予以实现。此外,该本实施例所揭示的转发方法不需要采用nsh封装,而只存储辅助路由所查找的信息(例如,下一跳信息),解决了采用nsh封装并在通过服务链转发过程中所存在的转发路径需要基于每条业务流配置、配置复杂、可扩展性差等诸多技术缺陷。同时,本实施例中所揭示的转发方法借助服务链实现了串联多个服务链实施例的面对,并可根据租户对服务链实施的自定义配置,提高了数据报文转发过程的灵活性,以适应租户的不同需求,以更好地适应sdn网络环境。60.参图2至图9所示,本实施例揭示了一种基于服务链的数据报文转发方法(以下或简称“转发方法”),包括以下步骤s1至步骤s3。61.简要而言,该转发方法旨在基于由一个或者多个服务链实施例(si)所组成的服务链(sc)且位于虚拟网络中的虚拟机执行数据报文的东西向转发操作,且不限定执行转发过程中的两个虚拟机是否均属于同一虚拟网络则在所不问。图4与图5所示出的net-1与net-2均为虚拟网络。执行数据报文的东西向转发操作发生于数据链路层。一个服务链通常都会有入口节点和出口节点,服务链的组织顺序,和服务节点的物理拓扑无关数据报文进入服务链以后,就会按照服务链既定的顺序穿过各个服务节点。服务链的每一个节点,都知道当前服务链的下一个服务节点在哪里,并通过overlay网络送达到下一个服务节点处理。在服务链的最后一个节点,也会根据数据报文最终的目的vtep(vxlantunnelendpoint)进行封装,完成数据报文的转发操作。vtep部署于计算节点(未示出)的br-tun(bridge-tunnel)上或者位于tor交换机中。从云平台部署逻辑而言,本实施例中的节点200及节点300均可视为计算节点。当vtep位于br-tun的实例中,br-tun连接br-int(集成网桥)并最终连接qbr网桥,节点中的一个或者多个虚拟机耦接至qbr网桥。62.步骤s1、对自源端虚拟机发出并被执行转发的数据报文设置下一跳信息。63.可选地,源端虚拟机与对端虚拟机均部署于同一虚拟网络,源端虚拟机与对端虚拟机加入服务链实例,并在源端虚拟机与对端虚拟机之间基于服务链关联形成数据报文转发链路。服务链关联至少两个虚拟机,以通过服务链关联至少两个加入服务链实例的虚拟机,其中,一个虚拟机为源端虚拟机,另一个虚拟机为对端虚拟机。参图8所示,服务链(sc)可由一个服务链实施例si组成并连接虚拟机vm1与虚拟机vm2,虚拟机vm1被视为源端虚拟机时,虚拟机vm2则被视为对端虚拟机。可选地,参图9所示,服务链(sc)也可由两个服务链实施例si,例如,服务链实例si10与服务链实例s20(或者更多个服务链实例)组成并连接虚拟机vm1与虚拟机vm2。64.可选地,源端虚拟机与对端虚拟机均为虚拟机且配置tap端口,以通过tap端口供数据报文流入或者流出虚拟机。该转发方法还包括:向源端虚拟机与对端虚拟机所包含的tap端口添加标识字段,以通过标识字段区分执行数据报文转发操作的源端虚拟机与对端虚拟机是否加入服务链实例si。具体地,标识字段可为bool型字段,例如,boolis_si_interface。65.步骤s2、基于所述下一跳信息生成对加入服务链的源端虚拟机与对端虚拟机之间执行数据报文转发的转发表。66.具体而言,在本实施例中,基于所述下一跳信息生成对加入服务链的源端虚拟机与对端虚拟机之间执行数据报文转发的转发表包括:67.依次将源端虚拟机与中间虚拟机之间、两个中间虚拟机之间或者中间虚拟机与对端虚拟机之间执行数据报文转发的转发表位于同一服务链(sc)中的下一跳信息配置为下一个服务链实例的源接口,并将中间虚拟机或者对端虚拟机的下一跳信息设置为空。例如,参下述表二与表三所示,设置为空在的含义为“‑”。虽然在本实施例中,未示出具体的中间虚拟机,但可将中间虚拟机视为基于服务链执行转发过程中的一种虚拟机,例如,参图9中虚拟机vm1与虚拟机vm2(被理解为对端虚拟机)之间还可部署一个或者多个第三个虚拟机(为示出)并将该第三个虚拟机视为中间虚拟机,中间虚拟机与虚拟机vm1(可被理解为源端虚拟机)之间或者两个中间虚拟机之间或者中间虚拟机与对端虚拟机之间并将执行数据报文转发的转发表位于同一服务链中的下一跳信息配置为下一个服务链实例的源接口(sourceinterface),如果只有两个虚拟机(参图8),则将对端虚拟机的下一跳信息设置为空;如果存在三个虚拟机(即,虚拟机vm1、未示出的中间虚拟机及虚拟机vm2),且如果服务链仅在虚拟机vm与第一个中间虚拟机转发数据报文,则将执行数据报文转发的转发表位于同一服务链中的下一跳信息配置为下一个服务链实例的源接口。68.参图6所示,转发表(fib)由服务链名称(servicechainname)、下一跳信息(nexthop)、源接口(sourceinterface)及动作(action)组成,服务链名称由租户自定义配置,动作包括标记下一跳信息(tagging)或者删除下一跳信息(untagging)。在本实施例中,nexthop(或者label)均指下一跳信息。69.可选地,该转发方法还包括:判断转发表是否存在下一跳信息;70.若是,将下一跳信息所关联的中间虚拟机或者对端虚拟机所标记的下一跳信息替换被执行转发操作的数据报文设置下一跳信息;71.若否,通过下述表一所揭示的路由表对数据报文执行转发操作,其中,表一所示出的路由表保存于linux内核模块中。[0072][0073]表一:路由表[0074]步骤s3、添加转发头信息至数据报文,查找转发表以将所述被执行转发的数据报文重定向至位于同一服务链上的对端虚拟机,以确定接收数据报文的对端虚拟机并将所述数据报文转发至对端虚拟机。同时,将转发表fib(或被理解为虚拟路由转发表)加入服务链实例si中。[0075]源端虚拟机与对端虚拟机之间通过服务链(sc)关联至少一中间虚拟机,方法还包括:配置部署于同一虚拟网络中建立服务链实例确定的转发路径中的源端虚拟机与中间虚拟机之间、两个中间虚拟机之间或者中间虚拟机与对端虚拟机之间所执行的数据报文转发过程中所使用的转发表(fib),对从形成服务链实例一端的源端虚拟机向位于服务链(sc)中的任意一个中间虚拟机或者对端虚拟机所转发的数据报文设置下一跳信息,添加转发头信息至数据报文,以确定接收数据报文的中间虚拟机或者对端虚拟机,其中,源端虚拟机、中间虚拟机及对端虚拟机均部署于同一虚拟网络。[0076]可选地,该转发方法还包括:在将数据报文转发至对端虚拟机之前还包括:删除包含vlan头部信息的转发头信息;以及,确定转发头信息是否为服务链实例所关联的源端虚拟机或者对端虚拟机所转发;若是,解析并确定转发头信息所包含的下一跳信息,通过查找下一跳信息所关联的目的地的下一跳信息,以将目的地的下一跳信息作为服务链实例转发过程中被执行转发操作的数据报文所含vlan头部信息中的下一跳信息;若否,查找转发头信息所包含的下一跳信息并添加至服务链实例转发过程中被执行转发操作的数据报文所含vlan头部信息。[0077]在本实施例中,该服务链(sc)包括:深度包检测(dpi)与防火墙(firewall,fw),以确定是否对数据报文执行转发操作或者截断操作。服务链的内容包括dpi或者防火墙等网络功能虚拟化,且服务链的内容可由租户或者管理员予以自定义。可选地,该转发方法还包括:对未加入服务链实例si的源端虚拟机或者中间虚拟机所转发的数据报文添加转发头信息,并在数据报文中增加如图3所示出的vlan头部信息,由此支持overlay网络,并解决不同虚拟网络所造成的子网重叠的技术问题。vlan头部信息包括目的地地址(destinationaddress)、源地址(sourceaddress)、vlantag、type/len、data及framecheck。同时,通过服务链实例所包含的源接口并填入转发表fib,然后由dpi和/或fw的配置参数确定数据报文在同一虚拟网络中通过至少一服务链实施例所执行的转发操作。服务链实例(例如si10)所配置的转发表中的下一跳信息被配置为与服务链实例位于同一服务链中的下一个服务链实例(例如si20)所包含的源接口,从而实现可通过一个或者多个服务链实例在虚拟网络中执行数据报文的转发操作。[0078]参图7所示,更具体地,申请人针对图8及图9的场景中数据报文的转发过程予以进一步阐述。[0079]例如,当虚拟机vm1在同一虚拟网络中将数据报文转发至虚拟机vm2过程中,执行如下子步骤101~子步骤114。申请人示例性地阐述数据报文从虚拟机vm1基于服务链实施例si10和/或服务链实例si20转发至虚拟机vm2的转发过程,本领域技术人员可知基于本发明的发明思想将数据报文从虚拟机vm2转发至虚拟机vm1的过程亦同理所述。[0080]开始。[0081]子步骤101、获取虚拟机vm1发出的数据报文。此时虚拟机vm1将数据报文开始执行虚拟机vm2的转发过程。被执行转发操作的数据报文不确定是否包含源接口的vlan头部信息,该vlan头部信息包含转发头信息,因此需要通过下述子步骤102予以判断。[0082]子步骤102、判断数据报文是否为加入服务链实例的虚拟机vm1发出,若是,跳转执行子步骤103;若否,跳转执行子步骤113。[0083]子步骤103、解析数据报文转发头信息并查找si转发表。[0084]子步骤113、根据虚拟网络所在si的配置,添加数据报文的转发头信息,并设置vlan头部信息,然后执行子步骤114、将数据报文发送至第一个si的源接口,第一个si的源接口处理完毕后对数据报文执行转发操作,此时该数据报文已经携带了vlan头部信息及转发头信息,转发头信息通过服务链实例(例如,si10和/或si20)关联源端虚拟机(即,虚拟机vm1)及对端虚拟机(即,虚拟机vm2)后跳转执行子步骤101。[0085]子步骤104、判断vlan头部信息所包含的下一跳信息是否为服务链实例si的源接口,若是,跳转执行子步骤106;若否,跳转执行子步骤105。[0086]子步骤106、发送至下一个服务链实例si的源接口,等待下一个服务链实例si(例如,si20)的源接口处理完毕后执行数据报文的转发操作,并结束。[0087]子步骤105、查找原始的路由表,并去除携带的vlan头部信息。具体的,子步骤105包括查找保存于linuxkernel中的原始的路由表,并去除数据报文所携带的vlan头部信息。至此阶段才开始访问保存于linux内核模块中之前保存的路由表,而在此之前仅仅依赖转发表fib执行数据报文在数据转发平面内执行转发操作,因此,本实施例所揭示的转发方法可基于服务链执行转发操作且不依赖并不会对借助原始的路由表(即,保存于linux内核模块中的本地路由表)予以转发操作,由此实现减少并避免修改路由表的目的,从而提高了虚拟网络中路由表的稳定性及虚拟网络的安全性。[0088]子步骤107、查找转发表以将所述被执行转发的数据报文重定向至位于同一服务链上的对端虚拟机(例如,虚拟机vm2),从而最终将数据报文沿东西向的数据转发平面转发至作为对端虚拟机的虚拟机vm2。[0089]结束。[0090]结束后,将数据报文转发至位于同一个服务链中的下一个服务链实例,例如,si10执行结束后,由si20继续执行si10之前执行的步骤,具体参图7所示。[0091]示例性地,参下述表二与表三以及图8、图9所示,申请人示出了由一个服务链实例(si10)所组成的服务链以及由两个服务链实例(si10及si20)所组成的服务链的实例中,源端虚拟机及对端虚拟机之间执行转发操作的一种典型实例。服务链实例运行于提供虚拟服务的虚拟机(未示出)并区别于远端虚拟机、中间虚拟机及对端虚拟机。[0092][0093]表二:虚拟路由转发表(vrf-1)[0094][0095]表三:虚拟路由转发表(vrf-2)[0096]参图4及图5所示,当转发头信息为服务链实例所关联的源端虚拟机或者对端虚拟机所转发且转发头信息所包含的下一跳信息为空时,还包括:[0097]查找虚拟网络的路由表(保存于linux内核模块中),以确定数据报文的转发对象,路由表保存于linux内核模块中。[0098]在本实施例中,该路由表可部署于同一个节点,例如,参图4所示,路由表61部署于节点200的linux内核模块(即,linuxkernel60),且由路由表61确定转发表fib62~转发表fib62n。虚拟网络net-1中部署虚拟机vm1~虚拟机vmn,且前述虚拟机vm1~虚拟机vmn这n个虚拟机之间可通过一个服务链或者多个服务链执行数据报文的东西向转发操作。[0099]又例如,该路由表还可部署于两个或者两个以上的节点所组成的虚拟化集群100’中;节点内或者节点间通过服务链对数据报文在源端虚拟机与对端虚拟机之间执行数据报文的东西向转发操作。参图5所示,节点200形成虚拟网络net-1,linuxkernel60中形成路由表61,且由路由表61确定转发表fib62。节点300形成虚拟网络net-2,linuxkernel66中形成路由表64,且由路由表64确定转发表fib63。虚拟机vm1与虚拟机vm2之间通过一个服务链执行数据报文的东西向转发操作。此时,节点200或者节点300中一个或者多个虚拟机之间基于服务链所执行的数据报文转发操作参如图4所揭示的单节点的实例。图4中的路由表61或者图5中的路由表61及路由表64运行于linux内核模块中,并被节点200或者节点300中所部署的pe路由器予以管理。[0100]结合前述表二与表三所示,表二中的vrf-1包含两个转发条目,表三中的vrf-2包含三个转发条目。源接口用于确定需要查找的转发条目,并由租户自行配置。vrf(虚拟路由转发表)与本实施例中的转发表fib作等同理解。当将vrf-1加入si10时会将si10的接口作为源接口填入转发表fib中,参表二所示,vrf-1包含两个转发条目,源接口tap551a7834-c0定义在第二个条目中,此时vrf-1的第二个转发条目中的下一跳信息为空“‑”,则证明该服务链sc不存在下一跳信息,此时在将所述数据报文转发至对端虚拟机(即vm2)之前还包括:删除包含vlan头部信息的转发头信息,从而剥离vlan头部信息及其包含的转发头信息,并从linux内核模块中查找路由表,以根据原始的路由表执行数据报文的转发操作。[0101]参表三所示,vrf-2(虚拟路由转发表)有两个服务链实例,其中,一个服务链实例为dpi服务,另一个服务链实例为fw服务,尤其地,表征fw服务的第二个服务链实例的第二个转发条目中保存了表征dpi服务的源接口(即,tap551a7834-c0)。此时,表明某个具体的数据报文是从dpi服务所转发过来的,因此将携带fw服务的vlan头部信息发送至fw服务所在的服务链实例的下一跳信息(即,label6)。在本实施例中,作为服务链实例si的虚拟机接口上配置下一跳信息,以根据该下一跳信息依次生成体现服务链实例转发规则的转发表以作为同一个服务链上的一个转发表。转发表中每一个服务链实例的下一跳信息被配置为由租户所配置的相互串联的服务链中被前一个服务链实例所关联的下一个服务链实例的下一跳信息,当出现最后一个服务链实例为空时,则触发从linux内核模块中查找原始路由表事件。由此,在本实施例中,对数据报文执行转发操作过程中可不修改保存于linux内核模块中的原始路由表,从而可基于同一服务链上的虚拟机内部(例如,图8)及虚拟机之间(例如,图9)执行东西向的数据报文的转发操作,从而有效地避免了服务链功能发生失效,同时还实现了租户逻辑组网与物理组网的解耦,控制平面和转发平面的分离,以确保数据报文在服务链内各个节点间传递。[0102]参图4与图8所示,其示出了一个服务链实例si10执行转发操作的实例,其示出了位于同一虚拟网络net-1中的虚拟机vm1执行转发操作以将数据报文转发至虚拟机vm2的具体过程。原始转发表(origin-fib)的前缀为1.1.1.4/32,虚拟机vm2的源接口为:tap551a7869-fe。当数据报文基于si10转发至虚拟机vm2过程中,单向箭头1依次指向si10,并由单向箭头2指向虚拟机vm2以形成请求流。在转发过程中,向数据报文添加vlan头部信息,虚拟机vm1的虚拟ip地址为1.1.1.3,出口(egress)配置的下一跳信息为label5,添加vlan头部信息后,数据报文被转发至si10中label5所在的接口,并由运行si10的虚拟机处理完毕后从部署并运行服务链实例si10的虚拟机予以转发,并发送至虚拟机vm2。虚拟机vm2的虚拟ip地址为1.1.1.4。当数据报文转发至虚拟机vm2中,根据转发头信息的下一条信息查找转发表,结合前述表二所示,如果转发表中没有下一跳信息,则重新查找原始的路由表(nexthop:lookuporigin-rt)。在基于原始的转发表执行转发操作前,需要将vlan头部信息及转发头去除(即,untagging),从而完成数据报文从虚拟机vm1转发至虚拟机vm2,以形成如虚线箭头3所示出的应答流。在本实施例中,rt为路由表,即routingtable。[0103]参图9所示,其示出了两个服务链实例si10、si20执行转发操作的实例,其示出了位于同一虚拟网络net-1中的虚拟机vm1执行转发操作以将数据报文转发至虚拟机vm2的具体过程,其中,图9所示出的虚拟机vm1与虚拟机vm2可部署于同一个节点的同一虚拟网络,也可部署于不同节点的不同虚拟网络中。服务链实例si10与服务链实例si20的下一跳信息分别配置为label5与label6,运行服务链实例si10的虚拟机(未示出)的虚拟ip地址为1.1.1.5,运行服务链实例si20的虚拟机(未示出)的虚拟ip地址为1.1.1.6。在图9所示出的转发实例中,单向箭头1依次指向si10,单向箭头2由si10指向si20,并由单向箭头3由si20指向虚拟机vm2。虚线箭头4由虚拟机vm2指向si10,由于需要对解析并确定转发头信息所包含的下一跳信息,应答流以虚线箭头4指向si10后,运行si10的虚拟机将源接口的label5替换为label6,并以虚线箭头5指向si20予以应答,当数据报文达到运行si20的虚拟机后,应答流以虚线箭头6指向虚拟机vm1,从而完成当数据报文由虚拟机vm1转发至虚拟机vm2后,由虚拟机vm2以虚线箭头4、虚线箭头5及虚拟箭头6共同组成应答流。图9中实线箭头1、实线箭头2及实线箭头3共同组成请求流。[0104]源端虚拟机与对端虚拟机部署于同一个节点(例如,图4所示出的节点200)或者分别部署于逻辑上独立的两个节点(例如,图5所示出的节点200与节点300)。本实施例所揭示的节点可被视为物理计算机或者虚拟服务器或者集群服务器100(100’),源端虚拟机与对端虚拟机均作为虚拟机被创建并全部运行于节点200中,或者全部运行于节点300中,或者分别运行与节点200与节点300中。[0105]本实施例所揭示的转发方法,通过依次配置下一跳信息及包含下一跳信息的转发表,实现了位于同一服务链上的虚拟机内部及虚拟机之间执行东西向的数据报文的转发操作,由此,不仅可以有效地避免服务链功能发生失效,还实现了避免修改路由表的目的,从而提高了虚拟网络中路由表(rt)的稳定性及虚拟网络的安全性,例如,可避免恶意修改路由表的路由条目以确保数据报文转发至对端设备(对端虚拟机的一种上位概念)。申请人指出前述服务链功能是指由服务链sc能够正常执行数据报文转发。[0106]参图10与图11所示,基于前文所揭示的基于服务链的数据报文转发方法的技术方案,本实施例还揭示了一种虚拟化集群100(100’)。虚拟化集群包括隧道80,耦接隧道80的至少一个节点,耦接隧道80的host400,租户可通过host400访问节点200,300中的数据、服务、应用,或者执行节点间的数据报文沿东西向执行转发操作。在实际环境中,节点200及节点300可通过物理网卡eth耦接至隧道80,隧道80由数据网络交换机提供节点间的转发通道。[0107]耦接隧道80的一个节点(例如图10所示),耦接隧道80的两个或者两个以上的节点(例如图11所示)。节点200,300中部署一个或者多个虚拟机,源端虚拟机与对端虚拟机作为数据报文转发方向予以定义。参图11所示,节点200中创建的虚拟机vm1基于一个服务链实例(si)所组成的服务链将数据报文转发至节点300中的虚拟机vm2时,虚拟机vm1为源端虚拟机,虚拟机vm2为对端虚拟机。数据报文进入服务链后所使用的配置信息由数据报文进入overlay网络时,根据vcf控制器(virtualconvergedframework控制器)下发的策略决定。vcf控制器会基于不同的租户应用,灵活的下发分类策略,并确保数据报文在服务链内各个节点内和/或节点间(例如,图10中节点200内部部署的两个虚拟机之间,或者,图11中节点200与节点300所分别部署的两个虚拟机之间)传递,以适用于sdn网络。[0108]通常的,随着nfv与sdn的融合,且由于数据报文在数据平面内被予以转发,而控制平面的功能被部署在形成控制节点的虚拟机或者专有设备中,因此同一虚拟网络或者不同虚拟网络之间基于同一服务链执行数据报文的转发操作过程中需要依赖于将通用的硬件设备虚拟成为网络定义软件功能的资源,由于应用或者服务存在区别或者个性化区别,因此前述资源也存在区别,因此通过本实施例所揭示的转发方法还可实现nfv资源池的动态创建和自动化部署及实际业务需求进行自动部署、弹性伸缩、故障隔离和自愈。[0109]基于前文所揭示的基于服务链(sc)的数据报文转发方法的技术方案,进一步的,本实施例还揭示了一种电子设备500。[0110]参图12所示,本实施例还揭示了一种电子设备500,其包括:[0111]一个或者多个处理器51,由至少一个存储单元组成的存储装置52,以及在处理器51与存储装置52之间建立通信连接的通信总线53。处理器51用于执行存储装置52中存储的一个或者多个程序,以实现如前述实施例所揭示的基于服务链的数据报文转发方法。[0112]具体的,该存储装置52可由存储单元521~存储单元52j所组成,其中,参数j取大于或者等于1的正整数。处理器51可为asic、fpga、cpu、mcu或者其他具有指令处理功能的物理硬件或者虚拟设备。通信总线53的形式并不需要予以具体限定,i2c总线、spi总线、sci总线、pci总线、pci-e总线、isa总线等,并可根据电子设备500的具体类型及应用场景需求予以合理变更。通信总线53并非本技术发明点,故在本技术中不予展开陈述。[0113]存储装置52可基于ceph或者gluster-fs等分布式文件系统,也可为raid0~raid7磁盘阵列,也可被配置为一块或者多块硬盘或者可移动存储装置、数据库服务器、ssd(solid-statedisk)、nas存储系统或者san存储系统组成。该电子设备500可被配置为超融合一体机(hyperconvergedinfrastructure,hci)、计算机、服务器、数据中心、虚拟集群、便携式移动终端、web系统、金融支付平台或者erp系统,以及虚拟在线支付平台/系统等;其中,超融合一体机是一种高性能多节点服务器,主要是分层存储和服务器虚拟化技术,把计算节点、存储资源、网络交换高度集成到一台1u、2u或者4u服务器中,给企业或者终端租户提供超融合基础架构设施,以全面提升企业的it能力。[0114]尤其地,本实施例所揭示的一种电子设备500可通过前述实施例所揭示的基于服务链的数据报文转发方法,对基于租户在客户端(例如通过有线或者无线方式向虚拟化集群100(100’)中虚拟机vm发起的访问请求或者操作所对应的一个任务或者多个并行任务予以可靠响应,尤其是在对实时性及安全性要求非常严苛的场景,例如购物网站的在线支付系统、金融机构的结算系统、电子购票系统等场景中。本实施例所揭示的一种电子设备500所包含的基于服务链的数据报文转发方法与前述实施例所具有相同部分的技术方案,参前述所示,在此不再赘述。[0115]同时,在本实施例中所揭示的一种电子设备500可被理解为具有物理形态的实体设备(例如,pos机、自动取款机),也可被理解为运行有如前述实施例所揭示的基于服务链的数据报文转发方法的软件系统(例如,财务系统或者erp系统)或者一种互联网在线应用(例如,app软件),甚至可以通过光纤或者网线互联的两台或者多台组成直连拓扑结构或者树形拓扑结构或者星型拓扑结构的计算机系统/数据中心。[0116]在本实施例中,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(例如,个人计算机,服务器或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。[0117]上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。[0118]此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。当前第1页12当前第1页12
技术特征:
1.基于服务链的数据报文转发方法,其特征在于,包括:对自源端虚拟机发出并被执行转发的数据报文设置下一跳信息;基于所述下一跳信息生成对加入服务链的源端虚拟机与对端虚拟机之间执行数据报文转发的转发表;添加转发头信息至所述数据报文,查找所述转发表以将所述被执行转发的数据报文重定向至位于同一服务链上的对端虚拟机,以确定接收数据报文的对端虚拟机并将所述数据报文转发至对端虚拟机。2.根据权利要求1所述的基于服务链的数据报文转发方法,其特征在于,所述源端虚拟机与对端虚拟机均部署于同一虚拟网络,所述源端虚拟机与对端虚拟机加入服务链实例,并在所述源端虚拟机与对端虚拟机之间基于服务链关联形成数据报文转发链路。3.根据权利要求1所述的基于服务链的数据报文转发方法,其特征在于,所述服务链关联至少两个虚拟机,以通过所述服务链关联至少两个加入服务链实例的虚拟机,其中,一个虚拟机为源端虚拟机,另一个虚拟机为对端虚拟机。4.根据权利要求2所述的基于服务链的数据报文转发方法,其特征在于,还包括:向所述源端虚拟机与对端虚拟机所包含的tap端口添加标识字段,以通过所述标识字段区分所述执行数据报文转发操作的源端虚拟机与对端虚拟机是否加入服务链实例。5.根据权利要求2所述的基于服务链的数据报文转发方法,其特征在于,所述转发表由服务链名称、下一跳信息、源接口及动作组成,所述服务链名称由租户自定义配置,所述动作包括标记下一跳信息或者删除下一跳信息。6.根据权利要求2所述的基于服务链的数据报文转发方法,其特征在于,所述源端虚拟机与对端虚拟机之间通过服务链关联至少一中间虚拟机,所述方法还包括:配置部署于同一虚拟网络中建立服务链实例确定的转发路径中的源端虚拟机与中间虚拟机之间、两个中间虚拟机之间或者中间虚拟机与对端虚拟机之间所执行的数据报文转发过程中所使用的转发表,对从形成服务链实例一端的源端虚拟机向位于服务链中的任意一个中间虚拟机或者对端虚拟机所转发的数据报文设置下一跳信息,添加转发头信息至所述数据报文,以确定接收数据报文的中间虚拟机或者对端虚拟机,其中,所述源端虚拟机、中间虚拟机及对端虚拟机均部署于同一虚拟网络。7.根据权利要求2所述的基于服务链的数据报文转发方法,其特征在于,所述服务链包括:深度包检测与防火墙,以确定是否对数据报文执行转发操作或者截断操作。8.根据权利要求6所述的基于服务链的数据报文转发方法,其特征在于,还包括:对未加入服务链实例的源端虚拟机或者中间虚拟机所转发的数据报文添加转发头信息,并在数据报文中增加vlan头部信息。9.根据权利要求8所述的基于服务链的数据报文转发方法,其特征在于,还包括:在将所述数据报文转发至对端虚拟机之前还包括:删除包含vlan头部信息的转发头信息。10.根据权利要求2至9中任一项所述的基于服务链的数据报文转发方法,其特征在于,还包括:判断转发表是否存在下一跳信息;若是,将下一跳信息所关联的中间虚拟机或者对端虚拟机所标记的下一跳信息替换被执行转发操作的数据报文设置下一跳信息;若否,通过路由表对数据报文执行转发操作。
11.根据权利要求10所述的基于服务链的数据报文转发方法,其特征在于,还包括:确定所述转发头信息是否为服务链实例所关联的源端虚拟机或者对端虚拟机所转发;若是,解析并确定转发头信息所包含的下一跳信息,通过查找所述下一跳信息所关联的目的地的下一跳信息,以将所述目的地的下一跳信息作为服务链实例转发过程中被执行转发操作的数据报文所含vlan头部信息中的下一跳信息;若否,查找转发头信息所包含的下一跳信息并添加至服务链实例转发过程中被执行转发操作的数据报文所含vlan头部信息。12.根据权利要求11所述的基于服务链的数据报文转发方法,其特征在于,所述基于所述下一跳信息生成对加入服务链的源端虚拟机与对端虚拟机之间执行数据报文转发的转发表包括:依次将源端虚拟机与中间虚拟机之间、两个中间虚拟机之间或者中间虚拟机与对端虚拟机之间执行数据报文转发的转发表位于同一服务链中的下一跳信息配置为下一个服务链实例的源接口,并将中间虚拟机或者对端虚拟机的下一跳信息设置为空。13.根据权利要求11所述的基于服务链的数据报文转发方法,其特征在于,当所述转发头信息为服务链实例所关联的源端虚拟机或者对端虚拟机所转发且转发头信息所包含的下一跳信息为空时,还包括:查找虚拟网络的路由表,以确定所述数据报文的转发对象,所述路由表保存于linux内核模块中。14.根据权利要求13所述的基于服务链的数据报文转发方法,其特征在于,所述路由表部署于同一个节点,或者,两个或者两个以上的节点所组成的虚拟化集群中;所述节点内或者节点间通过服务链对数据报文在源端虚拟机与对端虚拟机之间执行数据报文的东西向转发操作。15.根据权利要求14所述的基于服务链的数据报文转发方法,其特征在于,所述源端虚拟机与对端虚拟机部署于同一个节点或者分别部署于逻辑上独立的两个节点。16.一种电子设备,其特征在于,包括:一个或者多个处理器,由至少一个存储单元组成的存储装置,以及在处理器与存储装置之间建立通信连接的通信总线;所述处理器用于执行存储装置中存储的一个或者多个程序,以实现如权利要求1至15中任一项所述的基于服务链的数据报文转发方法。

技术总结
本发明提供了基于服务链的数据报文转发方法及电子设备,该基于服务链的数据报文转发方法,包括:对自源端虚拟机发出并被执行转发的数据报文设置下一跳信息;基于下一跳信息生成对加入服务链的源端虚拟机与对端虚拟机之间执行数据报文转发的转发表;添加转发头信息至数据报文,查找转发表以将被执行转发的数据报文重定向至位于同一服务链上的对端虚拟机,以确定接收数据报文的对端虚拟机并将数据报文转发至对端虚拟机。在本申请中,通过依次配置下一跳信息及包含下一跳信息的转发表,实现了位于同一服务链上的虚拟机内部及虚拟机之间执行东西向的数据报文的转发操作,避免了修改路由表,提高了路由表的稳定性及虚拟网络的安全性。安全性。安全性。


技术研发人员:ꢀ(74)专利代理机构
受保护的技术使用者:江苏安超云软件有限公司
技术研发日:2022.07.12
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-7238.html

最新回复(0)