发明内容
本发明的目的在于克服现有技术中药提高数据包转发效率必须增加路由器的成本的问题,提供一种路由器快速转发系方法及实施该方法的系统,减少路由器成本。
为了实现上述目的,本发明采用的技术方案如下:
一种路由器快速转发方法,其实现步骤包括:
P1、路由器从路由器的接口接收并识别IP数据包,并对于识别的IP数据包提取其连接信息;
P2、路由器查找该路由器的接口对应的快速转发表,如果存在该路由器的接口连接的表项,则获取快速转发路径信息,并按照该表项内容修改数据包信息进行快速转发处理,进入下一步,否则,创建快速转发表项,交由TCP/IP协议模块处理,以获取快速转发路径信息,并在快速转发表中记录此快速转发路径信息;
P3、更新该路由器的接口对应的快速转发表:包括活跃数据处理和老化数据处理。
再进一步的,所述步骤P2中,路由器在查找该路由器的接口对应的快速转发表前已为路由器的每个接口维护一张快速转发表,该快速转发表中一条快速转发表项内容包括本表项的编号,IP数据包连接信息,快速转发路径信息和本表项记录的时间,该IP数据包连接信息即为IP数据包提取的连接信息和接收该IP数据包的接口编号。
再进一步的,所述步骤P2中,快速转发表中快速转发路径信息包括:源地址转换(NAT)信息,目的地址转换(NAT)信息,路由信息以及服务质量(QoS)标记信息。
再进一步的,所述步骤P2中,当查找该路由器的接口对应的快速转发表的表项不存在时,其具体实施方法如下:
要为本连接在对应的路由器接口,以及反向连接对应的路由器接口同时创建快速转发表项,并将本连接和反向连接的连接信息填入表项;
并且将IP分组按照TCP/IP协议模块正常处理流程,以获取快速转发路径信息,并将获取的快速转发路径信息填写到创建的快速转发表项中,同时更新本表项的记录时间。
再进一步的,所述步骤P2中,查找快速转发表时,采用精确匹配方式,对快速转发路径信息进行哈希处理,根据得到的哈希值查找快速转发表,在查到快速转发表后并根据快速转发表项中的表项修改IP数据包中的数据,重新计算校验和,最后直接放入TCP/IP协议栈相应接口的转发队列。
为了完成活跃数据的处理,所述步骤P3中进行活跃数据处理的实现方法包括:分别把刚使用的表项以及反向表项移到对应快速转发表的最前面,同时更新本表项的记录时间。
为了完成老化数据处理,所述步骤P3中进行老化数据处理的实现方法包括:定时从表尾开始处理快速转发表项,如果表项达到设定的老化时间,则删除该表项。
本发明还提供了实现路由器快速转发方法的系统,包括:
用于从接收的数据包中获取连接信息的数据接收单元;
用于加快匹配命中率、依据快速转发表项信息进行哈希处理,并根据得到的哈希值查找快速转发表的查找单元;
创建单元,用于创建快速转发表,该快速转发表项针对连接,把原始方向的相应信息依据网络接口号填入对应接口的快速转发表中,同时把回应方向的相应信息依据网络接口号填入到相应的快速转发表中,这样一条连接的快速转发表条目建立完成;
用于更新快速转发表,调整被使用的快速转发表项在快速转发表中顺序,或者定时从表尾开始处理快速转发表项的更新单元;
用于修改数据包信息的数据包处理单元。
为了完成更新单元的功能,所述更新单元包括:
用于调整被使用的快速转发表项顺序的活跃数据处理子单元;
用于定时从表尾开始处理快速转发表项的老化处理子单元。
本发明较现有技术相比,具有以下优点及有益效果:
(1)本发明与现有典型的快速路由器相比较,明显改善了网络性能,因为本发明提出的快速转发方法使用很少的内存容量即能实现数据包的转发,节省了更多的处理器资源用于网络层其他应用服务,比如服务质量表及信息保证和加密功能等。
(2)本发明在每个接口上均维护着一个快速转发表,它能独自提供完全、快速的转发,同时路由器查找快速转发表,若不存在该连接的表项,还能创建快速转发表项,交由TCP/IP协议模块处理,获取快速转发路径信息,并在快速转发表中记录此数据连接信息,因此本发明大大提高了网络可扩展性,并节约了路由器成本。
(3)本发明中的数据包处理单元包括活跃数据处理子单元和老化处理子单元,通过对快速转发表进行活跃数据处理和老化数据处理,进一步优化了快速转发表的结构,使查找效率得到了大大提高,因而进一步提高了路由器转发效率。
具体实施方式
下面结合附图与实施例对本发明作进一步说明,本发明的实施方式包括但不限于下列实施例。
实施例1
本实施例提供一种路由器快速转发系统及其实现方法,能够在不增加路由器处理负担的前提下提高数据包转发速率。
如图1和图2所示,该路由器快速转发系统包含于路由器中,主要包括几个硬件单元,分别为依次连接的数据接收单元、查找单元,均与查找单元相连接的创建单元、数据包处理单元,与数据包处理单元相连接的更新单元,其中数据包处理单元还包括活跃数据处理子单元和老化处理子单元。
每个单元的作用如下:
数据接收单元,用于获取IP数据包中的连接信息。包括源IP地址,目的IP地址,源端口号,目的端口号,接口号。
查找单元,用于利用连接信息查找快速转发表,需精确匹配,为了加快匹配命中率,可以依据快速转发表项的连接信息,进行哈希(hash)处理,根据得到的哈希值查找快速转发表。
创建单元,用于创建快速转发表项,该快速转发表项针对某个连接,把原始方向的相应信息依据网络接口号填入对应接口的快速转发表中,同时把回应方向的相应信息依据网络接口号填入到反向的快速转发表中,这样一条连接的快速转发表条目建立完成。
数据包处理单元,用于修改数据包信息。查找快速转发表项匹配后,则依据此表项的快速转发路径信息修改IP数据包中的相应数据,并重新计算校验和,最后直接放入TCP/IP协议栈相应网口的转发队列。
如图2所示的更新单元,用于更新快速转发表,调整刚被使用的快速转发表项在快速转发表中的顺序,或者定时从表尾开始处理快速转发条目。
活跃数据处理子单元,用于调整刚被使用的快速转发表项在快速转发表中的顺序;
老化处理子单元,用于定时从表尾开始处理快速转发条目。
如图3所示,本发明实施例提供的快速转发的方法包括:
P1、路由器接口A收到数据包,并识别为IP数据包,其中识别的过程如下:
P101、路由器上的网卡驱动接收数据包,并将数据包加入到网络协议栈接收队列;
P102、判断数据包是否符合以太网协议标准802.1Q,若不符合则丢弃数据包,若符合则进行下一步;
P103、判断数据包是否是IP包,判断802.1Q帧中类型(type)字段是否等于0X0800,如不是,则交给该类型对应协议模块处理,如是,则进行下一步。
P104、数据接收模块提取IP数据包中的连接信息,包括源IP地址、源端口号、目的IP地址、目的端口号、协议类型。
P2、路由器利用查找单元查找快速转发表,判断数据连接表项是否存在,若存在则进行数据包快速转发处理;否则调用创建单元创建快速转发表项,并交由TCP/IP协议模块处理。
在此之前,路由器已为每个接口维护一张快速转发表,该快速转发表中一条快速转发表项内容包括本表项的编号,IP数据包连接信息,快速转发路径信息和本表项记录的时间,该IP数据包连接信息即为IP数据包提取的连接信息和接收该IP数据包的接口编号。
步骤P2中查找快速转发表时采用精确匹配方式,对连接信息进行哈希处理,根据得到的哈希值查找快速转发表。
在图3所示的例子中,当第一次收到某个连接的数据包时,经查找,不存在该数据连接的表项,在接口A的快速转发表中创建该连接的快速转发表项,记录此连接信息,并在连接对应的反向接口B的快速转发表中创建此连接对应的反向连接表项。连接表项包含编号,包括源IP地址、源端口号、目的IP地址、目的端口号、协议类型的连接信息,接口信息,包括源地址转换(NAT)信息,目的地址转换信息,路由信息,服务质量标记的快速转发路径信息和该表项的记录时间,该表项的记录时间即为创建或者更新时的系统时间,本实施例中的时间采用“小时:分钟:秒”方式模拟。
并将数据包交由TCP/IP协议模块处理,提取对应的快速转发路径信息,并将此信息填写到接口A和B对应的快速转发表项中。接口A和B此时的快速转发的内容如下:
表1:接口A的快速转发表
编号 |
源IP地址 |
源端口号 |
目的IP地址 |
目的端口号 |
协议类型 |
接口 |
1 |
1.1.1.1 |
80 |
2.2.2.2 |
8080 |
TCP |
A |
源IP转换 |
目的IP转换 |
路由信息 |
服务质量 |
时间 |
3.3.3.3 |
- |
3.3.3.4 |
3 |
8:30:00 |
表2:接口B的快速转发表
编号 |
源IP地址 |
源端口号 |
目的IP地址 |
目的端口号 |
协议类型 |
接口 |
1 |
2.2.2.2 |
8080 |
3.3.3.3 |
80 |
TCP |
B |
源IP转换 |
目的IP转换 |
路由信息 |
服务质量 |
时间 |
- |
1.1.1.1 |
1.1.1.1 |
3 |
8:30:00 |
P3、路由器启动老化处理定时器,时间定为7200s。
P4、路由器接口B接收到数据包,并识别为IP数据包,该数据包包含的连接信息如下:
源IP地址:2.2.2.2,源端口号:8080,目的IP地址:3.3.3.3,目的端口号:80,协议类型:TCP。
P5、查找快速转发表,因为存在该连接的表项,在根据该表项的快速转发路径信息(源地址转换信息:空,目的地址转换(NAT)信息:1.1.1.1,路由信息:1.1.1.1,服务质量(QoS)标记信息:3),将IP数据包的目的IP地址修改为1.1.1.1,并重新计算校验和,最后根据路由信息将IP数据包直接放入下一跳1.1.1.1相应接口的相应的服务质量的转发队列,进行快速转发处理。
P6、更新快速转发表,由于表项只有一个,故不调整顺序,但将接口A和B对应连接的快速转发表项的使用时间更新为8:30:01。
P7、路由器接口A继续接收到数据包,并识别为IP数据包,该数据包包含的连接信息如下:
源IP地址:4.4.4.4,源端口号:8080,目的IP地址:5.5.5.5,目的端口号:80,协议类型:TCP。
P8、查找快速转发表,因为是此数据连接第一个数据包,不存在该数据连接的表项,在接口A的快速转发表中创建该连接的快速转发表项,记录此连接信息,并在连接对应的反向接口B的快速转发表中创建此连接对应的反向连接表项。
并将数据包交由TCP/IP协议模块处理,提取对应的快速转发路径信息,快速转发路径信息包括地址转换(NAT)信息:6.6.6.6,路由信息:6.6.6.1,服务质量(QoS)标记信息:2。并将此信息填写到接口A和B对应的快速转发表项中。接口A和B此时的快速转发的内容如下:
表3:接口A快速转发表
编号 |
源IP地址 |
源端口号 |
目的IP地址 |
目的端口号 |
协议类型 |
接口 |
1 |
1.1.1.1 |
80 |
2.2.2.2 |
8080 |
TCP |
A |
2 |
4.4.4.4 |
80 |
5.5.5.5 |
8080 |
TCP |
A |
源IP转换 |
目的IP转换 |
路由信息 |
服务质量 |
时间 |
3.3.3.3 |
- |
3.3.3.4 |
3 |
8:30:01 |
6.6.6.6 |
- |
6.6.6.1 |
2 |
11:30:00 |
表4:接口B快速转发表
编号 |
源IP地址 |
源端口号 |
目的IP地址 |
目的端口号 |
协议类型 |
接口 |
1 |
2.2.2.2 |
8080 |
3.3.3.3 |
80 |
TCP |
B |
2 |
5.5.5.5 |
8080 |
6.6.6.6 |
80 |
TCP |
B |
源IP转换 |
目的IP转换 |
路由信息 |
服务质量 |
时间 |
- |
1.1.1.1 |
1.1.1.1 |
3 |
8:30:01 |
- |
4.4.4.4 |
4.4.4.4 |
2 |
11:30:00 |
P9、更新快速转发表:包括活跃数据处理,对接口A目前正在使用的表项调整至快速转发表前面,并把该表项对应的反向表项也移动至数据转发表前面,得到如表5所示的接口A和表6接口B快速转发表结构。
表5:接口A快速转发表
编号 |
源IP地址 |
源端口号 |
目的IP地址 |
目的端口号 |
协议类型 |
接口 |
2 |
4.4.4.4 |
80 |
5.5.5.5 |
8080 |
TCP |
A |
1 |
1.1.1.1 |
80 |
2.2.2.2 |
8080 |
TCP |
A |
源IP转换 |
目的IP转换 |
路由信息 |
服务质量 |
时间 |
6.6.6.6 |
- |
6.6.6.1 |
2 |
11:30:00 |
3.3.3.3 |
- |
3.3.3.4 |
3 |
8:30:01 |
表6:接口B快速转发表
编号 |
源IP地址 |
源端口号 |
目的IP地址 |
目的端口号 |
协议类型 |
接口 |
2 |
5.5.5.5 |
8080 |
6.6.6.6 |
80 |
TCP |
B |
1 |
2.2.2.2 |
8080 |
3.3.3.3 |
80 |
TCP |
B |
源IP转换 |
目的IP转换 |
路由信息 |
服务质量 |
时间 |
- |
4.4.4.4 |
4.4.4.4 |
2 |
11:30:00 |
- |
1.1.1.1 |
1.1.1.1 |
3 |
8:30:01 |
P10、当定时器达到7200秒时,进行老化数据处理,此时时间为10:30:00,因为接口A和B的表项都没有超过7200s,故不进行处理。重置定时器;
P11、当定时器第二次达到7200s,此时时间为12:30:00,因为接口A和B中编号为1的条目达到设定的老化时间7200秒,则删除该表项,得到如表7所示的接口A和表8所示的接口B的快速转发表,同时重置定时器。
表7:接口A快速转发表
编号 |
源IP地址 |
源端口号 |
目的IP地址 |
目的端口号 |
协议类型 |
接口 |
2 |
4.4.4.4 |
80 |
5.5.5.5 |
8080 |
TCP |
A |
源IP转换 |
目的IP转换 |
路由信息 |
服务质量 |
时间 |
6.6.6.6 |
- |
6.6.6.1 |
2 |
11:30:00 |
表8:接口B快速转发表
编号 |
源IP地址 |
源端口号 |
目的IP地址 |
目的端口号 |
协议类型 |
接口 |
2 |
5.5.5.5 |
8080 |
6.6.6.6 |
80 |
TCP |
B |
源IP转换 |
目的IP转换 |
路由信息 |
服务质量 |
时间 |
- |
4.4.4.4 |
4.4.4.4 |
2 |
11:30:00 |
实施例2
其中,基于实施例1,本实施例还提供了正向连接时进行的源地址替换,其实现方法如下:
(1)、路由器接口A接收到数据包,并识别为IP数据包,该数据包包含的连接信息如下:
源IP地址:4.4.4.4,源端口号:8080,目的IP地址:5.5.5.5,目的端口号:80,协议类型:TCP。
(2)、查找快速转发表,因为存在该连接的表项,在根据该表项的快速转发路径信息(源地址转换(NAT)信息:6.6.6.6,目的地址转换信息:空,路由信息:6.6.6.1,服务质量(QoS)标记信息:2),将IP数据包的源IP地址修改为6.6.6.6,并重新计算校验和,最后根据路由信息将IP数据包直接放入下一跳6.6.6.1相应接口的相应的服务质量2的转发队列,进行快速转发处理。
(3)、更新快速转发表,由于表项只有一个,故不调整顺序,但将接口A和B对应连接的快速转发表项的使用时间更新为12:30:10。
如图4所示,该图为路由器快速转发示意图,其网络性能结果如下:
(a)以ralink 3052F芯片作为CPU为参照,在未开启快速转发路径功能下,每秒平均转发的数据包数目为28k, 开启后每秒平均转发的数据包数目达到45K,性能有了成倍提升。
(b)吞吐量方面,在未开启快速转发路径功能下,吞吐量仅53M左右,且CPU使用率100%,而开启后,吞吐量达到93M,且CPU使用率在30%左右。
按照上述实施例,便可很好地实现本发明。