第13章 IPv6协议
第13章 IPv6协议 学 习 要 点 IPv6协议体系 IPv6寻址架构 IPv6数据包格式 ICMPv6协议 IPv6邻居发现协议 MLD(多播侦听者发现)协议 IPv6路径MTU发现协议 IPv6路由 IPv4到IPv6的过渡
13.1 IPv6概述(P324) IPv6是对IPv4加以改进,增加了许多新的特性,不仅可以解决目前IPv4地址短缺的难题,而且有助于Internet摆脱日益复杂、难以管理和控制的局面 13.1.1 IPv4协议的问题 IP地址短缺 IPv4协议32位的IP地址标识决定了理论上可以分配43亿个IP地址。虽然像CIDR(无类域间路由)和NAT(网络地址转换)一类新技术可以改善地址分配,一定程度上缓解了地址空间被耗尽的危机。 路由效率不高 IPv4地址的层次结构缺乏统一的分配和管理,许多IPv4地址块分配不连续,不能有效聚合路由,导致路由器中存在大量路由表项,增加了路由开销。
IPv4协议的问题 复杂的地址配置 IPv4的地址配置及其相关网络参数需要人为地设定或使用有状态的主机配置协议,使得接入Internet的设备在实现上更为复杂,不易进行自动配置和重新编址。 缺乏服务质量保证 为追求简单高效,IPv4遵循尽力而为的传输原则,却使得对Internet不断推出的新业务类型缺乏有效的支持,如实时和多媒体应用, 这些应用要求提供一定的服务质量保,比如带宽、延迟和抖动。 安全性问题 IPv4协议制定时并没有仔细针对安全性进行设计,不能支持端到端安全。 所有的数据都以明文形式传输,没有加密,也没有验证,这使得许多需要有安全保障的应用不得不在传输层上实现,甚至在应用层上来确保传输数据的安全性,增加了上层应用的复杂性。
13.1.2 IPv6协议的新特性(P325) 1. 充足的地址空间 IP地址长度由32位增加到128位,可以支持数量多得多的可寻址节点、更多级的地址层次和较为简单的地址自动配置。 2. 提高路由效率 IPv6可提供远大于IPv4的地址空间和网络前缀,因此可以方便地进行网络的层次化部署。 3. 优化数据包结构 IPv4首部的某些字段被取消或改为选项,以减少数据包处理过程中的开销,并使得IPv6首部的带宽开销尽可能低。 4. 支持自动配置 IPv6协议内置支持通过地址自动配置方式使主机自动发现网络并获取IPv6地址,大大提高了内部网络的可管理性。
IPv6协议的新特性 5. 支持端到端安全 从IPv4到IPv6的最大变化是将安全作为IPv6所要求的一部分IPv6支持为IP定义的安全目标:保密性、完整性、认证性。 6. 服务质量能力 IPv6增加了一种新的能力,如果某些数据包属于特定的工作流,发送方要求对其给予特殊处理,则可对这些数据包加上流标签,例如非默认服务质量通信业务或“实时”服务。 7. 支持移动特性 IPv6协议规定必须支持移动特性,任何IPv6节点都可以使用移动IP功能。移动IPv6使用邻居发现功能可直接实现外地网络的发现并得到转交地址,而不必使用外地代理。
13.1.3 IPv6协议体系(P326) IPv6 与IPv4一样有4层TCP/IP体系结构,IPv6与IPv4的主要差别在网络层。 • ICMPv6:使用IPv6通信的主机和路由器就可以报告错误并发送简单的响应消息。 • ND:用于确定邻居节点之间的关系,代替了IPv4中使用的ARP、RARP、ICMP等。 • MLD:为IP主机支持多播的方式定义了地址和主机扩展,对应于IPv4的IGMP。
13.2 IPv6寻址架构 13.2.1 IPv6寻址概述 1. 地址类型 单播(Unicast)地址:单一接口的标识符。发往单播地址的数据包被送给该地址标识的接口。 任播(AnyCast)地址:又译为泛播地址,是一组接口(一般属于不同节点)的标识符。发往任播地址的数据包被送给该地址标识的接口之一(路由协议度量距离最近的)。 多播(MultiCast)地址:又译为组播地址,是一组接口(一般属于不同节点)的标识符。发往多播地址的数据包被送给该地址标识的所有接口。 2. 寻址模式 所有类型的IPv6地址都是分配给接口,而不是分配给节点的。 IPv6单播地址指单一接口。由于每个接口都属于单一节点,任何节点的接口单播地址都可以用作该节点的标识符。 不用作任何IPv6数据包的源或目的的接口,不需要范围大于链路范围的单播地址。
13.2.2 IPv6地址表示方法(P327) 1. 优先选用格式x:x:x:x:x:x:x:x 20DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A 2. 前导0可以省略 可以删除每个段中的前导零以进一步简化IPv6地址表示,但每个信息块至少要有一位。 20DA:D3:0:2F3B:2AA:FF:FE28:9C5A。 3. 双冒号缩写格式 由于需要分配特定类型IPv6地址,地址中会包括0值的段,可以将连续多个0缩写为双冒号“::”。但是双冒号只能出现一次。
IPv6地址表示方法 4. IPv4兼容地址格式x:x:x:x:x:x:d.d.d.d 在混用IPv4节点和IPv6节点环境中,采用替代地址格式 x:x:x:x:x:x:d.d.d.d更为方便,其中“x”是地址的6个高阶16位段的十六进制值,“d”是地址的4个低阶8位字节十进制值。 0:0:0:0:0:0:13.1.68.3,0:0:0:0:0:FFFF:129.144.52.38。 可以采用双冒号缩写格式,这两个地址分别缩写为::13.1.68.3和::FFFF:129.144.52.38。
13.2.3 IPv6地址前缀与地址类型标识(P328) 1. 地址前缀(子网前缀) IPv6前缀与IPv4的CIDR表示法的表达方式一样,采用“IPv6地址/前缀长度”的格式。 2. 地址类型标识(格式前缀) IPv6地址类型由地址的高阶位标识,主要地址类型标识。 地址类型 二进制前缀 IPv6符号表示法 未指定 00...0 (128位) ::/128 环回 00...1 (128位) ::1/128 多播 11111111 FF00::/8 链路本地单播 1111111010 FE80::/10 全球单播 其他的任何一种
13.2.4 IPv6单播地址(P328) IPv6单播地址结构 1. IPv6接口标识符 2. 全球单播地址
IPv6单播地址 3. 嵌入IPv4地址的IPv6地址 IPv4兼容的IPv6地址 IPv4映射的IPv6地址 全球单播地址
13.2.5 IPv6任播地址 (P330) IPv6单播地址结构 IPv6任播地址有以下两个用途: • 用来标识属于提供Internet服务的同一组织的一组路由器。这些地址可在IPv6路由首部中作为中间转发路由器,以使数据包能够通过特定一组路由器进行转发。 • 标识特定子网的一组路由器,数据包只要被其中一个路由器接收即可。 任播地址是根据单播地址空间分配的,使用任何已定义的单播地址格式。当单播地址分配给多于一个接口时,该单播地址转化为任播地址。 子网路由器任播地址格式。
13.2.6 IPv6多播地址(P331) IPv6多播地址格式定义 多播地址格式 地址开始处的二进制11111111标识该地址是一个多播地址。 标志(flgs)字段包括4个标志位。高阶标记被保留,并必须初始化为0。T=0表示由IANA分配的(公认)多播地址,T=1表示非永久分配的多播地址。 范围(scop)是一个4位值,用于限制多播组的范围。
IPv6多播地址 1. IPv6预定义多播地址 IPv6多播地址格式定义 IPv6多播组的范围 范围值 多播组范围 说明 保留 1 保留 1 接口本地范围 仅跨越节点上的单一接口,只在节点范围内有效,用于多播的环回发送 2 链路本地范围 跨越与对应单播范围相同的拓扑区域,只在链路范围有效 3 4 域本地范围 最小的范围,它必须从管理上配置,即不能自动地通过物理连接配置,或不能通过其他非多播相关配置实现 5 站点本地范围 力图跨越单一站点,只在一个网络内有效 6、7 未分配 可由管理者使用,以便定义增加的多播区域 8 组织本地范围 力图跨越属于单一组织的多个站点,只在组织内有效 9、A、B、C、D E 全球范围 全球范围内有效 F
IPv6多播地址 2. IPv6预定义多播地址 (1)保留的多播地址 • FF00::~FF0F::(共16个地址) (2)所有节点的地址 (3)所有路由器地址 • FF01:0:0:0:0:0:0:2 (接口本地) • FF02:0:0:0:0:0:0:2 (链路本地) • FF05:0:0:0:0:0:0:2 (站点本地) (4)被请求节点(Solicited-Node)的地址 • FF02:0:0:0:0:1:FFXX:XXXX
13.2.7 特殊的IPv6地址 (P332) 1. 未指定的IPv6地址 只能作为尚未获得正式地址的主机的源地址,不能作为目的地址,不能分配给真实的网络接口。 2. IPv6环回地址 0:0:0:0:0:0:0:1(::1)是环回地址,相当于IPv4中的localhost(127.0.0.1),节点用其发送返回给自己的IPv6数据包。 它不能分配给任何物理接口。 它被看作属于链路本地范围,可以被当作是虚拟接口的链路本地单播地址,该虚拟接口通向一个假想的链路,该链路和谁也不连通。 以环回地址为目的地址的IPv6数据包决不能发送到单一节点以外,并且决不能经由IPv6路由器转发。
13.2.8 IPv6主机和路由器寻址 (P332) 一台IPv6主机可同时拥有以下几种单播地址: • 用于每个接口的链路本地地址 • 任何已经配置给节点接口的附加单播地址和任播地址 • 用于环回接口的环回地址(::1) 除上述地址外,每个IPv6主机必须还必须将下列地址作为自身的地址。 • 预定义的所有节点多播地址(FF01:0:0:0:0:0:0:1和FF02:0:0:0:0:0:0:1) • 每个分配的单播或任播地址对应的被请求节点(Solicited-Node)多播地址 • 节点所属的所有其他组的多播地址 IPv6路由器在IPv6主机支持地址种类的基础上,还要加上下述地址。 • 所有接口的子网路由器(Subnet-Router)任播地址 • 路由器配置的所有其他任播地址 • 预定义的所有路由器多播地址(FF01:0:0:0:0:0:0:2、FF02:0:0:0:0:0:0:2和FF05:0:0:0:0:0:0:2)
13.2.9 IPv6地址分配 (P333) 1. 全球单播地址格式的演变 RFC 2373规定的可聚合全球单播地址格式 RFC 3587规定的IPv6全球单播地址格式 由IANA代理的2000∷/3前缀的全球单播地址格式
2.全球单播地址格式的分配 地址分配仍沿用由RFC 3177制定的分配方法。 ICANN是负责全球IPv6地址分配的Internet域名与地址分配机构,它规定IPv6全球单播地址的分配分级进行。 ICANN先将部分IPv6地址分配给RIR(区域性Internet权威机构),然后由这些RIR负责地区的IPv6地址分配。 目前全球共有5个RIR,分别是北美Internet地址分配机构(ARIN)、欧洲IP地址注册中心(RIPE NCC)、拉丁美洲及加勒比网络信息中心(LACNIC)、非洲网络信息中心(AFRINIC)和亚太地区网络信息中心(APNIC)。 实际运行过程中, RIR分配IP地址遵循先到先得和按需分配的基本原则。 按照IESG(Internet工程指导小组)和IAB(Internet体系结构委员会)的建议,/48地址分配给企业客户站点;/64地址分配给子网(连接主机、终端设备的网络);/128地址分配给设备(具体的网络节点)。 由IANA代理的2000∷/3前缀的全球单播地址格式
3. IPv6实验网络地址分配 6BONE网络是全球范围的IPv6实验网络,使用子网前缀3ffe:0000::/16。 每个伪顶级聚合分配3ffe:0800::/28范围内的/28前缀,最多支持2048个伪顶级聚合。 处于末端的站点从上游提供者得到/48前缀,每个站点内还可细分为多个/64前缀。 6BONE 网络按层次化结构分配地址,地址空间由IANA定义配,分配策略由RFC 2921定义。
13.3 IPv6数据包格式(P334) IPv6首部进行了简化,将源IPv4首部中的一些功能和选项放到扩展首部中处理,或者直接取消,主要有以下变动: 取消6个IPv4首部字段,分别是首部长度、服务类型(优先级)、标识、标志、分片偏移以及首部校验和。 修改3个IPv4首部字段,分别是总长度、协议、生存时间。 添加两个新的字段,分别是流量等级和流标签。
IPv6数据包格式 1. 版本----4bit,值为6 2. 流量等级(Traffic Class)----8bit,用于标识IPv6数据的不同类型或级别,其作用类似于IPv4的服务类型(TOS)。 3. 流标签(Flow Label)----20bit,标识需要IPv6路由器特殊处理的数据包序列,支持综合QoS。 4. 有效载荷长度(Payload Length)----16bit,指定IPv6首部之后的数据包的其余部分长度。 5. 下一首部(Next Header)----8bit,标识紧跟在IPv6首部后面的首部的类型,定义的类型与IPv4的协议字段相同。 6. 跳数限制(Hop Limit)----8bit,转发的数据包每经过一个节点,此值减1,作用类似于IPv4的TTL。 7. 源地址(Source Address)----128bit。 8. 目标地址(Destination Address)----128bit。
IPv6首部格式 下一首部(Next Header) • 一个长度为8位的选择器,用来标识紧跟在IPv6首部后面的首部的类型。该字段定义的类型与IPv4中的协议字段相同。 下一首部值 首部类型 保留(IPv4) 44 分片首部(IPv6) 逐跳选项(IPv6) 45 域内路由选择协议(IDRP) 1 ICMP(IPv4) 51 认证首部 2 IGMP(IPv4) 52 封装安全有效载荷 3 网关到网关协议 58 ICMPv6 4 IP中的IP(IPv4封装) 59 无下一首部(IPv6) 5 流 60 目标选项首部(IPv6) 6 TCP 80 ISO CLNP 17 UDP 88 IGRP 29 ISO TP4 89 OSPF 43 路由首部(IPv6) 255 保留
13.3.2 IPv6扩展首部 (P336) IPv6扩展首部链式结构 扩展首部位于IPv6基本首部与上层协议(UDP、TCP或ICMP等)首部之间。 扩展首部是可选的,一个IPv6数据包可以没有扩展首部,或者有1个或多个扩展首部,每个扩展首部由前一首部中的下一首部字段标识,形成一种链式结构
IPv6扩展首部 扩展首部顺序 扩展首部必须严格按照它们在数据包中出现的次序来处理。 当在同一个数据包中使用多个扩展首部时,建议按照以下顺序排列。 (1)IPv6首部 (2)逐条选项(Hop-by-Hop Options)首部 (3)目的选项(Destination Options)首部 (4)路由(Routing)首部 (5)分片(Fragment)首部 (6)认证(Authentication,AH)首部 (7)封装安全载荷(Encapsulating Security Payload,ESP)首部 (8)目的地址选项首部 (9)上层协议首部
IPv6扩展首部 1. 逐跳选项首部 用于传送必须由数据包传送路径中的每个节点检测的选项信息 由IPv6 首部中下一首部字段值0来标识 两个选项 路由器警报选项 超大数据包选项
IPv6扩展首部 2. 目的选项首部 目的选项用于携带只需由数据包的目的节点检测的可选信息,由其前一首部中下一首部字段值60来标识,格式与逐跳选项首部相同。 3. 路由首部 路由首部代替了IPv4中所实现的源路由,允许用户指定数据包的路径,即到达目的地沿途必须经过的路由器。 它由其前一首部中下一首部字段值43来标识
路由类型为0的路由首部
IPv6扩展首部 4. 分片首部 IPv6源节点使用分片首部发送超过路径MTU的数据包。 分片首部由其前一首部中下一首部字段值44来标识
IPv6扩展首部 5. 认证首部(AH) 认证首部用于IPSec,提供数据源认证和数据完整性检查。 6. 封装安全载荷(ESP)首部 ESP首部用于IPSec,提供数据源认证、数据完整性检查和机密性。 它由其前一首部中下一首部字段值50来标识,定义与IPv4中相同。 7. 无下一首部(No Next Header) IPv6首部或扩展首部的下一首部字段的值为59时,表示这个首部后面已没有其他首部了。 如果IPv6首部中的有效载荷字段表明最后一个首部后面还有其他的字节,那么这些字节将被忽略,并且在传输过程中保持不变。
13.3.3验证分析IPv6数据包格式(P340) 配置简单的IPv6网络 配置一个使用链路本地地址的单一子网,在主机A和主机B上分别安装IPv6协议,然后将为每个网络接口自动配置一个唯一的链路本地地址,其前缀是FE80::/64,接口标识符64位,派生自网络接口的48位MAC地址。 例子 Ethernet adapter 本地连接: Connection-specific DNS Suffix . : Description . . . . . . . . . . . : VMware Accelerated AMD PCNet Adapter Physical Address. . . . . . . . . : 00-0C-29-8C-24-F2 DHCP Enabled. . . . . . . . . . . : No IP Address. . . . . . . . . . . . : 192.168.0.10 Subnet Mask . . . . . . . . . . . : 255.255.255.0 IP Address. . . . . . . . . . . . : fe80::20c:29ff:fe8c:24f2%4 Default Gateway . . . . . . . . . : DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1 fec0:0:0:ffff::2%1 fec0:0:0:ffff::3%1
验证分析IPv6数据包格式 2. 捕获IPv6流量进行分析 IPv6数据包列表
验证分析IPv6数据包格式 捕获IPv6流量进行分析 IPv6数据包解码分析
13.4.1 ICMPv6概述(P341) 1. ICMPv6体系 ICMP在IPv6定义中重新修订为ICMPv6,主要用于报告IPv6节点数据包处理过程中的错误消息,完成一些网络诊断功能。 在IPv6体系中,IGMP已被多播侦听者发现(Multicast Listener Discovery,MLD)协议所取代,ARP已被邻居发现协议(Neighbor Discovery,ND)所取代 位于网络层的ICMPv4与ICMPv6
ICMPv6概述 2. ICMPv6报文封装与格式 ICMPv6报文封装 ICMPv6报文通用格式
ICMPv6概述 3.ICMPv6报文类型 大类 类型代码 说明 差错报文 1 目的地不可达(Destination Unreachable) 2 数据包过大(Packet Too Big) 3 超时(Time Exceeded) 4 参数问题(Parameter Problem) 信息报文 128 回送请求(Echo Request) 129 回送应答(Echo Reply)
13.4.2 ICMPv6差错报文 1. 目的地不可达报文 该报文用于报告导致数据包不能到达目的节点和目的端口的原因。类型字段值为1,代码字段值给出对应的原因。 • 代码0:没有到达目的地的路由 • 代码1:管理上禁止与目的地通信 • 代码2:超出源地址范围 • 代码3:地址不可达 • 代码4:端口不可达 • 代码5:源地址失效的进出策略 • 代码6:拒绝路由到目的地
ICMPv6差错报文 2. 数据包过大报文 此报文必须由路由器发送,用于响应不能转发的数据包,因为该数据包大于出口链路 MTU。
ICMPv6差错报文 3. 超时报文 当路由器接收到一个数据包时,发现数据包的跳数限制字段值为0或1,路由器将丢弃该包,并且向发送该包的源节点发送超时报文,报告出错。 超时报文的类型字段值为3,代码值为0,表示传送过程中超过了跳数的限制值;代码值为1,表示分片重组超时。 4. 参数问题报文 此报文的类型字段值为4,代码字段指出问题类型,共有3种。 • 代码0:表示遇到出错的首部字段 • 代码1:表示遇到不能识别的下一首部类型 • 代码2:表示遇到不能识别的IPv6选项指示器(Pointer)
13.4.3 ICMPv6信息报文 信息报文比较简单,有回送请求与回送应答两种,它们与ICMPv4对应的报文非常相似。 验证分析
ICMPv6信息报文 验证分析 ICMPv6回送应答报文
13.5 IPv6邻居发现协议 (P344) IPv6邻居发现协议(Neighbour Discovery Protocol,ND)用于确定邻居节点之间的关系,获得邻居链路层地址,验证和维护邻居的可达性,发现邻居路由器。 IPv6邻居发现协议取代了IPv4中所使用的ARP和ICMP协议,是ARP、ICMP路由器发现和ICMP重定向的组合。 无状态地址自动配置是IPv6的新增功能。 邻居发现协议定义了5个不同的ICMP报文类型 路由器请求(Router Solicitation) 路由器通告(Router Advertisement) 邻居请求(Neighbor Solicitation) 邻居通告(Neighbor Advertisements) 重定向报文(Redirect message)
邻居发现协议功能 路由器发现 前缀发现 参数发现 地址自动配置 地址解析 确定下一跳 相邻节点不可达检测 重复地址检查 重定向
13.5.1 邻居发现 邻居发现功能与IPv4中的ARP功能类似,用于将IPv6地址解析为链路层地址。 邻居发现由邻居请求和邻居通告机制实现,需要交换一对ICMPv6请求、应答报文 邻居发现机制
邻居发现 1. 邻居发现机制
邻居发现 2. 邻居请求报文 邻居请求报文主要功能有: • 请求目标节点返回自己的链路层地址; • 用于确定是否不止一个节点已经分配了相同的单播地址; • 用来在邻居的链路层地址已知时验证邻居的可达性。 ICMPv6邻居请求报文格式
邻居发现 3. 邻居通告报文 邻居请求报文用于回应邻居请求报文,返回对方要查询的链路层地址。 当一个节点的本地链路上的链路层地址改变时也会主动发送邻居通告报文 ICMPv6邻居通告报文格式
邻居发现 验证分析邻居发现报文 IPv6邻居请求报文解码分析
13.5 IPv6邻居发现协议 邻居发现 验证分析邻居发现报文 IPv6邻居通告报文解码分析
IPv6邻居发现协议----路由器发现 路由器发现概述 路由器发现用来定位邻居路由器,同时学习与地址自动配置有关的前缀和配置参数 由路由器请求和路由器通告机制实现,需要交换一对ICMPv6请求、应答报文。 路由器发现机制
IPv6邻居发现协议 路由器发现 路由器请求报文
IPv6邻居发现协议 路由器发现 路由器通告报文
13.5.3 重定向(349) 重定向概述 IPv6路由器发送重定向报文的目的仅限于把报文重新路由到更合适的路由器。 13.5.3 重定向(349) 重定向概述 IPv6路由器发送重定向报文的目的仅限于把报文重新路由到更合适的路由器。 收到重定向报文的节点随后会将后续报文发送到更合适的路由器。 路由器只针对单播流发送重定向报文,重定向报文只发给引起重定向的报文的源节点并被处理。 路由器发送重定向报文通知主机在前往目的地的路径上有一个更合适的第一跳节点。主机能够被重定向到更合适的第一跳路由器,但是也能够由重定向通知目的地实际上是一个邻居,这是通过设置ICMP目标地址与ICMP目的地址相同来实现。 ICMPv6重定向报文
13.5.4 IPv6无状态地址自动配置(P349) 有状态地址自动配置与DHCPv6 DHCP被视为“有状态”方法的原因在于DHCP服务器必须维护其可用地址池的状态、允许的客户端,以及一组其他参数。 IPv6节点无需DHCP就能够得到一个可在本地发挥功能的地址。DHCPv6客户端都是全功能主机,并能够使用多播请求主动搜索服务器。 所有IPv6节点都必须支持认证(IPv6认证扩展首部),DHCPv6服务器和路由器都能够被配置为以认证形式发送它们的公告。 DHCPv6使用专门的多播地址。 自动配置的IPv6节点必须侦听其地址的更新。 无状态地址自动配置 支持多播的网络节点可以进行无状态自动配置。 邻居发现协议支持通过路由器通告报文提供主机加入网络链路时所需的最少配置信息,包括本地链路的前缀、路由器自身的地址等,提供有标志指示自动配置类型为无状态。 主机收到路由器通告报文后,使用其中的前缀信息和本地接口标识符自动形成IPv6地址,同时还可以根据其中的默认路由器信息设置默认路由器。 使用无状态地址配置可以使IPv6节点很容易完成地址重新编址,降低了网络重新部署的复杂性。 无状态地址自动配置能够单独使用,也可以与有状态地址自动配置方法一起使用。
13.6 多播侦听者发现协议 (P350) 13.6.1 MLD概述 MLD简介 多播侦听者(Multicast Listener)是指那些希望接收多播数据的主机节点。 MLD的目的是使每个IPv6路由器发现在其直连链路上的多播侦听者的存在,并且进行组成员关系的收集和维护,将这些信息提供给路由器所使用的多播路由协议,以确保多播数据转发到存在IPv6多播侦听者的所有链路上。 MLD是一个非对称的协议,IPv6多播组成员(主机或路由器)和IPv6多播路由器的协议行为是不同的。 MLD报文类型 多播侦听者查询(Multicast Listener Query):由多播路由器发送以查询链路中的组成员。 多播侦听者报告(Multicast Listener Report):当主机加入多播组时发送,或者在响应MLD多播侦听器查询时由路由器发送。 多播侦听者完成(Multicast Listener Done):当主机离开主机组,并且可能是该组在网段上的最后一名成员时由主机发送。 MLD版本 MLDv1:源于IPv4的IGMPv2 MLDv2:源于IPv4的IGMPv3,是MLDv1的升级版本
13.6.2 多播侦听者发现机制 (P351) MLD主要基于查询/响应机制完成对IPv6多播组成员的管理,主要是组成员的加入或离开。 查询器选举机制 (1)所有MLD路由器在初始时都以查询器的角色开始,并向本地网段内的所有主机和路由器发送MLD普遍查询报文(目的地址为FF02::1),以查询直连链路上有哪些IPv6多播地址存在侦听者。 (2)本地网段中的其他MLD路由器在收到该报文后,将报文的源IPv6地址与自己的接口地址作比较。通过比较,IPv6地址最小的路由器将成为查询器,其他路由器则成为非查询器。 (3)所有非查询器上都会启动一个定时器,在定时器超时之前,如果收到了来自查询器的MLD查询报文,则重置该定时器;否则,认为原查询器失效,并重新发起查询器选举过程。
多播侦听者发现机制 加入IPv6多播组机制
多播侦听者发现机制 离开IPv6多播组机制 (1)该节点向本地网段内的所有IPv6多播路由器(目的地址为FF02::2)发送多播侦听者完成报文,表示要离开。 (2)当MDL查询器收到该报文后,向该节点所声明要离开的那个IPv6多播组发送特定查询报文。 (3)如果该网段内还有该IPv6多播组的其他成员,则这些成员在收到特定查询报文后,会在该报文中所设定的最大响应时间(Maximum Response Delay)内发送多播侦听者报告报文。 (4)如果在最大响应时间内收到了该IPv6多播组其他成员发送的多播侦听者报告报文,查询器就会继续维护该IPv6多播组的成员关系;否则,查询器将认为该网段内已无该IPv6多播组的成员,于是不再维护这个IPv6多播组的成员关系。
13.6.3 MLD报文格式 (P353) MLD是ICMPv6的一个子协议,其报文类型是ICMPv6报文的子系列。 所有MLD报文发送时使用IPv6本地链路源地址,跳数限制值为1,并且在逐跳选项首部中存在IPv6路由器告警选项(RTR-ALERT)。 MLD报文封装在IPv6数据包中,该IPv6数据包由IPv6首部、逐跳选项扩展首部和MLD报文组成。 报文格式
13.7 IPv6路径MTU发现协议 (P354) 概述 IPv6路由器不处理分片,分片只在源节点需要时进行。这就要求发送方在发送数据包之前检查发送方与目的地之间的路径最大传输单元(PMTU),并依据检查结果相应地调整数据包的长度。因此IPv6的路径MTU发现协议是必须实现的。 路径MTU发现协议使IPv6节点能够动态发现并调整以适合给定数据路径上的MTU变化。这样可以减轻路由器的负载,并提高整体的吞吐量。 ICMPv6路径MTU发现机制
13.8 IPv6路由 (P354) IPv6路由基本特征 充当物理多宿主主机,用两个或多个网络接口连接每个物理分隔的网段的主机。 为其他IPv6主机提供数据包转发。即在网络之间转发基于IPv6的通信。 IPv6支持各种单播路由协议 IPv6单播路由协议实现和IPv4类似,有些是在原有协议上做了简单扩展,如BGP4+,有些则完全是新的版本,如RIPng、OSPFv3。 BGP4+利用BGP的多协议扩展属性来达到在IPv6网络中应用的目的,BGP4协议原有的报文机制和路由机制并没有改变。 RIPng为下一代RIP协议,是对原来的IPv4网络中RIP-2协议的扩展。 与OSPFv2相比,OSPFv3除了提供对IPv6的支持外,还充分考虑了协议的网络无关性以及可扩展性。 IPv6提供多播协议支持 MLDv1 Snooping MLDv1 PIM-SM PIM-DM
13.9 IPv6名称解析 (P355) IPv6路由基本特征 充当物理多宿主主机,用两个或多个网络接口连接每个物理分隔的网段的主机。 为其他IPv6主机提供数据包转发。即在网络之间转发基于IPv6的通信。 IPv6支持各种单播路由协议 IPv6单播路由协议实现和IPv4类似,有些是在原有协议上做了简单扩展,如BGP4+,有些则完全是新的版本,如RIPng、OSPFv3。 BGP4+利用BGP的多协议扩展属性来达到在IPv6网络中应用的目的,BGP4协议原有的报文机制和路由机制并没有改变。 RIPng为下一代RIP协议,是对原来的IPv4网络中RIP-2协议的扩展。 与OSPFv2相比,OSPFv3除了提供对IPv6的支持外,还充分考虑了协议的网络无关性以及可扩展性。 IPv6提供多播协议支持 MLDv1 Snooping MLDv1 PIM-SM PIM-DM
13.10 IPv4到IPv6的过渡 (P355) 双协议栈 概述 双协议栈简称双栈,是IPv4向IPv6过渡的一种有效的技术。
IPv4到IPv6的过渡 隧道技术 概述 隧道是指一种协议封装到另外一种协议中的技术。 IPv6穿越IPv4隧道技术提供了一种使用现存IPv4路由基础设施携带IPv6流量的方法,利用现有IPv4网络为分离的IPv6网络提供互联。 IPv6穿越IPv4隧道可以建立在主机—主机、主机—路由器、路由器—主机、路由器—路由器之间。
IPv4到IPv6的过渡 隧道技术 配置隧道 IPv6手动隧道 GRE隧道 使用标准的GRE协议可对IPv6数据包进行封装,使IPv6数据包能通过隧道穿越IPv4网络。与IPv6手动隧道相同,GRE隧道也是点到点之间的链路,每条链路都是一条单独的隧道。
IPv4到IPv6的过渡----隧道技术 自动隧道 IPv4兼容IPv6自动隧道 点到多点的链路。 隧道两端采用IPv4兼容IPv6地址,其格式为0:0:0:0:0:0:a.b.c.d/96,其中a.b.c.d是IPv4地址。 6to4隧道 点到多点的自动隧道,主要用于将多个隔离的IPv6网络通过IPv4网络连接到IPv6网络。 通过在IPv6数据包的目的地址中嵌入IPv4地址,来实现自动获取隧道终点的IPv4地址。 采用特殊的6to4地址,其格式为2002:abcd:efgh:子网号::接口ID/64,其中2002表示固定的IPv6地址前缀,abcd:efgh表示该6to4隧道对应的32位全球唯一的IPv4源地址,用16进制表示。 ISATAP隧道 主要用于在IPv4网络中IPv6路由器—IPv6路由器、IPv6主机—IPv6路由器的连接。 点到点的自动隧道技术,通过在IPv6数据包的目的地址中嵌入的IPv4地址,可以自动获取隧道的终点。 IPv6报文的目的地址和隧道接口的IPv6地址都要采用特殊的ISATAP地址,格式为Prefix(64bit):0:5EFE:ip-address。其中64位的Prefix(前缀)为任何合法的IPv6单播地址前缀,ip-address为32位IPv4源地址,形式为a.b.c.d或者abcd:efgh,且该IPv4地址不要求全球唯一。
IPv4到IPv6的过渡----协议转换技术 协议转换技术由IPv4的NAT技术发展而来。 根据IPv6地址空间与IPv4地址空间映射的不同方法,可分为有状态协议转换和无状态协议转换两种类型。 类型 有状态协议转换:通过建立映射表的方案,将任意IPv6地址与任意IPv4地址之间建立映射关系。能够访问任意地址格式的IPv6主机。 无状态协议转换:通过将IPv4地址嵌入到IPv6地址中,实现无状态地址转换。仅能访问具有特定格式IPv6地址的主机。 典型的协议转换技术方案 NAT64:旨在替代NAT-PT的有状态协议转换技术,在网关中记录了IPv4地址加端口与IPv6地址的映射表会话状态,是网络层的协议转换技术。 IVI:无状态协议转换技术。IVI是一个特定前缀和无状态地址映射的方案,这种地址映射和转换机制是通过一个连接IPv4和IPv6网络的IVI网关来实现的。