发明内容
本发明提供三层数据报文转发方法及路由设备、二层交换模块及交换芯片,以提高在二层交换模块上的三层数据报文转发性能。
本发明的技术方案是这样实现的:
一种三层报文转发方法,该方法在路由设备的二层交换模块和CPU之间建立高速数据通道,包括:
二层交换模块和CPU通过所述高速数据通道交互三层单播报文。
所述在路由设备的二层交换模块和CPU之间建立高速数据通道进一步包括:在二层交换模块上配置静态MAC地址表项,该表项中的目的MAC地址为三层单播报文的目的MAC地址,该表项中的出端口信息为二层交换模块通往高速数据通道的端口信息,
所述二层交换模块和CPU交互三层单播报文包括:二层交换模块从外部交换端口接收到三层单播报文,在静态MAC地址表项中查找到该报文的目的MAC地址对应的出端口信息,将该报文通过该出端口信息对应的端口发送到高速数据通道上,以将报文发送到CPU。
所述二层交换模块和CPU交互三层单播报文包括:CPU确定要向二层交换模块发送报文,判断该报文是否为三层单播报文,若是,将该报文通过所述高速数据通道发给二层交换模块。
所述方法进一步包括:二层交换模块从外部交换端口接收到未知目的媒体接入控制MAC地址的单播报文,或者未知组播报文或者除地址解析协议ARP和动态主机配置协议DHCP报文外的广播报文,则将该报文广播到除通往高速数据通道的端口外的其它端口。
所述在二层交换模块和CPU之间建立高速数据通道通过:在二层交换模块和CPU之间增加以太网控制器、且该以太网控制器分别与二层交换模块和CPU相连实现。
所述在二层交换模块和CPU之间增加以太网控制器进一步包括:在二层交换模块上配置静态MAC地址表项,该表项中的目的MAC地址为三层单播报文的目的MAC地址,该表项中的出端口信息为二层交换模块上与以太网控制器相连的端口的信息,
所述二层交换模块和CPU交互三层单播报文包括:二层交换模块从外部交换端口接收到三层单播报文,在静态MAC地址表项中查找到该报文的目的MAC地址对应的出端口信息,将该报文通过该出端口信息对应端口发给以太网控制器,由以太网控制器将报文转发给CPU。
所述二层交换模块和CPU交互三层单播报文包括:CPU确定要向二层交换模块发送报文,判断该报文是否为三层单播报文,若是,将该报文发给以太网控制器,由以太网控制器将报文转发给二层交换模块。
所述在路由设备的二层交换模块和CPU之间建立高速数据通道进一步包括:将二层交换模块上通往高速数据通道的端口以标签方式加入所有VLAN;
所述二层交换模块和CPU通过交互三层单播报文包括:二层交换模块从外部交换端口收到三层单播报文,将该外部交换端口所在的VLAN标签添加到报文中,将报文通过高速数据通道发送给CPU。
一种路由设备,包括:二层交换模块和CPU,且,二层交换模块和CPU之间具有高速数据通道,其中:
二层交换模块,从外部交换端口接收到三层单播报文,将该报文通过所述高速数据通道发送给CPU,接收CPU发来的三层单播报文;
CPU,接收二层交换模块发来的三层单播报文;确定要向二层交换模块发送三层单播报文,将该三层单播报文通过所述高速数据通道发给二层交换模块。
所述CPU包括:
上层软件处理模块,将报文和出端口信息发送给二层交换驱动模块;
二层交换驱动模块,接收到上层软件处理模块发来的报文和出端口信息,若确定该报文为三层单播报文,则将该出端口信息添加到该报文中,将该报文通过高速数据通道发往二层交换模块。
一种二层交换模块,包括:交换芯片和以太网控制器,其中:
交换芯片,从外部交换端口接收到三层单播报文,将该报文发送给以太网控制器;接收以太网控制器发来的三层单播报文;
以太网控制器,接收交换芯片发来的三层单播报文,将该报文发送给CPU;接收CPU发来的三层单播报文,将该报文转发给交换芯片。
一种交换芯片,该交换芯片具有通往高速数据通道的端口,包括:静态媒体接入控制MAC地址表项存储模块和报文转发处理模块,其中:
静态MAC地址表项存储模块,保存静态MAC地址表项,其中虚拟局域网VLAN虚接口MAC地址对应的出端口都为通往高速数据通道的端口;
报文转发处理模块,接收到三层单播报文,在静态MAC地址表项存储模块中,查找到该报文的目的MAC地址的出端口,将该报文通过查找到的出端口发送到高速数据通道上。
与现有技术相比,本发明通过在路由设备的二层交换模块和CPU之间建立高速数据通道,然后二层交换模块和CPU通过所述高速数据通道交互三层单播报文,提高了二层交换模块的三层数据报文转发性能。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图2为本发明实施例提供的交换芯片上送报文的流程图,如图2所示,其具体步骤如下:
步骤201:在路由设备的交换芯片与CPU之间增加高速数据通道。
步骤202:将通往高速数据通道的端口以标签(tag)方式加入所有VLAN;在交换芯片上配置静态MAC地址表项,表项中的MAC地址信息为VLAN虚接口MAC地址信息,表项中的出端口信息为通往高速数据通道的端口信息;设置发往该通往高速数据通道端口的报文必须带有交换专用标识,该标识包含报文的入端口信息。
步骤203:交换芯片从外部交换端口接收报文。
步骤204:交换芯片判断该报文是否包含VLAN tag,若是,执行步骤206;否则,执行步骤205。
步骤205:交换芯片根据报文的入端口,即接收到该报文的外部交换端口确定VLAN tag,将该VLAN tag添加到报文中。
步骤206:交换芯片判断该报文是否为BPDU报文,若是,执行步骤208;否则,执行步骤207。
BPDU报文的目的MAC地址被规定在一定范围内,因此,若交换芯片检测到报文的目的MAC地址在该规定范围内,则确定报文为BPDU报文。
步骤207:交换芯片根据自身的ACL,判断报文是否需要上送CPU,若是,执行步骤208;否则,执行步骤209。
步骤208:交换芯片将报文发往自身的CPU上行口,结束本流程。
步骤209:交换芯片在静态MAC地址表项中,查找到该报文的目的MAC地址信息,即VLAN虚接口MAC地址信息对应的出端口信息。
步骤210:交换芯片判断查找到的出端口信息是否为通往高速数据通道端口信息,若是,执行步骤211;否则,执行步骤214。
步骤211:交换芯片根据该报文的入端口信息构造交换专用标识,将该交换专用标识添加到该报文中,然后将该报文通过查找到的出端口信息对应的端口发送到高速数据通道上。
交换专用标识为只有交换芯片和CPU可以操作和解析的标识。
根据步骤202可知:报文的目的MAC地址信息,即VLAN虚接口MAC地址信息对应的出端口信息为通往高速数据通道的端口信息,这样,报文会通过高速数据通道发送至CPU。
步骤212:CPU通过高速数据通道接收到报文,CPU的二层交换驱动模块解析该报文中的交换专用标识,获取入端口信息,然后从报文中去掉该交换专用标识,将该报文和入端口信息发送给CPU中的上层软件处理模块。
步骤213:CPU的上层软件处理模块接收到报文,保存该报文的源IP地址信息与入端口信息的对应关系,对该报文进行三层转发处理,结束本流程。
步骤214:交换芯片将报文通过查找到的出端口信息对应端口发送出去。
另外,本实施例中,还需在交换芯片上配置规则:未知目的MAC地址的单播报文、未知组播报文、以及除地址解析协议(ARP,Address ResolutionProtocol)报文和动态主机配置协议(DHCP,Dynamic Host ConfigurationProtocol)报文外的广播报文都不能转发至通往高速数据通道的端口,而只能广播到除通往高速数据通道的端口外的端口,以进一步保证交换芯片的三层数据报文转发性能。
在实际应用中,在交换芯片与CPU之间增加高速数据通道可通过在交换芯片与CPU之间增加以太网控制器实现,该以太网控制器分别与交换芯片和CPU相连。以下给出通过以太网控制器实现高速数据通道时,交换芯片上送报文的具体实施例:
图3为本发明实施例提供的通过以太网控制器实现高速数据通道时,交换芯片上送报文的流程图,如图3所示,其具体步骤如下:
步骤301:在路由设备的交换芯片与CPU之间增加以太网控制器,该以太网控制器分别与交换芯片和CPU相连。
步骤302:将交换芯片上通往以太网控制器的端口以tag方式加入所有VLAN;在交换芯片上配置静态MAC地址表项,表项中的MAC地址信息为VLAN虚接口MAC地址信息,表项中的出端口信息为通往以太网控制器的端口信息;设置发往该通往以太网控制器端口的报文必需带有交换专用标识,该标识包含报文的入端口信息。
步骤303~309与步骤203~209相同。
步骤310:交换芯片判断查找到的出端口信息是否为与以太网控制器相连的端口的信息,若是,执行步骤311;否则,执行步骤315。
步骤311:交换芯片根据该报文的入端口信息构造交换专用标识,将该交换专用标识添加到该报文中,然后将该报文通过查找到的出端口信息对应的端口发送到以太网控制器上。
步骤312:以太网控制器接收到报文,将该报文转发给CPU。
步骤313:CPU接收到报文,CPU的二层交换驱动模块解析该报文中的交换专用标识,获取入端口信息,然后从报文中去掉该交换专用标识,将该报文和入端口信息发送给CPU中的上层软件处理模块。
步骤314:CPU的上层软件处理模块接收到报文,保存该报文的源IP地址信息与入端口信息的对应关系,对该报文进行三层转发处理,结束本流程。
步骤315:交换芯片将报文通过查找到的出端口信息对应端口发送出去。
图2和图3所示实施例给出的是交换芯片将来自自身外部交换端口的报文发往CPU的情况,以下给出CPU将来自上层设备或自身构造的报文发往交换芯片的情况。
图4为本发明实施例提供的CPU向交换芯片下发报文的流程图,如图4所示,其具体步骤如下:
步骤401:CPU的上层软件处理模块确定要向交换芯片下发报文,在步骤314保存的源IP地址信息与入端口信息的对应关系中,查找到与该报文的目的IP地址信息相同的源IP地址信息,然后将与该源IP地址信息对应的入端口信息作为该报文的出端口信息,将该出端口信息和该报文发送给CPU的二层交换驱动模块。
上层软件处理模块要向交换芯片下发的报文,可能来自CPU的上层设备,也可能是上层软件处理模块自己构造的。
步骤402:CPU的二层交换驱动模块接收到上层软件处理模块发来的报文,判断该报文是否为三层单播报文,若是,执行步骤404;否则,执行步骤403。
上层软件处理模块与二层交换驱动模块之间的传输接口分为两种,一种专门用于传输协议报文,另一种专门用于传输三层数据报文。同时,上层软件处理模块在向二层交换驱动模块发送三层数据报文的同时,会将该报文为单播、组播还是广播报文的信息通知二层交换驱动模块。这样,若二层交换驱动模块从专门用于传输三层数据报文的接口收到了一个报文,且同时收到了指示该报文为单播报文的信息,则可确定该报文为三层单播报文。
步骤403:CPU的二层交换驱动模块将报文发往交换芯片的CPU上行口,本流程结束。
步骤404:CPU的二层交换驱动模块根据上层软件处理模块发来的出端口信息,构造交换专用标识,将该交换专用标识添加到报文中。
步骤405:CPU的二层交换驱动模块将报文通过高速数据通道发送给交换芯片。
若CPU与交换芯片之间的高速数据通道通过以太网控制器实现,则本步骤中,CPU的二层交换驱动模块先将报文发送给以太网控制器,然后以太网控制器将报文转发给交换芯片。
步骤406:交换芯片接收到报文,解析该报文中的交换专用标识,获取出端口信息,然后从报文中去掉该交换专用标识,将该报文从出端口信息对应端口发送出去。
根据图2和图4所示实施例给出本发明实施例提供的路由设备,该路由设备包括:二层交换模块和CPU,其中,二层交换模块和CPU之间具有一条高速数据通道,二层交换模块和CPU的功能分别如下:
二层交换模块:用于保存静态MAC地址表项,且对于MAC地址信息为VLAN虚接口MAC地址信息的静态MAC地址表项,该表项中的出端口信息都被设置为通往高速数据通道的端口信息;当从外部交换端口接收到报文时,若确定该报文为BPDU报文,则将报文通过CPU上行口发往CPU;否则,根据ACL规则,判断该报文是否要上送CPU,若要上送,则将报文通过CPU上行口发往CPU,若不要上送,则在静态MAC地址表项中,查找到该报文的目的MAC地址信息对应的出端口信息,若检测到该出端口信息为通往高速数据通道的端口信息,则根据该报文的入端口信息构造交换专用标识,将该标识添加到报文中,然后将该报文通过查找到的通往高速数据通道的端口信息对应的端口发给CPU;若检测到该出端口信息不为通往高速数据通道的端口信息,则直接将该报文通过查找到的出端口信息对应端口发送出去。
CPU:对二层交换模块发来的报文进行协议处理或三层转发处理。当确定要向二层交换模块发送报文,若确定该报文为三层单播报文,则将该报文通过高速数据通道发送给二层交换模块;否则,将报文发往二层交换模块的CPU上行口。
图5给出了图3所示实施例对应的路由设备的具体实施方式,如图5所示,其中,
二层交换模块51主要包括:交换芯片511和以太网控制器512,各模块的功能分别如下:
交换芯片511:用于保存静态MAC地址表项,且对于MAC地址信息为VLAN虚接口MAC地址信息的静态MAC地址表项,该表项中的出端口信息都被设置为通往高速数据通道的端口信息;当从外部交换端口接收到报文时,若确定该报文为BPDU报文,则将报文通过CPU上行口发往CPU;否则,根据ACL规则,判断该报文是否要上送CPU,若要上送,则将报文通过CPU上行口发往CPU,若不要上送,则在静态MAC地址表项中,查找到该报文的目的MAC地址信息对应的出端口信息,若检测到该出端口信息为通往以太网控制器512的端口信息,则根据报文的入端口信息构造交换专用标识,将该标识添加到报文中,然后将该报文通过查找到的出端口信息对应的端口发给以太网控制器512;若检测到该出端口信息不为通往以太网控制器512的端口信息,则直接将该报文通过查找到的出端口信息对应端口发送出去。
以太网控制器512:接收交换芯片511发来的报文,将该报文转发给CPU52;接收CPU52发来的三层单播报文,将该三层单播报文发送给交换芯片511。
CPU52主要包括:二层交换驱动模块521和上层软件处理模块522,各模块的功能分别如下:
二层交换驱动模块521:接收到以太网控制器512发来的三层单播报文,解析该报文中的交换专用标识,获取到入端口信息,从报文中去掉该交换专用标识,将该报文和入端口信息发送给上层软件处理模块522;接收到上层软件处理模块522发来的报文和出端口信息,若确定该报文为三层单播报文,则根据该出端口信息构造交换专用标识,将该交换专用标识添加到报文中,将该报文通过高速数据通道发往以太网控制器512;否则,将该报文通过CPU上行口发给交换芯片511。
上层软件处理模块522:接收到二层交换驱动模块发来的三层单播报文和入端口信息,保存该报文的源IP地址信息和入端口信息的对应关系,对该报文作三层转发处理;确定要向交换芯片发送报文,根据所述对应关系确定该报文的目的IP地址对应的出端口,将该报文和该出端口信息发送给二层交换驱动模块521。
图6给出了本发明提供的交换芯片的一种具体实施方式,如图6所示,其主要包括:静态MAC地址表项存储模块5111和报文转发处理模块5112,其中:
静态MAC地址表项存储模块5111:保存静态MAC地址表项,其中对于MAC地址信息为VLAN虚接口MAC地址信息的静态MAC地址表项,该表项中的出端口信息都为通往高速数据通道的端口信息。
报文转发处理模块5112:从外部交换端口接收到报文,若确定该报文为BPDU报文,则将报文通过CPU上行口发往CPU;否则,根据ACL规则,判断该报文是否要上送CPU,若要上送,则将报文通过CPU上行口发往CPU,若不要上送,则在静态MAC地址表项存储模块5111中,查找到该报文的目的MAC地址信息对应的出端口信息,若检测到该出端口信息为通往以太网控制器512的端口信息,则根据该报文的入端口信息构造交换专用标识,将该标识添加到报文中,将该报文通过查找到的出端口信息对应的端口发送到高速数据通道上;若检测到该出端口信息不为通往以太网控制器512的端口信息,则直接将报文通过查找到的出端口信息对应端口发送出去。
由于以太网控制器分为百兆以太网控制器、千兆以太网控制器等,因此,采用本发明实施例提供的方法后,三层数据报文的转发速率可以达到百兆PPS、千兆PPS,可以满足二层交换模块的三层数据报文转发需要。
以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。