深入研究自动分配IPv6地址的Stateless(无状态)与Stateful(有状态)方式

小慢哥的原创文章,欢迎转载


目录

小说搜索 biqi.org

▪ 一. Link-Local Address的生成方式
▪ 二. Global Address的生成方式
▪ 三. RA报文中3个关键的Flag
▪ 四. 流程示意图
▪ 五. 测试获得IP效果
▪ 六. 应用场景(选择无状态还是有状态)
▪ 七. 后续内容
▪ 附. 参考文档


一. Link-Local Address的生成方式

生成“链路本地地址”,有2种方式

▷ 手动配置
▷ 自动配置

其中“自动配置”根据算法,又分为

▷ eui64:根据mac地址换算而来
▷ stable_secret:跟随网络环境的变化而变化,处于固定网络环境时其值将固定
▷ random:随机生成


二. Global Address的生成方式

生成“全球单播地址”(或者“唯一本地地址”),有2种方式

▷ 手动配置
▷ 自动配置

其中“自动配置”根据获取方式,又分为

▷ 无状态(Stateless):根据路由通告报文RA(Router Advertisement)包含的prefix前缀信息自动配置IPv6地址,组成方式是Prefix + (EUI64 or 随机)。Stateless也可以称为SLAAC(Stateless address autoconfiguration)
▷ 有状态(Stateful):通过DHCPv6方式获得IPv6地址

其中“有状态”又分为2种

▷ 有状态DHCPv6(Stateful DHCPv6):IPv6地址、其他参数(如DNS)均通过DHCPv6获取
▷ 无状态DHCPv6(Stateless DHCPv6):IPv6地址依然通过路由通告RA方式生成,其他参数(如DNS)通过DHCPv6获取

为了避免混淆,在此解释下有状态、无状态到底是什么意思:首先,请明确一点,有状态、无状态仅针对于IPv6地址分配方式,并不包含其他参数

▷ 有状态:可控、可管理。在网络中存在一个IP地址管理者,它能够识别客户端,根据不同的客户端,分配对应的IPv6地址,客户端与服务端之间需要维护IP地址的租期及续约。目前实现这种效果的,就是DHCPv6协议,IP地址管理者就是DHCPv6 Server
▷ 无状态:不可控、难管理。在网络中只有网关,没有IP地址管理者。因此无人去识别客户端,每个客户端根据网关发送的相同的RA报文内容,自行配置IPv6地址


三. RA报文中3个关键的Flag

RA报文中存在3个关键的flag bit:

Autonomous flag(简称A flag):表示是否配置无状态IP。在一个RA报文中,可存在多个prefix,比如2401::/64、2402::/64、2403::/64,每个prefix都可以独立配置A flag

▪ 为on时(对应bit位为1):表示客户端应当在该prefix范围内自动生成IPv6地址(客户端通过DAD自行保证地址可用),并配置子网路由条目、网关
▪ 为off时(对应bit位为0):表示客户端不应当在该prefix范围内自动生成IPv6地址,但是可以配置子网路由条目、网关

Managed flag(简称M flag):表示是否配置有状态IP。M flag是RA报文的全局参数,一个RA报文只有一个M flag

▪ 为on时(对应bit位为1):表示在stateless流程结束后开始stateful流程,也就是告诉客户端可以通过DHCPv6来获得IPv6地址和其他参数(如DNS列表)
▪ 为off时(对应bit位为0):表示不通过DHCPv6来获得IPv6地址。

Other flag(简称O flag):表示是否通过DHCPv6获得除IP以外的其他参数(如DNS列表)。O flag也是RA报文中的全局参数,一个RA报文只有一个O flag。注意:仅当M flag为off时,该参数才会被读取。

▪ 为on时(对应bit位为1):当M flag为on,或者M flag为off且至少有一个A flag为on时,将通过DHCPv6获得其他参数
▪ 为off时(对应bit位为0):当M flag为on时,依然将通过DHCPv6获得其他参数;当M flag也为off时,将不通过DHCPv6获得其他参数


四. 流程示意图

无状态和有状态并不是相互对立的,他们可以同时存在,也就是一张网卡上可以同时出现通过RA生成的IP以及通过DHCPv6获得的IP。通过下面这张笔者绘制的流程图可知晓其中奥秘。

从图中可以看到,顺序为:

1️⃣ Stateless自动配置“链路本地地址”
2️⃣ Stateless自动配置“全球地址”(或“唯一本地地址”)
3️⃣ Stateful自动配置“全球地址”(或“唯一本地地址”)和其他参数,其中Stateful阶段中存在Stateful DHCPv6或Stateless DHCPv6

注意:部分客户端操作系统或网络管理器当Stateless阶段没有收到RA报文后,就到此结束,不会走Stateful阶段,比如CentOS 7、Ubuntu 17的默认逻辑都是这样,而windows server 2012就会继续走Stateful阶段。


五. 测试获得IP效果

测试环境:客户端基于CentOS 7+NetworkManager(即系统默认的网络管理方式)进行测试

▪ 网关会发送RA报文,包含一个prefix
▪ DHCPv6 Server会分配IP、DNS

测试内容:测试M、O、A flag在所有排列组合的情况下

▪ 客户端是否会通过RA报文配置无状态IP
▪ 客户端是否会通过RA报文配置prefix子网路由
▪ 客户端是否会通过RA报文配置gateway
▪ 客户端是否会通过DHCPv6获得有状态IP
▪ 客户端是否会通过DHCPv6获得DNS

测试结果


六. 应用场景(选择无状态还是有状态)

何时采用无状态、何时采用有状态,关键看应用场景。核心在于是否需要控制IP地址,比如保持IP不变,如果需要控制,就采用有状态;如果无需控制,就采用无状态。

▷ 服务端领域:如对外提供服务,通常需要采用有状态IP。因为业务IP的突然变化容易导致业务中断(除非做好服务发现)
▷ 客户端领域:如移动设备、办公室内PC机,只需要上IPv6互联网,并不需要对外提供服务,可以采用无状态IP


七. 后续内容

由于篇幅有限,本文尚未贴出实验的详细配置。将会在《IPv6系列》后续文章里,贴出实验的完整信息,包括RA、DHCPv6的配置,以及客户端的配置,敬请关注。


附. 参考文档

http://www.6deploy.eu/tutorials/080-6deploy_ipv6_autoconfiguration_mechs_v0_4.pdf
https://cshihong.github.io/2018/02/01/DHCPv6基础/

IPv6系列-彻底弄明白有状态与无状态配置IPv6地址相关推荐

  1. linux dhcpv6有状态配置,ipv6 有状态和无状态什么意思

    这是IPv6协议的一个突出特点:支持网络节点的地址自动配置. 一.有状态就是有数据存储功能.有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的.在不同方法调 ...

  2. 初识IPv6 有状态、无状态地址相关协议

    本文主要介绍IPv6全局单播地址(Global Address)的获取方式及其相关的协议,DHCPv6协议和RA.RS报文(邻居发现协议). 1.全局单播地址类型 IPv6地址中分为本地链路地址(Li ...

  3. 精通有状态vs无状态(Stateful vs Stateless)一

    精通有状态vs无状态(Stateful vs Stateless)-Immutable模式之姐妹篇 Peter Wei 我相信有不少人还不明白有状态和无状态(Stateful and Stateles ...

  4. spring期刊状态_无状态Spring安全性第2部分:无状态认证

    spring期刊状态 Spring Stateless Security系列的第二部分是关于以无状态方式探索身份验证的方法. 如果您错过了有关CSRF的第一部分,可以在这里找到. 因此,在谈论身份验证 ...

  5. 有状态和无状态(Stateful vs Stateless)

    我相信有不少人还不明白有状态和无状态(Stateful and Stateless)的概念,那么我们今天就来谈谈有状态和无状态,一方面不断总结提高自我,另一方面兼扫盲. 基本概念: 有状态就是有数据存 ...

  6. 浅析权限认证中的有状态和无状态

    转自:https://www.cnblogs.com/shiyajian/p/10672908.html 前言 我们在设计构建一个系统的时候,权限管理和用户认证是最基本功能,其中关于用户认证这块是一个 ...

  7. mysql有状态无状态_有状态和无状态的对象区别

    每次的总结,都是一种进步,把自己理解的东西记录下来不容易,让别人看懂更不容易. 第一:基本概念: 1.有状态就是有数据存储功能.有状态对象(Stateful Bean),就是有实例变量的对象,可以保存 ...

  8. 什么叫有状态,无状态

    什么叫有状态,无状态 先说结论: 无状态 当前的操作不需要历史信息的支持,一般都是短连接,比如在某个新闻网站上浏览新闻等.当从服务器获取资源后就可以和服务器断开连接 有状态 当前操作需要历史数据的支持 ...

  9. 有状态和无状态(@stateless/@stateful)

    基本概念:  有状态就是有数据存储功能.有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,是非线程安全的.在不同方法调用间不保留任何状态.  无状态就是一次操作,不能保存数 ...

最新文章

  1. java从数组查找指定整数_如何在Java中使用重复项查找整数数组中的K个缺失数字?...
  2. fork()的一些测试
  3. 合作活动 | 鲸准产业价值峰会AI专场,共探AI商业模式
  4. D2Admin - 基于vue的清新后台模板
  5. dubbo常见的一些面试题
  6. 【优化预测】基于matlab狼群算法优化BP神经网络预测【含Matlab源码 658期】
  7. java jsp 404错误页面模板_JSP页面404错,点击分页的按钮就报错
  8. Matlab三次样条插值
  9. Java--------面向对象
  10. 互联网日报 | 58到家正式改名“天鹅到家”;华为“服务日”活动宣布延长一年;特斯拉上线电池回收服务...
  11. 解决fidder一直报“The sever(XXX) presented a certificate that did not validate,....”
  12. 基于数据形式说明杜兰特的技术特点的分析(含Python实现讲解部分)
  13. sqlserver 联接查询的一些注意点
  14. HackRF实现GPS欺骗教程
  15. 深入理解LTE-A 学习笔记(1)
  16. 如何拍背景虚化的照片_3大方法,教你拍出虚化背景的拍摄技巧效果
  17. 四轴飞行器入门——飞行器的硬件结构
  18. python之九九乘法表打印功能深入讲解
  19. 报表合并软件怎么快速将多表格文件整合到一个表
  20. 如何构建真正有效的企业大学

热门文章

  1. Spire.XLS:一款Excel处理神器
  2. 【定位问题】基于RSSI均值的等边三角形定位算法matlab系统
  3. wlh机器人_机器人在制造环节,AGV小车在物流环节
  4. 面试题:查询字符串中出现次数最多的字符以及出现次数
  5. 【社区分享】专注移动端机器学习交流,TensorFlow Lite 中文兴趣小组招募中!
  6. 使用WinDbg Preview解决Win10系统蓝屏问题
  7. ANSYS APDL学习(3):ANSYS APDL 导入x_t格式模型并受力分析范例
  8. 联邦学习论文阅读笔记
  9. turtle库的一些基本函数
  10. 金蝶云苍穹开发实用整理