全称: Internet Protocol Version 6 (互联网协议第6版)
IPV6 是 IETF 设计的用于代替IPV4 的下一代IP协议,其地址的数量号称可以为地球上的每一粒沙子都编上一个IP 地址
IPV6 地址的数量: 2^128 约为 (3.4×10^38)
1.2 背景由于IPV4 最多的问题就是在于网络地址资源不足,严重的至于了互联网的应用和发展。 IPV6 的使用,不仅能够解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍
IPV4 存在的问题 :
- IP v4 32bit
- 地址耗尽: 1、私有地址 2、NAT
- 所有行业都是IP v6 的潜在用户
- internent 用户快速增长
- internet 路由表增大
- 缺乏真正的端到端模式
IPV6 很美,但是变美的前提是要付出代价的。 从IPV4 跳到IPV6 这个互联网的新平台,其中的路可没有给你铺上舒舒服服的自动电梯。
1.3.1 第一原因IPV6 拦路虎: 部署困难
如果让IT 产业一夜之间在新铺设的网络中全面普及IPV6 技术这并不难。 但是我们要理解的是, 当前互联网活的好好的,IPV6 的作用是给IPV4 续命,而不是直接的去代替IPV4; 那么这样就要求IPV6 能够继承IPV4 的衣钵,能够和IPV4 和平共处;
但是遗憾的是, 当前IT 产业中,IPV4 和 V6 的兼容性并不好,难以互相连通,那么想让IPV6 继承IPV4 的衣钵,那双方要通信就只能经过VPN 技术,但是我们也都知道,要搭建VPN的成本就太高了 , 所以搭建隧道这个方法显然是行不通的。
所以根本的方法就是让当前的设备都升级到支持IPV6
但是升级设备也是需要资金的啊,而且在设备中将IPV4 升级到IPV6 可不像我们手机电脑升级系统那么简单。他涉及到终端,传输路径,方方面面的网络软硬件的升级,市面上的安卓设备仅仅是升级个最新的系统就那么困难,可况更加花样百出的网络设备和软件,目前只有一些互联网大企业如Google 等全面部署IPV6,这些企业面向的未来,部署IPV6 当然是部署置新市场的桥头堡。但是对于哪些小的IT公司和小的运营商,是没有什么大动力去花大成本去升级新技术的,毕竟现在对于他们来说就算是升级了,也暂时还用不到 IPV6 ; 现在的网站至今仍然支持老的IE 浏览器,反正升不升级你们都得用 ,也不会影响他的业绩, 大概就是这个道理
1.3.2 第二原因IPV6 拦路虎 : NAT
我们都知道NAT 技术就是将私网地址进行转换成公网地址来给用户访问公网的; 我们前面说到IPV6 最大的优点就是地址多, 这必然是好事,但是真的需要公网IP 这么好的东西吗,运营商对你说: NO , 你不需要
在没有NAT技术之前,如果IP 地址不够用怎么办呢? 运营商: 那就不分配给你咯; 但是目前运营商已经广泛的用到了NAT ,通过NAT 给用户分配内网地址而非公网地址; 但是运营商也可以不分配公网IP 地址给单个用户,而是将多个用户纳入他的内网,通过统一的公网IP 网关来访问互联网, 这样一来呢,运营商就可以大大节省公网IP 资源,不着急上IPV6 技术。
要建立畅通无阻的物联网, 还得找IPV6
当然NAT 是可以个好技术,但是它只是暂时的 ,不能是长久之计,总的来说NAT 会让网络变得更复杂和低效率,能够为所有设备分配到IPV6 才是长久之计,只是目前IPv6 的海量地址需求非燃眉之急
1.4 IPV6 特点IP v4 32 Bit ——> IP v6 128 Bit
2^128 = 340282366920938463374608432768211456
- 更大的地址空间
- 没有广播、无需NAT 技术
- 无状态自动配置
- 一个接口允许多个地址
- 设置链路本地地址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QzWnebtg-1654864142556)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220521162938458.png)]
IPV4 报文格式 :
上图中我们也可以看出IPV6 的报头 明显比IPV4 报头少了很多; IPV4 中的报头包含:可选字段Options 。其中内容涉及了Security、Timerstamp、Record route (路由记载)等,这些可选字段可以将IPV4 报头长度从20字节扩充到60字节。 携带这些Options 的IPv4 报文在转发过程中往往需要中间路由转发设备进行软件处理,对于性能还是个很大的消耗, 因此在实际中还是很少使用到
IP v6 报文格式:
IPV6 和 IPV4 相比呢,去除了IHL、Identification 、Flags(图中蓝色部分都是在IPV6 中被去除的),只是增加了 Flow Labe (流域标签), 因此呢,IPV6 的报文的处理比IPV4 报文的处理更为简单,这也就提高了处理效率。 另外, IPV6 为了更好的支持 各种选项处理,提出了扩展头部的概念,新增选项时不必修改现有的结构,理论上可以无限的扩展,体现了优异的灵活性
IPV6 报文中可以包含 0 个 或者多个扩展报头,仅当需要设备或者目的节点做某些特殊的处理的时候,才由发送方添加一个或者多个扩展报文。 与IPV4 报文不同的是, IPV6 的扩展报文长度任意,不受40字节的限制,这样便于日后扩充新增选项,这一特征加上选项的处理方式使得IPV6 选项能得以真正的利用,但是为了提高处理选项头和传输层协议的性能,扩展报头总是8字节长度的整数倍,
2.1 IPV6 扩展报头[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ThEXKRyo-1654864142557)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220521164546085.png)]
IPV6 扩展报头中主要字段解释如下:
-
Next Header : 下一个报头,长度为8 bit ;与基本报头的Next Header 的作用其实相同。 指明下一个扩展报头(如果存在的情况下)或者上层协议的类型
-
Extension Header Len : 报头扩展长度;长度为 8bit 。 表示扩展报头的长度,(不包含Next Header 字段)
-
Extension Head Data : 扩展报头数据 ,长度可变, 扩展报头的内容 ,为一系列选项字段和填充字段的组合。
-
扩展报头只有目标节点查看,其他节点不查看和处理大部分扩展报头
-
要按顺序查看扩展报头的内容
使用扩展报头的时候,报头的顺序如下:
- IPV6 基本报头
- 逐条选项报头:所有路由器都要对其处理
- 目标选项报头:使用了路由选择报头
- 路由选择报头:列出了一个或者多个中间点
- 分段报头
- 身份验证头 (AH)和封装安全有效载荷(ESP) 报头
- 上层报头:主要为TCP 或者UDP
IP v4 :
由于IP v4 地址只有32bit ,并且地址分配不均衡,导致在网络扩容或者重新部署的时候,经常需要重新分配IP地址,因此需要能够进行自动配置和重新编址,以此来减少维护工作量。 目前IPV4 的自动配置和重新编址机制还主要是依靠DHCP 协议。
IP v6 :
IPV6 协议内置支持通过地址自动配置方式使用主机自动配置方式使得主机自动发现网络并获取IPV6地址,大大提高了内部网络的可管理性。
4 、 IPV6 编址IPV6 地址总长度位128 位 ,通常分为8个段, 每组位4个十六进制数的形式,每组十六进制数间用冒号分隔
-
冒号分隔十六进制格式
2001 : 0da8:0207:0000:0000:0000:0000:8207
-
首选格式为:无任何化简, 就是把IP v6 地址完整的写出来,
-
压缩写法:
-
在有4个十六进制位组成的字段中, 可以省略前导0
例子:压缩前:2001:0410:0001:1234:FB00:1400:5000:45FF
压缩后:2001:410:1FB00:1400:5000:45FF
———— 如果这四个十六进制数为 0000 , 那么删除不能把4个0全部删除,只能是删除前面3个前导0 , 也就得出 0000=0
-
在每一个地址中,可以使用一对冒号来表示任意数量的连续0(但是记住,一个IPV6 地址中也能只有一对冒号,不能有两对,否则当计算机将压缩后的地址恢复成128位的时候,无法确定每个“::” 代表0 的个数)
错误示范:
压缩前: 3ffe:0000:0000:0000:1010:2a2a:0000:0001
压缩后: 3ffe::1010:2a2a::1
真确书写:3ffe::1010:2a2a:0:1
-
-
一些IPV6 压缩的例子:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5meyltbZ-1654864142558)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220521173143295.png)]
-
-
网络前缀 : n比特,相当于IPv4 地址中的网络ID
-
接口标识:128-n 比特,相当于IPv4 地址中的主机ID
对于IPV6 单播来说的话,如果地址的前三Bit 不是000,则接口标识必须为64位, 如果地址的前三位是000,则没有此限制
-
IPV6 地址前缀
-
IPV6 地址可以用来定义路由或者子网,默认长度为64 ,当前缀长度为64 时, 则代表一个网段
例如: 2001:2DB:0:BC::/64 代表网段
-
2001:2DB:0:BC::/60 代表路由、 子网
2001:2DB:0:CD30::/60 可以代表的地址范围
2001:2DB:0:CD30::/64 到 2001:2DB:0:CD3F::/64
超过前缀长度的bit 必须为0 , 如2001:2DB:0:CD3F::/60 就是不合法的表示法
-
接口标识
-
接口标识可以通过三种方法生成
—— 手工配置
—— 系统通过软件自动生成
—— IEEE EUI-64 规范生成
-
EUI -64 规范是将接口的MAC 地址转换为IPV6接口标识的过程
-
以下是IPV6 地址分类的一个总表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XcFCMybq-1654864142558)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220521205433817.png)]
6.1 IPV6 地址类型- 单播地址
- 任播地址
- 组播地址
和IPv4 相比,取消了广播地址类型,以更丰富的组播地址代替,同时增加了任播地址类型
-
单播地址 (Unicast Address)
-
用来标识一个接口,目的地址为单播地址的报文会被发送到被标识的接口
- IPV 6 定义了多种单播地址,目前常用的单播地址有:未指定地址、环回地址、全球单播地址、链路本地地址、唯一本地地址ULA (Unique Local Address
-
-
组播地址 (Multicast Address)
—— 标识多个接口,目的地址为组播地址的报文会被送到被标识的所有接口
-
人播地址(Anycast Address)
—— 标识多个接口,目的为任播地址的报文会被送到最近的一个标识接口,最近节点是由路由协议来定义的
-
未指定地址
IPV6 中的未指定地址 即 0:0:0:0:0:0:0:0/128 或者 ::/128
该地址可以表示某个接口或者节点还没有IP地址,可以作为某些报文的源IP地址, 源IP 地址是 “ ::” 的报文是不会被路由设备转发的
-
IPv6 中的环回地址即 ::1/128 ; 环回与IPV4 中的127.0.0.1 的作用相同,主要用于设备给自己发送报文, 该地址通常用来作为一个虚拟接口的IP 地址,(如Loopback口),实际发送的数据包中不能使用环回地址作为源地址或者目的IP地址
默认路由 (Default route) = ::/0
-
可聚合全局单播地址
-
相当于IPV4 中的全局单播地址 ,其作用类似于IPV4 中的公网地址
-
由 48 位 的全局路由选择前缀+16位的子网ID + 64位的接口ID 组成
-
全球单播地址是带有全球单播前缀的IPv6 地址
-
可聚合全球单播地址占IPV6 地址总空间的 8 分之 1
-
全球单播地址由全球路由前缀(Global routing prefix)、子网ID(Subnet ID)、接口标识(Interface ID)组成
其格式如下 :
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cclP6qe8-1654864142559)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220521212302999.png)]
-
—— 全球路由前缀(Global routing prefix ) : 由提供商指定给一个组织结构,通常全球路由前缀至少为 48位, 目前已经分配的全球路由前缀的前 3 bit 均为001
—— 子网ID: 组织机构可以用子网ID 来构建本地网络,子网ID 通常最多分配到第64位,子网ID和 IPV4 中的子网号作用相似
—— 接口标识: 用来标识一个设备
-
本地链路地址 Link-Local-address
在IPV6 网络中,两个IPV6 的节点通过链路相连,必须在这条链路之间为各自确定一个Link-Local Address ,在一条链路上,IPV6 节点能够确定对方节点的身份,能够将数据包发向对方节点,必须知道对方节点的链路本地地址,如果不知道,将是不能通信的,所以一天链路中的IPV6 节点要通信,必须拥有链路本地地址,并且这个链路本地地址只在一条链路中有效,也不能被路由,而不同链路的链路本地地址是可以重复的。
-
有效范围:本地链路 (也就是只有在同一个广播域内生效)
-
链路本地地址是IPV6 中的应用范围受限制的地址类型
-
启动时节点的每一个接口会自动配置一个链路本地地址(其固定的前缀+EUI-64 规范形成的接口标识)
-
以FE80::/10 为前缀, 11-64位为0 + 一个64位接口标识
-
用于自动地址配置,邻居发现、路由器发现,一般不会自动生成
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g6egpdjp-1654864142559)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220522081642264.png)]
一个链路本地地址只在一条链路中有效,不能被路由,不同链路的链路本地地址是可以重复的。
-
本地唯一地址 Unique-Local address ULA
- 唯一本地地址是另一种应用范围受限的地址,它仅能在一个站点内使用; 由于本地站点地址的废除,唯一本地地址被用来代替本地站点地址
- 唯一本地地址作用类似于IP v4 中的私网地址,任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vqZMEAmK-1654864142560)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220522084345230.png)]
- Prefix : 前缀, 固定为 FC00::/7
- L: L标识位 ; 值为1代表该地址,为本地网络范围内使用的地址; 值为0 被保留,用于以后扩展
- Global ID :全球唯一前缀; 通过伪随机方式产生
- Subnet ID :子网ID ; 划分子网使用
- Internet ID:接口标识
唯一本地地址具有以下特点 :
- 具有全球唯一的前缀 (虽然是随机方式产生,但是冲突概率很低)
- 可以进行网络之间的私有廉价而, 而不必担心地址冲突等问题
- 具有知名前缀 (FC00::/7), 方便边缘设备进行路由过滤
- 如果出现路由泄露,该地址不会和其他地址冲突,不会造成internet 路由冲突
- 应用中,上层程序将这些地址看作全球单播地址对待
- 独立于互联网服务提供商ISP (Internet Service Provider )
- 用来标识一组接口,发送给多播地址的数据流同时传输到多个目的地;
- 一般这些接口属于不同的节点,一个节点可能属于0 到多个组播组,发往组播地址的报文被组播地址标识的所有接口接收
- 以下是IPV6 组播地址格式示意图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MEqivgNV-1654864142561)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220522091245784.png)]
- 一个组播地址由 前缀、标志字段(Flag )、范围字段(Scope)、以及组播组ID (Global ID)4 个部分组成
- 前缀: IPV6 组播地址长度
- 标志字段(Flag): 长度 4bit ,目前只是使用了最后一个bit (前3位必须置0),当该位值为0 的时候,表示当前的的组播地址是由IANA 所分配的一个永久分配地址,当该值为1 的时候,表示当前的组播地址是一个临时组播地址(非永久分配地址)
- 范围字段(Scope): 长度为4 bit,用来限制组播数据流在网络中发送的范围
- 组播ID (Group ID ):长度 112 bit ,用以标识组播组,目前,RFC 2373 并没有将所有的112 位都定义为 组ID ,而是建议仅使用该112 的最低 32位作为组播组ID,将剩余的80位都置0 ,这样每个组播组ID 都映射到一个唯一的以太网组播MAC 地址
IP v6 组播地址范围 :
FF00::/8
- FF02::1 表示链路上的所有节点
- FF02::2 表示链路上的所有路由器
- FF02::5 OSPFv3 All routers
- FF02::6 OSPF v3 DR routers
- FF02::9 RIP routers
- FF02::A EIGRP routers
任播地址标识一组网络接口,目标地址是任播地址的数据包发送出去给其中路由意义上最近的一个网络接口 (简单来说就是任播地址的数据包在选择要发送给谁的时候,谁离它近就发给谁)
这个地址是由路由协议定义的,不能手工去配置,但是我们无法看到一个地址就能区别出到底是单播地址还是任播地址,因为任意播地址的表示格式和单播地址是一样的, 也就是呢任意播地址就是用普通的单播地址来表示的; 任意播地址只能出现在路由器上,并且不能作为数据包的源地址来使用
-
IPV6 中没有为任播规定单独的地址空间,任播地址和单播地址使用相同的地址空间。 目前IPv6 中任播主要应用于移动IPV6
注意 ! : IPv6 任播地址仅可以被分配给路由设备,不能应用于主机,任播地址不能作为IPv6 报文的源地址
-
任播地址设计用来再给多个主机或者节点提供相同服务时提供冗余功能和负载均衡分担功能; 目前,任播地址的使用通过共享单播地址方式来完成。将一个单播地址分配给多个节点或者主机,这样在网络中如果存在多条该地址的路由,当发送者发送以任播地址为目的IP 的数据报文时,发送者无法控制哪台设备能够收到 ,这取决于整个网络中路由协议激计算的结果。 这种方式可以适用于一些无状态的应用,例如DNS 等等
- IPV6 单播地址的分配方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LFmNB2ux-1654864142561)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220522110210775.png)]
- 接口标识符、主机位
- 接口标识符用于标识链路上的接口,在每条链路上接口ID 必须唯一。
- 总长度为64 位,可根据第二层介质和封装方式自动创建
- 在以太网中, 接口ID 基于接口的MAC 地址创建的,格式为 EUI-64
-
IEEE EUI -64 地址表示一个用于网络接口寻址的新标准
-
在IPV6 中,无状态自动配置机制使用EUI-64 格式来自动生成IPV6 地址
-
无状态自动配置是指在网络中没有DHCP 的情况下,允许节点自动配置IPV6 地址的机制
-
EUI-64 构造规则:
根据接口的MAC 地址在加上固定的前缀生成一个IPV6 的地址
-
工作原理:
自动将48bit 的以太网MAC 地址扩展成64 BIT ,再结合上一个64位的IPV6 的地址前缀,组成一个IPv6 地址
-
转换过程:
- 对于一个MAC 地址,由两部分组成 : 24 位的公司ID (由IEEE唯一分配),24位公司的扩展ID (公司自己编制),联合产生全球唯一的48位MAC 地址
- 注意: 第一字节的第7位成为 U/L 位 ,表示此地址是全球管理还是本地管理 。如果为0 则为全球管理、为1 就是本地管理
- 第一字节的第 8位 称为 I/G位,表示此地址是单播地址还是组播地址; 如果为 0 就是单播地址、为 1 就是组播地址
-
先将此 48 位MAC 地址公司ID 和公司扩展ID 之间插入特定 16 位值 FFFE, 形成64位的EUI-64 地址; 比如 :
48 位MAC 地址为 : 1111:2222:3333
接下来在中间插入特定的16 位值 FFFE,则为 :1111:22FF:FF22:3333
再将 EUI -64 地址的第一字节的第7位为反转(注意在反转的时候把16位的地址转换位2 进制,一位16 进制数等于4位二进制数),形成IPV6地址的接口ID , 然后再将IPV6 特定的前缀加上就可以得出一个完整的IPV6 地址了
EUI-64 规范生成的IPV6 地址为: FE80:: 1311:22FF:FF22:3333 (FE80 :: 为前缀)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IbmyYkVg-1654864142562)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220522151813671.png)]
7.2 IPV6 无状态自动配置- 无状态自动配置要求本地链路支持组播,而且接口能够发送和接收组播
无状态自动配置过程要求节点满足如下要求:
- 进行自动配置的节点必须确定自己的链路本地地址
- 必须验证该链路本地地址在链路上的唯一性
- 节点必须确定需要配置的信息,该信息可能是节点的IP地址,或者是其他配置信息,或者两者皆有,如果需要IP地址,节点必须确定是使用无状态自动配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p0RxV82D-1654864142563)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220522153042633.png)]
- 主机发送Router Solicitation(路由查询报文) 报文
- 路由器回应Router Advertisement (回应报文)报文
- 主机获得前缀以及其他参数
- 路由器周期性的向外发送RA 报文
IPV6 有状态和无状态自动配置的区别就是 :
无状态: 路由器是直接给一个前缀到主机上,剩余的 64位接口标识自己通过算法去算出来
有状态:路由器中有一个地址池,主机是从路由器地址池中拿IPV6 的地址
7.3 IPV6 手动指定配合r2(config)#ipv6 unicast-routing 启用转发IPV6单播数据报的功能 r2(config-if)#ipv6 enable 如果要配置路由协议 ,就要在接口中敲这个命令 ; 或者配置了静态也要敲此命令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v4dGDZJr-1654864142563)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220522163840256.png)]
为其3台路由器配置IPV6 地址; 以下是直接手动配置IPV6 地址,没有用什么算法
R1 :
interface Ethernet0/0 ipv6 address 2022:12::1/64 ipv6 enable interface Ethernet0/0 ipv6 address 2022:12::1/64 ipv6 enable interface Loopback0 ipv6 address 1::1/128 ipv6 enable
R2 :
interface Loopback0 ipv6 address 2::2/128 ipv6 enable interface Ethernet0/0 ipv6 address 2022:12::2/64 ipv6 enable
R3 :
interface Loopback0 ipv6 address 3::3/128 ipv6 enable interface Ethernet0/0 ipv6 address 2022:13::3/64 ipv6 enable7.3.1 IPV6 单播路由配置
- 静态路由
- RIPng
- OSPFv3
- IS-IS
- EIGRP
- MP-BGP4
在配置IPv6 路由协议之前必须先开启IPV6 单播路由功能
- 静态路由
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nt7uVUaW-1654864142563)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220522172030094.png)]
-
IPV6 OSPF v3
OSPF v3 是基于IPV6 的OSPF 协议 (OSPFv2 是基于IPV4 的)
- 将IPv6 链路本地地址用作源地址,运行在链路而不是子网上
- 使用IPV6 链路本地地址来标识OSPFv3 邻居
- OSPFv3 的组播地址:FF02::5 、FF02::6
- 每个接口可以有多个地址和OSPF 实例
- 支持使用IPSec 进行身份验证
- 使用相同的报文 :HELLO、DBD、LSR、LSU、LSAck
- 邻居发现机制和邻接关系建立机制相同
- LSA 泛洪机制相同
- 支持STUB区域和NSSA区域
- 在配置OSPF v3 的时候一定要记得配置他的router-id (Router-id 选举规则和IPV4 中的OSPFv2 选举规则一样)
IPV6 的一些特性对OSPFv3 也造成了一定的影响,如下表:
| IPV6 特性 | OSPF v3 相应的影响 |
|---|---|
| IPv6 地址长度为128位 | LSA 的长度增加 (8、9类) |
| IP v6 中存在LLA 地址 | 除了建立Vlink 之外,OSPF v3 使用LLA地址进行报文交互 |
| 接口可以配置多个全球单播地址 | 运行每个LLA进行通信,不再基于subnet (子网) |
| IP v6 支持验证功能 | 使用IPV6 扩展头进行报文的认证和加密 |
OSPFv3 和OSPF v2 相同点
-
网络类型和接口类型相同
与 OSPF v2 相同,OSPF v3 也具有P2P、BMA、NBMA、P2MP 4种网络类型,且各种网络类型种原理基本相同
-
接口状态机和邻居状态机相同
与OSPFv2 相同, OSPF v3 也具有从init 状态到 full 状态的邻居状态机,且各阶段完成任务完全相同
-
LSDB 相同
与OSPF v2 相同 ,OSPF v3 也具有相同的LSDB 机制,根据LSDB, 各个路由器单独计算整个拓扑
-
泛洪机制相同
与OSPF v2 相同,OSPF v3 也是借组组播来实现部分报文传输,LSA 信息泛洪机制也和OSPF v2 相同
-
协议报文相同
与OSPFv2 相同,OSPFv3 也使用DD、HELLO、LSR、LSACK、LSU 五种报文完成整个邻居建立过程
-
路由计算基本相同
与OSPF v2 相似,OSPF v3 的路由计算过程也是SPF 算法
IPV6 OSPFv3 简单配置命令 (以下只是创建IPV6 协议栈,并没有将IP v4 一并创建)
r1(config)#ipv6 router ospf 1 进入IPV6 OSPF 路由进程 r1(config-if)#ipv6 ospf 1 area 10 在接口上激活 IPV6 OSPF r1(config-if)#ipv6 ospf cost ? 指定接口的COST值 <1-65535> Route cost of this interface dynamic Specify dynamic cost options r1(config)#ipv6 router ospf 1 进入IPV6 进程中 r1(config-rtr)# *May 22 11:45:10.633: %OSPFv3-4-NORTRID: Process OSPFv3-1-IPv6 could not pick a router-id, please configure manually r1(config-rtr)#area 1 stub ? 将区域指定位末节区域 no-summary Do not send summary LSA into stub area r1(config-rtr)#area 1 range ? 区域边界汇总路由 X:X:X:X::X/<0-128> IPv6 prefix to match
IPV6 OSPF v3 配置 (连同IPV4 一并开启)
r1(config)#router ospfv3 1 开启v6 和 v4 两个进程栈 r1(config-if)#ospfv3 1 ipv6 a 10 在接口上激活 OSPFv3 IPV6 r1(config-if)#ospfv3 1 ipv6 cost ? 指定接口COST 值 <1-65535> Route cost of this interface dynamic Specify dynamic cost options r1(config)#router ospfv3 110 创建OSPFv3 100 (注意这里要OSPFv3 不能直接OSPF) r1(config-router)#address-family ipv6 unicast 进入OSPFv3 进程栈 【r1(config-router)#address-family ipv4 unicast 这个命令是进入OSPF 的进程栈】 r1(config-router-af)#area 10 ? 在进入OSPFV3 进程栈后, 可以在里面设置特殊区域、认证等等,注意进入了OSPF V3 的进程栈就只能对OSPF v3 才有用 authentication Enable authentication default-cost Set the summary default-cost of a NSSA/stub area filter-list Filter networks between OSPFv3 areas normal Specify a normal area type nssa Specify a NSSA area range Summarize routes matching address/mask (border routers only) stub Specify a stub area transit Use this router to transit data virtual-link Define a virtual link and its parameters r1(config-router-af)#are 10 range ? 区域边界汇总路由 X:X:X:X::X/<0-128> IPv6 prefix to match
- IPV6 EIGRP (EIGRPv6)
- IPV6 EIGRP 简单配置
Router(config)#ipv6 router eigrp ? 进入EIGRP 路由进程, 这个命令只能是创建IPV6 的EIGRP 进程栈,不能创建V4 的 <1-65535> Autonomous system number Router(config-if)#ipv6 eigrp ? 接口下启用EIGRP <1-65535> AS number
- IPV6 EIGRP 命名模式
Router(config)#router eigrp name 进入命名模式EIGRP 进程 ; 这条命令就相当于创建了V4 和V6 两个进程栈 Router(config-router)#address-family ipv6 autonomous-system ? 指定IPV6 的EIGRP 进程号 , <1-65535> Autonomous System 开启IPV6 EIGRP 之后默认会把所有接口都宣告进EIGRP 进程内, Router(config-router-af)# r1(config-router-af)#eigrp router-id ? 一定要进入EIGRP 协议栈内指定Router-id ,不指定的话邻居根本起不来 A.B.C.D EIGRP Router-ID in IP address format Router(config-router-af)#af-interface eth 0/0 进入接口地址簇配置模式 Router(config-router-af-interface)#shutdown 关闭E0/0 的EIGRP 功能 ,如果想让某个接口不宣告进EIGRP 中的话,就可以将此接口shutdown * EIGRP 命名模式下启用IPV6 的时候,默认在所有的接口启用
- IPV6 BGP (MP-BGP )
Router(config)#router bgp ? 因为BGP 本身就是支持双栈的,所以在进入BGP 进程的时候就已经进入V4和V6 了
<1-4294967295> Autonomous system number
<1.0-XX.YY> Autonomous system number
Router(config-router)#neighbor x.x.x.x remotes-as 123
<1-4294967295> AS of remote neighbor
<1.0-XX.YY> AS of remote neighbor
如果要用V6 来建立邻居的话:
Router(config-router)#neighbor 1::1 remote-as 123 先指定邻居AS号
Router(config-router)# neighbor 2::2 update-source Loopback0 指定更新源为Loopback 0
Router(config-router)#address-family ipv6 unicast 进入V6 BGP 进程中
Router(config-router-af)#neighbor X:X:X:X::X <0-128> activate 激活V6 BGP 邻居
Router(config-router-af)#neighbor 1::1 next-hop-self 指定下一跳为本地
Router(config-router-af)#network 1::1/128 宣告路由
查看:
show bgp all summary
show ip bgp ipv6 unicast
8、 IPV6 过渡技术
8.1 概述:
现如今IP 网络仍然是以IPv4 为主体, IPv6 网络只是得到一小部分的使用的部署,因此必然会在很长一段时间内,IPv4 以及IPv6 网络必然会有共存的情况,那么就需要去考虑V4 和 V6 并存的策略和技术
但是那从V4 过渡到V6 不可能一气呵成,这个一个综合的问题,包括了政治、经济、商业、技术、方法、策略等因素的问题,因此V4 到 V6 的过渡是个漫长的过程,在这个过程当中呢,我们就不得不考虑过渡的策略和方法
8.2 常见的共存策略和过渡技术-
双栈技术 —— 用于IPV6 的引入
Dual Stack
(大前提,之后的技术都是在这个基础上运作的)
所谓的双栈技术就是 主机或者网络设备同时支持 V4 和 V6 双协议栈,如果节点支持双栈,那么他能够同时使用V4 和 V6 的协议栈,同时处理V4 以及 V6 的数据,在双栈设备上,上层应用会优先选择V6协议栈,而不是优先选择V4协议栈
-
隧道技术 —— 用于IPV4 或者 IPV6 孤岛接入
Tunneling
IPV6 over IPV4 隧道 和 IPV4 over IPV6 隧道
-
IPV6 over IPV4 : 过渡初期使用
通过隧道技术,使IPV6 报文咋IPV4 网络种传输
手动隧道: IPV6 over IPV4 手动隧道 、 IPV6 over IPV4 GRE 隧道
自动隧道: IPV4 兼容IPV6 自动隧道、6to4 隧道和 ISATAP隧道
-
IPV4 over IPV6 : 过渡后期使用
通过隧道技术,使得IPV4 报文在IPV6 网络种传输
-
NAT 64 —— 用于IP 地址转换,公私网地址转换的NAT 44 、 IPV6 与 IPV4 地址转换的NAT 64 等
NAT 64 技术实际上是一种协议转换技术,能够将分组在V4 以及V6 格式之间灵活的转换。 当IPV4 网络的节点需要直接与IPv6 网络的节点进行通信的时候,默认的情况下当然是不通的 ,因为两个不同的协议是不能兼容的,但是借助一台设备,由该设备实现IPv6 与 IPV4 的互转,那么上述通信需求就可以实现了。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lNjL0ktU-1654864142564)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220523203427126.png)]
接下来我们进行逐个解析:
8.2.1 双栈技术-
所有设备必须支持 IPV4 / IPV6 协议栈
-
连接双栈网络的接口必须同时配置IPV4 地址和 IPV6 地址
双栈技术是IPV4 向 IPv6 过渡的一种有效的技术; 网络种的节点同时支持IPV4 和 IPV6 协议栈
源节点根据目的节点的不同选择不同的协议栈,而网络种设备根据报文的协议类型,选择不同的协议栈进行处理和转发。 双栈可以在一个单一的设备上实现,也可以是一个双栈骨干网, 对于双栈骨干网,其中的所有设备必须都支持IPv4 / IPV6 协议栈,连接双栈网络的接口必须同时配置IPV4 地址和 IPV6 地址
- 隧道技术是一种协议封装到另外一种协议种的技术
- 隧道技术用于实现分布于IPV4 网络种孤立IPV6 之间的互联,或者分布在IPV6 网络种的IPV4 岛屿互联
- 隧道技术只是需要边界节点实现双栈,并通过隧道将一个地址簇的数据穿越到另外一个地址组簇网络
- IPV6 over IPV4 隧道
原理描述:边界设备启动IPV4/IPv6 双协议栈,并配置IPV6 over IPV4 隧道,边界路由设备在收到从IPV6 网络侧发来的报文之后,如果报文的目的地址不是自身且下一跳出接口为 Tunnel 接口,就要把收到IPV6 报文作为数据部分,加上IPV4 报文头,封装成IPV4 报文 ,在IPV4 网络中,封装后的报文被传递到对端的边界路由设备。 对端边界路由器设备对报文解封装,去掉IPV4 报头,然后将解封之后的IPV6 报文发送到IPV6 网络中。
IPV6 over IPV4 隧道的两种配置
-
起点的IPV4地址必须为手动配置,而终点的确定有 手动配置和自动获取两种方式, ; 根据隧道终点的IPV4 地址的获取方式不同可以将IPV6 over IPV4 隧道分为手动隧道和自动隧道
-
手动隧道: 手动隧道即边界设备不能自动获得隧道终点的IPV4 地址,需要手工配置隧道的终点的IPV4 地址,报文才能正确发送至隧道终点
—— 手动隧道包括IPV6 over IPV4 隧道和GRE 隧道,这两种隧道的差别就是一个GRE隧道中被封装的协议可以是协议中允许的任何协议(可以是MPLS 、OSI、IPV6 等)而普通的IPV6 over IPV4 隧道只能在IPV4 和 IPV6 之间运行,还有一个差别就是GRE 隧道在乘客和承载协议之间有一个GRE报头进行过滤
手动隧道优缺点:
- 优点:可以用于任何IPV6 穿越IPv4 的环境,通用性好,
- 缺点:必须手工的去配置
-
自动隧道 (不用设置目的地址)
—— 自动隧道主要要IPV4 兼容IPV6 隧道,6to4 隧道(6to4 中继隧道)和 ISATAP 隧道
理念:将目的的IPV4 地址嵌套在IPV6 地址中 (不同隧道嵌套的位置不一样)然后发送数据包时通过对应的嵌套IPV4 发送给对应的设备
自动隧道即边界设备可以自动获得隧道终点的IPV4 地址,所以不需要手工配置隧道终点的IPV4 地址; 一般的做法就是隧道的两个接口的IPV6 地址采用内嵌IPV4 地址的特殊IPV6 地址形式,这样路由设备可以从IPV6 报文中的目的IPV6 地址中提取出IPV4 地址 。 其中ISATAP 隧道是基于软件的 ,使用的环境在PV 与 PC 之间或者 PC 与网络设备之间
IPV6 over IPV4 隧道
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RvbH8Inq-1654864142564)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220524085627707.png)]
GRE 隧道
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BcZPdd03-1654864142565)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220524085708670.png)]
9、 ICMP V6 9.1 由来全称: Ineternet Control Message Protocol version 6
协议号: 58 (即IPV6 报文中Next Header 字段的值 )
ICMPV6 即 互联网控制信息协议版本6 ; ICMPV6 为了与IPV6 配套使用而开发的互联网控制信息协议, 与IPv4 一样 ,他也需要ICMP,旧版本的ICMP 不能满足IPV6 全部要求,因此就开发了新版本的ICMP,称为ICMPV6
9.2 基本功能互联网控制信息协议是 IP协议的一个重要组成部分,ICMPV6 向源节点报告关于目的地址传输IPV6 包的错误和信息,ICMPv6 处理提供ICMPV4 常用的功能之外,还具有差错报告和网络诊断,邻节点发现和多播实现等功能,在IPV6 中,ICMPV6 实现IPV4 中ICMP、 ARP和IGMP 的功能
- ICMPV6 是 IPV6 的基础协议之一
- 实现邻接点发现、无状态地址配置 (包括重复地址检测)、PMTU发现等+
- 差错信息
- 信息消息
Error Message :差错类消息, 该类消的TYPE 字段最高bit 为0,因为此type 范围是 0-127
Information Message : 信息类消息,该类消息的Type字段最高bit 为1 ,因为type 范围在 128-255
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PqJPz3Dl-1654864142565)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220524114833256.png)]
解释:
-
Type :表明消息的类型, 0到127 标识差错报文类型,128至225 表示消息报文类型,也就是一部分是报错消息,一部分是功能型报文
-
Code(准则):表示此消息类型细分的类型,具体区分每种消息类型的错误信息,如目的不可达可能是防火墙导致的,也可能是路由错误导致的。
-
Checksum(校验和) : 表示ICMPV6 报文的校验和
ICMPV6 消息类型中有5 种是为了支持邻居发现协议(NDP)而定义的
TYPE CODE 消息名称 133 0 路由器请求(RS) 134 0 路由器通告(RA) 135 0 邻居请求(NS) 136 0 邻居通告(NA) 137 0 重定向报文
- PMTU 就是路径上最小接口MTU (源数据包发出去的沿途出接口的最小MTU值)
- 在IPV6 的场景中,数据包在被转发的过程中进行分片是相当不建议的,因为分片这一行为会造成转发设备的负担,我们期望的数据转发设备只要负责快速的将数据从源转发到目的地即可,其他耗费资源的事就少干,因此即使真的要分片,也应该在数据的返送方进行分片; 而数据是否要分片又决定于数据的传输路径上各个转发出接口的MTU 值 ,如果数据包的大小大于任何一个出接口的MTU,这个数据包就有可能在该处被分片
- 所谓的PMTUD (Path MTU发现机制)的主要目的就是发现路径上的MTU,当数据包被从源转发到目的的过程中避免分段。依赖PMTUD,数据的发送可以使用 所发现到的最优PMTU 目的节点进行通信,这样可以避免数据包在从源传输到目的的过程之中,被中途的路由器分片,从而导致性能下降
PMTUD 过程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f6t15Im4-1654864142566)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220524153716887.png)]
- 首先Source 用1500 字节作为MTU 向目标节点发送一个IPV6 数据包
- 中间路由器A 意识到数据包过大, MTU 为1400 , 于是回复了一个ICMPV6 type=2 (代表数据包过长)的消息向Source 应答,在该ICMPV6 消息中指定较小的MTU = 1400
- Source 开始使用MTU=1400发送IPV6 数据包,该数据包到了B
- 然而B意识到本地接口MTU 为1300 ,于是也回复一个ICMPV6 type=2 的消息向Source 应答
- Source 开始使用MTU=1300 发送IPV6 数据包,该数据包顺利到达了目的地
- Source 和 Destination 之间的会话被建立起来
邻居发现协议(NDP )代替了IPV4 的ARP ,基于ICMPV6 来实现
工作在网络层,负责在链路上发现其他节点和相应的地址,并确定可用路由和维护关于可用路径和其他活动节点的信息可达性
- RFC 2461 定义了邻居发现协议Neighbor Discovery Protocol (NDP)
- NDP 使用ICMPV6 消息实现其功能
- 路由请求 (RS): 类型133
- 路由通告 (RA):类型134
- 邻居请求 (NS):类型135
- 邻居通告 (NA):类型136
- 重定向(Redirect):类型137
NS 、 NA消息: 用到了代替ARP 请求;
RS、RA 消息:用到了 前缀公告、前缀重新编制
NDP 消息通常在链路本地的范围内收发
为了进一步增强安全性,承载所有NDP 消息的IPV6 数据包的跳数限制为255,如果收到的数据包跳数小于255的, 说明该数据包最少已经经过了一台路由,因此该数据包应该被丢弃掉,这样可以防止NDP 收到来自不与本地链路相连的源节点的攻击或者欺骗
9.5.3 NDP 使用以下的功能实现即插即用- 路由器发现: 当一个节点连接到一个IPV6 的链路的时候,他能够发现本地的路由器,不必借助DHCP
- 前缀发现: 当一个节点连接到一个IPV6 的链路的时候,它能够发现分配给该链路的前缀
- 参数发现;节点能够发现它所相连的链路的参数(链路的MTU和跳数限制等)
- 地址自动配置: 节点能够确定它的完整性, 不需要DHCP
- 地址分析:节点不需要借助ARP 就能发现所连接链路上其他节点的链路层地址
- 下一跳确定:一条链路上的节点能够确定到达目的节点的下一跳链路层节点
- 邻居不可达检测:节点能够检测到链路上的邻居(主机或者路由)何时不可达
- 地址冲突检测:节点能够检测他所要使用的地址是否已经被链路上的其他节点所占用
- 重定向:对于非连接的目的的节点,路由器能够通过重定向消息通知主机存在比自己更好的下一跳路由
NDP 整合了IPV4 中的ARP 、ICMP 重定向ICMP 路由器发现,并且进行改进。NDP 协议工作会使用如下几个地址:
- 未指定地址 : 表示发送者暂时无地址
- 链路本地地址: 只在链路范围内的单播地址
- FF02::1 (所有节点组播地址):到链路范围内的所有节点地址
- FF02::2 (所有路由器多播地址):到本链路范围内的所有路由器地址
- 被请求节点组播地址: 由固定前缀 FF02::1:FF00:0/104 和单播地址的最后24位组成
NDP 在IPV6 中代替了V4 中的ARP 地址解析协议
-
IPV4 中的ARP 和 IPV6 中的NDP 比较:
V4 中,ARP 使用的是广播地址,必须泛洪到二层网络中的每一台主机
V6 中 ,NDP 利用3层的组播寻址限制了地址的传播范围,通过将地址解析请求发送到特定的解析地址所属的被请求节点组播组(FF02::1FF00:0/104+IPV6地址后24位组成),这样也就减少了报文的传播范围,节省了网络的带宽
地址解析使用两种报文: NS 、 NA
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o1ZGLoOx-1654864142566)(C:Users86136AppDataRoamingTyporatypora-user-imagesimage-20220524200759510.png)]
初始情况下, A 要使用目的地址 2001::B 访问B,初始情况下A 没有B 的IPV6 对应的MAC 地址,因此就需要借助NDP 来获取2001::B对应的MAC (详细点来说就是A 会发送一个NS【邻居请求】, 顺利的话呢,会B 就会回复一个NA给A)
地址解析过程:
PC-A: PC-B
源 0200.5EE6.4C00 源 0200.7FBC.4B01
目 3333.0000.000B 组播MAC 地址 目 0200.5EE6.4C00
源 2001::A 源 2001::B
目 FF02::1:0B (被请求节点组播地址) 目 2001::A
ICMPV6 Type=135 (NS邻居请求) ICMPV6 Type=136 (NA)
节点A 的MAC 地址 回复B 的MAC 地址 : 0200.7FBC.4B01
NA报文 (Type=136 Code =0)
Router Flag : 表示消息发送者是否为路由器,是路由器则置1
Solicited Flag(请求标志) : 该NA 消息是否为响应某个邻居请求的消息,是则置 1
Overide Flag : 该NA 消息是否可以覆盖已经又得条目,是则是1
9.5.4.2 邻居状态跟踪NUD(Neighbor Unreachable Detection,邻居不可达检测)
在网络拓扑中,邻居得状态可能随时发送变化,包括掉电, 接口卡插拔等等,如果目的地失效了 ,则必然无法通信,如果路径失效, 可能找另外一条路径来找,因此节点需要维护一张邻居表,可以了解邻居的状态
RFC2461 定义了6 种 邻居状态 :
- 未完成状态(Incomplete):表示正在解析地址,但是邻居链路层地址还尚未确定 (就是本机已经发送NS 消息, 但是还没有收到NA 消息)
- 可达状态(Reachable ): 表示地址解析成功,此状态表示已经收到了对方发送的NA 消息,获得了对方的链路层地址; 在空闲30S 后Reach状态会过渡到Stale 状态
- 陈旧(Stale): 邻居可达时间超时,表示未知是否可达; 或者收到了邻居发送的非请求的NA 消息,非请求NA 消息当中携带了链路层地址和本地表项中地址不符合,该邻居状态立刻变成Stale 状态
- 延迟(Delay): 表示未确定邻居是否可达 ,Delay 状态不是一个稳定的状态,而是一个延时等待状态; 当向处于Stale 状态的邻居发送报文的时候,该邻居状态变成Delay 状态,并发送NS 消息
- 探查(Probe):节点会向处于Probe 状态的邻居持续发送NS 报文,如果持续收不到NA回应,就删除表项,如果收到NA回应 ,邻居状态就切换至Reachable(可达状态)
- Empty (空闲状态):表示节点上没有相关邻接点的邻居缓存表
邻居状态跟踪与地址解析的区别:
- 地址解析的NS 消息目的地址是被请求节点的组播地址,而邻居状态跟踪的NS 消息目标地址是单播,邻居状态跟踪的NS 消息中S 位必须置位
- 可以使用 show ipv6 neighbors 来查看邻居关系表
全称:Duplicate Address Detection 地址重复检测机制
DAD 通过什么来实现:NS 和 NA 报文
DAD 作用:网络中的设备可以使用DAD 机制来确定自己用的IPV6 有没有被其他的设备使用
当一个IPV6 接口激活之后,或者当一个接口获得了IPV6 地址(无论是有状态或者是无状态自动配置),都会启动IPV6 地址的DAD 机制,以此来确保该地址在链路上的唯一性
IPV6 DAD 特点:
- IPV6 所有单播地址都需要做DAD
- 所有未经过DAD 检测的地址都是试验地址(Tentative),无法用于通信
- 作用范围:本地链路
- 只有配置了IPV6 单播地址,链路不被shutdown 的才会发送DAD检测
DAD 检测过程:
- 设备在获得一个单播地址之后,将其标为试验地址,发送NS(邻居请求),源IPV6 地址为未指定地址(::),目的地址为节点上配置的IPV6 地址对应的被请求节点组播地址;收到NS 的节点会和自身接口单播地址作为对比。
- 如果在规定的时间内没有收到应答的NA 报文 ,则认为这个单播地址在链路上是唯一的,可以分配给该节点的接口使用
- 如果收到了NA报文 ,则表明这个地址已经被其他的节点使用了,所以不能配置到该节点的接口
全称 : Address Stateless AutoConfiguration
无状态地址自动配置 是IPV6 节点(主机或者路由器)用于为接口自动配置IPV6 地址的过程 ,无状态地址自动配置会自动执行某些网络管理员的任务
- 在RFC2462中定义,是IPV6 最有吸引力和最有用的新特性之一
- 即插即用 ,IPV6 地址无需手工配置
- 无需部署额外的应用服务器
- 主机、网络设备均可以支持
IPV6 无状态自动配置的过程 :
- 主机网卡激化,随机生成网卡Link-Local 地址
- 对Link-Local 地址进行DAD
- DAD 通过之后,主机发送RS (路由请求)消息尝试发现IPV6 路由器
- IPV6 路由器收到RS 消息之后,以一个RA 消作为回应 , 在该RA 消息中,包含路由器的MAC 地址、IPV6 的单播前缀消息等(RA 消息不一定要以RS消息为触发, 即使没有收到RS 消息,路由器也可以发送RA)
- 主机使用接收到的IPV6 单播前缀消息,加上自己的64bits 接口ID, 构成IPV6 单播地址
- 主机对该单播地址进行DAD ,DAD通过之后该 IPV6 地址即立刻启用
orange’>DAD 通过什么来实现:NS 和 NA 报文
DAD 作用:网络中的设备可以使用DAD 机制来确定自己用的IPV6 有没有被其他的设备使用
当一个IPV6 接口激活之后,或者当一个接口获得了IPV6 地址(无论是有状态或者是无状态自动配置),都会启动IPV6 地址的DAD 机制,以此来确保该地址在链路上的唯一性
IPV6 DAD 特点:
- IPV6 所有单播地址都需要做DAD
- 所有未经过DAD 检测的地址都是试验地址(Tentative),无法用于通信
- 作用范围:本地链路
- 只有配置了IPV6 单播地址,链路不被shutdown 的才会发送DAD检测
DAD 检测过程:
- 设备在获得一个单播地址之后,将其标为试验地址,发送NS(邻居请求),源IPV6 地址为未指定地址(::),目的地址为节点上配置的IPV6 地址对应的被请求节点组播地址;收到NS 的节点会和自身接口单播地址作为对比。
- 如果在规定的时间内没有收到应答的NA 报文 ,则认为这个单播地址在链路上是唯一的,可以分配给该节点的接口使用
- 如果收到了NA报文 ,则表明这个地址已经被其他的节点使用了,所以不能配置到该节点的接口
全称 : Address Stateless AutoConfiguration
无状态地址自动配置 是IPV6 节点(主机或者路由器)用于为接口自动配置IPV6 地址的过程 ,无状态地址自动配置会自动执行某些网络管理员的任务
- 在RFC2462中定义,是IPV6 最有吸引力和最有用的新特性之一
- 即插即用 ,IPV6 地址无需手工配置
- 无需部署额外的应用服务器
- 主机、网络设备均可以支持
IPV6 无状态自动配置的过程 :
- 主机网卡激化,随机生成网卡Link-Local 地址
- 对Link-Local 地址进行DAD
- DAD 通过之后,主机发送RS (路由请求)消息尝试发现IPV6 路由器
- IPV6 路由器收到RS 消息之后,以一个RA 消作为回应 , 在该RA 消息中,包含路由器的MAC 地址、IPV6 的单播前缀消息等(RA 消息不一定要以RS消息为触发, 即使没有收到RS 消息,路由器也可以发送RA)
- 主机使用接收到的IPV6 单播前缀消息,加上自己的64bits 接口ID, 构成IPV6 单播地址
- 主机对该单播地址进行DAD ,DAD通过之后该 IPV6 地址即立刻启用



