CN1260920C - 实现网络地址转换的方法 - Google Patents
实现网络地址转换的方法 Download PDFInfo
- Publication number
- CN1260920C CN1260920C CN 02158304 CN02158304A CN1260920C CN 1260920 C CN1260920 C CN 1260920C CN 02158304 CN02158304 CN 02158304 CN 02158304 A CN02158304 A CN 02158304A CN 1260920 C CN1260920 C CN 1260920C
- Authority
- CN
- China
- Prior art keywords
- message
- address information
- address
- network
- network 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明涉及一种实现网络地址转换的方法。该方法是将进行网络地址转换所需要进行的各项工作进行合理分工,并分别由C5网络处理器中的CPRC和SDP完成,即在CPRC模块中确定报文中需要转换的地址信息、计算需要转换的地址信息的差值,并查表确定转换后的地址信息,在SDP模块中则进行报文转换后的地址信息的校验和值的计算、报文的地址信息的转换,并将报文转发出去。本发明可以提高网络地址转换的效率,为网络通信系统中基于网络地址转换的报文的线速转发提供了基础。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种实现网络地址转换的方法。
背景技术
NAT(网络地址转换)分成两种:一种是纯粹的IP(互联网协议)地址转换,私网IP地址和公网IP地址是一一对应关系,主要用途是隔离私网和外部的公网用户。另一种是基于IP地址和四层协议端口号绑定的NAPT(网络地址端口变换)技术,主要用于解决IP地址不够用的问题,利用NAPT可以实现私网到公网的多对一的地址变换。
现有的NAT应用主要是NAPT技术的应用,NAPT的提出是为了解决公网IP地址不足的问题,通过把四层的端口号和IP地址绑定,可以用很少的外部公网IP地址实现大量的本地私网IP地址和外部连接,且NAPT过程对外部主机是完全透明的。NAPT将私网IP地址变换成分配给该子网的公网IP地址,同时把该公网IP对应的报文的4层一个端口号分配给这个会话,以区分使用同一个IP地址的不同会话和连接。
目前,实现NAPT的方法主要有两种:一种是在网络设备的CPU上实现的纯软件算法,该方法速度很慢,而且当NAT(网络地址转换)表的表项数较大时,软件的查表性能将大幅下降,从而导致对报文转发性能急剧下降;另一种是基于网络处理器的软件算法,这种算法利用网络处理器的强大计算能力和查表能力,用软件实现NAT,所采用的网络处理器为IXP1200网络处理器,IXP1200是第一代的网络处理器,所以其存在一些固有的缺陷导致对NAPT处理时效率低下,IXP1200所存在的缺陷包括:一方面网络处理器内部没有硬件查表单元,所有查表操作都是由软件完成,对于需要大量查表操作的NAPT变换同样力不从心;另一方面网络处理器内部没有用于字节流处理的专用硬件,所以对于需要大量字节变换处理的操作效率低下;而且网络处理器内部共享总线,所以数据存取能力有限,因此,基于IXP1200实现的NAPT同样性能较低,无法适应日益发展的网络通信系统的性能要求。
综上所述,现有技术所述的两种网络地址转换方法均因为技术本身所存在的缺陷,使其在应用中普遍存在转发性能不高,且在用户数增加时转发性能下降的问题。
发明内容
本发明的目的是提供一种网络地址转换的方法,以提高基于网络地址转换的网络通信中数据转发的性能,保证网络通信中用户数增加的情况下数据转发性能稳定。
本发明的目的是这样实现的:一种实现网络地址转换的方法,包括:
a、基于硬件的查表引擎模块查找确定报文进行网络地址转换后的新的地址信息:
b、基于硬件的查表引擎模块计算地址信息转换前后的地址信息的差值,并将该差值和报文进行网络地址转换后的地址信息暂存:
c、基于字节的数据处理模块将原报文中的地址信息转换为基于硬件的查表引擎模块暂存的地址信息;
d、基于字节的数据处理模块根据暂存的地址信息和暂存的转换前后的地址信息的差值,计算确定地址信息转换后的报文的新的地址信息校验和值,并将报文中的原地址信息校验和值转换为新的地址信息校验和值。
所述的基于硬件的查表引擎模块采用的是C5网络处理器的CPRC(通道处理器代码执行单元)模块,所述的基于字节的数据处理模块采用的是C5网络处理器的SDP(串行数据处理器)模块,且CPRC模块与SDP模块间通过合并空间进行数据信息的交互共享。
步骤b所述的将报文进行网络地址转换后的地址信息暂存,包括:
b1、由CPRC模块判断需要进行网络地址转换的报文是否为需要转换源地址信息,如果是,执行步骤b2,否则,执行步骤b3;
b2、根据报文的源地址信息查找确定网络地址转换后的新的源地址信息,并将新的源地址信息和报文原来的目的地址信息作为报文进行网络地址转换后的地址信息暂存于合并空间中,执行步骤c;
b3、根据报文的目的地址信息查找确定网络地址转换后的新的目的地址信息,并将新的目的地址信息和报文原来的源地址信息作为报文进行网络地址转换后的地址信息暂存于合并空间中,执行步骤c。
所述的步骤c为:由SDP模块确定需要进行NAT(网络地址转换)的报文,并将需要进行NAT的报文的源IP(互联网协议)地址和目的IP地址转换为合并空间中的源IP地址和目的IP地址,将报文的源IP地址对应的四层协议端口号或封装在IP协议中的用于标识一个流的编号和目的IP地址对应的四层协议端口号或封装在IP协议中的用于标识一个流的编号转换为合并空间中保存的源端口号或编号和目的端口号或编号。
所述的步骤d包括:
d1、根据暂存的IP地址转换前后的差值,计算确定进行NAT后的报文的新的IP地址校验和值,
d2、确定进行NAT的报文传输层所采用的协议,并根据所采用的协议及转换前后的端口号的差值进行报文端口号的校验和值的计算;
d3、由SDP模块将报文中的原IP地址校验和值转换为新的IP地址校验和值,将报文中的原端口号校验和值转换为新的端口号校验和值。
所述的步骤d3还包括:由SDP模块将完成网络地址转换的报文转发出去。
由上述技术方案可以看出,本发明将进行网络地址转换所需要进行的各项工作进行合理分工,并分别由C5(及后续发展型号)网络处理器中的CPRC和SDP完成,从而提高的网络地址转换的效率,实现了网络地址转换的快速进行,为网络通信系统中基于网络地址转换的报文的线速转发提供了基础,即本发明的实施可以大大提高基于网络地址转换的网络通信中数据转发的性能。
附图说明
图1为C5网络处理器的CP结构示意图;
图2为本发明中网络地址转换过程流程图;
图3为进行NAPT时计算地址信息校验和值的流程图。
具体实施方式
本发明所述的网络地址转换的实现方法的核心思想是将进行网络地址转换所需要完成的各项工作进行合理的分工,再分别由不同的处理模块处理完成,从而以较低的成本实现网络地址的快速转换,解决了NAT转发性能不高的问题。
本发明的实现可以采用硬件设备C5网络处理器,该处理器是MOTOROLA(摩托罗拉)公司的用于网络协议处理和报文转发的高速网络处理器,C5网络处理器中集成有高速的硬件查表引擎CPRC模块和基于字节的串行报文处理引擎SDP模块,本发明正是利用C5网络处理器的这一特点,设计了一种网络地址转换方法,实现NAT的高速转发,从而使连接数量的改变而影响网络设备的转发性能;当然本发明的实现也可以采用其它与C5网络处理器功能作用类似的硬件设备,如C5网络处理器的后续发展型号。
CPRC模块和SDP是C5网络处理器报文基本处理单元所包含的两个部分,如图1所示,其中:CPRC模块是基于MIPS(精简指令集的CPU内核体系)内核的RISC(精简指令集CPU)核,用于高层协议处理;SDP模块是基于硬件字节处理引擎,使用微码处理字节流,微码的主要作用是控制SDP模块中的专用硬件和VLIW(超长指令字)的微引擎,使之能够逐字节的处理报文的报文头部信息,并完成相应的报文修改工作,CPRC模块和SDP模块之间通过合并空间通信,即合并空间是CPRC和SDP之间交换信息用的共享存储空间,本发明中即应用了C5网络处理器的下行部分的SDP模块和CPRC模块进行报文的NAT处理。
下面结合C5网络处理器的结构及其功能作用对本发明所述的实现网络地址转换的方法作进一步的描述,参见图2,具体包括:
步骤1:由C5网络处理器的CPRC模块确定需要转换的报文地址信息;对于NAPT(网络地址端口变换)及NAT首先需要根据报文的去向确定需要转换的地址信息,即确定源地址信息进行转换,还是目的地址信息需要转换;
步骤2:根据该地址信息查找NAT表确定转换后的新的地址信息;
需要转换的地址信息确定下来之后,则根据该地址信息查找NAT表得到变换后的IP地址和端口号,且该操作仍然由CPRC模块完成;
步骤3:CPRC模块计算转换前后的地址信息的差值,并将获得的差值,以及步骤2获得的新的源地址信息或目的地址信息和原报文中的目的地址信息或源地址信息暂存于合并空间中,等待SDP共享使用该差值数据;
如果确定需要转换报文的源地址信息,则计算转换前的源地址信息和通过查表确定的新的源地址信息的差值,同时将查找NAT表获得的新的源地址信息和原报文中的目的地址信息暂存于合并空间中,如转换前报文的源地址为202.168.100.8,目的地址为192.160.123.5,且由步骤1和步骤2确定需要将报文的源地址转换成新的地址:197.146.111.9,则保存在合并空间中的地址信息分别为源地址197.146.111.9和目的地址192.160.123.5,这样在SDP模块进行地址转换时无需考虑转换源地址信息还是目的地址信息,只需将报文的源地址信息和目的地址信息分别转换成合并空间中保存的源地址信息和目的地址信息即可,即SDP模块直接将报文的源地址和目的地址分别转换为源地址197.146.111.9、目的地址192.160.123.5;
如果确定需要转换报文的目的地址信息,则计算转换前的目的地址信息和通过查表确定的新的目的地址信息的差值,同时将查找NAT表获得的新的目的地址信息和报文的源地址信息暂存于合并空间中,以方便SDP模块进行地址信息转换,地址信息差值的计算方法由RFC1071标准规定;
对于NAT仅需要计算转换前后IP(互联网协议)地址的差值即可,而对于NAPT则因为NAPT变换需要对IP头的IP地址和TCP头的端口号进行修改,且IP头和TCP/UDP头都有校验和,所以对IP头和TCP/UDP(传输控制协议/数据报协议)头的修改以后必须重新计算相应的三层和四层的校验和,这就需要分别计算3层和4层的转换前后的差值,即分别计算转换前后IP地址的差值和转换前后端口的差值,然后将计算获得的差值写入合并空间,以方便SDP模块进行新的校验和计算使用;
由于SDP模块只能进行8位运算,如果SDP对3层和4层的转换前后差值进行计算将会耗费大量的时间,所以本发明中采用了差值的计算由CPRC模块完成,节省时间,以提高整个转换过程的效率;
步骤4:SDP模块确定需要进行NAT或NAPT的报文,根据步骤2保存于合并空间中的报文的源地址信息和目的地址信息,进行报文的NAT或NAPT,即进行报文的源IP地址和目的IP地址的转换;
对于需要进行NAT的报文,只需要进行IP地址的转换;对于需要进行NAPT的报文,则还需要将报文的源IP地址对应的四层协议端口号或封装在IP协议中的用于标识一个流的编号和目的IP地址对应的四层协议端口号或封装在IP协议中的用于标识一个流的编号转换为合并空间中保存的源端口号或编号和目的端口号或编号;
步骤5:SDP模块确定报文所采用的传输层协议,并根据合并空间中的地址信息差值计算新的校验和值,新的校验和值的计算方法由RFC1071标准规定;
SDP模块对CheckSum(校验和)的计算包括:如果是NAT则仅计算新的IP地址的校验和值,如果是NAPT则需要分别计算新的IP地址的校验和值和新的端口号的校验和值;
对于NAPT的校验和值的计算方法进一步骤包括:
步骤51:SDP模块读取合并空间中暂存的由CPRC计算出的转换前后的IP地址差值;
步骤52:读取需要进行NAPT的报文转换前IP地址的校验和值;
步骤53:根据步骤51从合并空间读取的IP地址差值和步骤52读取的转换前IP地址的校验和值计算新的IP地址校验和值,即计算进行NAPT所需要的转换后的IP地址的校验和值,计算的方法由RFC1071标准规定;
步骤54:继续由SDP模块从合并空间读取由CPRC计算出的转换前后的端口号差值,该端口号差值根据所需要进行NAPT的报文所采用的四层协议类型,可以为TCP端口号差值、UDP端口号差值或ICMP(互联网控制报文协议)端口号差值;
步骤55:读取需要进行NAPT的报文中转换前的端口号校验和值;
步骤56:根据步骤54从合并空间读取的的端口号差值和步骤55读取的转换前端口号校验和值计算进行NAPT所需要的转换后的端口号的校验和值,对于新的端口号的校验和值的计算同样需要根据报文所采用的四层协议类型分别进行TCP端口号校验和值、UDP端口号校验和值或ICMP端口号校验和值的计算;
步骤6:SDP模块根据步骤5计算出的新的地址信息的校验和值,将报文的地址信息校验和值转换为新的地址信息的校验和值,如果是需要NAT的报文则仅需要进行IP地址校验和的转换,如果是需要NAPT的报文,则需要进行IP地址校验和及端口号校验和的转换。
经过上述步骤1至步骤6的过程即可以实现本发明的目的,即实现网络通信系统中网络地址转换的快速进行,为基于网络地址转换的报文实现线速转发提供基础。
Claims (6)
1、一种实现网络地址转换的方法,其特征在于包括:
a、基于硬件的查表引擎模块查找确定报文进行网络地址转换后的新的地址信息;
b、基于硬件的查表引擎模块计算地址信息转换前后的地址信息的差值,并将该差值和报文进行网络地址转换后的地址信息暂存;
c、基于字节的数据处理模块将原报文中的地址信息转换为基于硬件的查表引擎模块暂存的地址信息;
d、基于字节的数据处理模块根据暂存的地址信息和暂存的转换前后的地址信息的差值,计算确定地址信息转换后的报文的新的地址信息校验和值,并将报文中的原地址信息校验和值转换为新的地址信息校验和值。
2、根据权利要求1所述的实现网络地址转换的方法,其特征在于所述的基于硬件的查表引擎模块采用的是C5网络处理器的通道处理器代码执行单元CPRC模块,所述的基于字节的数据处理模块采用的是C5网络处理器的串行数据处理器SDP模块,且CPRC模块与SDP模块间通过合并空间进行数据信息的交互共享。
3、根据权利要求2所述的实现网络地址转换的方法,其特征在于步骤b所述的将报文进行网络地址转换后的地址信息暂存,包括:
b1、由CPRC模块判断需要进行网络地址转换的报文是否为需要转换源地址信息,如果是,执行步骤b2,否则,执行步骤b3;
b2、根据报文的源地址信息查找确定网络地址转换后的新的源地址信息,并将新的源地址信息和报文原来的目的地址信息作为报文进行网络地址转换后的地址信息暂存于合并空间中,执行步骤c;
b3、根据报文的目的地址信息查找确定网络地址转换后的新的目的地址信息,并将新的目的地址信息和报文原来的源地址信息作为报文进行网络地址转换后的地址信息暂存于合并空间中,执行步骤c。
4、根据权利要求3所述的实现网络地址转换的方法,其特征在于所述的步骤c为:由SDP模块确定需要进行网络地址转换的报文,并将需要进行网络地址转换的报文的源IP地址和目的IP地址转换为合并空间中的源IP地址和目的IP地址,将报文的源IP地址对应的四层协议端口号或封装在IP协议中的用于标识一个流的编号和目的IP地址对应的四层协议端口号或封装在IP协议中的用于标识一个流的编号转换为合并空间中保存的源端口号或编号和目的端口号或编号。
5、根据权利要求4所述的实现网络地址转换的方法,其特征在于所述的步骤d包括:
d1、根据暂存的IP地址转换前后的差值,计算确定进行网络地址转换后的报文的新的IP地址校验和值,
d2、确定进行网络地址转换的报文传输层所采用的协议,并根据所采用的协议及转换前后的端口号的差值进行报文端口号的校验和值的计算;
d3、由SDP模块将报文中的原IP地址校验和值转换为新的IP地址校验和值,将报文中的原端口号校验和值转换为新的端口号校验和值。
6、根据权利要求5所述的实现网络地址转换的方法,其特征在于所述的步骤d3还包括:由SDP模块将完成网络地址转换的报文转发出去。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02158304 CN1260920C (zh) | 2002-12-19 | 2002-12-19 | 实现网络地址转换的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02158304 CN1260920C (zh) | 2002-12-19 | 2002-12-19 | 实现网络地址转换的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1509021A CN1509021A (zh) | 2004-06-30 |
CN1260920C true CN1260920C (zh) | 2006-06-21 |
Family
ID=34236968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02158304 Expired - Fee Related CN1260920C (zh) | 2002-12-19 | 2002-12-19 | 实现网络地址转换的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1260920C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1863152B (zh) * | 2005-09-28 | 2010-05-05 | 华为技术有限公司 | 内网用户之间传递各种报文的方法 |
CN102546403B (zh) * | 2011-12-27 | 2014-12-10 | 华为技术有限公司 | 一种报文转发的方法与小基站 |
KR102610823B1 (ko) * | 2017-11-27 | 2023-12-07 | 삼성전자주식회사 | 네트워크 어드레스 변환을 위한 통신 시스템 및 방법 |
CN112165539B (zh) * | 2020-09-23 | 2022-11-04 | 浙江农林大学暨阳学院 | 一种IPv6地址转换方法 |
CN113973110B (zh) * | 2021-10-25 | 2024-03-15 | 北京奇艺世纪科技有限公司 | 一种报文生成方法、装置及电子设备 |
-
2002
- 2002-12-19 CN CN 02158304 patent/CN1260920C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1509021A (zh) | 2004-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101217464B (zh) | 一种udp数据包的传输方法 | |
CN101217493B (zh) | 一种tcp数据包的传输方法 | |
CN1625160A (zh) | 可控制数据包传送的交换器及相关方法 | |
CN1802836A (zh) | 网络协议卸载引擎存储器管理 | |
CN1875585A (zh) | 利用mac限制来控制动态未知l2泛滥 | |
CN1150725C (zh) | 减少存储器访问次数的网络包发送查询的方法和装置 | |
CN1289494A (zh) | 在网络上用域名路由选择发送数据到目的端的系统和方法 | |
CN1777142A (zh) | 在网络环境仿真中采用虚拟网卡实现数据通信的方法 | |
CN1272724C (zh) | 基于内核中套接字对接的第七层负载均衡的方法 | |
CN111131535B (zh) | 一种RapidIO动态地址映射系统 | |
CN1260920C (zh) | 实现网络地址转换的方法 | |
Watanabe et al. | Accelerating NFV application using CPU-FPGA tightly coupled architecture | |
CN1960316A (zh) | 分片报文的网络地址转换方法 | |
WO2006065688A1 (en) | High performance transmission control protocol (tcp) syn queue implementation | |
CN111817915B (zh) | 一种基于dpdk的协议解析系统 | |
CN1929435A (zh) | 分组传送装置与方法 | |
CN1476212A (zh) | 一种实现同步数字体系上传送数据包的方法和装置 | |
CN1744561A (zh) | 报文转换过程中的超长报文的处理方法 | |
CN101426027B (zh) | 面向分布式虚拟机监控器的底层通信方法 | |
CN1933450A (zh) | 板间通信方法及接口板 | |
CN1558640A (zh) | 一种处理器提供多个有mac地址的网口的系统和方法 | |
CN1604587A (zh) | 一种网络过渡接入的方法 | |
CN1602003A (zh) | 提供虚拟主机服务快速查询置换的网络地址端口转换网关器与方法 | |
CN100337441C (zh) | 转发数据包的查表方法 | |
CN1507228A (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 | ||
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: 20060621 Termination date: 20111219 |