您好、欢迎来到现金彩票网!
当前位置:秒速快三 > 双栈系统 >

基于linuxipv4v6虚拟隧道路由器设计pdf

发布时间:2019-06-19 01:26 来源:未知 编辑:admin

  1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

  中 文 摘 要 IPv6被认为是下一代互联网的核心协议。IPV4地址资源已经枯竭的状况加速了 内并存,IPv6网络是IPv4网络海洋中的孤岛。IPv6孤岛之间通信有两种方式来组网: 一、IPv6孤岛之间直接建立物理链路连接;二、在IPv4网络中建立IPv6隧道来实 现。IPv4节点与IPv6节点通信需要一些过渡机制,包括双栈技术、隧道技术和转换 技术等。隧道技术是实际应用中广泛采用的一种方式。目前可用的隧道技术比较多, 软件包。该软件包可以应用在各种网络环境中,包括连接到互联网的私有网络。 主要研究工作如下: 首先,利用协议软件学习和分析了IPv6协议族,包括IPv6规范、IPv6地址结 构、ICMPv6、邻节点发现协议、无状态地址自动配置协议和IPv6穿越以太网。然后, 在Linux操作系统下,用C语言作为编程语言,利用虚拟网卡技术在用户空间层开 发了基于L刀)P的虚拟隧道通信软件包。软件包包括一个客户端和一个服务器端,支 持Linux平台。服务器作为虚拟隧道路由器为客户端提供隧道服务,隧道类型为 IPv6.in.UDP,提供认证和加密手段。软件主要协议包括隧道会话协议和虚拟网卡隧 道化方法。软件包主要解决的问题有:一、设计和实现了一种隧道会话协议;二、 设计并实现了一种基于RSA的密钥交换算法,实现了数据报文的加密和解密;三、 实现了客户端自动配置IPv6全球地址;四、实现了一种用排序二叉树解决冲突的哈 希表,用于DV4网络和IPv6网络边界节点处进行数据包转发。 最后,利用HEXGO Gateway6 环境,对软件进行了测试,分析了实验结果。 论文分为6章:绪论、IPv6协议族分析研究、开发平台、虚拟隧道路由器设计 与实现、测试与分析和结束语。 关键词:IPv6;虚拟隧道路由器;UDP;Linux ABSTRACT IPv6isconsideredacore ofnext internet.The protocolgeneration rising and theIPv4 connecteddevice will ofinternet applianceeventuallydeplete IPv4 address situationwill thetransitionfrom networks up space.The speed the ofthe toIPv6networksin countries.In transition,IPv4 many beginning andIPv6networkswillcoexistfora oftimeandIPv6 networks period routers networkswhichare fromeachothertheintermediate separated by ocean.Therearetwo thatknowofIPv4areislandsintheIPv4networks only linesare betweentwOIPv6islands.Oneisthatleased toconnect way ways otheristhattunnelsareset intheIPv4networksocean. established,the up betweenIPv4andIPv6nodesneedsometransition Communication mechanisms.Itincludes:Dual andNAT-PTandSOon. Stack,Tunneling isa and isawide of widelyacceptedway.There range Tunnelingpractical as andTEREDOetc. availablesuchISATAP,6T04 protocols tunneling These havetheir andweaknesses Howevertunneling strengths protocols withindifferentscenariOS. This abasedUDP solutionsofteware designed tunneling package paper router nodesconnecttoaserverwhichactsasavirtual thatiStohaveclient services.Itis tobesuitableforall of tunneling designed types providing locatedinvariousnetwork hostswhichare private allIPv4NetworkAddressTranslator. networks tointemetbehind connecting workareasfollows: Themainresearch network asa and IPv6 tool,studyanalyze First,usingprotocolanalyzer includes: protocolfamily.It 1.Internet 2.IPVersion6 Architecture; Addressing Protocol Control theIntemet 3.Intemet MessageProtocol(ICMPv6)for Version 6(IPv6)Specification; forIPversion Discovery 6(IPv6); 4.Neighbor III 5.IPv6StatelessAddress Autoconfiguration; Packets Networks. 6.TransmissionofⅡ~6 overEthernet software basedUDPvirtualtunnel Then,a package tovirtualnetwork C asa relating card,usinglanguageprogramming and on intheLinux language,isdesigneddevelopeduserspace operating thetunnelis includesaclientanda server.Theof system.It type IPv6一in—UDEThesoftwareoffersauthenticationand the includetheTunnelSession VirtualNetwork protocols Protocol(TSP)and Card resolved: TunnelingMethod(VNCTM).It and ofaTunnelSessionProtoc01. 1.Designimplementation ofa AES basedRSAand 2.Implementationexchangekeyalgorithm packets encryption/decryption. ofStatelessAddress at 3.Implementationglobal clients. ofahashtablewith sorttreesolutiontothe 4.Implementation binary conflict.It Linux at onlysupportsplatformpresent. Atlast,settestenvironmentwithHEXGO client up Gateway6 to the the software connectinghttp://906.net,test package,andanalyze result. This isdividedintosix paper protocol researchand and of family analysis,developmentplatform,designimplement virtualtunnel and router,testing analysis,summarization. tunnel words:IPv6;Virtualrouter;UDP;Linux Key 图表目录 表1.1 基于虚拟网卡的软件包【7】.…………………………………………………3 表1.2基于虚拟网卡软件包的特点【7】.……………………………………………4 图1.1第一种角色…………………………………………………………………6 图1.2第二种角色…………………………………………………………………7 表2.1 本文研究IPv6的有关RFC………………………………………………..9 图2.1 IPv6报头格式…………………………………………………………….10 图2.2通信流类别字段……………………………………………………………11 表2.2 IPv6地址结构规范发展历程…………………………………………….12 表2.3 RFC4291定义的地址类型……………………………………………….12 表2-4校验和规范………………………………………………………………。13 图2.3路由器请求报文校验和报头……………………………………………..13 表2.5 ICMPv6规范………………………………………………………………14 表2-6ICMPv6报文类型…………………………………………………………14 表2.7邻节点发现协议…………………………………………………………..15 图2.4邻节点请求报文…………………………………………………………。16 表2.8邻节点请求报文举例说明………………………………………………..17 图2.5邻节点公告报文…………………………………………………………..17 表2-9邻节点公告报文……………………………………………………………18 9 图2-6路由器请求报文……………………………………………………………1 表2.10路由器请求报文举例说明………………………………………………19 图2.7路由器公告报文…………………………………………………………..20 表2.11路由器公告报文…………………………………………………………21 表2.12无状态地址自动配置协议………………………………………………23 图2-9以太网帧…………………………………………………………………………………………25 表2.13常见的以太网类型字段…………………………………………………25 表2—14以太网多播地址…………………………………………………………26 图2.10MAC与EUI.64………………………………………………………….26 图2.11IPv6多播地址与链路层组播地址………………………………………26 IX 表3.1 MySQL软件包……………………………………………………………28 表3.2 OpenSSL软件包………………………………………………………….28 表3.3编译选项…………………………………………………………………..28 表3-4与网络配置有关的重要文件……………………………………………..29 表3.5网络参数……………………………………………………………………30 表4.1 不同速率以太网接口分析………………………………………………….31 图4.1 虚拟隧道路由器服务器端………………………………………………..32 图4.2虚拟隧道路由器的客户端………………………………………………..33 图4.3 UDP客户/服务器的套接字函数模型…………………………………….34 图4-4服务器与客户端线程通信模型…………………………………………..35 图4-6进程与线程同步…………………………………………………………37 图4.7快速转发数据结构………………………………………………………..38 图4.8会话协议结构……………………………………………………………。45 图4.9文件传输过程………………………………………………………………47 图4.10密钥分发过程………………………………………………………………48 表4.2虚拟网卡接口标志测试……………………………………………………57 图4.11组网逻辑图…………………………………………………………………62 图5.1测试方案……………………………………………………………………65 图5.2Gateway6客户端连接状态………………………………………………67 表5.1P玳G结果…………………………………………………………………73 图5.3 在隧道路由器端接口eth0获取的协议………………………………….75 表5.2DNS查询………………………………………………………………….76 表5.2 DNS响应………………………………………………………………….77 表5.3与基于虚拟网卡的VPN软件比较………………………………………78 X 声尸 明明 本人郑重声明:所呈交的学位论文,是本人在指导教师的指导下, 独立进行研究所取得的成果。除文中已经注明引用的内容外,本论文 不包含其他个人或集体已经发表或撰写过的科研成果。对本文的研究 做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的 法律责任由本人承担。 oo 作者签名:作者签名: 7东堡囊.r尔鲨段‘ . 日期日期: 2 7.亨.垆 关于学位论文使用权的说明 本人完全了解太原科技大学有关保管、使用学位论文的规定,其 中包括:①学校有权保管、并向有关部门送交学位论文的原件、复印 件与电子版;②学校可以采用影印、缩印或其它复制手段复制并保存 学位论文;③学校可允许学位论文被查阅或借阅;④学校可以学术交 流为目的,复制赠送和交换学位论文;⑤学校可以公布学位论文的全 部或部分内容(保密学位论文在解密后遵守此规定)。 ≯∞17r.箩.严 作者签名: 芏盘缘星 El苴日.期: 卢川f’7‘/ 导师签名: ![逢盆碰生 日期:趁三望:复!生: 第一章绪论 第一章绪论 你能学会用世界上所有的语言来叫一种乌的名字,但当你知道了所有这些名字 的叫法之后,对这种乌却还是一无所知……所以,让我们来观察这只鸟,看看它在 干什么一一一这才是最重要的。我很早就明白了知道一个事物的名字和了解这个事 物是不同的。 理查德·费曼∞ 1.1研究背景 以理查德·费曼的名言作为论文的开场白,是觉得他的话很有哲理,特别是对于 从事研究工作的。虽然IPv6技术现在也算不上是新生事物,但对大多数人还是陌生 的,也许你还感觉不到它的存在。如果你是一个公司的技术主管,你很可能现在遇 到一个很现实的问题,到电信部门申请IPV4地址越来越困难。如果你在家里通过电 话线上网,细心的人会发现,你使用的IPv4地址很可能是一个已经分配给其它地区 使用的地址,或者网络接口经常分配不到IPv4地址,特别是在一些大中城市中。这 些细节只是现在互联网发展暴露出问题的冰山一角。 现在的互联网是指用分组交换技术进行松散互连的、基于TCP/IP协议族的全球 计算机网络。互联网中的每个节点(包括主机和路由器)上的接口都有一个惟一的 IP地址才能进行互相通信。IP地址作为互联网中最基础的地址资源,是互联网发展 的基石。互联网名称与数字分配机构(ICANN)负责网络协议地址空间的分配。当前, ICANN可分配的IPv4地址资源已经枯竭。据统计,按照现行的分配政策,全球所剩 年6月底,中国网民数量达2.53亿人,中国网民规模已跃居世界第一位,但是目前所分 临短期内用完的形势【l】。因此,如果不能顺利过渡到IPv6,那么“IP地址枯竭影响上网” 就不是危言耸听。 当前,随着互联网IPv4地址资源枯竭时间表已经进入倒计时,世界各国IPv6的发 展在政府、科研机构以及运营商等层面逐渐呈现加速态势,积极向基于IPv6的下一 代互联网过渡。 从1995年起,我国各科研院所、大专院校开始跟踪IPv6技术并进行相关研究。 @Richard 献与施温格、朝永振一郎共同获得诺贝尔物理奖。提出了费曼图、费曼规则和重正化的计算方法,这些足研究量 子电动力学和粒子物理学的重要工具。编写多部物理学著作。1963年出版的《黄曼物理学讲义》,经过时间的考 验,直到今天还在大学里流行使用。 l 基于Linux的IPv4/v6虚拟隧道路由器设计 Level 0::/24@的地 6Bone②获得P—TLA(Pseudo.TopAggregation,伪顶级聚类)3FFE:321 址空间;并且建立了5条以Tunnel为基础的国际IPv6虚拟链路,直接连通美国、英 国和德国的IPv6网络,间接地与几乎所有现有的6Bone成员互联。 2003年我国启动中国下一代互联网示范工程(CNGI)【21,该项目的主要目的是 搭建以IPv6为核心的下一代互联网的试验平台。2007年,中国电信、中国网通和中 科院、中国移动、中国联通分别承建的中国下一代互联网示范工程CNGI示范网络 CNGI核心网项目通过国家验收。通过与各科研机构、设备制造商等在IPv6领域的 科学研究、业务开发与应用等方面的广泛合作,为产、学、研、用起了示范带头作 用。 在向基于IPv6的下一代互联网过渡中,IPv4与IPv6网络将在一段时间内共存。 在IPv6网络流行于全球之前,总是有一些网络首先使用IPv6协议栈并希望能够与当 前的因特网正常通信。为达到这一目的,研究者们必须开发出口V4/IPv6互通技术 以保证口V4能够平稳过渡到IPv6,除此之外,互通技术应该对普通用户做到“无缝”, 对信息传递做到高效。 1.2研究现状 1.2.1过渡技术现状 为了开展对于IPv4hPv6过渡问题和高效无缝互连问题的研究,国际上,因特网 工程任务组(IETF④)组建了专门的工作组(Working Stack) 性进行研究。目前已经出现了多种过渡技术和互连方案,主要有双协议栈(Dual AddressTranslator-Protocol Translator)[RFC2766][RFC4966]等。 1.双栈机制 所谓双栈机制【3l就是在一个节点同时安装IPv4和IPv6网络协议,节点使用相同 Ethemet 的链路层协议和传输层协议。在本文研究的以太网DIX V2规范中,链路层 采用一个协议字段来区分网络层协议。协议字段的值为0x0800表示上层协议是IPv4, 协议字段的值为0x86dd表示上层协议是IPv6。传输层的实现在不同的操作系统中有 Server 些差异。在WindowsXP和Windows2003中,双栈机制采用双栈结构⑤,IPv4 (IANA)。 Internet Task ④即111e EngineeringForce,主页为http://.org/。 @Dualstackarchitecture. 2‘ 第一章绪论 2008 实现。在WindowsServer和WindowsVista@中,双栈机制采用双IP层结构⑦, 8 传输层协议由相同的传输层驱动文件实现[41。在FEDORALINUX操作系统中,口V4 2008 和IPv6的传输层实现与WindowsServer和WindowsVista相似。对于同时安装 了IPv4和IPv6协议的节点,如果节点是主机,则它既能与IPv4节点通信,又能与 据包。 2.隧道机制 隧道是指将一种协议报头封装在另一种协议报头中进行通信的方式。在隧道的 两侧,封装协议是隧道的端点,被封装的协议报头是数据。IPv6隧道就是在具有双 栈机制的节点之间,将IPv6报头封装在IPv4报头中通过IPv4网络进行通信的方式。 在IPv6网络和IPv4网络并存的情况下,隧道机制【3】同双栈机制是密切联系的, 双栈机制是隧道机制实现的基础。双栈机制可以不需要隧道机制,但隧道机制离不 开双栈机制。 3.直接转换机制 直接转换机制是在IPv4和IPv6网络之间进行两种协议的转换。典型的技术是 通,由网络经营商进行投资,用户节点不需要变动。由于IPV4与IPv6协议不存在满 射关系,直接转换机制必然要带来一些弊病。例如,对于在加密的数据处理起来是 非常困难的。 1.2.2基于虚拟网卡建立隧道的研究现状 表卜1基于虚拟网卡的软件包Ⅲ Software basedontheVirtualNetwork TABLEl.1 Packages Adapterl7J 序号 软件 版本 发布时间 来 源 l vTun 3.0.1 2007.06.12 htW://vtun.sourceforge.net 2 2.1rcl32008.10.09 htW://oDenvon.sourcefor2e.net OpenVPN 3 AmritaVPN hRD:llv,wⅥ.amritatech.com/amritavDn.htm 4 mC 1.O.8 2006.11.1l htW://tinc.n1.1inux.orff 5 Htun httD://htun.runslinux.net 6 Yavipin0.9.6 2002.02.06 htW://vaviDin.sourceforge.net 和Solaris操作系统中驱动的作者为Maxim 作者为MaksimYevmenkin。在Linux2.4内核版本及后来的版本中,TUN/TAP驱动 。DualIP architecture. layer 3 基于Linux的IPv4/v6虚拟隧道路由器设计 是作为系统默认预先编译进内核中的。本文选择Fedora8Linux作为开发平台,发布 于2007年11月,内核版本为2.6.23.1-42.fc8,支持虚拟网卡和IPv6@【12】。 利用虚拟网卡,开发者可以在用户空间编写程序处理网络协议。虚拟网卡技术 为试验网络协议提供了良好的试验床。 目前,基于虚拟网卡建立隧道的解决方案中,支持Linux操作系统的开源代码 VPN软件见表1.1,其特点见表1.2。这些软件都采用隧道机制在用户空间(User Space) 实现。 隧道机制是政府部门和企业一直采用的用来构建虚拟私有网络(VPN)的技术。 VPN按隧道协议所属的层次划分主要有两类:基于链路层的VPN和基于网络层的 VPN。建立在链路层上的VPN,对电信部门的依赖性比较高,投资成本高,但因为 电路独占,通过一定的技术措施,安全性、保密性要比采用因特网VPN技术的高, 是政府部门、银行一直采用的手段。相反,使用公共P网络建立的VPN立即可以 在因特网上拥有属于自己的私有数据网络,而且不受时间、空间、地理位置的限制, 是企业构建VPN的理想选择。 表卜2基于虚拟网卡软件包的特点Ⅲ TABLEl-2TheFeaturesofDifferentVPNSolutionsbasedontheVirtualNetwork Adapter用 序号 功能 vTun AmritaVPN Tinc Htun YaviPin openVPN l 开源代码 是 是 是 是 是 是 2 认证方法 口令密码 证书 证书 RSA 口令密码 密码 3 blowfishBlowfish+ blowfish 机密性 不确定 不支持 不确定 4 完整性 不支持 MD5+ 不确定 SHA 不支持 MD5.96 5 压缩算法 Zlib。Izo 17.0 不确定 Zlib.1zo不支持 Zlib 6 隧道技术 IP.in.IP TP.i11.P P.i11.P 口.in.HrrPIP-in.PIP.m.IP 7 路由支持 不支持 不支持 不支持 支持 不支持 不支持 8 IPv6支持不支持 支持 不支持 支持 不支持 支持 密技术(Encryption&Decryption)-对称密码(Symmetriccryptography)、非对称密码 (Asymmetric 密钥管理技术(Key 的支持还需待加强。例如目前不支持多播转发。 @在Linux中,最早与网络有关的IPv6代码出现在1996年11月,由PedroRoque编写,内核版本为2.1.8。 @即PointtoPoint Protocol,点对点隧道协议。 Tunneling 2 Protocol,第二层隧道协议。 @即LayerTunneling IntemetProtocol,互联网简单密钥管理。 Key ¨即Simple 12即TheInteract KeyExchange,互联网密钥交换。 4 第一章绪论 如何从IPv4网络中接入IPv6网络将是向下一代互联网过渡遇到的问题之一。国 内对支持IPv6的软件VPN与国外相比有一定差距,而且由于商业利益目的,源代 码基本上不公开。目前,IPv6协议族还在不断的完善之中,支持IPv6的硬件路由器 比较昂贵。这些因素都不利于向IPv6网络过渡,亟待需要解决。 1.3研究内容和目标 1.3.1名词术语解释 节点:任何运行m实现的设备,包括主机和路由器。 主机:不能转发不是以它为目标节点的P数据包的节点。 路由器:可以转发不是以它为目标节点的D数据包的节点。 链路:以路由器为边界的局域网段。 接口:表示连接到一个链路上的物理或逻辑节点。 虚拟网卡:虚拟网络适配器的简称,它是一种设备驱动程序,就像真实物理网 络适配器一样,允许计算机连接到网络。 用户空间:与核心空间相对应,用户应用程序工作的内存空间,用户应用程序 的崩溃对操作系统没有影响。 数因式分解难题作为公钥系统的基础。 AES:即高级加密标准(AdvanceEncrypionStandard),一种块加密算法。 openSSL-一种著名的用C语言实现的开源密码算法开发包。 MySQL:世界著名的开源数据库。 For Comments(请求评议)的简称,包含因特网的技术和组织 RFC:即Request 文件。文件来自因特网工程任务组。 Tunnel VTRouter:本文设计的虚拟隧道路由器软件包名称,即VirtualRouter的 简称。 1.3.2研究内容 本文主要研究节点如何从PV4网络中接入IPv6网络中。 种情况:一是节点只拥有IPv4私有地址,二是节点拥有IPv4公共地址。 部署虚拟隧道路由器。虚拟隧道路由器充当两种角色:一是负责客户端的接入和数 据包的转发;二是与其它虚拟隧道路由器交换数据,向客户端通告接入IPv6网络孤 13 IPv4 NAT(NetworkAddressTraJlslator)最初在RFCl631定义,后被RFC3022废弃。 5 基于LlmⅨ的IPv4:,m虚拟隧道路由%设计 岛最近的虚拟隧道路由器信息。 1.虚拟隧道路由嚣充当的第一种角色 虚拟隧道路由器充当的第一种角色见图1.1。节点A通过砰v4网络接入IPv6网 络,口v6网络可能是如下两种情况之一。第一种情况是IPv6网络是某公司的站点, 但不接入IPv6网络电信骨干网与其他IPv6站点连接。第二种情况是IPv6网络是某 公司的站点,但接入某运营商的IPv6网络电信骨干网与其他IPv6站点连接。 圈卜l第一种角色 FIGUREl·lFi瞰Scerla^O 协议。 IPv4网络:是一个IPv4私有网络或是一个口“公有网络或是IPv4私有网络和 公有网络的混合。 节点B:配置双网卡的计算机,充当IPv4网络和IPv6网络之问的虚拟隧道路由 器。 IPv6网络:运行IPv6协议的网络。 节点C:安装IPv6协议但不安装IPv4协议的主机。 2.虚拟隧道路由器充当的第二种角色 节点E和节点F所在的IPv6网络是孤立的,虚拟隧道路由器部署在IPv6网络 问的IPv6网络部署在北京,也可能部署在纽约,中间虚拟隧道路由器节点C和D当 作接入路由器的任务,充当服务器角色。虚拟隧道路由嚣所处的位置见图I-2。其中: 节点A和节点B:具有IPv4公有IP地址或私有口地址的主机,同时安装IPv4 和口v6协议。 IPv4网络:IPv4私有网络和公有网络 节点C和节点D:配置双网卡的计算机,充当IPv4网络和IPv6网络之间的虚 拟隧道路由器,除了做为IPv4网络中主机的接入隧道服务器,还要互相通过皿Ⅵ 网络建立隧道连接,完成相互通告路由信息的任务,同时负责将位于IPv4网络中的 第一章绪论 主机接八IPv6网络中。 IPv6网络:运行IPv6协议的网络。 节点E和节点F:安装IPv6协议但不安装IPv4协议的主机。 囤l_2第二种唐色 FIGURE1-2SecondScenario 1.3.3研究目标 设计虚拟隧道路由器软件包,实现虚拟隧道路由器充当的第一种角色,解决lPv4 节点从IPv4网络中接入IPv6同络孤岛。IPv4网络可以是一个州私有网络或是一 个IPv4公有网络或是IPv4私有网络和公有网络的混合。隧道可以经过任意多级的 NAT、防火墙等设备。对网络设旄不作要求,只要用户能接入因特网即可,不需要更 改用户的网络结构。 1.4研究工作与成果 1.4.1研究工作 本文针对IPv6在用户空间中虚拟隧道路由器的实现技术进行研究,并分析和研 究有关的关键控制机制,主要内容包括: 1.学习mv6协议族,研究]Pv6协议如何在用户空间中实现。 2学习了Fedora8.0Linux操作系统及其内核编译的方法。 3.研究了虚拟网卡及其接口操作和套接口操作的系统调用方法。 4建立和研究了在用户空间中通过用户数据报协议(uDP)进行通信的模型,设 计在这种模型中进行传送数据包的协议和测试方法。 现了一种基于RSA的密钥交换算法,实现了对称算法密钥的交换。 6.学习和实现C语言调用MySQL数据库的方法。 7研究和实现了在用户空间中快速转发数据包的哈希表 基于Linux的IPv4/v6虚拟隧道路由器设计 1.4.2研究成果 设计和实现了虚拟隧道路由器软件包。软件包包括服务器端和客户端,支持Linux 操作系统。服务器作为虚拟隧道路由器为客户端提供隧道服务,隧道类型为 户端安装在IPv4网络主机。IPv4网络可以是一个口v4私有网络或是一个口v4公有 网络或是PV4私有网络和公有网络的混合。隧道可以经过任意多级的NAT、防火墙 等设备。对网络设施不作要求,只要用户能接入因特网即可,不需要更改用户的网 络结构。对接入用户的管理、配置很简单。支持虚拟局域网。 软件包主要解决的问题有:一、设计和实现了一种隧道会话协议;二、设计并 实现了一种基于RSA的密钥交换算法,实现了对数据报文的加密和解密;三、实现 了客户端自动配置IPv6全球地址;四、实现了一种用排序二叉树解决冲突的哈希表, 8 用于IPv4网络和IPv6网络边界节点处进行数据包快速转发。同时,分析了Fedora Linux平台对IPv6支持的状况,实现了对虚拟网卡编程。 软件包主要特点有:认证方法是12l令密码方式与RSA的组合;隧道方式采用 能穿越多级NAT。 14即用户数据报协议,这里UDP的下层协议是IPv4。 第二章IPv6协议族分析研究 l 第二章 Pv6协议族分析研究 网际协议(Intemet 一个版本。IPv6是下一代因特网协议,是网际协议的第二版。IPv4和IPv6协议互不 路由协议、过渡机制、移动IPv6等。本文主要研究了IPv6规范、IPv6地址结构、 ICMPv6、邻节点发现协议、多播帧听者发现协议、无状态地址配置协议以及IPv6 穿越以太网。目前,IPv6是一个非常活跃的研究领域,不断有IPv6相关的RFC推 出,IPv6协议族中还没有形成最终标准,大部分标准处于草案标准阶段。本文对IPv6 相关的RFC的研究截止到2008年7月1日。这一章主要介绍了研究虚拟隧道路由 器过程中,实现Dv6协议族时,遇到的问题和解决的办法,更多的IPv6知识和资料 网,有关RFC见表2.1。 表2-1本文研究IPv6的有关RFC TABLE2-1 that RFCsofIPv6Relatedtothe Paper 协议名称 最新RFC 历史RFC IPv6规范 RFC。2460 RFCl883t14】 IPv6地址结构 lUC429l RFC2373、RFCl884 ICM口v6 I己FC4443 RFC2463、RFCl885 邻节点发现协议 RFC4861 RFC246l、RFCl885 无状态地址配置协议 l讧C4862 RFC2462、RFCl97l IPv6穿越以太网 l心C:2464 I强C1972 2.1 IPv6规范和地址 2.1.1 IPv6规范 IPv6是网际协议的第二个版本,IPv6主要特性包括:扩展了地址结构,提供了 有效的、分级寻址的地址结构;重新设计了报头格式,减少了处理包的开销和限制 了报头带宽开销,提高了路由器转发包的能力;提高了对扩展和选项的支持;提供 了流标签支持:支持认证、数据的完整性和机密性。 为40个字节,字段包括:版本、通信流类别、流标签、有效载荷长度、下一个报头、 跳限制、源地址和目的地址共8个字段。 版本长度为4位,值为6,路由器一般不处理该字段。IP层协议的版本是通过 标准,最初在RFCl883中定义,1998年12月被RFC2460废弃。 。在疋首部,前4位是协议的版本。IPv4的值为4,IPv6的值为6。值5是为流协议保留,见RFCl819。 9 基于Linux的IPv4/v6虚拟隧道路由器设计 链路层报头中的协议字段来标示的。在DIX EthemetV2规范中,对于IPv6数据包, 以太类型字段的值为0x86DD。 通信流类别字段表示IPv6数据包的类或优先级,以利用实现对特定用户或特殊 应用提供优先服务。该字段的默认值为0。该字段在RFC2460中还是试验性的,有 待逐步标准化。提供IPv6服务的接口在上层协议中必须提供对通信流类别字段的支 持,才能与发送该数据报文的源节点进行通信。目前,在RFC2474t16】中以区分服务 (DifferentiatedServices)字段的形式,为通信流类别字段提供了一个可替换的定义。 RFC2474的状态为草案标准。DS字段低6位表示区分服务码点,高2位目前未用。 区分服务可以划分为不同的DS域,区分服务的主要成员包括核心路由器、边缘路由 器和资源控制器。在DS域中,核心路由器根据区分服务码点选择码点所对应路由器 进行转发处理,边缘路由器对业务流分类、整形、标记和调度等,资源控制器配置 管理规则。 0 1 2 3 4 5 6 7 l 。 。 。 ‘ I ● l l l 版 通信流类 下一个报 流标签 有效载荷长度 跳限制 8 太 别 头 I I I I I I I I I I I I ‘ I 。 l I 。 ‘ ‘ 16 源地址 一 一 24 - I I I I I I l I I I I I I l 。 ‘ 。 。 。 。 ‘ l I I I I I I 32 一 目的地址 一 40 I I I I I I I l I l I l I I I 图2—1 IPv6报头格式 FIGURE2.1 IPv6HeaderFormat 流标签字段可以用来表示源节点和目的节点之间的一个特定数据包序列,用于 非默认的QoS连接或实时服务,需要路由器特殊处理。在源节点和目的节点之间存 在多个流时用不同的非零流标签来区别。目前该字段还是试验性的,需要进一步标 准化。该字段的默认值为O,表示当前数据包不属于流。流的值有效范围为1--0xFFFF。 节点流的惟~性通过源地址和非零流标签来确认,属于同一个流的数据包具有相同 的源地址、目的地址和非零流标签。流数据包包含的扩展报头可能有逐跳选项报头 或路由报头。不支持该字段的主机和路由器收到数据报时忽略该字段。 有效载荷长度字段表示IPv6有效载荷的长度,包括IPv6扩展报头和上层协议数 10 第二章IPv6协议族分析研究 据单元。该字段可以表示最大长度为65535字节的有效载荷。如果有效载荷的长度 大于65535字节,则会将有效载荷长度字段的值置为0,而有效载荷的长度用逐跳选 项扩展报头中的超大有效载荷选项来表示。路由器在收到IPv6数据包时会检查该字 段的值,如果转发接口的链路MTU小于IPv6报头长度+有效载荷长度字段的值,则 发送ICMPv6数据包过长报文给数据包的源节点,并丢弃该数据包。 0 1 2 3 4 5 6 7 区分服务码点 目前未用 图2—2通信流类别字段 FIGURE2.2 T阳伍cClassFiled 下一个报头字段③表示IPv6扩展报头类型或上层协议数据单元中的协议。每个 中间路由器必须处理的惟一一个扩展报头是逐跳选项扩展报头。逐跳选项扩展报头 本文不再赘述。 跳限制字段表示口v数据包在被丢弃前可以通过的最大链路数。路由器收到一 个IPv6数据包时将跳限制字段的值减1,如果结果为0,路由器向源节点发送ICMPv6 超时.跳限制超时报文,并丢弃数据包。 源地址和目的地址分别表示源节点和目的节点的IPv6地址。如果数据包包含路 由扩展报头,则路由器需要处理路由扩展报头,目的节点IPv6地址为下一跳路由器 地址或目的主机地址。路由器使用目的地址字段中的值和路由表中的内容,来确定 转发接口和下一跳的IPv6地址。 在IPv6中,中间路由器必须处理IPv6报头字段⑤包括:有效载荷长度、下一个 报头、跳限制和目的地址字段。 2.1.211、6地址 见表2.2。 IPv6地址为128位,包括单播地址、多播地址和任播地址,取消了IPv4中的广 @在IPv4中,有一个协议字段;在IPv6中,有一个下一报头字段。它们都是用来标识上层协议。协议编号分配 指导在RFC5327中定义。IPv6协议编号为41。 @逐跳选项扩展报头的值为0,在RFC5095中建议取消。 o在IPv4中,中间路由器必须处理的报头字段为6个:校验和、版本、生存时间、报头选项、目的地址、报头 长度。 11 基于Linux的IPv4/v6虚拟隧道路由器设计 播地址。在RFC4291以前的规范中,单播地址包括链路本地地址、站点本地地址和 全球单播地址。在RFC4291规范中,取消了站点本地地址,同时也取消了过渡机制 中使用的兼容PV4单播地址。所有类型的IPv6地址被分配给接口,而不是节点,接 口属于一个节点,任何接口的单播地址可以用作节点的一个标识符。所有接口至少 需要一个链路本地单播地址,一个接口可能拥有多个地址,这些地址可能是单播地 址、多播地址和任播地址。 表2-2IPv6地址结构规范发展历程 TABLE2-2IPv6 Architecture Addressing 编号 日期 状态 说明 RFC4291 2006.02 草案标准 目前最新 RFC3513 2003.04 建议标准 被RFC4291废弃 RFC2373119】1998.07 1 建议标准 被RFC353[20】废弃 lUCl884 1995.12 历史(曾作为草案标准) 被RFC2373废弃 表2-3RFC4291定义的地址类型 TABLEAddressatRFC4291 2-3 Type 地址类型 二进制前缀 IPv6表示 未指定地址 00…0(128位) ::/128 同环地址 00…1(128位) ::l/128 多播地址 11111111 FF00::/8 链路本地单播地址 lllllllOl0 FE80::/10 全球单播地址 其余所有 在IPv6网络中,主机需要识别的地址包括:链路本地地址、任何附加的单播和 任播地址、回环地址、所有节点的多播地址、单播和任播请求节点多播地址和同组 的多播地址;路由器除了需要识别主机识别的所有地址还外,还包括:所有路由器 多播地址、子网路由器任播地址和路由器配置的其它任播地址。 如果对一个子网中主机的地址没有特定要求时,则可以使用无状态地址配置方 法。通过使用无状态地址配置方法可以为节点产生两种地址:链路本地单播地址和 全球单播地址。 2.2 IP、,6上层协议校验和 文主要通过IPv6报头上层协议和链路层进行差错校验。常见的IPv6上层协议有: 的地址、上层数据包长度和下一个报头字段,其中上层数据包长度字段表示上层协 议数据单元的长度,下一个报头字段表示上层协议。下一个报头字段TCP的值为 0x06,UDP为0xll,ICMPv6为0x3a。 如果IPv6数据包中包含路由扩展报头选项,在数据包起始节点,IPv6报头目的 12 第二寻 IPv6协议族分析研究 地址为下一跳路由器地址,伪报头目的地址为最终目的地址,最终目的地址为路由 扩展报头目标地址中最后一个地址。在数据包接收端,伪报头目的地址为IPv6报头 目的地址。路由器一般不对数据包检查校验和。 表2-4校验和规范 翻BLE2-4IntemetChecksUlII 编号 同期 状态 说明 RFCl624121】1994.05 一般性信息 目前最新 RFCI141122] 1990.0l 一般悼信息 被RFCl624更新 RFCl071【23】 1988.09 不详 被RFCll41更新 本文以邻节点发现协议中路由器请求报文为例说明校验和过程。邻节点发现协 议是ICMPv6协议的子协议,其下一个报头字段值也为0x3a。路由器请求报文校验 和报文的数据结构见图2.3。 0 1 2 3 4 5 6 7 8 一 源地址 一 l6 IPv6伪报头 24 一 目 的地址 一 32 上层数据包长度 零 协议 40 + 类型 代码 校验和 保留 48 路由器请求报文 类型 长度 源链路层地址 56 图2-3路由器请求报文校验和报头 FIGURE2-3RouterSolicitationChecksum Message 当进程发送路由器请求报文时,要把路由器请求报文和IPv6伪报头一起计算校 验和。校验和初始值为0,其它字段按字段相应的值来填充,其中各个字段的值为网 络字节序。计算时把整数数组指针指向结构体,整数为4字节,然后从数组第一个 元素开始,和数组第二个元素相加,将计算结果的进位值和计算结果的低位4字节 值再相加得到第一次校验和。接着,将第一次校验和和数组第三个元素按前面算法 计算得到第二次校验和。按以上方法计算完数组得到~个4字节的校验和。最后, 将4字节的校验和的高2字节和低2字节相加,将计算结果的进位值和计算结果的 低位2字节值再相加得到最后的2字节校验和,然后填充校验和字段,将路由器请 求报文发送出去。 基于Linux的IPv4/v6虚拟隧道路由器设计 当进程收到路由器请求报文时,计算方法与前面计算方法一样,只是计算结果 应该为零,否则接收到的报文校验和错误。 2.3 ICMPv6 表2-5ICMPv6规范 TABLE2.5 lC^仉)、6 编号 日期 状态 说明 RFC4443[241 2006.03 草案标准 目前最新 RFC2463[25】1998.12 草案标准 被4443废弃 RFC1885[26] 1995.12 建议标准 被2463废弃 IPv6的网际控制报文协议规范的最新标准为RFC4443,该标准的状态为草案标 修订,见表2.5。 表2-6ICMPv6报文类型 TABLE2-6ICMPv6 MessageType 类型 名称 参考luC类型 名称 参考RFC l 目的地不可达 RFC4443140 lCⅧ节点信息响应 RFC4620 2 数据包过长 RFC4443141 反向邻节点发现请求报文 RFC3122 3 超时 RFC4443142 反向邻节点发现公告报文 RFC3122 4 参数问题 I强C4443143 版本2多播帧听查询报文 RFC3810 100 私人试验 RFC4443144 家乡代理地址发现请求报文 l玎C3775 101 私人试验 RFC4443145 家乡代理地址发现响应报文 RFC3775 127保留为差错报文扩张 RFC4443146 移动前缀请求报文 l讧C3775 128 回送请求报文 RFC4443147 移动前缀公告报文 RFC3775 129 [口1送应答报文 RFC4443148 证书路径请求报文 RFC397l 130 多播帧听查询报文 RFC2710149 证书路径公告报文 RFC397l 13l RFC27lO150 RFC4065 多播帧听报告报文 被试验的移动协议ICMP报文 132 多播帧听已完成报文 RFC271015l 多播路由公告报文 FuFC4286 133 路由请求报文 RFC4861152 多播路由请求报文 RFC4286 134 路由公告报文 fuFC4861153 多播路由终端报文 I汪C4286 135 邻节点请求报文 RFC486l154 FMIPv6报文 FuFC5268 136 邻节点公告报文 RFC486l200 私人试验 RFC4443 137 重定向报文 RFC486120l 私人试验 RFC4443 138 路由地址变更 Crawford255 保留为信息报文扩张 RFC4“3 139 RFC4620 ICMP节点信息查询 的诊断功能和附加的主机功能。每个IPv6节点必须完全实现ICMPv6。网际控制报 文协议的IPv6版包括差错报文和信息报文。差错报文类型在0.127范围内,信息报 文类型定义在128.255范围内。目前定义的ICMPv6报文见表2-6。 2.4邻节点发现协议 2.4.1邻节点发现协议介绍 邻节点发现协议规范的最新标准为RFC48611271,该标准的状态为草案标准。该 14 第二章IPv6协议族分析研究 IPv6的邻节点发现过程是用~系列邻节点发现协议的报文和步骤来确定邻节点 之间关系的过程。节点(包括主机和路由器)使用邻节点发现协议来解析邻节点的 链路层地址和更新邻节点高速缓冲失效的链路层地址。 节点使用邻节点发现协议解析邻节点的链路层地址,更新节点缓冲区中的链路 层地址,确定邻节点是否可达。主机使用邻节点发现协议确定链路本地地址,发现 相邻的路由器,自动配置地址等。路由器使用邻节点发现协议公告自己的存在、主 机的配置参数、路由和链路上出前缀,通知主机发往指定目标的数据包有一个更好 的下一跳地址。 邻节点发现协议解决了同一个链路上节点之间一系列问题,包括:路由发现、 前缀发现、参数发现、地址自动配置、地址解析、确定下一跳、邻节点不可达检测、 重复地址检测和重定向。邻节点发现协议定义了5种类型的ICMPv6报文:路由器 请求报文、路由器公告报文、邻节点请求报文、邻节点公告报文和重定向报文。这 些报文的功能如下: 表2-7邻节点发现

  “原创力文档”前称为“文档投稿赚钱网”,本网站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】

http://poisondarts.net/shuangzhanxitong/139.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有