天天看點

IPv6技術解析

IPv6簡介

IPv6早期被稱為IPng (next generation)目前是IP協定的最新版本。 IP協定是一種網絡層協定,采用IP協定建構的資料通信網絡可提供高效的資料、語音和圖像的傳輸服務。目前,在Internet上廣泛采用的IP協定是IPv4版。随着Internet的迅猛發展,在充分享用了IPv4協定的簡單高效的同時,人們也就意識到了IPv4的32位位址空間是不夠的,是以必須建立新的IP标準。

IPv6最根本的改變是提供了未來對全球範圍内可确定的位址空間的需求。基于移動裝置的應用,如:個人數字裝置(PDAs), 行動電話,汽車, 家庭網絡和其他的移動資料通信裝置都需要全球範圍内可确定的位址。IPv6将網絡位址位數從32位擴充到128位, 這代表着可以為地球上的任何需要聯網的裝置提供唯一确定的位址。正是因為有了全球範圍内可确定的位址,IPv6提供了全球範圍内的位址可達,端到端的安全通信,以及對所有對位址有要求的應用和服務的支援。 除此之外,豐富的IPv6位址空間消除了網絡中的NAT(Network Address Translation)瓶頸,提高了網絡效率。

IPv6編址

由于 IPv6 的位址有128位長,比32位的IPv4位址表示起來複雜的多。目前,IPv6的位址由一串16進制的數字表示,每16位之間用分号(:)隔開,格式如下: x:x:x:x:x:x:x:x. 下面是兩個 IPv6位址例子: 2001:0DB8:7654:3210:FEDC:BA98:7654:3210 1080:0:0:0:8:800:200C:417A 通常情況下 IPv6位址會包含連續的0。為避免IPv6位址表示的複雜性,連續的0可縮寫為兩個冒号表示(::)。 Table1 lists IPv6位址的縮寫格式。 兩個冒号可以用在IPv6位址的一部分。你可以在一個接口上配置多個位址,但隻能一個link-local 位址。 注意兩個冒号(::) 隻能在IPv6位址中出現一次,隻能代表最長的連續的0。 IPv6位址中的十六進制數的表示是大小寫不敏感的。

IPv6 Address Type Preferred Format Compressed Format

Unicast 1080:0:0:0:8:800:200C:417A 1080::8:800:200C:417A

Multicast FF01:0:0:0:0:0:0:101 FF01::101

Loopback 0:0:0:0:0:0:0:1 ::1

Unspecified 0:0:0:0:0:0:0:0 ::

Table中所列的loopback 位址可以是一個網絡節點送一個IPv6的資料包給自己。這個loopback 位址功能與IPv4的loopback位址 (127.0.0.1)一樣。注意IPv6的loopback 位址不能配置在實體接口。一個不管是原位址還是目的位址是IPv6 loopback 位址的資料包必須停留在産生他的網絡節點内,不能出現在網絡鍊路上。IPv6 路由器不能轉發代有IPv6 loopback 位址的資料包,不管是原位址還是目的位址。

在Table 中的未定義的位址是不存在的IPv6位址.例如,一個剛剛進入網絡的,正在初始化的節點可以用未定義的IPv6位址作為源位址,直到獲得真正的 IPv6 位址為止. 注意未定義的 IPv6位址不可以用作接口位址。未定義的IPv6位址不能用作在IPv6資料包的目的位址或出現在IPv6 資料標頭的路由資訊内。

一個用 ipv6-prefix/prefix-length 的格式的IPv6位址字首可表示一個連續的位址空間。其中,ipv6-prefix 部分必須是在RFC2373正式定義的以分号隔開的連續16進制數。字首的長度是一個十進制的數值,他表示前多少位是網絡 位址的字首(網絡标示)。 例如, 1080:6809:8086:6502::/64 是一個合法的IPv6字首。

單點傳播 Unicast 位址

一個IPv6 單點傳播位址是用來标示一個網絡節點的一個接口。一個資料包的目的位址是一個單點傳播位址時,他将被送到以這個位址标示的網絡接口。

一個IPv6的路由器應支援下列單點傳播位址類型:

Global aggregatable address:可彙聚的全球化位址

Site-local address:區域内的位址

Unique Local 以FD00::/8開頭

Link-local address: 鍊路接口位址

IPv4-compatible IPv6 address: 相容IPv4的位址

注意Site-local address 是在RFC 3513中定義的,相當于私網位址,不過在RFC 3879 中取消了這個概念,取而代之的是Unique Local Unicast Address,即唯一本地單點傳播位址,雖然隻能在一個私有的管理域内使用但是位址仍然是全球唯一的。

可彙聚的全球位址

一個可彙聚的全球位址是一個帶有全球化的可彙聚的 IPv6字首的位址。這種結構化的全球化的單點傳播位址可以進行嚴格的路由字首的彙聚,這樣就可以大大減少整個路由表的路由條數,減少路由的複雜度。 可彙聚的全球 位址用來标示鍊路位址,可以進行多級的路由彙聚,一直到頂級的 Internet服務提供商(ISPs).全球化的可彙聚的 IPv6位址被定義為全球化的路由字首, 子網絡号,和接口位址。除了以二進制000開始的位址, 所有的全球化的IPv6單點傳播位址都帶有64位的接口位址。目前,全球化的單點傳播位址的配置設定範圍從以二進制的001 (2000::/3)開始。

全球化的可彙聚位址的格式

帶有字首從 2000::/3 (001) 到E000::/3 (111)的位址需要帶有從(EUI)-64格式的64位接口位址。IANA (Internet Assigned Numbers Authority)将 2000::/16 IPv6 位址空間下發到各個區域的位址注冊機構分發,如APNIC等。在通常情況下,全球化的可彙聚的 IPv6位址包含一個48位的全球路由字首和16位的子網絡号或稱為區域級的可彙聚字首(Site-Level Aggregator-- SLA)。在IPv6的全球化的可彙聚單點傳播位址格式檔案(RFC 2374)中指出, 全球化的路由字首包括兩層的階層化結構:頂層彙聚(Top-Level Aggregator--TLA) 和第二層彙聚(Next-Level Aggregator -- NLA)。

現在,IETF決定從RFCs把TLS 和 NLA的區域規定删除,這樣可以使路由彙聚有更多的靈活性。在一些已經采用了RFC 2374中的彙聚方式的網絡可繼續沿用原有的方式。一個16位的子網絡标示被稱作子網号,他可以被不同的組織機構用來區分自己内部的位址配置設定。一個子網号與IPv4的子網非常類似, 知識他可以有多達65535個子網。 一個接口位址用來标示鍊路的接口。接口位址在一個鍊路上必須是唯一的 ,他們可以是64位接口位址中的任何一個,隻要確定是唯一的。在多數情況下,接口位址可以是從鍊路層的位址中衍生而來。在全球化的可彙聚的IPv6位址中,接口位址必須是64位長,并且采用修改的EUI-64 的格式。

修改的 EUI-64 的格式的接口位址可從下列的産生方法之一産生: 所有的IEEE 802的接口類型(如:以太網,FDDI等), 前三個八進制數(24bits)從MAC 位址中的OUI (Organizationally Unique Identifier)複制;第四和第五個八進制數為FFFE, 最後的三個八進制數(24bits)複制MAC位址中的後24位。最後,在構成的 64位接口位址的第一個八進制數的第七位(U/L) bit表示該接口位址是本地化的還是本地的:0 表示本地位址,1 表示全球唯一的接口位址。對其他的接口類型(如:串行接口, loopback, ATM, Frame Relay, 和tunnel接口—除IPv6 overlay tunnel的接口), 接口位址的構成采用IEEE 802 接口類型相似的方法:MAC位址來自于裝置的MAC位址池中的第一個MAC 位址。

當接口類型是IPv6 overlay tunnels時, 接口位址是低32位的IPv4 位址加上高位的全0。 注意當接口類型是 PPP時, 兩端的不同接口可能具有相同的MAC位址;這時,兩端裝置需要重新協商,重新選擇接口位址,直到他們是唯一的。網絡裝置的第一個MAC位址用來建構PPP接口位址。 當網絡裝置不具有 IEEE802類型接口, link-local 的IPv6位址按以下方式産生:

1.路由器請求 MAC位址 (從路由器本身的MAC位址池)。

2.如果沒有MAC位址可用, 路由器的序列号可用做link-local 位址。

3.如果序列号不可用,路由器将采用MD5算法結合自己的名字建立MAC位址。

Site-Local 位址 (已廢除)

一個site-local位址是一個帶着字首 FEC0::/10和16位子網号加上64位的EUI-64格式的IPv6單點傳播位址。Site-local位址非常像IPv4中的私有位址空間10.0.0.0/8;可以在一個區域内部進行路由的查找,而不需要全球化的唯一的位址字首。Site-local位址可以被認為是私有位址,因為他隻能在一個嚴格限制的區域内使用。IPv6路由器不可以将帶有site-local的源位址或目的位址的資料包轉發到區域之外。

Link-Local 位址

一個link-local位址是一個帶有link-local字首FE80::/10(1111 1110 10)的IPv6單點傳播位址,他采用修改的EUI-64位址格式自動産生。Link-local位址可用于鄰居發現協定(neighbor discovery protocol)和無狀态自動配置程序。在同一個鍊路上的節點可使用link-local位址來通信;不需要site-local位址或全球化的單點傳播位址。IPv6路由器不能将帶有link-local的源位址或目的位址的資料包轉發到其他網絡或鍊路。

IPv4相容的IPv6位址

一個 IPv4相容的IPv6位址是一個高96位全0的,低32位為IPv4位址的IPv6單點傳播位址。這種IPv4相容的IPv6位址可表示為0:0:0:0:0:0:A.B.C.D或::A.B.C.D. 整個128位的IPv4相容的IPv6位址是将網絡節點的IPv4位址直接植入IPv6位址的低32位。IPv4相容的IPv6位址用來在運作IPv4和IPv6 雙棧時使用自動的隧道技術(tunnels)。

Anycast 位址

一個 anycast位址是一個屬于多個網絡節點的接口的IPv6的位址。一個以anycast位址為目的位址的資料包将被轉發到最近的網絡接口;接口的遠近由路由的計算結果來确定。Anycast位址從位址的結構上來說同單點傳播位址是不可分的,因為anycast位址存在于單點傳播位址的位址空間。但一個單點傳播位址可以被超過一個網絡接口接收時,他就是一個anycast位址。Anycast位址需要在網絡節點上明确定義:這個位址是一個anycast位址。 注意Anycast位址隻能被路由器使用,不能被主機使用。Anycast 位址不可以出現在IPv6資料包的源位址。 下圖表示了 anycast 位址的構成;Anycast位址是由一個字首跟上一連串的0(接口位址)來構成。

Multicast多點傳播位址

一個字首 FF00::/8(1111 1111)的IPv6 位址就代表它是一個IPv6 多點傳播位址。一個資料包的目的位址為多點傳播位址時,他将被複制轉發到多個網絡的接收者。多點傳播位址字首的第二個八進制數代表多點傳播位址的範圍。這個八進制數被分為兩部分:前四位為0000代表是一個永久性的多點傳播位址,前四位為0001代表是暫時的多點傳播 位址;後四位代表多點傳播範圍,目前定義了1, 2, 5, 8, or E,分别代表不同的多點傳播範圍。如下圖所示。比如:多點傳播位址的字首為FF02::/16代表是一個永久性的多點傳播位址,在鍊路範圍。

IPv6 多點傳播位址格式IPv6的裝置(主機和路由器)必須加入下列多點傳播組(必須接收的相應的多點傳播資料包):

All-nodes 所有節點的多點傳播組

FF02:0:0:0:0:0:0:1 (link-local範圍)

Solicited-node節點請求多點傳播組

FF02:0:0:0:0:1:FF00:0000/104 用來對應單點傳播位址和anycast位址

IPv6 路由器必須加入所有路由器多點傳播組 FF02:0:0:0:0:0:0:2 (link-local範圍). 節點請求的多點傳播組位址( solicited-node)是用來确定IPv6的單點傳播位址或 anycast位址的. IPv6節點裝置必須加入為位址和anycast位址對應的多點傳播組。 當網絡節點的IPv6單點傳播或anycast位址的低24位再加上IPv6節點請求多點傳播位址字首FF02:0:0:0:0:1:FF00:0000/104就構成了這個節點的節點請求多點傳播位址。 如下圖。比如:當一個節點的IPv6位址為2037::01:800:200E:8C6C時,他的節點請求多點傳播位址是FF02::1:FF0E:8C6C。節點請求位址用來接收鄰居節點的請求資訊。

IPv6封包格式

IPv6標頭經過改進,效率大為提高。 新的格式引入了擴充標頭的概念,使支援可選項功能的靈活性有所增強。 IPv6標頭中的字段包括:

Version(版本):4位網際網路協定(Internet Protocol)版本号,值=6。

Traffic Class(業務負載類别):8位業務負載類别字段,類似于IPv4的服務類型。

Flow Label(流标号):20位流标号,用于确定服務品質方面附加控制的業務流。

Payload Length(有效負載長度):16位無符号整數,IPv6有效負載的長度。

Next Header(下一標頭):8位選擇器,用于識别緊随IPv6標頭之後的標頭類型。

Hop Limit(跳轉限度):8位無符号整數,根據轉發資料包的每個節點按1遞減。 如果Hop Limit 減 至零,則資料包被丢棄。

Source Address(源位址):資料包始發方的128位位址。

Destination Address(目标位址):資料包預期接收方的128位位址。

IPv6擴充標頭

擴充標頭在IPv6中為可選項。如果存在,擴充標頭則緊随標頭字段。IPv6擴充標頭具有以下特性: 它們按64位排列,其系統開銷遠遠低于IPv4選項。 不像IPv4那樣有大小限制。唯一的限制就是IPv6資料包的大小。 它們僅由目的節點處理。唯一的例外就是Hop-by- Hop(逐段跳轉)標頭選項。 基本IPv6標頭的Next Header(下一標頭)字段識别擴充標頭。

當同一IPv6資料包記憶體在多個擴充標頭時,其發生順序如下: 逐跳(Hop-by-Hop)標頭攜帶需由發送路徑上的所有節點檢驗的資訊。當逐跳選項存在時,則其始終緊 随基本IPv6標頭之後。 目的(Destination)標頭攜帶僅能由目的節點檢驗的附加資訊。 選路(Routing)標頭由源節點使用,以列出資料包通過路徑到達其目的地所需的所有節點。 分段(Fragmentation)標頭由源節點使用,以表明資料包已經被分為片段,适合在最大傳輸單元(MTU 大小)内使用。與IP4不同的是,在IPv6内,資料包分段與組裝是通過端節點完成,而非通過路由器 完成,這進一步提高了IPv6網絡的效率。 認證標頭(AH)與封裝安全有效負載(ESP)標頭用于IPSec中,以提供安全服務,確定資料包的認證、 完整性和保密性。

IPv6操作

相鄰節點發現

相鄰節點發現協定使IPv6節點和路由器能夠判定相同網絡上相鄰節點的鍊路層位址,并發現和跟蹤相鄰的路由器。IPv6相鄰節點發現方法使用IPv6 ICMP (ICMPv6)消息與被請求的節點多點傳播位址判定相同網絡上 相鄰節點的鍊路層位址,驗證相鄰節點的可到達性,并跟蹤相鄰的路由器。

當一個節點要判定相同本地鍊路上另一節點的鍊路層位址時,一個相鄰節點的請求消息攜帶着發送者自身的鍊路層位址,在本地鍊路上被發送出去。目的節點在收到相鄰節點的請求消息後,将在本地鍊路上使用其自 身的鍊路層位址發送一個相鄰節點通告消息,以此來回複請求。在收到相鄰節點的通告之後,源節點與目的 節點便可進行通信。相鄰節點的通告消息也可在本地鍊路上一個節點的鍊路層位址發生改變時發出。

路由器發現

IPv6路由器發現法使用路由器通告和請求消息發現本地鍊路上的路由器。路由器通告消息在IPv6路由器 的每個配置接口上定期發出,并回應來自鍊路上IPv6節點的路由器請求消息。當主機沒有配置好的單點傳播位址時,便發送一個路由器請求消息,使主機能夠迅速自行自動配置,而不必等待下一個列入計劃的路由器通告消息路由器通告包含或決定: 節點應該使用何種類型的自動配置——是無狀态的還是有狀态的。節點應該放入IPv6標頭的跳轉(Hop)限度值。節點應該用來形成單點傳播位址的網絡字首。所包含網絡字首的壽命資訊。節點在發送資料包中應該使用的最大傳輸單元(MTU)大小。 發端路由器是否應該用作預設路由器。 無狀态的自動配置與IPv6節點的重新編号。

無狀态的自動配置使IPv6節點能夠完成不用伺服器的基本配置,并友善地進行重新編号。無狀态的自動配置使用路由器通告消息中的網絡字首資訊作為節點位址字首的/64。餘下的64位位址由配置設定給結合EUI-64格式附加位的以太網接口的MAC位址獲得。例如,帶有以太網接口位址0003B61A2061的一個節點,結合由路由器通告提供的網絡字首2001:0001:1EEF:0000/64,将具有一個如2001:0001:1EEF:0000:0003:B6FF:FE1A:2061這樣的IPv6位址。

IPv6節點通過包含新、舊字首的路由器通告消息,即有可能進行重新編号。舊字首的壽命值減少,在仍以 舊字首保持其連接配接完好的同時,即提醒節點使用新字首。在此期間,節點有兩個單點傳播位址在同時使用。當 舊字首不再使用時,路由器通告将隻包含新字首。

路徑發現MTU IPv6路由器不處理資料包的分段。在需要時,資料包分段由資料包的發端節點或源節點處理。IPv6使用ICMP錯誤報告來判定傳輸路徑上的資料包大小是否與MTU大小相比對。當一個節點通過ICMP錯誤報 告報告“資料包過大”時,源節點将縮小傳輸資料包的大小。該過程反複進行,直至傳輸路徑上沒有“資料 包過大”錯誤為止。這使節點能夠動态發現特定資料路徑上每個鍊路MTU大小之間的差異,并做出調整。

DHCPv6和DNSv6 IPv6除了支援無狀态的自動配置以外,還通過DHCPv6支援有狀态的配置。IPv6節點具有一個在路由器 未被發現時通過DHCP伺服器請求位址的選項。DHCPv6的操作與DHCPv4大體類似,但是,DHCPv6 為其多數消息使用多點傳播。IPv6還引進了新的記錄類型,以滿足域名伺服器中IPv6位址的需要。AAAA記錄,又稱“四A”,已由IETF推薦,用于将主機名映射到IPv6位址。

IPv6擴充

一般本地鍊路位址不需要配置,IPv6路由器接口會自動配置(前提是有一個本地站點位址或者全球單點傳播可聚合位址),本地站點位址相當于私網位址,不能在全球路由表存在,而全球單點傳播可聚合位址可以在全球範圍内進行通告。

2000::/3 單點傳播可聚合位址   FEC0::/10 本地站點位址  FE80::/10 本地鍊路位址

自動通告字首(比如2020::/64)是IPv6的一個基本特性,一般末節主機均采用這種自動配置的方式,前提就是存在能将字首通告出來的路由器。

在獲得或者配置/64的單點傳播位址字首後,後64位會根據EUI-64格式來自動構造,這是RFC 2462中定義的節點自行配置IPv6位址的機制。EUI-64是利用接口的Mac位址,格式為:Mac前24位 + FFFE + Mac位址後24位。而對于點到點鍊路或者環回口這樣不存在Mac位址的接口,也是用同樣格式,隻不過Mac位址是借用本裝置Mac位址池中的第一個位址,這樣在一台路由器上可能會出現多個接口相同鍊路本地位址的情況。

實作IPv6的autoconfig是通過ICMPv6協定,該協定實作IPv6鄰居的自動發現,無狀态自動配置,代替ARP,即在IPv6主機之間的通信已經不需要ARP,而使用ICMPv6來發現鄰居的鍊路層位址。

ICMPv6采用協定類型135(請求),136(應答)的消息來獲得鄰居位址,IPv6隻在廣播型鍊路上才會有對應鄰居表項。

IPv6靜态路由

1.配置下一跳為單點傳播位址(本地站點或者全球可聚合位址),該方式不被RFC所推薦,因為會導緻ICMPv6重定向失敗。

ip route 2020:2::/64 2020:10::2

2.配置下一跳為本地鍊路位址,需指定本地接口(之是以要指定接口,是因為本地鍊路位址隻在鍊路本地有效,所有接口的鍊路位址字首均為FE80::10,如果不指定對應接口,無法确定從哪個接口轉發出去)

ip route 2020:2::/64 s1/0 FE80::A8BB:CCFF:FE00:FC00 (僅指定接口也行)

注意:在NBMA鍊路上配置靜态路由,一定要指定一下跳的本地鍊路位址,這樣路由器在封裝時才知道對應的PVC出口,否則會導緻封裝失敗。

3.配置預設路由,相當于IPv4中的8個0

ip route ::/0 next-hop

RIPng協定

RIPng是RIPv2的下一代協定,其功能大都相同,主要差別是RIPng支援IPv6,AD值和RIP相同,并且依然以跳數為路徑成本。

RIPng基于UDP 521端口運作,使用多點傳播位址 FF02::9 來通告路由。RIPng 中的 Garbage collect 計時器相當于RIPv2中的Flush 重新整理計時器。

如果手動關閉正在運作RIPng的路由器接口,在接口真正關閉之前會觸發一個即時更新通告,所有RIPng路由器會立即删除對應的路由。

RIPng的路由條目在180s之後逾時即從路由表中删除,但是仍會在RIP database中儲存120s(在此期間仍向外通告該條目為16hop不可達)RIPng預設沒有holddown時間。

RIPng形成的路由條目仍以R表示,下一跳均為本地鍊路位址,因為RIPng使用本地鍊路位址作為通告源,即使在本接口配置了單點傳播位址也是如此。

在traceout過程中,IPv6路由器優先使用接收接口的單點傳播位址(單點傳播可聚合 或者 本地站點)應答。如果該接口沒有就用其他接口的單點傳播位址,隻有一台路由器上一個單點傳播位址都沒有,才會采用本地鍊路位址來應答。

IS-ISv6

IS-IS同EIGRP相同以TLV為擴充手段,可以對不認識的TLV做忽略處理,是以更新支援IPv6非常容易。

在IS-IS鄰接的路由器上,如果一邊同時啟用IPv4和IPv6,而另一邊隻啟用了一種,會導緻鄰居丢失。這是IS-IS非常重要的特點,可以用指令(router)# no adjacency-check 來忽略對IPv4位址的檢查。

該指令鍊路兩端都要配,如果要忽略支援IPv6的鄰接關系的檢查,要在IPv6子模式下進行:

(router)# address-family ipv6

(router-af)# no adjacency-check

事實上在IPv6網絡中運作IPv6協定,和IPv6相關的路由協定操作(重釋出,産生預設路由,調整進行參數等)均需在IPv6子指令模式中進行。因為IPv4/6的IS-IS在單個SPF程序下進行,而RIPng和OSPFv3則是啟用的新程序。

OSPFv3

在Cisco路由器上配置OSPFv3非常類似于v2,配置上有兩點主要改變:

1.不使用network指令,在OSPFv3中是在接口下用 ipv6 ospf 100 area 1 這樣的指令将對應接口放在Area 1中運作

2.啟用OSPFv3并不是使用指令 router ospf(這和IS-IS和BGP不同),而是使用指令 ipv6 router ospf process-id

在OSPFv3中的router-id格式和v2是一樣的,如果在路由器中沒有配置IPv4位址,那麼OSPFv3程序就無法自動指定,需要手動來完成。

在OSPFv3中LSA 1,2,3類型基本和v2一樣,類型8和9得到應用:

類型8:僅在本地鍊路泛洪,通知對象為本地鍊路上的鄰居,内容為本地鍊路位址 FE80::/10 位址的清單,使用 show ipv6 ospf database link 來檢視具體内容。

類型9:OSPFv3路由器為區域内的每一台路由器産生LSA,包含區域内的全部網絡字首,以及指出這些字首對應通告的LSA1 和 LSA2。使用指令 show ipv6 ospf database prefix internal 檢視。

OSPFv3的選路原則和v2沒有差別

OSPFv3通告環回口網絡使用/128主機路由,同樣的可以通過指令 ipv6 ospf  network point-to-point 來消除。

ipv6 enable 用于啟用接口的IPv6轉發功能,配置一個IPv6單點傳播位址效果也是這樣。

BGP4+

BGP4+即MBGP,支援多種協定,包括IPv4和IPv6,而所謂的雙棧網絡就是同時支援IPv4和v6。BGP對等體可以使用IPv4 或IPv6 建立鄰居,在鄰居建立後預設隻運載IPv4的BGP路由表,若要支援IPv6協定族,必須在IPv6子模式下激活對應鄰居的路由資訊交換。

如果在一個純IPv6的網絡中配置BGP對等體,需要注意的問題是:

1.需要手動指定BGP router-id,格式等同于IPv4位址,這個很重要,否則會無法建立鄰居。

2.neighbor的位址可以是IPv6單點傳播位址或者本地鍊路位址。

3.如果用本地鍊路位址指定neighbor,需配置更新源接口,因為路由器僅憑本地鍊路位址無法關聯實體接口。重複一點,一個本地鍊路位址與單條鍊路密不可分。

4.如果用本地鍊路位址指定neighbor,需設定Route-map來改變通告的下一跳位址,否則BGP路由表裡對應字首的下一跳位址為本地鍊路位址,對BGP路由條目而言不包含接口,會産生歧義。

5.如果用本地鍊路位址指定neighbor,而且路由器所有接口的本地鍊路位址又一緻,會導緻對等體無法建立(軟體問題),通過show ipv6 interface brief 确認本路由器所有接口的本地鍊路位址是否相同,若相同需通過指令  ipv6 address xxx link-local 手動更改使其不同。

在純IPv6的網絡中,通過本地鍊路位址指定鄰居,即使鄰居已經形成,路由器也不會收到任何BGP路由資訊,因為預設的Next-hop是(::),這樣對等體會拒絕接收對應的Updates,在這種情況下,必須手動指定BGP通告的下一跳位址,具體動作為在接口添加全球單點傳播位址,再應用Route-Map,修改NEXT_HOP屬性。

如果是用單點傳播位址建立的對等提關系,就不必那麼麻煩,向對方通告的路由資訊NEXT_HOP屬性會自動為對應接口的單點傳播位址。

當兩個IPv6網絡之間的通信經過IPv4網絡,需要在v4網絡中建立Tunnel隧道,隧道的接口ipv6 enable,然後有IPv6接口的路由器運作OSPFv3協定,實作互通。

通過Traceroute可以發現,在資料包經過Tunnel的時候,路由器如果沒有可用的單點傳播位址進行應答,會用本地鍊路位址作為源位址進行應答,但該應答隻能在本地鍊路有效,無法傳遞。

另一種方法是 6to4 隧道,該隧道的特點是:

1.自動隧道。

2.在站點邊緣啟用,6to4的路由器通過IPv4基礎設施到達對方。

3.自動字首配置設定,所有字首均使用2002::/16,IPv4的位址轉換為16進制附在2002::/16後面,最終表現形式為2002:ipv4-add::/48

4.沒有IPv6路由傳播,每個字首都是基于IPv4位址,是以IPv4的路由域已經足夠使用。

當有多條 6to4 隧道時會選擇最近的一條,IANA為此配置設定了 6to4 中繼任播字首為192.88.99.0/24,專門用于自動路由6to4資料包到最近的6to4中繼。理論上任何一個單點傳播位址都可以作為任播位址。

自動IPv4相容隧道是一種在IPv4網絡中傳送IPv6資料包的技術,允許在IPv4網絡中的2台IPv6主機自動啟用隧道。源和目的IPv6位址的低32bit位址辨別對應隧道的IPv4位址。

盡管這種技術看起來可以簡便的使2台主機之間使用IPv6來通訊,但是它仍基于IPv4,所有相容IPv4的IPv6位址字首均為::/96,是以這種技術無法解決IPv4位址空間短缺的問題。在6to4和ISATAP等過渡和共存機制推出後,自動IPv4相容隧道機制就廢棄了。

NAT-PT在RFC2766中定義,可以把IPv6位址轉換為IPv4,反之亦然。NAT-PT僅用于IPv6單協定和IPv4單協定網絡節點之間的通信時使用,即某些新的網絡節點隻能申請到單點傳播的IPv6位址(對某些小國家而言申請全球單點傳播IPv4位址是一個漫長的過程),而一寫舊的網絡節點可能根本就不支援IPv6協定,這些新舊節點之間的通信,就必須使用IPv4和IPv6之間的位址轉換機制。

NAT-PT操作定義的字首是3ffe:b00:ffff::1:0:0/96,由于是公認可用的字首,這樣友善ISP表示出IPv4和IPv6的交界點,其實理論上可以用任何字首位址用于NAT-PT。IPv6網絡将使用該字首位址的資料包路由到NAT-PT裝置,然後資料包中的IPv6位址轉換成IPv4位址。

NAT-PT路由器是IPv4網絡和IPv6網絡的分界點,實作互通有兩個步驟:

1.将IPv6位址轉換為IPv4位址,這個IPv6位址需可達,即安裝在各個IPv4路由器的路由表裡。

2.将IPv4位址轉換為IPv6位址,這個IPv6位址需可達,即安裝在各個IPv6路由器的路由表裡

具體實施的過程:

1.在NAt-PT路由器上配置IPv6 NAT所使用的字首,完成該配置後,路由器上會自動生成相應的直連路由,這個條目需要通過路由協定通告給整個IPv6網絡。

 (config)# ipv6 nat prefix 3FFE:B00:FFFF::1:0:0/96

 (config)# ipv6 router ospf 10

 (config-rtf)# redistribute connected

2.在NAT-PT路由器上将連接配接IPv4和v6網絡的接口均啟用IPv6 NAT,并指定位址轉換

 (config)# ipv6 nat v6v4 source 2001::4 13.1.1.10

 (config)# ipv6 nat v4v6 source 5.5.5.5 3ffe:b00:ffff::1:0505:0505

舉例來說,IPv4網絡中的路由器以35.1.1.5通路IPv6網絡,源位址在R4上檢視的時候,可以發現已經自動轉換為3FFE:B00:FFFF::1:2301:105,即最後的32位對應十進制就是35.1.1.5。

注意:從IPv4轉換為IPv6,如果沒有靜态轉換條目,那麼自動會根據指定字首生成一個IPv6位址,但是從IPv6轉換為IPv4位址,則必須手動配置靜态轉換條目,或者采用NAT-PT動态模式,即每次發起IPv4的會話時,自動配置設定一個位址,這種轉換受限于IPv4的位址數量。

動态映射的配置:

1.定義允許被轉換的IPv6位址範圍

 (config)# ipv6 access-list ipv6-2001 permit 2001::/16 any

2.定義可用的IPv4位址池

 (config)# ipv6 nat v6v4 pool to-ipv4 13.1.1.10 13.1.1.20 prefix-length 24

3.配置映射

 (config)# ipv6 nat v6v4 source list ipv6-2001 to-ipv4

動态條目預設的逾時時間是1天時間(86400 s),可以用 ipv6 nat translation timeout 指令來修改這個全局參數。

繼續閱讀