单播地址结构 网络前缀+接口标识组成 网络前缀(Network Prefix):n bit,相当于IPv4地址中的网络ID 接口标识(Interface Identify):(128-n)bit ,相当于IPv4地址中的主机ID 常见的IPv6单播地址如全球单播地址、链路本地地址等,要求网络前缀和接口标识必须为64 bit 注:全球单播地址中,高位前3 bit为000的地址可以采用非64 bit的网络前缀 接口标识生成方法:手工配置、系统自动生成、通过IEEE EUI-64规范生成 接口标识的用途 黏贴在链路本地地址前缀后面,形成接口的链路本地地址 无状态自动配置中,黏贴在获取到的IPv6全球单播地址前缀后面,构成接口的全球单播地址 EUI-64计算方法 缺点:可以通过二层MAC推算出三层IPv6地址 注:使用EUI-64的方法生成接口标识时前缀必须小于等于64 GUA--------全球单播地址---------公网地址 ULA---------唯一本地地址-------私网地址 LLA------链路本地地址----没有路由能力 LLA用于一条单一链路层面的通信,例如IPv6地址无状态自动配置、IPv6邻居发现等 注:配置链路本地地址不能指定前缀长度 组播地址 IPv6组播地址标识多个接口,一般用于“一对多”的通信场景 IPv6组播地址只可以作为IPv6报文的目的地址 Flags:用来表示永久或临时组播组 0000表示 永久分配 0001表示 临时的 Scope:表示组播组的范围。 0:预留 1:节点本地范围;单个接口有效,仅用于Loopback通讯 2:链路本地范围;例如FF02::1 5:站点本地范围 8:组织本地范围 E:全球范围 F:预留 Group ID:组播组ID 被请求节点组播地址 当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。该地址主要用于邻居发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围 FF02::1------代表这条链路上的所有设备 FF02::2------代表这条链路上的路由器接口 任播地址 任播地址标识一组网络接口(通常属于不同的节点)。任播地址可以作为IPv6报文的源地址,也可以作为目的地址 任播报文的发起方通常为请求某一服务的主机 任播地址与单播地址在格式上无任何差异,唯一的区别是一台设备可以给多台具有相同地址的设备发送报文 优势 业务冗余:比如,用户可以通过多台使用相同地址的服务器获取同一个服务。这些服务器都是任播报文的响应方。如果不是采用任播地址通信,当其中一台服务器发生故障时,用户需要获取另一台服务器的地址才能重新建立通信。如果采用的是任播地址,当一台服务器发生故障时,任播报文的发起方能够自动与使用相同地址的另一台服务器通信,从而实现业务冗余 提供更优质的服务:比如,某公司在A省和B省各部署了一台提供相同Web服务的服务器。基于路由优选规则,A省的用户在访问该公司提供的Web服务时,会优先访问部署在A省的服务器,提高访问速度,降低访问时延,大大提升了用户体验 主机和路由器的单播IPv6地址以及加入的组播地址如下所示: IPv6单播地址业务流程: DAD:重复地址检测,类似于IPv4中的免费ARP检测,用于检测当前地址是否与其他接口冲突 NDP NDP使用ICMPv6报文实现其功能 IPv6动态地址配置 有状态地址配置:有状态地址配置多用于公司内部有线终端的地址分配,便于对地址进行管理 采用DHCPv6协议,IPv6客户端将从DHCPv6服务器端获取完整的128 bit IPv6地址,同时包括DNS、SNTP服务器等地址参数 无状态地址配置:无状态地址配置多用于物联网等终端较多,且终端不需要除地址外其他参数的场景 主机根据RA中的地址前缀,并结合本地生成的64 bit接口标识(例如EUI-64),生成单播地址。 仅可以获得IPv6地址信息,无法获得NIS、SNTP服务器等参数,需要配合DHCPv6或者手工配置来获取其他配置信息。 注:通过ICMPv6 RA报文中的M标记和O标记来控制终端自动获取地址的方式 有状态地址配置,M=1,O=1 无状态地址配置,M=0,O=0 无状态地址配置(其他参数),M=0,O=1 注:SLAAC只能分配64位前缀的地址 DAD 特点: IPV6所有单播地址都需要做DAD(任播地址不需要进行DAD检测) 所有未经过DAD检测的地址都是试验地址–tentative,无法用于通信 作用范围—本地链路 只有配置了IPV6单播地址,链路不被shutdown的才会发送DAD检测 检测过程: 在R1和R2路由上先后配置IPv6地址:2001:21::1/64。并在R1上抓包。这里要注意这个先后顺序,先配置的先进行DAD检测,没有回复即正常使用IPv6地址。具体流程报文如下: 报文1,2分别为R1的本地链路地址和可聚合全球地址在进行DAD检测是发送的NS报文,当他们没有收到NA回复后,认为该这两个地址没有被其他接口占用 报文3,4分别为R2的本地链路地址和可聚合全球地址在进行DAD检测是发送的NS报文,对应的本地链路地址没有收到NA回复,该地址正常使用,而可聚合全球地址收到一个NA报文(报文序号5),用于通告该IPv6地址已经被我占用,其他接口不能使用该地址 报文4和5的内容: R2在发送DAD检测的NS报文时,由于接口上配置的IPv6地址为试验地址,不能正常使用,所以在NS报文中,其源地址用环回地址" :: "代替,而目的地址,是配置的IPv6地址(2001:21::1/64)的Solicited-Node组播(被请求节点组播地址) 报文中的target address表示要询问的地址,就是:“这个地址,你们谁在用?”。 R1收到NS报文后,发现自己的G0接口已经使用了2001:12::1/64这个地址,所以,给R2发送NA报文,其中,目的ip地址是ff02::1,这个是链路组播地址,用于告诉本链路中的所有节点;目的mac地址是33:33:00:00:00:01,是IP地址对应的mac地址 报文中icmpv6 option携带的就是对方询问IPv6地址的mac地址,就是:“这个地址我在用,Mac地址为:00e0-fc89-035b” 当R2收到R1的NA报文后,会将冲突的IPv6地址进行标记,表示地址冲突 地址解析 IPv6使用ICMPv6的NS和NA报文来取代ARP在IPv4中的地址解析功能 注:目的MAC地址也是组播MAC,固定前缀33:33:后32bit为该组播节点地址的后32bit。所以目的MAC地址为33:33:FF:00:00:01 发送一个NS报文达到这个目的。这个NS报文的源地址是2001:21::2,目的地址则是2001:21::1对应的被请求节点组播地址。 当AR1收到AR2的NS报文后,通过查看该报文中要解析的地址是不是自己接口的单播地址 是自己,则单播回应NA 报文,NA报文中携带了AR2的2001:21::1对应的MAC地址 通过AR1回应的NA报文就知道AR1上IPV6单播地址对应的MAC地址了 4、命令 [Huawei] ipv6 使能设备转发IPv6单播报文,包括本地IPv6报文的发送与接收。 [Huawei-GigabitEthernet0/0/0] ipv6 enable 在接口视图下,在接口上使能该接口的IPv6功能。 [Huawei-GigabitEthernet0/0/0] ipv6 address ipv6-address link-local [Huawei-GigabitEthernet0/0/0] ipv6 address auto link-local 在接口视图下,通过手工或者自动的方式,配置接口的链路本地地址。 [Huawei-GigabitEthernet0/0/0] ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } [Huawei-GigabitEthernet0/0/0] ipv6 address auto { global | dhcp } 在接口视图下,通过手工或者自动(有状态或无状态)的方式,配置接口的全球单播地址。 [Huawei] ipv6 route-static dest-ipv6-address prefix-length { interface-type interface-number [ nexthop-ipv6-address ] | nexthop-ipv6-address } [ preference preference ] 配置IPv6静态路由 [Huawei] display ipv6 interface [ interface-type interface-number | brief ] 查看接口的IPv6信息 [Huawei] display ipv6 neighbors 查看邻居表项信息 [Huawei-GigabitEthernet0/0/0] undo ipv6 nd ra halt 默认情况下,华为路由器接口不发送ICMPv6 RA报文,则该接口所连链路上的其他设备无法进行无状态地址自动配置。 若想进行IPv6无状态地址配置,需要手工开启发送RA报文。 5、实验
步骤1:在R1、R2、R3、R4全局和相关接口使能IPv6功能,同时自动生成链路本地地址 sy [Huawei]sys R1 [R1]ipv6 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ipv6 enable [R1-GigabitEthernet0/0/0]ipv6 add auto link-local [R1-GigabitEthernet0/0/0]q sy [Huawei]ipv6 [Huawei]sys R2 [R2]int g0/0/2 [R2-GigabitEthernet0/0/2]ipv6 en [R2-GigabitEthernet0/0/2]ipv6 add auto link-local [R2-GigabitEthernet0/0/2]q [R2]int g0/0/0 [R2-GigabitEthernet0/0/0]ipv6 en [R2-GigabitEthernet0/0/0]ipv6 add auto link-local [R2-GigabitEthernet0/0/0]q [R2]int g0/0/1 [R2-GigabitEthernet0/0/1]ipv6 en [R2-GigabitEthernet0/0/1]ipv6 add auto link-local [R2-GigabitEthernet0/0/1]q sy [Huawei]sys R3 [R3]ipv6 [R3]int g0/0/0 [R3-GigabitEthernet0/0/0]ipv6 en [R3-GigabitEthernet0/0/0]ipv6 add auto link-local [R3-GigabitEthernet0/0/0]q sy [Huawei]sys R4 [R4]ipv [R4]ipv6 [R4]int g0/0/0 [R4-GigabitEthernet0/0/0]ipv6 en [R4-GigabitEthernet0/0/0]ipv6 add auto link-local [R4-GigabitEthernet0/0/0]q 步骤2:在R1、R2相应接口配置静态IPv6全球单播地址 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ipv6 add 2001::1 64 [R1-GigabitEthernet0/0/0]q [R2]int g0/0/2 [R2-GigabitEthernet0/0/2]ipv6 address 2001::2 6 [R2-GigabitEthernet0/0/2]q [R2]int g0/0/0 [R2-GigabitEthernet0/0/0]ipv6 address 2002::1 64 [R2-GigabitEthernet0/0/0]q [R2]int g0/0/1 [R2-GigabitEthernet0/0/1]ipv6 address 2003::1 64 [R2-GigabitEthernet0/0/1]q 步骤3:在R2上配置DHCPv6服务器功能,R3接口通过DHCPv6方式获取全球单播地址 [R2]dhcp en [R2]dhcpv6 pool d1 //创建DHCPv6地址池,标识为d1 [R2-dhcpv6-pool-d1]address prefix 2002::/64 //分配地址前缀信息 [R2-dhcpv6-pool-d1]excluded-address 2002::1 //剔除网关地址 [R2-dhcpv6-pool-d1]dns-server 2222::1 //分配DNS [R2-dhcpv6-pool-d1]q [R2]int g0/0/0 [R2-GigabitEthernet0/0/0]dhcpv6 server d1 [R2-GigabitEthernet0/0/0]undo ipv6 nd ra halt //使能RA报文通告,默认关闭 [R2-GigabitEthernet0/0/0]ipv6 nd autoconfig managed-address-flag //M位 置1,表示需要使用dhcp获取地址 [R2-GigabitEthernet0/0/0]ipv6 nd autoconfig other-flag //O位 置1,标识需要使用DHCP获取其他参数 [R2-GigabitEthernet0/0/0]q [R3]dhcp en [R3]int g0/0/0 [R3-GigabitEthernet0/0/0]ipv6 add auto dhcp [R3-GigabitEthernet0/0/0]ipv6 address auto global default //DHCPV6没有路由相关选项,不会下发路由 [R3-GigabitEthernet0/0/0]q 步骤4:在R2使能发布RA报文的功能,R4通过无状态地址配置的方式获取地址 [R2]int g0/0/1 [R2-GigabitEthernet0/0/1]undo ipv6 nd ra halt [R2-GigabitEthernet0/0/1]q [R4]int g0/0/0 [R4-GigabitEthernet0/0/0]ipv6 address auto global [R4-GigabitEthernet0/0/0]q 步骤5:配置静态路由 R4配置静态路由 [R4]ipv6 route-static 2001:: 64 2003::1 [R4]ipv6 route-static 2002:: 64 2003::1 R1配置聚合静态路由 [R1]ipv6 route-static 2002:: 15 2001::2 R3配置默认路由 [R3]ipv6 route-static :: 0 2002::1 检验结果: