发明内容
有鉴于此,本发明提供一种实现报文转发路径一致的方法和网络设备,能够方便、灵活地实现报文转发时的路径统一,且不影响网络的扩容。
为解决上述技术问题,本发明的技术方案是这样实现的:
一种实现报文转发路径一致的方法,应用于包括等价链路的网络中,所述方法包括:
与所述等价链路相连的网络设备通过使能路径统一功能的端口接收到报文时,根据该报文的元素信息进行哈希计算,并将哈希计算结果与接收该报文的端口的端口号绑定记录在出口表项中,并将该报文进行三层转发;
通过未使能路径统一功能的端口接收到报文时,根据所述报文的元素信息进行哈希计算,通过哈希计算结果在所述出口表项中查找对应的端口号,若查找到,通过查找到的端口号所对应的端口将所述报文进行三层转发;否则,根据哈希计算结果在FIB中查找到对应的端口号,并通过在FIB中查找到的端口号所对应的端口将所述报文进行三层转发。
一种网络设备,可应用于包括等价链路的网络中,所述网络设备包括:接收单元、计算单元、记录单元、查找单元和转发单元;
所述接收单元,用于通过使能路径统一功能的端口接收报文;通过未使能路径统一功能的端口接收报文;
所述计算单元,用于根据所述接收单元通过使能路径统一功能或非使能路径统一功能的端口接收的报文的元素信息进行哈希计算;
所述记录单元,用于将所述计算单元根据通过使能路径统一功能的端口接收的报文的元素信息进行哈希计算的哈希计算结果与接收该报文的端口的端口号绑定记录在出口表项中;
所述查找单元,用于将所述计算单元根据所述通过未使能路径统一功能的端口接收的报文的元素信息进行哈希计算的哈希计算结果,在所述记录单元记录的出口表项中查找对应的端口号,若未查找到,在FIB中查找对应的端口号;
所述转发单元,用于将所述接收单元通过使能路径统一功能的端口接收的报文进行三层转发;将所述接收单元通过未使能路径统一功能的端口接收的报文,通过所述查找单元在所述出口表项中查找到的对应端口号,或在FIB中查找到的对应的端口号所对应的端口进行三层转发。
综上所述,本发明中网络设备通过使能路径统一功能的端口接收到报文时,将该报文的元素信息进行哈希计算的哈希计算结果同接收该报文的端口的端口号绑定记录,当通过未使能路径统一功能的端口接收到哈希计算结果相同的报文时,根据所述绑定记录进行转发。能够方便、灵活地实现报文转发时的路径统一,且不影响网络的扩容。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明实施例中提出一种实现报文转发路径一致的方法,应用于包括等价链路的网络中,所述网络中的网络设备与等价链路相连,可能出现来回路径不一致现象。本发明实施例中通过对所述网络设备与等价链路相连的端口进行配置,使所述端口使能路径统一功能,而其他端口不使能该功能,即未使能路径统一功能。
参见图2,图2为本发明实施例中实现报文转发路径一致的方法的流程示意图。具体步骤为:
步骤201,网络设备通过使能路径统一功能的端口接收到报文时,根据该报文的元素信息进行哈希计算,并将哈希计算结果与接收该报文的端口的端口号绑定记录在出口表项中,并将该报文进行三层转发。
本步骤中的元素信息为报文的源IP地址和目的IP地址,还可以包括报文携带的源端口号和/或目的端口号,能够使等价路径的负载分担更加的均匀。哈希计算通过现有技术中常见的哈希算法,具体使用哪种哈希算法来计算,根据实际使用情况确定。下文中提到的哈希计算以及报文元素信息均与该步骤中的相同。
本步骤中的出口表项,仅是为本发明实例的需要,将哈希计算结果与接收该报文的端口的端口号绑定记录的表项称为出口表项。
本步骤中将报文进行三层转发的实现同现有技术,在转发信息库(FIB)中查找相关信息进行转发。
步骤202,网络设备通过未使能路径统一功能的端口接收到报文时,根据所述报文的元素信息进行哈希计算,通过哈希计算结果在所述出口表项中查找对应的端口号,若查找到,通过查找到的端口号所对应的端口将所述报文进行三层转发;否则,根据哈希计算结果在FIB中查找到对应的端口号,并通过在FIB中查找到的端口号所对应的端口将所述报文进行三层转发。
本步骤中若在所述出口表项中查找到对应的端口号,则根据该端口号以及在FIB中查找到的相关信息进行三层转发,此时,在FIB中查找到的相关信息不包括端口号;如果在所述出口表项中未查找到对应的端口号,则在FIB中查找相关信息将报文进行三层转发,这时在FIB中查找到的相关信息包括端口号。
下面通过具体实施例详细说明本发明如何实现报文转发路径一致的方法的。参见图3,图3为本发明具体实施例中实现报文转发路径一致的方法的流程示意图。具体步骤为:
步骤301,网络设备通过端口接收报文。
步骤302,网络设备确定所述端口是否使能路径统一功能,如果是,执行步骤303;否则,执行步骤311。
步骤303,网络设备根据接收的报文的源IP地址在本地路由表项或FIB中查找是否存在等价路径,如果是,执行步骤304;否则,执行步骤310。
如果在本地路由表中查找,该报文携带的源IP地址不存在等价路径,则不进行哈希计算,也不用在出口表项中记录,这样可以大大减少出口表项的规模。
步骤304,网络设备根据所述报文的元素信息进行哈希计算。
步骤305,网络设备根据所述报文的元素信息进行哈希计算在出口表项中查找是否存在所述哈希计算结果,如果是,执行步骤306;否则,执行步骤309。
步骤306,网络设备在所述出口表项中所述哈希计算结果所对应的端口号与接收所述报文的端口的端口号是否一致,如果是,执行步骤307;否则,执行步骤308。
步骤307,网络设备将所述哈希结果对应的出口表项刷新,执行步骤310。
步骤308,网络设备将记录的所述端口号更新为接收所述报文的端口号,执行步骤310。
如果出口表项中记录的端口号与该次接收的报文的端口的端口号不一致,则以该次接收报文的端口的端口号覆盖出口表项中记录的端口号。
步骤309,网络设备将所述哈希计算结果与接收该报文的端口的端口号绑定记录在所述出口表项中,并为该哈希计算结果所对应的出口表项设置老化时间,执行步骤310。
端口号和哈希计算结果绑定记录时,为对应的表项设置老化时间,老化时间到时,将对应的表项老化。具体实现时,可以是老化删除,也可是老化一段时间后删除,根据实际应用情况确定。
步骤310,网络设备将接收的报文进行常规的三层转发,结束本流程。
步骤311,网络设备根据接收的报文的元素信息进行哈希计算,在出口表项中查找是否存在所述哈希计算结果,如果是,执行步骤312;否则,执行步骤313。
步骤312,网络设备在出口表项中根据所述哈希计算结果获得对应的端口号。
步骤313,网络设备根据哈希计算结果在FIB中查找到对应的端口号。
步骤314,网络设备通过查找到的端口号所对应的端口进行常规的三层转发。
下面通过具体实施例来详细说明本发明是如何实现的。参见图4,图4为本发明具体实施例中实现报文转发路径一致的网络结构示意图。图4中,包括两条等价链路L3和L4,网络设备401和网络设备402是分别与两条等价链路相连。只有与等价链路相连的网络设备在转发报文的时候可能出现路径不一致的问题,而应用层设备411和应用层设备412要求报文转发路径的统一,如果不统一,则无法处理或者处理失败。这里的应用层设备是需要记录应用层状态的网络设备,应用层状态如TCP状态,应用层设备如防火墙等。因此,只需在网络设备401和网络设备402与等价链路相连的端口上使能路径统一功能。如图4中网络设备401的端口P5和P4,以及网络设备402的端口P1和P2;而在网络设备401的端口P7和P8,以及网络设备402的端口P3和P4上无需使能路径统一功能,在本发明具体实施例中不需对这几个端口进行任何配置。
由于网络设备401和网络设备402上的操作类似,在这里以网络设备402为例来描述报文的转发。网络设备401如果通过端口P5接收到报文,根据该报文的源IP地址在本地路由表项或FIB中查找,是否存在等价路由,如果存在,则根据该报文的元素信息通过进行哈希计算,将哈希计算结果与端口P5的端口号绑定记录在出口表项中,并为对应的表项设置老化时间,其中,设置的老化时间可以根据实际情况设置;如果不存在,则不进行哈希计算。无论是否存在等价路径,网络设备401将接收到的报文进行常规的三层转发,无论通过端口P7或P8转发出去都不影响本发明具体实施例的实现,同现有实现一致,这里不再详细赘述。
网络设备401如果通过端口P6接收到报文,根据该报文的元素信息进行哈希计算,在所述出口表项中查找该哈希计算结果,如果存在,确定该哈希计算结果所对应的端口号是否为P6,如果是,则刷新该哈希计算结果所对应的出口表项;否则,用端口P6的端口号覆盖所述哈希结果所对应的端口号。如果所述出口表项中不存在该哈希计算结果,则将该哈希计算结果和端口P6的端口号绑定记录在所述出口表项中。
用户侧和网络侧同时发送报文,可能会出现路径不一致的现象,上述处理,接收到第二个报文时,将接收第二个报文的端口的端口号覆盖之前记录的端口号,保证之后的数据的正确。
报文从使能路径统一功能的端口进入时,转发完全按照常规的三层转发进行,不以出接口表项进行转发,否则报文就会从源端口上返回。
网络设备401通过端口P7接收到报文时,根据该报文的元素信息进行哈希计算,在所述出口表项中查找是否存在所述哈希计算结果,如果存在,则获取该哈希计算结果对应的端口号,通过该端口号将接收的报文进行常规的三层转发;否则,在FIB中查找该对应的端口号,通过在FIB中查找到的端口号所对应的端口将所述接收的报文转发。
基于同样的发明构思,本发明具体实施例中还提出一种网络设备,可应用于包括等价链路的网络中。参见图5,图5为本发明实现报文等价路径转发的网络设备的结构示意图。该网络设备包括:接收单元501、计算单元502、记录单元503、查找单元504和转发单元505。
接收单元501,用于通过使能路径统一功能的端口接收报文;通过未使能路径统一功能的端口接收报文。
计算单元502,用于根据接收单元501通过使能路径统一功能或非使能路径统一功能的端口接收的报文的元素信息进行哈希计算。
记录单元503,用于将计算单元502根据通过使能路径统一功能的端口接收的报文的元素信息进行哈希计算的哈希计算结果与接收该报文的端口的端口号绑定记录在出口表项中。
查找单元504,用于将计算单元502根据通过未使能路径统一功能的端口接收的报文的元素信息进行哈希计算的哈希计算结果,在记录单元503记录的出口表项中查找对应的端口号,若未查找到,在FIB中查找对应的端口号。
转发单元505,用于将接收单元501通过使能路径统一功能的端口接收的报文进行三层转发;将接收单元501通过未使能路径统一功能的端口接收的报文,通过查找单元504在所述出口表项中查找到的对应端口号,或在FIB中查找到的对应的端口号所对应的端口进行三层转发。
较佳地,
查找单元504,进一步用于根据接收单元501通过使能路径统一功能的端口接收的报文携带的源IP地址在本地路由表项或FIB中查找,并确定是否存在等价路径;如果是,则触发计算单元502执行所述根据该报文的元素信息进行哈希计算的操作;否则,触发转发单元505执行所述将所述报文进行三层转发的操作。
较佳地,该网络设备进一步包括:老化单元506。
老化单元506,用于为记录单元503记录的出口表项设置老化时间,当老化时间到时,将所述出口表项老化。
较佳地,
记录单元503,进一步用于若查找单元504在所述出口表项中查找到所述哈希计算结果,且与所述哈希计算结果绑定记录的端口号为接收所述报文的端口号,则将所述哈希计算结果对应的出口表项刷新;若查找单元504在所述出口表项中查找到哈希计算结果,且与所述哈希计算结果绑定记录的端口号与所述接收报文的端口的端口号不一致,则将记录的所述端口号更新为接收所述报文的端口的端口号;若查找单元504在所述出口表项中未查找到所述哈希计算结果,则将所述哈希计算结果与接收该报文的端口的端口号绑定记录在出口表项中。
较佳地,
所述报文的元素信息包括:源IP地址和目的IP地址。
较佳地,
所述报文的元素信息还包括:
所述报文携带的源端口号,和/或,目的端口号。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本发明具体实施例中网络设备通过使能路径统一功能的端口接收到报文时,将该报文的元素信息进行哈希计算的哈希计算结果同接收该报文的端口的端口号绑定记录,当通过未使能路径统一功能的端口接收到哈希计算结果相同的报文时,根据所述绑定记录进行转发。能够方便、灵活地实现报文转发时的路径统一,且不影响网络的扩容。
在具体实施例中进一步提出如果报文的源IP地址不存在等价路径时,不再记录表项,大大减少表项的规模。为了使负载分担更加的均匀,可以把报文中携带的源端口号和目的端口号加入到哈希运算。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。