admin管理员组

文章数量:1642346

什么是即插即用?设备开始启用,自动配置IP地址,天然就可以进行网络通信,为上层协议作铺垫。IPv4即插即用功能——DHCP(勉强算是,自动配置地址),但是IPv4地址长度有限,始终是一个瓶颈(勉强可以用NAT和CIDR缓解)。

地址配置

地址配置方法分别为两种:手动配置、自动配置

  • 手动配置:方法困难,尤其是IPv6的冒号分16进制,人为配置过于繁琐。必要场景——路由器接口或者网关,因为需要网络前缀和网络地址 。
  • 自动配置:方法简单,协议驱动,自动规避风险(比如:地址冲突),需求场景——各类终端、其他协议需求。问题:自动配置前提是人为规定 。原因:自动配置首先要确定网络地址,属于哪个网络。

自动配置

 对于IPv6自动配置基本有所耳闻,大概是:EUI 64、无状态自动配置、有状态自动配置、自动生成链路本地地址。

 现在按照上述图片,描述各项功能。

    1.  EUI 64:自动配置主机ID,对于IPv4地址而言就是主机位。

好处:由于MAC全球唯一,主机ID不会出现重复,基本不担心地址冲突。

转换过程:

1. MAC 地址 —— 0000:0B0A:2D51

2. MAC 地址二进制——00000000 00000000 00001011 00001010 00101101 01010001

(红色数字为U/L位,第二高位为U/L位)

3. 中间插入0xFFFE——00000000 00000000 00001011 11111111 11111110 00001010 00101101 01010001

4. 反转U/L位——00000010 00000000 00001011 11111111 11111110 00001010 00101101 01010001

5. EUI 64接口ID:0200:0BFF:FE0A:2D51

     2.  链路本地地址

利用EUI 64生成的主机ID,加上定义的网络前缀:FE80::/10,生成链路本地地址,仅链路有效。

根据主机MAC:0000:0B0A:2D51

生成链路本地地址——FE80::0200:0BFF:FE0A:2D51 /10

链路地址作用

1. 实现本链路通信

2. 为其他协议做铺垫:OSPF、ICMP等。

      3.  无状态自动配置

无状态自动配置,本质——ICMP协议中的NDP消息。

NDP消息种类:

  • 路由器通告消息(RA):路由器发起,用于通告链路前缀(网络前缀)、链路MTU等消息
  • 路由器请求消息(RS):主机发起,用于请求RA
  • 邻居请求消息(NS):主机发起,用于请求另一台主机MAC地址,也可以实现邻居冲突检测
  • 邻居通告消息(NA):主机用于响应NS,返回自己的MAC地址。如果节点MAC改变,可以发送一个未请求的NA,更新表项。
  • 重定向(Redirect):相当于IPv4中ICMP的重定向。

路由器通告(Router Advertisement , RA)

  •  M:管理地址的配置标记位。置位为1,则用DHCPv6服务器;置位为0,则无状态配置。
  • O:其他有状态配置标记。置为为1,则用DHCPv6服务器获取其他信息。置为为0,则手动配置其他信息。
  • 路由器生存时间:只有在 始发路由器是一台缺省路由器时,该字段才设置为非0的值。如果这种情况,则该字段指定为该缺省路由器的存活时间,以秒为单位,最大值18.2h。
  • 可达时间:是指用于实现NDP协议中邻居不可达性检测功能的字段。当一个节点确认他的邻居是可到达的后,可达时间会指定一个时间值,在该时间内,这个节点假定它的邻居是可达的,以毫秒为单位。
  • 重传时间:指定重传的邻居请求消息(NS)之间的最小时间,以毫秒为单位。

注意点:

  • RA消息的源地址有两种:始发地址为链路本地地址,目的地址为FF02::1(所有主机地址)
  • 定期发送
  • M和O的搭配。M的比较简单,选择DHCP地址池还是选择路由器的网络前缀。O比较难理解,为什么要其他信息?有IP地址不就行了吗?

原因:以用户电脑为例,用户上网,最基本要有NAT、网关(默认路由)、DNS,如果只有IP地址,也只是空壳。无状态配置,可以获取IP地址,但是获取不了其他信息。因此,出现

M:0(无状态配置),O:1(获取其他链路信息,否则自己手动配置)这种组合。

 路由器请求(Router Solicitation , RS)

 

 注意点:

  • RS消息由主机发起
  • 封装RS消息的IPv6数据包的源地址有两种情况:未指定地址(::)或者始发地址
  • 未指定地址出现情况:刚开始进行地址自动配置情况,至少链路本地地址未生成
  • 目的地址是FF02::02(IPv6的所有路由器地址)

邻居请求(Neighbor Solicitation , NS) 

 

  •  目标地址:指请求目标的IPv6地址,且永远不可能是一个多播地址。(相当于ARP请求,其他协议触发,目标地址自动填充)

注意点:

  • IPv6的源地址分为两种情况:未指定地址和始发源地址
  • 未指定地址:出现情况地址冲突而发送邻居请求消息
  • 目的地址:被请求节点的多播地址(这个接口所属的组播地址或者目标地址

DAD冲突检测:

1. 源地址为::,目的地址为组播地址,目标地址为配置的IP地址

2. 目的地址格式:前缀——FF02:0:0:0:0:1:FF00:: /104,后24位用目标地址的后24位。

why 地址冲突检测?

原因:一个接口拥有多个IPv6地址,除了自动配置之外,还有手动配置,能够检测冲突总是好的。

邻居通告(Neighbor Advertisement , NA)  

 

  •  R:路由器标记。如果设置了此位,表示始发该消息节点是一台路由器。
  • S:被请求标记。
  • O:过载标记。表示通告消息超过现有邻居缓存表。
  • 目标地址:分为两种情况,一是S置位,则是RS的目标地址;未置位,则是始发源地址(更新邻居MAC表项)。

注意点:

  •  IPv6源地址:始发节点的IPv6地址
  • IPv6目的地址:FF02::1(所有主机地址)或者邻居请求消息的源地址

重定向(Redirect)   

  •  目的地址:是指更好的第一跳地址——通常是链路上另一台路由器的链路本地地址
  •  目标地址:被重定向到目标地址的IPv6地址

重定向功能作用对象为链路交换,就是二层通信,非三层路由。

举个小栗子:

 重定向:

  1. PC 1 ping R3某个地址,icmp发往网关R1(中间步骤省略)
  2. R1查询路由表,去往R3下一跳是R2,将icmp报文转发给R2
  3. R1判断FE80::1和FE80::2是属于同一网段,发送redirect报文给PC 1
  4. PC 1收到重定向报文后,后续通信发送给更优下一跳(R2)

简而言之:重定向改变的实质是同一网段内,寻找更优下一跳,改变二层通信。 

      4.  有状态自动配置 

有状态自动配置就是DHCPv6配置,原理跟普通的DHCP配置差不多。

问题:两种自动配置,选择哪种自动配置方法?

实现:RA的 “M” 和 “O” 置位,通过管理人员人为配置,决定终端使用的自动配置方法。

题外话:

再次提醒,无状态配置不能取代DHCP的地位,因为无状态配置主要就是获取一个网络地址,对于用于或者其他设备而言,其他链路信息同样重要!!!

总结

协议类型作用
RA和RS用于获取网络前缀,完成自动配置
NA和NS用于实现IP->MAC,完成二层通信,取代ARP功能,同时废弃广播
Redirect用于在同网段内寻找更优下一跳

IPv6篇即插即用内容大致就这些,关于RA、RS等消息的Option内容可以查询 <<RFC 2461>>,但是内容格式基于TLV形式,易于扩展,说不定以后会附加多种多样的功能。

本文标签: 即用即插