IPv6—动态地址配置

网络地址的配置是网络层管理的重要步骤。最直观的配置方式是静态配置IP地址,但是这增加了运维管理成本,并且没有灵活性。因此,大部分场合下,IP地址都是通过动态配置的。

DHCP

在IPv4下,IP地址的动态配置依赖于DHCP协议。DHCP全称是Dynamic Host Configuration Protocol,由RFC2131定义。DHCP由BOOTP协议(RFC951)发展而来,并且完全兼容BOOTP。

DHCP是一个client-server模式的协议,Server管理着IP地址池。一般情况下,主机作为Client,通过下图的方式与DHCP Server交互,并请求IP地址。IP地址包含在DHCP offer和ACK中。

IPv6---动态地址配置

DHCP对应的中文是动态主机配置协议。所以除了IP地址以外,同时也能配置子网掩码长度,主机名,路由,默认网关,DNS等。所以在IPv4中,DHCP协议就可以完成大部分的主机动态配置。DHCP协议已经使用了几十年,这里不做过多的介绍。

DHCPv6

对应于DHCP,IPv6协议中也有DHCPv6(RFC8415/RFC3315)。但是就像IPv6完全不兼容IPv4一样,DHCPv6除了工作模式与DHCP类似以外,与DHCP也不兼容,它的协议内容也进行了重新定义。

因为IPv6中没有广播的概念,所以不像DHCP基于广播地址255.255.255.255来发现DHCP Server,DHCPv6中,有两个保留的组播地址,用来发现网络中的DHCP Server:

All_DHCP_Relay_Agents_and_Servers (ff02::1:2)DHCPv6 client使用这个地址将DHCP请求发送给所有的DHCPv6 relay(中继)agent和DHCPv6 server,这样可以发现网络中的DHCPv6 ServerAll_DHCP_Servers (ff05::1:3)DHCPv6 relay agent通过这个地址将DHCP请求转发给所有的DHCPv6 server

DHCPv6仍然是基于UDP协议,但是使用的是UDP的547(Server监听端口)和546(Client监听端口)。与IPv4协议不同的是,IPv6协议下,每个网卡都默认带一个link-local地址,这个地址是fe80::/10的前缀加上(一般情况下)网卡的MAC地址生成[RFC4291]。IPv6的link-local用来在一个二层链路中唯一标识一块网卡,并且可以在有限场景下在一个二层链路中用来通信。

在DHCP(IPv4)协议下,DHCP Client在发起请求的时候,因为还没有IP地址,所以源IP只能是Unspecified Address(0.0.0.0)。而DHCPv6 Client在发起请求的时候,网卡已经有IPv6地址了,所以源IPv6地址就是网卡的link-local地址,目的地址是DHCPv6保留的组播地址ff02::1:2。

IPv6---动态地址配置

上面就是DHCPv6的交互过程。DHCPv6 Server在收到请求之后,将IPv6地址在单播回给Client网卡的link-local地址。其中IPv6地址包含在Advertise和Reply中,这个过程与DHCP类似。

除了上面实现细节上的差别,DHCPv6与DHCP的区别还在于,DHCPv6不支持传输子网掩码长度,路由,和默认网关。这个区别是由IPv4迁移至IPv6容易引起错误的地方。

IPv6 动态地址配置模式

动态地址配置对于IPv6来说尤其重要,因为在IPv4场景下,地址长度,地址数量有限,静态配置还有可行性,但是如果要真正的完全使用IPv6,通过静态配置地址基本不可能。尽管IPv6下面已经有DHCPv6协议,尽管DHCPv6已经与DHCP不兼容,但是IPv6和IPv4动态地址配置的差别远比DHCPv6和DHCP的差别大。

两个协议,三种模式

IPv6的动态地址配置主要依赖两个协议,一个是DHCPv6(RFC8415),另一个是IPv6 Stateless Address Autoconfiguration(RFC4862)。IPv6的动态地址配置方式客观的说是合理的,并且一定程度结合了IPv4动态地址配置的经验(个人猜测)。

在现实场景中,为了让一个网络工作,除了将设备连接起来的线路,交换机,我们主要还需要两个设备,一个是DHCP Server,主要用来管理、分配地址和配置信息,另一个就是Router路由器,主要用来做三层转发,连接当前网络和其他网络。实际中,经常将DHCP Server配置在路由器上,或者路由器作为一个DHCP relay agent。另一方面,如果没有路由器,网络只是一个二层网络,作用有限。因此,这两个设备本身可以只是一个设备,并且它们之中,路由器占主导地位。基于这个背景,IPv6的动态地址配置有三种模式:

SLAAC,Stateless Auto Address ConfigurationStateless DHCPv6Stateful DHCPv6

这里的Stateful,指的就是DHCP Server管理的IP地址,因为这些地址存在一个分配关系,需要一个程序去管理这个状态。Stateless Address是指这个地址就是分配给某一个确定的主机使用,没有其他状态。

SLAAC

SLAAC基于协议RFC4861和RFC4862。在SLAAC的世界里,没有DHCPv6。SLAAC协议由路由器来通告配置IPv6地址所需要的信息。具体工作流程是这样:支持IPv6的网卡启动的时候会发送一条RS(Router Solicitation)消息,源IP是网卡的link-local地址,目的IP是ff02::2。ff02::2也是保留的组播地址,用来表示所有的路由器。这条消息用来查找当前网络中的路由器。

路由器收到这条消息之后,会回传一条RA(Router Advertisement)。一般情况下,RA的源IP地址是Router的link-local地址,目的地址是ff02::1。ff02::1也是一个保留的组播地址,用来表示所有的主机。也就是说任意网卡发起的RS消息,都会引起路由器将RA消息在整个网络中发送给所有的主机。除此之外,就算没有任何RS消息,路由器也应当定期向所有主机发送RA。具体流程如下图的3,4。

IPv6---动态地址配置

RA消息是SLAAC协议的核心,它的格式内容如下:

IPv6---动态地址配置

RA可以发送给网络中所有主机的基础就是,不像DHCP消息,RA是无状态的,任何主机接收到了RA消息之后,都能根据其中的信息完成IP地址配置。RA的options中通常包括:

MTU主机可以根据这个MTU值配置自己的MTU路由器的MAC地址0或者N个prefix(网段)

如果RA中一个prefix的auto标志位是1,那相当于告诉网卡,可以自己从这个prefix中生成一个IPv6的地址。网卡只需要使用一个局域网中唯一的标识符,再加上这个prefix,就能生成一个IPv6地址。网卡在局域网中的天然唯一标识符就是MAC地址,因此一般情况下,SLAAC协议中,网卡是通过RA中的prefix和自身的MAC地址,再根据EUI-64格式生成一个IPv6地址。SLAAC协议的基础就是IPv6地址长度足够大,能支持这样的配置。

RA消息还能带来一个潜在的配置,主机会将IPv6的默认网关,指向RA的源IP地址,也就是Router的link-local地址。生成的默认路由是有时效的,时间是Router Lifetime。所以需要路由器定时发布RA(类似于心跳),更新主机的默认路由。这个机制讲道理是合理的,默认路由只有在路由器还活着的时候才有意义。但是这个机制增加了管理的复杂度,尤其在SDN场景,虚拟路由器下定时发布RA。

SLAAC协议有两个问题,一个是IPv6的地址不可控了,一般情况下与主机的MAC地址相关;另一个是RA格式比较简单,能传递的配置有限,一些复杂的主机配置无法通过RA传递。

但是好处是简单,只用路由器,不需要DHCPv6的介入,就可以完成简单的IP地址配置;另外无状态地址能简化管理,只需要一些简单的程序就能完成Prefix分发,不需要集中的管理地址,处理多节点数据同步,这有点像分布式架构。SLAAC的配置过程如下如所示:

IPv6---动态地址配置

Stateless DHCPv6

Stateless DHCPv6就是结合了SLAAC和DHCPv6。其中IPv6地址配置通过SLAAC下发,其他配置通过DHCPv6下发。这样能弥补SLAAC模式下,RA所能传递配置有限的问题。

Stateful DHCPv6

这里就是纯纯的DHCPv6了,但是前面说过,DHCPv6不支持子网掩码长度,路由,和默认路由。这样就导致通过DHCPv6获得的IPv6地址,因为没有掩码长度,地址的掩码都是128位。而路由和默认网关,还是需要依赖RA。因为在IPv6中,动态配置路由和默认网关的唯一方式就是使用Router Advertisement消息。所以,就算使用了DHCPv6,也不能完全摆脱RA消息。只是说DHCPv6下,IPv6地址变得可控了。所以,在IPv6动态地址配置中,Router Advertisement是必不可少的,因为它控制了主机路由和默认路由。同时Router Advertisement还控制了IPv6的动态地址配置模式。在RA的数据中,有两个标志位M(Managed)和O(Other)。

当M=0,O=0时,IPv6地址工作在SLAAC模式下当M=0,O=1时,IPv6地址工作在Stateless DHCPv6模式下当M=1时,IPv6地址工作在Stateful DHCPv6模式下

总的来说,Stateful DHCPv6的工作流程如下所示:

IPv6---动态地址配置

IPv6中,如果需要地址可控,那只能使用DHCPv6。如果只是需要分配一个IPv6地址,对地址无要求,那么使用Stateless地址分配方式更为合理。

本文由 哥弟网 原创,转载请注明出处:http://www.gdnhd.com/10261.html

(0)
上一篇 2022年7月21日 上午5:18
下一篇 2022年7月21日 上午5:19

相关推荐

  • 关于进一步动态调整疫情防控措施的通告(2022年第48号)

    关于进一步动态调整疫情防控措施的通告 (2022年第48号) 为更好地统筹疫情防控和经济社会发展,经研究,决定对崇川区、通州区、南通经济技术开发区、苏锡通科技产业园区范围的疫情防控措施作进一步动态调整,现通告如下: 一、封控区、管控区继续严格执行疫情防控相关措施(截至2022年4月14日12时的具体范围附后。后续管控范围和措施由属地疫情防控指挥部根据疫情防控…

    2022年7月20日
    1600
  • 这些赚大钱的行业,将会有一大批穷人暴富起来!

    雷军说过一句话,站在风口,猪都会飞。很多人没有了解过这句话都多重要,强如大佬,也不可能逆势而为,当你提前布局,坐上风口,哪怕你是个庸才,也可以赚一波快钱。 现在处在什么时代?现在是互联网时代,信息和信息的交换不存在鸿沟和界限,那么下一个时代呢,是物联网时代。通过智化的物,物联网可以将跨地域、跨不同机构的物整合起来。 移动互联网时代已经发展到了顶峰,5G网络全…

    2022年7月16日
    2200
  • 未来十年中国十大热门行业:

    未来十年中国十大热门行业: 1.财务规划师。 专业能力越强,工作经验越专业;收入不仅是佣金,还可以由项目或按小时支付。据证券时报报道,近六年来,中国理财业务年均增长率达到18%。 2.人力资源经理。 目前,中国的中级和高级人力资源专业人员存在巨大差距。企业如何更好地找人才,用人才,留住人才成为决定企业成败的关键。人力资源部门正在掌舵这个关头。 3.电子商务工…

    行业 2022年7月17日
    1900
  • 《老杨会客厅》走进濮阳对话氢能行业大咖

    7月16日下午,2022中国氢能产业发展(濮阳)峰会期间,《老杨会客厅》走进濮阳。三农学者、《老杨会客厅》创始人杨建国对话市委常委、常务副市长赵建玲,PGO氢能与燃料电池产业研究院院长周元,广东国鸿氢能科技有限公司总经理杨泽云和上海陕耀新能源投资有限公司董事长叶得军。市领导张相坤、宋伯迅以及相关部门和县区负责人参加活动。 《老杨会客厅》成立于2015年,致力…

    行业 2022年7月17日
    2100
  • 关于动态调整疫情防控措施的通告(2022年第44号)

    关于动态调整疫情防控措施的通告 (2022年第44号) 在全体市民共同努力下,崇川区、通州区、南通经济技术开发区、苏锡通科技产业园区连续开展了多轮全员核酸检测,社会面疫情传播风险得到有效控制。鉴于全员核酸检测期间市区个别地方在社区筛查中发现了零星新增无症状感染者,为巩固来之不易的疫情防控成果,经研究,决定对上述区域疫情防控措施作如下动态调整: 1. 封控区、…

    2022年7月20日
    1700

发表回复

您的电子邮箱地址不会被公开。

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信