发明内容
本发明实施例提供一种报文跨域转发方法、装置及通信设备,以实现在多种不同的二层隧道之间简单快速的互相转发报文。
第一方面,本发明实施例提供一种报文跨域转发方法,包括:
获取与各邻居设备之间使用的二层隧道协议;
根据获取的二层隧道协议,提取与所述各邻居设备之间使用的配置参数;
根据提取的所述配置参数,生成二层隧道翻译表,所述二层隧道翻译表至少包括与所述各邻居设备之间使用的各二层隧道协议标识字段之间的映射关系;
根据接收的源设备发送的第一种二层隧道报文的属性以及所述二层隧道翻译表,将所述第一种二层隧道报文翻译成第二种二层隧道报文,并向目的设备转发所述第二种二层隧道报文。
根据第一方面,在第一方面第一种可能实现的方式中,所述获取与各邻居设备之间使用的二层隧道协议之前,还包括:
根据设备自身本地保存的静态配置信息发现各邻居设备;
或者,
使用探测协议报文动态发现各邻居设备。
根据第一方面或者第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,所述获取与各邻居设备之间使用的二层隧道协议,包括:
通过在设备自身本地的静态配置信息获取与各邻居设备之间使用的二层隧道协议;或者,
通过解析接收到的各邻居设备发送的二层隧道协议报文获取与各邻居设备之间使用的二层隧道协议;或者,
通过主动向各邻居设备发送获取各邻居设备配置文件请求信息,并根据所述各邻居设备发送的配置文件响应信息获取与各邻居设备之间使用的二层隧道协议。
根据第一方面或者第一方面第一种可能的实现方式,在第一方面第三种可能的实现方式中,所述根据提取的所述配置参数,生成二层隧道翻译表之后,还包括:
周期性地判断所述与各邻居设备之间使用的二层隧道协议中的所述相关配置参数的更新情况,并根据所述更新情况更新所述二层隧道翻译表。
根据第一方面、第一方面第一种至第三种任意可能的实现方式,在第一方面第四种可能的实现方式中,所述第一种二层隧道报文为已知单播报文;
所述根据接收的源设备发送的第一种二层隧道报文的属性以及所述二层隧道翻译表,将所述第一种二层隧道报文翻译成第二种二层隧道报文,并向目的设备转发所述第二种二层隧道报文,包括:
在所述二层隧道翻译表中查找与接收的源设备发送的第一种二层隧道报文对应的目的设备之间使用的二层隧道协议的相关配置参数;
根据所述相关配置参数将所述第一种二层隧道报文翻译成第二种二层隧道报文,并向所述第一种二层隧道报文对应的目的设备转发所述第二种二层隧道报文。
根据第一方面、第一方面第一种至第三种任意可能的实现方式,在第一方面第五种可能的实现方式中,所述第一种二层隧道报文为未知单播报文、组播或者广播报文;
所述根据接收的源设备发送的第一种二层隧道报文的属性以及所述二层隧道翻译表,将所述第一种二层隧道报文翻译成第二种二层隧道报文,并向目的设备转发所述第二种二层隧道报文,包括:
在所述二层隧道翻译表中查找与所有邻居设备之间使用的二层隧道协议的相关配置参数;
根据所述相关配置参数将所述第一种二层隧道报文分别翻译成各邻居设备对应的第二种二层隧道报文,并向到相应地各邻居设备转发所述第二种二层隧道报文。
根据第一方面、第一方面第一种至第五种任意可能的实现方式,在第一方面第六种可能的实现方式中,所述二层隧道协议至少包括以下的一种或几种:
虚拟专用局域网业务VPLS、使用通用路由封装的网络虚拟化NvGRE、虚拟扩展局域网VxLAN以及无状态传输隧道协议的网络虚拟化STT。
第二方面,本发明实施例提供一种报文跨域转发装置,包括:
获取模块,用于获取与各邻居设备之间使用的二层隧道协议;
提取模块,用于根据获取的二层隧道协议,提取与所述各邻居设备之间使用的配置参数;
生成模块,用于根据提取的所述配置参数,生成二层隧道翻译表,所述二层隧道翻译表至少包括与所述各邻居设备之间使用的各二层隧道协议标识字段之间的映射关系;
翻译模块,用于根据接收的源设备发送的第一种二层隧道报文的属性以及所述二层隧道翻译表,将所述第一种二层隧道报文翻译成第二种二层隧道报文,并向目的设备转发所述第二种二层隧道报文。
根据第二方面,在第二方面第一种可能实现的方式中,还包括:
发现模块,用于所述获取模块获取与各邻居设备之间使用的二层隧道协议之前:
根据设备自身本地保存的静态配置信息发现各邻居设备;
或者,
使用探测协议报文动态发现各邻居设备。
根据第二方面或者第二方面第一种可能的实现方式,在第二方面第二种可能的实现方式中,所述获取模块,具体用于:
通过在设备自身本地的静态配置信息获取与各邻居设备之间使用的二层隧道协议;或者,
通过解析接收到的各邻居设备发送的二层隧道协议报文获取与各邻居设备之间使用的二层隧道协议;或者,
通过主动向各邻居设备发送获取各邻居设备配置文件请求信息,并根据所述各邻居设备发送的配置文件响应信息获取与各邻居设备之间使用的二层隧道协议。
根据第二方面或者第二方面第一种可能的实现方式,在第二方面第三种可能的实现方式中,还包括:
更新模块,用于所述生成模块根据提取的所述配置参数,生成二层隧道翻译表之后,周期性地判断所述与各邻居设备之间使用的二层隧道协议中的所述相关配置参数的更新情况,并根据所述更新情况更新所述二层隧道翻译表。
根据第二方面、第二方面第一种至第三种任意可能的实现方式,在第二方面第四种可能的实现方式中,所述第一种二层隧道报文为已知单播报文;
所述翻译模块,具体用于:
在所述二层隧道翻译表中查找与接收的源设备发送的第一种二层隧道报文对应的目的设备之间使用的二层隧道协议的相关配置参数;
根据所述相关配置参数将所述第一种二层隧道报文翻译成第二种二层隧道报文,并向所述第一种二层隧道报文对应的目的设备转发所述第二种二层隧道报文。
根据第二方面、第二方面第一种至第三种任意可能的实现方式,在第二方面第五种可能的实现方式中,所述第一种二层隧道报文为未知单播报文、组播或者广播报文;
所述翻译模块,具体用于:
在所述二层隧道翻译表中查找与所有邻居设备之间使用的二层隧道协议的相关配置参数;
根据所述相关配置参数将所述第一种二层隧道报文分别翻译成各邻居设备对应的第二种二层隧道报文,并向到相应地各邻居设备转发所述第二种二层隧道报文。
根据第二方面、第二方面第一种至第五种任意可能的实现方式,在第二方面第六种可能的实现方式中,所述二层隧道协议至少包括以下的一种或几种:
虚拟专用局域网业务VPLS、使用通用路由封装的网络虚拟化NvGRE、虚拟扩展局域网VxLAN以及无状态传输隧道协议的网络虚拟化STT。
第三方面,本发明实施例提供一种通信设备,包括:
第二方面、第二方面第一种至第六种任意可能的实现方式中的报文跨域转发装置。
本发明实施例通过生成二层隧道翻译表并根据二层隧道翻译表,将二层隧道报文翻译成新的二层隧道报文向目的设备转发,以实现各二层隧道之间快速直接互访通信,解决了因多次封装报文导致的各二层隧道之间转发报文时带来的处理效率慢且不够灵活的问题。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明报文跨域转发方法实施例一的流程图,本方法的执行主体是报文跨域转发装置,该装置可以置于通信设备中,如交换机,路由器等。如图1所示,该方法具体包括:
步骤101、获取与各邻居设备之间使用的二层隧道协议。
具体地,本步骤中,二层隧道协议至少包括以下的一种或几种:
虚拟专用局域网业务、使用通用路由封装的网络虚拟化、虚拟扩展局域网以及无状态传输隧道协议的网络虚拟化。
步骤102、根据获取的二层隧道协议,提取与所述各邻居设备之间使用的配置参数。
配置参数可以包括维护二层虚拟专用网络(Layer2Virtual PrivateNetwork,简称L2VPN)隧道映射重要数据,比如包括VPLS的内外层标签、通用路由封装(Generic Routing Encapsulation,简称GRE)的虚拟网络(VirtualNetwork,简称VN)、VxLAN的虚拟网络标识(Virtual Network Identify,简称VNI)、STT的上下文标识(Context ID)和虚拟局域网(Virtual Local AreaNetwork,简称VLAN)标识。
步骤103、根据提取的所述配置参数,生成二层隧道翻译表,所述二层隧道翻译表至少包括与所述各邻居设备之间使用的各二层隧道协议标识字段之间的映射关系;
步骤104、根据接收的源设备发送的第一种二层隧道报文的属性以及所述二层隧道翻译表,将所述第一种二层隧道报文翻译成第二种二层隧道报文,并向目的设备转发所述第二种二层隧道报文。
以VxLAN和STT为例,二层隧道翻译表中的VxLAN的VNI标识和STT的Context ID之间建立了映射关系。因此,将VxLAN报文中的VNI标识映射成STT的Context ID,就能实现VxLAN报文翻译成STT报文,从而实现在VxLAN和STT隧道之间互通。
相对于现有技术中,各种隧道之间不能直接互访,需要先解封装后重新加载新的隧道封装,存在转发性能差,需要不同设备支持不同隧道封装,本发明实施例通过生成二层隧道翻译表并根据二层隧道翻译表,将二层隧道报文翻译成新的二层隧道报文向目的设备转发,以实现各二层隧道之间快速直接互访通信,解决了因多次封装报文导致的各二层隧道之间转发报文时带来的处理效率慢且不够灵活的问题。
图2为本发明报文跨域转发方法实施例二的流程图,本实施例在上一实施例的基础上,增加发现各邻居设备以及精确和非精确转发方式的步骤,如图2所示,该实施例具体包括:
步骤201、根据设备自身本地保存的静态配置信息发现各邻居设备。
可选地,本步骤还可以使用探测协议动态发现各邻居设备。
步骤202、通过主动向各邻居设备发送获取各邻居设备配置文件请求信息,并根据所述各邻居设备发送的配置文件响应信息获取与各邻居设备之间使用的二层隧道协议。
可选地,本步骤还可以通过在设备自身本地的静态配置信息获取与各邻居设备之间使用的二层隧道协议;或者,
通过解析接收到的各邻居设备发送的二层隧道协议报文获取与各邻居设备之间使用的二层隧道协议。
步骤203、根据获取的二层隧道协议,提取与所述各邻居设备之间使用的配置参数。
步骤204、根据提取的配置参数,生成二层隧道翻译表,所述二层隧道翻译表至少包括与所述各邻居设备之间使用的各二层隧道协议标识字段之间的映射关系。
步骤205、周期性地判断所述与各邻居设备之间使用的二层隧道协议中的所述相关配置参数的更新情况,并根据所述更新情况更新所述二层隧道翻译表。
步骤206、判断第一种二层隧道报文的类型。
如果第一种二层隧道报文的类型为已知单播报文,则执行精确转发方式步骤207~208,如果第一种二层隧道报文的类型为未知单播报文、组播或者广播报文,则执行非精确转发方式步骤209~210。
步骤207、在所述二层隧道翻译表中查找与接收的源设备发送的第一种二层隧道报文对应的目的设备之间使用的二层隧道协议的相关配置参数。
步骤208、根据所述相关配置参数将所述第一种二层隧道报文翻译成第二种二层隧道报文,并向所述第一种二层隧道报文对应的目的设备转发所述第二种二层隧道报文。
步骤209、在所述二层隧道翻译表中查找与所有邻居设备之间使用的二层隧道协议的相关配置参数。
步骤210、根据所述相关配置参数将所述第一种二层隧道报文分别翻译成各邻居设备对应的第二种二层隧道报文,并向到相应地各邻居设备转发所述第二种二层隧道报文。
本发明实施例通过二层隧道翻译表,根据二层隧道报文不同的类型和属性翻译成新的二层隧道报文以精确和非精确转发方式向目的设备转发,以实现各二层隧道之间快速直接互访通信,解决了因多次封装报文导致的各二层隧道之间转发报文时带来的处理效率慢且不够灵活的问题。
图3为本发明报文跨域转发方法实施例三的场景图,本实施例是上述实施例的一具体应用实施例,如图3所示,假设网络S1~S5通过通信设备E分别与通信设备A、通信设备B、通信设备C和通信设备D互连建立VPN,分别采用四种不同的二层隧道协议VPLS、NvGRE、VxLAN以及STT。
图4为图3的二层隧道翻译表关键字段示意图,如图4所示,不同的协议报文中,包括隧道标识,L2VPN标识和用户报文。其中隧道标识包括隧道中互连的两端设备的目的媒体访问控制地址(Media Access Control,简称MAC)、源MAC地址SMAC以及对应的协议字段值,比如MPLS对应的值OX8847和网络互连协议(Internet Protocol,简称IP)对应的值0X0800;不同协议之间关键字段为L2VPN标识,比如VPLS中的内外层标签Label1和Label2、NvGRE中的GRE和VN、VxLAN的用户数据报协议(User Datagram Protocol,简称UDP)和VNI以及STT中的传输控制协议(Transmission Control Protocol,简称TCP)和上下文标识Context ID;用户报文,包括VPN中两端设备的目的MAC地址DMAC’、源MAC地址SMAC’、负载(payload)以及循环冗余校验码(cyclicredundancy check,简称CRC)。因不同协议之间关键字段为L2VPN标识,所以在二层隧道翻译表中需要将这些关键字段互相建立映射关系。
图5为图3的二层隧道翻译过程示意图,如图5所示,下面以在通信设备E将VPLS的报文分别翻译成VPLS、NvGRE、VxLAN以及STT报文为例进行详细解析说明:
步骤1、通过配置或自动发现通信设备A~D与通信设备E的邻居关系。
步骤2、通过静态配置、动态感知(主动和被动发现)等方式,建立通信设备A~D与通信设备E之间的隧道映射关系。维护L2VPN隧道映射重要数据如图4所示,包括VPLS的内外层标签、GRE的VN标识、VxLAN的VNI标识以及STT的Context ID。其中,动态(主动或被动感知)维护映射关系的方式包括协议互通对接、协议透传和探测、以及通过简单文件传输协议(Trivial FileTransfer Protocol,简称TFTP)/文件传输协议(File Transfer Protocol,简称FTP)/超文本传输协议(Hypertext transfer protocol,简称HTTP)之类可以获取文件等方式。
步骤3、如果通信设备A~D与通信设备E是直连,则S1->A->E方向,在通信设备E接收到的外层报文DMAC-E为通信设备E接口MAC地址,SMAC-A为通信设备A接口MAC地址。通信设备E查找转发表,发现内层报文的DMAC’属于S2,则将报文翻译为去往S2的报文,即DMAC-B为通信设备B接口MAC地址,SMAC-E为通信设备E接口MAC地址,用IP协议类型、GRE和VN标识翻译原来报文的MPLS协议类型、内外层标签Label1和标签Label2。学习并记录用户SMAC’源自通信设备A的VPLS封装,用于回程流量查表。
步骤4、依照步骤3相同的方法,将通信设备A与其它通信设备(C和D)之间的报文按相同方式翻译处理。其中DMAC-C为通信设备C接口MAC地址,DMAC-D为通信设备C接口MAC地址。
步骤5、如果通信设备A~D与通信设备E是非直连,则替换的外层目的MAC地址DMAC为与去往S2~S4方向与设备E直连下一跳接口的MAC地址。
步骤6、通信设备B收到NvGRE封装的报文,解封装后查找目的MAC地址DMAC’进行转发。
步骤7、回程流量查表和隧道映射参考步骤3~6。
步骤8、对于S1->A->E方向广播类报文,查找步骤2所建立的隧道映射关系按照图4所示VPLS/NvGRE/VxLAN/STT各个对应字段进行映射,分别封装为NvGRE、VxLAN和STT报文发给通信设备B、C和D即可。
通过步骤1~8完成将VPLS的报文分别翻译成VPLS、NvGRE、VxLAN以及STT,需要说明的是,在不同的二层隧道协议之间互相通信时:
(1)内层用户报文维持不变,包括内层的目的MAC地址DMAC’、源MAC地址SMAC’和负载(payload);
(2)L2VPN标识、协议标识按照二层隧道翻译表进行转换;
(3)重新填充生存时间:(Time To Live,简称TTL)、服务类别(Classof Service,简称CoS)、TCP/UDP源和目的端口号以及含IP、TCP、UDP的校验和等信息;
(4)外层目的MAC地址DMAC和源MAC地址SMAC按照实际配置或发现的隧道进行替换;
(5)重新计算循环冗余校验码。
从本实施例可以看出,使用隧道翻译技术,可以直接把VPLS、NxGRE、VxLAN、STT数据报文进行转换,可实现网络S1、S2、S3、S4和S5之间二层互通。且只需要通信设备E支持各种隧道接入,而通信设备A~D不需要支持全部种类的隧道接入,也不需要将协议报文进行多次封装,只需对关键的协议标识字段进行映射翻译即可完成二层互通。
图6为本发明报文跨域转发装置实施例一的结构图,如图6所示,该装置60包括:
获取模块61,用于获取与各邻居设备之间使用的二层隧道协议;
提取模块62,用于根据获取的二层隧道协议,提取与所述各邻居设备之间使用的配置参数;
生成模块63,用于根据提取的所述配置参数,生成二层隧道翻译表,所述二层隧道翻译表至少包括与所述各邻居设备之间使用的各二层隧道协议标识字段之间的映射关系;
翻译模块64,用于根据接收的源设备发送的第一种二层隧道报文的属性以及所述二层隧道翻译表,将所述第一种二层隧道报文翻译成第二种二层隧道报文,并向目的设备转发所述第二种二层隧道报文。
本实施例的装置,用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图7为本发明报文跨域转发装置实施例二的结构图,如图7所示,本实施例在上一实施例的基础上,进一步地,该装置70还包括:
发现模块71,用于所述获取模块获取与各邻居设备之间使用的二层隧道协议之前:
根据设备自身本地保存的静态配置信息发现各邻居设备;
或者,
使用探测协议报文动态发现各邻居设备。
具体地,所述获取模块61,具体用于:
通过在设备自身本地的静态配置信息获取与各邻居设备之间使用的二层隧道协议;或者,
通过解析接收到的各邻居设备发送的二层隧道协议报文获取与各邻居设备之间使用的二层隧道协议;或者,
通过主动向各邻居设备发送获取各邻居设备配置文件请求信息,并根据所述各邻居设备发送的配置文件响应信息获取与各邻居设备之间使用的二层隧道协议。
进一步地,还包括:
更新模块72,用于所述生成模块根据提取的所述配置参数,生成二层隧道翻译表之后,周期性地判断所述与各邻居设备之间使用的二层隧道协议中的所述相关配置参数的更新情况,并根据所述更新情况更新所述二层隧道翻译表。
具体地,所述第一种二层隧道报文为已知单播报文;
所述翻译模块64,具体用于:
在所述二层隧道翻译表中查找与接收的源设备发送的第一种二层隧道报文对应的目的设备之间使用的二层隧道协议的相关配置参数;
根据所述相关配置参数将所述第一种二层隧道报文翻译成第二种二层隧道报文,并向所述第一种二层隧道报文对应的目的设备转发所述第二种二层隧道报文。
具体地,所述第一种二层隧道报文为未知单播报文、组播或者广播报文;
所述翻译模块64,具体用于:
在所述二层隧道翻译表中查找与所有邻居设备之间使用的二层隧道协议的相关配置参数;
根据所述相关配置参数将所述第一种二层隧道报文分别翻译成各邻居设备对应的第二种二层隧道报文,并向到相应地各邻居设备转发所述第二种二层隧道报文。
进一步地,所述二层隧道协议至少包括以下的一种或几种:
虚拟专用局域网业务、使用通用路由封装的网络虚拟化、虚拟扩展局域网以及无状态传输隧道协议的网络虚拟化。
本实施例的装置,用于执行图2~5任意所示的方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图8为本发明一种通信设备实施例一的结构图,如图8所示,本实施例中的通信设备80可以采用图6或7中任一个实施例所示的报文跨域转发装置60或70,其对应的可执行图1或5中任一实施例所述的方法,实现原理和技术效果类似,此处不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。