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