IPv6特点
1、地址容量大大扩展,有原来32位,扩展到128
2、支持分层地址结构,有利于寻址,有利于聚合 ,提高路由器效率
3、无须NAT
4、扩展支持组播和任意播地址,
IPv4单,组播,广播 ipv6单播,组播,任意播
8.8.8.8
5、地址配置比较简单:有状态地址配置,无状态地址配置
6、简化了报文格式
7、 扩展报文头部,选项的支持,
8、流标签
IPV4地址是通过五元组定定义一组流
ipv6地址通过流标签定义 一组
源 目IP 源目端口号 协议号
9、 认证和加密
10、支持移动网络 ,和实时 通信
IPv6地址配置方法
EUI64
00e0-fc02-3834
2001:0000:0000:0000:0000:0000:0000:0001
2001::1
i
IPv6地址表示方法
IPv6地址包括128比特,由冒号分割成8段,每段4个16进制数 2031:0000:130F:0000:0000:09C0:876A:130B
IPv6压缩格式
每组中的前导“0”都可以省略
2031:0:130F:0:0:9C0:876A:130B
地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替
2031:0:130F::9C0:876A:130B
需要注意的是,在一个IPv6地址中只能使用一次双冒号“::”,否则当计算机将压缩后的地址恢复成128位时,无法确定每段中0的个数。
2001:0000:0000:0123:0000:0000:0000:0001
2001:0000:0000:0123:0000:0000:0000:1
2001::0123:0000:0000:0000:1 -
2001:0000:0000:0123::1
IPv6地址分为两部分
网络前缀,n比特,相当于IPv4中的网络ID
接口标识,128-n比特相当于IPv4中的主机ID
对于IPv6 单播地址来说,如果地址的前三bit不是000,则接口标识必须为64位,如果地址的前三位是000,则没有此限制。
IEEE EUI-64规范
接口ID的典型长度是64bits,IEEE EUI-64规范给出了一个由IEEE 48bits MAC地址自动生成64bits Interface ID的方法。MAC地址格式中c bit表示厂商ID,d bit表示厂商编号ID,“0”bit代表全局/本地位,表示全球有效。g表示其是表示单个主机还是某个组。具体的转换算法为:将上述的0转换为1,在c和d之间插入两个字节:FFFE,结果为IPv6接口ID。
这种由MAC地址产生IPv6地址接口ID的方法可以减少配置的工作量,尤其是当采用无状态地址自动配置时(后面会介绍),只需要获取一个IPv6前缀就可以与接口ID形成IPv6地址。
使用这种方式最大的缺点就是某些恶意者可以通过二层MAC推算出三层IPv6地址。
224.0.0.1(All 网络设备 ) ff02::1
224.0.0.2(所有 路由器) ff02::2
单播地址(Unicast Address):标识一个接口,目的地址为单播地址的报文会被送到被标识的接口。在IPv6中,一个接口拥有多个IPv6地址是非常常见的现象。
组播地址(Multicast Address):标识多个接口,目的地址为组播地址的报文会被送到被标识的所有接口。只有加入相应组播组的设备接口才会侦听发往该组播地址的报文。
任播地址(Anycast Address):任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。任播地址与单播地址使用同一个地址空间
IPv6没有定义广播地址(Broadcast Address)。
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto link-local 配置 自动生成 IPV6 的链路本地地址
链路本地地址是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。它使用了特定的本地链路前缀FE80::/10(最高10位值为1111111010),同时将接口标识添加在后面作为地址的低64比特。
当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址(其固定的前缀+EUI-64规则形成的接口标识)。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。所以链路本地地址广泛应用于邻居发现,无状态地址配置等应用。
以链路本地地址为源地址或目的地址的IPv6报文不会被路由设备转发到其他链路。
1111110 0/8 FC
1111111 0 /8 FD
其他单播地址
未指定地址
一个IPv6组播地址由前缀,标志(Flag)字段、范围(Scope)字段以及组播组ID(Global ID)4个部分组成:
前缀:IPv6组播地址的前缀是FF00::/8(1111 1111)。
标志字段(Flag):长度4bit,目前只使用了最后一个比特(前三位必须置0),当该位值为0时,表示当前的组播地址是由IANA所分配的一个永久分配地址;当该值为1时,表示当前的组播地址是一个临时组播地址(非永久分配地址)。
范围字段(Scop):长度4bit,用来限制组播数据流在网络中发送的范围。
组播组ID(Global ID):长度112bit,用以标识组播组。目前,RFC2373并没有将所有的112位都定义成组标识,而是建议仅使用该112位的最低32位作为组播组ID,将剩余的80位都置0。
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地址
过渡地址 :
IPv4兼容地址 0:0:0:0:0:0:ipv4地址 ipv6 address ::192.168.10.1/64
IPv4映射地址:0:0:0:0:ffff:192.168.10.1/25
6to4地址 :2002
istap:
组播地址
类似IPv4组播地址
由前缀,标志(Flag)字段、范围(Scope)字段以及组播组ID组成
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
FF02:0:0:0:0:0:0:5 MAC:33-33-00-00-00-05
在以太网环境中,一个组播IPv6报文必须执行以太网封装。
组播IPv6报文的目的IP地址是组播IPv6地址,而目的MAC地址则必须是组播MAC地址,并且该地址必须与组播IPv6地址对应。
33-33是专门为IPv6组播预留的MAC地址前缀,MAC地址的后32bit从对应的组播IPv6地址的后32bit拷贝而来。
子网路由器任播地址是已经定义好的一种任播地址(RFC3513)。发送到子网路由器任播地址的报文会被发送到该地址标识的子网中路由意义上最近的一个设备。所有设备都必须支持子网任播地址。子网路由器任播地址用于节点需要和远端子网上所有设备中的一个(不关心具体是哪一个)通信时使用。例如,一个移动节点需要和它的“家乡”子网上的所有移动代理中的一个进行通信。
子网路由器任播地址由n bit子网前缀标识子网,其余用0填充。格式如图6所示
ICMPv6是IPv6的基础协议之一。
在IPv4中,Internet控制报文协议ICMP向源节点报告关于向目的地传输IP数据包过程中的错误和信息。它为诊断、信息和管理目的定义了一些消息,如:目的不可达、数据包超长、超时、回应请求和回应应答等。在IPv6中,ICMPv6除了提供ICMPv4常用的功能之外,还是其它一些功能的基础,如邻接点发现、无状态地址配置(包括重复地址检测)、PMTU发现等。
ICMPv6的协议类型号(即IPv6报文中的Next Header字段的值)为58。
报文解释:
Type:表明消息的类型,0至127表示差错报文类型,128至255表示消息报文类型。
Code:表示此消息类型细分的类型。
Checksum:表示ICMPv6报文的校验和。
type:
128 : Request
129 : Reply
133 : RS
134 : RA
135 : NS
136 : NA
137 : ICMPV6重定向
邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器发现(Router Discovery),它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。
邻居通告报文:
邻居请求报文NS:类型字段值为135。
邻居通告报文NA:类型字段值为136。
在路由器发现中使用了两种ICMPv6报文:路由器通告和路由器请求报文:
路由器通告RA:类型字段值为134。
路由器请求RS:类型字段值为133。
重定向使用了一种ICMPv6报文:重定向报文。
重定向报文:类型字段值为137。
地址 解析功能
PC1 发送NS消息(135)
Source IP:自己的IPv6地址 目的IP:PC2的请求节点组播地址
Source MAC:自己 的MAC 目的MAC:组播地址
target address:PC2的IP 地址
Option:自己 的MAC地址
PC2回应 NA消息(136)
Source IP:自己的IPv6地址 目的IP:PC2的IPv地址
Source MAC:自己 的MAC 目的MAC:PC1的MAC
target address:PC2的IP 地址
Option:自己 的MAC地址
下面以A、B两个邻居节点之间相互通信过程中A节点的邻居状态变化为例(假设A、B之前从未通信),说明邻居状态迁移的过程。
1.A先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete。
2.若B回复NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty,即删除表项。
3.经过邻居可达时间,邻居状态由Reachable变为Stale,即未知是否可达。
4.如果在Reachable状态,A收到B的非请求NA报文,且报文中携带的B的链路层地址和表项中不同,则邻居状态马上变为Stale。
5.在Stale状态若A要向B发送数据,则邻居状态由Stale变为Delay,并发送NS请求。
6.在经过一段固定时间后,邻居状态由Delay变为Probe,其间若有NA应答,则邻居状态由Delay变为Reachable。
7.在Probe状态,A每隔一定时间间隔发送单播NS,发送固定次数后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty,即删除表项。
debugging ipv6 nd
DAD重复地址 检测
在进行DAD检测是,一个IPv6单播地址在分配给一个接口之后且通过重复地址检测之前称为试验地址(Tentative Address)。此时该接口不能使用这个试验地址进行单播通信,但是仍然会加入两个组播组:ALL-NODES组播组和实验地址所对应的Solicited-Node组播组。
IPv6重复地址检测技术和IPv4中的免费ARP类似:节点向一个自己将使用的试验地址所在的Solicited-Node组播组发送一个以该实验地址为请求的目标地址的NS报文,如果收到某个其他站点回应的NA报文,就证明该地址已被网络上使用,节点将不能使用该实验地址通讯。
在IPv6中,IPv6地址可以支持无状态的自动配置,即主机通过某种机制获取网络前缀信息,然后主机自己生成地址的接口标识部分。路由器发现功能是IPv6地址自动配置功能的基础,主要通过以下两种报文实现:
路由器通告RA(Router Advertisement)报文:每台路由器为了让二层网络上的主机和路由器知道自己的存在,定时都会组播发送RA报文,RA报文中会带有网络前缀信息,及其他一些标志位信息。RA报文的Type字段值为134。
路由器请求RS(Router Solicitation)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,那么此时主机可以立刻发送RS报文,网络上的路由器将回应RA报文。RS报文的Tpye字段值为133。
RA消息的源IP:自己 的Link-local地址 目的地址是FF02::1
地址自动配置
IPv6主机无状态自动配置过程:
根据接口标识产生链路本地地址。
发出邻居请求,进行重复地址检测。
如地址冲突,则停止自动配置,需要手工配置。
如不冲突,链路本地地址生效,节点具备本地链路通信能力。
主机会发送RS报文(或接收到路由器定期发送的RA报文)。
根据RA报文中的前缀信息和通过EUI-64规范生成的接口标识得到IPv6地址。
IPV6无状态配置
Server
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001:192:168:10::1/64
undo ipv6 nd ra halt
Client
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto global default 配置客户端使用无状态获取地址,如果配置 了default参数,会生成 默认路由(RA优先组)
地址配置方法
目前IPv6地址的分配方法有以下几种:?手动配置。手动配置IPv6地址/前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)。
?无状态自动地址分配。由接口ID生成链路本地地址,再根据路由通告报文RA(Router Advertisement)包含的前缀信息自动配置本机地址。
?有状态自动地址分配,即DHCPv6方式。DHCPv6又分为如下两种:?DHCPv6有状态自动分配。DHCPv6服务器自动分配IPv6地址/PD前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)。
?DHCPv6无状态自动分配。主机IPv6地址仍然通过路由通告方式自动生成,DHCPv6服务器只分配除IPv6地址以外的配置参数,包括DNS、NIS、SNTP服务器等参数。
使用有状态配置方法获取IPV6 地址
dhcp enable
dhcpv6 pool QYT
address prefix 2001:192:168:10::/64
excluded-address 2001:192:168:10::1
dns-server 2001:192:168:10::1
dns-domain-name qytang.com
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto dhcp
命令含义
ripng命令用来创建指定RIPng进程。
ripng?enable命令用来使能一个接口的RIPng路由协议。
ripng metricout命令用来设置接口发送RIPng路由增加的度量值。
import-route命令用来从其它路由协议引入路由。使用route-policy参数可以过滤引入的路由,并可以设置路由的属性。
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基础上进行了修改,是一个独立的路由协议。
OSPFv2和v3的相同 点
网络类型和接口类型。
接口状态机和邻居状态机。
链路状态数据库(LSDB)。
洪泛机制(Flooding mechanism)。
五种协议报文: Hello, DD, LSR, LSU, LSAck。
路由计算基本相同。
OSPFV2和ospfv3的不同
基于链路的运行
使用链路本地地址
链路支持多实例复用
通过 Router ID 唯一标识邻居
认证的变化
Stub 区域的支持
报文的不同
Option 字段的不同
LSA 的类型和内容不同
OSPFv2是基于网络运行的,两个路由器要形成邻居关系必须在同一个网段。
OSPFv3的实现是基于链路, 一个链路可以划分为多个子网, 节点即使不在同一个子网内, 只要在同一链路上就可以直接通信。
OSPFv3的路由器使用链路本地地址作为发送报文的源地址。
在虚连接上, 必须使用全球范围地址或者站点本地地址作为OSPFv3协议报文的源地址。
由于链路本地地址只在本链路上有意义且只能在本链路上泛洪,因此链路本地地址只能出现在Link LSA中。
在OSPFv2中,当网络类型为点到点或者通过虚连接与邻居相连时,通过Router ID来标识邻居路由器,当网络类型为广播或NBMA时,通过邻居接口的IP地址来标识邻居路由器。
OSPFv3取消了这种复杂性,无论对于何种网络类型,都是通过Router ID来唯一标识邻居。
由于OSPFv3支持对未知类型LSA的泛洪,为防止大量未知类型LSA泛洪进入Stub区域,对于向Stub区泛洪的未知类型LSA进行了明确规定, 只有当未知类型LSA的泛洪范围是区域或链路而且U比特没有置位时,未知类型LSA才可以向Stub区域泛洪。
版本号从 2 升级到 3。
报文头的不同:与 OSPFv2 报文头相比, OSPFv3 报文头长度只有 16 字节,去掉了认证字段但加了 Instance ID 字段。 Instance ID 字段用来支持在同一条链路上运行多个实例,且只在链路本地范围内有效,如果路由器接收到的 Hello 报文的 Instance ID 与当前接口配置的 Instance ID 不同,将无法建立邻居关系。
在OSPFv2中,收到类型未知的LSA将直接丢弃。
OSPFv3在LSA的LS Type字段中增加了一个U比特位来位标识对未知类型LSA的处理方式:
如果 U 比特置 1,则对于未知类型的 LSA 按照 LSA 中的 LS Type 字段描述的泛洪范围进行泛洪;
如果 U 比特置 0,对于未知类型的 LSA 仅在链路范围内泛洪。
LSA的泛洪范围已经被明确地定义在LSA的LS Type字段,目前,有三种LSA泛洪范围。
链路本地范围(Link-local Scope)。
LSA 只在本地链路上泛洪,不会超出这个范围, Link-LSA(新增)。
区域范围(Area Scope)。
Router-LSA, Network-LSA, Inter-Area-Prefix-LSA, Inter-Area-Router-LSA, Intra-Area-Prefix-LSA(新增)都是区域范围泛洪的 LSA。
自治系统范围(AS Scope)。
LSA 将被泛洪到整个路由域,AS-External-LSA。
在OSPFv2中, Option字段出现在每一个Hello报文、 DD报文以及每一个LSA中。
在 OSPFv3中, Option字段只在 Hello报文、 DD报文、 Router LSA、 NetworkLSA、 Inter Area Router LSA以及Link LSA中出现。
OSPFv3新增了Link LSA和Intra Area Prefix LSA。
Router LSA 不再包含地址信息,使能 OSPFv3 的路由器为它所连接的每条链路产生单独的 Link LSA,将当前接口的链路本地地址以及路由器在这条链路上的一系列 IPv6 地址信息向该链路上的所有其它路由器通告。
Router LSA 和 Network LSA 中不再包含路由信息,这两类 LSA 中所携带的路由信息由 Intra Area Prefix LSA 来描述,该类 LSA 用来公告一个或多个IPv6 地址前缀。
由 DR 产生,用来描述 DR 所代表的网络的链路状态信息和链路开销信息。该 LSA 是 BMA 网络上的所有链路信息和链路开销信息的集合信息。 惟— 的重要不同之处是可选项字段的位置不同,OSPFv3中取消了在 IPv6协议中没有意义的网络掩码字段。
Link-LSA是OSPFv3新增的一种LSA类型,它具有链路泛洪范围,路由器会为每个启动了OSPFv3的接口产生一个Link-LSA。它的作用在于:
向链路上的其他路由器通告本地链路地址,作为它们的下一跳地址;
向链路上的其他路由器通告本地链路上的所有IPv6前缀;
在广播网络和NBMA网络上为DR提供Options取值。
为什么引入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。
acl ipv6 number 2001
rule 5 permit source 2004:40:40:40::/64
route-policy Dir2OSPF permit node 10
if-match acl 2001
ospfv3 10
import-route direct route-policy Dir2OSPF
ip ipv6-prefix 10 index 10 permit 2004:40:40:40:: 64 greater-equal 64 less-equal
route-policy Dir2OSPF permit node 10
if-match ipv6 address prefix-list 10
ospfv3 10
router-id 4.4.4.4
import-route direct route-policy Dir2OSPF
不足之处
网络可维护性的需求在目前的运营商中越来越被重视,独立拓扑的维护网络,即带内维护网络的需求开始出现。
IS-IS为所有协议维护相同的SPT,这意味着IPv4和IPv6的拓扑必须一致
有什么问题?
不适合分离拓扑的网络部署。
为维护相同的拓扑,所有接口都必须同时运行IS-IS IPv4和IS-IS IPv6,部署不灵活。
不能使用IPv4区域来链接不同的IPv6区域,否则IPv4区域会丢弃IPv6的流量
IPV6 over ipv4 手动隧道
interface Tunnel0/0/0
ipv6 enable
ipv6 address 2002:123::3/64
tunnel-protocol ipv6-ipv4
source 3.3.3.3
destination 1.1.1.1
#
IPV6 over ipv4 gre
interface Tunnel0/0/0
ipv6 enable
ipv6 address 2002:123::3/64
ospfv3 10 area 0.0.0.0
tunnel-protocol gre
source 3.3.3.3