报文转发方法以及装置与流程

文档序号:13942809阅读:268来源:国知局
本发明涉及通信
技术领域
,尤其涉及一种报文转发方法以及装置。
背景技术
:在sfc(servicefunctionchain,服务功能链或服务链)组网中,可以包括sfc转发节点、sfc控制器以及主机等,除此之外,还可以存在很多服务节点,例如firewall(防火墙)、qos(服务质量)、ips(intrusionpreventionsystem,入侵防御系统)、负载均衡器等传统的服务节点,这些服务节点提供了必要的服务。对于有服务链部署需求的环境中,可以将特定的服务组合为一个有序的集合,引导业务报文按次序通过服务节点,进而使得报文在数据中心传递的时候,能够经过各种各样的服务节点完成对应的处理,保证安全、快速、稳定的网络服务。然而,由于服务节点设备价格通常较为昂贵,其更新换代的速度较慢,为了节约成本,在部署sfc组网时,则会存在不支持sfc功能的传统的服务节点,因此,如何在具有不支持sfc功能的服务节点的sfc组网中实现业务处理是亟待解决的问题。技术实现要素:针对现有技术的缺陷,本发明提供了一种报文转发方法以及装置。本发明提供一种报文转发方法,应用于sfc网络中的sfc代理节点,所述sfc网络中的sfc代理节点为一个或多个,所述sfc网络中还包括sfc转发节点,所述sfc转发节点与所述sfc代理节点之间建立vxlan隧道,若所述sfc网络中具有多个sfc代理节点,所述sfc代理节点之间建立vxlan隧道,其中该方法包括:接收来自sfc转发节点或来自远端sfc代理节点的vxlan报文,根据所述vxlan报文携带的服务链标识,将vxlan解封装后的报文与预存的流表项进行匹配;根据匹配的第一流表项指示的第一转发信息发送vxlan解封装后的报文;接收来自服务节点的报文,根据所述报文的五元组、本设备接收所述报文的端口以及所述端口对应的vlan信息,将所述报文与预存的流表项进行匹配;根据匹配到的第二流表项指示的第二转发信息发送所述报文。本发明还提供一种报文转发装置,应用于sfc网络中的sfc代理节点,所述sfc网络中的sfc代理节点为一个或多个,所述sfc网络中还包括sfc转发节点,所述sfc转发节点与所述sfc代理节点之间建立vxlan隧道,若所述sfc网络中具有多个sfc代理节点,所述sfc代理节点之间建立vxlan隧道,所述装置包括:第一接收单元,用于接收来自sfc转发节点或来自远端sfc代理节点的vxlan报文,根据所述vxlan报文携带的服务链标识,将vxlan解封装后的报文与预存的流表项进行匹配;根据匹配的第一流表项指示的第一转发信息发送vxlan解封装后的报文;第二接收单元,用于接收来自服务节点的报文,根据所述报文的五元组、本设备接收所述报文的端口以及所述端口对应的vlan信息,将所述报文与预存的流表项进行匹配;根据匹配到的第二流表项指示的第二转发信息发送所述报文。本发明提供的报文转发方法以及装置,无需在sfc网络中部署高额的具有sfc功能的服务节点,而是通过部署的sfc代理节点通过vlan和传统服务节点互连,通过报文特征和vlan信息将流量引入传统服务节点处理,将传统服务节点返回的流量重新进行服务链封装后返回vxlan网络,增加了sfc网络的易用性,大幅降低了节点部署成本。附图说明图1是本发明实施例中一种报文转发方法所应用的sfc网络示意图;图2是本发明实施例中一种报文转发方法流程示意图;图3是本发明实施例中一种vxlan头部信息的格式示意图;图4是本发明实施例中一种报文转发装置的逻辑结构示意图;图5是本发明实施例中报文转发装置所在sfc代理节点的硬件架构示意图。具体实施方式为使本申请的目的,技术方案及优点更加清楚明白,以下参照附图对本申请方案做进一步的详细说明。为了解决现有技术中存在的问题,本发明提供了一种报文转发方法以及装置。图1示出了本发明一种报文转发方法所应用的sfc网络示意图,包括多个sfc转发节点101、102,接入sfc转发节点101的虚拟主机vm103以及接入sfc转发节点102的虚拟主机vm104、vm105,连接sfc转发节点101的sfc代理节点106以及连接sfc转发节点102的sfc代理节点107,还包括接入sfc代理节点106的多个服务节点108、109,以及接入sfc代理节点107的服务节点110,sfc转发节点101与sfc代理节点106之间建立有vxlan隧道,sfc转发节点102与sfc代理节点107之间建立有vxlan隧道,sfc代理节点106与sfc代理节点107之间建立有vxlan隧道。除此之外,该sfc网络中还可以包括sfc控制器(图1中未示出)。其中,sfc转发节点101、102为可以是ac(accesscontroller,接入控制器)、交换机等,服务节点108、109、110为不支持sfc功能的传统服务节点,例如firewall、qos、ips、负载均衡器等,sfc控制器可以根据预先配置的服务链为各个sfc转发节点以及sfc代理节点下发流表项,以引导业务报文按次序通过服务节点完成相应处理。在sfc组网中,使用vxlan(virtualextensiblelan,虚拟可扩展局域网)封装实现sfc报文的引流是当下主流的sfc技术之一,因此,本发明以下的实施方式中以sfc报文为进行vxlan封装的vxlan报文进行示例性描述。本实施方式中,用户可以根据需要通过sfc控制器来部署服务链,服务链中的服务可以配置为一种或多种,例如,可以配置firewall->qos->ips三种服务来构建一条服务链。每条服务链都有自己的标识,也即servicepathid(服务链标识)。在服务链部署完成后,sfc控制器可以根据该服务链生成对应的流表项,并下发至各个sfc转发节点以及sfc代理节点,以使sfc转发节点以及sfc代理节点在接收到sfc报文后,可以根据对应的流表项将该sfc报文转发至对应的服务节点进行相应处理,并将处理后的报文转发至对应的目的主机。结合图1所示的组网,本发明实施例中sfc代理节点需要根据流表项将来自sfc转发节点或远端sfc代理节点的报文发送给服务节点处理,将服务节点处理后的报文发送给下一跳服务节点处理或者发送到目的主机。具体的实现过程请参考图2所示的报文转发方法流程示意图,为了描述方便,将来自sfc转发节点或远端sfc代理节点的报文命中的流表项称为第一流表项,将来自服务节点的报文命中的流表项成为第二流表项,该方法包括以下步骤:步骤201,接收来自sfc转发节点或来自远端sfc代理节点的vxlan报文,根据所述vxlan报文携带的服务链标识,将vxlan解封装后的报文与预存的流表项进行匹配;根据匹配的第一流表项指示的第一转发信息发送vxlan解封装后的报文。在sfc代理节点接收到来自sfc转发节点的vxlan报文之前,先对sfc转发节点对报文的处理简单介绍一下。本实施方式中,当主机之间进行通信时,可以由源主机将自身所属vlan(virtuallocalareanetworkidentification,虚拟局域网)的标识,即vlanid,携带在报文中发送至其接入的sfc转发节点(为了后续描述方便,简称为源sfc转发节点),源sfc转发节点在接收到报文后,获取报文中携带的vlanid,并在预先保存的vlan与vxlan的对应关系信息中获取与该报文中携带的vlanid对应的vni(vxlannetworkidentifier,vxlan网络标识)。源sfc转发节点还可以获取该报文的报文特征,该报文特征为五元组信息中的至少一项,例如:报文的源ip地址以及目的ip地址。源sfc转发节点将获取的报文特征与sfc控制器下发的流表项进行匹配。该流表项可以如表1所示:表1表1示出了sfc控制器向源sfc转发节点下发的一种流表项,仅是进一步理解本发明的示例,并不用于限制本发明实施例中流表项的具体内容。源sfc转发节点将获取的报文特征中的源ip地址以及目的ip地址在流表项中进行匹配后,若匹配成功,例如,匹配到表1示出的流表项,可以获得流表项中动作域的信息,包括:vxlan隧道源ip地址、vxlan隧道目的ip地址以及servicepathid。其中vxlan隧道源ip地址为sfc转发节点的vtepip地址,vxlan隧道目的ip地址为服务链中的首服务节点所属sfc代理节点的vtepip地址。则,源sfc转发节点根据上述动作域的信息对报文进行vxlan封装后发往服务链中的首服务节点所属的sfc代理节点,需要指出的是,上述servicepathid携带在vxlan报文的隧道信息(vxlan头部信息)中。其中,vxlan头部信息的格式可以如图3所示,包括标记位、sevicechain字段、vxlanid字段以及保留字段。当标记位的“s”位为1时,表示vxlan头部信息中的servicechain字段有效,为0时表示servicechain字段无效;servicechain字段长度为24比特,由方向标记位d和servicepathid两部分组成,当“d”位的方向标识为0时,表示vxlan报文为正向报文,方向标识为1时,表示vxlan报文为反向报文;servicepathid长度为23比特,用来标识一个服务链,获取的servicepathid则可以添加在该字段;vxlanid字段则为sfc转发节点获取的vni;保留字段用于添加保留信息。值得一提的是,一种实施方式中,当正、反向vxlan报文具有相同servicepathid时,可以通过在vxlan报文servicechain字段的“d”位设置对应的方向标识来区分vxlan报文的方向;另一实施方式中,还可以将正、反向vxlan报文分别配置不同的服务链,以及不同的servicepathid,不区分vxlan报文的方向。如图1所示的组网中,当服务链中的首服务节点所属的sfc代理节点接收到源sfc转发节点发来的vxlan报文时,先对该vxlan报文进行vxlan解封装,然后根据匹配的流表项将报文发送至所述首服务节点;首服务节点处理后的报文会重新发送给该sfc代理节点;如果下一跳服务节点未接入该sfc代理节点,则该sfc代理节点会根据流表项对报文进行vxlan封装后发送给下一跳服务节点接入的远端sfc代理节点。因此,本实施例中的sfc代理节点接收的vxlan报文的来源有两种节点,一是sfc转发节点,另一是远端sfc代理节点。sfc代理节点上保存的第一流表项可以如表2所示。匹配域动作域servicepathid出端口、vlanid表2其中,出端口和vlanid即为第一转发信息。若sfc代理节点接收的vxlan报文来自sfc转发节点(例如上述源sfc转发节点根据表1所示的流表项发送的vxlan报文),则出端口为sfc代理节点上连接服务链的首服务节点的端口;若sfc代理节点接收的vxlan报文来自远端sfc代理节点,则出端口为sfc代理节点上连接下一跳服务节点的端口(下一跳服务节点根据服务链确定,这里可以是服务链的中间服务节点或尾服务节点)。vlanid则是预先为sfc代理节点上连接服务节点的端口配置的。则,当sfc代理节点接收到来自sfc转发节点的vxlan报文时,可以根据匹配的第一流表项,将vxlan解封装后的报文发送至接入自身的首服务节点;当sfc代理节点接收到来自远端sfc代理节点的vxlan报文时,可以根据匹配的第一流表项,将vxlan解封装后的报文发送至中间服务节点或尾服务节点。步骤203,接收来自服务节点的报文,根据所述报文的五元组、本设备接收所述报文的端口以及所述端口对应的vlan信息,将所述报文与预存的流表项进行匹配;根据匹配到的第二流表项指示的第二转发信息发送所述报文。本实施方式中,服务节点对报文进行业务处理后,还需要将处理后的报文发往其接入的sfc代理节点。这里,可以根据服务节点所支持的转发功能转发在服务节点进行业务处理后的报文。例如:当服务节点为支持单臂接入的转发功能时,即:sfc代理节点将报文发往服务节点时的出端口和sfc代理节点接收服务节点处理后的该报文时的入端口为同一个端口;当服务节点为支持双臂同vlan的转发功能时,上述的出端口和入端口为不同的端口,且两个端口所属的vlan相同;当服务节点为支持双臂跨vlan的转发功能时,上述的出端口和入端口为不同的端口,且两个端口所属的vlan不同。无论是上述何种转发方式,当sfc代理节点接收到服务节点发送的报文后,获取报文的五元组、本设备接收所述报文的端口以及所述端口对应的vlan信息(vlanid),并根据报文的五元组、本设备接收所述报文的端口以及所述端口对应的vlanid将所述报文与预存的流表项进行匹配,匹配到的流表项即为第二流表项。如果sfc代理节点接收到来自服务节点的报文,且下一跳服务节点也接入本sfc代理节点,则在一实施例中,第二流表项的内容可以如表3所示:表3其中,出端口和vlanid即为第二转发信息。其中,出端口为sfc代理节点上连接下一跳服务节点的端口。vlanid为预先为该端口配置的。则,sfc代理节点将命中该第二流表项的来自服务节点的报文根据所述出端口和vlanid发送至对应的下一跳服务节点处理。sfc代理节点接收到来自服务节点的报文,若该报文的下一跳服务节点未接入本sfc代理节点,则表示需要将报文通过vxlan隧道发送至下一跳服务节点接入的sfc代理节点,则在另一实施例中,第二流表项的内容还可以如表4所示:表4其中,服务链标识以及vxlan隧道的源ip地址和目的ip地址即为第二转发信息。则,sfc代理节点将命中该第二流表项的报文进行vxlan封装,并将第二流表项的动作域信息中的servicepathid添加在vxlan封装后的报文中,发送至vxlan隧道目的ip地址对应的sfc代理节点。sfc代理节点接收到来自服务节点的报文,若该服务节点是服务链的尾节点(即不存在下一跳服务节点),则表示需要将报文通过vxlan隧道发送至sfc转发节点,则在另一实施例中,第二流表项的内容还可以如表5所示:表5其中,normal可以为指示服务链已完成的标识,当然还可以用其他标识来代替,本发明对此无限定。其用于指示sfc代理节点将该报文发送至目的主机接入的sfc转发节点。当报文命中动作域为normal的第二流表项时,确定该报文已根据服务链在所有服务节点上完成了业务处理,则可以查找该报文的目的主机所接入的sfc转发节点,并将该报文进行vxlan封装后,根据与sfc转发节点建立的vxlan隧道将进行vxlan封装后的报文发送至sfc转发节点,以使sfc转发节点根据该报文的目的mac地址匹配主机上线流表,最后根据匹配到的流表项中的转发信息将报文发送至对应的目的主机,以完成主机之间的通信。此时,由于该报文已根据服务链在服务节点上完成了所有业务,因此在将报文发送至sfc转发节点时,无需再添加服务链标识。当源主机和目的主机为三层跨网段主机时,sfc代理节点接收到来尾自服务节点的报文,则该报文命中如表5所示的第二流表项,则根据流表动作域将报文进行vxlan封装后经由三层网关发往目的主机接入的sfc转发节点。由此可见,本发明实施方式提供的报文转发方法,无需在sfc网络中部署高额的具有sfc功能的服务节点,而是通过部署的sfc代理节点通过vlan和传统服务节点互连,通过报文特征和vlan信息将流量引入传统服务节点处理,将传统服务节点返回的流量重新进行服务链封装后返回vxlan网络,增加了sfc网络的易用性,大幅降低了节点部署成本。以下结合图1对同一ip地址网段的vm103与vm104之间的通信过程进行示例性描述。以sfc转发节点101、102为ac101、102,服务节点108为提供了firewall服务的fw节点108,服务节点109为提供了qos服务的qos节点109、服务节点110为提供了ips服务的ips节点110为例。假设,预先为vm103访问vm104的报文配置的服务链为firewall->qos->ips三种服务,servicepathid为01。sfc控制器为ac101、ac102、sfc代理节点106、107下发的流表项可以如下所示:表6表7表8流表项标识匹配域动作域1vm104-mac地址出端口为连接目的主机的端口port12表9表6示出了sfc控制器为ac101下发的流表项,表7示出了sfc控制器为sfc代理节点106下发的流表项,表8示出了sfc控制器为sfc代理节点107下发的流表项,表9示出了sfc控制器为ac102下发的流表项,仅是进一步理解本发明的示例,并不用于限制本发明实施例中流表项的具体内容。当sfc转发节点ac101接收到vm103发往vm104的报文后,可以根据该报文源ip地址以及目的ip地址匹配预存的转发流表,当匹配到表6所示的流表项时,执行如下的操作:对该报文进行vxlan封装处理得到vxlan报文,并将表6所示的流表项中的动作域信息servicepathid01添加至vxlan报文的隧道信息中,再根据动作域信息中的vxlan隧道目的ip地址(即下一跳sfc代理节点106的vtepip地址)查找ac101上对应的出端口(例如为port1),最后通过该出端口port1将vxlan报文经由ac101与sfc代理节点106之间建立的vxlan隧道发送至服务链中的服务节点(fw节点108)所属sfc代理节点106。sfc代理节点106接收到该vxlan报文后,对该vxlan报文进行vxlan解封装处理,获取vxlan报文的隧道信息中携带的servicepathid01。sfc代理节点106将获取的servicepathid01在预存的转发流表进行匹配后,可以匹配到表7示出的流表项中的流表项1,将进行vxlan解封装处理后的报文通过流表项1的动作域信息中的出端口port3发送至对应的fw节点108进行防火墙业务处理。fw节点108对报文进行防火墙业务处理后,将处理后的报文发往事先配置的sfc代理节点106的指定端口port3。sfc代理节点106通过未配置vxlan的端口port3接收到报文后,获取报文的五元组信息、sfc代理节点上接收该报文的端口port3以及为该端口port3配置的vlanid(例如为vlan01),并根据报文的五元组信息、port3以及vlan01匹配预存的流表项,在匹配到表7示出的流表项2后,将报文通过流表项2的动作域信息中的出端口port5发送至对应的qos节点109进行qos业务处理。qos节点109对报文进行qos处理后,将报文发往sfc代理节点106。sfc代理节点106接收到报文后,获取报文的五元组信息、sfc代理节点上接收该报文的端口port5以及为该端口port5配置的vlanid(例如为vlan02),并根据报文的五元组信息、port5以及vlan02匹配预存的流表项,在匹配到表7示出的流表项3后,对该报文进行vxlan封装处理,得到vxlan报文,将流表项3的动作域信息中的servicepathid01添加至vxlan报文的隧道信息中,根据vxlan隧道目的ip地址查找对应的出端口(例如为port7),通过出端口port7将该vxlan报文经由sfc代理节点106与sfc代理节点107之间建立的vxlan隧道发送至下一跳sfc代理节点107。sfc代理节点107接收到该vxlan报文后,对该vxlan报文进行vxlan解封装处理以获取vxlan报文的隧道信息中携带的servicepathid01。sfc代理节点107将获取的servicepathid01与流表项进行匹配后,匹配到表8示出的流表项1,将进行vxlan解封装处理后的报文通过端口port9发送至对应的ips节点110进行ips业务处理。ips节点110对报文进行ips业务处理后,将处理后的报文发往sfc代理节点107。sfc代理节点107通接收到报文后,获取报文的五元组信息、sfc代理节点107上接收该报文的端口port9以及为该端口port9配置的vlanid(例如为vlan03),并根据报文的五元组信息、port9以及vlan03匹配流表项,在匹配到表8示出的流表项2后,发现该流表项2为normal,确定已根据服务链对该报文完成了业务处理,可以对该报文进行vxlan封装处理,得到vxlan报文,并将该vxlan报文经由sfc代理节点107与ac102之间建立的vxlan隧道发送至ac102。ac102在接收到该vxlan报文后,对该vxlan报文进行vxlan解封装处理,并根据该报文的目的mac地址匹配主机上线流表,在匹配到表9所示的流表项1后,根据动作域中的信息将该进行vxlan解封装处理的报文通过port12发送至对应的目的主机vm104。本发明还提供一种报文转发装置,图4为该报文转发装置的结构示意图,该装置可以应用于sfc网络中的sfc代理节点,所述sfc网络中的sfc代理节点为一个或多个,所述sfc网络中还包括sfc转发节点,所述sfc转发节点与所述sfc代理节点之间建立vxlan隧道,若所述sfc网络中具有多个sfc代理节点,所述sfc代理节点之间建立vxlan隧道,该报文转发装置可以包括:第一接收单元401,用于接收来自sfc转发节点或来自远端sfc代理节点的vxlan报文,根据所述vxlan报文携带的服务链标识,将vxlan解封装后的报文与预存的流表项进行匹配;根据匹配的第一流表项指示的第一转发信息发送vxlan解封装后的报文;第二接收单元402,用于接收来自服务节点的报文,根据所述报文的五元组、本设备接收所述报文的端口以及所述端口对应的vlan信息,将所述报文与预存的流表项进行匹配;根据匹配到的第二流表项指示的第二转发信息发送所述报文。在一种可选地实施方式中,所述第一转发信息包括:出端口和对应的vlan信息;所述第二转发信息包括:服务链标识以及vxlan隧道的源ip地址和目的ip地址;或者,包括出端口和对应的vlan信息;或者,包括指示服务链已完成的标识。在一种可选地实施方式中,所述第一接收单元401,还可以用于:若接收的vxlan报文来自sfc转发节点,则通过所述第一转发信息中的出端口将vxlan解封装后的报文发送至服务链的首服务节点;若接收的vxlan报文来自远端sfc代理节点,则通过所述第一转发信息中的出端口将vxlan解封装后的报文发送至服务链的中间服务节点或尾服务节点。在一种可选地实施方式中,所述第二转发信息包括服务链标识以及vxlan隧道的源ip地址和目的ip地址时,所述第二接收单元402还可以用于:对所述报文进行vxlan封装后发送给所述vxlan隧道目的ip地址对应的远端sfc代理节点;vxlan封装后的报文携带所述服务链标识;所述第二转发信息包括出端口和对应的vlan信息时,所述第二接收单元402还可以用于:根据所述出端口和对应vlan信息,将所述报文发送至服务节点;所述第二转发信息包括指示服务链已完成的标识时,所述第二接收单元402还可以用于:对所述报文进行vxlan封装后发送至目的主机接入的sfc转发节点。在一种可选地实施方式中,本设备将报文发送给服务节点的出端口与本设备接收该服务节点发送的该报文的入端口相同;或者,所述出端口和所述入端口不同、且所述出端口和所述入端口所属的vlan不同;或者,所述出端口和所述入端口不同、且所述出端口和所述入端口所属的vlan相同。本发明应用于sfc代理节点的报文转发装置在具体的处理流程中可以与上述应用于sfc网络中sfc代理节点的报文转发方法的处理流程一致,在此不再赘述。上述装置可以通过软件实现,也可以通过硬件实现,本发明报文转发装置所在sfc代理节点以及ac的硬件架构示意图均可参考图5所示,其基本硬件环境包括中央处理器cpu501、转发芯片502、存储器503以及其他硬件504,其中存储器503中包括机器可读指令,cpu501读取并执行机器可读指令执行图4中各单元的功能。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1