具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明报文分流方法一个实施例的流程图,如图1所示,该报文分流方法可以包括:
步骤101,接收并解析隧道报文,获取该隧道报文的外层IP地址、内层IP地址和该隧道报文的标识。
本实施例中,上述外层IP地址是指封装的网络层协议地址,内层IP地址是指被封装的网络层协议地址,且外层IP地址可以为外层源IP地址和/或外层目的IP地址,同样上述内层IP地址也可以为内层源IP地址和/或内层目的IP地址,本实施例对此不作限定。
上述隧道报文的标识为报文头中报文标识字段的值,属于同一个报文的分片报文均具有相同的标识。例如:对隧道报文进行分片后获得的首分片和后续分片具有相同的标识。
步骤102,根据上述隧道报文的报文头中的分片信息判断该隧道报文是否为隧道分片报文。
本实施例中,上述分片信息用于指示该隧道报文是否为分片报文。当该隧道报文为隧道分片报文时,通过解析该隧道分片报文,报文分流装置还可以获得隧道分片报文的报文头中偏移字段的值。其中,上述偏移字段的值用于确定该隧道分片报文是第几分片,例如:当隧道分片报文的报文头中偏移字段的值为“0”时,可以确定该隧道分片报文为首分片;当隧道分片报文的报文头中偏移字段的值为“100”时,可以确定该隧道分片报文不是首分片,而是第二个分片,以此类推。
步骤103,当上述隧道报文为隧道分片报文时,在预存的分片信息表中查找与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的处理器编号。
其中,上述分片信息表中的处理器编号根据隧道分片报文的内层IP地址获得或者根据隧道分片报文的外层IP地址和隧道分片报文的标识获得。
步骤104,当在上述分片信息表中查找到与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的处理器编号时,将上述隧道分片报文发送给相应的处理器。
上述实施例中,接收并解析隧道报文之后,当该隧道报文为隧道分片报文时,在保存的分片信息表中查找与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的处理器编号,当在分片信息表中查找到与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的处理器编号时,将上述隧道分片报文发送给相应的处理器。本实施例根据分片信息表对接收到的隧道报文进行分流,从而可以实现对隧道报文进行均匀分流,并可以确保隧道分片报文的首分片和后续分片转发到同一处理器上。
图2为本发明报文分流方法另一个实施例的流程图,如图2所示,该报文分流方法可以包括:
步骤201,报文分流装置接收并解析隧道报文,获取该隧道报文的外层IP地址、内层IP地址和该隧道报文的标识。
本实施例中,上述外层IP地址是指封装的网络层协议地址,内层IP地址是指被封装的网络层协议地址,且外层IP地址可以为外层源IP地址和/或外层目的IP地址,同样上述内层IP地址也可以为内层源IP地址和/或内层目的IP地址,本实施例对此不作限定。
上述隧道报文的标识为报文头中报文标识字段的值,属于同一个报文的分片报文均具有相同的标识。例如:对隧道报文进行分片后获得的首分片和后续分片具有相同的标识。
步骤202,报文分流装置根据上述隧道报文的报文头中的分片信息判断该隧道报文是否为隧道分片报文;如果判断该隧道报文是隧道分片报文,则执行步骤203;如果判断该隧道报文不是隧道分片报文,则执行步骤210。
本实施例中,上述分片信息用于指示该隧道报文是否为分片报文。当该隧道报文为隧道分片报文时,通过解析该隧道分片报文,报文分流装置还可以获得隧道分片报文的报文头中偏移字段的值。其中,上述偏移字段的值用于确定该隧道分片报文是第几分片,例如:当隧道分片报文的报文头中偏移字段的值为“0”时,可以确定该隧道分片报文为首分片;当隧道分片报文的报文头中偏移字段的值为“100”时,可以确定该隧道分片报文不是首分片,而是第二个分片,以此类推。
步骤203,判断在预存的分片信息表中是否查找到与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的处理器编号;如果是,则执行步骤204,如果未查找到,则执行步骤205。
其中,上述分片信息表中的处理器编号根据隧道分片报文的内层IP地址或者根据隧道分片报文的外层IP地址和隧道分片报文的标识获得。
步骤204,报文分流装置将上述隧道分片报文发送给相应的处理器。
本步骤中,相应的处理器即为步骤203中在分片信息表中查找到的处理器编号对应的处理器。
步骤205,报文分流装置确定上述隧道分片报文是否为首分片;如果是,则执行步骤206;如果上述隧道分片报文不是首分片,则执行步骤207。
步骤206,报文分流装置根据上述隧道分片报文的内层IP地址获得处理该隧道分片报文的处理器编号,然后执行步骤208~步骤209。
其中,根据该隧道分片报文的内层IP地址获得处理该隧道分片报文的处理器编号可以为:对该隧道分片报文的内层IP地址进行Hash获得处理该隧道分片报文的处理器编号,或对该隧道分片报文的内层IP地址按照ACL规则进行匹配获得处理该隧道分片报文的处理器编号,本实施例对根据该隧道分片报文的内层IP地址获得处理该隧道分片报文的处理器编号的方式不作限定。
步骤207,报文分流装置根据上述隧道分片报文的外层IP地址和上述隧道分片报文的标识获得处理上述隧道分片报文的处理器编号,然后执行步骤208~步骤209。
其中,根据上述隧道分片报文的外层IP地址和上述隧道分片报文的标识获得处理该隧道分片报文的处理器编号可以为:对上述隧道分片报文的外层IP地址和上述隧道分片报文的标识进行Hash获得处理上述隧道分片报文的处理器编号,或对上述隧道分片报文的外层IP地址和上述隧道分片报文的标识按照ACL规则进行匹配获得处理该隧道分片报文的处理器编号,本实施例对根据上述隧道分片报文的外层IP地址和上述隧道分片报文的标识获得处理该隧道分片报文的处理器编号的方式不作限定。
步骤208,报文分流装置将上述隧道分片报文发送给相应的处理器。
本步骤中,相应的处理器即为步骤206或步骤207中获得的处理器编号对应的处理器。
步骤209,报文分流装置在分片信息表中创建与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的表项,并在该表项中记录上述处理器编号。
本实施例中,步骤208与步骤209可以并行执行,也可以先后执行,本实施例对步骤208与步骤209的执行顺序不作限定,但图2中以步骤208与步骤209先后执行为例示出。
步骤210,报文分流装置根据隧道报文的内层IP地址获得处理该隧道报文的处理器编号,并将上述隧道报文发送给相应的处理器。
上述实施例根据分片信息表对接收到的隧道报文进行分流,从而可以实现对隧道报文进行均匀分流;另外,对于接收到的隧道分片报文不是首分片而是后续分片的情形,即步骤207对应的情形,由于后续分片不包含内层IP地址的信息,因此报文分流装置直接根据该隧道分片报文的外层IP地址和该隧道分片报文的标识获得处理该隧道分片报文的处理器编号,将上述隧道分片报文发送给相应的处理器,并在分片信息表中创建与该隧道分片报文的外层IP地址和该隧道分片报文的标识对应的表项,在该表项中记录上述处理器编号。这样,当首分片到来时,报文分流装置可以根据该首分片的外层IP地址和该首分片的标识进行查表,按照命中的处理器编号将首分片转发到上述处理器编号对应的处理器上,从而可以保证属于同一隧道报文的首分片和后续分片均被转发给同一处理器上;并且无需在发送侧对隧道报文做任何修改。
本发明图2所示实施例中,如果根据隧道分片报文的外层IP地址和该隧道分片报文的标识获得处理器编号,并将上述隧道分片报文转发给上述处理器编号对应的处理器,则与属于同一条流的其他报文相比,该隧道分片报文可能会被分到不同的处理器上,其中,属于同一条流的报文是指具有相同内层IP地址的报文。这时,需要处理器对接收到的隧道分片报文再次进行分流,以使属于同一条流的报文被转发给同一处理器处理。
本发明中,“第一”和“第二”仅为描述方便,不代表性能的优劣和顺序的先后,下同。
图3为本发明报文分流方法再一个实施例的流程图,如图3所示,该报文分流方法可以包括:
步骤301,第一处理器接收报文分流装置发送的隧道分片报文,获得该隧道分片报文的外层IP地址、内层IP地址和上述隧道分片报文的标识。
其中,该隧道分片报文是报文分流装置根据隧道分片报文的外层IP地址和该隧道分片报文的标识获得上述第一处理器的编号之后,发送给上述第一处理器的。
本实施例中,上述外层IP地址是指封装的网络层协议地址,内层IP地址是指被封装的网络层协议地址,且外层IP地址可以为外层源IP地址和/或外层目的IP地址,同样上述内层IP地址也可以为内层源IP地址和/或内层目的IP地址,本实施例对此不作限定。
上述隧道报文的标识为报文头中报文标识字段的值,属于同一个报文的分片报文均具有相同的标识。例如:对隧道报文进行分片后获得的首分片和后续分片具有相同的标识。
步骤302,在第一处理器预存的分片信息表中查找与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的第二处理器编号。
其中,上述分片信息表中的第二处理器编号是根据隧道分片报文的内层IP地址获得的。
步骤303,当在分片信息表中查找到与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的第二处理器编号时,若第二处理器编号与上述第一处理器的编号不同,则将上述隧道分片报文发送给第二处理器编号对应的第二处理器;若第二处理器编号与第一处理器的编号相同,则第一处理器处理上述隧道分片报文。
本实施例根据分片信息表对接收到的隧道报文进行分流,且由于分片信息表中第二处理器编号是根据报文的内层IP获得,从而可以实现对隧道报文进行均匀分流,确保隧道分片报文的首分片和后续分片转发到同一处理器上,保证同一条流的报文被转发到同一个处理器上进行处理。
图4为本发明报文分流方法再一个实施例的流程图,如图4所示,该报文分流方法可以包括:
步骤401,第一处理器接收报文分流装置发送的隧道分片报文,获得该隧道分片报文的外层IP地址、内层IP地址和上述隧道分片报文的标识。
其中,该隧道分片报文是报文分流装置根据隧道分片报文的外层IP地址和该隧道分片报文的标识获得上述第一处理器的编号之后,发送给上述第一处理器的。
本实施例中,上述外层IP地址是指封装的网络层协议地址,内层IP地址是指被封装的网络层协议地址,且外层IP地址可以为外层源IP地址和/或外层目的IP地址,同样上述内层IP地址也可以为内层源IP地址和/或内层目的IP地址,本实施例对此不作限定。
上述隧道报文的标识为报文头中报文标识字段的值,属于同一个报文的分片报文均具有相同的标识。例如:对隧道报文进行分片后获得的首分片和后续分片具有相同的标识。
步骤402,判断在第一处理器预存的分片信息表中是否查找到与隧道分片报文的外层IP地址和该隧道分片报文的标识对应的第二处理器编号;如果查找到,则执行步骤403;如果未查找到与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的第二处理器编号,则执行步骤406。
其中,上述分片信息表中的第二处理器编号是根据隧道分片报文的内层IP地址获得的。
步骤403,判断第二处理器编号与上述第一处理器的编号是否相同;如果否,则执行步骤404;如果第二处理器编号与上述第一处理器的编号相同,则执行步骤405。
步骤404,第一处理器将上述隧道分片报文发送给第二处理器编号对应的第二处理器。
步骤405,第一处理器处理上述隧道分片报文。
具体地,第一处理器接收到属于同一个报文的所有隧道分片报文之后,对接收到的隧道分片报文进行重组,然后对重组后的报文进行分析处理,例如对该报文的上层协议进行分析处理等等。
步骤406,判断上述隧道分片报文是否为首分片。如果是,则执行步骤407;如果上述隧道分片报文不是首分片,则执行步骤409。
具体地,通过解析该隧道分片报文,第一处理器还可以获得隧道分片报文的报文头中偏移字段的值。其中,上述偏移字段的值用于确定该隧道分片报文是第几分片,例如:当隧道分片报文的报文头中偏移字段的值为“0”时,可以确定该隧道分片报文为首分片;当隧道分片报文的报文头中偏移字段的值为“100”时,可以确定该隧道分片报文不是首分片,而是第二个分片,以此类推。
步骤407,第一处理器根据隧道分片报文的内层IP地址获得处理该隧道分片报文的第二处理器编号,然后执行步骤408和步骤403。
其中,根据该隧道分片报文的内层IP地址获得处理该隧道分片报文的第二处理器编号可以为:对该隧道分片报文的内层IP地址进行Hash获得处理该隧道分片报文的第二处理器编号,或对该隧道分片报文的内层IP地址按照ACL规则进行匹配获得处理该隧道分片报文的第二处理器编号,本实施例对根据该隧道分片报文的内层IP地址获得处理该隧道分片报文的第二处理器编号的方式不作限定。
步骤408,第一处理器在所述分片信息表中创建与上述隧道分片报文的外层IP地址和该隧道分片报文的标识对应的表项,并在上述表项中记录第二处理器编号。
步骤409,第一处理器缓存上述隧道分片报文,然后执行步骤402。
本实施例根据分片信息表对接收到的隧道报文进行分流,且由于分片信息表中第二处理器编号是根据报文的内层IP获得,从而可以实现对隧道报文进行均匀分流,确保隧道分片报文的首分片和后续分片转发到同一处理器上,保证同一条流的报文被转发到同一个处理器上进行处理,且无需在发送侧对隧道报文做任何修改。此外,由于本发明实施例中当没有接收到首分片而先接收到后续分片时,可以先将后续分片进行缓存,待首分片到达后,根据首分片的内层IP获得处理该报文的第二处理器编号,并保存在分片信息表中,再将缓存的后续分片根据该分片信息表发送到相应的第二处理器,从而可以使乱序的报文顺序发送到相应的处理器中进行处理。
本发明以下实施例的描述中,将隧道分片报文的外层IP地址和该隧道分片报文的标识(Identifier;以下简称:ID)简写为外层IP地址+ID。
图5为本发明报文分流方法再一个实施例的流程图,如图5所示,该报文分流方法可以包括:
步骤501,报文分流装置初始化分片信息表,将该分片信息表中的所有表项设为无效状态。
步骤502,报文分流装置接收并解析隧道报文,获得该隧道报文的外层IP地址、内层IP地址和该隧道报文的标识。
本实施例中,上述外层IP地址是指封装的网络层协议地址,内层IP地址是指被封装的网络层协议地址,且外层IP地址可以为外层源IP地址和/或外层目的IP地址,同样上述内层IP地址也可以为内层源IP地址和/或内层目的IP地址,本实施例对此不作限定。
上述隧道报文的标识为报文头中报文标识字段的值,属于同一个报文的分片报文均具有相同的标识。例如:对隧道报文进行分片后获得的首分片和后续分片具有相同的标识。
进一步地,通过解析上述隧道报文,报文分流装置还可以获得该隧道报文的报文头中的分片信息,该分片信息用于指示该隧道报文是否为分片报文。
步骤503,报文分流装置判断上述隧道报文是否为隧道分片报文。如果是,则执行步骤504;如果确定该隧道报文不是隧道分片报文,则执行步骤510。
具体地,报文分流装置可以根据步骤502中获得的分片信息,确定该隧道报文是否为隧道分片报文。
步骤504,报文分流装置在分片信息表中查找与上述隧道分片报文的外层IP地址+ID对应的表项。
其中,上述分片信息表中的处理器编号可以根据隧道分片报文的内层IP地址或者根据隧道分片报文的外层IP地址和隧道分片报文的标识获得。
本实施例中,分片信息表保存隧道分片报文分流的处理器编号,在分片信息表中处理器编号的索引可以为隧道分片报文的外层IP地址+ID;或者外层IP地址+ID的其他转化形式,本实施例对处理器编号的索引的形式不作限定。当上述处理器编号的索引为外层IP地址+ID的其他转化形式时,上述分片信息表中还应该包含与上述处理器编号的索引对应的外层IP地址+ID的信息。
另外,分片信息表中还可以包含老化信息,以供报文分流装置对表项进行老化。
步骤505,报文分流装置判断在分片信息表中是否查找到与上述隧道分片报文的外层IP地址+ID对应的表项。如果否,则执行步骤506;如果在分片信息表中查找到与上述隧道分片报文的外层IP地址+ID对应的表项,则执行步骤509。
步骤506,报文分流装置判断上述隧道分片报文是否为首分片。如果是,则执行步骤507;如果上述隧道分片报文不是首分片,则执行步骤508。
具体地,当该隧道报文为分片报文时,报文分流装置还可以根据隧道分片报文的报文头中偏移字段的值确定该隧道分片报文是第几分片,例如:当隧道分片报文的报文头中偏移字段的值为“0”时,报文分流装置可以确定该隧道分片报文为首分片;当隧道分片报文的报文头中偏移字段的值为“100”时,报文分流装置可以确定该隧道分片报文不是首分片,而是第二个分片,以此类推。
步骤507,报文分流装置根据该首分片的内层IP地址获得处理该首分片的处理器编号,将该首分片转发给该处理器编号对应的第一处理器,并在上述分片信息表中创建与上述首分片的外层IP地址+ID对应的表项,在该表项中记录上述处理器编号;然后返回执行步骤502。
其中,根据该首分片的内层IP地址获得处理该首分片的处理器编号可以为:对该首分片的内层IP地址进行Hash获得处理该首分片的处理器编号,或对该首分片的内层IP地址按照ACL规则进行匹配获得处理该首分片的处理器编号,本实施例对根据该首分片的内层IP地址获得处理该首分片的处理器编号的方式不作限定。
步骤508,报文分流装置根据上述隧道分片报文的外层IP地址+ID获得处理该隧道分片报文的处理器编号,将该隧道分片报文转发给该处理器编号对应的第一处理器,并在上述分片信息表中创建与该隧道分片报文的外层IP地址+ID对应的表项,在该表项中记录上述处理器编号。然后返回执行步骤502。
其中,根据上述隧道分片报文的外层IP地址+ID获得处理该隧道分片报文的处理器编号可以为:对上述隧道分片报文的外层IP地址+ID进行Hash获得处理上述隧道分片报文的处理器编号,或对上述隧道分片报文的外层IP地址+ID按照ACL规则进行匹配获得处理该隧道分片报文的处理器编号,本实施例对根据上述隧道分片报文的外层IP地址+ID获得处理该隧道分片报文的处理器编号的方式不作限定。
步骤509,报文分流装置获得表项中记录的处理器编号,将上述隧道分片报文转发给该处理器编号对应的第一处理器。然后返回执行步骤502。
本实施例中,如果在分片信息表中查找到与上述隧道分片报文的外层IP地址+ID对应的表项,且该隧道分片报文为最后到达的一个分片,则在获得该表项中记录的处理器编号之后,删除该表项。
步骤510,报文分流装置根据上述隧道报文的内层IP地址获得处理该隧道报文的处理器编号,将该隧道报文转发给该处理器编号对应的第一处理器。然后返回执行步骤502。
其中,根据上述隧道报文的内层IP地址获得处理该隧道报文的处理器编号可以为:对上述隧道报文的内层IP地址进行Hash获得处理该隧道报文的处理器编号,或对该隧道报文的内层IP地址按照ACL规则进行匹配获得处理该隧道报文的处理器编号,本实施例对根据上述隧道报文的内层IP地址获得处理该隧道报文的处理器编号的方式不作限定。
本实施例根据分片信息表对接收到的隧道报文进行分流,从而可以实现对隧道报文进行均匀分流;另外,对于接收到的隧道分片报文不是首分片而是后续分片的情形,即步骤508所对应的情形。这种情形下,由于后续分片报文中不包含内层IP地址的信息,因此步骤508中直接根据该隧道分片报文的外层IP地址+ID获得处理该隧道分片报文的处理器编号,并在分片信息表中创建与该隧道分片报文的外层IP地址+ID对应的表项,在该表项中记录上述处理器编号。这样,当与上述隧道分片报文属于同一隧道报文的首分片到来时,报文分流装置将根据该首分片的外层IP地址+ID进行查表,按照命中的处理器编号将首分片转发到上述处理器编号对应的第一处理器上,从而可以保证属于同一隧道报文的首分片和后续分片均被转发给第一处理器。
本发明提供的报文分流方法可以实现对隧道报文进行均匀分流,对于外层IP地址相同或比较集中的场景通过采用内层IP地址实现了比较均匀的分流。并且本发明针对隧道分片报文建立了分片信息表,报文分流装置根据该分片信息表中记录的处理器编号进行转发,从而可以保证属于同一隧道分片报文的首分片和后续分片被转发给上述网络设备中的同一处理器进行处理。并且本发明只在接收侧对报文进行处理,不需要在发送侧修改报文,对应用场景没有限制。
本发明图5所示实施例中,由于属于同一条流的不同报文具有不同的报文ID,因此,如果根据隧道分片报文的外层IP地址+ID获得处理该隧道分片报文的处理器编号,并将上述隧道分片报文转发给上述处理器编号对应的第一处理器,则与属于同一条流的其他报文相比,该隧道分片报文可能会被分到不同的处理器上,其中,属于同一条流的报文是指具有相同内层IP地址的报文。这时,需要第一处理器对接收到的隧道分片报文再次进行分流,以使属于同一条流的报文能够被转发给同一处理器处理。其中,第一处理器对接收到的隧道分片报文再次进行分流的流程可以参见本发明图4所示实施例提供的流程,在此不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图6为本发明报文分流装置一个实施例的结构示意图,本实施例提供的报文分流装置可以实现本发明图1所示实施例的流程。如图6所示,该报文分流装置可以包括:获取模块61、确定模块62、查找模块63和发送模块64。
其中,获取模块61,用于接收并解析隧道报文,获取隧道报文的外层IP地址、内层IP地址和该隧道报文的标识;
确定模块62,用于根据上述隧道报文的报文头中的分片信息确定上述隧道报文是否为隧道分片报文;
查找模块63,用于当确定模块62确定上述隧道报文为隧道分片报文时,在报文分流装置保存的分片信息表中查找与上述隧道分片报文的外层IP地址和该隧道分片报文的标识对应的处理器编号,其中,该分片信息表中的处理器编号根据隧道分片报文的内层IP地址或者根据隧道分片报文的外层IP地址和隧道分片报文的标识获得;
发送模块64,用于当查找模块63在分片信息表中查找到与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的处理器编号时,将该隧道分片报文发送给相应的处理器。
上述实施例中,接收并解析隧道报文之后,当该隧道报文为隧道分片报文时,查找模块63在保存的分片信息表中查找与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的处理器编号,当在分片信息表中查找到与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的处理器编号时,发送模块64将上述隧道分片报文发送给相应的处理器。本实施例根据分片信息表对接收到的隧道报文进行分流,从而可以实现对隧道报文进行均匀分流,并可以确保隧道分片报文的首分片和后续分片转发到同一处理器上。
图7为本发明报文分流装置另一个实施例的结构示意图,本实施例提供的报文分流装置可以实现本发明图1和图2所示实施例的流程。与图6所示的报文分流装置相比,不同之处在于,图7所示的报文分流装置还可以包括:第一获得模块65;
本实施例中,确定模块62,还用于当查找模块63在上述分片信息表中没有查找到与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的处理器编号时,确定该隧道分片报文是否为首分片;
第一获得模块65,用于当确定模块62确定上述隧道分片报文为首分片时,根据该隧道分片报文的内层IP地址获得处理该隧道分片报文的处理器编号;以及当确定模块62确定上述隧道分片报文不是首分片时,根据该隧道分片报文的外层IP地址和上述隧道分片报文的标识获得处理该隧道分片报文的处理器编号。
进一步地,上述报文分流装置还可以包括:
创建模块66,用于在第一获得模块65获得处理上述隧道分片报文的处理器编号之后,在分片信息表中创建与上述隧道分片报文的外层IP地址和该隧道分片报文的标识对应的表项,并在上述表项中记录上述处理器编号。
第二获得模块67,用于当确定模块62确定上述隧道报文不是隧道分片报文时,根据所述隧道报文的内层IP地址获得处理上述隧道报文的处理器编号。
上述报文分流装置根据分片信息表对接收到的隧道报文进行分流,从而可以实现对隧道报文进行均匀分流;另外,对于接收到的隧道分片报文不是首分片而是后续分片的情形,由于后续分片不包含内层IP地址的信息,因此第一获得模块65直接根据该隧道分片报文的外层IP地址和该隧道分片报文的标识获得处理该隧道分片报文的处理器编号,由发送模块64将上述隧道分片报文发送给相应的处理器,并由创建模块66在分片信息表中创建与该隧道分片报文的外层IP地址和该隧道分片报文的标识对应的表项,在该表项中记录上述处理器编号。这样,当首分片到来时,查找模块63可以根据该首分片的外层IP地址和该首分片的标识进行查表,再由发送模块64按照命中的处理器编号将首分片转发到上述处理器编号对应的处理器上,从而可以保证属于同一隧道报文的首分片和后续分片均被转发给同一处理器上;并且无需在发送侧对隧道报文做任何修改。
图8为本发明报文分流装置再一个实施例的结构示意图,如图8所示,该报文分流装置可以包括:解析模块81、表项查找模块82、分流模块83和表项管理模块84;其中,解析模块81负责解析接收到的隧道报文,获得该隧道报文的外层IP地址、内层IP地址和该隧道报文的ID。
进一步地,通过解析上述隧道报文,解析模块81还可以获得该隧道报文的报文头中的分片信息,该分片信息用于指示该隧道报文是否为分片报文。
当该隧道报文为分片报文时,解析模块81还可以获取隧道分片报文的报文头中偏移字段的值。其中,上述偏移字段的值用于确定该隧道分片报文是第几分片,例如:当隧道分片报文的报文头中偏移字段的值为“0”时,可以确定该隧道分片报文为首分片;当隧道分片报文的报文头中偏移字段的值为“1”时,可以确定该隧道分片报文不是首分片,而是第二个分片,以此类推。
本实施例中的解析模块81可以实现本发明图6和图7所示实施例中获取模块61和确定模块62的功能。
分流模块83负责对报文进行转发。对于非分片报文,分流模块83直接根据解析模块81获得的内层IP地址获得处理该非分片报文的处理器编号,将该非分片报文转发给上述处理器编号对应的处理器;对于分片报文,分流模块83需等待表项查找模块82返回查表结果,若查表命中,则分流模块83直接将上述分片报文转发给表项查找模块82提供的处理器编号所对应的处理器;若查表不命中,则分流模块83根据解析模块81提供的是否首分片信息,对于首分片根据内层IP地址获得处理该首分片的处理器编号,并将该首分片转发给上述处理器编号对应的处理器,同时将获得的处理器编号返回给表项查找模块82;对于后续分片根据外层IP地址+ID获得处理该后续分片的处理器编号,并将该后续分片转发给上述处理器编号对应的处理器,同时将获得的处理器编号返回给表项查找模块82。
本实施例中的分流模块83可以实现本发明图6和图7所示实施例中发送模块64的功能,以及本发明图7所示实施例中第一获得模块65和第二获得模块67的功能。
表项查找模块82负责根据解析模块81提供的外层IP地址+ID查找分片信息表85并返回结果。如果查表命中,则从该分片信息表85中获取处理器编号给分流模块83;若查表不命中,则将不命中信息给分流模块83。同时在查找不命中时,将报文的外层IP地址+ID以及分流模块83获得的处理器编号转发给表项管理模块84,以供表项管理模块84建立新的表项添加到分片信息表中;若查表命中且当前报文是最后一个分片,则将查表命中信息及外层IP地址+ID提供给表项管理模块84实现对相应表项的删除。
本实施例中的表项查找模块82可以实现本发明图6所示实施例中查找模块63的功能。
表项管理模块84负责对分片信息表85进行管理,包括表项的建立、老化和删除操作。表项管理模块84负责在设备上电后初始化分片信息表85,将分片信息表85中的所有表项置为无效状态。待开始接收报文后,表项管理模块84根据解析模块81提供的外层IP地址+ID及分流模块83返回的处理器编号在分片信息表85中建立新的表项;根据表项查找模块82提供的最后一个分片查表命中的信息删除对应的表项;同时不断轮询表项,对于超时的表项进行删除操作,保证表项及时得到老化。
本实施例中的表项管理模块84可以实现本发明图7所示实施例中创建模块66的功能。
分片信息表85保存隧道分片报文分流的处理器编号,在分片信息表85中处理器编号的索引可以为隧道分片报文的外层IP地址+ID;或者外层IP地址+ID的其他转化形式,本实施例对处理器编号的索引的形式不作限定。当上述处理器编号的索引为外层IP地址+ID的其他转化形式时,上述分片信息表85中还应该包含与上述处理器编号的索引对应的外层IP地址+ID的信息。
另外,分片信息表85中还可以包含老化信息,以供表项管理模块84对表项进行老化。
本发明提供的报文分流装置可以实现对隧道报文进行均匀分流,对于外层IP地址相同或比较集中的场景通过采用内层IP地址实现了比较均匀的分流。并且本发明针对隧道分片报文建立了分片信息表,报文分流装置根据该分片信息表中记录的处理器编号进行转发,从而可以保证属于同一隧道分片报文的首分片和后续分片被转发给同一处理器进行处理。本发明在各种情况下实现了隧道报文的均匀分流,达到了较好的分流效果。并且本发明只在接收侧对报文进行处理,不需要在发送侧修改报文,对应用场景没有限制。
图9为本发明处理器一个实施例的结构示意图,本实施例提供的处理器可以实现本发明图3所示实施例的流程,本实施例中的处理器可以为第一处理器,如图9所示,该处理器可以包括:报文接收模块91、编号查找模块92、报文发送模块93和报文处理模块98;
其中,报文接收模块91,用于接收报文分流装置发送的隧道分片报文,获得该隧道分片报文的外层IP地址、内层IP地址和该隧道分片报文的标识;其中,该报文接收模块91接收的隧道分片报文是报文分流装置根据上述隧道分片报文的外层IP地址和上述隧道分片报文的标识获得第一处理器的编号之后,发送给上述第一处理器的。
编号查找模块92,用于在第一处理器保存的分片信息表中查找与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的第二处理器编号,其中,该分片信息表中的第二处理器编号是根据隧道分片报文的内层IP地址获得。
报文发送模块93,用于当编号查找模块92在分片信息表中查找到与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的第二处理器编号时,若第二处理器编号与上述第一处理器的编号不同,则将隧道分片报文发送给第二处理器编号对应的第二处理器;
报文处理模块98,用于当所述第二处理器编号与所述第一处理器的编号相同时,处理所述隧道分片报文。
本实施例提供的处理器根据分片信息表对接收到的隧道报文进行分流,从而可以实现对隧道报文进行均匀分流,并可以确保隧道分片报文的首分片和后续分片转发到同一处理器上,且由于分片信息表中第二处理器编号是根据报文的内层IP获得,因此可以保证同一条流的报文被转发到同一个处理器上进行处理。
图10为本发明处理器另一个实施例的结构示意图,本实施例提供的处理器可以实现本发明图3和图4所示实施例的流程,与图9所示的处理器相比,不同之处在于,图10所示的处理器,还可以包括:报文确定模块94、编号获得模块95和报文缓存模块96;
其中,报文确定模块94,用于当编号查找模块92在上述分片信息表中没有查找到与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的第二处理器编号时,确定上述隧道分片报文是否为首分片;
编号获得模块95,用于当报文确定模块94确定上述隧道分片报文为首分片时,根据上述隧道分片报文的内层IP地址获得处理该隧道分片报文的第二处理器编号;
报文缓存模块96,用于当报文确定模块94确定上述隧道分片报文不是首分片时,缓存上述隧道分片报文。
本实施例中,报文发送模块93,还可以当编号获得模块95获得的第二处理器编号与第一处理器的编号不同时,将该隧道分片报文发送给第二处理器编号对应的第二处理器。
本实施例中,编号查找模块92,还用于在分片信息表中查找与缓存的隧道分片报文的外层IP地址和缓存的隧道分片报文的标识对应的第二处理器编号;
报文发送模块93,还用于当编号查找模块92在上述分片信息表中查找到与缓存的隧道分片报文的外层IP地址和缓存的隧道分片报文的标识对应的第二处理器编号时,若第二处理器编号与所述第一处理器的编号不同,则将缓存的隧道分片报文发送给第二处理器编号对应的第二处理器。
进一步地,本实施例中的处理器还可以包括:
表项创建模块97,用于在编号获得模块95获得处理上述隧道分片报文的第二处理器编号之后,在分片信息表中创建与上述隧道分片报文的外层IP地址和上述隧道分片报文的标识对应的表项,并在该表项中记录第二处理器编号。
本实施例提供的处理器根据分片信息表对接收到的隧道报文进行分流,且由于分片信息表中第二处理器编号是根据报文的内层IP获得,从而可以实现对隧道报文进行均匀分流,可以确保隧道分片报文的首分片和后续分片转发到同一处理器上,并保证同一条流的报文被转发到同一个处理器上进行处理且无需在发送侧对隧道报文做任何修改。此外,由于本发明实施例中当没有接收到首分片而先接收到后续分片时,可以先将后续分片进行缓存,待首分片到达后,根据首分片的内层IP获得处理该报文的第二处理器编号,并保存在分片信息表中,再将缓存的后续分片根据该分片信息表发送到相应的第二处理器,从而可以使乱序的报文被顺序发送到相应的处理器中进行处理。
本发明还提供一种网络设备,该网络设备可以包括报文分流装置和至少两个处理器;其中该报文分流装置可以通过本发明图6、图7或图8所示的报文分流装置实现,该处理器可以通过本发明图9或图10所示的处理器实现。该网络设备可以为网络监控设备等设备,本发明对该网络设备的具体形式不作限定。
上述网络设备可以实现对隧道报文进行均匀分流,对于外层IP地址相同或比较集中的场景通过采用内层IP地址实现了比较均匀的分流。并且本发明针对隧道分片报文建立了分片信息表,网络设备根据该分片信息表中记录的处理器编号进行转发,从而可以保证属于同一隧道分片报文的首分片和后续分片被转发给同一处理器进行处理。本发明在各种情况下实现了隧道报文的均匀分流,达到了较好的分流效果。并且本发明只在接收侧对报文进行处理,不需要在发送侧修改报文,对应用场景没有限制。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。