IPv6在互聯網絡中的運行方式
本文轉載自微信公眾號「思科CCIE俱樂部」,作者老楊。轉載本文請聯系思科CCIE俱樂部公眾號。
IPv6在互聯網絡中的運行方式
現在該探討IPv6的細節了。首先,介紹如何給主機分配地址以及主機如何找到網絡中的其他主機和資源。
我們還會演示設備的自動編址功能(無狀態自動配置)以及另一種類型的自動配置(有狀態自動配置)。請記住,有狀態自動配置使用DHCP服務器,與IPv4中極其類似。
自動配置
自動配置是一種很有用的解決方案,讓網絡中的設備能夠給自身分配鏈路本地單播地址和全局單播地址。它是這樣完成的:首先從路由器那里獲悉前級信息,再將設備自己的接口地址用作接口ID。
但接口ID是如何獲得的呢?大家都知道,以太網中的每臺設備都有-個 MAC地址,該地址會被用作接口ID。然而,IPv6 地址中的接口ID長64位,而MAC地址只有48位,多出來的16位是如何來的呢?在MAC地址中間插人額外的位,即FFFE。
例如,假設設備的MAC地址為0060:d673:1987,插人FFFE后,結果為0260:d6FF:FE73:1987。為何開頭的00變成了02呢?向得好。插人時將采用改進的eui-64 (擴展唯一標識符)格式,它使用第7位來標識地址是本地唯一的還是全局唯一的。如果這一位為1,則表示地址是全局唯一的,如果為0,則表示地址是本地唯一的。在這個例子中,最終的地址是全局唯一的還是本地唯一的呢?
正確的答案是全局唯一的。自動配置可節省編址時間,因為主機只需與路由器交流就可完成這項工作。
為完成自動配置,主機執行兩個步驟。
(1)首先,為配置接口,主機需要前綴信息(類似于IPv4地址的網絡部分),因此它會發送一條路由器請求( Router Solicitation, RS )消息。該消息以組播方式發送給所有路由器。這實際上是一種ICMP消息,并用編號進行標識。RS消息的ICMP類型為133。
(2)路由器使用一條路由器通告(RA)進行應答,其中包含請求的前級信息。RA消息也是組播分組,被發送到表示所有節點的組播地址,其ICMP類型為134。RA消息是定期發送的,但主機發送RS消息后,可立即得到響應,因此無需等待下一條定期發送的RA消息,就能獲得所需的信息。
圖15-2說明了這兩個步驟。
順便說一句,這種類型的自動配置稱為無狀態自動配置,因為無需進一步與其他設備聯系以獲悉額外的信息。稍后討論DHCPv6時,將介紹有狀態自動配置。
路由器配置IPv6
下面來看看如何給路由器配置IPv6。
要在路由器上啟用IPv6,必須使用全局配置命令ipv6 uni cast-routing:
- Corp( config)#ipv6 unicast-routing
默認情況下,轉發IPv6數據流的功能被禁用,因此需要使用上述命令啟用它。另外,你可能猜到了,默認不會在任何接口上啟用IPv6,因此必須進入每個接口并啟用這項功能。
為此,可使用多種方式,但最簡單的方式是,使用命令1pv6 address
下面是一個例子:
- Corp(config-if)#ipv6 address 2001 :db8: 3c4d:1:0260:d6FF .FE73:1987/64
可指定一個完整的128位IPv6全局地址(就像前面的例子那樣),也可使用eui-64 選項。eui-64格式允許設備對其MAC地址進行轉換,以生成接口ID,如下所示:
- Corp(config-if)#ipv6 address 2001:db8:3c4d:1::/64 eui-64
為在路由器接口上啟用IPv6,也可不輸人IPv6地址,而讓其自動使用鏈路本地地址。
注意:如果只有鏈路本地地址,則只能在本地子網中通信。
要配置路由器接口,使其只使用鏈路本地地址,可使用接口配置命令ipv6 enable:
- Corp(config-if)#ipv6 enable
下面配置DHCPv6服務器,以探討有狀態自動配置。
DHCPv6
DHCPv6的工作原理與DHCPv4極其相似,但有一個明顯 的差別,那就是支持IPv6新增的編址方案。DHCP提供了一些自動配置沒有的選項,這可能令你感到驚訝。在自動配置中,根本沒有涉及DNS服務器、域名以及DHCP提供的眾多其他選項。這是在大多數IPv6網絡中使用DHCP的重要原因。
在IPv4網絡中,客戶端啟動時將發送一條DHCP發現消息,以查找可給它提供所需信息的服務器。但在IPv6中,首先發生的是RS和RA過程。如果網絡中有DHCPv6服務器,返回給客戶端的RA將指出DHCP是否可用。如果沒有找到路由器,客戶端將發送一條DHCP請求消息,這是一條組播消息,其目標地址為f02:1:2,表示所有DHCP代理,包括服務器和中繼。
IOS提供了一定的DHCPv6支持,但僅限于無狀態DHCP服務器,這意味著它沒有提供地址池管理功能,且可配置的選項僅限于DNS、域名、默認網關和SIP服務器。
這意味著必要時需要提供其他服務器,以提供所有必要的信息并管理地址分配。
ICMPv6
IPv4使用ICMP做很多事情,諸如目的地不可達等錯誤消息以及ping和traceroute等診斷功能。
ICMPv6也提供了這些功能,但不同的是,它不是獨立的第3層協議。ICMPv6是IPv6不可分割的部分,其信息包含在基本IPv6報頭后面的擴展報頭中。ICMPv6新增了一項功能:默認情況下,可通過ICMPv6過程“路徑MTU發現”來避免IPv6對分組進行分段。
路徑MTU發現過程的工作原理如下:源節點發送一個分組,其長度為本地鏈路的MTU。在該分組前往目的地的過程中,如果鏈路的MTU小于該分組的長度,中間路由器就會向源節點發送消息“分組太大”。這條消息向源節點指出了當前鏈路支持的最大分組長度,并要求源節點發送可穿越該鏈路的小分組。這個過程不斷持續下去,直到到達目的地,此時源節點便知道了該傳輸路徑的MTU。接下來,傳輸其他數據分組時,源節點將確保分組不會被分段。
ICMPv6接管了發現本地鏈路上其他設備的地址的任務;在IPv4中,這項任務由地址解析協議負責,但ICMPv6將這種協議重命名為鄰居發現。這個過程是使用被稱為請求節點地址( solicited nodeaddress )的組播地址完成的,每臺主機連接到網絡時都會加入這個組播組。為生成請求節點地址,在FF02:0:0:0:0:1:FF/104末尾加上目標主機的IPv6地址的最后24位。查詢請求節點地址時,相應的主機將返回其第2層地址。網絡設備也以類似的方式發現和跟蹤相鄰設備。前面介紹RA和RS消息時說過,它們使用組播來請求和發送地址信息,這也是ICMPv6的鄰居發現功能。
在IPv4中,主機使用IGMP協議來告訴本地路由器,它要加入特定的組播組并接收發送給該組播組的數據流。這種IGMP功能已被ICMPv6 取代,并被重命名為組播偵聽者發現( multicast listenerdiscovery )。