最新
推荐
2014年高等教育信息化十大“关... 01-04 教育部成立教育信息化专家组 12-24
CERNET第二十一届学术年会 11-24 李志民:互联网促进人类文明迈... 11-15
|
Realize NAT-PT based on Libnet and Libipq Abstract: In order to solve the problem of IPv4 network communicating with IPv6 network, the NAT-PT was introduced. One method that realized NAT-PT based on Libnet as well as Libipq was put forward and implemented. Applications show that through this method IPv4 hosts and IPv6 hosts can freely communicate with each other. 1 引言 随着Internet的发展,IPv4协议的缺陷表现得越发明显,两个最大的问题就是地址资源耗尽和骨干路由器路由表规模爆炸。下一代IP协议IPv6有效地解决了这些问题,它具有庞大的地址空间、支持流媒体和完善的安全机制等优点,IPv6必会取代IPv4,但这是一个漫长的过程,目前网络资源绝大部分存在于IPv4网络环境中,必须保证纯IPv6网络和现有的IPv4网络能够相互访问。 目前在IPv4网络中部署IPv6网络的基本技术主要有3种:双协议栈、隧道和网络地址翻译/协议翻译(NAT-PT)。IPv4网络和纯IPv6网络通信需要使用NAT-PT技术。针对NAT-PT的各种实现方法,国内外都做了大量工作[1-2],但多数实现比较复杂。本文提出了一种基于Libnet和Libipq实现NAT-PT的方法。 本文的结构如下:第2节,介绍了NAT-PT的思想以及工作原理;第3节,介绍了Libnet和Libipq;第4节给出本系统的框架;第5节,结论。 2 NAT-PT机制 NAT-PT[3]是一种地址和协议转换技术,用来解决IPv4网络和IPv6网络互通的问题,该机制包括两方面的内容:IPv4/IPv6地址映射(NAT)和对IPv4/IPv6分组进行语义翻译(PT),其主要思想是在IPv4节点与IPv6节点通信时,借助二者之间的NAT-PT服务器,把数据报的网络层报头做IPv4与IPv6间的转换,以适应对方网络的协议类型。NAT-PT机制的工作原理[4](设IPv4主机发起会话): NAT_PT机制中至少有以下几个功能模块: 它的通信过程如下: 3 Libnet和Libipq Libnet是一个小型的接口函数库,提供了低层网络数据报的构造、处理和发送功能。Libnet的开发目的是建立一个简单统一的网络编程接口以屏蔽不同操作系统低层网络编程的差别,使得程序员将精力集中在解决关键问题上。 NetFilter是linux2.4内核中实现数据包过滤、处理和NAT等功能的框架。Libipq是NetFilter框架的重要组成部分。任何时候在任何NetFilter规则链中,数据报都可以被排队转发到用户空间去。用户进程能对数据报进行任何处理。处理结束以后,用户进程可以将该数据报重新注入内核或者设置一个对数据报的目标动作。 4 系统框架 本系统由三个模块组成:Packet_Capture、IPv4 to IPv6和IPv6 to IPv4,各模块功能和流程如下: Packet_Capture:该模块需要编译为内核可加载的模块,工作在内核空间,负责将符合要求的数据报复制到用户空间,由两个函数组成,分别注册到NetFilter框架下面的IPv4和IPv6的第一个钩子处(NF_IP_PRE_ROUTING和NF_IP6_PRE_ROUTING),这两个函数的功能类似,只是一个适用于IPv4,一个适用于IPv6。 IPv4 to IPv6:该模块工作在用户空间,利用Libipq函数库取得Packet_Capture截获的数据报,依据报头中的信息做出相应的处理,比如地址映射、报头变换、重新计算传输层校验和等并调用Libnet函数库将改变后的数据报发往网络的另一侧。 在进行协议转换的时候需要重新计算传输层协议(如果有)的校验和,在Libnet函数库中并没有为IPv6栈中的TCP校验和计算提供实现,需要自己计算校验和。具体的转换过程:以传输层使用TCP协议为例,调用libnet_build_data函数构造应用层数据,libnet_build_tcp_options构造TCP选项,libnet_build_tcp构造TCP协议头,libnet_build_ipv6构造IPv6协议头,libnet_write()发送数据报。 IPv6 to IPv4:该模块完成的功能与IPv6 to IPv4 恰好相反,把IPv6报头转换成IPv4报头,libnet函数库实现了IPv4栈中的TCP校验和的计算,所以使用libnet_build_tcp()构造TCP协议头时,传递的校验和参数可以为零,libnet函数库自动计算校验和。 5 结论 随着IPv6网络的普及,实现现有的IPv4网络和纯IPv6网络互通显得格外重要,NAT-PT作为一种实现IPv4网络和IPv6网络互通的技术得到了广泛重视。本文给出的实现方法具有以下优点: 注:基金项目 参考文献: |
版权所有:中国教育和科研计算机网网络中心 CERNIC,CERNET,京ICP备15006448号-16,京网文[2017]10376-1180号
关于假冒中国教育网的声明 | 有任何问题与建议请联络:Webmaster@staff.cernet.com