背景技术
随着Internet的广泛应用,越来越多的企业用户开始关注网络这个巨大的资源池,全球共享的资源可以为不同的客户提供不同服务,这种多样性的发展对信息安全提出了更高的要求,只有授权用户可以访问到企业内部系统中的关键商务程序及数据,因此,企业对于自身的网络建设的需求,尤其是安全性的需求也越来越高,基于这种情况,产生了VPN(Virtua1Private Network,虚拟私有网络)技术,VPN有别于传统网络,它并不实际存在,而是利用现有公共网络,通过资源配置而成的虚拟网络,是一种逻辑上的网络。VPN只为特定的企业或用户群体所专用,VPN不是一种简单的高层业务,而是建立专网用户之间的网络互联。GRE(Generic RoutingEncapsulation,通用路由封装)协议是VPN的一种实现方式,它在协议层之间采用了一种被称之为Tunnel(隧道)的技术,Tunnel是一个虚拟的点对点的连接,在实际中可以看成是仅支持点对点连接的虚拟接口,这个接口提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel的两端分别对数据报文进行封装及解封装。
目前隧道技术中所应用的GRE协议的主要功能和已实现的技术主要有以下几个方面:
(1)多协议的本地网通过单一协议的骨干网传输,如图1所示。图1中,Group1和Group2、Term1和Term2分别是运行IP协议的本地网。通过在Eudemon A和Eudemon B之间采用GRE协议封装的隧道(Tunnel),Group1和Group2、Term1和Term2可以互不影响地进行通信。
(2)扩大了步跳数受限协议的网络的工作范围。两台终端之间的步跳 数超过15,它们将无法通信。而通过在网络中使用Tunnel可以隐藏一部分步跳,从而扩大网络的工作范围。
(3)将一些不能连续的子网连接起来,用于组建VPN。运行IPX协议的两个子网group1和group2,现在需要通过Internet将group1和group2连接起来,则可以通过建立隧道来实现,因而通过Tunnel设置可以实现通过广域网(WAN)网建立虚拟私有网,实现group1和group2的网间通信。
以上方案都已经实现,但是技术的实现和硬件以及软件的架构有着密切联系,因此报文转发的转发流程的方法也有差异。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
目前,集中式的设备处理能力受硬件处理能力的约束,在报文的转发上大都按照配置Tunnel接口信息在主控板,报文上送到主控板时,由主控板再进行处理,当主控板上报文的流量比较大时,则会严重影响报文的转发效率,这种集中式的架构约束了报文的转发流程和系统的转发效率。
发明内容
本发明实施例提供一种报文的转发方法、装置和系统,以实现提高隧道技术中路由封装协议报文的封装转发效率。
为达到上述目的,本发明实施例提供一种报文的转发方法,包括:
系统对每个业务板上的CPU进行编号得到CPUID,并对隧道Tunnel的两端的地址进行hash,根据hash索引选择相应的CPU;
接口板根据主控板下发的配置通用路由封装GRE路由信息,将接收到的第一报文发送到指定的业务板,由所述业务板对所述第一报文进行封装处理,所述配置的GRE路由信息中包含有处理所述第一报文的CPUID;
所述接口板接收所述业务板发送的封装处理后的第一报文,并根据所述主控板下发的配置GRE路由信息向外部转发所述封装处理后的第一报文;
所述接口板接收到外部发送的对所述封装处理后的第一报文进行响应的第二报文,对所述第二报文的源地址和目的地址进行hash,根据hash索引选择相应的CPU,并将所述第二报文发送到CPU对应的所述业务板。
本发明实施例还提供一种接口板,应用于包括主控板、至少一个接口板和业务板的系统中,其中,系统对每个业务板上的CPU进行编号得到CPUID,并对隧道Tunnel的两端的地址进行hash,根据hash索引选择相应的CPU, 包括:
报文下发单元,用于根据主控板下发的配置通用路由封装GRE路由信息,将接收到的第一报文发送到指定业务板,所述配置的GRE路由信息中包含有处理所述第一报文的CPUID;
报文转发单元,用于接收所述业务板发送的封装处理后的第一报文,并根据所述主控板下发的配置GRE路由信息向外部转发所述封装处理后的第一报文;
报文接收单元,用于接收到外部发送的对所述封装处理后的第一报文进行响应的第二报文,对所述第二报文的源地址和目的地址进行hash,根据hash索引选择相应的CPU,并将所述第二报文发送到CPU对应的所述业务板。
本发明实施例还提供一种报文的转发系统,包括主控板、至少一个接口板和业务板,系统对每个业务板上的CPU进行编号得到CPUID,并对隧道Tunnel的两端的地址进行hash,根据hash索引选择相应的CPU,其中;
所述主控板,用于对封装报文所需要的信息和配置GRE路由信息进行下发;
所述接口板,用于根据所述主控板下发的配置GRE路由信息,将接收到的第一报文发送到所述业务板,由所述业务板对所述第一报文进行封装处理,并接收所述业务板发送的封装处理后的第一报文,并根据所述主控板下发的配置GRE路由信息向外部转发所述封装处理后的第一报文,在接收到外部发送的对所述封装处理后的第一报文进行响应的第二报文之后,对所述第二报文的源地址和目的地址进行hash,根据hash索引选择相应的CPU,并将所述第二报文发送到CPU对应的所述业务板,由所述业务板对所述第二报文进行解封装处理,其中,所述配置的GRE路由信息中包含有处理所述第一报文的CPUID;
所述业务板,用于对所述接口板发送的报文进行封装和解封装处理。
与现有技术相比,本发明的实施例具有以下优点:
通过使用本发明实施例,当大量的报文经过设备时,接口板根据配置的GRE路由信息将不同报文送到不同的业务板进行处理,避免了大量报文同时送到同一个业务板等待处理,提高了转发效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种报文的转发方法,该方法的流程图如图2所示,包括以下步骤:
S201、接口板根据主控板下发的配置通用路由封装GRE路由信息,将接收到的第一报文发送到指定的业务板,由所述业务板对所述第一报文进行封装处理。
上述GRE路由信息具体包括路由的下一跳、出接口、处理GRE报文的CPUID以及隧道的ID等信息。
S202、所述接口板接收所述业务板发送的封装处理后的第一报文,并根据所述主控板下发的配置GRE路由信息向外部转发所述封装处理后的第一报文。其中外部为第一报文待发送的目的地址。
S203、所述接口板接收到外部发送的对所述封装处理后的第一报文进行响应的第二报文,根据配置的路由信息将所述第二报文发送到所述业务板,由所述业务板对所述第二报文进行解封装处理。其中外部为发送第二报文的 源地址。
通过本发明实施例,实现了当大量的报文经过设备时,接口板根据配置的GRE路由信息将不同的报文送到不同的业务板进行处理,避免了大量报文同时送到同一个业务板等待处理,提高了转发效率。
本发明实施例一提供一种报文的转发方法。该方法应用在GRE隧道封装业务中,所封装的数据流是由隧道的源地址和目的地址决定的。在主控板配置Tunnel的同时,将封装报文所需要的信息广播到所有的业务板,这样,接口板收到的报文,无论送到哪个CPU都可以正确的进行封装或者解封装处理。具体的,本发明实施例中,首先对给每个业务板上的CPU编号;然后对Tunnel的两端的IP地址进行hash,根据hash索引选择相应的CPU。由于隧道两端的IP地址是固定的,使得不同Tunnel加封装和反向解封装的报文会根据hash索引选择到不同的CPU上处理,这样实现了进出隧道的报文由同一个CPU处理的目的。
该方法中报文在设备中转发的数据流示意图如图3所示。其中,0号数据流为主控板下发到业务板的配置数据流;1号流为送到业务板进行加封装的流;2号流为在业务板上封装后送到接口板的流。3号流为从接口板送到业务板解封装的流;4号流为报文在业务板解封装后转到接口板的流。
在本发明实施例一中实现网络通信中报文的封装转发的流程图如图4所示,包括以下步骤:
S401、主控板的将封装报文所需要的相关信息广播至各个业务板。
其中,主控板在多业务板分布式架构的设备中,负责所有的配置管理。
上述封装报文所需要的信息包括隧道的源地址、目的地址、Tunen1接口的IP地址、检验和、认证关键字等信息;
S402、主控板将配置的GRE路由信息广播到业务板和接口板。
该步骤中,GRE路由信息除了路由的下一跳和出接口外,还包括处理GRE报文的CPUID和隧道ID。
S403、接口板接收报文,并根据报文的目的地址来确定如何路由此包。
该步骤中路由该数据包的方式包括:
(1)当报文的目的地址被发现要路由经过Tunnel的出接口时,接口板根据配置的GRE路由信息获得该报文对应的CPUID,并将报文送到对应的CPU所在的业务板进行处理;
(2)当报文是到本机的,接口板根据报文的源地址和目的地址进行hash,计算出应该由哪个业务板对报文进行处理。该过程实现了本步骤的目的在于保证了同一个报文在同一个CPU上进行处理,避免了相同报文在不同CPU处理时因为查不到会话信息丢包,同时避免了对所有报文都进行hash计算CPU所带来的转CPU的麻烦。
S404、业务板接收接口板发送的要路由经过Tunnel的出接口的报文时,查找该报文的路由,并根据预先配置的GRE路由信息确定该报文的出接口,下一跳以及要进哪个Tunnel进行加封装等信息。
S405、业务板根据预先配置的封装报文的相关信息对报文进行加封装处理。
上述对报文进行加封装处理具体为将隧道的源地址、目的地址和隧道标识等信息添加到报文的头部。
S406、业务板将封装后根据步骤s404中配置的报文的出接口、下一跳等信息的报文通过查路由确定接口和下一跳,将封装后的报文后送到接口板转发。
具体的将接收到的报文进行解封装的过程,如图5所示,具体为:
S501、接口板收到本机的报文后,对报文的源地址和目的地址进行hash,根据hash索引选择相应的CPU,并将该报文发送到CPU对应的业务板上。
S502、业务板根据所保存的配置信息对接收到的报文进行解封装。
其中,配置信息具体为道的源地址、目的地址、Tunen1接口的IP地址和隧道标识等信息。
上述解封装过程具体包括:首先判断GRE协议报文的源地址、目的地址和隧道标识是否为该隧道的源地址、目的地址和隧道标识。如果是,则将GRE协议报文的源地址、目的地址和隧道标识去掉;否则,丢弃该GRE 协议报文。
S503、报文解封装后直接在该业务的CPU上进行处理。
通过上述步骤,实现了在复杂的多业务板多核环境中的负载分流。
通过本发明实施例一提供的方法,避免了大量报文同时送到同一个业务板等待处理,提高了转发效率、节省了主控板的CPU资源。并且GRE报文进出隧道在同一个CPU进行处理,保持了会话信息的一致性。
本发明实施例还提供一种接口板,如图6所示,该接口板应用于包括主控板、至少一个接口板和业务板的系统,包括:报文下发单元10、报文转发单元20以及报文接收单元30;
所述报文下发单元10,用于根据主控板下发的配置通用路由封装GRE路由信息,将接收到的第一报文发送到指定业务板;
所述报文转发单元20,用于接收所述业务板发送的封装处理后的第一报文,并根据所述主控板下发的配置GRE路由信息向外部转发所述封装处理后的第一报文;
所述报文接收单元30,用于接收到外部发送的对所述封装处理后的第一报文进行响应的第二报文,根据配置的路由信息将所述第二报文发送到所述业务板;
如图7所示,所述报文下发单元10还包括:第一报文下发子单元11和第二报文下发子单元12;
第一报文下发子单元11,用于当所述接口板发现接收到的第一报文是要路由经过隧道Tunnel的出接口时,所述接口板根据配置的GRE路由信息获得所述第一报文对应的CPUID,并将所述第一报文发送到业务板。
第二报文下发子单元12,用于当所述接口板发现接收到的第一报文是到本机的报文时,所述接口板根据所述第一报文的源地址和目的地址进行hash,计算处理所述第一报文的业务板并发送所述第一报文。
本发明实施例还提供一种报文的转发的系统,如图8所示,包括主控板40、至少一个接口板50和业务板60;
所述主控板40,用于对封装报文所需要的信息和配置GRE路由信息进行 下发;
所述接口板50,用于根据所述主控板40下发的配置GRE路由信息,将接收到的第一报文发送到所述业务板60,由所述业务板60对所述第一报文进行封装处理,并接收所述业务板60发送的封装处理后的第一报文,并根据所述主控板40下发的配置GRE路由信息向外部转发所述封装处理后的第一报文,在接收到外部发送的对所述封装处理后的第一报文进行响应的第二报文之后,根据配置的路由信息将所述第二报文路由到所述业务板60,由所述业务板60对所述第二报文进行解封装处理;
所述业务板60,用于对所述接口板50发送的报文进行封装和解封装处理。
通过使用本发明实施例提供的设备和系统,避免了大量报文同时送到同一个业务板等待处理,提高了转发效率、节省了主控板的CPU资源。并且GRE报文进出隧道在同一个CPU进行处理,保持了会话信息的一致性。。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。