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

文档序号:14879512发布日期:2018-07-07 09:21阅读:208来源:国知局
本发明涉及网络通信
技术领域
,尤其涉及一种报文转发方法及装置。
背景技术
:bras(broadbandremoteaccessserver,宽带远程接入服务器)是面向宽带网络应用的接入网关,它位于骨干网的边缘层,可以完成用户带宽的ip(internetprotocol,互联网协议)/atm(asynchronoustransfermode,异步传输模式)网的数据接入,实现商业楼宇及小区住户的宽带上网。vxlan(virtualextensiblelocalareanetwork,可扩展虚拟局域网络)是基于ip网络、采用“mac(mediaaccesscontrol,媒体访问控制)inudp(userdatagramprotocol,用户数据报协议)”封装形式的二层vpn技术。vxlan可以基于已有的服务提供商或企业ip网络,为分散的物理站点提供二层互联,并能够为不同的租户提供业务隔离。在一种典型的基于vxlan的bras资源池流量调度组网中,hjsw(汇聚交换机)直接与多个bras设备建立一对多vxlan隧道,hsjw接收到用户发送的报文时,根据控制器下发的配置将报文转发给多个bras设备中的一个bras设备。然而实践发现,在上述组网中,报文转发至哪一个bras设备需要由控制器控制,当一个bras设备性能不足时,需要控制器重新下发配置实现bras设备的切换,实现较为复杂。技术实现要素:本发明提供一种报文转发方法及装置,以在不需要控制器参与的情况下实现bras设备的负载分担。根据本发明实施例的第一方面,提供一种报文转发方法,应用于资源池网关pool-gw,所述pool-gw分别与汇聚交换机hjsw、同一资源池分组中的多个宽带远程接入服务器bras设备连接,所述多个bras设备配置有相同的虚拟ip地址,所述多个bras设备分别使用所述虚拟ip地址与hjsw建立有隧道,且所述隧道对应的路径上均包括所述pool-gw,该方法包括:接收hjsw发送的目的ip地址为所述虚拟ip地址的隧道报文;根据所述隧道报文的源用户数据报协议udp端口号,从所述虚拟ip地址对应的多个出端口中确定用于转发所述隧道报文的出端口;通过确定的出端口将所述隧道报文转发给对应的bras设备。根据本发明实施例的第二方面,提供一种报文转发装置,应用于资源池网关pool-gw,所述pool-gw分别与汇聚交换机hjsw、同一资源池分组中的多个宽带远程接入服务器bras设备连接,所述多个bras设备配置有相同的虚拟ip地址,所述多个bras设备分别使用所述虚拟ip地址与hjsw建立有隧道,且所述隧道对应的路径上均包括所述pool-gw,该装置包括:接收单元,用于接收hjsw发送的目的ip地址为所述虚拟ip地址的隧道报文;确定单元,用于根据所述隧道报文的源用户数据报协议udp端口号,从所述虚拟ip地址对应的多个出端口中确定用于转发所述隧道报文的出端口;发送单元,用于通过确定的出端口将所述隧道报文转发给对应的bras设备。应用本发明实施例,当接收到hjsw发送的目的ip地址为虚拟ip地址的隧道报文时,根据该隧道报文的源udp端口号,确定转发该vxlan封装报文的出端口,并通过所确定的出端口将该隧道报文转发给对应的bras设备,从而,在不需要控制器参与的情况下实现了bras设备的负载分担。附图说明图1是本发明实施例提供的一种基于vxlan的bras资源池流量调度组网的架构示意图;图2是本发明实施例提供的一种报文转发方法的流程示意图;图3是本发明实施例提供的一种报文转发方法的流程示意图;图4是本发明实施例提供的一种具体应用场景的架构示意图;图5是本发明实施例提供的一种报文转发装置的硬件结构示意图;图6是本发明实施例提供的一种报文转发控制逻辑的功能结构图。具体实施方式为了使本
技术领域
的人员更好地理解本发明实施例中的技术方案,下面先对本发明实施例适用的组网架构进行简单说明。请参见图1,为本发明实施例提供的一种基于vxlan的bras资源池流量调度组网的架构示意图,如图1所示,该组网除了包括hjsw以及bras设备之外,还包括pool-gw(资源池网关),该pool-gw为bras资源池(本文中简称为资源池)中bras设备的唯一入口,hjsw通过pool-gw与同一资源池分组中的多个bras设备建立物理连接,同一资源池分组中的多个bras设备配置有相同的虚拟ip地址,且该多个bras设备分别使用该虚拟ip地址与hjsw建立有vxlan隧道,即将hjsw与资源池分组中的多个bras设备之间的多个不同的物理链路(包括hjsw与pool-gw之间的物理链路以及pool-gw分别与资源池分组中的多个bras设备连接的物理链路)虚拟为hjsw与资源池分组中多个bras设备之间的逻辑链路(即vxlan隧道)。其中,由于pool-gw为资源池中bras设备的唯一入口,因此,bras设备的虚拟ip地址与hjsw之间的隧道对应的路径上均包括pool-gw;同一资源池分组中的多个bras设备可以作为pool-gw到该多个bras设备的虚拟ip地址的ecmp(equal-costmultipathrouting,等价路由)下一跳。为了使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。请参见图2,为本发明实施例提供的一种报文转发方法的流程示意图,其中,该报文转发方法可以应用于图1所示组网中的hjsw,如图2所示,该报文转发方法可以包括以下步骤:步骤201、当接收到报文时,对该报文进行隧道封装,并根据该报文中携带的终端标识信息确定隧道报文的源udp端口号。本发明实施例中,当hjsw接收到报文时,hjsw可以对接收到的报文进行隧道封装,并根据该报文中携带的终端标识信息确定隧道报文的源udp端口号。其中,hjsw接收到的报文可以为pppoe(pointtopointprotocoloverethernet,基于以太网的点对点协议)用户终端发送的报文或ipoe(internetprotocoloverethernet,基于以太网的互联网协议)用户终端发送的报文;上述终端标识信息可以为发送该报文的用户终端的唯一标识信息。在本发明其中一个实施例中,上述根据报文中携带的终端标识信息确定隧道报文的源udp端口号,包括:根据报文中携带的五元组信息确定隧道报文的源udp端口号。在该实施例中,考虑到不同用户终端发送的报文的五元组信息不同,因此,hjsw接收到报文时,可以根据该报文的五元组(即源端口、源ip地址、目的ip地址、目的端口和传输层协议)计算出一个udp端口号,并将该udp端口号作为隧道报文的外层udp头中的源udp端口号携带在隧道报文中。其中,根据不同五元组信息确定的源udp端口号不同;根据相同五元组信息确定的源udp端口号相同。值得说明的是,上述实施例中虽然以报文中的五元组信息作为终端标识信息为例进行源udp端口号的计算,但本发明实施例中并不限于使用报文中的五元组信息进行源udp端口号的计算,例如,还可以根据报文的源mac地址进行源udp端口号计算、或者,根据报文的源mac地址和源ip地址进行源udp端口号计算。步骤202、将该隧道报文通过hjsw与bras设备之间的隧道转发,以使pool-gw接收到隧道报文时,根据隧道报文的源udp端口号,确定转发该隧道报文的出端口。本发明实施例中,hjsw对接收到的报文进行隧道封装之后,可以通过hjsw与bras设备之间的隧道(即上述bras设备使用虚拟ip地址与hjsw建立的隧道)转发该隧道报文,其中,该隧道报文的目的ip地址为上述bras设备的虚拟ip地址。其中,由于承载该隧道的实际物理链路(underlay链路)为hjsw与pool-gw之间的物理链路,以及pool-gw与同一资源池分组中各bras设备之间的物理链路,因此,hjsw通过该vxlan隧道转发隧道报文时,该隧道报文会先被转发至pool-gw。本发明实施例中,pool-gw接收到hjsw发送的隧道报文时的处理方式可以参见图3所示方法流程中的相关描述,本发明实施例在此不做赘述。请参见图3,为本发明实施例提供的一种报文转发方法的流程示意图,其中,该报文转发方法可以应用于图1所示组网中的pool-gw,如图3所示,该报文转发方法可以包括以下步骤:步骤301、接收hjsw发送的目的ip地址为bras设备的虚拟ip地址的隧道报文。本发明实施例中,hjsw设备向pool-gw发送隧道报文的具体实现可以参见图2所示方法流程中的相关描述,本发明实施例在此不再赘述。步骤302、根据接收到的隧道报文的源udp端口号,从虚拟ip地址对应的多个出端口中确定用于转发所述隧道报文的出端口。本发明实施例中,为了实现负载分担,避免单个bras设备负荷过大,pool-gw需要尽量保证将接收到的报文相对均匀地分配给资源池分组中的各bras设备;同时,pool-gw需要保证同一用户终端发送的报文分配给同一bras设备。相应地,在本发明实施例中,pool-gw接收到hjsw发送的vxlan封装报文时,可以获取该隧道报文的外层udp头中的源udp端口号,并根据该源udp端口号,从虚拟ip地址对应的多个出端口中确定用于转发所述隧道报文的出端口;其中,该出端口为pool-gw与bras设备之间的物理链路对应的端口。本发明实施例中,为了实现上述负载分担需求,在未出现出端口对应的bras设备故障的情况下,根据不同源udp端口号从虚拟ip地址对应的多个出端口中确定的用于转发隧道报文的出端口不完全相同,根据相同源udp端口号从虚拟ip地址对应的多个出端口中确定的用于转发隧道报文的出端口相同。在本发明其中一个实施例中,上述根据隧道报文的源udp端口号,从虚拟ip地址对应的多个出端口中确定用于转发隧道报文的出端口,可以包括:利用预设hash(散列)算法确定该隧道报文的源udp端口号对应的hash值;其中,利用该预设hash算法计算得到的不同hash值的数量与该虚拟ip地址对应的出端口的数量相同,且该hash值与虚拟ip地址对应的出端口一一对应;将该多个出端口中与所确定的hash值对应的出端口确定为用于转发该隧道报文的出端口。在该实施例中,为了保证不同用户终端的隧道报文均匀地分配到资源池分组中的各bras设备进行处理,并保证在未出现bras设备故障的情况下,同一用户终端的隧道报文被分配给同一bras设备,可以利用hash算法确定转发隧道报文的出端口。在该实施例中,该hash算法对应的不同计算结果(不同hash值)的数量与虚拟ip地址对应的出端口的数量相同,且该hash算法对应的不同hash值与虚拟ip地址对应的出端口一一对应。举例来说,假设bras资源池分组中共包括3个bras设备(bras1~bras3),pool-gw连接该3个bras设备的出端口分别为port1~port3,则用于确定出端口的hash算法可以对应三个不同的hash值(如1~3),且该3个hash值与3个出端口一一对应(例如,1对应port1,2对应port2,3对应port3),进而,pool-gw可以根据接收到的隧道报文的源udp端口号,利用该hash算法进行计算,并根据计算得到的hash值确定转发该隧道报文的出端口。例如,假设计算得到的hash值为1,则通过port1将该隧道报文转发给bras设备1进行处理。步骤303、通过所确定的出端口将接收到的隧道报文转发给对应的bras设备。本发明实施例中,pool-gw确定了转发接收到的隧道报文的出端口之后,可以将接收到的隧道报文通过该出端口转发给对应的bras设备。可见,在图2和图3所示方法流程中,通过在hjsw与bras设备之间部署pool-gw,且该pool-gw作为资源池分组中各bras设备的唯一入口,并为同一资源池分组中的多个bras设备配置相同的虚拟ip地址,进而可以将hjsw与同一资源池分组中的多个bras设备之间的多个不同物理链路虚拟为bras设备使用该虚拟ip地址与hjsw建立的同一个隧道,同一资源池分组中的多个bras设备作为pool-gw到该多个bras设备的虚拟ip地址的ecmp下一跳;当hjsw将接收到的报文封装为隧道报文,并通过该隧道转发时,pool-gw可以利用预设算法将接收到的隧道报文转发至对应的bras设备,尽量保证将接收到的报文相对均匀地分配给资源池分组中的各bras设备,从而在不需要控制器参与的情况下实现了bras设备的负载分担。进一步地,在本发明实施例中,考虑到当资源池分组中的bras设备发生故障时,通过该bras设备接入网络的终端设备需要重新上线,为了保证通过故障bras设备接入网络的终端设备能够重新上线,而通过资源池分组中其它未发生故障的bras设备接入网络的终端设备不受故障bras设备的影响,可以将通过故障bras设备接入网络的终端设备分配给资源池分组内其它未发生故障的bras设备,通过资源池分组中其它未发生故障的bras设备接入网络的终端设备则保持不变。相应地,在本发明其中一个实施例中,当所确定的用于转发隧道报文的出端口对应的bras设备发生故障时,该报文转发方法还可以包括:根据需要转发至该bras设备的隧道报文的源udp端口号,重新确定用于转发该隧道报文的出端口,并将该隧道报文通过重新确定的出端口转发至资源池分组中未发生故障的其它bras设备。在该实施例中,当pool-gw确定的用于转发隧道报文的某出端口(下文中称为目标出端口)对应的bras设备发送故障时,对于通过该目标出端口转发的隧道报文需要重新确定出端口,以使原先通过目标出端口转发的隧道报文通过重新确定的出端口转发。其中,对于通过目标出端口之外的其它出端口转发的隧道报文,可以不需要进行出端口的重新分配。在该实施例的一种可选实施方式中,上述根据需要转发至该bras设备的隧道报文的源udp端口号,重新确定用于转发该隧道报文的出端口,可以包括:利用更新后的hash算法确定该隧道报文的源udp端口号对应的hash值;其中,利用更新后的hash算法计算得到的不同hash值的数量与虚拟ip地址对应的出端口中对应未发生故障的bras设备的出端口的数量相同,且hash值与对应未发生故障的bras设备的出端口一一对应;将对应未发生故障的bras设备的出端口中与该hash值对应的出端口确定为用于转发该隧道报文的出端口。在该实施方式中,当pool-gw利用hash算法确定用于转发vxlan隧道的出端口时(其具体实现可以参见上述步骤302中的相关描述),若所确定用于转发隧道报文的出端口(以上述目标出端口为例)对应的bras设备发生故障时,pool-gw可以更新hash算法,将利用该hash算法计算得到的不同hash值的数量更新为与虚拟ip地址对应的出端口中对应未发生故障的bras设备的出端口的数量相同,且该hash值与对应未发生故障的bras设备的出端口一一对应。仍以步骤302中所举示例为例,假设port1对应的bras1发生故障,则pool-gw可以更新该hash算法,将通过hash算法计算得到的不同hash值的数量更新为2个(假设为1和2),其中1对应bras2,2对应bras3;进而,对于原先确定的转发给bras1的隧道报文,重新利用更新后的hash算法确定新的出端口。在该实施例中,pool-gw更新hash算法之后,可以利用更新后的hash算法确定原先确定需要通过目标出端口转发的隧道报文的源udp端口号对应的hash值,并将对应未发生故障的bras设备的出端口中与该hash值对应的出端口确定为用于转发该隧道报文的出端口。例如,假设对于某一个原先确定需要通过port1转发的隧道报文,当利用更新后的hash算法,根据该隧道报文的源udp端口号计算得到hash值为1,则通过port2将该隧道报文转发至bras设备2。需要说明的是,在本发明实施例中,对于出现bras设备故障,且hash算法发生更新的情况,当pool-gw接收到目的ip地址为虚拟ip地址的隧道报文时,pool-gw首先仍然会按照预设hash算法(如步骤302中所述的预设hash算法)对隧道报文的源udp端口号进行hash,当得到的hash值对应的出端口为故障bras设备对应的出端口时,pool-gw会进一步根据更新后的hash算法对该隧道报文的源udp端口号进行hash,从对应未发生故障的bras设备的出端口中选择一个出端口作为转发该隧道报文的出端口。为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面结合具体应用场景对本发明实施例提供的技术方案进行说明。请参见图4,为本发明实施例提供的一种具体应用场景的架构示意图,如图4所示,在该应用场景中,假设资源池分组中包括4个bras设备(bras1~bras4),hjsw通过pool-gw分别与资源池分组中的各bras设备建立物理连接;bras1~bras4配置有相同的虚拟ip地址,且bras1~bras4使用该虚拟ip地址与hjsw建立有vxlan隧道;bras1~bras4作为pool-gw到该虚拟ip地址的等价路由下一跳,当pool-gw根据接收到目的ip地址为该虚拟ip地址的vxlan封装报文时,查找到该虚拟ip地址对应的等价路由,并根据预设hash算法对该vxlan封装报文的源udp端口号进行hash,确定该多个等价路由中与该hash值对应的等价路由对应的出端口。基于图4所示的应用场景,本发明实施例提供的报文转发方法实现流程如下:1、hjsw接收到终端设备发送的报文时,对报文进行vxlan封装,并根据报文中的五元组信息确定vxlan封装报文的外层udp头中的源udp端口号,且该vxlan封装报文的目的ip地址为上述bras设备的虚拟ip地址;2、hjsw将vxlan封装报文通过上述vxlan隧道转发;3、pool-gw接收到hjsw转发的vxlan封装报文,且发现该vxlan封装报文的目的ip地址为虚拟ip地址时,根据该虚拟ip地址查找路由表项,查找到该虚拟ip地址对应的等价路由,进而,pool-gw获取该vxlan封装报文的外层udp头中的源udp端口号,并利用预设hash算法对该源udp端口号进行hash,以从该虚拟ip地址对应的等价路由中确定转发该vxlan封装报文的等价路由对应的出端口;其中,在该实施例中,pool-gw利用hash算法确定vxlan封装报文的出端口的实现原理可以如表1所示:表1hash值出端口0bras11bras22bras33bras4其中,出端口为brasi(i=1~4)即表明通过pool-gw与brasi之间的物理链路对应的端口转发vxlan封装报文(即通过pool-gw连接brasi的端口转发vxlan封装报文)在该实施例中,由于资源池分组中包括4个bras设备,因此,利用预设hash算法计算得到的不同hash值可以有4个(0~3),进而,根据利用预设hash算法对vxlan封装报文的外层udp头中的源udp端口号进行hash得到的hash值确定转发该vxlan封装报文的出端口。例如,假设利用预设hash算法对vxlan封装报文的外层udp头中的源udp端口号进行hash得到的hash值为2,则该vxlan封装报文的出端口为pool-gw与bras3连接的端口。又例如,假设利用利用预设hash算法对vxlan封装报文的外层udp头中的源udp端口号进行hash得到的hash值为3,则该vxlan封装报文的出端口为pool-gw与bras4连接的端口。4、pool-gw根据所确定的出端口转发接收到的vxlan封装报文;5、当资源池分组中的多个bras设备存在目标bras设备发生故障时(在该实施例中以bras4发生故障为例),通过bras4接入网络的终端设备需要重新上线;6、pool-gw感知到bras4发生故障时,将需要转发给bras4的vxlan封装报文转发给其它未发生故障的bras设备(bras1~3);其中,在该实施例中,pool-gw可以通过增强型hash算法,将发生故障的bras设备(即bras4)对应的hash资源分配给其它bras设备,而其它bras设备原有的hash资源保持不变。具体地,可以更新用于确定出端口的hash算法,更新后的hash算法对应的不同hash值的数量为3个(0~2),对于原先确定需要通过pool-gw与bras4连接的出端口转发的vxlan封装报文,可以利用更新后的hash算法,根据该vxlan封装报文的源udp端口号,重新计算对应的hash值,并根据重新计算得到的hash值重新确定该vxlan封装报文的出端口。此后,bras设备接收到hjsw发送的目的ip地址为虚拟ip地址的vxlan封装报文时,仍然先使用表1对应的hash算法对该vxlan封装报文的源udp端口号进行hash,当得到的hash值对应的出端口为故障bras设备对应的出端口时,pool-gw进一步根据更新后的hash算法对该vxlan封装报文的源udp端口号进行hash,重新确定用于转发该vxlan封装报文的出端口。通过以上描述可以看出,在本发明实施例提供的技术方案中,当接收到hjsw发送的目的ip地址为虚拟ip地址的隧道报文时,根据该隧道报文的源udp端口号,确定转发该vxlan封装报文的出端口,并通过所确定的出端口将该隧道报文转发给对应的bras设备,从而,在不需要控制器参与的情况下实现了bras设备的负载分担。以上对本发明提供的方法进行了描述。下面对本发明提供的装置进行描述:图5为本公开示例提供的一种报文转发装置的硬件结构示意图。该报文转发装置可包括处理器501、存储有机器可执行指令的机器可读存储介质502。处理器501与机器可读存储介质502可经由系统总线503通信。并且,通过读取并执行机器可读存储介质502中与报文转发控制逻辑对应的机器可执行指令,处理器501可执行上文描述的报文传输方法。本文中提到的机器可读存储介质502可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。如图6所示,从功能上划分,上述报文转发控制逻辑可以包括接收单元601、确定单元602以及发送单元603。其中:接收单元601,用于接收hjsw发送的目的ip地址为所述虚拟ip地址的隧道报文;确定单元602,用于根据所述隧道报文的源用户数据报协议udp端口号,从所述虚拟ip地址对应的多个出端口中确定用于转发所述隧道报文的出端口;发送单元603,用于通过确定的出端口将所述隧道报文转发给对应的bras设备。优选地,所述确定单元602,还用于当所确定的用于转发所述隧道报文的出端口对应的bras设备发生故障时,根据需要转发至该bras设备的隧道报文的源udp端口号,重新确定用于转发该隧道报文的出端口;所述发送单元603,还用于将该隧道报文通过重新确定的出端口转发至所述资源池分组中未发生故障的其它bras设备。优选地,所述确定单元602,具体用于利用预设散列hash算法确定所述隧道报文的源udp端口号对应的hash值;其中,利用所述预设hash算法计算得到的不同hash值的数量与所述虚拟ip地址对应的出端口的数量相同,且所述hash值与所述虚拟ip地址对应的出端口一一对应;将所述多个出端口中与所确定的hash值对应的出端口确定为用于转发所述隧道报文的出端口。优选地,所述确定单元602,具体用于利用更新后的hash算法确定所述隧道报文的源udp端口号对应的hash值;将所述对应未发生故障的bras设备的出端口中与该hash值对应的出端口确定为用于转发该隧道报文的出端口;其中,利用更新后的hash算法计算得到的不同hash值的数量与所述虚拟ip地址对应的出端口中对应未发生故障的bras设备的出端口的数量相同,且所述hash值与所述对应未发生故障的bras设备的出端口一一对应。优选地,所述隧道为vxlan隧道;所述隧道报文为vxlan封装报文。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。由上述实施例可见,当接收到hjsw发送的目的ip地址为虚拟ip地址的隧道报文时,根据该隧道报文的源udp端口号,确定转发该vxlan封装报文的出端口,并通过所确定的出端口将该隧道报文转发给对应的bras设备,从而,在不需要控制器参与的情况下实现了bras设备的负载分担。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本
技术领域
中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1