CN1585381A - 在网络地址端口映射中高速处理tcp/ip分片包的方法 - Google Patents
在网络地址端口映射中高速处理tcp/ip分片包的方法 Download PDFInfo
- Publication number
- CN1585381A CN1585381A CNA2004100425845A CN200410042584A CN1585381A CN 1585381 A CN1585381 A CN 1585381A CN A2004100425845 A CNA2004100425845 A CN A2004100425845A CN 200410042584 A CN200410042584 A CN 200410042584A CN 1585381 A CN1585381 A CN 1585381A
- Authority
- CN
- China
- Prior art keywords
- tcp
- packet
- fragment packets
- network address
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种在网络地址端口映射中高速处理TCP/IP分片包的方法,包括下述步骤:收到需要进行处理的TCP/IP分片包,提取能唯一标识该TCP/IP数据包中所有分片包的标识符;对TCP/IP数据包的第一分片包,根据该第一分片包的IP地址和端口号,建立该TCP/IP数据包所使用的NAPT表项,并记录该标识符与该NAPT表项的对应关系,然后进行正常的网络地址端口映射处理;对非第一分片包,根据该标识符定位到该TCP/IP数据包所使用的NAPT表项,并使用该表项对该分片数据包进行NAPT处理。采用本发明方法后,启用了NAPT技术的网络设备在支持对分片数据包进行NAPT处理的同时,不会降低设备的性能。
Description
技术领域
本发明涉及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处理,在保证网络设备的高转发性能的同时,提高了网络设备的业务支持范围。
Claims (7)
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地址的替换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100425845A CN1287571C (zh) | 2004-05-25 | 2004-05-25 | 在网络地址端口映射中高速处理tcp/ip分片包的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100425845A CN1287571C (zh) | 2004-05-25 | 2004-05-25 | 在网络地址端口映射中高速处理tcp/ip分片包的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1585381A true CN1585381A (zh) | 2005-02-23 |
CN1287571C CN1287571C (zh) | 2006-11-29 |
Family
ID=34601620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100425845A Expired - Fee Related CN1287571C (zh) | 2004-05-25 | 2004-05-25 | 在网络地址端口映射中高速处理tcp/ip分片包的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1287571C (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100420238C (zh) * | 2006-04-12 | 2008-09-17 | 华为技术有限公司 | 一种ip报文分片重组的方法 |
CN100448225C (zh) * | 2005-09-28 | 2008-12-31 | 北京大学 | 一种无需ip分片重组实现动态流分类的装置和方法 |
CN104869062A (zh) * | 2014-02-21 | 2015-08-26 | 华为技术有限公司 | 一种数据包转发方法及设备 |
-
2004
- 2004-05-25 CN CNB2004100425845A patent/CN1287571C/zh not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100448225C (zh) * | 2005-09-28 | 2008-12-31 | 北京大学 | 一种无需ip分片重组实现动态流分类的装置和方法 |
CN100420238C (zh) * | 2006-04-12 | 2008-09-17 | 华为技术有限公司 | 一种ip报文分片重组的方法 |
CN104869062A (zh) * | 2014-02-21 | 2015-08-26 | 华为技术有限公司 | 一种数据包转发方法及设备 |
WO2015124015A1 (zh) * | 2014-02-21 | 2015-08-27 | 华为技术有限公司 | 一种数据包转发方法及设备 |
CN104869062B (zh) * | 2014-02-21 | 2018-11-09 | 华为技术有限公司 | 一种数据包转发方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN1287571C (zh) | 2006-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1118167C (zh) | 在网络上用域名路由选择发送数据到目的端的系统和方法 | |
CN101087296B (zh) | 利用网络处理器实现IPv4/IPv6网络协议转换的方法 | |
CN1232080C (zh) | 网络中节省ip地址提供内部服务器的方法 | |
CN1739098A (zh) | 智能网络适配器的状态恢复及故障修复 | |
CN101047720A (zh) | 处理网络数据的方法和系统 | |
CN101123614B (zh) | 一种处理地址解析协议报文的方法及通信装置 | |
CN1333617A (zh) | 基于mac地址的通信限制方法 | |
US7012918B2 (en) | Direct data placement | |
CN1863133A (zh) | 报文转发方法及装置 | |
CN1863069A (zh) | 实现虚拟专用局域网服务业务快速切换的方法 | |
CN102035751A (zh) | 一种数据的传输方法和设备 | |
CN1925452A (zh) | 数据转发系统、方法以及网络转发设备 | |
CN100338923C (zh) | 基于网络处理器实现ip报文分片重组的方法 | |
US11108671B2 (en) | Systems and methods for processing network traffic using dynamic memory | |
US20090257450A1 (en) | Multi-stream communication processing | |
CN1287571C (zh) | 在网络地址端口映射中高速处理tcp/ip分片包的方法 | |
CN1992675A (zh) | 一种保证网络地址转换设备与外网互通的方法 | |
CN101039234A (zh) | 一种分布式dhcp中继的实现方法 | |
CN1271833C (zh) | 无需ip重组分发分组的装置和方法 | |
CN1777148A (zh) | 一种路由表下一跳ip地址到mac地址解析方法 | |
CN1960316A (zh) | 分片报文的网络地址转换方法 | |
CN1645832A (zh) | Wcdma系统中建立特殊操作维护通道的方法 | |
CN1697445A (zh) | 一种实现虚拟私有网络中数据传输的方法 | |
CN1210914C (zh) | 以太网交换机堆叠加速处理方法 | |
US7272139B2 (en) | Fast path routing in a large-scale virtual server computing environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20061129 Termination date: 20140525 |