CN101087296B - 利用网络处理器实现IPv4/IPv6网络协议转换的方法 - Google Patents
利用网络处理器实现IPv4/IPv6网络协议转换的方法 Download PDFInfo
- Publication number
- CN101087296B CN101087296B CN2006100274670A CN200610027467A CN101087296B CN 101087296 B CN101087296 B CN 101087296B CN 2006100274670 A CN2006100274670 A CN 2006100274670A CN 200610027467 A CN200610027467 A CN 200610027467A CN 101087296 B CN101087296 B CN 101087296B
- Authority
- CN
- China
- Prior art keywords
- message
- ipv4
- address
- ipv6
- host computer
- 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)
Abstract
本发明公开了一种利用网络处理器实现IPv4/IPv6网络协议转换的方法,它能满足报文的快速转发,使IPv4主机和IPv6主机能够无障碍的通信。其技术方案为:本发明利用网络处理器将报文分为以下三种类型处理:IPv6子网主机到IPv4子网主机的会话首包、IPv4子网主机到IPv6子网主机的会话首包、已建立会话的报文。本发明应用于IPv4/IPv6子网主机之间的协议转换。
Description
技术领域
本发明涉及一种IPv4/IPv6网络协议转换的方法,尤其涉及一种利用网络处理器来实现IPv4/IPv6网络协议转换的方法。
背景技术
IPv4(TCP/IP)协议是当代Internet上最重要的协议族,它是连接到Internet上的所有计算机都必须支持的协议。但是,随着Internet的发展,IPv4的一些缺点也逐渐暴露出来,其中最主要的缺点就是地址空间严重不足。由于历史原因,分配给我国的IPv4地址较少,地址枯竭问题就更加严重。
IPv6是设计用来替代现有IPv4(TCP/IP)协议,也被称作下一代互联网协议。IPv6是为了解决IPv4所存在的一些问题和不足而提出的,同时它还在许多方面提出了改进,例如路由方面、自动配置方面。IPv6协议包括IPv6基本协议和ICMPv6协议。
但是在IPv6地址和IPv4地址共存的时期,如何让IPv6节点和IPv4节点通信呢?为了解决这个难题,提出了网络地址转换-协议转换(NAT-PT)及网络地址端口转换-协议转换(NAPT-PT)。从而在网络层上实现了从IPv6节点主动向IPv4节点建立单向连接。同时,从IPv4节点主动向IPv6节点建立的连接,还必须在应用层添加应用层网关(ALG)才能实现。
由于NAT-PT过渡方式只需在中间设置转换设备即可完成IPv6网络和IPv4网络的互通,各网络节点不需要做任何的修改,对各个网络的主机设备完全透明,具有部署迅速,配置简便的优点,是IPv4向IPv6过渡阶段的最重要的网络互通方式。
网络地址转换(NAT)是当前IPv4网络广泛采用的一项技术,在NAT环境中,网络被划分为内部网(通常为企业局域网)和外部网(通常为因特网),NAT网关将内部网对外访问的数据报源地址转换成某个外部网络地址,从而实现对珍贵的IPv4地址的共享,其中外部网络地址可能由多个地址组成的地址池,NAT网关遵照一定的算法实现地址的动态分配。
NAT-PT是上述NAT技术在IPv4和IPv6混合网络的一种自然延伸和扩展,所不同的是NAT-PT的内部网是IPv6网络,NAT-PT在进行地址转换时还需要同时实现网络协议的转换。
当IPv6主机要与IPv4主机通信时,首先需要在IPv6网络中标识IPv4主机,NAT-PT网关向IPv6网络中广播一个96位的地址前缀,用96位地址前缀加上32位IPv4主机地址作为对IPv4网络中主机的标识。IPv6主机发给IPv4主机的报文,通过96位前缀被路由到NAT-PT网关处,NAT-PT网关对IPv6报文头进行转换,分配临时IPv4地址来标识IPv6源,报文转换为IPv4报文后发给IPv4目的主机。
由于全球公用的IPv4地址的获取困难,NAT-PT网关必须实现IPv4地址的共享。与NAT类似,NAT-PT的地址共享也是通过传输层标识(TCP/UDP端口或ICMP类型码)的跟踪与复用来实现的。这时,当内部网络主机向外建立连接时,NAT-PT网关必须动态分配对外的地址和传输层标识,记录每个连接会话(UDP/ICMP是伪连接)与外部地址的绑定关系,然后跟踪该连接的状态,当连接关闭后,NAT-PT网关必须自动释放先前分配的地址和传输层标识,以便后续连接使用。
与NAT类似,应用层协议如果包含了第三层的地址或传输层的标识,也需要进行相应的转换和转换,这种服务叫应用层网关(ALG),如域名查询服务DNS,或FTP、H323、SIP等的控制连接。
随着网络速度的飞速发展,传统的路由器已经越来越难已满足报文的快速转发。为了适应这一发展,出现了新型的网络处理器。它是一种新型的处理器类型,专门用于满足网络交换设备的需求、网络环境的要求而设计的。它除了一般处理器的功能外还包含若干个专门处理数据分组的高速智能接口,即高速引擎,使得网络处理器能够处理高速网络中同时到达的多个数据流。
网络处理器是用于实现报文处理、协议分析、路由、语音/数据集成、防火墙和QoS等通信工作的可编程硬件。它被经过专门设计和高度优化来完成各种网络功能。现有的网络通讯设备主要有基于通用CPU和基于ASIC两种类型。基于通用CPU的网络通讯设备具备了易于扩展和修改的能力,但是它提供的性能不能满足现在高速网络的需求。基于ASIC的网络通讯设备达到高性能的数据传输速度。虽然ASIC提供了快速处理能力,但它的灵活性远远跟不上网络协议和标准的快速改变,典型的ASIC需要1年至3年的开发周期,无法进行版本更新和功能升级,制造工艺的需要也较高。
网络处理器被称为第五代路由器的核心,充分地继承了以上两种路由器的优点,又克服了它们的缺点:既有高性能,又可以编程,这使得Internet上不断涌现的新技术能够迅速的在实际的路由器中得以应用。
以色列Ezchip公司的NP-1c网络处理器具有很高的集成度、简化的编程模型和先进的业务能力,代表了网络处理器未来的发展方向。它采用了独特先进的流水线结构体系:优化的任务处理器(TOPs,Task Optimized Processors)结构体系,包括4种不同类型的TOP,每种类型的TOP完成不同的任务。其中,分析模块TOPparse用来分辨和提取各种数据帧的包头、标记、地址、端口、协议、领域、模式和关键字,该模块能够分析任意格式、任意封装方式和任意具有优先权标记等的包。第一查找模块TOPsearchI使用分析过的区域作为关键字进行相关表的查找、分类和管理。决策模块TOPresolve进行包转发和QoS决策,并更新表和片状态信息。第二查找模块TOPserachII是可选的,在TOPresolve完成之后进行附加的查找。修改模块TOPmodify对包的内容进行修改,完成在包的任何地方进行改写、添加和插入操作。
发明内容
本发明的目的在于实现IPv4/IPv6网络协议转换,提供了一种利用网络处理器实现IPv4/IPv6网络协议转换的方法,它能满足报文的快速转发,进一步加快了网络协议转换的处理速度,使IPv4主机和IPv6主机能够无障碍的通信。
本发明的技术方案为:一种利用网络处理器实现IPv4/IPv6网络协议转换的方法,其中,包括IPv6子网主机到IPv4子网主机的会话首包的报文流程、IPv4子网主机到IPv6子网主机的会话首包的报文流程、已建立会话的报文流程;
所述IPv6子网主机到IPv4子网主机的会话首包的报文流程是指:IPv6子网主机发送会话首包报文,由网络处理器接收后先进行正确性验证,然后查找各个表获得该报文具体的路由转换信息并将该路由转换信息记录在会话表中以实现状态维护,最后把修改后的报文发送到IPv4子网主机;
所述IPv4子网主机到IPv6子网主机的会话首包的报文流程包括:
步骤(1):IPv4子网主机先发送DNS询问报文以询问IPv6子网主机的IP地址,网络处理器接收该询问报文后查找各个表以获得路由转换信息,并添加会话表,将其发送给IPv6端的DNS服务器,当网络处理器收到IPv6端DNS服务器发出的DNS应答报文后查找会话表获得所有的路由转换信息,同时为报文回答域中的IPv6地址动态分配一个唯一有效的IPv4地址,并把这一关系记录在网络地址转换映射表中,接着把DNS应答报文发送回IPv4子网主机;
步骤(2):IPv4子网主机发送会话首包报文,由网络处理器接收后进行正确性验证,然后查找各个表以及步骤(1)中的网络地址转换映射表以获得报文目的地址对应的IPv6地址,接着把所有的路由转换信息记录在会话表中以实现状态维护,最后把修改后的报文发送到IPv6子网主机;
所述已建立会话的报文流程是指网络处理器收到报文后查找会话表获得所有的路由转换信息,然后修改并发送该报文。
上述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其中,所述各个表包括路由表、IP-MAC表、端口配置表、地址转换表、协议转换前缀表。
上述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其中,所述会话表是为了保证同属一个业务流的数据报文由同样的地址发送至目的端,会话表的键通常是一个五元组:源地址、源端口、目的地址、目的端口和协议,结果中包含所有的地址转换和路由信息。
上述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其中,所述IPv6子网主机到IPv4子网主机的会话首包的报文流程主要是为该会话首包的源地址分配一个动态地址池中的IPv4地址,所述报文流程包括两圈网络处理器流程,其中第一圈网络处理器流程分配IPv4地址和端口号,第二圈网络处理器流程获得该IPv4地址和端口号。
上述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其中,所述第一圈网络处理器流程包括:
分析模块阶段:检测报文正确性,区分不同类型的报文,创建五元组,创建报文相关消息和硬件寄存器消息;
第一查找模块阶段:以所述五元组为键查找相应的会话表;以报文的目的IP地址的前12个字节为键查找协议转换前缀表;以报文转换后的目的IP地址为键查找路由表;以路由表中查到的下一跳IP地址为键查找IP-MAC表;以路由表中查到的输出端口号为键查找端口配置表;建立状态更新消息;
决策模块阶段:根据分析模块阶段的不同分析结果,跳到各个报文的处理行标;判断会话表是否命中,若命中则以已建立会话的报文流程来处理,若不命中则继续处理;判断协议转换前缀表是否命中,若命中则继续处理;收集路由表、IP-MAC表、硬件寄存器消息和状态更新消息中的所有信息,在相应的会话表中建立表项,并且启动动态分配IPv4和端口号的模块;创建所需的消息,包括环回头信息和硬件寄存器信息;
修改模块阶段:填写数据报文的报头,并把报文发送到交换口,由同一个网络处理器接收并进行第二圈网络处理器流程。
上述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其中,所述第二圈网络处理器流程包括:
分析模块阶段:根据第一圈传入的环回头信息,区分不同类型的报文,创建五元组用于查找会话表,创建报文相关消息和硬件寄存器消息;
第一查找模块阶段:以五元组为键,查找相应的会话表;以会话表结果中索引域的第一个字节作为键,查找IPv4地址索引表,取得地址池中实际的IPv4地址;
决策模块阶段:根据分析模块阶段的不同分析结果,跳到各个报文的处理行标;收集会话表、IPv4地址索引表、报文相关信息和五元组消息中的所有信息更新会话表中相应的正向表项,同时创建逆向表项;创建所需的消息和键,包括协议转换消息、输出端口键、路由转发消息和硬件寄存器消息;
修改模块阶段:处理四层头,填写源端口号和目的端口号,重新计算校验和;处理三层头,把协议转换消息中的内容写入三层头;处理二层头,把路由转发消息中的内容写入二层头相应的域中;写发送寄存器并发送报文。
上述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其中,所述IPv4子网主机到IPv6子网主机的会话首包的报文流程包括:
分析模块阶段:检测报文正确性,区分不同类型的报文,创建五元组用于查找会话表,创建报文相关消息和硬件寄存器消息;
第一查找模块阶段:以五元组为键查找相应的会话表;查找网络地址转换映射表,若网络地址转换映射表命中则接着查找路由表;以路由表中查到的下一跳IP地址为键查找IP-MAC表;以路由表中查到的输出口号为键查找端口配置表;建立状态更新信息;
决策模块阶段:根据分析模块阶段的不同分析结果,跳到各个报文的处理行标;判断会话是否命中,若命中是已有会话的情况,若不命中则继续处理;判断网络地址转换映射表是否命中,若命中则继续处理;收集网络地址转换映射表、路由表、IP-MAC表、硬件寄存器消息和状态更新消息中的所有信息,在相应的会话表中建立表项;创建所需的消息和键,包括协议转换消息、输出端口键、路由转发消息和硬件寄存器消息;
修改模块阶段:处理四层头,填写源端口号和目的端口号,重新计算校验和;处理三层头,把协议转换消息中的内容写入三层头相应的域中;处理二层头,把路由转发消息中的内容写入二层头相应的域中;写发送寄存器并发送报文。
上述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其中,所述已建立会话的报文流程包括:
分析模块阶段:区分不同类型的报文;创建五元组用于查找会话表;创建报文相关消息和硬件寄存器消息;
第一查找模块阶段:根据五元组查找相应的会话表得到包含所有路由转换信息的查询结果;
决策模块阶段:根据分析模块阶段的不同分析结果,跳到各个报文的处理行标;创建协议转换消息;创建输出端口键;创建路由转发消息和硬件寄存器消息;
修改模块阶段:处理四层头,填写源端口号和目的端口号,重新计算校验和;处理三层头,把协议转换消息中的内容写入三层头相应的域中;处理二层头,把路由转发消息中的内容写入二层头相应的域中;写发送寄存器并发送报文。
本发明对比现有技术有如下的有益效果:本发明采用网络处理器对IPv4主机到IPv6主机会话首包、IPv6主机到IPv4主机会话首包、DNS报文和后续报文这四种报文进行处理。本发明加快了上述报文的转发速度,使IPv4子网和Ipv6子网之间能够相互通信。
附图说明
图1是本发明中IPv6报文处理的流程图。
图2是本发明中IPv4报文处理的流程图。
具体实施方式
下面结合附图和实施例对本发明的实施例作进一步的描述。
在IPv4/IPv6网络协议转换过程中,需要对四种类型的报文进行处理,它们是IPv4主机到IPv6主机的报文会话首包、IPv6主机到IPv4主机的报文会话首包、DNS报文和已建立会话的后续报文。
图1示出了IPv6报文处理的流程图。请结合图1,在IPv6子网中的主机要主动和IPv4子网中的主机通信的情况下,IPv6主机先发送一个报文,称之为新的会话首包。NP-1c网络处理器收到该会话首包后,先进行正确性验证;然后查找各个不同的表(如路由表,IP-MAC表,端口配置表、地址转换表、协议转换(PT)前缀表等)获得该报文具体的路由转换信息;接着,最重要的是把所有的路由转换信息记录在会话表中,实现状态维护;最后把修改后的报文发送到V4主机。此处实现的是网络地址端口转换(NAPT)和协议转换(PT)。
当IPv6子网中的主机和IPv4子网中的主机建立了连接之后,即实现了上述的会话表建立之后,它们之间就能进行正常的通信了。这时,NP-1c网络处理器收到的报文只要查找会话表,获得了所有的路由转换信息,修改并发送该报文即可。
上述的会话表是为了保证同属一个业务流的数据报文由同样的地址发送至目的端,会话表的键通常是一个五元组:源地址、源端口、目的地址、目的端口和协议(SRC_IP、SRC_PORT、DST_IP、DST_PORT、PROTO),结果中包含所有的地址转换和路由信息。另外由于分片报文非首包并不包含通常的五元组,所以为了正确的识别分片报文的非首包术语哪个会话(session),还必须维护一张分片会话表,以一个四元组:源地址、目的地址、协议和分片号(SRC_IP、DST_IP、PROTO、FRAG_ID)标识。
具体地说,由IPv6主机向IPv4主机建立连接的会话首包的流程比较复杂,主要是因为必须为该会话首包的源地址分配一个动态地址池中的IPv4地址,即实现NAPT功能。而由于硬件的局限性,这个分配动作无法在一个网络处理器流程中完成。实际工作中,第一圈网络处理器流程只能分配IPv4地址而无法获取该地址,第二圈网络处理器流程才能获得该IPv4地址和端口。所以每个IPv6到IPv4的会话首包必须在网络处理器中走两个流程才能完成相应的转换。
IPv6主机向IPv4主机会话首包的第一圈网络处理器流程大致分成以下阶段:
(1)分析模块(TOPparse)阶段:
首先检测报文的正确性,区分不同类型的报文。先区分该报文是从RX端(网口)还是从TX端(交换口)进来。若是TX端,再区分是从中央处理器(CP)端来的还是从同一网络处理器(NP)端来的报文。从CP端来的报文主要是从NP端发送给CP端处理的报文,是那些对实时性要求不高的、很少出现的、处理流程复杂的报文类型,在NAPT中就是DNS报文。从同一NP来的报文就是IPv6主机到IPv4主机的报文会话首包。若是从同一NP来的报文,还要区分出具体的4层协议类型(TCP、UDP、ICMP、UNKNOWN)。若是RX端,也要区分出具体的3层和4层协议类型,即IPv4(TCP、UDP、ICMP、UNKNOWN)或IPv6(TCP、UDP、ICMP、UNKNOWN)。
然后创建五元组、报文相关消息和硬件寄存器消息等相关消息。由于各个处理阶段(TOPs)之间信息的共享必须通过消息来实现,所以我们必须为那些需要修改的数据或者那些被后面阶段用到的信息创建消息。报文相关消息中的内容用于协议转换(PT),包括(IPv6/IPv4)负载长度/总长度、下一报头号/协议号、跳限制/生存时间、分片标识符、分片标志、四层校验和等内容,决定这些数据应该如何被修改将在决策模块(TOPresolve)进行。硬件寄存器消息是所有报文所必需的,记录了所有硬件相关的信息。值得一提的是,该消息中的“RSV Label”域,存储的是跳转行标,用于在TOPresolve阶段实现多分支跳转。
(2)第一查找模块(TOPsearchI)阶段:
首先以五元组为键查找相应的会话表。若会话表命中,说明该报文是已建立会话的后续报文;若会话表不命中,即表示是新的会话首包,则继续处理,查找其他的表。
然后以报文的目的IP地址的前12个字节为键,查找协议转换(PT)前缀表。若PT前缀表不命中,则说明该报文是需要路由的报文;若命中则说明该报文是需要PT的报文,继续处理查找其他的表。这里的PT前缀表的结构十分简单,只有一个控制字节,标志是否命中了该表。
接着以报文转换后的目的IP地址为键,查找路由表。若路由表不命中,则以后要返回一个路由不可达的网络控制消息协议(ICMP)错误报文;若路由表命中,则继续处理,查找其他的表。
以路由表中查到的下一跳IP地址为键,查找IP-MAC表。若IP-MAC表不命中,则以后要发起一个邻接点询问报文;若IP-MAC表命中,则继续处理,查找其他的表。
以路由表中查到的输出端口号为键,查找端口配置表。查找端口配置表的目的是为了获得端口相关的信息,包括PT前缀、子网掩码、MTU、本端口以太网媒体节入控制器(MAC)等。
最后建立状态更新消息。建立该消息的目的就是为了把五元组传递给下面的TOPresolve阶段,用于创建会话表表项,所以更新消息中就只有五元组信息。
(3)决策模块阶段:
根据分析模块阶段的不同分析结果,跳到各个报文的处理行标。
判断会话表是否命中,若命中则说明该报文是已建立会话的后续报文;若不命中则继续处理。
判断PT前缀表是否命中,若不命中则是需要路由的报文;若命中则继续处理。
收集路由表、IP-MAC表、硬件寄存器消息和状态更新消息中的所有消息,在相应的会话表中建立表项。此时需要给源地址分配一个动态地址池中的IPv4地址,这个分配动作是通过硬件部件Index_Q来实现的。Index_Q是一组计数器的指针,这组计数器的物理地址是连续的,每个地址都是24位长。我们把前一个字节作为IPv4的地址索引,后两个字节作为NAPT端口号。硬件实现的动态地址池包含256个全球唯一有效的IPv4地址,每个地址都可以复用65536个端口,大大提高了地址池的容量。而这个Index_Q的分配地址动作是在创建会话表表项时同时进行的。当创建好表项之后,虽然在会话表中已经有相应的地址池IPv4地址索引信息,但是在TOPresolve阶段,无法查表,所以无法索取这个信息。必须要回到TOPsearchI阶段查找会话表获取这个计数器的地址,即IPv4地址索引号和NAT端口号。这就是必须在NP中走两圈才能完成转换的原因。在创建会话表时,由于无法获取转换后的源地址,所以无法创建逆向的会话表项(逆向会话表项的键值中的目的地址就是转换后的源地址),现在只能创建正向的表项,而且结果中有些域的值无法获取,比如转换后的源地址(T_SRC_IP),转换后的源端口(T_SRC_PORT)。并且启动动态分配IPv4和端口号的模块。
创建所需的消息,包括环回头消息(Loopback_EZHeader头消息)和硬件寄存器消息。Loopback_EZHeader头消息包含报文相关消息和五元组消息,为了便于下一圈对报文的内容直接处理,不用再解析报文。硬件寄存器消息只要拷贝TOPparse阶段的硬件寄存器消息即可,其中“RSV Label”域改为相应的“MDF Label”域。
(4)修改模块(TOPmodify)阶段:
该阶段不需要对报文进行修改,只需要填写数据报文的报头(Ezheader头),并把报文发送到交换口,由同一个网络处理器接收,进行第二圈的处理。Ezheader头只要拷贝TOPresolve阶段传过来的Loopback_EZHeader头消息即可。
之后,网络处理器进行IPv6主机向IPv4主机会话首包的第二圈流程,分成以下阶段:
(1)分析模块(TOPparse)阶段:
和第一圈流程的TOPparse阶段功能类似,分析环回头信息,创建五元组和相关消息。
(2)第一查找模块(TOPsearchI)阶段:
以五元组为键,查找相应的会话表,此时会话表必然命中。
以会话表结果总的“index”域的第一个字节作为键,查找IPv4地址索引表,取得地址池中实际的IPv4地址。这里的“index”域其实就是Index_Q,即计数器指针。IPv4地址索引表是由CP端的DNS-ALG创建和维护的。
(3)决策模块(TOPresolve)阶段:
根据分析模块阶段的不同分析结果,跳到各个报文的处理行标。
收集会话表、IPv4地址索引表、报文相关消息和五元组消息中的所有信息更新会话表中相应的正向表项,同时创建逆向表项。
正向表项中,转换后的源地址和转换后的源端口还未填写,现在这些信息都能够获得了。转换后的源地址就是IPv4地址索引表中的IPv4地址,转换后的源端口就是会话表中“Index”域的后两个字节,所以在第二圈中对第一圈建立的会话表条目进行更新。
创建所需的消息和键,包括PT消息、输出端口键、RT消息和硬件寄存器消息。
(4)修改模块(TOPmodify)阶段:
处理四层头。包括填写源端口号和目的端口号,重新计算校验和等。由于本阶段校验和的计算,硬件是通过增量法实现的,所以我们必须先减去报文原来的伪报头(如果存在的话),然后再添加报文修改后新的伪报头。
处理三层头。把PT消息中的内容写入三层头相应的域中。
处理二层头。把RT消息中的内容写入二层头相应的域中。
写发送寄存器,并发送报文。
经历了上述两圈网络处理器流程,就完成了IPv6子网主机到IPv4子网主机会话首包报文的处理流程。
图2示出了本发明中IPv4报文处理的流程。请参见图2,在IPv4子网中的主机主动和IPv6子网中的主机通信的情况下,IPv4主机先发送一个DNS询问报文,询问IPv6主机的IP地址。NP-1c网络处理器收到这个询问报文后,也要查找各个表(路由表、IP-MAC表和端口配置表),获得路由转换信息,并且为该报文建立会话关系,即添加会话表,然后发送给IPv6端的DNS服务器。当收到IPv6端DNS服务器发出的DNS应答报文后,只要查找会话表,就能获得所有的路由转换信息;同时,为报文回答域中的IPv6地址动态分配一个全球唯一有效的IPv4地址,并把这一关系记录在NAT映射表中,最后把DNS应答报文发送回IPv4主机。
在上述转换并记录实现之后,IPv4主机才能发送一个新的会话首包。NP-1c网络处理器收到该会话首包后,先进行正确性验证;然后查找各个不同的表(如路由表,IP-MAC表,端口配置表等),并且要查找NAT映射表,获得报文目的地址对应的IPv6地址;接着,最重要的是把所有的路由转换信息记录在会话表中,实现状态维护;最后把修改后的报文发送到IPv6主机。此处实现的是带缓存的NAT和PT。
当IPv4子网中的主机和IPv6子网中的主机建立了连接之后,即实现了上述的会话表建立之后,它们之间就能进行正常的通信了。这时,NP-1c网络处理器收到的报文只要查找会话表,获得了所有的路由转换信息,修改并发送该报文即可。
具体地说,IPv4主机主动向IPv6主机建立连接的会话首包流程如下:由于在发送会话首包之前,已经通过DNS报文在边缘路由器上建立了IPv4和IPv6地址的映射关系,我们只需进行相应的转换即可。
(1)分析模块(TOPparse)阶段:
和上述的分析模块阶段功能类似,主要用于检测报文正确性,区分不同类型报文及创建五元组和相关消息。
(2)第一查找模块(TOPsearchI)阶段:
和上一节第一圈网络处理器流程的TOPsearchI阶段功能类似,唯一不同的是查找相应会话表后,当发现会话表不命中,即表明是会话首包;这时接着要查找NAT映射表,即IPv4和IPv6映射关系表,查找报文中目的地址对应转换后的IPv6地址。若NAT映射表命中,接着就查找路由表,和上一节第一圈网络处理器流程的TOPsearchI阶段功能类似;若NAT映射表不命中,则表明不是一个PT包,不属于本节的讨论范围。
NAT映射表记录了由IPv4端向IPv6端发起的连接中,IPv6地址和NAT地址池中的IPv4地址的绑定关系。由于每个会话是双向的,所以存在两张NAT映射表,分别以IPv4地址和IPv6地址为键值。NAT映射表的创建和维护是由CP端实现的,并且CP端周期性的扫描NAT映射表,删除超过缓存时间的绑定关系,同时把释放的IPv4地址放回NAT地址池中,这就是带缓存的NAT的实现。
(3)决策模块(TOPresolve)阶段:
根据分析模块阶段的不同分析结果,跳到各个报文的处理行标。
判断会话表是否命中,若命中则表明是已有会话的情况;若不命中则继续处理。
判断NAT映射表是否命中,若命中则继续处理。
收集NAT映射表、路由表、IP-MAC表、硬件寄存器消息和状态更新消息(HL消息)中的所有信息,在相应的会话表中建立表项。由于会话是双向的,所以要建立正向和逆向两个表项,每个表项的内容出处和相应表项类似,在此不再复述。
创建所需的消息和键,包括PT消息、输出端口键、RT消息和硬件寄存器消息。
(4)修改模块(TOPmodify)阶段:
处理四层头。包括填写源端口号和目的端口号,重新计算校验和等。由于本阶段校验和的计算,硬件是通过增量法实现的,所以我们必须先减去报文原来的伪报头(如果存在的话),然后再添加报文修改后新的伪报头。
处理三层头。把PT消息中的内容写入三层头相应的域中。
处理二层头。把RT消息中的内容写入二层头相应的域中。
写发送寄存器,并发送报文。设置发送接口寄存器,使得硬件从正确的端口发送处理后的报文。
经过上述4个阶段的处理,完成了IPv4主机到IPv6主机会话首包报文的处理流程。
当IPv4主机主动向IPv6主机发送的会话首包以及IPv6主机主动向IPv4主机发送的会话首包处理完成后,在IPv4主机和IPv6主机之间建立了通信连接。后续报文会依已建立会话的报文流程来处理,具体处理流程如下:
(1)分析模块(TOPparse)阶段:
区分不同类型的报文。
创建五元组用于查找会话表。由于是已建立会话的报文,所以在会话表中一定建立了相应的会话表项,只要查找会话表就能获得该报文所有的路由转换信息。由于是区分不同的协议类型,所以会有多张不同的会话表。
创建报文相关消息和硬件寄存器消息。
(2)第一查找模块(TOPsearchI)阶段:
根据五元组查找相应的会话表。因为其为会话的后续报文,所以肯定会话表查询命中。查询结果中几乎包含了所有需要的路由转换信息,包括转换后的目的MAC、源IP、目的IP、源端口、目的端口、发送物理端口号等。其中缺少了转换后的源MAC,这个信息是通过在第二查找模块(TOPSEARCHII)阶段查找端口配置表得到。
(3)决策模块(TOPresolve)阶段:
根据分析模块阶段的不同分析结果,跳到各个报文的处理行标。区分报文的种类和TOPparse阶段类似。跳转处理行标是通过多分支跳转实现的,而这个跳转行标就是TOPparse阶段传过来的硬件寄存器消息中的“RSV Label”域。
创建PT消息。把报文相关消息中的数据按照PT转换规则修改,修改后写入PT消息中;同时还要把查找会话表得出的结果写入PT消息中。所以PT消息就是会话表结果和报文相关消息的总和。
创建输出端口键。创建该键的目的是为了在TOPsearchII阶段查找端口配置表,获得报文的源MAC。
创建RT消息和硬件寄存器消息。RT消息,即路由消息,对于所有的报文来说都必须有。该消息中保存目的MAC和发送端口号。对于只需要路由处理的报文,只要该消息即可;而对于需要PT的报文,还需要PT消息。硬件寄存器消息只要拷贝TOPparse阶段的硬件寄存器消息,其中“RSV Label”域改为相应的“MDF Label”域。
(4)修改模块(TOPmodify)阶段:
处理四层头。包括填写源端口号和目的端口号,重新计算校验和等。由于本阶段校验和的计算,硬件是通过增量法实现的,所以我们必须先减去报文原来的伪报头(如果存在的话),然后再添加报文修改后新的伪报头。
处理三层头。把PT消息中的内容写入三层头相应的域中。
处理二层头。把RT消息中的内容写入二层头相应的域中。
写发送寄存器,并发送报文。设置发送接口寄存器,使得硬件从正确的端口发送处理后的报文。
应理解,上述实施例是提供给本领域普通技术人员来实现或使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。
Claims (7)
1.一种利用网络处理器实现IPv4/IPv6网络协议转换的方法,其特征在于,包括IPv6子网主机到IPv4子网主机的会话首包的报文流程、IPv4子网主机到IPv6子网主机的会话首包的报文流程、已建立会话的报文流程;
所述IPv6子网主机到IPv4子网主机的会话首包的报文流程是指:IPv6子网主机发送会话首包报文,由网络处理器接收后先进行正确性验证,然后查找路由表、IP-MAC表、端口配置表、地址转换表、协议转换前缀表获得该报文具体的路由转换信息并将该路由转换信息记录在会话表中以实现状态维护,最后把修改后的报文发送到IPv4子网主机;
所述IPv4子网主机到IPv6子网主机的会话首包的报文流程包括:
步骤(1):IPv4子网主机先发送DNS询问报文以询问IPv6子网主机的IP地址,网络处理器接收该询问报文后查找路由表、IP-MAC表、端口配置表、地址转换表、协议转换前缀表以获得路由转换信息,并添加会话表,将其发送给IPv6端的DNS服务器,当网络处理器收到IPv6端DNS服务器发出的DNS应答报文后查找会话表获得所有的路由转换信息,同时为报文回答域中的IPv6地址动态分配一个唯一有效的IPv4地址,并把这一关系记录在网络地址转换映射表中,接着把DNS应答报文发送回IPv4子网主机;
步骤(2):IPv4子网主机发送会话首包报文,由网络处理器接收后进行正确性验证,然后查找路由表、IP-MAC表、端口配置表、地址转换表、协议转换前缀表以及步骤(1)中的网络地址转换映射表以获得报文目的地址对应的IPv6地址,接着把所有的路由转换信息记录在会话表中以实现状态维护,最后把修改后的报文发送到IPv6子网主机;
所述已建立会话的报文流程是指网络处理器收到报文后查找会话表获得所有的路由转换信息,然后修改并发送该报文。
2.根据权利要求1所述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其特征在于,所述会话表是为了保证同属一个业务流的数据报文由同样的地址发送至目的端,会话表的键通常是一个五元组:源地址、源端口、目的地址、目的端口和协议,结果中包含所有的地址转换和路由信息。
3.根据权利要求1所述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其特征在于,所述IPv6子网主机到IPv4子网主机的会话首包的报文流程主要是为该会话首包的源地址分配一个动态地址池中的IPv4地址,所述报文流程包括两圈网络处理器流程,其中第一圈网络处理器流程分配IPv4地址和端口号,第二圈网络处理器流程获得该IPv4地址和端口号。
4.根据权利要求3所述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其特征在于,所述第一圈网络处理器流程包括:
分析模块阶段:检测报文正确性,区分不同类型的报文,创建五元组,创建报文相关消息和硬件寄存器消息;
第一查找模块阶段:以所述五元组为键查找相应的会话表;以报文的目的IP地址的前12个字节为键查找协议转换前缀表;以报文转换后的目的IP地址为键查找路由表;以路由表中查到的下一跳IP地址为键查找IP-MAC表;以路由表中查到的输出端口号为键查找端口配置表;建立状态更新消息;
决策模块阶段:根据分析模块阶段的不同分析结果,跳到各个报文的处理行标;判断会话表是否命中,若命中则以已建立会话的报文流程来处理,若不命中则继续处理;判断协议转换前缀表是否命中,若命中则继续处理;收集路由表、IP-MAC表、硬件寄存器消息和状态更新消息中的所有信息,在相应的会话表中建立表项,并且启动动态分配IPv4和端口号的模块;创建所需的消息,包括环回头信息和硬件寄存器信息;
修改模块阶段:填写数据报文的报头,并把报文发送到交换口,由同一个网络处理器接收并进行第二圈网络处理器流程。
5.根据权利要求4所述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其特征在于,所述第二圈网络处理器流程包括:
分析模块阶段:根据第一圈传入的环回头信息,区分不同类型的报文,创建五元组用于查找会话表,创建报文相关消息和硬件寄存器消息;
第一查找模块阶段:以五元组为键,查找相应的会话表;以会话表结果中索引域的第一个字节作为键,查找IPv4地址索引表,取得地址池中实际的IPv4地址;
决策模块阶段:根据分析模块阶段的不同分析结果,跳到各个报文的处理行标;收集会话表、IPv4地址索引表、报文相关信息和五元组消息中的所有信息更新会话表中相应的正向表项,同时创建逆向表项;创建所需的消息和键,包括协议转换消息、输出端口键、路由转发消息和硬件寄存器消息;
修改模块阶段:处理四层头,填写源端口号和目的端口号,重新计算校验和;处理三层头,把协议转换消息中的内容写入三层头;处理二层头,把路由转发消息中的内容写入二层头相应的域中;写发送寄存器并发送报文。
6.根据权利要求1所述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其特征在于,所述IPv4子网主机到IPv6子网主机的会话首包的报文流程包括:
分析模块阶段:检测报文正确性,区分不同类型的报文,创建五元组用于查找会话表,创建报文相关消息和硬件寄存器消息;
第一查找模块阶段:以五元组为键查找相应的会话表;查找网络地址转换映射表,若网络地址转换映射表命中则接着查找路由表;以路由表中查到的下一跳IP地址为键查找IP-MAC表;以路由表中查到的输出口号为键查找端口配置表;建立状态更新信息;
决策模块阶段:根据分析模块阶段的不同分析结果,跳到各个报文的处理行标;判断会话是否命中,若命中则报文是已建立会话的后续报文,若不命中则继续处理;判断网络地址转换映射表是否命中,若命中则继续处理;收集网络地址转换映射表、路由表、IP-MAC表、硬件寄存器消息和状态更新消息中的所有信息,在相应的会话表中建立表项;创建所需的消息和键,包括协议转换消息、输出端口键、路由转发消息和硬件寄存器消息;
修改模块阶段:处理四层头,填写源端口号和目的端口号,重新计算校验和;处理三层头,把协议转换消息中的内容写入三层头相应的域中;处理二层头,把路由转发消息中的内容写入二层头相应的域中;写发送寄存器并发送报文。
7.根据权利要求1所述的利用网络处理器实现IPv4/IPv6网络协议转换的方法,其特征在于,所述已建立会话的报文流程包括:
分析模块阶段:区分不同类型的报文;创建五元组用于查找会话表;创建报文相关消息和硬件寄存器消息;
第一查找模块阶段:根据五元组查找相应的会话表得到包含所有路由转换信息的查询结果;
决策模块阶段:根据分析模块阶段的不同分析结果,跳到各个报文的处理行标;创建协议转换消息;创建输出端口键;创建路由转发消息和硬件寄存器消息;
修改模块阶段:处理四层头,填写源端口号和目的端口号,重新计算校验和;处理三层头,把协议转换消息中的内容写入三层头相应的域中;处理二层头,把路由转发消息中的内容写入二层头相应的域中;写发送寄存器并发送报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006100274670A CN101087296B (zh) | 2006-06-08 | 2006-06-08 | 利用网络处理器实现IPv4/IPv6网络协议转换的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006100274670A CN101087296B (zh) | 2006-06-08 | 2006-06-08 | 利用网络处理器实现IPv4/IPv6网络协议转换的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101087296A CN101087296A (zh) | 2007-12-12 |
CN101087296B true CN101087296B (zh) | 2011-06-15 |
Family
ID=38938057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006100274670A Expired - Fee Related CN101087296B (zh) | 2006-06-08 | 2006-06-08 | 利用网络处理器实现IPv4/IPv6网络协议转换的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101087296B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107995117A (zh) * | 2017-12-13 | 2018-05-04 | 迈普通信技术股份有限公司 | 一种报文转发方法及板卡 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101197858B (zh) * | 2008-01-07 | 2011-11-30 | 杭州华三通信技术有限公司 | 地址转换方法、装置及具有该装置的路由器 |
CN101945140B (zh) * | 2010-09-03 | 2013-04-03 | 清华大学 | 地址转换设备中复用公有IPv4地址的端口的动态调整方法 |
CN101977246B (zh) * | 2010-09-07 | 2014-03-12 | 南京中兴软件有限责任公司 | 一种PMIPv6移动性的支持方法和系统 |
CN102546848B (zh) * | 2010-12-21 | 2014-12-31 | 中国移动通信集团公司 | 一种网络地址转换网关中的标签生成装置和方法 |
CN102118457B (zh) * | 2011-01-29 | 2014-07-23 | 刁永平 | 自治可扩展互联网的网络地址转换法实现 |
CN102238187B (zh) * | 2011-07-26 | 2014-07-02 | 东念(杭州)科技有限公司 | 基于tcp/ip协议的通信协议的系统及其实现方法 |
CN102984300B (zh) * | 2012-12-13 | 2015-11-18 | 北京邮电大学 | 一种4-6-4混合协议网络中分布式网关系统和访问方法 |
CN103685032B (zh) * | 2013-12-09 | 2017-06-23 | 福建星网锐捷网络有限公司 | 报文转发方法及网络地址转换服务器 |
WO2015085521A1 (zh) * | 2013-12-11 | 2015-06-18 | 华为技术有限公司 | 互联网协议地址分配方法和装置 |
CN105208138B (zh) * | 2014-06-20 | 2018-05-08 | 中国电信股份有限公司 | 不同版本互联网协议客户端之间的通信方法和系统 |
CN105812442B (zh) * | 2014-12-31 | 2019-02-12 | 华为技术有限公司 | 一种合并数据文件的方法和ftp转发器 |
EP3062490B1 (de) * | 2015-02-27 | 2018-07-18 | Siemens Aktiengesellschaft | Verfahren zur Datenübermittlung innerhalb eines industriellen Automatisierungssystems und Kommunikationsgerät |
US10374948B2 (en) * | 2017-07-20 | 2019-08-06 | Huawei Technologies Co., Ltd. | Supporting mobility and multi-homing in the transport layer inside end-hosts |
CN109618020B (zh) * | 2018-12-25 | 2022-01-11 | 北京物芯科技有限责任公司 | 一种分片报文的网络地址转换方法及装置 |
CN115086183B (zh) * | 2022-07-05 | 2024-02-06 | 武汉思普崚技术有限公司 | 一种应用层网关的报文关联方法及装置 |
CN115334036B (zh) * | 2022-08-11 | 2023-07-07 | 安超云软件有限公司 | 智能控制源地址转换的方法和装置、电子设备和存储介质 |
CN116074368B (zh) * | 2023-04-06 | 2023-06-09 | 南京易科腾信息技术有限公司 | 网络切换装置、方法、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1529481A (zh) * | 2003-10-14 | 2004-09-15 | �й���ѧԺ�����о��� | 网络处理器内部实现分布式应用层转换网关的方法 |
CN1585376A (zh) * | 2003-08-20 | 2005-02-23 | 华为技术有限公司 | 一种地址转换方法及实现该方法的混合地址转换路由器 |
-
2006
- 2006-06-08 CN CN2006100274670A patent/CN101087296B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1585376A (zh) * | 2003-08-20 | 2005-02-23 | 华为技术有限公司 | 一种地址转换方法及实现该方法的混合地址转换路由器 |
CN1529481A (zh) * | 2003-10-14 | 2004-09-15 | �й���ѧԺ�����о��� | 网络处理器内部实现分布式应用层转换网关的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107995117A (zh) * | 2017-12-13 | 2018-05-04 | 迈普通信技术股份有限公司 | 一种报文转发方法及板卡 |
CN107995117B (zh) * | 2017-12-13 | 2021-03-16 | 迈普通信技术股份有限公司 | 一种报文转发方法及板卡 |
Also Published As
Publication number | Publication date |
---|---|
CN101087296A (zh) | 2007-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101087296B (zh) | 利用网络处理器实现IPv4/IPv6网络协议转换的方法 | |
CN101488904B (zh) | Gre隧道穿越网络地址转换设备的方法和网络地址转换设备 | |
CN101247308B (zh) | 基于网络处理器实现IPv6穿越IPv4的隧道报文处理方法 | |
CN102148773B (zh) | 一种IPv6协议和IPv4协议转换的方法及系统 | |
CN101573927B (zh) | 网络系统中的路径最大传输单元发现 | |
AU753098B2 (en) | Integrated IP network | |
KR100453055B1 (ko) | Ip 네트워크 상에서의 경로 mtu 탐색 방법 및 그 장치 | |
JP4102690B2 (ja) | インターネットプロトコルパケットの目的地を決定するシステム及び方法 | |
KR100453056B1 (ko) | 동적 ip 네트워크 상에서의 pmtu 변경 방법 및 그장치 | |
CN104270475B (zh) | 基于NAT64实现IPv4网络与IPv6网络互通的系统及方法 | |
CN100563215C (zh) | 一种报文路由交换装置及其方法 | |
CN102255982A (zh) | 一种IPv4/IPv6转换网关以及转换方法 | |
CN101227373A (zh) | 基于无状态映射的IPv4和IPv6网互通的方法 | |
KR100896438B1 (ko) | IPv6를 IPv4네트워크망으로 터널링하기 위한 시스템및 IPv6패킷 변환방법 | |
CN100518147C (zh) | 一种基于双向隧道的实现跨异构网络移动通信的方法 | |
CN105515995B (zh) | 报文处理方法及装置 | |
US20150032898A1 (en) | Method for establishing a virtual community network connection and a system for implementing said method | |
CN102523312B (zh) | 一种4over6场景下的最优隧道选择方法 | |
CN101262410B (zh) | 基于nat-pt的dns应用层网关的实现方法 | |
CN100563241C (zh) | 一种网络过渡接入的方法 | |
CN100388673C (zh) | 站内自动隧道的实现方法 | |
CN1476206A (zh) | 一种利用双重隧道机制穿透nat的方法 | |
US20020015407A1 (en) | Method for transmitting information by means of data packets and network for transmitting data | |
Chen et al. | Analysis of IPv6 network communication using simulation | |
Sivaprakash et al. | Configuring linux system for internet protocol based multimedia communication network [J] |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110615 Termination date: 20150608 |
|
EXPY | Termination of patent right or utility model |