滕小玲 teng@pku.edu.cn 北京大学计算中心 IPv6技术讲座 现有Internet的基础是IPv4,到目前为止有近20年的历史了。由于Internet的迅猛发展,据统计平均每年Internet的规模就扩大一倍。IPv4的局限性就越来越明显。个人电脑市场的急剧扩大、还有个人移动计算设备的上网、网上娱乐服务的增加、多媒体数据流的加入、以及出于安全性等方面的需求都迫切要求新一代IP协议的出现。 因此,对新一代互联网络协议(Internet Protocol Next Generation – IPng)的研究和实践已经成为世界性的热点,其相关工作也早已展开。围绕IPng的基本设计目标,以业已建立的全球性试验系统为基础,对安全性、可移动性、服务质量的基本原理、理论和技术的探索已经展开。 90年代初,人们就开始讨论新的互联网络协议。IETF的IPng工作组在1994年9月提出了一个正式的草案“The Recommendation for the IP Next Generation Protocol”,1995年底确定了IPng的协议规范,并称为“IP版本6”(IPv6),同现在使用的版本4相区别;1998年作了较大的改动。IPv6在IPv4的基础上进行改进,它的一个重要的设计目标是与IPv4兼容,因为不可能要求立即将所有节点都演进到新的协议版本,如果没有一个过渡方案,再先进的协议也没有实用意义。IPv6面向高性能网络网络(如ATM),同时,它也可以在低带宽的网络(如无线网)上有效的运行。 在国际上,对IPv6的各项研究和实现已经展开。法国INRIA、日本KAME、美国NRL等研究机构,IBM、Sun Microsystems、Trumpet、Hitachi等公司,分别研制开发了不同平台上的IPv6系统软件和应用软件;Cisco、Bay等路由器厂商已经开发出了面向IPv6网络的路由器产品。1996年,一个以研究IPv6为目标的虚拟实验网络,国际IPv6试验床6Bone建立,欧洲、美洲、亚洲的许多国家和组织都已经加入了6BONE。1998年底,面向实用的全球性IPv6研究和教育网(6REN)开始启动。这期间以STAR TAP为依托的6TAP(IPv6 Transit Access Point)得以实施,建立了以ATM交换机为中心的IPv6洲际网络。今年,IETF确定IPv6进入实用阶段,并指定6Bone为对商用IPv6地址申请者进行评估的平台。 滕小玲 teng@pku.edu.cn 北京大学计算中心 2019/4/22
主要内容 为什么使用IPv6 IPv6主要特性 IPv6报头 IPv6地址 IPv6的发展历程 2019/4/22
为什么使用IPv6 The Case for IPv6 IPv4所面临的问题 暂时的解决方法 IPv4的地址严重匮乏 路由表急剧膨胀 网络安全 暂时的解决方法 NAT CIDR IPv4的网络地址是32位。 尽管IPv4的地址结构能够在理论上独特地识别出40亿个以上的不同节点,但这仍然远远不能满足对IP地址呈指数级增长的需求。而且IPv4的地址分配是按 A类、B类、C类网络来分配的,这种分配机智造成大量的地址浪费。比如,原来的体系结构将所有的IPv4地址的一半分配给了126个A类网络,每个A类网络都能处理1600万个节点。但是,有不少原本想用于大规模的全国性网络的A类地址很早就被麻省理工学院(MIT)、Stanford University 等精明的机构抢走了,而其中却没有几个机构能拥有那么多的节点,因此,很多地址空间被浪费了。类似的情况也出现在B类网络。至于C类网络,由于它最多只能处理254个节点,显然远远不能满足拥有1000个节点的企业的需求。而目前为止,我国网民的数量已经激增到1600万,而申请到的IP地址却只有900万个。可以预料,随着我国互联网用户数量的急剧增长,网络地址耗尽的现象将首先在中国出现。 NAT (Network Address Translation) 这种技术是使那些在Internet上不能使用的内部地址(比如10.0.0.0/255.0.0.0, 172.16.0.0/255.240.0.0 and 192.168.0.0/255.255.0.0)通过一种地址转换机智使之能和Internet交互。通常是一组内部地址共享一个有效IP地址。这种机制的局限性主要是明显的,它不能满足越来越多的网络应用的要求,比如VoIP、Videoconference、Network Games等等。 CIDR(Classless InterDomain Routing) 这一机制称为域间无类路由选择。如果不使用这一机制,那么每个网络在路由表中都必须占一个条目。如果是分配了16个C类的网络,那么路由器必须加入16个不同的路由条目,路由表会急剧增大。那么CIDR机制实际上是在路由表的层面上把网络类的概念取消了。 在CIDR中,地址根据网络拓扑来分配。CIDR允许把地址连续的一个网络块声明为一个单一的条目(比如213.79.4.0,213.79.5.0,213.79.6.0,213.79.7.0),并声明需要考虑的网络位数,比如213.79.4.0/22。 这种方法明显减少了路由表的增长,CIDR RFC的作者估计,如果90%的服务提供商使用了CIDR,路由表将以每3年54%的速度增长,而如果没有使用CIDR,则增长速度为776%。但这个模式具有一个很大的局限性,就是用户没有任何永久分配给他们的地址。 2019/4/22
IPv6主要特性 Larger Address Space Aggregation-based address hierarchy 128位 Aggregation-based address hierarchy Efficient backbone routing Efficient and Extensible IP datagram No fragmentation by routers 64 bits field alignement Simpler basic header Autoconfiguration Security IP Renumbering part of the protocol IPv6的主要设计特点包括: 扩展的地址空间和结构化的路由层次 地址长度由IPv4的32位扩展到128位,全局单点地址采用支持无分类域间路由的地址聚类机制,可以支持更多的地址层次和更多的节点数目,并且使自动配置地址更加简单。 简化了报头格式 IPv4报头中的一些字段被取消或是变成可选项,尽管IPv6的地址是IPv4的四倍,但是IPv6的基本报头只是IPv4报头长度的两倍。取消了对报头中可选项长度的严格限制,增加了灵活性。 简单的管理:即插即用 通过实现一系列的自动发现和自动配置功能,简化网络节点的管理和维护。已实现的典型技术包括最大传输单元发现(MTU Discovery)、邻接节点发现(Neighbor Discovery)、路由器通告(Router Advertisement)、路由器请求(Router Solicitation)、节点自动配置(Auto-configuration)等。 安全性 在制定IPv6技术规范的同时,产生了IPSec(IP Security),用于提供IP层的安全性。目前,IPv6实现了认证头(Authentication Header,AH)和封装安全载荷(Encapsulated Security Payload,ESP)两种机制。前者实现数据的完整性及对IP包来源的认证,保证分组确实来自源地址所标记的节点;后者提供数据加密功能,实现端到端的加密。 QoS能力 报头中的“标签”字段允许属于鉴别同一数据流的所有报文,因此路径上所有路由器可以鉴别一个流的所有报文,实现非默认的服务质量或实时的服务等特殊的处理。 改进的多点寻址方案 通过在组播地址中增加了“范围”字段,允许将组播的路由限定在正确的范围之内。另一个“标志”字段允许Intranet区分永久性的多点地址和临时性的多点地址。 定义了一种新的群通信地址方式:Anycast 在点到多点的通信中,将报文传递到一组节点中的一个(通常是最近的一个),从而允许在源点路由中允许节点控制传递路径。 可移动性 IPv6协议设计的若干技术有利于移动计算的实现,包括:信宿选项头(destination options header)、路由选项头(routing header)、自动配置、安全机制以及Anycast技术。将QoS技术同移动节点相结合还将强化IPv6对移动计算的支持。 2019/4/22
IPv6报头 2019/4/22 IPv4的报头是20个字节+options. IPv6的报头是40个字节,关于它的详细描述可参看RFC2460文档。 2019/4/22
IPv6报头 Next Header(8bits) Hop Limit (8 bits) Version(4bits) 6 for IPv6 Traffic Class(8 bits) ~TOS in IPv4 identify classes and priorities(diffserv) Flow Label(20 bits) PayloadLength( 16 bits) Next Header(8bits) Extensible header structure Hop Limit (8 bits) ~ TTL in IPv4 IPv6报头主要有: 版本:4位,值为6。 优先级:4位。可以有16个不同的值,可区分不同的服务。相当于IPv4中的“TOS”。 流标签:24位,发送方用它来标识属于同一个流的信息包。 有效数据的长度:16位,说明报头后的数据字段的长度。 下一个报头:8位。说明IPv6报头之后的报头的类型。相当于IPv4中的“PROTOCOL”。最常见的为TCP(6)和UDP(17),还可能是ICMP6,AH,ESP(IPsec)。 路程段限制:8位,说明在两个IPv6节点之间不能有多于255个的路程段,即最多254个路由器。功用相当于IPv4中的“TTL”,存活期。 发送方地址:128位。 目标地址: 128位。 2019/4/22
IPv6地址类型 RFC2373 可聚集全球地址( Aggregateable Global Unicast Addresses) 001 1/8 total space 链路本地地址(Link-Local Unicast Addresses) 1111111010 1/1024 total space 节点本地地址(Site-Local Unicast Addresses) 1111111011 1/1024 total space 多点传送地址( Multicast Addresses) 11111111 1/256 total space 我们已经知道,IPv6的主要改变就是地址的长度:128位! 地址长度为128位,意味着可以有2的128次方的地址,总数为: 340.282.366.920.463.374.607.431.768.211.456 这意味着地球表面每平米的面积上可以有655.570.793.348.866.943.898.599个IPv6地址。这个地址数是足够每人拥有上千个IP地址。 IPv6设计者将IPv6空间进行了分类: 1、可聚类全球单点传送地址(Unicast Addresses) 和带有CIDR的IPv4地址类似。 2、链路本地地址(Link-Local Unicast Addresses) 这类地址用于每个地址自动配置的链路和邻居发现功能。这类地址是以FE80开始的。适用于没有路由器的小型网络。 3、节点本地地址(Site Local Unicast Addresses) 这类地址用来替换IPv4(比如10.0.0.0,172.16.0.0,192.168.0.0)中的那些内部地址。这类地址是以 FEC0开始的。 4、多点传送地址 相当于IPv4中的224.0.0.0的D类地址。这类地址主要用于多媒体应用,从一个节点到多个节点进行传送。 2019/4/22
IPv6地址 Unicast addresses Link-Local FE80::/10 automatically configured with interface id used for neighbor and router discovery Aggregateable Global 2000::/3 2019/4/22
IPv6地址 Multicast Addresses RFC2375 IPv6 Multicast Address Assignment FF00::/8 FFfs::/16 f: flag 0: permanent; 1: not permanent s: scope 1: node 2: link 5: site 8: organization E: global FF02::1 all nodes on the local network FF02::2 all routers on the local network 2019/4/22
IPv6地址 Anycast Addresses RFC2526 Reserved IPv6 Subnet Anycast Addresses Advantages of anycast routing optimization server load Anycast address style 2019/4/22
IPv6地址表示 Format is x:x:x:x:x:x:x:x x is a 16 bit hexadecimal field FEDC:BA98:7654:3210:FEDC:BA98:7654:3210 Leading zeros in a field are optional :: can be used to represent multiple groups of 16 bits of zero :: can only be used once in an address FF01:0:0:0:0:0:0:101 = FF01::101 0:0:0:0:0:0:0:1 = ::1 0:0:0:0:0:0:0:0 = :: IPv6节点如何获得自己的IP地址?IPv6协议采用的是自动配置机制。一种通用的方式是:IPv6节点从路由器获得前64位网络地址,后面部分实际上是由网卡的物理地址(MAC)决定的。 比如:北京大学获得的6BONE地址是 3ffe:3201:1401::/48 节点所在的子网地址为:3ffe:3201:1401:1::/64。如果网卡的MAC地址为00:80:c8:4d:db:39,那么当节点启动时将自动从IPv6路由器获得网络地址,并生成自己的IPv6地址如下: 3ffe:3201:1401:1:280:c8ff:fe4d:db39 2019/4/22
IPv6地址表示 Loopback Addresses Automatic IPv6 Over IPv4 Tunnel ::1 Like 127.0.0.1 in IPv4 Automatic IPv6 Over IPv4 Tunnel ::<IPv4 address> IPv4 Compatible Addresses ::FFFF:<IPv4 address> for IPv4-only nodes 1、回送地址: 节点用它来向自身发送IPv6的数据包。 2、内嵌IPv4地址的IPv6地址: 内嵌IPv4地址的IPv6地址,就是将IPv6中包含的IPv4地址映射为IPv6地址。 3、IPv4兼容的IPv6地址:::162.105.129.25 2019/4/22
IPv6地址表示 RFC2732: Preferred Format for Literal IPv6 Addresses in URL http://[1080::8:800:200C:417A]:80/index.html 2019/4/22
IPv6地址 Required Node Addresses Its Link-Local Address for each interface Assigned Unicast Addresses Loopback Address All-Nodes Multicast Addresses Solicited-Node Multicast Address for each of its assigned unicast and anycast addresses Multicast Addresses of all other groups to which the host belongs. IPv6节点所能具有的所有地址在RFC1884中说明。其中包括: 每个接口的链路本地地址。 被分配的单点传送地址。 回送地址。 所有节点多点传送地址。 和所有被分配的单点传送地址和多点传送地址相关的邻居发现多点传送地址。 节点所属的组的多点传送地址。 2019/4/22
IPv6地址 Required Router Addresses All the required node addresses The Subnet-Router anycast addresses for the interfaces it is configured to act as a router on. All other Anycast addresses with which the router has been configured. All-Routers Multicast Addresses 路由器的地址: 每个接口的链路本地地址。 被分配的接口的单点传送地址。 回送地址。 所有链路的子网路由器任意点传送地址。 分配给接口的其他任意点传送地址。 所有节点多点传送地址。 所有路由器的多点传送地址。 2019/4/22
IPv6的发展历程 6BONE IPv6地址分配 CERNET IPv6实验床 北京大学IPv6实验床 2019/4/22
6BONE 国际IPv6实验床,不是实用的网络。 通过 tunnels 和一些纯IPv6链接(mostly IPv6 over ATM) 技术文档RFC2471 IPv6 Testing Address Allocation 3FFE::/16 6bone TLA RFC2546 6bone routing policies 6Bone registry http://www.6bone.net/ 6BONE,Internet国际实验床,是最早由IETF Ipng工作组开始的一个项目,其目的就是为了实现和测试IPv6协议,最终达到在Internet上用IPv6替代IPv4的目的。6BONE是由位于北美、欧洲和日本的一些研究机构组成的非正式合作项目。 6BONE的早期是基于IPv4上的一个虚拟IPv6网络。它通过tunnel(隧道)的技术,在IPv4协议上跑IPv6的包,就是IPv6overIPv4。后来才慢慢向纯的(native)IPv6网络过度。 随着IPv6实验床的不断发展,越来越多的厂家的产品开始支持IPv6协议,包括CISCO,Bay, SUN,IBM,HP,Linux, Microsoft。比如Sun Solaris8就支持IPv6协议,可以作为纯IPv6站点。 国内从1998年展开IPv6的实验和研究。CERNET网点在1998年11月,通过6bone评议,分配到p-TLA地址3ffe:3200::/24。成为中国第一个 6bone骨干节点。目前有多个地区网点通过tunnel的方式加入了6BONE。现在CERNET联网单位都可以向CERNIC申请6BONE实验IPv6地址。 2019/4/22
IPv6地址申请 主要分配IPv6地址的机构: IANA(Internet Assigned Numbers Authority) 1999年12月,IANA开始通过分配正式的IPv6地址200::/13 欧洲的RIPE-NCC 亚太平洋地区的APNIC CERNIC 地址范围为2001:250::/35 1999年12月,IANA开始通过Regional Internet Registry分配正式的IPv6地址200::/13,暂时只分配/35的block。(这一条似乎不能算试验床大事,但是对于IPv6发展有重要意义)。APNIC负责亚太地区的IPv6地址分配。 2000年4月26日,APNIC批准CERNET有关sTLA地址的申请,CERNET的sTLA为:CERNET-CN-20000426,地址范围为2001:250::/35。 北京大学CERNET主结点是今年上半年加入CERNET IPv6实验床的。 2019/4/22
CERNET IPv6 Testbed 背景 目标 1998年6月加入6BONE 同年11月成为其骨干成员 研究同下一代互联网有关的网络技术 开发新型网络应用 示范上述技术和应用,推动国内IPv4向IPv6的过度 背景: 随着IPv4地址空间耗尽的迫近,人们加紧了对下一代互联网协议——即IPv6的研究;到1998年年初,IPv6协议的基本框架已经逐步成熟,在越来越广泛的范围内得到实践。1998年12月,IPv6协议又进行了一定的调整。由于IPv6和IPv4在协议头格式不兼容,IETF成立了专门的工作组——ngtrans研究从现有的IPv4网络向IPv6网络的过渡策略和必要的技术。作为向下一代互联网络协议过渡的重要步骤,国际的IPv6试验网——6bone在1996年成立了。现在,6bone已经扩展到全球50多个国家和地区,成为IPv6研究者、开发者和实践者的主要平台。 CERNET国家网络中心于1998年6月加入6BONE,同年11月成为其骨干网成员。 1999年,CERNET在国内教育网范围内组建了IPv6试验床,八大地区网络中心全部加入,CERNET在试验床的pTLA(pseudo Top Level Aggregation)地址范围内开始分配地址,同时进行了有关IPv6各种特性的研究与开发。 目标: 以CERNET现有的网络设施和技术力量为依托,建立全国规模的IPv6试验床,为致力于面向21世纪网络技术的个人和团体提供全真的网络平台,用于: 研究同下一代互联网有关的网络技术,特别是安全、服务质量和移动计算; 开发新型的网络应用,这些应用在传统的互联网上是几乎不可能或不易实现的; 示范上述技术和应用,以及从传统的互联网向下一代网络过渡的方法。 2019/4/22
Addressing 2019/4/22
Addressing 2019/4/22
CERNET IPv6 Testbed Contact Information: Technical Staff staff@gloria.ipv6.net.edu.cn General Mail List cernetip6@mail.ipv6.net.edu.cn URL http://www.ipv6.net.edu.cn/ 2019/4/22
加入实验床 遵从如下的程序 加入试验床的邮件列表 组建IPv6网络 申请域名 Majordomo@mail.ipv6.net.edu.cn 规划网络地址和拓扑 申请地址空间和接入点 配置主机和路由节点 申请域名 试验床的邮件列表是一个非常热烈的讨论组,这里有许多IPv6的新老用户,几乎各种问题都能够得到解答。许多试验床的用户就是在mailing list中结识、交流,从新手成长的。当然,要和国际上的IPv6用户交流,我们建议你还是再加入6bone的讨论组。 组建IPv6网络的步骤: 规划网络地址和拓扑 申请地址空间和接入点 配置路由节点和主机 3、申请IPv6地址是第三步, 目前CERNET的IPv6地址分成两部分: 一部分是1998年12拿到的位于6BONE中的pTLA(pseudo Top Level Aggregation)地址3ffe:3200::/24,另一部分是2000年4月拿到的又IANA通过APNIC、RIPE NCC和ARIN正式分配的sTLA(sub Top Level Aggregation)地址2001:0250::/35。 4、申请域名 2019/4/22
北京大学IPv6实验床 2000年4月开始 Nokia路由器和FreeBSD系统 IPv6 over IPv4 测试路由和DNS 移植tcp_wrappers 从2000年4月份开始,我们着手展开IPv6实验,进行和完成的主要工作如下: 4月份,我们构建了IPv6实验环境。主要设备为Nokia路由器和一台运行FreeBSD4的主机,采用FreeBSD4操作系统的主要原因是因为FreeBSD 4已经内嵌了对IPv6的支持,它采用的是KAME代码。其拓扑结构如下图所示。我们在FreeBSD主机上同时配置IPv4和IPv6的地址,也就是所谓的双栈节点。该主机既可以和IPv4网络通信,又可以和其他IPv6实验床通信。 北京大学IPv6的网络地址为:3ffe:3201:1401::/48,分配给FreeBSD4所在的主机的子网地址为3ffe:3201:1401:1::/64。启动FreeBSD主机后,生成的IPv6地址为:3ffe:3201:1401:1:280:c8ff:fe4d:db39。 之后我们配置了名字服务器。我们增加了一个新的域名为ipv6.pku.edu.cn,名字服务器就运行在FreeBSD主机上,使用的软件是支持IPv6的BIND8.2.2+Patch5。当一个IPv6节点在域名服务器中注册后,应用程序就可以通过主机名访问IPv6节点了。通常所有双栈节点在名字服务器中既有IPv4地址又有IPv6地址。应用程序通常根据名字服务器返回的IP地址来选择相应的协议对节点进行访问,如果通信双方都支持IPv6,则用IPv6地址通信;反之,用IPv4地址。 对相关的协议文档进行了研究和学习,其中主要包括RFC2133、RFC2292和RFC2553。 最后进行tcp_wrappers的移植。 2019/4/22
IPv6实验床结构 2019/4/22
IPv4到IPv6网络应用的迁移 SUN Scrubber IPv6 Socket API 已有的IPv6网络应用: RFC2133,RFC2292,RFC2553 已有的IPv6网络应用: BIND SENDMAIL APACHE TCPDUMP NEWS… 2019/4/22
相关站点资源 http://www.ipv6.org http://www.ipv6forum.com http://www.6bone.net http://www.6ren.net http://www.6tap.net http://playground.sun.com http://www.ipv6.net.edu.cn http://www.ipv6.com.cn 2019/4/22