IPv6 Address Autoconfiguration
Auto-configuration 僅適用於具有multicast能力的interface(ex:Ethernet)
IPv6定義2種方法來對每個interface個別自動配置參數
Stateful Autoconfiguration- 一是利用server(例如DHCPv6)來進行配置
Stateless Autoconfiguration- 另一是IPv6能夠進行Auto-configuration
此稱為這2種配置方法可任意單一或混合使用。 除了host自行配置一個link-local位址以外,透過Auto-configuration process, 每個interface可配置零到多個ULA(Unique Local Address)位址以及零到多個Global位址
首先Client會被設定要以哪種方式取得IPv6
StateLess
With DHCPv6
Without DHCPv6
Stateful
Client端發送ICMPv6 RS(Router Solicitation)封包給Router
Router回覆ICMPv6 RA(Router Advertisement)封包給Client
Client端檢查Router回覆的RA訊息(type code = 134),若有,分析其ICMP標頭裡頭的M/O Flag
d
d
d
M bit
O bit
代表意義
說明
0
0
SLAAC
0
1
StateLess DHCPv6
1
X
Stateful DHCPv6
Client發送Multicast的Solicit包,若是開啟Rapid Commit option,表示進行快速設定,直接跳至step.7
Router發送Unicast的Advertisement包
Client發送Multicast的Request包
Router發送Unicast的Reply包 (若是之前RA訊息中(M=0, O=1),那這邊可以獲得DNS。若之前RA訊息中(M=1),那這邊可以取得IPv6的DNS以及被分配的位址)
Auto-configuration process:
首先用prefix (FE80::/64) 和自行產生的Interface ID,合併形成link-local位址
並且利用DAD(Duplicate Address Detection)程序來確認創建的link-local位址在link上沒跟其interface的位址衝突, 是唯一的識別ID。Link-local位址是interface初始化時自行創建的位址,它是最基本也是最重要的位址,沒有它則無法順利繼續整個自動配置,此情況下,只能手動完成配置。當DAD檢測到位址衝突時,必須馬上對系統提報錯誤信息
利用routers發佈的RA(Router Advertisement message)決定哪些信息需要自動配置(可配置參數:位址,MTU,Hop Limit,default router,route information等信息)。並且依據M bit欄位值及O bit欄位值決定是否利用stateful autoconfiguration來配置參數(可配置參數:位址和其它信息)。
如果link上沒配置router,host應該嘗試stateful autoconfiguration來配置參數 (4ipnet 因為希望dual stack 所以比較適用stateless)
為了避免位址發生衝突,IPv6要求所有的unicast address必須通過DAD檢測後才能以該位址的身份發送或接收封包
Stateless autoconfiguration的特點是: host無需手動就能夠自動配置參數。透過router發佈的Router Advertisement message,host可以配置到IPv6位址,預設router的位址,Hop Limit和MTU等信息。但是,無法自動配置服務器位址,例如DNS或其它servers。當需要配置其它參數時,必須使用stateful autoconfiguration。(定義在DHCP options中的DNS server或其它參數等,只要將來被定義成Router Advertisement message可攜帶的options,仍可以透過stateless autoconfiguration來獲取這些參數值。)
請注意!Stateless autoconfiguration僅適用於hosts。至於routers的配置方法,不在本書的討論範圍內。
Duplicate Address Detection (DAD)
Renumbering: 這邊指的是RA from old prefix to new prefix 這件事
Reference:
Last updated
Was this helpful?