CN1585401A - 对分片报文进行网络地址转换的方法 - Google Patents
对分片报文进行网络地址转换的方法 Download PDFInfo
- Publication number
- CN1585401A CN1585401A CN 03153685 CN03153685A CN1585401A CN 1585401 A CN1585401 A CN 1585401A CN 03153685 CN03153685 CN 03153685 CN 03153685 A CN03153685 A CN 03153685A CN 1585401 A CN1585401 A CN 1585401A
- Authority
- CN
- China
- Prior art keywords
- message
- fragment
- list item
- follow
- address
- 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.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种对分片报文进行网络地址转换的方法,包括如下步骤:当有分片报文到来时,对首片分片报文创建NAT表项;对后续分片进行NAT查表;对查表不成功的后续分片进行缓存;和对查表成功的后续分片进行NAT处理。根据本发明的方法,能够有效地解决现有的网络设备不支持对分片报文进行NAT处理的问题。
Description
发明领域
本发明涉及IP(网际协议)网络的数据传输,特别涉及对网络中传输的分片报文进行网络地址转换的方法。
背景技术
网络地址转换(NAT)是一种有效解决Internet(因特网)地址短缺的方案。NAT对报文中地址和端口号等信息进行处理,从而达到一个IP地址供多个用户使用的目的。
所谓分片报文是指在物理层会限制通过的每个数据帧的最大长度。当IP(网际协议)层收到一个IP报文需要发送时,它要查询出接口的MTU(最大传输单元)的值,并将MTU与数据报文的长度相比较,如果报文长度超过MTU则需要对该IP报文分片。图1给出了一个对UDP(用户数据报协议)报文进行分片的例子。
图2是IP数据报文的格式。从图2中所示的IP首部的20字节中可以看出,每一个IP报文都有一个唯一的“16位标识”值,当报文分片时,将这个标识值复制到每个报文片中。“3位标志”包含一个“不可分片”(DF)位和一个“更多的片”(MF)位。而“13位片偏移”表示当前分片与原始数据报文起始位置的距离。
对报文进行NAT处理时总要针对首包创建一个NAT表项,对后续报文就根据该表项内容对报文内容进行处理。对普通报文进行NAT时,只需要将其报文内的IP地址和端口号替换掉即可。从NAT的角度来说,分片报文与普通报文相比存在以下特点:
1、除了首个分片可能存在四层(传输层)的端口号外,后续分片并不存在这个信息,而只是通过分片报文的16位IP标识来区分。不同报文的IP标识不会相同;
2、相同IP地址和端口号的两个普通报文之间间隔时间一般较长,而分片报文到来的速度很快,经常是连续地到来多个相同IP地址和标识的分片报文;
3、普通报文丢失一个重传即可,而分片报文丢失一片会造成整个报文(多个分片报文)的重传。
对如TCP(传输控制协议)报文、UDP报文等普通报文来说,首包与后续报文的发送间隔较长。而分片一般是连续到来的,特别是由网络设备分片时,报文基本上可以看作是同时到达,这时对分片报文进行NAT处理就存在一定困难。现有的网络设备并没有实现分片报文的网络地址转换功能。
发明内容
针对现有技术所存在的上述缺陷,本发明提出了一种对分片报文进行网络地址转换的方法。使得网络设备能够支持对分片报文的NAT转换。
为了实现本发明的上述目的,本发明的对分片报文进行网络地址转换的方法包括:1)当有分片报文到来时,对首片报文创建该分片报文的NAT表项;2)对后续分片进行NAT表查找;3)对查表不成功的后续分片进行缓存;和4)对查表成功的后续分片进行NAT处理,并发送。
在本发明的一个实施方案中,所述网络地址转换的方法是采用网络处理器和主机来实现的,其中所述网络处理器用于进行网络报文转发和IP地址/端口号替换,所述主机用于对所述网络处理器进行管理和表项的维护。
在本发明的又一个实施方案中,上述方法的步骤1)进一步包括:1-1)判断到来的报文是正向报文还是反向报文;1-2)判断该报文是否为首片报文;1-3)对首片报文,进行NAT表的查找;1-4)如果查表成功,则创建该分片报文的NAT表项;1-5)如果查表失败,则创建普通报文的NAT表项。
在本发明的上述实施方案中,根据所述报文中的用户源IP地址来进行步骤1-1)的判断,如果所述报文中的用户源IP地址为进行网络地址转换的设备所定义的私网地址,则为正向报文,否则为反向报文。
在本发明的又一实施方案中,在上述步骤1-3)中,用源IP地址+四层端口号对首片报文进行NAT表项的查找。
在本发明的又一实施方案中,上述步骤2)包括:用后续分片报文的源IP地址+IP标识对后续分片进行NAT表项的查找。
在本发明的一个实施方案中,上述方法的步骤3)包括:3-1)如果对后续分片报文查表失败,则判断当前分片报文是否已经被缓存;3-2)如果当前分片报文已被缓存,则丢弃该报文;和3-3)如果当前分片报文未被缓存,则将该报文缓存。
在上述方案中,所述缓存步骤包括:3-3-1)将所述分片报文直接送至所述主机;3-3-2)所述主机在收到所述分片报文后,根据所述网络处理器提供的信息判断该报文为需要缓存的后续分片报文,对其不作任何处理,直接将该报文又下发给所述网络处理器。并且,对每一个所述缓存的分片报文,如果执行一次所述缓存操作后仍查表失败,则丢弃该报文。
在本发明的一个实施方案中,上述方法进一步包括:5)判断后续分片报文是否是尾片报文,如是尾片报文则将该分片报文对应的NAT表项删除。
此外,对于反向报文,对于反向报文,用报文的目的IP地址+端口号进行NAT表项的查找;在首片查表失败时,直接将该分片报文及其后续分片报文丢弃。
根据本发明的方法,能够有效地解决现有的网络设备不支持对分片报文进行NAT处理的问题。
附图说明
通过详细文字说明并结合以下附图,本发明的上述目的、特征及优点将变得更加易于理解,其中:
图1是说明对UDP报文进行分片的一个例子的示意图;
图2是IP数据报文格式的示意图;
图3是说明根据本发明一实施方案对分片报文进行NAT处理的流程图。
具体实施方式
下面结合附图说明本发明的优选实施方案。
为了能够实现对分片报文进行NAT处理,需要针对分片报文区别于普通报文的特点来进行设计,具体地说,本发明的方法考虑到以下几个方面:
1、尽量不丢失一个分片;
2、根据IP地址+IP标识来区分不同的分片报文;
3、分片首片到来后,后续分片很快到来,这时可能NAT表项还没有建好,需要设法将到来的各分片缓存;
4、当报文的分片全部发送出去后,分片报文的NAT表项就不再有用,这时需要及时将该NAT表项删除。
综合以上考虑,本发明的对分片报文进行网络地址转换的方法在硬件结构上采用了网络处理器(NP)+主机的架构。可以将NP和主机分别看作是***的底层和上层。NP是一种专门进行网络报文转发和IP地址/端口号替换的处理器。主机则在另一个处理器(这个处理器更为通用一些,类似于计算机上的CPU)上,负责NP的管理、表项(如NAT表、路由表)的维护以及处理一些比较复杂的报文。这两部分装置与功能本身都是现有技术,因此在本说明书中不再对其进行赘述。
对NP来说,最重要的是处理速度,而那些复杂操作,如表项的创建与删除,会影响到它的处理速度,所以,需要由主机进行处理。其中NP负责报文的IP地址替换和转发,主机负责NAT表项的维护。NAT表中存放了IP报文转换前后的地址、端口号等信息。对每一个进行NAT转发的普通IP报文来说,它对应了两个表项:正向和反向。
对正向报文和反向报文的判断是根据用户的源IP地址来进行的。如果用户的源IP地址为设备所定义的私网地址,则为正向报文;反之则为反向。
正向表项供正向报文使用。其中存放的是转换后的IP地址和端口号,而查表的索引是报文的源IP地址+端口号;反向表项供反向报文使用。其中存放的是转换前的私网IP地址和端口号,查表的索引是报文的目的IP地址+端口号。
对于分片报文来说,只有一个方向上的表项。表项中存放的是转换后的IP地址,查表的索引是IP地址+IP标识。这里的IP标识指的是图2中所示的IP报文头中的“16位标识”,也就是说它是三层(IP)报文头中的信息;而端口号是四层(TCP、UDP等)报文头中的信息。
例如,地址为10.0.0.1,端口为1024的TCP报文转换为IP地址为61.150.20.3、端口为4096的报文,其表项内容如下表。实际上表项内容还有其他一些信息,这里只举出正向表项与反向表项的示例,其它内容与此处的描述无关,故此省略。
查表索引 | 表项内容 | |
正向表项 | 10.0.0.1+1024 | 61.150.20.3+4096 |
反向表项 | 61.150.20.3+4096 | 10.0.0.1+1024 |
图3显示了根据本发明一实施方案的正向NAT报文(从私网→公共网的报文)的处理流程。
如图3所示,当有分片报文到来时,由NP首先判断到来的分片报文是否为首片(根据该报文首部的片偏移是否为0来判定)。
如果是分片报文中的首片报文,则使用源IP地址+四层端口号作为查表的Key(索引),进行NAT表的查找。如果查表成功,则向主机发送控制消息。该控制消息中包含报文的源IP地址、协议号、IP标识和转换后的IP地址等内容,以通知主机创建该分片报文的分片NAT表项,以IP地址+IP标识作为索引查找。为该首片创建的分片NAT表项还供后续分片报文转换地址时使用。如果查表失败,则与对普通报文首包的处理相同,向主机发送消息,创建普通的IP报文NAT表项:以IP地址+四层端口号作为索引来进行查找。
如果分片报文是后续分片,则使用源IP地址+IP标识作为Key进行查表。如果查表成功,则根据查表结果将源IP地址替换为所查到的NAT表中的变换后地址,然后将该分片报文发送出去。如果此片是分片的尾片,则需要请求主机将分片NAT表项删除。在本发明的实施例中,是根据前文所述的在IP报文首部中的一位分片标识MF(意为More Fragment即“更多的分片”)来判断分片报文的尾片的。如果判断一分片报文的MF标识位值为0,则表明不再有后续分片,该分片报文即为尾片。如果查表失败,说明分片表项还没有创建成功,此时判断当前分片是否已经被主机缓存。如果已被缓存,则丢弃该报文,否则将该报文传送至主机进行缓存。
将第一次查表没有查到的后续分片传送到主机进行缓存的原因是,由于分片报文到来的速度很快,后续分片到来时,可能分片表项还没有建好。而将分片报文传送至主机中缓存,待分片表项已经建好,再由主机将缓存的报文下发给NP,并将该报文发送出去,这样就避免了分片速度太快而造成的分片丢失问题。
这里,“缓存”实际上是指将这个没有查到表的后续分片报文送到主机空转一个来回。其具体过程是,当NP没有查到后续分片报文的表项时,即将该分片报文直接送至主机。主机在收到该分片报文后,根据NP提供的信息判断该报文为需要缓存的后续分片报文,对其不作任何处理,直接将该报文又下发给NP。由于分片首片先于后续分片上送,在主机上也先于后续分片处理。所以当后续分片再次回到NP时,分片表项已经创建完毕。此时即可正常转发出去。
如果缓存后的后续分片仍然没有查到表项,有可能分片表项创建不成功,如果再次上送缓存,则可能造成报文不断循环,导致异常。所以缓存后的分片查不到表项即丢弃。因此,对于未查到表项的分片报文,按照上述过程只空转一回,以防止出现异常。
在上述过程中,当判断到来的分片报文是分片尾片时,向主机发送请求以删除当前的分片NAT表项消息。这是因为此时该分片NAT表项所对应的分片报文已经传输结束,该NAT表项不再有用。从而避免浪费表项空间。
对于反向报文(即从公共网→私网的报文)来说,与上述正向报文的NAT处理过程类似。只是在首片查表失败时不再报告给主机,而是直接将该分片报文丢弃。这是因为,NAT应用本身主要有两个目的:1、节省IP地址;2、通过防止外部网络主动发起对内部网络的访问来提高内部网络的安全。不管哪个目的,都不会允许公共网主动发起对私网的访问。对于第一种目的不允许公共网主动发起对私网的访问的原因是,当存在很多不同私网的用户使用相同的私网IP地址时,如果公网用户直接访问某个私网IP地址的话,则网络上的路由器无法知道要去访问的是哪个私网。
因此,当反向报文首片没有查到NAT表项时,说明该链接是由公网用户主动发起的,自然被丢弃。后续分片也会被丢弃。如果反向报文首片查到NAT表项时,对于其后续分片报文,用该后续分片报文的目的IP地址+IP标识对判断为其进行NAT表项的查找。
以上对本发明各种实施方案的描述只是为了使本领域技术人员更好地理解本发明的实质,而非对本发明加以限定。因此,不偏离本发明思想的对本发明技术方案的各种改型将落入本发明权利要求所限定的范围内。
Claims (11)
1.对分片报文进行网络地址转换(NAT)的方法,其特征在于包括如下步骤:
1)当有分片报文到来时,对首片分片报文创建NAT表项;
2)对后续分片进行NAT表项的查找;
3)对查表不成功的后续分片进行缓存;和
4)对查表成功的后续分片进行NAT处理。
2.根据权利要求1所述的方法,其特征在于,所述网络地址转换是采用网络处理器和主机来实现的,其中所述网络处理器用于进行网络报文转发和IP地址/端口号替换,所述主机用于对所述网络处理器进行管理和表项的维护。
3.根据权利要求2所述的方法,其特征在于,所述步骤1)进一步包括:
1-1)判断到来的报文是正向报文还是反向报文;
1-2)判断该报文是否为首片报文;
1-3)对首片报文,进行NAT表项的查找;
1-4)如果查表成功,则创建该分片报文的NAT表项;
1-5)如果查表失败,则创建普通报文的NAT表项。
4.根据权利要求3所述的方法,其特征在于,根据所述报文中的用户源IP地址来进行步骤1-1)的判断,如果所述报文中的用户源IP地址为进行网络地址转换的设备所定义的私网地址,则为正向报文,否则为反向报文。
5.根据权利要求3所述的方法,其特征在于,所述步骤1-3)中,用源IP地址+四层端口号对判断为正向报文的首片报文进行NAT表项的查找;用目的IP地址+端口号对判断为反向报文的首片报文进行NAT表项的查找。
6.根据权利要求5所述的方法,其特征在于,所述反向报文在首片报文查表失败时,直接将该分片报文及其后续分片报文丢弃。
7.根据权利要求3所述的方法,其特征在于,所述步骤2)包括:用后续分片报文的源IP地址+IP标识对判断为正向报文的后续分片进行NAT表项的查找;用后续分片报文的目的IP地址+IP标识对判断为反向报文的后续分片进行NAT表项的查找。
8.根据权利要求2所述的方法,其特征在于,所述步骤3)包括:
3-1)如果对后续分片报文查表失败,则判断当前分片报文是否已经被缓存;
3-2)如果当前分片报文已被缓存,则丢弃该报文;和
3-3)如果当前分片报文未被缓存,则将该报文缓存。
9.根据权利要求8所述的方法,其特征在于,所述缓存步骤包括:
3-3-1)将所述分片报文直接送至所述主机;
3-3-2)所述主机在收到所述分片报文后,根据所述网络处理器提供的信息判断该报文为需要缓存的后续分片报文,对其不作任何处理,直接将该报文又下发给所述网络处理器。
10.根据权利要求9所述的方法,其特征在于,对每一个所述缓存的分片报文,如果执行一次所述缓存操作后仍查表失败,则丢弃该报文。
11.根据前述权利要求任一项所述的方法,其特征在于进一步包括:
5)判断所述后续分片报文是否是尾片报文,如是尾片报文则将该分片报文对应的NAT表项删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 03153685 CN1585401A (zh) | 2003-08-21 | 2003-08-21 | 对分片报文进行网络地址转换的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 03153685 CN1585401A (zh) | 2003-08-21 | 2003-08-21 | 对分片报文进行网络地址转换的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1585401A true CN1585401A (zh) | 2005-02-23 |
Family
ID=34597805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 03153685 Pending CN1585401A (zh) | 2003-08-21 | 2003-08-21 | 对分片报文进行网络地址转换的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1585401A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008067738A1 (fr) * | 2006-12-04 | 2008-06-12 | Huawei Technologies Co., Ltd. | Procédé de transfert de message de fragmentation, système de communication et dispositif de tunnel |
CN1863158B (zh) * | 2005-10-31 | 2010-04-21 | 华为技术有限公司 | 一种ip报文分片缓存及转发方法 |
CN101567852B (zh) * | 2009-05-20 | 2011-08-24 | 中兴通讯股份有限公司 | Ip报文网络地址转换的方法及装置 |
CN1909507B (zh) * | 2006-07-04 | 2012-03-21 | 华为技术有限公司 | 一种报文转发方法和*** |
CN101605105B (zh) * | 2009-07-14 | 2012-05-09 | 中兴通讯股份有限公司 | 一种对分片报文进行网络地址转换的方法及设备 |
CN105162901A (zh) * | 2015-09-30 | 2015-12-16 | 北京特立信电子技术股份有限公司 | 一种基于sopc的nat的实现方法及装置 |
CN109450814A (zh) * | 2018-11-26 | 2019-03-08 | 锐捷网络股份有限公司 | 分片报文的转发方法及装置 |
CN109525518A (zh) * | 2018-12-25 | 2019-03-26 | 北京物芯科技有限责任公司 | 一种基于fpga的ip报文网络地址转换方法及装置 |
CN109618020A (zh) * | 2018-12-25 | 2019-04-12 | 北京物芯科技有限责任公司 | 一种分片报文的网络地址转换方法及装置 |
CN117097678A (zh) * | 2023-10-20 | 2023-11-21 | 深圳华云信息***科技股份有限公司 | 分片报文的流式转发方法、装置、设备和存储介质 |
-
2003
- 2003-08-21 CN CN 03153685 patent/CN1585401A/zh active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1863158B (zh) * | 2005-10-31 | 2010-04-21 | 华为技术有限公司 | 一种ip报文分片缓存及转发方法 |
CN1909507B (zh) * | 2006-07-04 | 2012-03-21 | 华为技术有限公司 | 一种报文转发方法和*** |
WO2008067738A1 (fr) * | 2006-12-04 | 2008-06-12 | Huawei Technologies Co., Ltd. | Procédé de transfert de message de fragmentation, système de communication et dispositif de tunnel |
CN101567852B (zh) * | 2009-05-20 | 2011-08-24 | 中兴通讯股份有限公司 | Ip报文网络地址转换的方法及装置 |
CN101605105B (zh) * | 2009-07-14 | 2012-05-09 | 中兴通讯股份有限公司 | 一种对分片报文进行网络地址转换的方法及设备 |
WO2017054429A1 (zh) * | 2015-09-30 | 2017-04-06 | 北京特立信电子技术股份有限公司 | 一种基于sopc的nat的实现方法及装置 |
CN105162901A (zh) * | 2015-09-30 | 2015-12-16 | 北京特立信电子技术股份有限公司 | 一种基于sopc的nat的实现方法及装置 |
CN105162901B (zh) * | 2015-09-30 | 2019-05-14 | 北京特立信电子技术股份有限公司 | 一种基于sopc的nat的实现方法及装置 |
CN109450814A (zh) * | 2018-11-26 | 2019-03-08 | 锐捷网络股份有限公司 | 分片报文的转发方法及装置 |
CN109525518A (zh) * | 2018-12-25 | 2019-03-26 | 北京物芯科技有限责任公司 | 一种基于fpga的ip报文网络地址转换方法及装置 |
CN109618020A (zh) * | 2018-12-25 | 2019-04-12 | 北京物芯科技有限责任公司 | 一种分片报文的网络地址转换方法及装置 |
CN109525518B (zh) * | 2018-12-25 | 2021-01-12 | 北京物芯科技有限责任公司 | 一种基于fpga的ip报文网络地址转换方法及装置 |
CN117097678A (zh) * | 2023-10-20 | 2023-11-21 | 深圳华云信息***科技股份有限公司 | 分片报文的流式转发方法、装置、设备和存储介质 |
CN117097678B (zh) * | 2023-10-20 | 2024-01-26 | 深圳华云信息***科技股份有限公司 | 分片报文的流式转发方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2005312895B2 (en) | Bidirectional data transfer optimization and content control for networks | |
CN1251446C (zh) | 一种防御网络传输控制协议同步报文泛滥攻击的方法 | |
CN1158615C (zh) | 对流媒体服务器实现负载均衡的方法和设备 | |
CN101136926B (zh) | 非对称路由情况下的报文转发方法及网络地址转换网关 | |
US7461128B2 (en) | Method, apparatus and system for processing message bundles on a network | |
US20160182680A1 (en) | Interest acknowledgements for information centric networking | |
CN1255975C (zh) | 在路由设备中为分组选择路由的方法 | |
US20170111389A1 (en) | Method and system for protecting domain name system servers against distributed denial of service attacks | |
CN1585401A (zh) | 对分片报文进行网络地址转换的方法 | |
CN1846409A (zh) | 用于基于传输控制协议话务流特征进行超高速缓存查找的设备和方法 | |
US8539041B2 (en) | Method, apparatus, and network system for acquiring content | |
CN1761244A (zh) | 设置边界网关协议路由选择通知功能的方法 | |
CN103873602A (zh) | 一种网络资源命名方法与生成装置 | |
CN1863158A (zh) | 一种ip报文分片缓存及转发方法 | |
CN107888710A (zh) | 一种报文转发方法及装置 | |
CN1852253A (zh) | 一种arp报文处理方法 | |
CN1777148A (zh) | 一种路由表下一跳ip地址到mac地址解析方法 | |
CN101047580A (zh) | 创建点对点数据通道的方法 | |
CN1741473A (zh) | 一种网络数据包有效性判定方法及*** | |
CN1863152A (zh) | 内网用户之间传递各种报文的方法 | |
CN1567900A (zh) | 一种在路由设备中实现报文转发控制的方法 | |
EP2178270B1 (en) | Methods and apparatuses for using a cache of outgoing packet identifiers to recover from a protocol error in GTP-u | |
KR20110044273A (ko) | 메시지 라우팅 플랫폼 | |
JP2014507817A (ja) | 通信装置、パケット再送制御方法、パケット再送制御プログラム | |
CN1161931C (zh) | 无线三层隧道备份与负担分担方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |