IPv6
IPv6基础
目录:
原理描述、基础描述、基本实现、路由技术、组播技术、过渡技术
- 原理描述
一、IPv6的特点
1、地址空间大,由原来IPv4的32位扩充到128位
2、支持分层地址结构,有利于路由的汇聚
3、无须做NAT,直接可以实现端到端的通信
4、支持任意播地址和组播地址,不支持广播
5、可以实现无状态地址自动配置,或者有状态地址配置,无需人工配置
6、报头格式进行简化,更简单,更容易 被设备识别和转发
7、加强了对扩展报头和和选项的支持
8、流标签可以提供个性化的网络服务
9、认证
10、IPv6在移动网络和实时通信方向有很多改进
IPv6特点
地址空间巨大
精简报文结构
实现自动配置和重新编址
支持层次化网络结构
支持端对端安全
更好的支持 QoS
支持移动特性
二、IP 地址表示方法
IPv6地址表示方法:
IPv6 地址包括 128 比特, 由冒号分割成 8 段,每段 4 个 16 进制数(IPv6地址的长度为128bit。一般用冒号分割为8段,每一段16bit,每一段内用十六进制表示)
用“IPv6地址/掩码长度”的方式来表示。
2031:0000:130F:0000:0000:09C0:876A:130B
注意:为什么IPv6协议的地址长度是128bit?
CPU处理字长发展至今分别经历了4bit、8bit、16bit、32bit、64bit等,当数据能用2的指数幂字长的二进制数表示时,CPU对数值的处理效率最高。
IPv4地址长度为32bit,原因之一就是当时互联网上的主机CPU字长为32bit。从处理效率和未来网络扩展性上考虑,将IPv6的地址长度定为128bit是十分合适的。
IPv6压缩格式:
每组中的前导“ 0” 都可以省略
2031:0:130F:0:0:9C0:876A:130B
地址中包含的连续两个或多个均为 0 的组,可以用双冒号:来代替
2031:0:130F::9C0:876A:130B
三、IPv6 地址结构
IPv6地址分为两部分:
网络前缀, n 比 特,相当于 IPv4 中的网络 ID
接口标识, 128 n 比特相 当于 IPv4 中的主机 ID
接口标识生成方法:
手工配置
系统通过软件自动生成
IEEE EUI 64 规范自动生成(计算规则)


四、IPv6 地址分类

单播地址(Unicast Address):标识一个接口,目的地址为单播地址的报文会被送到被标识的接口。在IPv6中,一个接口拥有多个IPv6地址是非常常见的现象。
组播地址(Multicast Address):标识多个接口,目的地址为组播地址的报文会被送到被标识的所有接口。只有加入相应组播组的设备接口才会侦听发往该组播地址的报文。
任播地址(Anycast Address):任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口;任意播地址与单播地址使用同一个地址空间。
IPv6没有定义广播地址(Broadcast Address)。

GUA(Global Unicast Address,全球单播地址),也被称为可聚合全球单播地址。该类地址全球唯一,用于需要有互联网访问需求的主机,相当于IPv4的公网地址。
由前缀、子网ID和接口标识组成。

全局路由前缀:由提供商指定给一个组织机构,一般至少为48bit。目前已经分配的全局路由前缀的前3bit均为001。因此前缀为2000::/3。
子网:组织机构可以用子网ID来构建本地网络(Site),与IPv4中的子网号作用相似。子网ID通常最多分配到第64位。
主机位:用来标识一个设备(Host),与IPv4中的主机ID作用相似。
LLA(Link-Local Address,链路本地地址)是IPv6中另一种应用范围受限制的地址类型。LLA的有效范围是本地链路,前缀为FE80::/10。
LLA地址的生成方式:MAC地址(00e0-fc27-4fb9)LLA地址(FE80::2E0:FCFF:FE27:4FB9)
在一个节点启动IPv6协议栈时,节点的每个接口会自动配置一个链路本地地址。该地址专门用来和相同链路上的其他主机通信。
只能在连接到同一本地链路的节点之间使用,广泛应用于邻居发现、无状态地址等。
链路本地地址前缀FE80::/10,将接口ID添加在后面作为地址的低64位。
每一个IPv6接口都必须具备一个链路本地地址。

注意:串口的Link-Local Address生成方式(串口没有MAC地址,也能使用eui-64)
Cisco设备的串口使用借位方式生成IPv6地址,华为暂不清楚!!!
ULA(Unique Local Address,唯一本地地址)是IPv6私网地址,只能够在内网中使用。该地址空间在IPv6公网中不可被路由,因此不能直接访问公网。
唯一本地地址,概念上类似于IPv4中的私网地址,仅能够在本地网络使用,在IPv6 Internet上不可被路由;不能直接访问公网。
唯一本地地址固定前缀FC00::/7。它被分为两块,其中FC00::/8暂未定义,另一块是FD00::/8,其格式如下:

其它单播地址:
未指定地址:
0:0:0:0:0:0:0:0/128或者::/128
表示某个接口或节点没有IP地址
环回地址:
0:0:0:0:0:0:0:1/128或者::1/128
与IPv4地址中的127.0.0.1作用相同
实际发送的数据包中不能使用环回地址作为源IP地址或者目的IP地址
IPv6组播地址:
标识某个组,目的为组播地址的报文会被送到该组播组内的成员。组播地址由前缀(FF::/8),标志(Flag)字段、范围(Scope)字段以及组播组ID(Group ID)4个部分组成。

Flags:前3位设为0,最后一位定义地址类型
0 = 固定或众所周知( permanent )
1 = 本地分配或短期( temporary )
Scope 表示组播组的范围
此字段长度为4位。除了使用组播路由协议提供的信息外,路由器还要使用组播范围段来判定组播流量能否发送出去
Group ID 组播组ID
用于标识组播组,这个值在地址范围内是唯一的。此字段的长度为112位。其中,永久分配的组ID不受当前范围的限制。而临时组ID只能在某个特定的范围内有意义。而FF01::到FF0F::的组播地址属于保留地址段,而且也是永久组播地址
预定义组播地址:
Node-local
所有节点的组播地址: FF01:0:0:0:0:0:0:1
所有路由器的组播地址: FF01:0:0:0:0:0:0:2
Link-local
所有节点的组播地址: FF02:0:0:0:0:0:0:1
所有路由器的组播地址: FF02:0:0:0:0:0:0:2
Solicited-Node组播地址: FF02:0:0:0:0:1:FFXX:XXXX
所有OSPF路由器组播地址: FF02:0:0:0:0:0:0:5
所有OSPF的DR路由器组播地址: FF02:0:0:0:0:0:0:6
所有RIP路由器组播地址: FF02:0:0:0:0:0:0:9
所有PIM路由器组播地址: FF02:0:0:0:0:0:0:D
IPv6组播地址的MAC地址映射:
在以太网环境中,一个组播IPv6报文必须执行以太网封装。
组播IPv6报文的目的IP地址是组播IPv6地址,而目的MAC地址则必须是组播MAC地址,并且该地址必须与组播IPv6地址对应。
33-33是专门为IPv6组播预留的MAC地址前缀,组播MAC地址的后32bit从对应的组播IPv6地址的后32bit拷贝而来。
IPv4组播地址对应的MAC组播地址:01-00-5e(后边部分的生成规则)
IPv6组播地址对应的MAC组播地址:33-33
IPv6中特有的组播地址:(请求节点组播地址 :代替IPv4的广播)
每个节点必须为分配给它的每个单播和任播地址加入的一个组播地址,用于邻居发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围。
Solicited-Node组播地址生成过程
接口ID的后24位: XX:XXXX
前缀FF02:0:0:0:0:1:FF
FF02:0:0:0:0:1:FFXX:XXXX
例:主机的MAC地址为 00-02-b3-1e-83-29
IPv6地址为 fe80::0202:b3ff:fe1e:8329
请求节点组播地址: ff02::1:ff1e:8329
请求节点组播地址可以冲突,解封装后,Target Address不是本机时,直接丢弃
主机的IPv6地址:
只有一个网络适配器的IPv4主机通常会为该适配器分配单一的IPv4地址。而IPv6主机则往往会为每个适配器分配多个IPV6地址。典型IPv6主机上的接口通常会分配到如下的单播地址。
每个接口分配到一个链路本地地址。
每个接口分配到额外的单播地址(可以是单个或多个唯一本地地址或全球地址)
环回接口分配到环回地址( ::1 )
典型的IPv6主机通常是多宿主的,因为IPv6主机总是至少拥有两个可以接收数据包的地址-----用于接收本地链路流量的链路本地和可路由的唯一本地或全球地址。
此外,每个ipv6主机上的接口还会侦听如下组播地址的流量。
接口本地范围内所有节点的组播地址(FF01::1)
链路本地范围内所有节点的组播地址(FF02::1)
每个单播地址的请求节点地址
已加入的组的组播地址
路由器的IPv6地址:
IPv6路由器上的接口通常会分配到如下的单播地址。
每个接口分配到一个链路本地地址。
每个接口分配到额外的单播地址(可以是单个或多个唯一本地地址或全球地址)
环回接口分配到环回地址(::1 )
此外,每个ipv6路由器上的接口还会分配到如下任播地址。
每个子网分配到一个子网路由器的任播地址
额外的任播地址(可选)
此外,每个ipv6路由器上的接口还会侦听如下组播地址的流量。
接口本地范围内所有节点的组播地址(FF01::1)
接口本地范围内所有路由器的组播地址(FF01:2)
链路本地范围内所有节点的组播地址(FF02::1)
链路本地范围内所有路由器的组播地址(FF02:2)
每个单播地址的请求节点地址
已加入的组的组播地址
五、IPv6 报文格式
IPv6基本报头、IPv6扩展报头以及上层协议数据单元
IPv6基本报头有8个字段,固定大小为40字节,每一个IPv6数据报都必须报含报头.基本报头提供报文转发的基本信息,会被转发路径上面的所有路由器解析
这8个字段分别为:版本(Version)、流量类型(Traffic Class)、流标签(Flow Label)、净荷长度(Payload Length)、下一个报头(Next Header)、跳数限制(Hop Limit)、源IPv6地址、目的IPv6地址。

版本(Version):该字段规定了IP协议的版本,其值为6。长度为4bit。
流类别(Traffic Class):该字段功能和IPv4中的服务类型功能类似,表示IPv6数据报文的类或优先级。长度为8bit。
流标签(Flow Label):与IPv4相比,该字段是新增的。它用来标识这个数据报属于源节点和目标节点之间的一个特定数据报序列,它需要由中间IPv6路由器进行特殊处理。该字段长度为20bit。一般来说一个流可以通过源/目的IPv6地址和流标签来确定。
有效载荷长度(Payload Length):该字段表示IPv6数据报有效载荷的长度。有效载荷是指紧跟IPv6报头的数据报的其它部分(即扩展报头和上层协议数据单元)。该字段长度为16bit,能表示最大长度为65535Byte的有效载荷。如果有效载荷的长度超过这个值,该字段会置0,而有效载荷的长度用逐跳选项扩展报头中的超大有效载荷选项来表示。
下一个报头(Next Header):该字段定义紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型,或者上层协议数据单元中的协议类型。该字段长度为8bit。
跳数限制(Hop Limit):该字段类似于IPv4中的TTL(Time to Live)字段。它定义了IP数据报所能经过的最大跳数。每经过一个路由器,该数值减去1,当该字段的值为0时,数据报将被丢弃。该字段长度为8bit。
源地址(Source Address):表示发送方的地址,长度为128bit。
目的地址(Destination Address):表示接收方的地址,长度为128bit。
IPv4报头与IPv6报头的区别:

扩展报头:
扩展报头是可选的 只有需要该扩展报头对应的功能时 数据的发送者才会添加相应扩展报头 。
将原 IPv4 选项字段放入扩展报头
IPv6 报文包含 0 个、 1 个或者多个扩展报头
固定为 8 字节长度的整数倍

扩展报头种类:

扩展报头规约:
- IPv6 基础实现
一、ICMPv6
IPv6 基础协议之一
实现邻接点发现、无状态地址配置(包括重复地址检测)、 PMTU 发现等
ICMPv6报文格式:差错报文和信息报文
差错报文:
Type字段:0--127
差错报文(Error Messages),也称为差错消息,Type字段最高bit为0,也就是ICMPv6 Type=[ 0,127 ]
差错消息用于报告在转发IPv6数据包过程中出现的错误,如常见的目的不可达、超时等。
信息报文:
Type字段:128--255
信息报文(Information Messages),也称为信息消息,Type字段最高bit为1,也就是ICMPv6 Type=[ 128,255 ]
信息报文可以用来实现同一链路上节点间的通信和子网内的组播成员管理等。

差错报文:
目的不可达错误报文:
当数据包无法被转发到目标节点或上层协议时,路由器或目标节点发送ICMPv6目标不可达差错报文。在目标不可达报文中,类型(Type)字段值为1,代码(Code)字段值为0-4,每一个代码值都定义了具体含义(RFC2463):
0:没有到达目标的路由
1:与目标的通信被管理策略禁止
2:未指定
3:地址不可达
4:端口不可达
数据包过大错误报文:
如果由于出口链路的MTU小于IPv6数据包的长度而导致数据包无法转发,路由器就会发送数据包超长报文。该报文被用于IPv6路径MTU发现的处理 。数据包超长报文的类型字段值为2,代码字段值为0。
时间超时错误报文
当路由器收到一个IPv6报头中的跳限制(Hop Limit)字段值为0的数据包时,会丢弃该数据包并向源发送ICMPv6超时报文。在超时报文中,类型字段的值为3,代码字段的值为0或1:
0:在传输中超越了跳限制
1:分片重组超时
参数错误报文:
当IPv6报头或者扩展报头出现错误,导致数据包不能进一步处理时,IPv6节点会丢弃该数据包并向源发送此报文,指明问题的位置和类型。参数问题报文中,类型字段值为4,代码字段值为0~2,32位指针字段指出错误发生的位置。其中代码字段是这样定义的:
0:遇到错误的报头字段
1:遇到无法识别的下一个报头(Next Header)类型
2:遇到无法识别的IPv6选项
信息报文:信息报文分类
回送请求报文:发送到目标节点,以使目标节点立即发回一个回送应答报文
回送应答报文:对回送请求报文的回应
二、Path MTU:
在IPv6中,中间转发设备不对IPv6报文进行分片,报文的分片将在源节点进行。
PMTU(Path MTU)就是路径上的最小接口MTU。通过 ICMPv6 的 Packet Too Big 报文来完成。
PMTUD(Path MTU发现机制)的主要目的是发现路径上的MTU,当数据包被从源转发到目的地的过程中避免分段。
依赖PMTUD,数据的发送方可以使用所发现到的最优PMTU与目的地节点进行通信,这样可以避免数据包在从源传输到目的的过程之中,被中途的路由器分片而导致性能的下降。

ipv6 mtu mtu ,配置接口上发送 IPv6 报文的 MTU 值。
缺省情况下,接口的IPv6 的 MTU 值为 1500 字节。
ipv6 pathmtu ipv6 address [ vpn instance vpn instance name ] [ path-mtu ]],对指定的 IPv6 地址配置 PMTU 值。
如果不选择参数path mtu ,到指定 IPv6 地址的 PMTU 值为 1500
ICMP Request 128
ICMP Reply 129
邻居发现(RFC2461和RFC4861)
Type=133 路由器请求(Router Solicitation)
Type=134 路由器公告(Router Advertisement)
Type=135 邻居请求(Neighbor Solicitation)
Type=136 邻居公告(Neighbor Advertisement)
Type=137 重定向 (Redirect)
组播侦听者发现协议(RFC2710和RFC3810)
Type=130 查询消息
Type=131 报告消息
Type=132 离开消息
Type=143 MLDv2报告消息
三、邻居发现协议NDP(Neighbor Discovery Protocol):
是IPv6协议体系中一个重要的基础协议。邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器发现(Router Discovery),它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。
NDP使用以下几种ICMPv6报文:
RS(Router Solicitation):路由器请求报文
RA(Router Advertisement):路由器通告报文
NS(Neighbor Solicitation):邻居请求报文
NA(Neighbor Advertisement):邻居通告报文
地址解析:
IPv6地址解析通过ICMPv6(NS和NA报文)来实现。
在三层完成地址解析,主要带来以下几个好处:
1、地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议
2、可以使用三层的安全机制避免地址解析攻击。
3、使用组播方式发送请求报文,减少了二层网络的性能压力

目的MAC:组播MAC,根据请求节点组播地址转换得来
目标IP地址:请求节点组播地址,根据Target Address转换得来
Target Address:目标节点IPv6地址

目的MAC:NS报文源MAC
目标IP地址:NS报文源IPv6地址
Target Address:NS报文Target Address
IPv6邻居状态:
IPv6节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。5种邻居状态分别是:未完成(Incomplete)、可达(Reachable)、陈旧(Stale)、延迟(Delay)、探查(Probe)。
Incomplete:邻居不可达。正在进行地址解析,邻居的链路层地址未探测到,如果解析成功,则进入Reachable状态。
Reachable:邻居可达。表示在规定时间(邻居可达时间,缺省30S)内邻居可达。如果超过规定时间,该表项没有被使用,则表项进入Stale状态。
Stale:邻居是否可达未知。表示在规定时间(邻居可达时间,缺省30S)内没有被使用。此时除非有发送到邻居的报文没否则不对邻居是否可达进行探测。
Delay:邻居是否可达未知。已向邻居发送报文,如果在指定时间内没有收到响应,则进入Probe状态。
Probe:邻居是否可达未知。已向邻居发送NS报文探测邻居是否可达。在规定时间内收到NA报文回复,则进入Reachable状态;否则进入Incomplete状态。
R1先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete。
若收到R2回复的NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty。
经过邻居可达时间(默认30s),邻居状态由Reachable变为Stale,即未知是否可达。
如果在Reachable状态,R1收到R2的非请求NA报文,且其中携带的R2的链路层地址和表项中不同,则邻居状态马上变为Stale。
在Stale状态若R1要向R2发送数据,则邻居状态由Stale变为Delay,并发送NS请求。
在经过一段固定时间后,邻居状态由Delay变为Probe,其间若有NA应答,则邻居状态由Delay变为Reachable。
在Probe状态,R1每隔一定时间间隔(默认1s)发送单播NS,发送固定次数后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty。
重复地址检测(1):
重复地址检测类似免费ARP
基于 ICMPv6 实现
包括 NS 报文和 NA 报文
重复地址检测(Duplicate Address Detect,DAD)是指接口在使用某个IPv6地址之前,需要先探测是否有其他的节点使用了该地址,从而确保网络中没有两个相同的单播地址。
接口在启动任何一个单播IPv6地址前都需要先进行DAD,包括Link-Local地址。

重复地址检测(2):
一个地址在通过重复地址检测之前称为“tentative地址”,即“试验地址”。此时该接口不能使用这个试验地址进行单播通讯。
若2个节点配置相同地址,同时作重复地址检测时,当一方收到对方发出的DAD NS报文,则接收方将不启用该地址。 
路由器发现:
主机路由发现:
路由器发现是指主机发现本地链路上路由器和确定其配置信息的过程。
路由器发现可以同时实现以下三个功能:
路由器发现 (Router Discovery):主机定位邻居路由器以及选择哪一个路由器作为缺省网关的过程。
前缀发现 (Prefix Discovery):主机发现本地链路上的一组IPv6前缀的过程,用于主机的地址自动配置。
参数发现 (Parameter Discovery):主机发现相关操作参数的过程,如输出报文的缺省跳数限制、地址配置方式等信息。
使用报文:
RS 路由器请求 (报文场景、功能)
RA 路由器通告 (Cisco默认使能;华为默认关闭,开启命令)
协议交互主要有两种情况:
主机发送RS触发路由器回应RA
路由器周期发送RA
例:
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address 2001:10:10:10::1/64
undo ipv6 nd ra halt // 配置路由器定期的通告RA报文
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto global default // 配置客户端通过无状态生成IPv6地址,Defalt:同时生成默认路由
ipv6 nd ra preference high // 配置IPv6 RA报文的优先级,Hight,Mediam ,LOW ,如果收到多个RA报文,会根据报文优先级,选择默认路由
主机请求触发:
当主机启动时,主机会向本地链路分为内所有的路由器发送RS报文,触发路由器响应RA报文。主机发现本地链路上的路由器后,自动配置缺省路由,建立缺省路由表、前缀列表和设置其他的配置参数。

路由周期性发送:
路由器周期性发送RA报文,RA发送间隔是一个有范围的随机值,缺省的最大时间间隔是600S,最小时间间隔是200S。

对于定期发送的RA报文,其地址有如下要求:
Source Address:必须是发送接口的链路本地地址。
Destination Address:FF02::1
主机获得前缀及其它参数过程:
当存在以下情况时忽略 RA 发送的前缀:
RA 报文选项中的“ auto” 未置位。
前缀与已有地址前缀重复(包括 link local 地址)。
RA 报文选项中的“ preferred lifetime” 时间大于“ valid lifetime ” 。
前缀长度与接口 ID 长度之和不等于 128 位。
除以上情况外 主机获得前缀同时也获得一些相关时间参数:
“ preferred lifetime lifetime ”=发起新通讯的有效时间。
“ valid lifetime ”=原有通讯的有效时间。
主机会周期性的收到 RA 报文 并据此报文来更新自己的时间参数 。
几个生存时间:
当地址处于 Deprecated 状态 地址不能主动的发起连接只能是被动的接受连接 这也是为了保证上层应用而设计的 但是过了 valid lifetime 时间地址就变为 invalid 这时任何连接就会 down 掉 。

IPv6有状态与无状态的区别:
无状态配置:
不需要IPv6地址分配服务器保存和管理每个节点的状态信息的一种IPv6地址自动配置方式,称之为IPv6无状态地址自动配置。
无状态地址自动配置方式基于NDP来实现。
有状态配置:
IPv6地址分配服务器必须保存每个节点的状态信息,并管理这些保存的信息,这种方式称之为IPv6有状态地址自动配置。
有状态地址自动配置基于DHCPv6(Dynamic Host Configuration Protocol for IPv6)来实现。
ICMPv6RA 消息中的 Flags 字段:

M=0 无状态配置
M=1 有状态配置
M位默认为0,为0时,收到该RA的主机使用RA中包含的IPv6前缀用于无状态地址自动配置。
使用如下命令,可将该值设置为1。
ipv6 nd autoconfig managed-address-flag
当该值为1时,收到该RA的主机将采用有状态自动配置,也就是DHCPv6的方式来获取IPv6地址。
Other-Config-Flag,默认为0,表示主机不应该使用有状态自动配置机制来配置除了IPv6地址外的其他参数。
使用命令:ipv6 nd autoconfig other-flag
将该值置1,则主机需使用DHCPv6来配置除了IPv6地址外的其他信息,如DNS,域名等。
IPv6地址无状态配置过程:
1、根据接口标识产生链路本地地址。
2、发出邻居请求,进行重复地址检测。
3、如地址冲突,则停止自动配置,需要手工配置。
4、如不冲突,链路本地地址生效,节点具备本地链路通信能力。
5、主机会发送RS报文(或接收到设备定期发送的RA报文)。
6、根据RA报文中的前缀信息和接口标识得到IPv6地址。
ICMPICMPv6 RA 消息中的 Flags 字段:

重定向:指网关设备发现报文从其它网关设备转发更优,它就会发送重定向报文告知报文的发送者,让报文发送者选择另一个网关设备。


DHCPV6概述:
IPv6动态主机配置协议 DHCPv6(Dynamic Host Configuration Protocol for IPv6) 是针对 IPv6 编址方案设计,为主机分配 IPv6 地址 前缀和其他网络配置参数;并记录这些信息,便于网络管理。
DHCPv6 又分为如下三种 :
◾ DHCPv6 有状态自动配置。DHCPv6 服务器自动分配 IPv6 地址 /PD前缀及其他网络配置参数( DNS 、 NIS 、 SNTP 服务器地址等参数)。
◾ DHCPv6 无状态自动配置。主机 IPv6 地址仍然通过路由通告方式自动生成,DHCPv6 服务器只分配除 IPv6 地址以外的配置参数,包括DNS 、 NIS 、 SNTP 服务器等参数。
◾ DHCPv6(Prefix Delegation,前缀代理)自动配置:下层网络路由器不需要在手工指定用户侧链路的IPv6地址前缀,它只需要向上层网络路由器提出前缀分配申请,上层网络路由器便可以分配适合的地址前缀给下层路由器,下层路由器把获得的前缀(前缀一般长度小于64)进一步自动细分成64位前缀长度的子网网段,把细分的地址前缀再通过路由通告(RA)至与IPv6主机直连的用户链路上,实现主机地址的自动配置,从而完成整个IPv6网络的层次化布局。
DHCPv6网络构成:Client、Server、Relay。
DHCPv6常用概念:

DHCPV6四步交互:(两步交互)

1. DHCPv6客户端发送Solicit消息,请求DHCPv6服务器为其分配IPv6地址/前缀和网络配置参数。
2. DHCPv6服务器回复Advertise消息,通知客户端可以为其分配的地址/前缀和网络配置参数。
3. 如果DHCPv6客户端接收到多个服务器回复的Advertise消息,则根据消息接收的先后顺序、服务器优先级等,选择其中一台服务器,并向该服务器发送Request消息,请求服务器确认为其分配地址/前缀和网络配置参数。
4. DHCPv6服务器回复Reply消息,确认将地址/前缀和网络配置参数分配给客户端使用。
两步交换可以提高DHCPv6分配过程的效率(Solicit中携带rapid-commit参数,Server回复Reply报文),但适用在网络中只存在一台DHCPv6服务器的情况下。在有多个DHCPv6服务器的网络中,多个DHCPv6服务器都可以为DHCPv6客户端分配IPv6地址/前缀和其他配置参数,但是客户端实际只能使用其中一个服务器为其分配的IPv6地址/前缀和配置参数。
ipv6 address auto dhcp rapid-commit // 配置客户使用DHCP方式获致IP地址,使用两步交互
服务器端配置:
dhcpv6 pool QYT
address prefix 2001:10:10:10::/64
excluded-address 2001:10:10:10::1 to 2001:10:10:10::100
dns-server 2001:10:10:10::1
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address 2001:10:10:10::1/64
dhcpv6 server QYT // 在接口下调用地址
客户端配置:
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto link-local
ipv6 address auto dhcp // 获取到的地址由小到大(四步交互)
ipv6 address auto dhcp rapid-commit // 两步交互
- 路由技术
- RIPng(不考)
RIPng对原RIP的修改:
1、使用UDP的521端口
2、目的地址使用128bit的前缀长度
3、使用链路本地地址作为RIPng路由的下一跳地址
4、使用链路本地地址FE80::10作为作为源地址发送RIPng路由信息更新报文
6、使用组播方式周期性地发送路由信息,并使用FF02::9作为链路本地范围内的路由器组播地址
6、RIPng报文由报头(Header)和多个路由表项RTEs(Route Table Entry)组成
配置RIPng:全局使能RIPng进程,接口下宣告路由
interface Serial2/0/0
link-protocol ppp
ipv6 enable
ipv6 address 2001:23::/64 eui-64
ripng 1 enable
ripng metricout 9
interface LoopBack0
ipv6 enable
ipv6 address 2001:3::3/64
ripng 1 enable
ripng 1
- OSPF
OSPFv2基本概念---LSA 类型:

Router-LSA的四种类型:transit、sub-net、P2P、vitrual-link(各类型的Link ID和Link Data信息)
OSPFv3简介
OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。
目前针对IPv4协议使用的是OSPF Version 2,针对IPv6协议使用OSPF Version 3。
OSPFv3是OSPF Version 3的简称。
OSPFv3是运行于IPv6的OSPF路由协议RFC5340,同RFC2740)。
OSPFv3在OSPFv2基础上进行了修改,是一个独立的路由协议。
OSPFv3协议号仍然为89,在IPv6 Next Header里标识。
以组播地址发送协议报文,而IPv6 Hop Limit为1;Virtual-Link则通过单播发送更新;
AllSPfRouters:FF02::5(All OSPF)
AllDRouters:FF02::6(DR/BDR)
OspfV3报文的源地址是Link Locak地址,目标地址:ff02::5 ,ff02::6
IPV6对 OSPFv3 的影响:
IPv6 地址扩大为 128 位:LSA长度增加
本地链路(Link-Local) 地址:使用Link local 地址进行报文发送( VLink 除外)
接口可以配置多个全球单播地址(Global Unicast IPv6 address):运行于每个Link 进行通讯,不再基于subnet
IPv6验证扩展头:使用扩展头进行报文的认证和加密
OSPFv2和Ospfv3的比较:
相同点:
1、网络类型和接口类型。
2、接口状态机和邻居状态机。
3、链路状态数据库(LSDB)。
4、洪泛机制(Flooding mechanism)。
5、五种协议报文: Hello, DD, LSR, LSU, LSAck。
6、路由计算基本相同。
不同点:
1、基于链路的运行
2、使用链路本地地址
3、链路支持多实例复用
4、通过 Router ID 唯一标识邻居
5、认证的变化
6、Stub 区域的支持
7、报文的不同
8、Option 字段的不同
9、LSA 的类型和内容不同
基于链路的运行:
OSPFv2是基于网络运行的,两个路由器要形成邻居关系必须在同一个网段。
OSPFv3的实现是基于链路, 一个链路可以划分为多个子网, 节点即使不在同一个子网内, 只要在同一链路上就可以直接通信。
ospfv3 10
router-id 5.5.5.5
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001:56::1/64
ospfv3 10 area 0.0.0.0 //将接口宣告进OSPFv3进程(可在后边添加实例)
OSPFv3的路由器使用链路本地地址作为发送报文的源地址。
在虚连接上, 必须使用全球范围地址或者站点本地地址作为OSPFv3协议报文的源地址。
由于链路本地地址只在本链路上有意义且只能在本链路上泛洪,因此链路本地地址只能出现在Link LSA中。
一个接口可以配置多个Instance,但是需要在不同进程下配置,同一进程只能配置一个Instace
OSPFv3支持在同一链路上运行多个实例,实现链路复用并节约成本 。
通过RID来标识OSPF邻居:
在OSPFv2中,当网络类型为点到点或者通过虚连接与邻居相连时,通过Router ID来标识邻居路由器,当网络类型为广播或NBMA时,通过邻居接口的IP地址来标识邻居路由器。
OSPFv3取消了这种复杂性,无论对于何种网络类型,都是通过Router ID来唯一标识邻居。
认证的变化:
验证的变化:OSPFv3报文头中不再包含AuType和Authentication,而一般依赖IPv6的扩展验证头。
校验和(Checksum)变化:OSPFv3使用IPv6标准的CheckSum。
对未知LSA的支持:(Stub区域的支持)
由于OSPFv3支持对未知类型LSA的泛洪,为防止大量未知类型LSA泛洪进入Stub区域,对于向Stub区泛洪的未知类型LSA进行了明确规定, 只有当未知类型LSA的泛洪范围是区域或链路而且U比特没有置位时,未知类型LSA才可以向Stub区域泛洪。
头部字段变化:

LSA头部:

OSPFv2中的LS Type长度为8比特,指定LSA的类型; OSPFv3的LSA Type字段由OSPFv2的8比特扩充为16比特。
U 位:描述了路由器收到一个类型未知的 LSA 时如何处理,取值为 0 表示把类型未知 LSA 当成具有链路本地范围的 LSA 一样处理,取值为 1 表示按照S2/S1 位标识的泛洪范围来处理。
S2/S1 位:共同标识 LSA 的泛洪范围,取值 00 表示 LSA 只在产生该 LSA 的本地链路上泛洪;取值 01 表示 LSA 的泛洪范围为产生该 LSA 的路由器所在区域;取值 10 表示 LSA 将在整个自治系统内进行泛洪;取值 11 保留。
LSA Function Code: LSA 类型编码,描述 LSA 的类型。
OSPFv3基本概念---LSA 类型:

Hello报文Option字段
V6位: 表示这个路由器或链路是不是在路由IPv6。如果清零,这个路由器或链路不应该纳入IPv6路由计算。
E位: 描述AS-external-LSA的泛洪方式。在Hello包中,当且仅当这个区域能够处理AS-external-LSA的时候,E位设置为1(例如在非stub区域中),否则为0。如果E位设置不正确,邻接关系就不能形成。
MC位: 这一位描述路由器是否运行了MOSPF(请忽略)。
N位: 描述了路由器对Type-7 LSA的处理。当且仅当一个接口的所属区域为NSSA区域时设置为1。
R位: 路由器位。指出该公告者是否一个路由器。如果清零,则说明该公告者并不能路由数据。所以经过该公告者的路由不能纳入路由计算。如果多宿主机希望分享OSPF路由信息,但又不希望转发数据时,可以使用。
DC位:描述路由器对按需电路(demand circuits)的处理。
前缀标识方法的变化:Prefix Option字段
在OSPFv2中,使用“IP网段+掩码”来表示前缀信息,而且两段信息在不同LSA中的位置还各不相同,结构很不清晰。在OSPFv3的LSA中,使用专门的三元组(Prefix-Length, PrefixOptions, Prefix)来表示前缀信息。由LSA公告的每个前缀都拥有一个自己的PrefixOptions 字段。
用来表达某个前缀的一些特性,以便在各种不同的路由计算时做相应的判断和处理。

一类LSA:Router LSA:
LS Type:0x2001;泛洪范围:区域。
每个Router-LSA包含若干链路描述(link description),每个链路描述都描述了路由器的一个接口信息。
可以使用多个Router-LSA描述信息,通过Link-State ID区分多个不同的Router-LSA。
此类LSA同ospfv2相比并不含前缀信息
FLAG位:
W位为1时,mospf使用。
E位为1时,表示这个路由器是一个ASBR。
V位为1时,表示这个路由器是跨越本区域的一个virtual link的一个端点。
B位为1时,表示这个路由器是一个ABR.
二类LSA:Network-LSA
LS Type:0x2002;泛洪范围:区域。
Attached Router:
本链路所有路由器的Router ID
具有2个或更多路由器的Broadcast 或NBMA网络都需要由DR建立一个Network-LSA。
一个Network-LSA列出了这个链路上所有相连的路由器。
取消了IPv6中无关紧要的掩码。
DR产生,区域范围内洪泛;
描述该链路上与DR有FULL关系的所有路由器。
三类LSA:Inter-Area-Prefix-LSA
域间前缀LSA
LS类型值为0x2003,泛洪范围:区域。
在IPv4中,Inter-Area-Prefix-LSA称为Type 3 Summary-LSA。
在OSPFv2中,该类型的LSA称为Type 3 Summary-LSA。在OSPFv3中,更名为Inter-Area Prefix-LSA,语义更加明确,它描述了其他区域的前缀信息。
边界路由器(ABR)产生的第3类LSA,在Area范围内洪泛;
描述了到本AS内其他区域的路由信息;
每个Inter-Area-Prefix-LSA包含一条地址前缀信息;
该LSA中不包含Link-Local地址信息;
使用32位整数作为Link State ID来区分相同的LSA。
四类LSA:Inter-Area-Router-LSA
在OSPFv2中,该类型的LSA称为Type 4 ASBR Summary-LSA。在OSPFv3中,更名为Inter-Area Router-LSA,语义更加明确,它描述了到达其他区域的ASBR的信息。
边界路由器(ABR)产生的第4类LSA,在Area范围内洪泛;
描述了到本AS内其他区域的ASBR路由器信息;
每个Inter-Area-Router-LSA包含一个ASBR路由器信息;
LSA中的能力选项(Options)与所描述的ASBR Router LSA中能力选项(Options)保持一致;
使用32位整数作为Link State ID来区分相同的LSA。
五类LSA五类LSA:AS-External-LSA
外部路由LSA
LS类型值为0x4005,泛洪范围:AS
每个AS-external-LSA描述到达自治系统外部的一个前缀的路径。
Forwarding address
可选的128位Pv6地址。当前面的F位为1时存在。表示到达目的的数据应该转发到这个地址。在公告路由器不是最优的下一跳的时候可以使用
由ASBR路由产生,描述了区域外的路由信息;
具有自治系统(AS)洪泛范围;
Link State ID不包含地址信息,只是来和其他AS-External-LSA区分开;
AS-External-LSA不含有Link-Local地址信息。
可选项:
转发(Forwarding)地址;
Tag;
Referenced Link State ID: 保留字段。
七类LSA :
八类LSA :Link LSA
Rtr Pri: 该路由器在该链路上的优先级(Router Priority用于选举DR);
Options: 提供给Network LSA的Options;
Link Local Interface Address: 路由器与该链路相连的接口上配置的Link Local地址(Link Local地址只出现在Link LSA中);
Prefix: 该LSA中携带了多少(有可能多个)IPv6地址Prefix;
其他
LS Age: 61
LS Type: Link-LSA
Link State ID: 0.0.0.4
Originating Router: 1.1.1.1
LS Seq Number: 0x80000003
Retransmit Count: 0
Checksum: 0xA98E
Length: 80
Priority: 1
Options: 0x000013 (-|R|-|-|E|V6)
Link-Local Address: FE80::2E0:FCFF:FECB:749E
Number of Prefixes: 3
Prefix: 2001:121::/64
Prefix Options: 0 (-|-|-|-|-)
Prefix: 2002:121::/64
Prefix Options: 0 (-|-|-|-|-)
Prefix: 2003:123::/64
Prefix Options: 0 (-|-|-|-|-)
Link-LSA是OSPFv3新增的一种LSA类型,它具有链路泛洪范围,路由器会为每个启动了OSPFv3的接口产生一个Link-LSA。它的作用在于:
向链路上的其他路由器通告本地链路地址,作为它们的下一跳地址;
向链路上的其他路由器通告本地链路上的所有IPv6前缀;
在广播网络和NBMA网络上为DR提供Options取值。
九类LSA:Intra-Area-Prefix-LSA
intra-area-prefix-LSA的LS类型为0x2009。
具有区域泛洪范围
Referenced LS type 表明这个LSA是参考一个Router-LSA,还是一个Network-LSA。1表示参考一个router-LSA,2表示参考一个Network-LSA。
Referenced Link State ID 当这个LSA是参考一个Router-LSA时,设置为0。当这个LSA是参考一个Network-LSA时,设置为该链路的DR的Interface ID。
Referenced Advertising Router
当这个LSA是参考一个Router-LSA时,设置为这个路由器的Router ID。当这个LSA是参考一个Network-LSA时,设置为该链路的DR的Router ID。
为什么引入Intra-Area-Prefix-LSA?
OSPFv2中,依附于路由器和Stub网络的subnet出现在Router LSA中,依附于Transit网络的subnet出现在Network-LSA中;OSPFv3中,Router-LSA和Network-LSA不再包含地址信息,所以引入Intra-Area-Prefix-LSA。
Intra-Area-Prefix-LSA携带区域内IPv6 Prefix信息。
依附于路由器的Prefix
依附于Stub网络的Prefix
依附于Transit网络的Prefix
每台路由器或Transit网络可以 产生多个Intra-Area-Prefix-LSA。
LSA类型不同:OSPFv3 LSA的类型

- ISIS
ISIS是一种IGP协议。
ISIS使用SPF算法计算路由。
ISIS的报文采用TLV结构,因此扩展性很好。
为支持新的协议和特性,只需要扩展新的TLV或子TLV。
可以轻松扩展支持IPv6,TE,MT等协议和特性。
IS-IS对IPv6的支持不需要对协议做大的改动,因此协议的继承性很好;不像OSPF,为支持IPv6需要开发全新的协议OSPFv3。
IS-IS通过新增TLV以实现对IPv6的支持:(新增了两种TLV)
236号TLV:
定义路由信息前缀、度量值等信息来说明网络的可达性
232号TLV:
相当于IPv4中的“IP Interface Address”TLV,只不过把原来的32比特的IPv4地址改为128比特的IPv6地址
ISIS 为支持IPv6,扩展了以下两个TLV:
IPv6 Reachability TLV [Type 236] [0xEC]
IPv6 Reachability:类型值为236(0xEC),通过前缀、度量、标记等来描述可达的IPv6前缀信息。在IPv4中有IPv4内部可达性TLV和IPv4外部可达性TLV,在IPv6的扩展当中使用一个“X”bit来区分“内部”和“外部”。
IPv6 Interface Address TLV [Type 232] [0xE8]
IPv6 Interface Address:类型值为232(0xE8),它相当于IPv4中的“IP Interface Address” TLV,只不过把原来的32比特的IPv4地址改为128比特的IPv6地址。
IPv6 Reachability TLV:

U:up/down bit ,标识这个前缀是否是从高 level 通告下来的(用来防环路)。
X:external original bit ,标识这个前缀是否是从其他路由协议中引入过来的。
S:subtlv present bit ,子 TLV 标识位。 可选
IPv6 Interface Address TLV:
这个TLV结构是直接从TLV132映射过来的,因此,原来TLV132最多可以64个IP地址(32位),在TLV232中,最多只能有16个IPv6地址(128位)。
在不同的PDU中,这个字段的内容是不同的,在hello PDU中,“接口地址TLV”只能包含发送hello包的接口的Link-local地址;对于LSP,“接口地址TLV”只能包含IS的non-link-local IPv6(全局地址)
ISIS ST 单拓扑
ISIS 为所有协议维护相同的 SPT (Shortest Path Tree)
IPv 4 和 IPv6的拓扑必须一致
ST单拓扑缺点
不足之处
网络可维护性的需求在目前的运营商中越来越被重视,独立拓扑的维护网络,
即带内维护网络的需求开始出现。
IS IS 为所有协议维护相同的 SPT ,这意味着 IPv4 和 IPv6 的拓扑必须一致
有什么问题?
不适合分离拓扑的网络部署。
为维护相同的拓扑,所有接口都必须同时运行 IS IS IPv4 和 IS IS IPv6 ,部署不灵活。
不能使用 IPv4 区域来链接不同的 IPv6 区域,否则 IPv4 区域会丢弃 IPv6 的流量
ISIS 对 MT 多拓扑的支持
MT 可以使 IS IS 在一个路由域中维护多个拓扑
如果支持 MT IS IS 可以为 IPv 4 和 IPv 6 维护分离的拓扑
重要的是,使用 MT IPv4 和 IPv6 的拓扑就不需要一样了
MT(多拓扑):分离的拓扑
ISIS 路由协议主要可以分为以下几个方面:
邻居的建立,
路由可达( Prefix Reachable )与路由器可达 IS Reachable )的发布
SPF 计算以及路由计算。
为了达到多拓扑的相互隔离 以上几个方面均要求携带 MT 参数以满足这一要求
SPF 计算与路由计算在路由器内识别完成 。
于是 draft ietf isis wg multi topology 11 中定义了四种新的 TLV 分别满足以
上过程 实现了通用环境下的 ISIS MT 的交互过程 。
ISIS规划 (1):NET Network Entity Title 规划
NET 格式: AA BBBB CCCC DDDD SSSS SSSS SSSS 00
Area ID = AA.BBBB.CCCC.DDDD
AA 49 ,地址格式标识符 AFI AFI=49 的地址为 OSI 协议的私有地址)
BBBB :可以是国家编码,例如中国 0086
CCCC :可以是省编码,自己定义,例如辽宁省 0003
DDDD :可以是设备所在站点编码,自己定义,例如辽宁省大连站点 3821
System ID = SSSS.SSSS.SSSS
业界通行的做法是通过设备 Loopback0 地址演绎,生成 System ID
NSEL 始终为 00
分层分区域规划
所有 ISIS 路由器都工作在 Backbone Level 2 模式;(首选)
所有 ISIS 路由器都工作在同一个 Area Level 1 模式;
ISIS规划 (2):Cost 规划
ISIS Cost 设计比较灵活
可以 根据链路物理带宽设计
Cost 的设计决定网络流量的走向
所以除了考虑上述 2 个因素外,更重要的是考虑客户对网络流量走向的需求。这就要求在 Cost 设计前,要清楚不同端到端场景的流量走向。
ISIS 有三种设置链路 Cost 值的方法:
在接口视图下设置接口的 Cost 值
在系统视图下设置 ISIS 实例下所有接口 Cost值
在系统视图下根据带宽自动计算 Cost值
ISIS规划 (3):可靠性规划
ISIS 快速收敛设计
BFD For ISIS :链路故障快速检测
ISPF(Incremental SPF) SPF):加快路由收敛 (缺省支持
PRC(Partial Route Calculation) Calculation):加快路由收敛 (缺省支持
LSP Fast Flooding :加快 LSDB 同步
智能定时器:加快路由收敛,增强网络稳定性
ISIS规划 (4):安全性规划
ISIS 支持三种认证方式 接口认证区域认证域认证
上述三种认证都支持简单密码和高密的MD5方式认证。高密的 MD5 认证方式具有更高的安全性,推荐高密的MD5
- 组播技术
MLD协议概述
用于 IPv6 组播中的组成员管理
基本功能和 IGMP 相似
使用 ICMPv6 的消息类型( Nextheader =58
当前 MLD 有 2 个版本:
MLDv1
MLDv2
MLDv1工作原理:
继承了 IGMPv2 的工作机制
MLDv2工作原理:
对 IPv6 组播源的过滤
IPv6 组播组状态跟踪
接收者主机的状态侦听
- 过渡技术

过渡技术概述
双栈技术
•节点同时支持 IPv4 和 IPv6 协议栈
IPv6 over IPv4 隧道
•过渡初期使用
•通过隧道技术,使 IPv6 报文在 IPv4 网络中传输
•手动隧道包括 IPv6 over IPv4 手动隧道和 IPv6 over IPv4 GRE 隧道
•自动隧道包括 IPv4 兼容 IPv6 自动隧道、 6to4 隧道和 ISATAP 隧道
IPv6 over IPv4 隧道
•过渡后期使用
•通过隧道技术,使 IPv6 报文在 IPv4 网络中传输
双栈技术
•节点同时支持 IPv4 和 IPv6 协议栈
IPv6 over IPv4 隧道
•过渡初期使用
•通过隧道技术,使 IPv6 报文在 IPv4 网络中传输
•手动隧道包括 IPv6 over IPv4 手动隧道和 IPv6 over IPv4 GRE 隧道
•自动隧道包括 IPv4 兼容 IPv6 自动隧道、 6to4 隧道和 ISATAP 隧道
IPv6 over IPv4 隧道
•过渡后期使用
•通过隧道技术,使 IPv6 报文在 IPv4 网络中传输
双栈协议
所有设备必须支持 IPv4/IPv6 协议栈
连接双栈网络的接口必须同时配置 IPv4 地址和 IPv6 地址
IPv6 over IPv4隧道技术:概述
通过隧道技术,使 IPv6 报文在 IPv4 网络中传输,实现 IPv6 网络之间的孤岛互连
IPv6 over IPv4 隧道分类:
•手动隧道包括手动隧道和 GRE 隧道
•自动隧道包括 IPv4 兼容 IPv6 自动隧道、 6to4 隧道和 ISATAP 隧道
手动隧道:
IPv6 over IPv4 隧道手动隧道的一种
源地址和目的地址均需手工指定
用于边界路由器与边界路由器,或者主机与边界路由器之间
GRE隧道:
IPv6 over IPv4 隧道手动隧道的一种
手工指定隧道的端点地址
GRE 承载 IPv6 协议
IPv4兼容 IPv6:
IPv6 over IPv4 隧道自动隧道的一种
采用 IPv4 兼容地址,即 ::IPv4/96
每台主机须有合法的 IP 地址
IPv6 over IPv4隧道:(1)
IPv6 over IPv4 隧道自动隧道的一种
支持 Router 到 Router 、 Host 到 Router 、 Router 到 Host 、 Host 到 Host
采用 6to4 专用地址,即 2002:IPv4::/48
IPv6 over IPv4隧道:(2)
可连接多个 6to4 网络
通过 SLA ID 区分
IPv6 over IPv4隧道:(3)中继
实现 6to4 网络和 IPv6 普通网络互通
ISATAP隧道:(4)
IPv6 over IPv4 隧道自动隧道的一种
支持 Host 到 Router 、 Router 到 Host 、 Host 到 Host
采用 ISATAP 隧道 专用地址
IPv4 over IPv6隧道:
通过隧道技术,使 IPv4 报文在 IPv6 网络中传输,实现 IPv4 网络之间的孤岛
配置手动隧道:
配置GRE 隧道:

浙公网安备 33010602011771号