IPV6
IPv6优势:
近乎无限的地址空间:与IPv4相比,这是最明显的好处。IPv6地址是由128 bit构成
层次化的地址结构:IPv6在地址规划时根据使用场景划分了各种地址段。同时严格要求单播IPv6地址段的连续性,便于IPv6路由聚合,缩小IPv6地址表规模。
即插即用:传统的分配IP地址方式是手工或者DHCP自动获取,除了上述两个方式外,IPv6还支持SLAAC(Stateless Address Autoconfiguration,无状态地址自动配置)。
端到端网络的完整性:使用IPv6之后,将不再需要NAT网络设备,上网行为管理、网络监管等将变得简单
安全性得到增强:IPsec( Internet Protocol Security,因特网协议安全协议)最初是为IPv6设计的,所以基于IPv6的各种协议报文(路由协议、邻居发现等),都可以端到端地加密,当然该功能目前应用并不多。而IPv6的数据面报文安全性,跟IPv4+IPsec的能力,基本相同。
可扩展性强:IPv6的扩展属性报文头部,并不是主数据包的一部分,但是在必要的时候,这些扩展头部会插在IPv6基本头部和有效载荷之间,能够协助IPv6完成加密功能、移动功能、最优路径选路、QoS等,并可提高报文转发效率。
移动性改善:IPv6网络中,移动设备直接路由转发,降低了流量转发的成本,提升了网络性能和可靠性。
QoS可得到进一步增强:IPv6保留了IPv4所有的QoS属性,额外定义了20Byte 的流标签字段,可为应用程序或者终端所用,针对特殊的服务和数据流,分配特定的资源,目前该机制并没有得到充分的开发和应用。
过渡技术
IPv4网络演变为IPv6网络主要有以下三种技术:
- 双栈技术:在一台设备上同时启用IPv4协议栈和IPv6协议栈的技术
- 隧道技术:将一种协议的数据封装在另一种协议中的技术
- 转换技术:将IPv6地址和IPv4地址进行转换的一种技术
IPv6地址
IPv6地址的长度为128bit。一般用冒号分割为8段,每一段16bit,每一段内用十六进制表示。
IPv6地址格式
- 首选格式
冒号分割为8段,每一段16bit,每一段内用十六进制表示。
用“IPv6地址/掩码长度”的方式来表示。
例如:2001:0DB8:0000:0001:0000:0000:0000:45ff/64。
- 压缩格式
每段前导0可以省略,但是如果该段为全0,则至少保留一个“0”字符;拖尾的0不能被省略。
一个或多个连续的段为全0时,可用“::”表示,整个IPv6地址缩写中只允许有一个“::”。
例如:2001:DB8:0:1::45ff/64, 2001::1/64
- 内嵌IPv4地址的格式
地址的前96bit为IPv6地址格式,后32bit为IPv4地址格式。
IPv6部分可采用首选或压缩格式,IPv4部分采用点分十进制格式。
例如:0:0:0:0:0:0:166.168.1.2/64。
IPv6地址结构
一个IPv6地址可以分为如下两部分:
-
网络前缀:nbit,相当于IPv4地址中的网络ID。
-
接口标识:(128-n)bit,相当于IPv4地址中的主机ID。
接口标识
接口ID可通过三种方式生成:手工配置、系统自动生成,或基于IEEE EUI-64规范生成。
基于IEEE EUI-64规范自动生成接口ID的方式最为常用,该方式将接口的MAC地址转换为IPv6接口标识。
IEEE EUI-64规范
接口ID的典型长度是64位,IEEE EUI-64规范给出了一个由48位MAC地址自动生成64位Interface ID的方法。
具体的转换算法为:将上述的第7bit0转换为1,在MAC地址的中间(24bit处)插入两个字节:FFFE。
这种由MAC地址产生IPv6地址接口ID的方法可以减少配置的工作量,只需要获取一个IPv6前缀就可以与接口ID形成IPv6地址。
使用这种方式最大的缺点就是某些恶意者可以通过二层MAC推算出三层IPv6地址。
地址类型
组播地址(Multicast Address):标识多个接口,目的地址为组播地址的报文会被送到被标识的所有接口。只有加入相应组播组的设备接口才会侦听发往该组播地址的报文。
单播地址(Unicast Address):标识一个接口,目的地址为单播地址的报文会被送到被标识的接口。在IPv6中,一个接口拥有多个IPv6地址是非常常见的现象。
任播地址(Anycast Address):任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。
单播地址
- 链路本地地址LLA LLA的有效范围是本地链路,前缀为FE80::/10。
LLA用于一条单一链路层面的通信,例如IPv6地址无状态自动配置、IPv6邻居发现等
链路本地地址的有效范围为本地链路。
每一个IPv6接口都必须具备一个链路本地地址
华为设备支持自动生成和手工指定两种配置方式 手动生成方式手动配置 自动生成方式使用FE80::+EUI-64规范生成的接口表示
当配置了唯一本地地址或全球单波地址后会直接生成
- 唯一本地地址 ULA
IPv6私网地址,只能够在内网中使用。该地址空间在IPv6公网中不可被路由,因此不能直接访问公网
•唯一本地地址使用FC00::/7地址块,目前仅使用了FD00::/8地址段。FC00::/8预留为以后拓展用。
- 全球单播地址 GUA
该类地址全球唯一,用于需要有互联网访问需求的主机,相当于IPv4的公网地址。 一般为2001::/3
、
全局路由前缀:由提供商指定给一个组织机构,一般至少为48bit。
子网ID:组织机构根据自身网络需求划分子网。
接口标识:用来标识一个设备的接口。
组播地址
IPv6组播地址标识某个组,目的为组播地址的报文会被送到该组播组内的成员。组播地址由前缀(FF::/8),标志(Flag)字段、范围(Scope)字段以及组播组ID(Group ID)4个部分组成 在IPV6中因为没有广播所以许多事情需要组播来完成
IPv6组播MAC
组播MAC的前16bit为“33:33”,是专门为IPv6组播预留的MAC地址前缀。后32bit从组播IPv6地址的后32bit直接映射而来。
在以太网链路上发送IPv6组播数据包时,对应的MAC地址是0x3333-A-A-A-A,其中A-A-A-A是组播IP地址的后32bit的直接映射。
被请求节点组播地址
当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。该地址主要用于邻居发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围。 注意 :在link local上也会生成一个被请求节点的组播地址
被请求节点组播地址应用举例
在IPv6中,ARP及广播都被取消,当设备需要请求某个IPv6地址对应的MAC地址时,设备依然需要发送请求报文,但是该报文是一个组播报文,其目的IPv6地址是目标IPv6单播地址对应的被请求节点组播地址,由于只有目标节点才会侦听这个被请求节点组播地址,所以该组播报文可以被目标节点所接收,同时不会占用其他非目标节点的网络性能。
任播地址
任播过程涉及一个任播报文发起方和一个或多个响应方。
任播报文的发起方通常为请求某一服务(例如,Web服务)的主机。
任播地址与单播地址在格式上无任何差异,唯一的区别是一台设备可以给多台具有相同地址的设备发送报文。
为多个设备设置相同的地址使其都为其提供服务
比较
IPv6报文
IPv6报文一般由三个部分组成:
基本报头:提供报文转发的基本信息,路由器通过解析基本报头就能完成绝大多数的报文转发任务。
扩展报头:提供一些扩展的报文转发信息,如分段、加密等,该部分不是必需的,也不是每个路由器都需要处理,仅当需要路由器或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展头。
上层协议数据单元:一般由上层协议报头和它的有效载荷构成,该部分与IPv4的上层协议数据单元相似。
基本报头
IPv6基本报头也称之为固定报头。固定报头包含8个字段,总长度为40Byte。
拓展报头
逐跳选项报头:该扩展头被每一跳处理,可包含多种选项,如路由器告警选项。
目的选项报头:目的地处理, 可包含多种选项,如Mobile IPv6的家乡地址选项。
路由报头:指定源路由,类似IPv4源路由选项,IPv6源节点用来指定信息报到达目的地的路径上所必须经过的中间节点。IPv6基本报头的目的地址不是分组的最终目的地址,而是路由扩展头中所列的第一个地址。
分段报头:IP报文分片信息,只由目的地处理。
认证报头:IPSec用扩展头, 只由目的地处理。
封装安全净载报头:IPSec用扩展头,只由目的地处理。
配置
[Huawei] ipv6 全局使能ipv6
[Huawei-GigabitEthernet1/0/0] ipv6 enable 接口使能IPV6
[Huawei-GigabitEthernet1/0/0] ipv6 address 2001:1::1 64 配置ipv6全球单播地址 每个接口下最多可配置10个全球单播地址
ICMPV6
ICMPv6报文格式
在IPv6报文头部中,Next Header字段值为58则对应为ICMPv6报文
ICMPv6报文分为两类:差错报文和信息报文。
差错消息用于报告在转发IPv6数据包过程中出现的错误,如常见的目的不可达、超时等等。ICMPv6 Type=[0,127]
信息报文可以用来实现同一链路上节点间的通信和子网内的组播成员管理等。 ICMPv6 Type=[128,255]
ICMPv6差错报文应用
- Path MTU发现
- Ping
ICMPv6其它常用的报文
邻居发现
Type | 报文 |
---|---|
133 | 路由器请求RS |
134 | 路由器公告 RA |
135 | 邻居请求NS |
136 | 邻居公告NA |
137 | 重定向 |
组播侦听者发现 |
Type | 报文 |
---|---|
130 | 查询消息 |
131 | 报告消息 |
132 | 离开消息 |
143 | MLDv2报告消息 |
NDP
NDP使用报文
路由器发现
路由器发现是指主机发现本地链路上路由器和确定其配置信息的过程。
路由器发现可同时实现以下功能
路由器发现:主机定位邻居路由器以及选择哪一个路由器作为缺省网关的过程。
前缀发现:主机发现本地链路上的一组IPv6前缀的过程,用于主机的地址自动配置。
参数发现:主机发现相关操作参数的过程,如输出报文的缺省跳数限制、地址配置方式等信息。
路由器发现会周期性发送RA报文 当主机启动时也可主动发送RS报文请求 源地址必须是发送接口的链路本地地址
当主机启动时,主机会向本地链路范围内所有的路由器发送RS报文,触发路由器响应RA报文。主机发现本地链路上的路由器后,自动配置缺省路由器,建立缺省路由表、前缀列表和设置其它的配置参数。
路由器周期性的发送RA报文,RA发送间隔是一个有范围的随机值,缺省的最大时间间隔是600秒,最小时间间隔是200秒。
地址解析
IPv6地址解析通过ICMPv6(NS和NA报文)来实现 类似与ARP
在三层完成地址解析,主要带来以下几个好处:
-
地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议。
-
可以使用三层的安全机制避免地址解析攻击。
-
使用组播方式发送请求报文,减少了二层网络的性能压力。
IPv6邻居状态跟踪
IPv6邻居状态表中缓存了IPv6地址与MAC地址的映射,可以通过display ipv6 neighbors
命令来查看IPv6邻居状态表。
IPV6邻居状态
IPv6节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。5种邻居状态分别是:未完成(Incomplete)、可达(Reachable)、陈旧(Stale)、延迟(Delay)、探查(Probe)。
重复地址检测 DAD
重复地址检测是指接口在使用某个IPv6地址之前,需要先探测是否有其它的节点使用了该地址,从而确保网络中没有两个相同的单播地址。接口在启用任何一个单播IPv6地址前都需要先进行DAD,包括Link-Local地址。
重复地址检测是节点确定即将使用的地址是否被另一节点使用的过程。在节点自动配置某个接口的IPv6单播地址之前,必须在本地链路范围内验证要使用的地址是唯一的,并且未被其他节点使用过。只要NS报文发送到本地链路上(缺省发送一次NS报文),如果在规定时间内没有NA报文进行应答,则认为这个临时单播地址在本地链路上是唯一的,可以分配给接口;反之,这个临时地址是重复的,不能配置到接口。
一个地址在通过重复地址检测之前称为“tentative地址”,即“试验地址”。此时该接口不能使用这个试验地址进行单播通讯。
特殊情况:有两台主机同时分配到同一个IP地址。假设PC1和PC2都想使用2000::1这个地址,那么进一步假设PC1先发送NS,PC2收到以后将不会发送NS了(当然也不会发送NA),直接停止使用2000::1这个地址,等待其他方式生成新的地址。如果同时收到NS报文,则都会放弃使用2000::1地址。
重定向
IPv6地址配置的方式可以分为静态配置和动态配置。其中,动态地址配置又可以分为无状态地址自动配置(Stateless Address Autoconfiguration, SLAAC)和有状态地址自动配置(Stateful Address Autoconfiguration)。
IPv6地址无状态自动配置
RA报文中的Flags字段
- M-bit:管理地址配置标识
M-bit默认为0 :采用无状态地址自动配置。
M-bit设置为1: 收到该RA的终端将使用DHCPv6来获取地址及其他信息
将M-bit设置为1:ipv6 nd autoconfig managed-address-flag
- O-bit:其它有状态配置标识
O-bit默认为0 即路由设备通过RA报文向终端发布除IPv6地址外的其他配置信息
O-bit设置为1 终端将使用DHCPv6来获取除地址之外的其他参数
将O-bit设置为1:ipv6 nd autoconfig other-flag
RA报文中的可选信息:地址前缀信息
A-bit,用于指示终端设备是否能使用该前缀进行无状态地址自动配置
A-bit被设置为0时,此时终端不能使用该前缀进行无状态地址自动配置。
A-bit被设置为1时,终端可以使用该前缀进行无状态自动配置
使用如下命令将该比特位设置为0: ipv6 nd ra prefix 2001:DB8:: 64 2592000 604800 no-autoconfig
其中2592000 60480 为生存时间
DHCPV6
DHCPV6分为三种类型
- DHCPv6有状态自动配置:DHCPv6服务器自动配置IPv6地址/前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数
- DHCPv6无状态自动配置:主机IPv6地址仍然通过路由通告方式自动生成,DHCPv6服务器只分配除IPv6地址以外的配置参数,包括DNS服务器等参数。
- DHCPv6 PD(Prefix Delegation,前缀代理)自动配置
报文交互过程
DHCPv6 PD自动配置
DHCPv6中继工作过程
配置
链路本地地址:
1)手动配置
[AR4-GigabitEthernet0/0/1]ipv6 address FE80:04::4 link-local
2)自动生成:FE80:: + eui-64
①接口配置了全球单播地址之后会自动生成一个链路本地地址
②通过配置,接口生成链路本地地址
[AR4-GigabitEthernet0/0/2]ipv6 address auto link-local
全球单播地址:
1)手动配置
interface GigabitEthernet0/0/0
ipv6 address 2001:14::4/64
2)自动生成
①无状态自动配置: 网络地址前缀+eui-64 ---基于NDP协议
[AR1-GigabitEthernet0/0/0]ipv6 address auto global
[AR4-GigabitEthernet0/0/0]undo ipv6 nd ra halt 开启路由器接口向外通告RA的功能
②有状态自动配置 ----基于dhcpv6协议
dhcp服务器端 :
全局开启dhcp功能 dhcp enable
创建 地址池
dhcpv6 pool pool1
address prefix 2001:24::/64
excluded-address 2001:24::4
接口 绑定地址池:
[AR4-GigabitEthernet0/0/1] dhcpv6 server pool1
dhcpv6客户端:
[Ar2-GigabitEthernet0/0/1]ipv6 address auto dhcp
前提是接口配置了链路本地地址
Comments NOTHING