基于透传的IPv6个人区域网无线网关设计

2014-07-02 00:30刘本仓邹家宁
电视技术 2014年23期
关键词:链路层网关数据包

刘本仓,邹家宁

(河南理工大学计算机科学与技术学院,河南焦作454003)

基于透传的IPv6个人区域网无线网关设计

刘本仓,邹家宁

(河南理工大学计算机科学与技术学院,河南焦作454003)

主干网络设备和操作系统支持IPv6协议的请况下,大量的个人区域网网关仅使用IPv4地址转换的方式连接互联网,不能支持IPv6,提出一种数据链路层透传的数据包处理方式,使IPv6数据直接通过网关,减少地址转换或者中间代理的过程,实现内部网直接接入IPv6网络。经分析和实验,该设计方法在不影响IPv4使用的情况下使个人区域网内部设备顺利接入IPv6网络。

IPv6;数据链路层;个人区域网;无线网关

个人区域网[1]是用于小范围的内部网络,用来互连个人网络设备,并使用网关连接互联网。个人区域网通常使用私有IP地址,对外隐藏内部结构,主要原因是IPv4地址已经严重不足。IPv4地址已经在2011年分配完毕,同时大量的智能终端、智能家电和移动设备出现,这大大增加了对IPv6的需求。目前,主流网络设备和操作系统已经支持IPv6协议,应用层软件也逐渐兼容IPv6协议。在高校校园网中IPv6协议应用最为广泛,数据流量已经接近IPv4的数量级别。由于IPv6和IPv4在数据包格式上并不兼容,两种数据不能直接互操作,这严重限制了个人区域网对IPv6的访问。

在IPv6应用的过渡阶段[2],有多种解决互通问题的方案,主要有如下几种方式:1)NAT-PT地址转换; 2)隧道方式[3];3)双协议栈。

1 个人区域网面临的问题

在个人区域网边界,通常使用无线网关来连接互联网,无线网关运行网络地址转换协议,把内部私有IP地址转换成互联网地址。同时无线网关也屏蔽了网络内部结构,隐藏内部主机IP地址,这就造成内部主机无法与外界对等通信。IPv6数据包也不能被网关识别,无法进入网络内部,形成IPv6孤岛。大量个人区域网的出现,阻碍了IPv6数据的联通性,形成IPv6障碍的最后环节。本文主要讨论个人区域网接入外部双协议栈网络的实现方式。

目前针对个人区域网网关接入IPv6的解决方案,主要分为地址转换和代理。

1)地址转换方式类似NAT-PT,在网关上分别运行两个协议栈的地址转换进程,IPv4地址继续使用原有方式。网关对内作为一个IPv6路由器,为内部网络分配地址,进行数据的收发;对外作为一个IPv6终端,发现外部IPv6网络,自动配置外部IPv6地址,在内外网之间进行IP地址的一一对应替换。相比IPv6/IPv4地址转换省去了端口复用和有状态转换,效率大大提升。依然没有解决IP地址的对等问题和应用层数据转换问题。

2)代理方式是在内部运行一个 IPv6协议,作为IPv6路由器,对内发布IPv6地址前缀,与第一种方式不同的是需要在路由器上配置与外部相同的前缀信息,网关无需做地址转换,只需要转发数据包即可。这种方式省去了地址转换过程,但无法通过邻居发现协议保证IPv6地址的唯一性。

2 基于链路层透传的设计

2.1 原理分析

IPv6和IPv4都是网络层协议,与其下层的数据链路层通信接口是完全相同的。在以太网中数据链路层数据帧格式如图1所示。

图1 以太网帧格式

其中2 byte的类型字段标志上一层的协议,还表示帧的长度,含义只能根据数值取其一。在使用中,当字段值大于等于0x0600时表示协议类型,小于0x0600表示长度。其中值为0x0800表示上层协议为IPv4,0x0806表示上层协议为ARP,值为0x86DD时表示上层协议为IPv6。根据以太网帧类型的值可以区分开两个协议,可以在网关上做不同的处理。按照Linux内核处理数据包的方式,设计了图2所示的数据包转发流程,实现IPv4和IPv6的差别转发。

只听“三、二、一,奔跑吧,小主人”,我们的“战斗”便开始了。大家你追我赶,我们边防守,边组织进攻,玩得不亦乐乎。很多人都是在撕别人名牌的时候被另一个人偷袭,真是“螳螂捕蝉,黄雀在后”啊!最无奈的是我的好友杨宜凡,因为体力不支,实在是跑不动了,只能主动放弃,一个男生便过去把她的名牌撕了。我虽然也很累,但我不断地告诉自己,一定要为集体荣誉“战斗”到底。有个男生一直围着我转,我见情况不妙,“啪”的一声躺在了地上,那个男生见无机可乘,只好灰溜溜地走了……

图2 数据转发流程图

主要思想是在数据包进入到网关时,在数据链路层判断帧类型,如果是IPv6数据则进行桥接转发,数据包直接进入到网络内部,如果帧类型是IPv4或ARP,则数据包照常送到网络层,进行IPv4协议的处理。其中ARP类型是IPv4网络的底层基础,需要与IPv4同等处理;但是在IPv6协议中使用邻居发现协议来代替ARP,可以不用特殊考虑。

2.2 实现方法

Openwrt是支持多数无线路由器等网关设备的操作系统,它以Linux为基础,支持嵌入式平台,开放源代码,可以根据需要自行开发特殊功能。本文以Openwrt为基础实现IPv6的链路层透传,解决IPv6的互通问题。

Linux内核中已经集成netfilter、ebtables等数据包过滤处理机制[4-5],这些内核模块提供在不同层次对数据包检查的hook(钩子)。数据包从进入系统到从网络层面消失,要经过PreRoute,Input,Forward,Output和PostRoute共5个阶段,每阶段包括了一些hook节点,每个节点都是一个过滤时机。当数据包行进到某节点时,使用ebtables检测对应节点的过滤规则并进行过滤,或者调用hook来改变数据包内容和转发流向。

其中主要工作在数据链路层的ebtables适合于桥接处理,其配置分为表、链和规则三级。

在外网(Wide Area Network,WAN)口启用桥接,在接口上启用ebtables过滤,当WAN口接收数据时,在Broute阶段根据帧类型做出桥接判断,如果为IPv6类型则继续Forward链处理,直接把数据转发到Local Area Network(LAN)口,完成数据传输,否则将数据包转入上层,进入IPv4网络层做NAT处理。

在内网接口上也启用ebtables过滤,当内网口接收到收据时,同样在Broute阶段根据帧类型做出桥接判断,如果为IPv6类型则继续Forward链处理,直接把数据转发到外网口,完成数据传输,否则继续传输过程,进入IPv4网络层做NAT处理。

具体步骤如下:更改内核,加入IPv6、ebtables和iptables支持功能,IPv6支持用于对帧类型的判断,iptables用于对IPv4网的过滤,避免桥接后出现安全漏洞。设WAN口为 eth0,LAN口为 eth1、eth2,创建桥 br0,将eth0、eth1、eth2加入桥,在桥br0上配置IPv4地址,用来实现IPv4网络正常的地址转换。

ebtables-t broute-A BROUTING-i eth0–o!eth0-p!ipv6-j DROP //禁止外网IPv4直接进入内网

ebtables-t broute-A BROUTING-i!eth0–o eth0-p!ipv6-j DROP //禁止内网IPv4直接发到外网

ebtables-t broute-A BROUTING--logical-out br0–p!ipv6–j ACCEPT //非IPv6数据发往网关网络层

iptables-A FORWARD-m state–state NEW-m physdev!–physdev-in eth0-j DROP //外网防火墙

该方法设计的基于链路层转发的网关可以实现IPv6数据的透明传输,IPv4数据必须经过网络层处理后互通,防火墙规则屏蔽来自外网的攻击,保证了网关本身的安全。

3 互通性分析及测试

1)网络内外邻居发现。IPv6中邻居发现协议用来实现路由器的前缀发现、地址解析、下一跳地址确定、重定向、邻居不可达检测、重复地址检测等功能[6],使用ICMPv6协议的5种报文。这些报文都封装在IPv6数据包中,在数据链路层只对应一种帧格式,不会受到任何影响。

2)IPv6组播。IPv6组播使用组播地址用来标识一组接口,发往组播地址的报文被组播地址标识的所有接口接收。在数据包格式中使用ICMPv6作为发现协议,数据包与单播相同,在数据链路层没有区别,所以不会影响组播协议。

传统的地址转换和代理方式是基于源地址和目的地址的转换,仅适用于单播点到点传输,对于多播和广播则无法转发。本文研究的透传是在数据链路层实现,IP协议相关的特性完整的包含在数据包中,不存在互通障碍。

在TP-Link740无线路由上刷入修改后的操作系统,在大学校园网双栈环境下测试,无需复杂配置,可以实现IPv6的透传,访问外部IPv6网站和IPv4网站均正常,内外网之间IPv6数据相互收发正常,能保证IPv6网的对等性。

4 小结

使用基于数据链路层的IPv6数据透传,可以实现双协议栈下个人区域网的IPv6无缝接入,省去了地址转换或中间代理等过程,完整保持IP地址的对等关系,同时对组播、任意播等数据没有影响。省略了网关在网络层对数据包的处理,无需个人用户做额外配置,适用于性能较低的嵌入式设备。该方法解决了家庭、办公室等大量移动网络设备对IPv6的需求,有利于IPv6网络的普及和发展。

[1]张凤山,周正.聚焦IEEE802.15与无线个人区域网标准[J].无线电工程,2004,34(9):1-2.

[2]王晓峰,吴建平,崔勇.互联网IPv6过渡技术综述[J].小型微型计算机系统,2006,27(3):385-395.

[3]郭政慧,娄媛媛.校园IPv6网过渡方案研究与应用[J].河南理工大学学报:自然科学版,2011,30(4):459-461.

[4]王帅,刘雷,柴乔林.应用Netfilter框架基于NAT-PT的IPv4/IPv6转换网关的实现[J].计算机工程,2006,32(13):147-149.

[5]王德劲,杜仲.一种基于APESSID的智能流量控制方法[J].电视技术,2012,36(7):71-73.

[6]田军,张玉军,于东,等.邻居发现协议的形式化测试[J].计算机研究与发展,2001,38(12):1409-1417.

Design on Personal Area Network IPv6 Gateway Based on Link Layer Passthrough

LIU Bencang,ZOU Jianing
(College of Computer Science and Technology,Henan Polytechnic University,Henan Jiaozuo454003,China)

The rapid development of IPv6 protocol,prompting the backbone network devices and operating systems support IPv6 protocol.But a lot of personal area network gateway only usesmethod of IPv4 address translation to connect to the Internet,does not support IPv6,IPv6 popularity to become an obstacle.In this paper,amethod of data link layer packet pass-through is presented,itmake IPv6 data directly pass through the gateway,reducing or intermediate address translation or proxy process,directly connect to the IPv6 network.

IPv6;data link layer;personal area network;wireless gateway

TN915

B

刘本仓(1979—),工程师,研究方向为计算机网络技术;

�� 盈

2014-06-13考虑到系统整体总线状态控制和数据传输过程中的错误监测,USB接口不能达到理论上的12 Mbit/s数据传输速度。在实际应用测试中,数据采集部分连续采集数据并将数据暂存于Flash存储器中。读取数据时,采取“数据块”传输模式,其平均传输速率能达到9.6 Mbit/s。

【本文献信息】刘本仓,邹家宁.基于透传的IPv6个人区域网无线网关设计[J].电视技术,2014,38(23).

河南省科技攻关计划项目(122102210117)

邹家宁(1974—),讲师,研究方向为计算机网络技术。

猜你喜欢
链路层网关数据包
二维隐蔽时间信道构建的研究*
基于多空间内存共享的数据链路层网络包捕获方法
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
信号系统网关设备的优化
SmartSniff
基于FPGA全功能MVB网络从设备链路层IP核设计
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”
数据链路层的选择重传协议的优化改进
IEEE 1394事务层接口的设计与实现