报文转发方法、装置、路由器、存储介质及系统与流程

专利2024-10-08  14


本发明实施例涉及以太网通信技术领域,尤其涉及一种报文转发方法、装置、路由器、存储介质及系统。



背景技术:

虚拟冗余路由协议(virtualrouterredundancyprotocol,vrrp)是目前应用最广泛的网关冗余保护机制,通过将两个或多个路由器聚集到一起,组成一个虚拟路由器,并对外提供一致的虚互联网协议(internetprotocol,ip)地址和虚媒体访问控制(mediaaccesscontrol,mac)地址。终端可以指定网关地址为vrrp的虚ip地址实现对外部网络的访问。vrrp路由器会选举出主路由器作为唯一的三层转发者,当主路由器故障时从备用路由器中选举出新的主路由器,切换主路由器后不改变ip地址和mac地址,此过程对于终端设备不需要感知,提高网络的可靠性。

现有技术中,解析协议(addressresolutionprotocol,arp)表项的学习还包括物理出接口的学习,由于三层学习物理出接口过程也需要花费时间,达不到50ms的电信级要求,因此,路由器使用该arp表项进行转发的数据帧会出现持续性丢包的情况。



技术实现要素:

本发明提供一种报文转发方法、装置、路由器、存储介质及系统,以使路由器无需进行三层学习即可得到物理出接口,提高三层数据报文的转发速度。

第一方面,本发明实施例提供了一种报文转发方法,应用于虚拟冗余路由协议网络中与交换机的转发端口连接的路由器中,包括:

获取待转发的目标数据报文;

根据目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文。

可选的,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文,包括:

在arp表中查询目标数据报文中的目的ip地址匹配的目标mac地址,在mac表中查询目标mac地址对应的目标出接口,并根据查询的目标出接口转发目标数据报文;

其中,ip地址与mac地址的对应关系通过arp学习获得并存储在arp表中,mac地址与出接口的对应关系通过二层学习获得并存储在mac表中。

可选的,arp表的各表项中用于三层转发的出接口为路由器中的物理环回接口或逻辑环回接口;

查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文,包括:

在arp表中查询目标数据报文中的目的ip地址匹配的目标mac地址;

根据目标mac地址对目标数据报文进行修改,并将修改后的目标数据报文通过物理环回接口或逻辑环回接口进行虚拟三层转发;

在mac表中查询目标mac地址对应的目标出接口,并通过目标出接口对经过虚拟三层转发的目标数据报文进行二层转发。

可选的,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文,包括:

在arp表中查询目标数据报文中的目的ip地址匹配的目标mac地址,并在mac表中查询目标mac地址对应的目标出接口;

根据目标mac地址对目标数据报文进行修改,并通过目标出接口对修改后的目标数据报文进行二层转发。

可选的,在获取待转发的目标数据报文之前,还包括:

配置路由器中的一个空闲的物理出接口作为主路由器中的物理环回接口,或者,配置所述路由器中的一个空闲的逻辑出接口作为所述路由器中的逻辑环回接口;

配置路由器中的物理环回接口或逻辑环回接口不属于任何vlan,并且出入任意vlan检查去使能。

可选的,方法还包括:

接收到arp请求报文后,将arp请求报文转发至虚拟冗余路由协议网络的各其它路由器,以指示各其它路由器学习arp请求报文中ip地址对应的mac地址,并将对应关系存储在本机arp表中。

可选的,方法还包括:

控制层将学习到的ip地址与mac地址的对应关系下发至转发层;

转发层将控制层下发的上述对应关系保存在本地arp表项中,并将本地arp表项中的物理出接口替换为路由器的物理环回接口或逻辑环回接口。

第二方面,本发明实施例还提供了一种报文转发方法,应用于虚拟冗余路由协议网络中与交换机的阻塞端口连接的路由器中,包括:

接收虚拟冗余路由协议网络中的其它路由器转发的arp请求报文,学习所述arp请求报文中ip地址对应的mac地址,并将上述对应关系存储在本机arp表中;或者,接收其它路由器同步的ip地址与mac地址的对应关系,将所述其它路由器同步的ip地址与mac地址的对应关系存储在本机arp表中;

当路由器与上述交换机的转发端口连接时,根据从上述交换机的转发端口接收到的目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文。

可选的,方法还包括:

控制层将学习到或其它路由器同步得到的ip地址与mac地址的对应关系下发至转发层;

转发层将控制层下发的上述对应关系保存在本地arp表项中,并将本地arp表项中的物理出接口替换为路由器的物理环回接口或逻辑环回接口。

第三方面,本发明实施例还提供了一种报文转发装置,应用于虚拟冗余路由协议网络与交换机的转发端口连接的路由器中,包括:

获取模块,用于获取待转发的目标数据报文;

转发模块,用于根据目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文。

第四方面,本发明实施例还提供了一种报文转发装置,应用于虚拟冗余路由协议网络中与交换机的阻塞端口连接的路由器中,包括:

报文接收模块,用于接收虚拟冗余路由协议网络中的其它路由器转发的arp请求报文,学习所述arp请求报文中ip地址对应的mac地址,并将上述对应关系存储在本机arp表中;或者,接收其它路由器同步的ip地址与mac地址的对应关系,将其它路由器同步的ip地址与mac地址的对应关系存储在本机arp表中;

报文转发模块,用于当路由器从上述交换机的转发端口连接时,根据从上述交换机的转发端口接收到的目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文。

第五方面,本发明实施例还提供了一种路由器,路由器包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如本发明任意实施例提供的报文转发方法。

第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例提供的报文转发方法。

第七方面,本发明实施例还提供了一种报文转发系统,包括虚拟冗余路由协议网络中的各路由器,虚拟冗余路由协议网络中的所有路由器在本机均保存有地址解析协议arp表,所述arp表中包括虚拟冗余路由协议网络中各路由器能直达的所有的主机的ip地址与mac地址的对应关系。

可选的,虚拟冗余路由协议网络中任意一台路由器,用于接收到apr请求报文后,向虚拟冗余路由协议网络中其它路由器转发所述apr请求报文;或者,将学习到的ip地址与mac地址的对应关系同步给与虚拟冗余路由协议网络中其它路由器。

可选的,虚拟冗余路由协议网络中与交换机的转发端口连接的路由器,用于接收到apr请求报文后,向与所述交换机的阻塞端口连接的路由器转发所述apr请求报文;或者,将学习到的ip地址与mac地址的对应关系同步给与所述交换机的阻塞端口连接的路由器。

可选的,虚拟冗余路由协议网络中与双网卡主机的工作网口连接的路由器,用于接收到apr请求报文后,向与所述双网卡主机的非工作网口连接的路由器转发所述apr请求报文;或者,将学习到的ip地址与mac地址的对应关系同步给与所述双网卡主机的非工作网口连接的路由器。

本发明实施例的技术方案,通过虚拟冗余路由协议网络的路由器从交换机的转发端口获取待转发的目标数据报文;根据目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文。由于本发明实施例分别查询arp表和mac表最终确定转发目标数据报文的目标出接口,因此在三层的arp表中不需要有物理出接口,出接口在二层mac表中去查找,因此,解决了现有技术中路由器三层学习物理出接口花费时间较长,导致报文丢包的问题,使得路由器无需进行三层学习即可获取物理出接口,提高三层数据报文的转发速度,减少了报文的丢包率。并且,在路由器故障或交换机与路由器之间的链路故障,交换机需要倒换转发端口连接的路由器过程中,也就是一台交换机的主路由器发生变化时,该交换机的新主路由器也不需要三层学习物理出接口,避免低速率的三层协议交互,将三层切换转化成二层切换,大大缩短了故障的三层业务切换时间。

附图说明

图1是本发明实施例一中的一种报文转发方法的流程图;

图2a是本发明实施例二中的一种报文转发方法的流程图;

图2b是本发明实施例二中的一种arp表项学习下发的流程示意图;

图2c是本发明实施例二中的一种虚拟冗余路由协议网络的网络拓扑示意图;

图3是本发明实施例三中的一种报文转发方法的流程图;

图4是本发明实施例四中的一种报文转发装置的结构示意图;

图5是本发明实施例五中的一种报文转发装置的结构示意图;

图6是本发明实施例六中的一种路由器的结构示意图;

图7是本发明实施例八中的一种报文转发系统的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

现有技术中,针对虚拟冗余路由协议网络,只有主路由器可以进行报文转发,当主路由器查询arp表没有找到与接收的三层数据报文对应的arp表项时,或者,当主路由器发生故障、备用路由器切换为主路由器时,主路由器都必须先三层学习与接收的三层数据报文对应的arp表项。由于arp表项中还包括物理出接口,因此,主路由器还需要三层学习物理出接口,然后才能通过物理出接口转发接收的报文,但是,由于三层学习物理出接口花费的时间比较长,达不到50ms的电信级要求,因此还会导致接收的报文出现丢包的情况。本发明实施例避开三层学习物理出接口,通过查询二层mac表或者通过二层学习获取物理出接口,大大减少了三层学习时间,加快了接收报文的转发速度,减少了报文的丢包率。

需要说明的是本发明实施例适应于以下场景:1、vrrp网络中只有一台路由器与交换机的转发端口连接而其它路由器只与交换机的阻塞端口连接的场景,即只有一台主路由器其它均为备用路由器的场景;2、vrrp网络中至少有两台路由器与交换机的转发端口连接且连接的是不同交换机的转发端口的场景,在该场景下至少有两台交换机的主路由器不相同即两台交换机的转发端口连接不同的路由器,例如,vrrp网络有两台路由器1和路由器2,路由器1与交换机a的转发端口连接,路由器2与交换机b的转发端口连接。该场景下有可能有一台路由器与交换机a的转发端口连接而与另一台交换机b的阻塞端口连接。该场景下可以是任意一台交换机连接所有的路由器,也可以只有部分交换机连接所有的路由器而部分交换机连接部分路由器,总之满足以下条件即可:任意一台路由器不连接分布式转发系统中所有交换机的转发端口,任意一台路由器也不连接分布式转发系统中所有交换机的阻塞端口,或者,满足至少有两台交换机的主路由器不相同。进一步,在vlan场景下,同一vlan中的交换机hosta和交换机hostb的主路由器不相同,即同一vlan中的交换机hosta和交换机hostb的转发端口连接不同的路由器。

实施例一

图1是本发明实施例一中的一种报文转发方法的流程图,本实施例可适用于路由器对三层数据报文进行快速转发的情况,该方法可以由报文转发装置来执行,该装置可以由软件和/或硬件来实现,并一般可以集成在虚拟冗余路由协议网络中与交换机的转发端口连接的路由器中,该路由器可以称为该交换机的主路由器。如图1所示,该方法包括:

步骤110、获取待转发的目标数据报文。

本实施例中,虚拟冗余路由协议网络的主路由器可以是没有发生过故障的原本设置的主路由器,也可以是原本的主路由器发生故障,备用路由器切换为的新的主路由器。目标据报文可以是发送终端通过主路由器转发给目的终端的数据报文,目标数据报文中可以包括源ip地址、目的ip地址、源mac地址、目标mac地址等信息,用于实现目标数据报文的转发。

步骤120、根据目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文。

具体地,从交换机的转发端口接收到目标数据报文后,路由器先在三层arp表中查找目的mac,然后在二层mac表中查找物理出接口。

本实施例中,由于三层数据报文和二层数据报文的转发流程不同,因此,在获取到目标数据报文之后,需要先判断该目标数据报文的类型。可以从目标数据报文中获取目标mac地址,如果目标mac地址与主路由器的mac地址相同,则确定目标数据报文为三层数据报文,否则,确定目标数据报文为二层数据报文。本实施例主要用于提高对三层数据报文的转发速度。

进一步可选的,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文,可以包括:在arp表中查询目标数据报文中的目的ip地址匹配的目标mac地址,在mac表中查询目标mac地址对应的目标出接口,并根据查询的目标出接口转发目标数据报文;

其中,ip地址与mac地址的对应关系通过arp学习获得并存储在arp表中,mac地址与出接口的对应关系通过二层学习获得并存储在mac表中。

本实施例中,在接收到三层的目标数据报文之后,可以从目标数据报文中获取目的ip地址,然后查询本机的arp表中ip地址与mac地址的对应关系,找到与目的ip地址匹配的目标mac地址,即目的终端的mac地址。根据目标mac地址查询本机mac表中mac地址与出接口的对应关系,找到与目标mac地址对应的主路由器的目标出接口,通过目标出接口将目标数据报文转发给与目标mac地址对应的目的终端,完成目标数据报文的转发。

本实施例中,如果从本机的arp表中没有查询到与目的ip地址对应的表项,则路由器通过三层arp学习获取与目的ip地址匹配的目标mac地址,并将目的ip地址与目标mac地址的对应关系存储到本机的arp表中,以用于下次查询与目的ip地址对应的mac地址。如果从本机的mac表中没有查询到与目标mac地址对应的主路由器的目标出接口,则主路由器根据目标mac地址进行二层学习获取目标出接口,并将目标mac地址与目标出接口的对应关系存储到本机的mac表中,并且通过目标出接口将目标数据报文转发给与目标mac地址对应的目的终端。

本实施例中,与交换机的转发端口连接的路由器不需要通过三层学习来获取与目标mac地址对应的目标出接口,而是通过二层学习来获取目标出接口,利用二层学习物理出接口花费的时间远远小于三层学习,大大缩短学习目标出接口的时间,达到对三层数据报文进行快速转发的目的。

本发明实施例的技术方案,通过虚拟冗余路由协议网络的路由器从交换机的转发端口获取待转发的目标数据报文;根据目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文。由于本发明实施例分别查询arp表和mac表最终确定转发目标数据报文的目标出接口,因此在三层的arp表中不需要有物理出接口,出接口在二层mac表中去查找,因此,解决了现有技术中路由器三层学习物理出接口花费时间较长,导致报文丢包的问题,使得路由器无需进行三层学习即可获取物理出接口,提高三层数据报文的转发速度,减少了报文的丢包率。并且,在路由器故障或交换机与路由器之间的链路故障,交换机需要倒换转发端口连接的路由器过程中,新接管的路由器也不需要三层学习物理出接口,避免低速率的三层协议交互,将三层切换转化成二层切换,大大缩短了故障的三层业务切换时间。

实施例二

图2a是本发明实施例二中的一种报文转发方法的流程图,本实施例在上述实施例的基础上进一步细化,提供了查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文的三种具体实施方式,下面结合图2a对本申请实施例二中提供的一种报文转发方法进行说明,包括以下步骤:

步骤210、获取待转发的目标数据报文。

本实施例中,虚拟冗余路由协议网络的主路由器是针对一台交换机来说,该交换机的转发端口连接至该路由器,该路由器称为该交换机的主路由器,有可能对其它交换机来说该路由器是备用路由器。目标数据报文可以是发送终端要通过路由器转发给目的终端的数据报文。

可选的,在获取待转发的目标数据报文之前,还可以包括:配置路由器中的一个空闲的物理出接口作为路由器中的物理环回接口,或者,配置所述路由器中的一个空闲的逻辑出接口作为所述路由器中的逻辑环回接口;配置路由器中的物理环回接口或逻辑环回接口不属于任何vlan,并且出入任意vlan检查去使能。

本实施例中,为了缩短报文转发时间,路由器在获取待转发的目标数据报文之前,预先配置自身中的一个空闲的物理出接口作为路由器中的物理环回接口,如果路由器有逻辑接口,也可以配置路由器中的一个空闲的逻辑出接口作为路由器中的逻辑环回接口,通过设置物理环回接口或逻辑环回接口可以实现arp表与出接口分离,后续接收到三层数据报文时,只需查arp表获取目的ip地址与目标mac地址的对应关系,不需要获取与目标mac地址对应的目标出接口或者三层学习物理出接口,直接通过物理环回接口或逻辑环回接口对三层数据报文进行快速环回,然后通过查二层mac表或者二层学习快速获取目标出接口。

本实施例中,路由器还配置路由器中的物理环回接口或逻辑环回接口不属于任何虚拟局域网,使得物理入接口的二层数据报文不会洪泛到物理环回接口或逻辑环回接口中,避免二层数据报文进入物理环回接口或逻辑环回接口查二层表后陷入死循环,无法转发出去。路由器还配置路由器中的物理环回接口或逻辑环回接口出入任意虚拟局域网检查去使能,使得任意虚拟局域网的三层数据报文都可以进入物理环回接口或逻辑环回接口,从而允许所有内环回的数据报文进行二层转发。

需要说明的是,网络中的各路由器均预先配置自身的一个空闲物理出接口作为物理环回接口,或者,配置自身的一个空闲的逻辑出接口作为路由器中的逻辑环回接口,以便于与交换机的阻塞端口连接的路由器切换为与交换机的转发端口连接后,可以直接通过自身的物理环回接口或逻辑环回接口转发三层数据报文。

步骤220、如果确定目标数据报文为三层数据报文,则根据目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文。

本实施例中,由于三层数据报文和二层数据报文的转发流程不同,因此,在获取到目标数据报文之后,可以先根据目标数据报文中的目标mac地址判断目标数据报文的类型。

本实施例中,如果确定目标数据报文为三层数据报文,与交换机的转发端口连接的主路由器可以采用两种方式对目标数据报文进行转发。第一种转发方式是使用物理环回接口或逻辑环回接口对目标数据报文进行快速环回,通过缩短目标数据报文的三层转发时间,达到快速转发报文的效果。其中,逻辑环回接口是预先设置的路由器的一个空闲的逻辑接口,逻辑接口是指逻辑意义上用于区分服务的端口,不是物理上存在的。由于路由器的交换芯片可能支持逻辑接口,也可能不支持逻辑接口,因此,采用逻辑环回接口转发数据报文的方式只适应于路由器支持逻辑接口的情况。

可选的,arp表的各表项中用于三层转发的出接口为路由器中的物理环回接口或逻辑环回接口;查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文,可以包括:在arp表中查询目标数据报文中的目的ip地址匹配的目标mac地址;根据目标mac地址对目标数据报文进行修改,并将修改后的目标数据报文通过物理环回接口或逻辑环回接口进行虚拟三层转发;在mac表中查询目标mac地址对应的目标出接口,并通过目标出接口对经过虚拟三层转发的目标数据报文进行二层转发。

本实施例中,为了实现arp表与出接口分离,使得转发三层数据报文时,只需查arp表获取目的ip地址与目标mac地址的对应关系,不需要获取与目标mac地址对应的目标出接口或者三层学习物理出接口,路由器预先将arp表中用于三层转发的物理出接口设置为路由器的物理环回接口或逻辑环回接口。

路由器在通过交换机的转发端口接收到目标数据报文之后,可以先从目标数据报文中获取目的ip地址,根据目的ip地址查询本机存储的arp表,获取与目的ip地址匹配的目标mac地址,或者与目的ip地址匹配的目标mac地址和目标vlan标识,并根据获取的信息对目标数据报文进行修改。例如,将目标数据报文中的源mac地址修改为路由器的mac地址,将目的mac地址修改为与目标mac地址,将生存时间值减一,封装目标vlan标识等。然后,将修改后的目标数据报文发送至物理环回接口或逻辑环回接口进行环回,并根据目标mac地址,或者目标mac地址和目标vlan标识查询mac表获取路由器的目标出接口,通过目标出接口对环回回来的目标数据报文进行二层转发。

本实施例中,如图2b所示,如果根据目标数据报文中的目的ip地址查询arp表时,没有查询到与目的ip地址匹配的arp表项,则需要路由器通过广播与目的ip地址对应的arp请求报文,学习与目的ip地址匹配的arp表项,包括:目的ip地址以及与目的ip地址对应的目标mac地址、目标vlan标识和物理出接口。

本实施例中,第二种转发方式可以是,路由器不使用物理环回接口或逻辑环回接口,只通过查询arp表和mac表转发三层数据报文。

可选的,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文,可以包括:在arp表中查询目标数据报文中的目的ip地址匹配的目标mac地址,并在mac表中查询目标mac地址对应的目标出接口;根据目标mac地址对目标数据报文进行修改,并通过目标出接口对修改后的目标数据报文进行二层转发。

本实施例中,路由器对三层数据报文进行转发时,可以先从目标数据报文中获取目的ip地址,根据目的ip地址查询本机存储的arp表,获取与目的ip地址匹配的目标mac地址,或者与目的ip地址匹配的目标mac地址和目标vlan标识。为了缩短三层转发的时间,此时路由器不会根据目标mac地址,对目标数据报文中源mac地址和目的mac地址等信息进行修改,而是根据目标mac地址继续查询mac表,得到与目的mac地址匹配的目标出接口。然后根据目标mac地址,或者根据目标mac地址和目标vlan标识对目标数据报文进行修改,例如,将目标数据报文中的源mac地址修改为路由器的mac地址,将目的mac地址修改为目标mac地址等,并通过目标出接口对修改后的目标数据报文进行二层转发。

本实施例中,由于转发三层数据报文需要arp表和mac表,而现有技术中只有与交换机的转发端口连接的主路由器才能学习arp表,与交换机的阻塞端口连接的备用路由器不能学习,因此,为了在主路由器故障,备用路由器切换为与交换机的转发端口连接的新的主路由器时,新的主路由器无需三层学习arp表就能立刻进行报文的三层转发,可以让虚拟冗余路由协议网络中的各路由器同步存储主路由器的arp表中包括的mac地址和vlan标识,从而使得主路由器和备用路由器的arp表一致。

可选的,所述arp表的各表项中用于三层转发的出接口为所述路由器中的逻辑环回接口;查询本机存储的arp表和mac表,并根据查询的目标出接口转发所述目标数据报文,包括:在所述arp表中查询所述目标数据报文中的目的ip地址匹配的目标mac地址;根据所述目标mac地址对所述目标数据报文进行修改,并将修改后的目标数据报文通过所述逻辑环回接口进行三层逻辑转发;在所述mac表中查询所述目标mac地址对应的目标出接口,并通过所述目标出接口对经过三层逻辑转发的目标数据报文进行二层转发。

本实施例中,为了使得路由器转发三层数据报文时,不需要获取与目标mac地址对应的目标出接口或者三层学习物理出接口,实现arp表与出接口分离,路由器预先将arp表中用于三层转发的物理出接口设置为路由器的逻辑环回接口。路由器在通过交换机的转发端口接收到目标数据报文之后,可以先从目标数据报文中获取目的ip地址,根据目的ip地址查询本机存储的arp表,获取与目的ip地址匹配的目标mac地址,或者与目的ip地址匹配的目标mac地址和目标vlan标识,并根据获取的信息对目标数据报文进行修改。然后,将修改后的目标数据报文发送至逻辑环回接口进行环回,并根据目标mac地址,或者目标mac地址和目标vlan标识查询mac表获取路由器的目标出接口,通过目标出接口对环回回来的目标数据报文进行二层转发。

可选的,还可以包括:接收到arp请求报文后,将arp请求报文转发至虚拟冗余路由协议网络的各其它路由器,以指示各其它路由器学习arp请求报文中ip地址对应的mac地址,并将对应关系存储在本机arp表中。

本实施例中,路由器在接收到终端发送的arp请求报文之后,可以学习到与终端设备对应的arp表项,为了使得各其它设备能同步学习到与该终端设备对应的arp信息,会将该arp请求报文转发至虚拟冗余路由协议网络的各其它路由器,使得各其它路由器从arp请求报文中获取与终端设备对应的ip地址以及mac地址,如果arp请求报文中存在vlan标识,还可以获取vlan标识,并将对应关系存储在本机arp表中,实现其它路由器同步存储路由器的arp表中包括的ip地址、mac地址、vlan标识。

示例性的,如图2c所示,假设路由器h01接收到j01发送的arp请求报文,则根据arp请求报文学习到与j01对应的arp表项后,将arp请求报文转发至其它路由器h02,使得h02可以根据arp请求报文获取与终端j01对应的ip地址、mac地址、vlan标识这些arp信息。

可选的,方法还可以包括:控制层将学习到的ip地址与mac地址的对应关系下发至转发层;转发层将控制层下发的上述对应关系保存在本地arp表项中,并将本地arp表项中的物理出接口替换为路由器的物理环回接口或逻辑环回接口。

本实施例中,与交换机的转发端口连接的路由器和与交换机的阻塞端口连接的其它路由器都是完整的交换设备,包括控制层和转发层,控制层是指协议控制,属于软件控制,转发层是数据转发的实现层,可以是交换芯片。路由器的控制层学习到了新的arp表项后,可以根据新的arp表项更新本地控制层的arp表,并将学习到的ip地址与mac地址的对应关系下发到转发层的交换芯片中,以使交换芯片更新转发层的arp表,从而对数据报文进行正确转发。

其中,转发层将对应关系保存在本地arp表项中之后,为了缩短三层转发时间,以及避免三层学习物理出接口,将本地arp表项中的对应三层转发的物理出接口替换为路由器的物理环回接口或逻辑环回接口,从而路由器接收到三层数据报文后,可以通过物理环回接口或逻辑环回接口进行虚拟三层转发将三层数据报文快速环回一圈,通过查询二层表或者二层学习快速获取到目标出接口,实现数据报文的二层转发。

本实施例中,通过实现路由器与其它路由器同步存储路由器的arp表中包括的mac地址和vlan标识,并使路由器将本地arp表项中用于三层转发的物理出接口替换成自身的物理环回接口或逻辑环回接口,使得路由器转发三层报文时,可以通过物理环回接口或逻辑环回接口对三层数据报文快速环回,然后查二层表快速获取到目标出接口,对三层数据报文进行二层转发,无需通过三层学习获取目标出接口,缩短了目标出接口的学习时间,加快了报文的转发速度。

步骤230、如果确定目标数据报文为二层数据报文,则根据本机存储的mac表,对目标数据报文进行二层转发。

本发明实施例的技术方案,通过虚拟冗余路由协议网络的路由器从交换机的转发端口获取待转发的目标数据报文;根据目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文。由于本发明实施例分别查询arp表和mac表最终确定转发目标数据报文的目标出接口,因此在三层的arp表中不需要有物理出接口,出接口在二层mac表中去查找,因此,解决了现有技术中路由器三层学习物理出接口花费时间较长,导致报文丢包的问题,使得路由器无需进行三层学习即可获取物理出接口,提高三层数据报文的转发速度,减少了报文的丢包率。并且,在路由器故障或交换机与路由器之间的链路故障,交换机需要倒换转发端口连接的路由器过程中,新接管的路由器也不需要三层学习物理出接口,避免低速率的三层协议交互,将三层切换转化成二层切换,大大缩短了故障的三层业务切换时间。

实施例三

图3是本发明实施例一中的一种报文转发方法的流程图,本实施例可适用于备用路由器切换为主路由器对三层数据报文进行快速转发的情况,该方法可以由报文转发装置来执行,该装置可以由软件和/或硬件来实现,并一般可以集成在虚拟冗余路由协议网络的任意一台交换机的备用路由器中,如图3所示,该方法包括:

步骤310、接收虚拟冗余路由协议网络中的其它路由器转发的arp请求报文,学习所述arp请求报文中ip地址对应的mac地址,并将上述对应关系存储在本机arp表中;或者,接收其它路由器同步的ip地址与mac地址的对应关系,将所述其它路由器同步的ip地址与mac地址的对应关系存储在本机arp表中。

本实施例中,路由器转发三层数据报文需要arp表,但是与交换机的阻塞端口连接的备用路由器是不能学习arp表的,为了在主路由器故障,备用路由器切换为新的主路由器时,新的主路由器无需三层学习arp表就能立刻进行报文的三层转发,有实现两种方式;第一种方案是备用路由器可以通过接收主路由器转发的arp请求报文来学习arp表,第二种方案是通过接收主路由器同步的、主路由器学习到的ip地址与mac地址的对应关系,实现本机存储的arp表与主路由器的arp表一致,例如,交换机的主路由器通过vrrp通告报文周期性将本机的arp表项发送给该交换机的备用路由器。第一种方案相比于第二种方案,备用路由器获得arp表项更及时,在切换为主路由器时,相比于第二个方案进一步减少了学习arp表项的时间,因为第二种方案是周期性同步会存在主路由器上的arp表项已更新而备用路由器上的arp表项还未来及得更新的情况。

本实施例中,如果一台交换机的备用路由器接收到该交换机的主路由器发送的arp请求报文,则从arp请求报文中获取与终端设备对应的ip地址以及mac地址,如果arp请求报文中存在vlan标识,还可以获取vlan标识,并将对应关系存储在本机arp表中,以便于后续查表进行三层转发。如果备用路由器接收到主路由器学习到的、与终端设备对应的ip地址以及mac地址,可能还包括vlan标识,则直接将上述对应关系存储到本地arp表中。

可选的,方法还可以包括:控制层将学习到或其它路由器同步得到的ip地址与mac地址的对应关系下发至转发层;转发层将控制层下发的上述对应关系保存在本地arp表项中,并将本地arp表项中的物理出接口替换为路由器的物理环回接口或逻辑环回接口。

本实施例中,路由器是完整的交换设备,包括控制层和转发层,控制层是指协议控制,属于软件控制,转发层是数据转发的实现层,可以是交换芯片。路由器在学习到新的arp信息之后,或者获取到其它路由器同步的新的arp信息之后,可以通过控制层将新的arp信息中包括的ip地址与mac地址的对应关系下发至转发层的交换芯片中,以使交换芯片更新转发层的arp表,从而对数据报文进行正确转发。

其中,转发层将对应关系保存在本地arp表项中之后,为了缩短三层转发时间,以及避免三层学习物理出接口,将本地arp表项中的对应三层转发的物理出接口替换为路由器的物理环回接口或逻辑环回接口,从而一台交换机的备用路由器切换为该交换机的主路由器从该交换机的转发端口接收到三层数据报文后,可以通过物理环回接口或逻辑环回接口进行虚拟三层转发将三层数据报文快速环回一圈,通过查询二层表或者二层学习快速获取到目标出接口,实现数据报文的二层转发。

需要说明的是,只有用于三层转发的物理出接口会受到主路由器的故障状态的影响,对于二层转发来说,路由器与下一跳之间的物理出接口不受主路由器是否故障的影响。

步骤320、当路由器与上述交换机的转发端口连接时,根据从上述交换机的转发端口接收到的目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发所述目标数据报文。

本实施例中,当路由器从与一台交换机的阻塞端口相连切换为与该交换机的转发端口相连时,如果从该交换机的转发端口接收到的目标数据报文为三层数据报文,路由器可以采用两种方式对目标数据报文进行转发。第一种转发方式是使用物理环回接口或逻辑环回接口对目标数据报文进行快速环回,通过缩短目标数据报文的三层转发时间,达到快速转发报文的效果。

本实施例中,路由器可以先从目标数据报文中获取目的ip地址,根据目的ip地址查询本机存储的arp表,获取与目的ip地址匹配的目标mac地址,或者与目的ip地址匹配的目标mac地址和目标vlan标识,并根据获取的信息对目标数据报文进行修改。例如,将目标数据报文中的源mac地址修改为路由器的mac地址,将目的mac地址修改为与目标mac地址,将生存时间值减一,封装目标vlan标识等。然后,将修改后的目标数据报文发送至物理环回接口或逻辑环回接口进行环回,并根据目标mac地址,或者目标mac地址和目标vlan标识查询mac表获取路由器的目标出接口,通过目标出接口对环回回来的目标数据报文进行二层转发。

本实施例中,第二种转发方式可以是,路由器不使用物理环回接口或逻辑环回接口,只通过查询arp表和mac表转发三层数据报文。路由器可以先从目标数据报文中获取目的ip地址,根据目的ip地址查询本机存储的arp表,获取与目的ip地址匹配的目标mac地址,或者与目的ip地址匹配的目标mac地址和目标vlan标识。为了缩短三层转发的时间,此时路由器不会根据目标mac地址,对目标数据报文中源mac地址和目的mac地址等信息进行修改,而是根据目标mac地址继续查询mac表,得到与目的mac地址匹配的目标出接口。然后根据目标mac地址,或者根据目标mac地址和目标vlan标识对目标数据报文进行修改,例如,将目标数据报文中的源mac地址修改为路由器的mac地址,将目的mac地址修改为目标mac地址等,并通过目标出接口对修改后的目标数据报文进行二层转发。

本实施例中,通过实现备用路由器同步存储主路由器的arp表中包括的mac地址和vlan标识,并将本地arp表项中用于三层转发的物理出接口替换成自身的物理环回接口或逻辑环回接口,使备用路由器切换为主路由器后转发三层报文时,可以通过物理环回接口或逻辑环回接口对三层数据报文快速环回,然后查二层表快速获取到目标出接口转发三层数据报文,无需通过三层学习获取目标出接口,缩短了目标出接口的学习时间,加快了报文的转发速度。

本发明实施例的技术方案,通过虚拟冗余路由协议网络中与交换机的阻塞端口连接的路由器接收其它路由器转发的arp请求报文;学习arp请求报文中ip地址对应的mac地址,并将上述对应关系存储在本机arp表中;或者,接收其它路由器同步的ip地址与mac地址的对应关系,并将上述对应关系存储在本机arp表中;当路由器与上述交换机的转发端口连接时,根据从上述交换机的转发端口接收到的目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文,解决了现有技术中主路由器故障、备用路由器切换为新的主路由器时,该备用路由器需要花费时间较长三层学习物理出接口才能转发报文,导致报文丢包的问题,使得备用路由器切换为主路由器时,可以通过二层查表或者二层学习获取物理出接口,无需通过三层学习获取物理出接口,提高三层数据报文的转发速度,减少了报文的丢包率。

实施例四

图4是本发明实施例四中的一种报文转发装置的结构示意图,本实施例可适用于路由器对三层数据报文进行快速转发的情况,该装置可以由软件和/或硬件来实现,并一般可以集成在虚拟冗余路由协议网络中与交换机的转发端口连接的路由器中,该路由器可以称为该交换机的主路由器。如图4所示,该装置包括:

获取模块410,用于获取待转发的目标数据报文;

转发模块420,用于根据目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文。

本发明实施例的技术方案,通过虚拟冗余路由协议网络的路由器从交换机的转发端口获取待转发的目标数据报文;根据目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文。由于本发明实施例分别查询arp表和mac表最终确定转发目标数据报文的目标出接口,因此在三层的arp表中不需要有物理出接口,出接口在二层mac表中去查找,因此,解决了现有技术中路由器三层学习物理出接口花费时间较长,导致报文丢包的问题,使得路由器无需进行三层学习即可获取物理出接口,提高三层数据报文的转发速度,减少了报文的丢包率。并且,在路由器故障或交换机与路由器之间的链路故障,交换机需要倒换转发端口连接的路由器过程中,新接管的路由器也不需要三层学习物理出接口,避免低速率的三层协议交互,将三层切换转化成二层切换,大大缩短了故障的三层业务切换时间。

可选的,转发模块420,用于:

在arp表中查询目标数据报文中的目的ip地址匹配的目标mac地址,在mac表中查询目标mac地址对应的目标出接口,并根据查询的目标出接口转发目标数据报文;

其中,ip地址与mac地址的对应关系通过arp学习获得并存储在arp表中,mac地址与出接口的对应关系通过二层学习获得并存储在mac表中。

可选的,arp表的各表项中用于三层转发的出接口为路由器中的物理环回接口或逻辑环回接口;

转发模块420包括第一转发单元,用于:

在arp表中查询目标数据报文中的目的ip地址匹配的目标mac地址;

根据目标mac地址对目标数据报文进行修改,并将修改后的目标数据报文通过物理环回接口或逻辑环回接口进行虚拟三层转发;

在mac表中查询目标mac地址对应的目标出接口,并通过目标出接口对经过虚拟三层转发的目标数据报文进行二层转发。

可选的,转发模块420包括第二转发单元,用于:

在arp表中查询目标数据报文中的目的ip地址匹配的目标mac地址,并在mac表中查询目标mac地址对应的目标出接口;

根据目标mac地址对目标数据报文进行修改,并通过目标出接口对修改后的目标数据报文进行二层转发。

可选的,所述arp表的各表项中用于三层转发的出接口为所述路由器中的逻辑环回接口;

转发模块420包括第三转发单元,用于:

在所述arp表中查询所述目标数据报文中的目的ip地址匹配的目标mac地址;

根据所述目标mac地址对所述目标数据报文进行修改,并将修改后的目标数据报文通过所述逻辑环回接口进行三层逻辑转发;

在所述mac表中查询所述目标mac地址对应的目标出接口,并通过所述目标出接口对经过三层逻辑转发的目标数据报文进行二层转发。

可选的,还包括:配置模块,用于在获取待转发的目标数据报文之前,配置路由器中的一个空闲的物理出接口作为路由器中的物理环回接口,或者,配置所述路由器中的一个空闲的逻辑出接口作为所述路由器中的逻辑环回接口;配置路由器中的物理环回接口或逻辑环回接口不属于任何vlan,并且出入任意vlan检查去使能。

可选的,还包括:请求报文转发模块,用于接收到arp请求报文后,将arp请求报文转发至虚拟冗余路由协议网络的各其它路由器,以指示各其它路由器学习arp请求报文中ip地址对应的mac地址,并将对应关系存储在本机arp表中。

可选的,还包括:更新模块,用于通过控制层将学习到的ip地址与mac地址的对应关系下发至转发层;通过转发层将控制层下发的上述对应关系保存在本地arp表项中,并将本地arp表项中的物理出接口替换为路由器的物理环回接口或逻辑环回接口。

本发明实施例所提供的报文转发装置可执行本发明任意实施例所提供的应用于虚拟冗余路由协议网络中与交换机的转发端口连接的主路由器的报文转发方法,具备执行方法相应的功能模块和有益效果。

实施例五

图5是本发明实施例五中的一种报文转发装置的结构示意图,本实施例可适用于一台交换机的备用路由器切换为该交换机的主路由器对三层数据报文进行快速转发的情况,该装置可以由软件和/或硬件来实现,并一般可以集成在虚拟冗余路由协议网络的备用路由器中,如图5所示,该装置应用于虚拟冗余路由协议网络中与交换机的阻塞端口连接的备用路由器中,包括:

报文接收模块510,用于接收虚拟冗余路由协议网络中的主路由器转发的arp请求报文,学习所述arp请求报文中ip地址对应的mac地址,并将上述对应关系存储在本机arp表中;或者,接收主路由器同步的ip地址与mac地址的对应关系,将主路由器同步的ip地址与mac地址的对应关系存储在本机arp表中;

报文转发模块520,用于当路由器与上述交换机的转发端口连接时,根据从上述交换机的转发端口接收到的目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文。

本发明实施例的技术方案,通过虚拟冗余路由协议网络中与交换机的阻塞端口连接的路由器接收其它路由器转发的arp请求报文;学习arp请求报文中ip地址对应的mac地址,并将上述对应关系存储在本机arp表中;或者,接收其它路由器同步的ip地址与mac地址的对应关系,并将上述对应关系存储在本机arp表中;当路由器与上述交换机的转发端口连接时,根据从上述交换机的转发端口接收到的目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发目标数据报文,解决了现有技术中主路由器故障、备用路由器切换为新的主路由器时,该备用路由器需要花费时间较长三层学习物理出接口才能转发报文,导致报文丢包的问题,使得备用路由器切换为主路由器时,可以通过二层查表或者二层学习获取物理出接口,无需通过三层学习获取物理出接口,提高三层数据报文的转发速度,减少了报文的丢包率。

可选的,还包括:更新模块,用于通过控制层将学习到或其它路由器同步得到的ip地址与mac地址的对应关系下发至转发层;

通过转发层将控制层下发的上述对应关系保存在本地arp表项中,并将本地arp表项中的物理出接口替换为路由器的物理环回接口或逻辑环回接口。

本发明实施例所提供的报文转发装置可执行本发明任意实施例所提供的应用于虚拟冗余路由协议网络中与交换机的阻塞端口连接的备用路由器的报文转发方法,具备执行方法相应的功能模块和有益效果。

实施例六

图6是本发明实施例六中的一种路由器的结构示意图。路由器可以是虚拟冗余路由协议网络中与交换机的转发端口连接的主路由器,或者与交换机的阻塞端口连接的备用路由器。如图6所示,该路由器包括处理器610、存储器620、输入装置630和输出装置640;路由器中处理器610的数量可以是一个或多个,图6中以一个处理器610为例;路由器中的处理器610、存储器620、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线连接为例。

存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的报文转发方法对应的程序指令/模块(例如,应用于虚拟冗余路由协议网络中与交换机的转发端口连接的路由器中的报文转发装置中的获取模块410以及转发模块420,或者,应用于虚拟冗余路由协议网络中与交换机的阻塞端口连接的路由器中的报文转发装置中的报文接收模块510以及报文转发模块520)。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行路由器的各种功能应用以及数据处理,即实现上述的应用于虚拟冗余路由协议网络的主路由器中的报文转发方法,或者实现上述的应用于虚拟冗余路由协议网络的备用路由器中的报文转发方法。

存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至路由器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置630可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置640可包括用于数据发送的输出接口等。

实施例七

本发明实施例七还提供一种计算机可读存储介质,其上存储有计算机程序,程序在被计算机处理器执行时实现上述实施例提供的任一种报文转发方法。其中,一种报文转发方法,应用于虚拟冗余路由协议网络中与交换机的转发端口连接的路由器中,包括:

获取待转发的目标数据报文;

根据目标数据报文,查询本机存储的地址解析协议arp表和媒体访问控制mac表,并根据查询的目标出接口转发目标数据报文。

或者,一种报文转发方法,应用于虚拟冗余路由协议网络中与交换机的阻塞端口连接的用路由器中,包括:

接收所述虚拟冗余路由协议网络中的其它路由器转发的arp请求报文,学习所述arp请求报文中ip地址对应的mac地址,并将上述对应关系存储在本机arp表中;或者,接收所述其它路由器同步的ip地址与mac地址的对应关系,将所述其它路由器同步的ip地址与mac地址的对应关系存储在本机arp表中;

当所述路由器与上述交换机的转发端口连接时,根据从上述交换机的转发端口接收到的目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发所述目标数据报文。

当然,本发明实施例所提供的一种计算机可读存储介质,其计算机指令可执行不限于如上的方法操作,还可以执行本发明任意实施例所提供的报文转发方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,路由器,或者网络设备等)执行本发明各个实施例的方法。

值得注意的是,上述报文转发装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

实施例八

图7是本发明实施例八中的一种报文转发系统的结构示意图,本实施例可适用于路由器对三层数据报文进行快速转发的情况。如图7所示,报文转发系统包括虚拟冗余路由协议网络中的各路由器110,虚拟冗余路由协议网络中的所有路由器110在本机均保存有地址解析协议arp表,所述arp表中包括虚拟冗余路由协议网络中各路由器能直达的所有的主机的ip地址与mac地址的对应关系。

本实施例中,虚拟冗余路由协议网络中的各路由器110与主机直连,即主机的目标数据报文无需通过二层交换机发送至路由器110,其中,与路由器110直连的主机可以是单网卡主机也可以是双网卡主机,单网卡主机的网卡只能与一个路由器110连接,双网卡主机的每个网卡可以连接不同的路由器110。相应的,路由器的arp表中可以包括虚拟冗余路由协议网络中各路由器能直达的所有的主机的ip地址与mac地址的对应关系。

需要说明的是,虚拟冗余路由协议网络中的各路由器也可以与交换机直连,即通过交换机获取主机的目标数据报文,此时,相应的,路由器的arp表中还可以包括路由器可以间接到达的所有主机的ip地址与mac地址的对应关系。

可选的,虚拟冗余路由协议网络中任意一台路由器,用于接收到apr请求报文后,向虚拟冗余路由协议网络中其它路由器转发所述apr请求报文;或者,将学习到的ip地址与mac地址的对应关系同步给与虚拟冗余路由协议网络中其它路由器。

本实施例中,虚拟冗余路由协议网络中任意一台路由器如果接收到主机或者交换机发送的arp请求报文,则可以学习到对应的arp表项,为了使得网络中其它路由器能同步学习到与该主机或者交换机对应的arp信息,有两种实现方式:第一种方式可以将该arp请求报文转发至虚拟冗余路由协议网络的各其它路由器,使得各其它路由器从arp请求报文中获取与主机或者交换机对应的ip地址以及mac地址。其中,如果arp请求报文中存在vlan标识,其它路由器还可以获取vlan标识,并将对应关系存储在本机arp表中,实现其它路由器同步存储路由器的arp表中包括的ip地址、mac地址、vlan标识。第二种方式可以将根据arp请求报文学习到的,或者从其他路由器学习到的arp表项中的ip地址与mac地址的对应关系,同步给与虚拟冗余路由协议网络中其它路由器,如果学习到的arp表项中存在vlan标识,则将ip地址、mac地址与vlan标识的对应关系同步给与虚拟冗余路由协议网络中其它路由器。

其中,第一种方式相比于第二种方式,其他路由器获得arp表项更及时,在切换为需要转发目标数据报文的主路由器时,相比于第二种方式进一步减少了学习arp表项的时间,因为第二种方式是周期性同步会存在路由器上的arp表项已更新而其它路由器上的arp表项还未来及得更新的情况。

可选的,虚拟冗余路由协议网络中与交换机的转发端口连接的路由器,用于接收到apr请求报文后,向与所述交换机的阻塞端口连接的路由器转发所述apr请求报文;或者,将学习到的ip地址与mac地址的对应关系同步给与所述交换机的阻塞端口连接的路由器。

本实施例中,针对路由器与交换机直连的情况,针对一台交换机来说,与交换机的转发端口连接的路由器为该交换机的主路由器,与交换机的阻塞端口连接的路由器为该交换机的备用路由器。由于路由器转发三层数据报文需要arp表,但是与交换机的阻塞端口连接的备用路由器是不能学习arp表的,为了在主路由器故障,备用路由器切换为新的主路由器时,新的主路由器无需三层学习arp表就能立刻进行报文的三层转发,与交换机的转发端口连接的路由器接收到apr请求报文后,将该apr请求报文转发至与交换机的各阻塞端口连接的备用路由器,以使备用路由器根据arp请求报文学习对应的ip地址与mac地址的对应关系,或者,可以直接将学习到的ip地址与mac地址的对应关系同步给与交换机的阻塞端口连接的路由器,以实现备用路由器与主路由器的arp表一致。

本实施例中,当路由器与上述交换机的转发端口连接时,根据从上述交换机的转发端口接收到的目标数据报文,可以使用物理环回接口或逻辑环回接口对目标数据报文进行快速环回,然后查询本机存储的mac表获取目标出接口对目标数据报文进行二层转发,也可以不使用物理环回接口或逻辑环回接口,只根据查询arp表和mac表得到的目标出接口转发所述目标数据报文。

可选的,虚拟冗余路由协议网络中与双网卡主机的工作网口连接的路由器,用于接收到apr请求报文后,向与所述双网卡主机的非工作网口连接的路由器转发所述apr请求报文;或者,将学习到的ip地址与mac地址的对应关系同步给与所述双网卡主机的非工作网口连接的路由器。

本实施例中,针对路由器与主机直连的情况,针对一台双网卡主机来说,与主机的工作网口连接的路由器为该主机的工作路由器,与主机的非工作网口连接的路由器为该主机的非工作路由器。由于路由器转发三层数据报文需要arp表,但是主机的非工作路由器是不能学习arp表的,为了在工作路由器故障,非工作路由器切换为工作路由器时,新的工作路由器无需三层学习arp表就能立刻进行报文的三层转发,与双网卡主机的工作网口连接的路由器接收到apr请求报文后,将该apr请求报文转发至与主机的各非工作网口连接的非工作路由器,以使非工作路由器根据arp请求报文学习对应的ip地址与mac地址的对应关系,或者,工作路由器可以直接将学习到的ip地址与mac地址的对应关系同步给与主机的非工作网口连接的非工作路由器,以实现非工作路由器与工作路由器的arp表一致。

本实施例中,当路由器与上述双网卡主机的工作网口连接时,根据从上述主机的工作网口接收到的目标数据报文,使用物理环回接口或逻辑环回接口对目标数据报文进行快速环回,然后查询本机存储的mac表获取目标出接口对目标数据报文进行二层转发,也可以不使用物理环回接口或逻辑环回接口,只根据查询arp表和mac表得到的目标出接口转发所述目标数据报文。

本发明实施例的技术方案,通过虚拟冗余路由协议网络中的所有路由器在本机均保存有地址解析协议arp表,arp表中包括虚拟冗余路由协议网络中各路由器能直达的所有的主机的ip地址与mac地址的对应关系,使得各路由器获取到待转发的目标数据报文后,可以通过查询arp表和mac表最终确定转发目标数据报文的目标出接口,解决了现有技术中路由器三层学习物理出接口花费时间较长,导致报文丢包的问题,使得路由器无需进行三层学习即可获取物理出接口,提高三层数据报文的转发速度,减少报文的丢包率。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。


技术特征:

1.一种报文转发方法,其特征在于,应用于虚拟冗余路由协议网络中与交换机的转发端口连接的路由器中,包括:

获取待转发的目标数据报文;

根据目标数据报文,查询本机存储的地址解析协议arp表和媒体访问控制mac表,并根据查询的目标出接口转发所述目标数据报文。

2.根据目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发所述目标数据报文,包括:

在所述arp表中查询所述目标数据报文中的目的互联网协议ip地址匹配的目标mac地址,在所述mac表中查询所述目标mac地址对应的目标出接口,并根据查询的目标出接口转发所述目标数据报文;

其中,ip地址与mac地址的对应关系通过arp学习获得并存储在arp表中,mac地址与出接口的对应关系通过二层学习获得并存储在mac表中。

3.根据权利要求2所述的方法,其特征在于,所述arp表的各表项中用于三层转发的出接口为所述路由器中的物理环回接口或逻辑环回接口;

查询本机存储的arp表和mac表,并根据查询的目标出接口转发所述目标数据报文,包括:

在所述arp表中查询所述目标数据报文中的目的ip地址匹配的目标mac地址;

根据所述目标mac地址对所述目标数据报文进行修改,并将修改后的目标数据报文通过所述物理环回接口或逻辑环回接口进行虚拟三层转发;

在所述mac表中查询所述目标mac地址对应的目标出接口,并通过所述目标出接口对经过虚拟三层转发的目标数据报文进行二层转发。

4.根据权利要求2所述的方法,其特征在于,查询本机存储的arp表和mac表,并根据查询的目标出接口转发所述目标数据报文,包括:

在所述arp表中查询所述目标数据报文中的目的ip地址匹配的目标mac地址,并在所述mac表中查询所述目标mac地址对应的目标出接口;

根据所述目标mac地址对所述目标数据报文进行修改,并通过所述目标出接口对修改后的目标数据报文进行二层转发。

5.根据权利要求3所述的方法,其特征在于,在获取待转发的目标数据报文之前,还包括:

配置所述路由器中的一个空闲的物理出接口作为所述路由器中的物理环回接口,或者,配置所述路由器中的一个空闲的逻辑出接口作为所述路由器中的逻辑环回接口;

配置所述路由器中的物理环回接口或逻辑环回接口不属于任何虚拟局域网vlan,并且出入任意vlan检查去使能。

6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:

接收到arp请求报文后,将所述arp请求报文转发至所述虚拟冗余路由协议网络的各其它路由器,以指示各其它路由器学习所述arp请求报文中ip地址对应的mac地址,并将对应关系存储在本机arp表中。

7.根据权利要求3所述的方法,其特征在于,所述方法还包括:

控制层将学习到的ip地址与mac地址的对应关系下发至转发层;

转发层将控制层下发的上述对应关系保存在本地arp表项中,并将本地arp表项中的物理出接口替换为所述路由器的物理环回接口或逻辑环回接口。

8.一种报文转发方法,其特征在于,应用于虚拟冗余路由协议网络中与交换机的阻塞端口连接的路由器中,包括:

接收所述虚拟冗余路由协议网络中的其它路由器转发的arp请求报文,学习所述arp请求报文中ip地址对应的mac地址,并将上述对应关系存储在本机arp表中;或者,接收所述其它路由器同步的ip地址与mac地址的对应关系,将所述其它路由器同步的ip地址与mac地址的对应关系存储在本机arp表中;

当所述路由器与上述交换机的转发端口连接时,根据从上述交换机的转发端口接收到的目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发所述目标数据报文。

9.根据权利要求8所述的方法,其特征在于,所述方法还包括:

控制层将学习到或其它路由器同步得到的ip地址与mac地址的对应关系下发至转发层;

转发层将控制层下发的上述对应关系保存在本地arp表项中,并将本地arp表项中的物理出接口替换为所述路由器的物理环回接口或逻辑环回接口。

10.一种报文转发装置,其特征在于,应用于虚拟冗余路由协议网络中与交换机的转发端口连接的路由器中,包括:

获取模块,用于获取待转发的目标数据报文;

转发模块,用于根据目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发所述目标数据报文。

11.一种报文转发装置,其特征在于,应用于虚拟冗余路由协议网络中与交换机的阻塞端口连接的路由器中,包括:

报文接收模块,用于接收所述虚拟冗余路由协议网络中的其它路由器转发的arp请求报文,学习所述arp请求报文中ip地址对应的mac地址,并将上述对应关系存储在本机arp表中;或者,接收所述其它路由器同步的ip地址与mac地址的对应关系,将所述其它路由器同步的ip地址与mac地址的对应关系存储在本机arp表中;

报文转发模块,用于当所述路由器与上述交换机的转发端口连接时,根据从上述交换机的转发端口接收到的目标数据报文,查询本机存储的arp表和mac表,并根据查询的目标出接口转发所述目标数据报文。

12.一种路由器,其特征在于,所述路由器包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的报文转发方法,或者实现如权利要求8-9中任一所述的报文转发方法。

13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的报文转发方法,或者实现如权利要求8-9中任一所述的报文转发方法。

14.一种报文转发系统,其特征在于,包括虚拟冗余路由协议网络中的各路由器,虚拟冗余路由协议网络中的所有路由器在本机均保存有地址解析协议arp表,所述arp表中包括虚拟冗余路由协议网络中各路由器能直达的所有的主机的ip地址与mac地址的对应关系。

15.根据权利要求14所述的系统,其特征在于,

虚拟冗余路由协议网络中任意一台路由器,用于接收到apr请求报文后,向虚拟冗余路由协议网络中其它路由器转发所述apr请求报文;或者,将学习到的ip地址与mac地址的对应关系同步给与虚拟冗余路由协议网络中其它路由器。

16.根据权利要求14所述的系统,其特征在于,

虚拟冗余路由协议网络中与交换机的转发端口连接的路由器,用于接收到apr请求报文后,向与所述交换机的阻塞端口连接的路由器转发所述apr请求报文;或者,将学习到的ip地址与mac地址的对应关系同步给与所述交换机的阻塞端口连接的路由器。

17.根据权利要求14所述的系统,其特征在于,

虚拟冗余路由协议网络中与双网卡主机的工作网口连接的路由器,用于接收到apr请求报文后,向与所述双网卡主机的非工作网口连接的路由器转发所述apr请求报文;或者,将学习到的ip地址与mac地址的对应关系同步给与所述双网卡主机的非工作网口连接的路由器。

技术总结
本发明实施例公开了一种报文转发方法、装置、路由器、存储介质及系统。该方法应用于虚拟冗余路由协议网络中与交换机的转发端口连接的路由器中,包括:获取待转发的目标数据报文;根据目标数据报文,查询本机存储的ARP表和MAC表,并根据查询的目标出接口转发目标数据报文。本发明实施例的技术方案,使得路由器无需进行三层学习即可获取物理出接口,提高三层数据报文的转发速度,减少了报文的丢包率。

技术研发人员:王小军;王倩;宿宝伍;范维庭
受保护的技术使用者:北京东土军悦科技有限公司
技术研发日:2020.11.06
技术公布日:2021.04.06

转载请注明原文地址:https://xbbs.6miu.com/read-21640.html