在网络地址端口映射中高速处理tcp/ip分片包的方法

文档序号:7592440阅读:205来源:国知局
专利名称:在网络地址端口映射中高速处理tcp/ip分片包的方法
技术领域
本发明涉及TCP/IP分片包的处理,尤其涉及在广域网环境中使用NAPT协议将用户接入Internet时处理TCP/IP分片包的技术。
背景技术
随着国际互联网(以下简称Internet)技术的高速发展,其用户成爆炸性的增长,IPV4的地址日趋紧张,为了能将大量的内部网络用户接入Internet,国际标准化组织开发了NAPT(Network Address Port Translation,网络地址端口映射)技术,NAPT技术通过将大量使用内部私网IP(Internet Protocol,互联网络协议)地址的用户映射到同一公网源IP地址上来实现节约公网IP地址的目的。同时,随着Internet用户的大量增长,用户的业务种类和业务范围更加复杂,网络上不可避免地会存在相当数量的分片数据包。这样,内部网络用户使用NAPT技术访问Internet时,不可避免地会带来如下的问题由于使用私网IP地址的内部用户在访问Internet时,启用NAPT技术的网络设备需要将内部网络用户的私网源IP地址和源端口更换为外部公网用户能访问的公网源IP地址和转换后的源端口,因此NAPT网络设备在进行NAPT处理时,需要建立起用户的内部私网源IP地址和源端口号到公网源IP地址和转换后的源端口号的映射表。对于分片的TCP(Transfer ControlProtocol,传输控制协议)/IP网络数据包,由于只有第一分片数据包中存在源端口信息,可以正常进行NAPT处理外,其他的分片数据包由于无法提取源端口等信息而无法单独进行NAPT处理。
当前,网络设备对分片TCP/IP数据包的处理方法是先进行分片重组,对重组完成后的数据包再进行NAPT处理,以达到平滑处理TCP/IP网络数据包的目的,此方法对边沿的低性能要求的网络设备不存在任何问题,但对要求高性能的网络设备,在存在大量分片数据包的环境中将带来性能上的急剧下降。因此,在某些要求高性能的网络设备中,为了避免进行分片重组所带来的性能上的急剧下降,通常不进行分片重组,这样,由于只能从TCP/IP分片数据包的第一分片包中提取进行NAPT处理的源IP地址和源端口信息,所以只能对TCP/IP数据包的第一分片进行处理,而其他的分片数据包将因不能提取相应的源端口信息而不能处理,使得TCP/IP分片数据包无法在目的主机进行分片重组,导致处理失败。

发明内容
本发明要解决的技术问题是提供一种在网络地址端口映射中处理TCP/IP分片包的方法,使得启用了NAPT技术的网络设备在支持对分片数据包进行NAPT处理的同时,不降低设备的性能。
为了解决上述技术问题,本发明提供了一种在网络地址端口映射中高速处理TCP/IP分片包的方法,包括下述步骤(a).收到需要进行处理的TCP/IP分片包,提取能唯一标识该TCP/IP数据包中所有分片包的标识符;(b).判断收到的分片包是否是TCP/IP数据包的第一分片包,如果是,执行(c)步骤,否则,执行(d)步骤;(c).根据该第一分片包的IP地址和端口号,建立该TCP/IP数据包所使用的网络地址端口映射表项,并记录提取的标识符与该网络地址端口映射表项的对应关系,进行正常网络地址端口映射处理后,结束;(d).根据该标识符定位到该TCP/IP数据包所使用的网络地址端口映射表项;(e).使用该网络地址端口映射表项对该分片数据包进行网络地址端口映射处理(对非第一分片包只需进行IP地址的替换),结束。
在处理各种不同类型的数据包时,在所述(a)步骤前还包括步骤判断收到的数据包是否为TCP/IP分片包,是则执行(a)步骤,不是则对该数据包进行正常的网络地址端口映射处理。
上述方法可以处理上行或下行的TCP/IP分片包,即在所述(a)步骤中,网络设备收到的TCP/IP分片包可以是从内部网络发送至公网的TCP/IP分片包,或者是从公网发送至内部网络的TCP/IP分片包。
在复杂环境中路由振荡可能会引起分片失序,导致数据包的第一分片包不是最先到达,使步骤(d)定位失败,为了提高数据处理的成功率,在该情况下可以不做出错处理,而是增加以下步骤在执行步骤(a)后,根据该标识符查找是否有对该TCP/IP数据包做出的失序标记,如果是,执行步骤(g),否则执行步骤(b);在执行(d)步骤时,如果定位失败,执行下述(f)和(g)步骤(f).建立提取的标识符与失序标记的关联关系(即对该TCP/IP数据包做出失序标记);(g).按系统设定的对分片失序时的处理方法处理该分片数据包,结束。
所述设定的对分片失序时的处理方法可以是但不局限于现有的重组分片后再进行网络地址端口映射处理的方法。
上述方法可具有以下特点所述的标识符内容采用IP头中的源IP地址、目的IP地址、标识和协议。
由上可知,本发明方法在对分片数据包的NAPT处理时,是直接对分片进行处理,无需重组分片,从而解决了在启用了NAPT技术的高性能网络设备中,为了对转发的TCP/IP分片数据包应用NAPT处理,而不得不对转发TCP/IP分片数据包进行分片重组所带来的性能急剧下降的问题,使得高性能网络设备中的NAPT处理模块能平滑地对所有的TCP/IP分片网络数据包进行NAPT处理,在保证网络设备的高转发性能的同时,提高了网络设备的业务支持范围。


图1是本发明实施例内部网络用户接入Internet的示意图。
图2是本发明实施例路由器处理TCP/IP数据包的流程图。
具体实施例方式
图1所示是本发明实施例某大型企业的内部网络用户接入Internet的示意图。该内部网络包括两个带有若干用户的子网,由于内部用户较多而可用的公网地址很少,为了将所有的内部用户接入Internet,在外出的路由器中启用了NAPT协议。由于企业的内部用户很多,用户使用的网络服务各不相同,因此,对路由器设备性能的要求较高,需要同时处理各种不同的应用。这样,路由器设备在进行NAPT处理时,不可避免的会遇到特定应用的分片数据包。
本实施例中,假定其中一个用户的IP地址为10.40.45.158,路由器可用的公网IP地址为110.168.1.50~110.168.1.52。该用户在上网过程中,其上某个使用源端口为2550的应用软件向Internet上的某主机发送超过其接口最大传输单元(MTU)的大型的TCP/IP数据包时,该用户的TCP/IP协议栈在收到用户发送的TCP/IP数据包后,需要根据发送接口的MTU进行分片处理,然后发送到连接Internet的路由器上。假定路由器已建立的内部用户的NAPT表项,即将“内部私网IP地址10.40.45.158和端口号2550”映射到“外部公网IP地址110.168.1.50和端口号3000”。这样,对访问外部Internet上主机的上行流,NAPT需要将源IP地址10.40.45.158和源端口号2550替换为外部公网IP地址110.168.1.50和端口号3000。对Intenet目标主机向内部该用户发回的下行TCP/IP响应包,需要进行反向操作,即将外部公网目的IP地址110.168.1.50和目的端口号3000的替换为目的私网的IP地址10.40.45.158和目的端口号2550。
在正常情况下,内部用户发送到Internet上的所有的TCP/IP分片数据包是依次通过路由器的,路由器在对TCP/IP数据包的第一分片进行正常的NAPT处理并建立相应NAPT表项的同时,可以提取能够唯一标识此数据包的标识符,建立起此数据包到所使用NAPT表项的映射。这样,收到此数据包的后续分片包时,便可通过提取标识符定位到所使用的NAPT表项(定位过程即是比较的过程,如果标识符相同或匹配,即可找到对应的映射表项),然后,使用此NAPT表项对此分片包进行NAPT处理,处理完成后,再发送到Internet上的目的主机,以解决后续分片不能完整地通过启用了NAPT的网络设备的问题。
考虑到在复杂的网络环境中,可能会因为路由器前网络中的其它网络设备的路由振荡引起TCP/IP分片失序到达路由器,使得路由器中的NAPT协议处理模块首先收到的分片TCP/IP数据包并非是该数据包的第一分片包,即不存在源端口号信息,因而无法建立起或定位到上述的NAPT表项。在这种情况下,对该分片包及收到的后续分片包(包括第一分片包),本实施例采用在本地对所有分片重组,再进行NAPT处理的现有方法处理,为了在收到后续分片时不再进入通过标识符建立或定位NAPT表项的流程,在处理首先收到的非第一分片包时,还要将其标识符与失序标记关联,并在处理后续分片包时进行判断。
本实施例使用了NAPT协议的路由器上收到TCP/IP数据包后的具体处理流程包括下述步骤,请参照图2步骤301路由器上的NAPT协议处理模块收到访问Internet的TCP/IP数据包;步骤302判断该TCP/IP数据包是否是TCP/IP分片数据包,如果是,执行步骤304,否则执行下一步;步骤303提取出该非分片TCP/IP数据包的源IP地址和源端口号,进行正常的NAPT处理后,结束。
步骤304从该分片数据包中提取能唯一标识该TCP/IP数据包中所有分片的标识符,该标识符内容可采用IP头中已有的内容,如源IP地址、目的IP地址、标识、协议等;步骤305根据提取的所述标识符查找是否有对该分片数据包做出的失序标记,如果是,执行步骤311,否则执行下一步;步骤306判断该分片数据包是否为TCP/IP数据包的第一分片,如果是,执行下一步,否则执行步骤308;步骤307建立该TCP/IP数据包所使用的NAPT表项,并记录提取的标识符与该NAPT表项的映射关系,进行正常NAPT处理后(此处需将源IP地址10.40.45.158和源端口号2550替换为外部公网IP地址110.168.1.50和端口号3000),结束。
步骤308根据提取的标识符定位到该TCP/IP数据包所使用的NAPT表项,如果定位成功,执行下一步,否则执行步骤310;步骤309使用该NAPT表项对该分片数据包进行NAPT处理,结束(由于该分片包不存在端口信息,所以只需要将私网源IP地址替换成相应的公网源IP地址)。
步骤310建立提取的标识符与失序标记的关联关系,即对该分片数据包做出失序标记;步骤311按现有的重组分片后再进行NAPT处理的方法处理该分片数据包,结束。
同样,对于外部Intenet主机向内部网络用户返回的TCP/IP分片数据包,也可以使用上述的流程处理,只是在建立NAPT表项时是将外部公网的目的地址和目的端口号映射到内部私网的目的地址和目的端口号。
上述流程可以作一些等同变化,如将提取标识符的步骤放到判断是否第一分片包的步骤之后进行,这些等同变化应在本发明的保护范围之内。
本发明在对分片数据包的NAPT处理时,是直接对分片进行处理,无需重组分片,因而不会降低设备的处理性能,可适用于各种采用NAPT技术的网络设备。本发明使得高性能网络设备中的NAPT处理模块能平滑地对所有的TCP/IP分片网络数据包进行NAPT处理,在保证网络设备的高转发性能的同时,提高了网络设备的业务支持范围。
权利要求
1.一种在网络地址端口映射中高速处理TCP/IP分片包的方法,其特征在于包括下述步骤(a).收到需要进行处理的TCP/IP分片包,提取能唯一标识该TCP/IP数据包中所有分片包的标识符;(b).判断收到的分片包是否是TCP/IP数据包的第一分片包,如果是,执行(c)步骤,否则,执行(d)步骤;(c).根据该第一分片包的IP地址和端口号,建立该TCP/IP数据包所使用的网络地址端口映射表项,并记录提取的标识符与该网络地址端口映射表项的对应关系,进行正常网络地址端口映射处理后,结束;(d).根据该标识符定位到该TCP/IP数据包所使用的网络地址端口映射表项;(e).使用该网络地址端口映射表项对该分片数据包进行网络地址端口映射处理,结束。
2.如权利要求1所述的在网络地址端口映射中高速处理TCP/IP分片包的方法,其特征在于所述的(a)步骤前还包括步骤判断收到的数据包是否为TCP/IP分片包,是则执行(a)步骤,不是则对该数据包进行正常的网络地址端口映射处理。
3.如权利要求1所述的在网络地址端口映射中高速处理TCP/IP分片包的方法,其特征在于所述的(a)步骤中,网络设备收到的TCP/IP分片包是从内部网络发送至公网的TCP/IP分片包,或是从公网发送至内部网络的TCP/IP分片包。
4.如权利要求1所述的在网络地址端口映射中高速处理TCP/IP分片包的方法,其特征在于还包括下述步骤在执行步骤(a)后,根据该标识符查找是否有对该TCP/IP数据包做出的失序标记,如果是,执行步骤(g),否则执行步骤(b);在执行(d)步骤时,如果定位失败,执行下述(f)和(g)步骤(f).建立提取的标识符与失序标记的关联关系;(g).按系统设定的对分片失序时的处理方法处理该分片数据包,结束。
5.如权利要求4所述的在网络地址端口映射中高速处理TCP/IP分片包的方法,其特征在于所述的(g)步骤中设定的对分片失序时的处理方法为重组分片后再进行网络地址端口映射处理。
6.如权利要求1所述的在网络地址端口映射中高速处理TCP/IP分片包的方法,其特征在于所述的标识符内容采用IP头中的源IP地址、目的IP地址、标识和协议。
7.如权利要求1所述的在网络地址端口映射中高速处理TCP/IP分片包的方法,其特征在于所述的(e)步骤对该分片数据包进行网络地址端口映射处理时只进行IP地址的替换。
全文摘要
本发明公开一种在网络地址端口映射中高速处理TCP/IP分片包的方法,包括下述步骤收到需要进行处理的TCP/IP分片包,提取能唯一标识该TCP/IP数据包中所有分片包的标识符;对TCP/IP数据包的第一分片包,根据该第一分片包的IP地址和端口号,建立该TCP/IP数据包所使用的NAPT表项,并记录该标识符与该NAPT表项的对应关系,然后进行正常的网络地址端口映射处理;对非第一分片包,根据该标识符定位到该TCP/IP数据包所使用的NAPT表项,并使用该表项对该分片数据包进行NAPT处理。采用本发明方法后,启用了NAPT技术的网络设备在支持对分片数据包进行NAPT处理的同时,不会降低设备的性能。
文档编号H04L12/28GK1585381SQ20041004258
公开日2005年2月23日 申请日期2004年5月25日 优先权日2004年5月25日
发明者赵真富, 王东, 吴钊军 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1