一、IPv6基礎介紹
1、IPv6是Internet工程任務組(IETF)設計的一套規范,它是網絡層協議的第二代標准協議,也是IPv4(Internet Protocol Version 4)的升級版本。
2、IPv6與IPv4的最顯著區別:IPv4地址采用32比特標識,而IPv6地址采用128比特標識。128比特的IPv6地址可以划分更多地址層級、擁有更廣闊的地址分配空間,並支持地址自動配置;近乎無限的地址空間是IPv6的最大優勢。
3、IPv6基本報頭:

(1)IPv6報文由IPv6基本報頭、IPv6擴展報頭以及上層協議數據單元三部分組成。
(2)IPv6的基本報頭在IPv4報頭的基礎上,增加了流標簽域,去除了一些冗余字段,使報文頭的處理更為簡單、高效。
(3)關鍵字段:
Traffic Class:流類別,長度為8bit,它等同於IPv4報頭中的TOS字段,表示IPv6數據報文的類或優先級,主要應用於QoS。 Flow Label:流標簽,長度為20bit,它用於區分實時流量。流可以理解為特定應用或進程的來自某一源地址發往一個或多個目的地址的連續單播、組播或任播報文。IPv6中的流標簽字段、源地址字段和目的地址字段一起為特定數據流指定了網絡中的轉發路徑。這樣,報文在IP網絡中傳輸時會保持原有的順序,提高了處理效率。隨着三網合一的發展趨勢,IP網絡不僅要求能夠傳輸傳統的數據報文,還需要能夠傳輸語音、視頻等報文。這種情況下,流標簽字段的作用就顯得更加重要。
跳數限制(Hop Limit):長度為8bit,該字段類似於IPv4報頭中的Time to Live字段,它定義了IP數據報文所能經過的最大跳數。每經過一個路由器,該數值減去1;當該字段的值為0時,數據報文將被丟棄。
(4)IPv6為了更好支持各種選項處理,提出了擴展頭的概念。
4、IPv6擴展報頭:

(1) IPv6擴展報頭是跟在IPv6基本報頭后面的可選報頭,可以有一個或多個。
(2) 除了目的選項擴展報頭外,每個擴展報頭在一個報文中最多只能出現一次。目的選項擴展報頭在一個報文中最多也只能出現兩次,一次是在路由擴展報頭之前,另一次是在上層協議擴展報頭之前。
5、IPv6地址格式:

(1)IPv6地址長度為128比特,每16比特划分為一段,每段由4個十六進制數表示,並用冒號隔開——冒分十六進制。
(2)IPv6地址包括網絡前綴和接口標識(接口ID)兩部分。
6、IPv6地址壓縮方式:

(1)每一組中的前導“0”都可以省略。
(2)地址中包含的連續全為0的組,可以用雙冒號“::”來代替。強調:在一個IPv6地址中只能使用一次雙冒號“::”,否則,設備將壓縮后的地址恢復成128位時,無法確定每段中0的個數。
7、IPv6地址分類:分為單播地址、任播地址、組播地址三種類型。

(1)鏈路本地地址:只能在連接到同一本地鏈路的節點之間使用。可以在自動地址分配、鄰居發現和鏈路上沒有路由器的情況下使用鏈路本地地址。以鏈路本地地址為源地址或目的地址的IPv6報文不會被路由器轉發到其他鏈路。鏈路本地地址的前綴是FE80::/10。
(2)組播地址的前綴是FF00::/8。組播地址范圍內的大部分地址都是為特定組播組保留的。跟IPv4一樣,IPv6組播地址還支持路由協議。IPv6中沒有廣播地址。組播地址替代廣播地址可以確保報文只發送給特定的組播組而不是IPv6網絡中的任意終端。 IPv6還包括一些特殊地址,比如未指定地址::/128。如果沒有給一個接口分配IP地址,該接口的地址則為::/128。需要注意的是,不能將未指定地址跟默認IP地址::/0相混淆。默認IP地址::/0跟IPv4中的默認地址0.0.0.0/0類似。環回地址127.0.0.1在IPv6中被定義為保留地址::1/128。
8、IPv6單播地址:主要包含全球單播地址和鏈路本地地址。
(1)全球單播地址(例如2000::/3)帶有固定的地址前綴,即前三位為固定值001。其地址結構是一個三層結構,依次為全球路由前綴、子網標識和接口標識。全球路由前綴由RIR和互聯網服務供應商(ISP)組成,RIR為ISP分配IP地址前綴。子網標識定義了網絡的管理子網。

(2)鏈路本地單播地址的前綴為FE80::/10,表示地址最高10位值為1111111010。前綴后面緊跟的64位是接口標識,這64位已足夠主機接口使用,因而鏈路本地單播地址的剩余54位為0。

9、IPv6組播地址:由前綴、標志(Flag)字段、范圍(Scope)字段以及組播組ID(Group ID)4個部分組成。

(1)所有IPv6組播地址都以FF開始。
(2)IPv6為需要使用組播發送數據的協議預留了一些組播組。
(3)前綴:IPv6組播地址的前綴是FF00::/8(1111 1111)。
(4)標志字段(Flag):長度4bit,目前只使用了最后一個比特(前三位必須置0),當該位值為0時,表示當前的組播地址是由IANA所分配的一個永久分配地址;當該值為1時,表示當前的組播地址是一個臨時組播地址(非永久分配地址)。
(5)范圍字段(Scope):長度4bit,用來限制組播數據流在網絡中發送的范圍。
(6)組播組ID(Group ID):長度112bit,用以標識組播組。目前,RFC2373並沒有將所有的112位都定義成組標識,而是建議僅使用該112位的最低32位作為組播組ID,將剩余的80位都置0,這樣,每個組播組ID都可以映射到一個唯一的以太網組播MAC地址(RFC2464)。
10、IPv6任播地址:
(1)任播地址標識一組網絡接口(通常屬於不同的節點)。目標地址是任播地址的數據包將發送給其中路由意義上最近的一個網絡接口。任播過程涉及一個任播報文發起方和一個或多個響應方。任播報文的發起方通常為請求某一服務(DNS查找)的主機或請求返還特定數據(例如,HTTP網頁信息)的主機。任播地址與單播地址在格式上無任何差異,唯一的區別是一台設備可以給多台具有相同地址的設備發送報文。
11、IPv6無狀態地址自動配置:
(1)無需使用諸如DHCP之類的輔助協議,主機即可獲取IPv6前綴並自動生成接口ID。路由器發現功能是IPv6地址自動配置功能的基礎,
(2)主要通過以下兩種報文實現:
RA報文:每台路由器為了讓二層網絡上的主機和其它路由器知道自己的存在,定期以組播方式發送攜帶網絡配置參數的RA報文。RA報文的Type字段值為134。
RS報文:主機接入網絡后可以主動發送RS報文。RA報文是由路由器定期發送的,但是如果主機希望能夠盡快收到RA報文,它可以立刻主動發送RS報文給路由器。網絡上的路由器收到該RS報文后會立即向相應的主機單播回應RA報文,告知主機該網段的默認路由器和相關配置參數。RS報文的Type字段值為133。

網絡節點向相連的路由器發送RS,請求地址前綴信息。 路由器通過發送路由器通告RA,回復地址前綴信息。
12、EUI-64規范——采用擴展唯一標識符(EUI-64)格式生成接口ID:

(1)就實用性而言,EUI-64格式是IPv6生成接口ID的最常用方式。IEEE EUI-64標准采用接口的MAC地址生成IPv6接口ID。MAC地址只有48位,而接口ID卻要求64位。MAC地址的前24位代表廠商ID,后24位代表制造商分配的唯一擴展標識。
(2)MAC地址的第七高位是一個U/L位,值為0時表示MAC地址全局唯一,值為1時表示MAC地址本地唯一。
(3)在MAC地址向EUI-64格式的轉換過程:在MAC地址的前24位和后24位之間插入了16比特的FFFE,並將U/L位的值從0變成了1,這樣就生成了一個64比特的接口ID,且接口ID的值全局唯一。接口ID和接口前綴一起組成接口地址。
13、IPv6無狀態地址DAD檢查:

(1)當為接口配置IPv6地址時,DAD用來在本地鏈路范圍內檢測將要使用的IPv6地址是否唯一。
(2)設備在給接口分配IPv6單播地址之前會進行重復地址檢測(DAD),確認是否有其它的節點使用了該地址。尤其是在地址自動配置的時候,進行DAD檢測是很必要的。
(3)一個IPv6單播地址在分配給一個接口之后且通過重復地址檢測之前稱為試驗地址,此時該接口不能使用這個試驗地址進行單播通信,但是仍然會加入兩個組播組:ALL-nodes組播組和Solicited-node組播組。Solicited-node組播組由單播或任播地址的后24位加上地址前綴FF02:0:0:0:0:1:FF00::/104組成。
(4)IPv6重復地址檢測技術和IPv4中的免費ARP類似:用於地址分配或主機連接網絡時檢測重復的IPv4主機地址。節點向一個自己將使用的試驗地址所在的Solicited-node組播組發送一個以該試驗地址為請求的目標地址的鄰居請求(NS)報文,如果收到某個其它站點回應的鄰居通告(NA)報文,就證明該地址已被網絡上使用,節點將不能使用該試驗地址進行通信。這種情況下,網絡管理員需要手動為該節點分配另外一個地址。
二、IPv6路由基礎
1、OSPFv3協議:是運行在IPv6網絡的OSPF協議。

運行OSPFv3的路由器使用物理接口的鏈路本地單播地址為源地址來發送OSPF報文。相同鏈路上的路由器互相學習與之相連的其它路由器的鏈路本地地址,並在報文轉發的過程中將這些地址當成下一跳信息使用, IPv6中使用組播地址ff02::5來表示AllSPFRouters,而OSPFv2中使用的是組播地址224.0.0.5。
需要注意的是,OSPFv3和OSPFv2版本互不兼容。
2、ff02::5是為OSPFv3路由協議預留的IPv6組播地址。 OSPFv3中的路由條目下一跳地址是鏈路本地地址。
3、DR & BDR的選舉:

(1)Router ID在OSPFv3中必須手動配置。
(2)在NBMA和廣播型網絡中OSPFv3選舉DR和BDR的過程與OSPFv2相似。
(3)IPv6使用組播地址FF02::6表示AllDRouters,而OSPFv2中使用的是組播地址224.0.0.6。
4、OSPFv2是基於網段運行的, OSPFv3的實現是基於鏈路的。
在配置OSPFv3時,不需要考慮路由器的接口是否配置在同一網段,只要路由器的接口連接在同一鏈路上,就可以不配置IPv6全局地址而直接建立聯系。
5、OSPFv3認證:

OSPFv3協議本身不提供認證功能,而是通過使用IPv6提供的安全機制(IPv6的擴展頭部:AH、ESP)來保證OSPFv3報文的合法性。
6、OSPFv3的配置命令總結:
*** ipv6 命令——用來使能路由器的IPv6功能。要在路由器上運行OSPFv3協議,首先必須使能IPv6功能。
*** ospfv3 +進程號 命令——用來創建並運行OSPFv3進程,process-id 取值范圍是1~65535。如果不指定進程號,缺省使用進程號1。
*** router-id X.X.X.X 命令——用來設置運行OSPFv3協議的路由器ID號。
*** ipv6 enable 命令——用來在路由器接口上使能IPv6,使得接口能夠接收和轉發IPv6報文。接口的IPv6功能默認是去使能的。*** ipv6 address +鏈路本地地址 link-local 命令(例如:ipv6 address fe80::1 link-local)——用來手動為接口配置鏈路本地地址。
*** ospfv3 +進程號 area +區域號 命令——用來在接口上使能OSPFv3的進程,並指定所屬區域。
*** display ospfv3 命令——可以驗證OSPFv3配置及相關參數。
歡迎大家關注我的微信公眾號,一起學習進步!
一、IPv6基礎介紹
1、IPv6是Internet工程任務組(IETF)設計的一套規范,它是網絡層協議的第二代標准協議,也是IPv4(Internet Protocol Version 4)的升級版本。
2、IPv6與IPv4的最顯著區別:IPv4地址采用32比特標識,而IPv6地址采用128比特標識。128比特的IPv6地址可以划分更多地址層級、擁有更廣闊的地址分配空間,並支持地址自動配置;近乎無限的地址空間是IPv6的最大優勢。
3、IPv6基本報頭:

(1)IPv6報文由IPv6基本報頭、IPv6擴展報頭以及上層協議數據單元三部分組成。
(2)IPv6的基本報頭在IPv4報頭的基礎上,增加了流標簽域,去除了一些冗余字段,使報文頭的處理更為簡單、高效。
(3)關鍵字段:
Traffic Class:流類別,長度為8bit,它等同於IPv4報頭中的TOS字段,表示IPv6數據報文的類或優先級,主要應用於QoS。 Flow Label:流標簽,長度為20bit,它用於區分實時流量。流可以理解為特定應用或進程的來自某一源地址發往一個或多個目的地址的連續單播、組播或任播報文。IPv6中的流標簽字段、源地址字段和目的地址字段一起為特定數據流指定了網絡中的轉發路徑。這樣,報文在IP網絡中傳輸時會保持原有的順序,提高了處理效率。隨着三網合一的發展趨勢,IP網絡不僅要求能夠傳輸傳統的數據報文,還需要能夠傳輸語音、視頻等報文。這種情況下,流標簽字段的作用就顯得更加重要。
跳數限制(Hop Limit):長度為8bit,該字段類似於IPv4報頭中的Time to Live字段,它定義了IP數據報文所能經過的最大跳數。每經過一個路由器,該數值減去1;當該字段的值為0時,數據報文將被丟棄。
(4)IPv6為了更好支持各種選項處理,提出了擴展頭的概念。
4、IPv6擴展報頭:

(1) IPv6擴展報頭是跟在IPv6基本報頭后面的可選報頭,可以有一個或多個。
(2) 除了目的選項擴展報頭外,每個擴展報頭在一個報文中最多只能出現一次。目的選項擴展報頭在一個報文中最多也只能出現兩次,一次是在路由擴展報頭之前,另一次是在上層協議擴展報頭之前。
5、IPv6地址格式:

(1)IPv6地址長度為128比特,每16比特划分為一段,每段由4個十六進制數表示,並用冒號隔開——冒分十六進制。
(2)IPv6地址包括網絡前綴和接口標識(接口ID)兩部分。
6、IPv6地址壓縮方式:

(1)每一組中的前導“0”都可以省略。
(2)地址中包含的連續全為0的組,可以用雙冒號“::”來代替。強調:在一個IPv6地址中只能使用一次雙冒號“::”,否則,設備將壓縮后的地址恢復成128位時,無法確定每段中0的個數。
7、IPv6地址分類:分為單播地址、任播地址、組播地址三種類型。

(1)鏈路本地地址:只能在連接到同一本地鏈路的節點之間使用。可以在自動地址分配、鄰居發現和鏈路上沒有路由器的情況下使用鏈路本地地址。以鏈路本地地址為源地址或目的地址的IPv6報文不會被路由器轉發到其他鏈路。鏈路本地地址的前綴是FE80::/10。
(2)組播地址的前綴是FF00::/8。組播地址范圍內的大部分地址都是為特定組播組保留的。跟IPv4一樣,IPv6組播地址還支持路由協議。IPv6中沒有廣播地址。組播地址替代廣播地址可以確保報文只發送給特定的組播組而不是IPv6網絡中的任意終端。IPv6還包括一些特殊地址,比如未指定地址::/128。如果沒有給一個接口分配IP地址,該接口的地址則為::/128。需要注意的是,不能將未指定地址跟默認IP地址::/0相混淆。默認IP地址::/0跟IPv4中的默認地址0.0.0.0/0類似。環回地址127.0.0.1在IPv6中被定義為保留地址::1/128。
8、IPv6單播地址:主要包含全球單播地址和鏈路本地地址。
(1)全球單播地址(例如2000::/3)帶有固定的地址前綴,即前三位為固定值001。其地址結構是一個三層結構,依次為全球路由前綴、子網標識和接口標識。全球路由前綴由RIR和互聯網服務供應商(ISP)組成,RIR為ISP分配IP地址前綴。子網標識定義了網絡的管理子網。

(2)鏈路本地單播地址的前綴為FE80::/10,表示地址最高10位值為1111111010。前綴后面緊跟的64位是接口標識,這64位已足夠主機接口使用,因而鏈路本地單播地址的剩余54位為0。

9、IPv6組播地址:由前綴、標志(Flag)字段、范圍(Scope)字段以及組播組ID(Group ID)4個部分組成。

(1)所有IPv6組播地址都以FF開始。
(2)IPv6為需要使用組播發送數據的協議預留了一些組播組。
(3)前綴:IPv6組播地址的前綴是FF00::/8(1111 1111)。
(4)標志字段(Flag):長度4bit,目前只使用了最后一個比特(前三位必須置0),當該位值為0時,表示當前的組播地址是由IANA所分配的一個永久分配地址;當該值為1時,表示當前的組播地址是一個臨時組播地址(非永久分配地址)。
(5)范圍字段(Scope):長度4bit,用來限制組播數據流在網絡中發送的范圍。
(6)組播組ID(Group ID):長度112bit,用以標識組播組。目前,RFC2373並沒有將所有的112位都定義成組標識,而是建議僅使用該112位的最低32位作為組播組ID,將剩余的80位都置0,這樣,每個組播組ID都可以映射到一個唯一的以太網組播MAC地址(RFC2464)。
10、IPv6任播地址:
(1)任播地址標識一組網絡接口(通常屬於不同的節點)。目標地址是任播地址的數據包將發送給其中路由意義上最近的一個網絡接口。任播過程涉及一個任播報文發起方和一個或多個響應方。任播報文的發起方通常為請求某一服務(DNS查找)的主機或請求返還特定數據(例如,HTTP網頁信息)的主機。任播地址與單播地址在格式上無任何差異,唯一的區別是一台設備可以給多台具有相同地址的設備發送報文。
11、IPv6無狀態地址自動配置:
(1)無需使用諸如DHCP之類的輔助協議,主機即可獲取IPv6前綴並自動生成接口ID。路由器發現功能是IPv6地址自動配置功能的基礎,
(2)主要通過以下兩種報文實現:
RA報文:每台路由器為了讓二層網絡上的主機和其它路由器知道自己的存在,定期以組播方式發送攜帶網絡配置參數的RA報文。RA報文的Type字段值為134。
RS報文:主機接入網絡后可以主動發送RS報文。RA報文是由路由器定期發送的,但是如果主機希望能夠盡快收到RA報文,它可以立刻主動發送RS報文給路由器。網絡上的路由器收到該RS報文后會立即向相應的主機單播回應RA報文,告知主機該網段的默認路由器和相關配置參數。RS報文的Type字段值為133。

網絡節點向相連的路由器發送RS,請求地址前綴信息。路由器通過發送路由器通告RA,回復地址前綴信息。
12、EUI-64規范——采用擴展唯一標識符(EUI-64)格式生成接口ID:

(1)就實用性而言,EUI-64格式是IPv6生成接口ID的最常用方式。IEEE EUI-64標准采用接口的MAC地址生成IPv6接口ID。MAC地址只有48位,而接口ID卻要求64位。MAC地址的前24位代表廠商ID,后24位代表制造商分配的唯一擴展標識。
(2)MAC地址的第七高位是一個U/L位,值為0時表示MAC地址全局唯一,值為1時表示MAC地址本地唯一。
(3)在MAC地址向EUI-64格式的轉換過程:在MAC地址的前24位和后24位之間插入了16比特的FFFE,並將U/L位的值從0變成了1,這樣就生成了一個64比特的接口ID,且接口ID的值全局唯一。接口ID和接口前綴一起組成接口地址。
13、IPv6無狀態地址DAD檢查:

(1)當為接口配置IPv6地址時,DAD用來在本地鏈路范圍內檢測將要使用的IPv6地址是否唯一。
(2)設備在給接口分配IPv6單播地址之前會進行重復地址檢測(DAD),確認是否有其它的節點使用了該地址。尤其是在地址自動配置的時候,進行DAD檢測是很必要的。
(3)一個IPv6單播地址在分配給一個接口之后且通過重復地址檢測之前稱為試驗地址,此時該接口不能使用這個試驗地址進行單播通信,但是仍然會加入兩個組播組:ALL-nodes組播組和Solicited-node組播組。Solicited-node組播組由單播或任播地址的后24位加上地址前綴FF02:0:0:0:0:1:FF00::/104組成。
(4)IPv6重復地址檢測技術和IPv4中的免費ARP類似:用於地址分配或主機連接網絡時檢測重復的IPv4主機地址。節點向一個自己將使用的試驗地址所在的Solicited-node組播組發送一個以該試驗地址為請求的目標地址的鄰居請求(NS)報文,如果收到某個其它站點回應的鄰居通告(NA)報文,就證明該地址已被網絡上使用,節點將不能使用該試驗地址進行通信。這種情況下,網絡管理員需要手動為該節點分配另外一個地址。
二、IPv6路由基礎
1、OSPFv3協議:是運行在IPv6網絡的OSPF協議。

運行OSPFv3的路由器使用物理接口的鏈路本地單播地址為源地址來發送OSPF報文。相同鏈路上的路由器互相學習與之相連的其它路由器的鏈路本地地址,並在報文轉發的過程中將這些地址當成下一跳信息使用, IPv6中使用組播地址ff02::5來表示AllSPFRouters,而OSPFv2中使用的是組播地址224.0.0.5。
需要注意的是,OSPFv3和OSPFv2版本互不兼容。
2、ff02::5是為OSPFv3路由協議預留的IPv6組播地址。OSPFv3中的路由條目下一跳地址是鏈路本地地址。
3、DR & BDR的選舉:

(1)Router ID在OSPFv3中必須手動配置。
(2)在NBMA和廣播型網絡中OSPFv3選舉DR和BDR的過程與OSPFv2相似。
(3)IPv6使用組播地址FF02::6表示AllDRouters,而OSPFv2中使用的是組播地址224.0.0.6。
4、OSPFv2是基於網段運行的, OSPFv3的實現是基於鏈路的。
在配置OSPFv3時,不需要考慮路由器的接口是否配置在同一網段,只要路由器的接口連接在同一鏈路上,就可以不配置IPv6全局地址而直接建立聯系。
5、OSPFv3認證:

OSPFv3協議本身不提供認證功能,而是通過使用IPv6提供的安全機制(IPv6的擴展頭部:AH、ESP)來保證OSPFv3報文的合法性。
6、OSPFv3的配置命令總結:
*** ipv6 命令——用來使能路由器的IPv6功能。要在路由器上運行OSPFv3協議,首先必須使能IPv6功能。
*** ospfv3 +進程號 命令——用來創建並運行OSPFv3進程,process-id 取值范圍是1~65535。如果不指定進程號,缺省使用進程號1。
*** router-id X.X.X.X 命令——用來設置運行OSPFv3協議的路由器ID號。
*** ipv6 enable 命令——用來在路由器接口上使能IPv6,使得接口能夠接收和轉發IPv6報文。接口的IPv6功能默認是去使能的。*** ipv6 address +鏈路本地地址 link-local 命令(例如:ipv6 address fe80::1 link-local)——用來手動為接口配置鏈路本地地址。
*** ospfv3 +進程號 area +區域號 命令——用來在接口上使能OSPFv3的進程,並指定所屬區域。
*** display ospfv3 命令——可以驗證OSPFv3配置及相關參數。
