一. IPv6特點:
隨着Internet規模的擴大,IPV4地址空間已經消耗殆盡。針對IPV4地址短缺問題,曾先后出現過VLSM和NAT等臨時性解決方案,但是VLSM和NAT都有各自的弊端,並不能作為IPV4地址短缺問題的徹底解決方案。另外,安全性、QOS、簡便配置等要求也表明需要一個新的協議來根本解決目前IPV4面臨的問題。
IETF在20世紀90年代提出了下一代互聯網協議IPV6,也稱為IPng,IPV6支持幾乎無限的地址空間。IPV6使用了全新的地址配置方式,使的配置更加簡單。IPV6還采用了全新的報文格式,提高了報文處理的效率、安全性,也能更好的支持QOS,IPV6時網絡協議為第二代標准,也稱為IPng。
注:IANA宣布2011年2月3號已全部使用完畢。
IPv6具有以下特點:
① 地址空間巨大
② 精簡報文結構
③ 實現自動分配和重新編址
④ 支持層次化網絡結構
⑤ 支持端到端的安全
⑥ 更好的支持QOS
⑦ 支持移動特性
二. IPv6格式:
- IPv4:32bit為2^32約為43億
- IPv6:128bit為2^128

1. 冒號分16進制表表示法:
IPv6包括128bit,有冒號分割的32bit十六進制數表示,格式為共8組每4位:
- 用十六進制表示,比如FE09
- 4個數字為一組(16bit),中間用“:”隔開,如2001:12F
128bit分為8組,全寫格式為2031:0000:130F:0000:0000:09C0:876A:130B
2. IPv6壓縮格式:
- 每組中的前導“0”都可以省略:
2031:0:130F:0:9C0:876A:130B:
- 地址中包含的連續兩個或多個均為0的組,可以使用雙冒號“::”來代替:
2031:0:130F::9C0:876A:130B
注:一個IPv6地址中,雙冒號只能出現一次。
3. IPv6地址結構:
IPv6地址分為兩部分:
① 網絡前綴
② 接口標識
(1)網絡前綴:
相當於IPv4中的網絡ID,由IANA分配。
(2)接口標識:
相當於IPv4中的主機ID,接口標識生成方式可以通過以下方式配置:
① 手工配置
② 軟件自動生成
③ IEEE EUI-64規范自動生成
① 手工配置:
路由器配置IPv6地址:
[Huawei]ipv6-------------開啟IPv6功能
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ipv6 enable---開啟接口IPv6功能
[Huawei-GigabitEthernet0/0/0]ipv6 address 2012::1/64
注:默認接口可以配置多個IPv6地址,配置新的IPv6地址不會覆蓋掉原地址
② 軟件自動生成:
由windows自動生成
③ IEEE EUI-64規范自動生成:
接口ID可以通過EUI規范自動生成
a) 將48bit的MAC地址轉化為64bit的接口ID:
在MAC地址中24bit的OUI后和25bit產品ID前的中間插入16bit
注:16bit為FFFE
b) 轉換后的64bit的接口ID將第一字節的第7bit進行反轉

注:Link Local地址由此生成
4. 十進制轉十六機制:
(1)十六位表示方法:
| 位數 |
映射關系 |
|||||||||||||||
| 十進制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
| 十六進制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
| 二進制 |
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
(2)轉換方式:
十進制: 234
二進制: 1110 1010
十六進制:2+4+8 2+8
=EA
三. IPv6地址分類:
IPv6地址分為三大類:
① 單播地址
② 多播地址
③ 任播地址
(1)單播地址:
標識一個接口,目的為單播地址的報文會被送到標識的接口。
單播地址分為五種:
① 特殊地址
② 鏈路本地地址
③ 全球單播地址
④ 本地站點地址
⑤ 兼容地址
① 特殊地址:
- 未指定地址:
::/128,IPv6地址全部為0
- 回環地址:
::1/128,用於測試本機協議棧是否正常
② 鏈路本地地址:
FE80::/10,后54位為全0,Link Local地址,生效范圍只在某條鏈路上,可供主機在本網段上進行訪問。
FE80::EUI64/10,兩台路由器在沒有配置IPv6地址時使用本地MAC生成接口ID,增加FE80前綴,生成Link Local,用於本地鏈路訪問其他的設備
注1:當配置IPv6地址后會自動生成Link Local地址,也可以使用命令[Huawei-GigabitEthernet0/0/0]ipv6 address fe80::54 link-local進行修改該
注2:使用命令[Huawei-G0/0/0]ipv6 address auto link-local后,不配置IPv6的前提下,生成Link Local地址
注3:IPv4中使用169.254.0.0/8
注4:本地鏈路地址生成過程:
Mac地址:00e0-fccf-15db
增加FFFE: 00e0-fcff-fecf-15db
反轉bit: 02e0-fcff-fecf-15db
增加前綴:FE80::02e0-fcff-fecf-15db
壓縮地址:FE80::2e0-fcff-fecf-15db

③ 全球單播地址:
2001::/16~3FFF::/16,運行在公網的地址,由前綴、子網ID和接口標識組成
④ 私網地址:
- 本地站點地址:
FEC0::/10,用於私有網絡,但是會存在問題,已被收回
- 唯一本地地址:
EC::/7,完善本地站點地址的不足,用於私網
⑤ 兼容地址:
V4到V6過度時,使用兼容地址
(2)多播地址:
標識多個接口,目的為組播地址的報文會被送到被標識的接口
① 組播地址:
FF::/8,類似於IPv4的組播地址,由前綴、標志(Flag)字段、范圍(Scope)字段以及組播ID組成

組成方式:FF(8bit)+Flag(4bit)+Scope(4bit)
- FF:前8bit固定不變,全部為1,表示為組播地址
- Flage:前3位固定為0,最后一位數定義地址類型:
a) 最后一位數為0,固定或眾所周知的,由IANA分配
b) 最后一位數為1,本地分配或短期臨時,不永久分配
- Scope:表示組播組的范圍
a) 2—Link-Locol,表示僅在本網段鏈路上傳送
b) 4、5、8—臨時的組播地址范圍

② 預定義組播地址:
Link-Local范圍,表示組播地址中的Spock為2,只在本網段鏈路上有效,並有IANA預先定義
- 所有節點的組播地址:FF02:0:0:0:0:0:0:1
- 所有路由器的組播地址:FF02:0:0:0:0:0:0:2
- 請求節點組播組地址:FF02:0:0:0:0:0:1:FFxx:xxxx
- 所有OSPFv3路由器組播地址:FF02:0:0:0:0:0:0:5
- 所有OSPFv3的DR路由器組播地址:FF02:0:0:0:0:0:0:6
- 所有RIPng路由器組播地址:FF02:0:0:0:0:0:0:9
- 所有PIM路由器組播地址:FF02:0:0:0:0:0:0:D
③ 請求節點組播地址:
FF02::1:FF00:0000/104,IPv6特有的組播地址,當接口配置單播地址(單播IPv6地址或Link Local地址)每個節點必須為分配給他的每個單播地址和任播地址加入的一個組播地址,用於DAD地址重復檢測和地址解析,由於IPv6沒有廣播地址,所以當主機請求對端的MAC地址時,三層目標地址為請求節點組播地址
請求節點組播地址組成:前綴FF02:0:0:0:0:0:1:FF+IPv6地址的后24bit
④ IPv6組播MAC地址:
和組播IPv4相同,IPv6組播中的MAC地址依舊采用映射的方法。
前16bit固定不變:3333

(3)任播地址:
標識多個接口,和單播標識一致,目的為任播地址的報文會被送到最近的一個被標識接口,最近節點由路由協議來確定,任播地址與單播地址使用同一個地址空間,配置時需要標明是任播地址還是單播地址,比如使用DNS的應用(無狀態UDP),多個DNS服務器配置相同的任播地址,終端訪問里自己最近的DNS服務器
描述:
為了實現附載分擔,可以在網絡存在多台數據服務器,DNS解析進行輪詢應答,但這樣可能會有次優的問題,任播地址為了解決就近服務的問題,提出了以下構想

① 地址聲明:
兩台服務器(目前任播只支持路由器上配置)通過NDP協議通告給路由器任播地址,同時也會通告自己的實際單播地址(成員地址),兩台設備任播地址都是相同的,使用實際單播地址進行服務器的區分。
② 成員選擇:
服務器請求任播地址的數據流量,會根據以下三種情況選擇請求哪台服務器:
a) 根據IGP路由表
b) 隨機
c) 使用包測試(PING、NQA等)
③ 數據轉發:
數據轉發存在問題,那就是不穩定性,比如使用包測試,但是在建立連接之后鏈路出現擁塞,那么后續數據包可能會被當中的路由器轉到另外一台服務器上去,導致數據流量中斷,針對這種情況,提出了以下幾種構想:
a) 在進行TCP建立時,將TCP的ACk應答報文中壓入真實的成員地址,這樣客戶端直接根據成員地址為目標地址進行流量的請求與訪問(需要重新定義TCP 報文,目標地址變為了單播地址,不推薦使用)
b) 在進行TCP建立時,增加新的字段用來表示真實的成員IP地址,客戶端直接根據這個真實的成員IP地址建立連接請求和數據的訪問(需要重新定義TCP 報文,目標地址變為了單播地址,不推薦使用)
c) IPv6報文頭中增加了Flow Label,PC在發送數據包時,在Flow Label中增加本地唯一的標識,中間節點路由器收到數據包后,根據源IPv6地址和Flow Label生成表項,對應送往目標服務器的下一跳,即使發現去往另一台服務器的鏈路更優,也不會進行切換,防止數據流的終端
四. IPv6報文:
IPv6基本報頭,IPv6包由IPv6基本報頭和IPv6擴展報頭以及上層協議數據單元組成,IPv6基本報頭有8個字段,固定大小為40Byte,每一個IPv6數據包都必須包含基本包頭

1. IPv6格式表示類型:
基本報頭、擴展報頭和上層協議數據報文的相互關系如下:
① IPv6只存在基本報頭:
- 則Next Header表示的為上層協議數據的標識

② IPv6存在基本報頭和擴展報頭:
- 基本報頭中的Next Header表示的為擴展報頭的協議標識
- 擴展報頭中的Next Header表示的為上層協議數據的標識

③ 當數據包被分片並存在擴展報頭:
- 基本報頭中的Next Header表示的為擴展報頭的協議標識
- 擴展報頭中的Next Header表示的為分段協議報頭
- 分段擴展報頭的Next Header表示的為上層協議的標識

2. 基本報頭:
每一個IPv6包都必須包含基本報頭,其長度為固定40Byte,基本報頭提供報文轉發的基本信息,會被轉發路徑上面所有路由器解析
(1)特點:
效率/規范/安全/優質
① 取消IP層的校驗:減少重復操作,由上層完成數據校驗
② 取消中間節點的分片功能:分片充足功能由源和目的端進行,通過PMTU機制來保證
③ 定長的IPv6報文頭:有利於硬件快速處理,有大部分的擴展頭中間節點不需要處理
④ 安全選項必須支持:入OSPFv3中取消了原有認證等特性,全部依賴於IP安全屬性
⑤ 在基本IP頭中增加了流標簽:提高了QOS效率,保留了DSCP
(2)基本報頭組成部分:

① Version:版本,為6
② Traffic Class:流類別,用於QOS
③ Flow Label:流標簽,區分唯一一條數據流(IPv4使用五元組區分一條流,IPv6使用劉標簽+源目地址區分一條流標簽)
④ Payload Length:Payload 長度,由於IPv6的基本報頭不變,所有Payload Lenth表示的是上層數據的長度和擴展報頭的大小
⑤ Next Header:下一個報頭,標識上層承載協議類型(存在擴展報頭,表示擴展報頭類型)
⑥ Holp Limit:跳數限制,和IPv4中一致,默認為255
⑦ Source Address:源地址
⑧ Destination Address:目標地址
(3)IPv6基本報頭與IPv4報頭的區別:
(1)IPv6基本報頭字段64bit對其,能夠直接對內存存取
(2)Ipv4報頭有14個字段(帶填充和選項字段),,基本的IPv4包頭有12個字段,Ipv6基本報頭有8個字段:
① 包頭長度:IPv6基本報頭為固定40個字節基本報頭,去掉了IPv4中的IHL選項
② 標示、標識和偏移字段:網絡中的中心路由器不在處理分段,只在產生數據包的源節點處理分段,如果數據包被分片,在擴展報頭中增加
③ 包頭校驗和:由鏈路層和傳輸層都有校驗和,對Ipv6而言,網絡層的作用是為了快速轉發,所以取消了包頭校驗,直接由目的設備的上層協議對整個數據包進行校驗
④ 選項和填充:選項由擴展報頭處理,填充字段也去掉

3. 擴展報頭:
- IPv6將選項字段全部放入擴展報頭中
- IPv6報文包含0個、1個或多個擴展報頭,固定為8字節長度的整倍數
- 擴展報頭提供報文轉發的擴展信息,並不會被路徑上所有路由器解析,一般只會被目的路由器解析處理。
注:由於IPv6的整體報文必須以64bit對齊,如果擴展報頭如法64bit對齊,使用Padding墊片進行擴展到64bit對齊

① Next Header:表示上層應用類型(應用層類型)
② Extension header Length:擴展報頭長度
③ Extension Head Data:擴展報頭數據
擴展報頭主要包含以下幾種類型:
| 報頭類型 |
Next Header字段值 |
描述 |
| 逐跳選項報頭 |
0 |
該選項主要用於為在傳送路徑上的每跳轉發指定發送參數,傳送路徑上的每台中間節點都要讀取並處理該字段,應用場景:①用於巨型載荷;②用於路由器提示;③用於資源預留 |
| 目的選項報頭 |
60 |
目的選項報頭攜帶了一些只有目的節點才會處理的信息。目前,目的選項報文頭主要應用於移動IPv6 |
| 路由報頭 |
43 |
路由報頭和IPv4的Loose Source and Record Route選項類似,該報頭能夠被Ipv6源節點用來強制數據包經過特定的路由器 |
| 分段報頭 |
44 |
同IPv4一樣,IPv6報文發送也受到MTU的限制,當報文長度超過MTU時就需要將報文分段發送,而在IPv6中,分段發送使用的時分段報頭 |
| 認證報頭 |
51 |
該報頭由IPsec使用,提供認證,數據完整性以及重放保護,它還對Ipv6基本報頭中的一些字段進行保護 |
| 封裝安全凈載報頭 |
50 |
該報頭由IPsec使用,提供認證,數據完整性以及重放保護和IPv6 數據報的保密,類似於認證報頭 |
注1:如果擴展報頭全部在IPv6數據包中出現,擴展報頭的順序以表中循序存放,位於基本報頭和上層協議中間
注2:除目的選項報頭外,每種擴展報頭只能出現一次
注3:目的選項報頭最多出現兩次,1此在路由報頭之前,一次在上層協議數據報文之前,如果沒有路由報頭,則只能出現一次
(1)逐跳選項報頭:
- 用於巨型載荷:載荷長度超過65535字節時,使用逐跳選項報頭承載,由選項類型、
選項長度、超大有效載荷長度組成
如果有效載荷長度超過65535字節,則IPv6基本報頭中的有效載荷長度值將被置為0,數據包的真正有效載荷長度用超大有效載荷長度字段表示,占32bit,能夠表示4294967295
- 用於路由器提示:使路由器檢查該選項的信息,而不是簡單的轉發出去(MLD type5)
- 用於資源預留:RSVP
(2)目的選項報頭:
參數含義與逐跳選項頭相同,目的選項頭包含目的地需要處理的信息,報文的最終目的地和路由頭地址列表中的節點都會檢查該選項,可出現兩次,路由報頭之前和上層協議數據報文之前

(3)路由選項報頭:
用於指定報文轉發必須經過的中間節點,指定去往目的地走哪些節點,不在依據IGP路由

報文格式:

a) Next Header表示下一個頭的協議類型
b) Hdr Ext Len表示擴展頭的長度(不包含Next Header)
c) Routing Type表示路由報頭類型(RFC定義為0)
d) Segments Left表示到達最終目的地還需要多少個必須的中心節點
e) Type-Specific Data根據Routing Type的值,給出相應的轉發數據
(4)分段報頭:
當報文超過了MTU時就需要將報文分段發送,分段發送通過分段擴展頭來完成
注:IPv6報文中只能由源端進行分片
報文格式:

a) Next Header:表示下一個報文頭
b) Resserved:是保留字段設為0
c) Fragment Offset:表示分段偏移量,就是只報文段在原始報文中的位置偏移量
d) Res:為保留字段設置為0
e) M flag:1表示后續還有分片報文,0表示最后一個分片報文
f) Identification:表示分段的ID
(5)認證報頭:
認證擴展頭用於提供IP報文的認證等功能,應用於IP安全,提供報文的驗證,完整性檢查。
注:在RFC2402中定義了該擴展頭的具體細節

(6)封裝安全凈載報頭:
封裝凈載擴展頭主要應用於IP安全,提供報文驗證,完整性檢查和加密
注:RFC2406中定義了該擴展包頭的具體細節

五. ICMPv6:
Internet Control Message Protocol for the IPv6,用於傳遞報文轉發中產生的信息或者錯誤。
ICMPv6定義的報文被廣泛的應用在其他協議中,包括鄰居發現(Neighbor Discovery)、Path MTU發現機制等。
1. 報文格式:
ICMPv6,定義協議號為58,這個協議號被用在基本IPv6報頭的Next Header字段中,指示這是一個ICMPv6數據包。IPv6認為ICMPv6數據包是一個上層協議,像TCP和UDP一樣,意味着它必須被放在IPv6數據包中所有可能的擴展包之后。
注:ICMPv6分為差錯報文和信息報文兩大類

① Type:類型,用於表示ICMPv6報文的類型,主要有差錯報文和信息報文
② Code:選項值,結合Type使用,表示詳細的信息
③ Checksum:校驗和
④ Message Body:信息數據
2. 差錯報文:
當Type類型標識為1-127,表示此ICMPv6為差錯報文。
- Type1:目的不可達錯誤報文,數據包無法轉發到目標節點或上層協議
a) Code-0:沒有到達目標的路由
b) Code=1:與目標的通信被管理策略禁止
c) Code=2:未指定
d) Code=3:地址不可達
e) Code=4:端口不可達
- Type2:數據包過大錯誤報文,報文超出出接口的鏈路MTU
a) Code=0
- Type3:時間超時錯誤報文,Hop Limit字段值等於0,分段充足報文超時
a) Code=0:在傳輸中超越了跳數限制
b) Code=1:分片重組超時
- Type4:參數錯誤報文,IPv6報頭或者擴展報頭出現錯誤
a) Code=0:遇到錯誤的報文字段
b) Code=1:遇到無法識別的Next Header類型
c) Code=2:遇到無法識別的IPv6選項

3. 信息報文:
當Type類型為128-255,表示為信息報文類型。
① PING請求應答報文:
- Type128:發送請求報文Echo Request
a) Code=0:發送目標節點
- Type129:回復應答報文 Echo Reply
- Code=0:對回送請求報文的回應

在信息報文中,使用Type類型定義了兩組特殊用途的報文協議,分別為NDP鄰居發現協議和多播偵聽發現協議
② NDP鄰居發現協議:
- Type133:路由器請求(Router solicitation)
- Type134:路由器公告(Router Advertisement)
- Type135:鄰居請求(Neighbor Solicitation)
- Type136:鄰居公告(Neighbor Advertisement)
- Type137:重定向(Redirect)
③ 多播偵聽發現協議:
- Type130:多播聽眾查詢
- Type131:多播聽眾報告
- Type132:多播聽眾退出
RFC2461中定義了鄰居發現功能,使用ICMPv6報文可以實現其功能:
① 地址解析(相當於IPv4中的ARP)
② 重復地址檢測(Duplicate Address Detect,DAD)
③ 跟蹤鄰居狀態
④ 路由發現
⑤ 重定向
⑥ 無狀態地址自動配置
⑦ 前綴重新編制
| ICMPv6類型 |
消息名稱 |
| Type133 |
路由器請求(RS) |
| Type134 |
路由器公告(RA) |
| Type135 |
鄰居請求(NS) |
| Type136 |
鄰居公告(NA) |
| Type137 |
重定向消息 |
不同的NDP機制使用不同的ICMPv6新的消息:
| 機制 |
類型133 |
類型134 |
類型135 |
類型136 |
類型137 |
| 路由器請求 |
路由公告 |
鄰居請求 |
鄰居公告 |
重定向消息 |
|
| 地址解析(代替ARP) |
|
|
√ |
√ |
|
| 重復地址檢測(DAD) |
|
|
√ |
√ |
|
| 路由發現(前綴公告) |
√ |
√ |
|
|
|
| 前綴重新編址 |
|
√ |
|
|
|
| 路由器重定向 |
|
|
|
|
√ |
| 鄰居狀態跟蹤 |
|
|
√ |
√ |
|
(1)重復地址檢測:
重復地址檢測類似於免費ARP,基於ICMPv6實現,包括NS鄰居請求和NA鄰居通告。當路由器或設備獲取IP地址后,會開始Tentative address(默認1S)計時,表示此時間段內接口無法使用此地址,並在此時間內發送重復地址檢測報文。
① 鄰居請求:

① Type:類型為135
② Code:為0
③ Checksum:校驗和
④ Target Address:所設置的IP地址
⑤ Options:存放源端的二層Mac地址
注:當配置接口IPv6地址后,會發起接口IPv6地址重復地址檢測和Link Local重復地址檢測,如果先發送的為Link Local地址檢測,並發現沒有重復,則IPv6地址重復地址檢測報文的源地址使用Link Local,如果先發送IPv6地址重復檢測,則使用全0的IPv6地址

② 鄰居通告:
當鄰居收到鄰居請求信息,檢查接口IP地址,如果存在與Target Address相同的IP地址,則回復鄰居通告地址,發送端收到后表明此地址沖突;如果在Tentative address時間內沒有收到鄰居通告報文,證明此地址無誤,則會再次發送C bit沒有被置位(主動發送)的NA報文,通知鏈路上的其他路由器表明此地址已被使用
注:華為默認不會發送C沒有被置位(主動發送)的NA報文,而是直接使用此地址(2)地址解析:

(2)地址解析:
地址解析使用兩種ICMPv6報文,分別為:
① 鄰居請求
② 鄰居通告
① 鄰居請求:
Neighbor Solicitation,NS,組播報文,目標地址為被請求節點組播組地址,ICMPv6的Type為135,code為0
報文結構:

① Type:類型為135
② Code:為0
③ Checksum:校驗和
④ Target Address:所請求MAc地址對應的IPv6地址
⑤ Options:存放源端的二層Mac地址

② 鄰居通告:
Neighbor Advertisement,NA,單播地址,目標地址為發起請求的地址,Type為136,Code為0
報文結構:

① Type:類型為136
② Code:值為0
③ Checksum:校驗和
④ R:標識位,表示發送者是否為路由器,如果1則表示是
⑤ S:標識位,表示發送鄰居通告是否是響應某個鄰居請求,如果1則表示是,如果主動發起為0
⑥ O:標志位,表示鄰居通告中的消息是否覆蓋已有的條目信息,如果1則表示是
⑦ Target Address:表示所攜帶的鏈路層地址對應的IPv6地址
⑧ Options:發送源的二層Mac地址
注1:華為設備中置位符全部為1
注2:<Huawei>reset ipv6 neighbors all清空ipv6地址映射
注3:<Huawei>display ipv6 neighbors查看映射表

(3)跟蹤鄰居狀態:
IPv6中存在鄰居關系,當兩個節點配置IP地址后並進行首次通信后,IPv6會維護此鄰居狀態。
注:跟蹤鄰居狀態會跟蹤單播接口地址和Link Local地址
① 鄰居請求:
① Type:類型為135
② Code:為0
③ Checksum:校驗和
④ Target Address:所設置的IP地址
⑤ Options:存放源端的二層Mac地址

② 鄰居通告:

① Type:類型為136
② Code:值為0
③ Checksum:校驗和
④ R:標識位,表示發送者是否為路由器,如果1則表示是
⑤ S:標識位,表示發送鄰居通告是否是響應某個鄰居請求,如果1則表示是,如果主動發起為0
⑥ O:標志位,表示鄰居通告中的消息是否覆蓋已有的條目信息,如果1則表示是
⑦ Target Address:表示所攜帶的鏈路層地址對應的IPv6地址
⑧ Options:發送源的二層Mac地址
③ 鄰居狀態:
鄰居狀態分為五種:
① Empty空
② Incomplete未完成
③ Reachable可達
④ Stale陳舊
⑤ Delay延遲
⑥ Probe探查

a) Empty:
空狀態,表示兩端無任何通信過程,沒有進行地址解析
b) Incomplete:
未完成狀態,表示在做地址解析和鄰居關系未完成,當一端鄰居發送了NS報文但是沒有收到對端的NA報文回復,處於此狀態。
注:如果沒有完成地址解析,默認連發3次,每次間隔1S,3次無響應后即刪除此狀態進入Empty狀態
c) Reachable:
可達狀態,鄰居關系已建立,收到對端的NA報文回復后,生成映射表,進入此狀態。
- 存在數據時一致存在Reachable狀態
- 一直不存在數據流量,在經歷Reachable-time(默認30S,可手動修改)后,進入下個狀態
d) Stale:
陳舊狀態,當Reachable無流量30S后,進入此狀態,如果一致不存在數據流量,會一直停留此狀態。如果處於此狀態的路由器想要發送數據流,會立刻進入Delay狀態並發送NS報文
e) Delay:
延遲狀態,如果Stale狀態下路由器發起了數據流量,會立刻從Stale切換到Delay狀態:
- 如果收到對端的NA報文響應,進入Reachable狀態進行流量的轉發
- 如果無NA響應,5S后無法收到應用層的提示信息,進入Probe狀態
f) Probe:

探查狀態,每經過Retrains Times(默認1S,默認發送三次)發送單播NS,如果對端響應進入Reachable狀態,如果沒有響應進入Empty狀態刪除映射表型
④ 鄰居狀態跟蹤作用:
- 確定同一鏈路上節點的2層地址:
例如對端接口IP地址改變或MAC地址改變,如果為IPv4無法及時檢測對端的映射情況,則數據包會依舊發送給對端,如果此時使用IPv6時,使用跟蹤鄰居狀態時,可以及時應對上述情況。
- 找到可以轉發他們數據包的臨近路由器
- 隨時跟蹤那些路由可達、路由不可達、並且檢測有改變的鏈路層地址
(4)路由發現:
基於IGMPv6實現,發現本地鏈路相連的路由器,獲取與地址自動配置相關的前綴和其他配置參數,包括RA和RS,用於IPv6無狀態自動配置。
① 路由請求:
Router Solicitation,由主機主動發出(加快地址配置速度,主機初始化會自動發送RS報文),

① Type:類型為135
② Code:0
③ Checksum:校驗和
④ Options:如果源地址為Link-Local地址,則為Mac,如果未指定則無此選項
注:源地址為Link-Local或全0地址,目標地址為FF02::2(本網段所有路由器),跳數為255
② 路由公告:
Router Advertisement ,用於回復RS報文,RS報文中包含IPv6地址或前綴信息
注1:華為默認不會發送RA報文,手工開啟后默認200S發送一次,使用以下命令開啟[Huawei-GigabitEthernet0/0/0]undo ipv6 nd ra halt
注2:主動發起RA報文后,同樣也會被鄰居路由器收到,在鄰居路由器上開啟發送RS報文,便可以無狀態自動配置接口IP地址
[Huawei-GigabitEthernet0/0/0]ipv6 address auto global
注3:路由器收到RA回復后,使用EUI64生成接口IPv6地址;主機(windows)收到RA回復后,使用軟件隨機生成IPv6地址(更加安全)

① Type:類型為136
② Code:0
③ Checksum:校驗和
④ Cur Hop Limit:當前跳數
⑤ M:置位符,1表示主機可以使用有狀態地址自動配置IPv6地址,默認為0 無狀態自動配置
⑥ O:置位符,1表示主機可以使用有狀態地址自動配置機制產生除地址以外的參數,比如DNS等,默認為0
⑦ Router Lifetime:路由生存時間
⑧ Reachable Time:可達狀態時間(默認30S,可修改)
⑨ Retrains Timer: 默認1S
注:
- 源地址為發送者的Link Local地址(單播回復)或全0地址(被請求節點組播組)
- 目的地址為FF02::1(發送者為全0地址)或發送RS的主機單播地址(發送者為Link Local)
- 跳數:255(為了確保收到的發現報文來自本地鏈路,當接收者發現地址為254,將丟
棄該報文)
(5)重定向:
當網關路由器知道更好的轉發路徑時,會以重定向報文的方式告知主機

① PC1想要訪問PC2,進行與運算目標地址與自己不在同一網段,將數據包發送給網關R1
② R1收到后,發現目的地址的下一跳為R2的G0/0/1接口,數據流從源接口返回
③ R1發送Type137重定向報文給PC1,告知PC1的最優下一跳路徑
④ PC1再次訪問PC2時,下一跳地址直接交給R2

4. PMTU:
在IPv6的網絡環境中,由於分片重組信息放入IPv6擴展報頭中,中間節點路由器不會檢查擴展報頭,所以分片與只發生在發送端,中間的路由器如果收到大於自己接口MTU的數據包,不會對數據包分片,而是直接將數據包丟棄
為了防止MTU不一致性導致數據包在傳輸過程中丟棄,此時使用Path MTU機制進行解決,PMTU通過ICMPv6的Packet Too Big報文完成。
注:PMTU為單項的,PMTU為路徑上最小的MTU
(1)報文類型:
PMTU通過ICMPv6的Packet Too Big報文完成,Packet Too Big報文使用ICMPv6差錯報文的Type2類型。
(2)PMTU原理:

① Clent1發送MTU值為1450的數據包訪問Clent2
② R1收到數據包時,接口MTU大於數據包的大小,接收並轉發
③ R2收到數據包大小為1450字節的數據包,由於接口MTU小於數據包的大小,丟棄,並回復Packet Too Big報文給Clent1,
④ Clent1重新發送數據包給CLent2,數據包大小為小於R2的接口MTU,例如為1400,R2收到數據包后,發送給R3
⑤ R3收到數據包后,,由於接口MTU小於數據包的大小,丟棄,並回復Packet Too Big報文給Clent1
⑥ Clent1重新發送數據包給CLent2,數據包大小為小於R3的接口MTU,例如為1300,R3收到數據包后,發送給Clent1
注1:此時Clent1便知道去往Clent2所要使用的PMTU值為多少,並緩存下來(10min)
注2:使用命令[Huawei-GigabitEthernet0/0/0]ipv6 mtu修改該IPv6數據包的MTU
注3:使用命令<Huawei>display ipv6 pathmtu all查看PMTU信息
5. 無狀態自動配置:
使用NDP鄰居解析中的路由發現功能,發現本地鏈路相連的路由器,獲取與地址自動配置相關的前綴和其他配置參數,包括RA和RS。
可以實現無需進行手動配置,實現即插即用功能,減輕網絡管理的負擔。對主機、路由器可進行自動配置,可配置多個地址進行網絡無縫遷移
(1)前綴重新編址:
在無連接狀態下,接口獲取到前綴並生成IPv6接口地址后,會進入以下狀態機:

① Tentative: DAD過程,此狀態IPv6地址不生效,發送ICMPv6重復地址檢測報文檢測是
否存在地址沖突
② Valid Lifetime:有效地址時間
- Preferred Lifetime:優先時間,既可以主動發起連接,也可以被動的接受連接
- Deprecated:只能被動的接受鄰居的連接
③ Invalid:無效,當超過Valid Lifetime時,則進入Invalid,當接口地址到達Invalid狀態后,接口地址無效,此時就需要進行前綴重新編制
為了保證數據業務不中斷實現無縫遷移:
- 老地址配置可以在一段時間內被動接受連接(Deprecated time不為0);不能主動發起連接(Preferred Lifetime為0)
- 新地址配置配置被動接受連接(Deprecated time不為0);並能主動發起連接(Preferred Lifetime為0)
注:此時老地址的業務不中斷,並且使用新地址主動發起連接,最終實現數據不中斷實現前綴的重新編制
無縫遷移配置:

AR1:
[Huawei]ipv6
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ipv6 enable
[Huawei-GigabitEthernet0/0/0]ipv6 address ec::0/64
[Huawei-GigabitEthernet0/0/0]undo ipv6 nd ra halt---開啟發送RA報文機制
AR2:
[Huawei]ipv6
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ipv6 enable
[Huawei-GigabitEthernet0/0/0]ipv6 address auto global—--主動發起RS報文獲取RA報文

AR1實現無縫遷移:
[Huawei-GigabitEthernet0/0/0]ipv6 address ed::1/64—配置新的IP地址
[Huawei-GigabitEthernet0/0/0]ipv6 nd ra prefix ec::1/64 100 0
配置舊IPv6地址的Deprecated(被動連接)為100S,
Preferred Lifetime(主動連接)時間為0S
[Huawei-GigabitEthernet0/0/0]ipv6 nd ra prefix ed::1/64 100000 100000
配置舊IPv6地址的Deprecated(被動連接)
為10000S,Preferred Lifetime(主動連
接)時間為100000S
6. 有狀態自動配置:
(1)DHCPv6:
DHCPv6能夠為主機分配IPv6地址以及其他網絡配置參數,並能夠實現這些參數的管理,可獲得相對無狀態配置對節點更多的控制。

① 主機發送RS報文給路由器
② 路由器收到RS報文后,回復RA報文給主機,由於配置了DHCPv6服務器,將RA報文中的M置1,表示有狀態配置
③ 主機收到R1發送過來的RA報文,發現M位置1,不會使用前綴信息自動生成IPv6地址,而是發送DHCPv6 Solicit請求IPv6地址
④ 路由器收到主機發送的DHCPv6 Solicit報文后,發送DHCPv6 Advertise,里面包含了IP信息、DNS等配置
⑤ 主機收到路由器發送過來的DHCP Advertise報文,獲取IP地址等上網信息,會發送DHCP REQUEST報文出去請求DHCP服務器確認。
⑥ 當路由器收到主機的DHCP REQUEST報文后,會回復DHCP ACK確認報文,允許主機使用當前地址。
DHCPv6配置:

R1:
[Huawei]dhcp enable
[Huawei]dhcpv6 pool huawei
[Huawei-dhcpv6-pool-huawei]address prefix ec::/64
[Huawei-dhcpv6-pool-huawei]excluded-address ec::1
[Huawei-dhcpv6-pool-huawei]dns-server 400::1
[Huawei-dhcpv6-pool-huawei]dns-domain-name huawei.com
[Huawei-dhcpv6-pool-huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ipv6 enable
[Huawei-GigabitEthernet0/0/0]ipv6 address ec::1/64
[Huawei-GigabitEthernet0/0/0]dhcp server Huawei
[Huawei-GigabitEthernet0/0/0]ipv6 nd autoconfig managed-address-flag-置位M位
[Huawei-GigabitEthernet0/0/0]ipv6 nd autoconfig other-flag—----置位O位
[Huawei-GigabitEthernet0/0/0]ipv6 nd ra halt---允許回復RA報文
六. RIPng:
RIP next generation,下一代RIP,隨着IPv6網絡的建設,同樣需要動態路由協議為IPv6報文的轉發提供准確有效的路由信息。因此,IETF在保留了RIP優點的基礎上針對IPv6網絡修改就形成了RIPng,RIPng主要用於IPv6網絡中提供路由功能,是IPv6網絡中路由技術的一個重要組成協議。
(1)RIPng特點:
① RIPng協議基於D-V(Distance Vector,距離矢量)算法的路由協議。它通過UDP報文交換路由信息,使用的端口號位521(IPv4為520)
② RIPng協議用跳數來衡量到達目的主機的距離:
- 在RIPng協議中,從一個路由器到其直連網絡的跳數為0,而通過另一台路由器到達一個網絡的跳數為1,以此類推
- 當跳數大於或等於16跳時,目的網絡或主機被定義為不可達(有效性為15跳)
③ 為了提高性能並避免形成路由循環,RIPng即支持水平分割也支持毒性反轉
④ RIPng也可以從其他的路由協議中引入路由
(2)針對原RIP的修改:
① 使用UDP的521端口
② 目的地址使用128bit的前綴長度
③ 使用128bit的IPv6地址作為下一跳地址
④ 使用鏈路本地地址FE80::/10作為源地址發送RIPng路由信息更新報文
⑤ 使用組播方式周期地發送路由信息,並使用FF02::9作為鏈路本地范圍內的路由器組播地址
⑥ RIPng的報文由頭部(Header)和多個路由表項RTs(Route Table Entry)組成
(3)RIPng報文:
RIPng報文由頭部(Header)和多個路由表項(RTEs)組成。在同一個RIPng報文中,RTE的最大數目根據接口的MTU值來確定

報頭部分:
① Command:定義報文的類型
- 0x01:表示Request報文
- 0x02:表示Response報文
② Version:RIPng的版本,目前其值只能為0x01
路由部分:
③ RTE:Route Table Entry,路由表項,每項的長度為20Byte,RTE的最大數目根據接口的MTU來確定
注1:只在初次交互的時候發送Request報文,后續每隔30S只發送Response報文
注2:在RIPng中,分為兩類RTE:
- 下一跳RTE:
位於一組具有相同下一跳的“IPv6前綴RTE”的最前面,它定義了下一跳的IPv6地址
- IPv6前綴RTE:
位於某個“下一跳RTE”的后面,同一個“下一跳RTE”的后面可以有多個不同的“IPv6
前綴RTE”。他描述了RIPng路由表中的目的IPv6地址及開銷
注3:下一跳RTE的作用:

① R2將靜態IPv6路由引入RIPng傳遞給R1
- 下一跳RTE:ec::3
- IPv6前綴RTE:ed::1/64、ef::1/64
② R1收到路由后存放到路由表
③ R1想要去往ed::1/64網段,查看下一跳RTE,直接將數據送往ec::3,解決了次優路徑的問題
注:RIP中也存在下一跳RTE選項用於解決次優路徑的問題
① Request報文:

注1:只在初次交互的時候發送Request報文
注2:由於時Request報文,在RTE中的路由條目為全0
② Response報文:

注:每隔30S只發送一次Response報文
(4)RIPng路由發送過程:

(5)RIPng防環機制:
① 水平分割:

路由器從某個接口學到的路由,不會從該接口在發送給鄰居路由器(設備默認開啟水平分割)。
注:使用以下命令關閉水平分割:
[Huawei-GigabitEthernet0/0/0]undo ripng split-horizon
② 路由毒化:
當一台路由器直連的網段出現問題后,路由器會發送一條RIP路由信息給鄰居,將此路由條目的跳數設置為16跳不可達,當網絡中的路由器收到此條路由條目后,會刪除此條無效的RIP路由
③ 毒性反轉:

毒性反轉是指路由器從某個接口學到路由后將該路由的跳數設置為16,並從原接口發送給鄰居路由器。
注1:水平分割與毒性反轉互斥,默認只能配置一種,如果兩種都配置,默認使用毒性反轉。
注2:使用以下命令開啟毒性反轉:
[Huawei-GigabitEthernet0/0/0]ripng poison-reverse
④ 觸發更新:

觸發更新是指當路由信息發生變化時,立即向鄰居設備發送觸發更新報文,將故障網段設置為16跳(路由毒化),經過垃圾時間120S后RTA丟棄。
(6)RIPng時間參數:
RIPng有幾個可以認為調整的詞能夠使其參數,包括RIPng路由協議的更新、失效、抑制以及garbage收集時間
RIPng協議在更新和維護路由信息時主要使用四個定時器:
① Update timer更新定時器
② Age timer老化定時器
③ Garbage-collect timer垃圾收集定時器
④ Suppress timer 抑制定時器
使用一下命令修改各個參數:
[Huawei-ripng-1]timers ripng 10 15 1----修改Update時間為10S,Age time為15s,垃圾收集定時器為1S
① Update timer:
更新定時器,檔次定時器超時時,立即發送更新報文。默認時間為30S
② Age timer:
老化定時器,RIP設備如果在老化時間內沒有收到鄰居發送過來的路有更新報文,則認為路由不可達,但不會刪除此條路由條目,只認為目標地址不可達。默認時間為180S。
③ Garbage-collect timer:
垃圾收集定時器,如果在垃圾收集時間內不可達路由沒有收到來自同一鄰居的更新,則該路由將被從路由表中徹底刪除。所以當一條路由條目從失效到刪除時間為300S(180+120),默認時間為120S。
(7)RIPng配置:

① 配置IPv6地址
② 配置RIPng
R1:
[Huawei]ripng 1------開啟RIPng
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ripng 1 enable
R2:
[Huawei]ripng 1------開啟RIPng
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ripng 1 enable
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]ripng 1 enable
R3:
[Huawei]ripng 1------開啟RIPng
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]ripng 1 enable

七. OSPFv3:
運行IPv6的OSPFv3協議,基於OSPFv2基本原理並增強,是一個獨立的路由協議,協議號仍為89,Router ID仍然是一個32位的無符號整數
OSPv2和OSPv3取決去底層運行的協議類型,兩者無法兼容
1. OSPFv3/OSPFv2比較:
(1)相同點:
① 網絡類型和接口類型一致
② 接口狀態和鄰居狀態機一致
③ 鏈路狀態數據庫一致
④ 洪范機制一致
⑤ 相同類型的報文:Hello報文、DD報文、LSR報文、LSU報文、LSACK報文
⑥ 路由計算基本相同
(2)不同點:
① OSPFv3基於鏈路,而不是網段(MA網絡兩端地址可以不在同一網段)
② OSPFv3移除了IP地址的意義
③ OSPFv3支持同一鏈路上多個進程
④ OSPFv3利用IPv6鏈路本地地址
⑤ OSPFv3的報文及LSA格式發生改變
⑥ OSPFv3移除所有的認證字段
⑦ OSPFv3的LSA報文里增加了LSA的洪范范圍
⑧ 新增兩種LSA
① 基於鏈路運行:
接口上可以配置多個IPv6地址,即使兩端不在同一共享網段內,OSPFv3也能正常運行,在配置OSPFv3時,不需要考慮是否配置在同一個網段,只要在同一鏈路,就可以不配置IPv6全局地址(使用Link Local地址)而直接建立聯系

③ 移除IP地址:
a) 利用IPv6的本地鏈路地址來傳遞網絡拓撲信息,但是網絡拓撲信息里不包含IPv6地址
b) Router LSA和Network LSA只反映網絡拓撲信息
c) 采用專門的LSA來傳遞IPv6的前綴信息
d) Router ID、Area ID和LSA Link State ID仍然是IPv4地址格式(32位),不是IPv6地址
e) 鄰居由鄰居Router ID來標識
注:這樣做的目的是為了使“拓撲與地址分類”。OSPFv3可以不依賴IPv6全局地址的配置來計算OSPFv3的拓撲結構。IPv6全局地址僅用於Vlink接口及報文的轉發
④ 同一鏈路多實例:
在OSPF報文頭中增加了Instance ID字段,實現OSPF多實例化,鏈接(Link)多實例化,在一條鏈路上可以運行多個OSPFv3協議實例

在配置OSPF進程的時候可以配置實例,相同的實例才會形成鄰居關系,默認處於實例0中
注:相同實例的接口才會建立鄰居,當接口實例與路由實例相同才會被傳遞

① 配置IPv6地址
② 配置OSPFv3並配置實例:
R1:
[Huawei]ospfv3 1
[Huawei-ospfv3-1]router-id 1.1.1.1
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ospfv3 1 area 0 instance 1
R2:
[Huawei]ospfv3 1
[Huawei-ospfv3-1]router-id 2.2.2.2
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ospfv3 1 area 0 instance 1
R3:
[Huawei]ospfv3 1
[Huawei-ospfv3-1]router-id 3.3.3.3
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ospfv3 1 area 0 instance 2
R4:
[Huawei]ospfv3 1
[Huawei-ospfv3-1]router-id 4.4.4.4
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ospfv3 1 area 0 instance 2

⑤ 利用IPv6鏈路本地地址:
OSPFv3是運行在IPv6上的路由協議,同樣適用鏈路本地地址維持鄰居關系,同步LSA數據庫。除Vlink外的所有OSPFv3接口都使用鏈路本地地址作為源地址及下一跳來發送OSPFv3報文。
好處:
- 不需要配置IPv6全局地址,就可以得到OSPFv3拓撲,實現拓撲與地址分離
- 通過鏈路上泛洪的報文不會傳到其他鏈路上,來減少報文不必要的泛洪來節省帶寬

⑥ 報文格式的變化:
OSPv3針對OSPFv2,除了Hello報文,其他報文的內容格式基本保持不變。
OSPFv3變化:
a) 不包含Network Mask
b) 基於Link運行,不基於Subnet運行
c) 包含Interface ID信息
d) OSPFv3中 Router LSA中包含Neighbor Interface ID
1)報文頭部變化:
- 驗證的變化:
OSPFv3報文頭中不在包含Autype和Authentication,而依賴IPv6的擴展驗證頭
- 增加了實例認證字段
- 校驗和(Checksum)變化:

a) OSPFv2校驗和只校驗LSA,IPv4三層部分有自己的校驗信息
b) OSPFv3使用IPv6標准的CheckSum,由於IPv6中不存在校驗和,所以OSPFv3報文頭部中的校驗和會將IPv6和LSA一起校驗

a) Version:版本,對於OSPFv2,該值為2;對於OSPFv3則是3
b) Type:報文類型:
- 1:hello包
- 2:DD報文
- 3:LSR
- 4:LSU
- 5:LSAck
c) Packet Length:報文長度
d) Area ID:區域ID
e) Checksum:校驗和
f) Instance ID:鏈路實例ID
g) Reserved:保留字段,總為0

2)Hello報文的變化:

① 將OSPFv2 Hello報文中的網絡掩碼變為Interface ID,由於OSPF與IP地址分離,所以使用Interface ID代替接口IP進行鄰居的ID描述
② 增加了Options的選項,總共為24位

注:在Hello報文、DD報文和某些LSA(Router-LSA、Network-LSA、Inter-Area-Prefix-LSA和Link-LSA)
3)LSA變化:

① 取消了Options選項
② 增大了LS Type內容:
- U位:用於處理未知類型的LSA,當接收到一條LSA無法識別時,查看U位,將此
條LSA如何處理
| 0 |
當做Link-Local范圍的lSA處理 |
| 1 |
存儲並泛洪LSA |
- S2、S1:組合使用表示此條LSA泛洪的范圍:
| S2 |
S1 |
泛洪范圍 |
| 0 |
0 |
Link-Local范圍 |
| 0 |
1 |
Area范圍 |
| 1 |
0 |
AS范圍 |
| 1 |
1 |
保留值 |

不同LSA的LS Type描述:
① 第三位用來表示傳遞的范圍:
- 2表示區域內傳遞
- 4表示AS內傳遞
- 0表示鏈路傳遞
② 最后一位表示LSA的類型

⑦ 新增一種網絡類型:
OSPFv3的接口類型有以下五種:
- 點到點(P2P)接口
- 點到多點(P2MP)接口
- 點到多點非廣播(P2MP non-broadcast)接口
- 廣播(Broadcast)接口
- NBMA(Non-broadcast Multi-access)接口
2. LSA:
每種LSA都包含頭部和具體內容,頭部內容如下:

① LS Age :老化時間
② LS Type:LSA類型
③ Link State ID:鏈路狀態ID,每種LSA表示方式不同
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列號
⑥ Checksum:校驗和
⑦ Length:長度
⑧ Flage:置位符
⑨ Options:選項
- OSPFv3針對OSPFv2對每條LSA中的LS ID做了修改:
| LSA |
OSPPFv2 LS ID |
OSPFv3 LS ID |
| Router LSA |
Router ID |
本地唯一的32位整數 |
| Network LSA |
DR所在IPv4網段IP |
DR的接口Interface ID |
| Type 4 LSA |
ASBR的Router ID |
本地唯一的32位整數 |
| Type3、Type5、Type7 LSA |
IPv4網段 |
本地唯一的32位整數 |
| Link-LSA |
|
所在接口的Interface ID |
| Intra-Area-Prefix LSA |
|
本地唯一的32位整數 |
- Options選項含義:
| 選項類型 |
含義 |
| V6 |
如果位0,將Router/Link將不參與IPv6路由計算 |
| E |
如果位0,不支持AS External LSA泛洪 |
| MC |
與多播有關 |
| N |
是否在NSS區域 |
| R |
是否為Active Router,如果位0,該Router不轉發本地報文 |
| DC |
是否支持撥號 |
(1)Router LSA:
用於描述和誰有OSPF連接關系,一台路由器為每個區域產生一個Router LSA,區域范圍內泛洪,不存在任何的IP信息


- LSA頭部:
① LS Age :老化時間
② LS Type:LSA類型
③ Link State ID:鏈路狀態ID,本地唯一的32位整數
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列號
⑥ Checksum:校驗和
⑦ Length:長度
⑧ Flage:置位符
⑨ Options:選項
- LSA內容:
① Link connected to:鏈路類型
② Metric:度量值
③ Interface ID:接口標識
④ Neighbor Interface ID:鄰居的Interface ID
⑤ Neighbor Router ID:鄰居的Router ID
鏈路類型對應的鄰居Router ID鄰居Interface ID:
| 類型 |
描述 |
鄰居Router ID |
鄰居Interface ID |
| 1 |
P2P |
鄰居Router ID |
鄰居的Interface ID |
| 2 |
Trants net |
DR的Router ID |
DR的Interface ID |
| 3 |
保留 |
|
|
| 4 |
虛鏈接 |
鄰居Router ID |
鄰居的Vlink Interface ID |
注:IPv4中的Stub Net用來表示網段信息,由於IPv6將拓撲與IP網段分離,所以取消了Stub Net類型,並將Stub Net所表達的信息放在了LSA9
(2)Network LSA:
由DR產生,描述該鏈路上與DR有FULL關系的所有路由器區域范圍內泛洪


- LSA頭部:
① LS Age :老化時間
② LS Type:LSA類型
③ Link State ID:鏈路狀態ID,DR的Interface ID(對應的1類的32位整數)
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列號
⑥ Checksum:校驗和
⑦ Length:長度
⑧ Options:選項
- LSA內容:
① Attached Router:形成Full關系的鄰居Router ID
注:已無網段掩碼信息
(3)Inter-Area-Prefix-LSA:
- 邊界路由器(ABR)產生的第三類LSA,在Area范圍內洪范
- 描述了到本區域其他區域的路由信息
- 每個Inter-Area-Prefix LSA包含一條地址前綴信息
- 該LSA中不包含Link-Local地址信息
- 使用32位整數作為Link State ID來區分相同的LSA

LSA頭部:
① LS Age :老化時間
② LS Type:LSA類型
③ Link State ID:鏈路狀態ID,三類表示第幾條路由前綴
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列號
⑥ Checksum:校驗和
⑦ Length:長度
- LSA內容:
① Prefix:路由信息
(4)Inter-Area-Router LSA:
邊界路由器(ABR)產生的4類LSA,在Area范圍內洪范,描述了本AS內其他區域的ASBR路由信息,每個Inter-Area-Router LSA包含一個ASBR路由器信息,LSA中的能力選項(Options)與所描述的ASBR Router LSA中能力選項(Options)保持一致,使用32位整數作為Link State ID來區分相同的LSA

LSA頭部:
① LS Age :老化時間
② LS Type:LSA類型
③ Link State ID:鏈路狀態ID,此處為ASBR的Router-ID
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列號
⑥ Checksum:校驗和
⑦ Length:長度
⑧ Options:選項
- LSA內容:
① Destination Router:目標ASBR的地址
另一區域的路由器想要去往外部路由,查看五類LSA,去往外部路由的ASBR的Router ID,但並不知道ASBR的Ipv6地址,此時查看四類LSA,可以得知去往ASBR的ABR地址,直接將數據包送往ABR
(5)AS-External LSA:
五類LSA,由ASBR路由產生,描述了區域外的路由信息,具有資質系統(AS)泛洪范圍
- Link State ID不再是ASBR Router ID,只是來和其他AS-External-LSA區分開來
- AS-External-LSA不含有Link-Local地址信息
- 可選項:
a) 轉發(Forwarding)地址
b) Tag標簽
c) Referenced Link State ID:保留字段

LSA頭部:
① LS Age :老化時間
② LS Type:LSA類型
③ Link State ID:鏈路狀態ID,表示第幾條路由前綴
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列號
⑥ Checksum:校驗和
⑦ Length:長度
⑧ Flage:置位符
- LSA內容:
① Metric Type:引入類型,默認為E2
② Prefix:前綴路由
③ Prefix Options:前綴選項
④ Tag:標簽值
(6)Group membership LSA:
Type-6 LSA,組成員LSA,用於OSPF組播。
(7)NSSA External LSA:
Type-7 LSA,NSSA外部LSA,它是由NSSA區域或Totally NSSA區域的NSSA ASBR產生的,用來描述NSSA區域或Totally NSSA區域所連接的AS外部路由。NSSA LSA只能出現在所屬NSSA區域或Totally NSSA區域內部。

LSA頭部:
① LS Age :老化時間
② LS Type:LSA類型
③ Link State ID:鏈路狀態ID,本地唯一的32位整數
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列號
⑥ Checksum:校驗和
⑦ Length:長度
⑧ Flage:置位符
- LSA內容:
① Metric Type:引入類型,默認為E2
② Prefix:前綴路由
③ Prefix Options:前綴選項
④ Tag:標簽值
(8)Link LSA:
鏈路LSA,Type8,每個連接的鏈路產生一個Link LSA,只在一段鏈路上泛洪
作用:
① 向該鏈路上其他路由器通知本地的Link-Local地址,即到本地的下一跳地址
② 收集本路由器在每條鏈路上對應的IPv6地址,並通知該鏈路上其他路由器
③ 向Network LSA提供選項信息,通告鏈路上所有的Link-LSA,與運算操作得到的該鏈路上Network LSA中選項信息
注:總體作用讓鄰居得到本端的Link-Local地址和接口前綴地址


- LSA頭部:
① LS Age :老化時間
② LS Type:LSA類型
③ Link State ID:鏈路狀態ID,本路由器的Interface ID
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列號
⑥ Checksum:校驗和
⑦ Length:長度
⑧ Rtr Pri:Router Priority,路由優先級,該路由器在鏈路上的優先級
⑨ Options:選項
- LSA內容:
① Options:提供Network LSA的Options
② Link Local Address:路由器與該鏈路相連的接口配置的Link Local地址(Link Local地址只出現在Link LSA中)
③ Number ofPrefix:該LSA中攜帶了多少IPv6地址
④ Prefix:IPv6前綴
⑤ 其他:Prefix三元素
(9)Intra-Area-Prefix-LSA:
區域內部前綴LSA,Intra-Area-Prefix-LSA攜帶區域內IPv6 Prefix信息,用來描述一類LSA和二類LSA的網絡信息
IPv6引入Intra-Area-Prefix-LSA的原因:
OSPFv2中,依附於路由器和Stub出現在Router LSA中,依附於Transit網絡subnet出現在Network LSA中,OSPFv3中,Router LSA和Network LSA不在包含地址信息,所以引入Intra-Area-Prefix LSA。
- 依附於路由器(環回口)的Prefix------------------類型為2001
- 依附於Stub網絡的Prefix------------------------------類型為2003
- 依附於Transit網絡的Prefix---------------------------類型為2002
注1:每台路由器或Transit網絡可以產生多個Intra-Area-Prefix LSA
注2:總體作用是描述一個區域內的前綴路由


LSA頭部:
① LS Age :老化時間
② LS Type:LSA類型
③ Link State ID:鏈路狀態ID,如果服務於類型1則為0.0.0.1;如果服務於類型2則為0.0.0.2
④ Originating Router:生成此LSA的Router ID
⑤ LS Seq Number:LSA序列號
⑥ Checksum:校驗和
⑦ Length:長度
- LSA內容:
① Number of Prefix:前綴路由數量
② Referenced LS Type:路由類型
- 依附於路由器(環回口)的Prefix------------------類型為2001
- 依附於Stub網絡的Prefix------------------------------類型為2003
- 依附於Transit網絡的Prefix---------------------------類型為2002
③ Referenced Originating Router:生詞路由的Router ID
④ Prefix:路由信息
3. OSPFv3常見配置:
(1)NBMA網絡下單播指鄰居:
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]ospfv3 peer router-id 1.1.1.1 FE80::2E0:FCFF:FEA1:AAD—與對端建立鄰居,目標地址為對端Link Local地址
(2)虛鏈路配置:
[Huawei]ospfv3
[Huawei-ospfv3-1]area 1
[Huawei-ospfv3-1-area-0.0.0.1]vlink-peer ec::1
(3)OSPFv3匯總:
① 三類路由匯總:
[Huawei]ospfv3
[Huawei-ospfv3-1]ar 0
[Huawei-ospfv3-1-area-0.0.0.0]abr-summary ec:: 64
② 五類路由匯總:
[Huawei]ospfv3
[Huawei-ospfv3-1]asbr-summary ec:: 64
(4)FR配置:
由於OSPFv3使用Link Local地址傳送LSA,所以FR配置Maping映射時不僅要將IP地址和DLCI映射,還要配置將Link Local地址和DLCI映射((AR系列無法配置))
(5)認證:
OSPFv3數據包頭部取消了認證字段,采用IPv6擴展包中的字段進行認證(AR系列無法配置)
八. IS-ISv6:
IS-IS最初是為OSI網絡設計的一種基於鏈路狀態算法的動態路由協議,之后為了提供IPv4的路由支持,擴展應用到IPv4網絡,稱為集成化IS-IS。
隨着IPv6網絡的建設,同樣需要動態路由協議為IPv6報文的轉發提供准確有效的路由信息。IS-IS路由協議結合自身具有良好的擴展性的特點,實現了IPv6網絡層。
協議的支持,可以發現和生成IPv6路由,支持IPv6協議的IS-IS路由協議又稱為ISISv6動態路由協議。
1. IS-ISv6的增強:
IS-ISv6在IS-IS的基礎上新增了兩種TLV用於支持IPv6路由,IS-IS使用TLV表示,TLV具有很強的擴展性,是其他協議無法比擬的,例如OSPFv2由於無法支持IPv6,所以需要重新編譯新的OSPFv3以實現對IPv6的支持,但TLV具有很好的擴展性,所以IS-IS只需要在原來的基礎上增加新的TLV就可以實現對IPv6的支持,通過TLV實現對IPv6的支持
- 236號TLV:
定義路由信息前綴、度量值等信息來說明網絡的可達性
- 232號TLV:
相當於IPv4中的“IP Interface Address”TLV,只不過把原理的32比特的IPv4地址改為128比特的IPv6地址
(1)236號TLV:
IS-ISv6中的IPv6可達性TLV對應於IS-IS中的普通可達性TLV(type-length-value)和擴展可達性TLV,定義路由信息前綴、度量值等信息來說明網絡的可達性

① Code: 取值為236,表示該CLV時IPv6可達性CLV
② Length:CLV長度
③ Metric:度量值,使用擴展的Metric值,取值范圍為0~4261412864,大於4261412864
的IPv6可達性信息都被忽略掉
④ U:Up/Down狀態標志位,用來防止路由環路,當某個路由從Level-2路由傳播到Level-1
路由器時,這個位置位1,從而保證了這樣的路由不會被回環
⑤ X:外部路由引入標識,取值1標識該路由是從其他協議引入的
⑥ S:當CLV中不攜帶Sub-CLV時,S位置在“0”否則置“1”,標識IPv6前綴后面跟隨Sub-CLV
信息
⑦ Reserve:保留位
⑧ Prefix Length:該路由器可以達到的IPv6路由前綴長度
⑨ Prefix:該路由器可以到達的IPv6路由前綴
⑩ Sub-CLV/Sub-CLV Length:Sub-CLV字段以及Sub-CLV字段長度,該選項用於以后擴展用
(2)232號TLV:
相當於IPv4中的“IP Interface Address”TLV,只不過把原理的32比特的IPv4地址改為128比特的IPv6地址

① Code:取值為232,表示該CLV類型是IPv6接口地址CLV
② Length:CLV長度
③ Interface Address:使能IS-ISv6功能的接口IPv6地址,Hello報文中接口IPv6鏈路本地
地址,LSP報文中探入的是使能了IS-ISv6功能的非IPv6鏈路本地地
址,即接口的IPv6全球單播地址
④ *:表示該選項可選
2. IS-ISv6配置:

① 配置IPv6地址
② 啟用IS-ISv6:
AR1:
[Huawei]isis
[Huawei-isis-1]network-entity 49.0001.0000.0000.1111.00
[Huawei-isis-1]is-level level-2
[Huawei-isis-1]is-name AR2
[Huawei-isis-1]ipv6 enable
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]isis ipv6 enable
[Huawei]inter loo 0
[Huawei-LoopBack0]isis ipv6 enable
AR2:
[Huawei]isis
[Huawei-isis-1]network-entity 49.0001.0000.0000.2222.00
[Huawei-isis-1]is-level level-2
[Huawei-isis-1]is-name AR2
[Huawei]inter g0/0/0
[Huawei-isis-1]ipv6 enable
[Huawei-GigabitEthernet0/0/0]isis ipv6 enable

九. BGP4+:
傳統的BGP-4只能管理IPv4單播路由信息,對於使用其他網絡層協議(如IPv6、組播等)的應用,在跨AS傳播時就受到一定的限制。BGP多協議擴展MP-BGP(MultiProtocol BGP)就是為了提供多種網絡層協議的支持,對BGP-4進行擴展。目前MP-BGP標准時RFC-4760,使用擴展屬性和地址族來實現對IPv6、組播和VPN相關內容的支持,BGP協議原有的報文機制和路由機制並沒有改變。
MP-BGP對IPv6單播網絡的支持特性稱為BGP4+,對IPv4組播網絡的支持特性稱為MBGP(Multicast BGP)。MP-BGP為IPv6單播網絡和IPv4組播網絡建立獨立的拓撲結構,並將路由信息儲存在獨立的路由表中,保持單播IPv4網絡、單播IPv6網絡和組播網絡之間路由信息相互隔離,也就實現了用單獨的路由策略維護各自網絡的路由。
1. BGP4+的增強:
為實現對多種網絡協議的支持,BGP需要將網絡層協議的信息反映到NLRI及Next_Hop。因此MP-BGP引入了兩個新的可選非過渡路徑屬性
分別為:
① MP_REACH_NLRI:多協議可達NLRI,用於發布可達路由及下一跳信息,當需要將IPv6路由更新給鄰居時,發送Update報文,Update報文中使用MP_REACH_NLRI信息包含所更新的路由

② MP_UNREACH_NLRI:多協議不可達NLRI,用於撤銷不可達路由,當需要讓鄰居撤銷掉IPv6路由給時,發送Update報文,Update報文中使用MP_UNREACH_NLRI信息包含所撤銷的路由

2. BGP4+配置:

(1)BGP4+常規配置:
① 配置IPv6地址
② AS200內配置IGPv6路由
③ 配置EBGP:
AR5:
[Huawei]bgp 100
[Huawei-bgp]router-id 5.5.5.5
[Huawei-bgp]undo default ipv4-unicast
[Huawei-bgp]peer 2013::2 as-number 200---如果使用LinLocal地址,則增加connect-interface,在IBGP中,在傳遞使用LinkLocal建立鄰居傳遞的路由時,自動是使用next-Hop-Local命令
[Huawei-bgp]ipv6-family unicast
[Huawei-bgp-af-ipv6]peer 2013::2 enable
[Huawei-bgp-af-ipv6]network 2015::1 128-------宣告路由(如果為64位,只寫前綴)
AR1:
[Huawei]bgp 200
[Huawei-bgp]router-id 1.1.1.1
[Huawei-bgp]undo default ipv4-unicast
[Huawei-bgp]peer 2013::1 as-number 100
[Huawei-bgp]ipv6-family unicast
[Huawei-bgp-af-ipv6]peer 2013::1 enable


④ 配置IBGP:
AR1:
[Huawei]bgp 200
[Huawei-bgp]router-id 1.1.1.1
[Huawei-bgp]undo default ipv4-unicast
[Huawei-bgp]peer 2014::1 as-number 100
[Huawei-bgp]peer 2014::1 connect-interface LoopBack 0
[Huawei-bgp]ipv6-family unicast
[Huawei-bgp-af-ipv6]peer 2014::1 enable
[Huawei-bgp-af-ipv6]peer 2014::1 next-hop-local
AR2:
[Huawei]bgp 200
[Huawei-bgp]router-id 2.2.2.2
[Huawei-bgp]undo default ipv4-unicast
[Huawei-bgp]peer ec::1 as-number 100
[Huawei-bgp]peer ec::1 connect-interface LoopBack 0
[Huawei-bgp]ipv6-family unicast
[Huawei-bgp-af-ipv6]peer ec::1 enable
[Huawei-bgp-af-ipv6]peer ec::1 next-hop-local
(2)BGP4+RR配置:
AR2:
[Huawei]bgp 200
[Huawei-bgp-af-ipv6]reflector cluster-id 2.2.2.2
[Huawei-bgp-af-ipv6]peer 2012::2 reflect-client
[Huawei-bgp-af-ipv6]peer ed::2 reflect-client
十. IPv6組播:
一個發送者需要同時向多個接收者發送完全相同的信息時,如果采用單播方式,則網絡需要傳輸大量的報文,相比之下,采用組播的方式可以大大減少需要傳輸的報文數量,從而可以節約大量的網絡資源。隨着Internet的不斷發展,電子商務,網絡會議、視頻點播、遠程教學等服務大量興起,這些服務大多符合點到多點的模式,特別適合於IP組播的應用。
IPv6組播用於在IPv6網絡中傳遞組播流量,使用PIM協議+MLD協議進行組播的傳遞與接收

1. IPv6組播地址:
(1)組播IP地址:
IPv6組播地址使用為FF開頭的組播地址,並且Flag位為1(臨時分配),Scope位為4、5、8(臨時的組播地址,用於組播)

組成方式:FF(8bit)+Flag(4bit)+Scope(4bit)
- FF:前8bit固定不變,全部為1,表示為組播地址
- Flage:前3位固定為0,最后一位定義地址類型:
c) 最后一位為0,固定或眾所周知的,由IANA分配
d) 最后一位為1,本地分配或短期臨時,不永久分配
- Scope:表示組播組的范圍
c) 2—Link-Locol,表示僅在本網段鏈路上傳送
d) 4、5、8—臨時的組播地址范圍
(2)組播MAC地址:
和組播IPv4相同,IPv6組播中的MAC地址依舊采用映射的方法。
前16bit固定不變:3333

(3)動態IPv6組播地址分配:
IANA並沒有規定IPv6全球組播組映射,所以運營商或者是任何機構都可以隨便使用組播地址在公網中傳遞組播數據,但如果公網上出現了相同的組播組IP,會造成組播數據通信問題,所以此時使用了一種新的技術動態的分配IPv6組播IP,解決可能造成的組播地址沖突問題。
RFC 3306規定了一種動態分配IPv6組播地址的方式——基於單播前綴的IPv6組播地址,這種IPv6組播地址中包含了其組播源網絡的單播地址前綴,通過這種方式分配全局唯一的組播地址。

① flgs:
- T:為1表示這個地址是非永久分配組播地址
- P:為1表示他是一個機遇單播前綴的IPv6組播地址
② plen:表示內嵌的單播網絡前綴的確切長度
③ network prefix:表示該組播地址中內嵌的單播網絡前綴
(4)內嵌RP地址的IPv6組播地址:
在組播地址中內嵌RP地址,只需要對接收到組播報文進行分析即可知道RP地址

① flgs:
- T:為1表示這個地址是非永久分配組播地址
- P:為1表示他是一個機遇單播前綴的IPv6組播地址
- R:為1表示這是一個內嵌RP地址的IPv6地址
② RIID:RP的路由器的接口ID(RP Interface ID)
③ plen:表示RP地址的確切長度
④ network prefix:表示該組播RP地址單播網絡前綴


2. MLD協議:
MLD協議用於主機與最后一跳路由器進行交互,其作用是在用戶主機和與其直連的組播路由器之間建立和維護組播組成員關系,實際使用的為ICMPv6報文。
用於IPv6組播中的組成員管理,基本功能和IGMP相似,使用ICMPv6消息類型(Nextheader=58)。
當前MLD有兩個版本:
① MLDv1,源自於IGMPv2
② MLDv2,源自於IGMPv3
注:MLD存在擴展報頭,hop-by-hop選型,使能Router處理MLD報文
(1)MLDv1:
繼承了IGMPv2的工作機制,路由器發出兩種類型的查詢報文,主機發送報告相應。主機離開時發送離開報文。

① 查詢器的選舉:
當一個接收者網段內存在多台路由器,會選取其中一台作為查詢器,用於成員組的查詢,此時不在依據ICMPv2中選舉全局接口地址小的為查詢器,而是選舉link local地址小的為查詢器
② Last-report選舉:
和IGMPv2機制一樣:
查詢器周期發送Query報文探測組播組中是否還存在設備,當組播組中存在設備,收到Query的主機都會回復Report報文進行相應,首先回應的設備作為
Last-report,並在Query再次查詢時,只由Last-report進行回復。
③ 普遍組/特定組查詢:
和IGMPv2一致:
- 在一個組中,當普通組成員離開時,不會發送發送Leave message給路由器,因為此時last-reporter設備還在組內,所以路由器依舊要維護此組信息
- 當Last-report離開時,會發送leave message信息通知路由器,此時路由器會會進行指定組查詢功能,立刻發送Qurey報文查詢當前組播組內是否還存在設備,每隔一秒發送一次query(pc離開的組地址),,默認發送兩次,如果無響應認為當前組播中無設備。
- 如果組播組中還存在接收源,接收源在收到特定組查詢后,啟動隨機計時器(0~1S),計時器超時,立刻發送Report報文進行響應,最先響應的為新的Last-report。
(2)MLDv2:
對IPv6組播源做了過濾,和ICMPv3基本一致。
3. IPv6組播配置:
注:AR系列路由器不支持

① 配置接口IPv6地址
② 配置IGP路由協議
③ 運行組播路由器配置:
[Huawei]multicast ipv6 routing-enable-------開啟IPv6組播功能
[Huawei]pim-ipv6------開啟PIM-ipv6協議
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]pim ipv6 sm-------接口開啟組播PIM協議,為SM模式
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]pim ipv6 sm-------接口開啟組播PIM協議,為SM模式
④ 配置RP:
- 靜態配置:
[Huawei]pim-ipv6
[Huawei-pim]static-rp ef:1
- BSRP/RP動態選舉:
[Huawei]pim-ipv6
[Huawei-pim]c-bsr LoopBack 0
[Huawei-pim]c-bsr priority 100
[Huawei-pim]c-rp priority 100—設置rp優先級為100(越小越優先)
[Huawei-pim]c-rp LoopBack 0----將Loopback0作為接口選舉(越大越優先)
十一. IPv6過渡技術:
當前主流依舊為IPv4,並逐漸向IPv6過渡的趨勢,所以當前網絡會存在IPv4和IPv6共存的現象,所以要實現IPv4和IPv6通信,需要使用IPv6過渡技術。
1. 雙棧技術:
雙棧技術是IPv4向IPv6過渡的一種有效的技術。網絡中的節點同時支持IPv4和IPv6協議棧,源節點根據目的節點的不同選用不同的協議棧,而網絡設備根據報文的協議類型選擇不同的協議棧進行處理和轉發。雙棧可以在一個單一的設備上實現,也可以是一個雙棧骨干網。對於雙棧骨干網,其中的所有設備必須同時支持IPv4/IPv6協議棧,連接雙棧網絡的接口必須同時配置IPv4地址和IPv6地址。單協議棧和雙協議棧結構示例如圖1所示。

雙棧協議具有以下特點:
- 多種鏈路協議支持雙棧:
多種鏈路協議(如以太網)支持雙棧協議。如果鏈路是以太網,在以太網幀上,如果協議字段的值為0X0800,表示網絡層收到的IPv4報文,如果為0X86DD,表示網絡層是IPv6報文
- 多種應用協議支持雙棧協議:
多種應用(如DNS/FTP/telnet等)支持雙棧協議。上層應用(如DNS)可以選用TCP或UDP作為傳輸層的協議,但優選IPv6協議棧,而不是IPv4協議棧作為網絡層協議

如圖所示,主機向DNS服務器發送DNS請求報文,請求域名www.example.com對應的IP地址。DNS服務器將回復該域名對應的IP地址。如圖所示,該IP地址可能是10.1.1.1或3ffe:yyyy::1。主機系統發送A類查詢,則向DNS服務器請求對應的IPv4地址;系統發送AAAA查詢,則向DNS服務器請求對應的IPv6地址。
圖中Router支持雙協議棧功能。如果主機訪問IPv4地址為10.1.1.1的網絡服務器,則可以通過Router的IPv4協議棧訪問目標節點。如果主機訪問IPv6地址為3ffe:yyyy::1的網絡服務器,則可以通過Router的IPv6協議棧訪問目標節點。
2. 隧道技術:
隧道技術(Tunnel)是一種封裝技術。它利用一種網絡協議來傳輸另一種網絡協議,即利用一種網絡傳輸協議,將其他協議產生的數據報文封裝在自身的報文中,然后在網絡中傳輸。隧道是一個虛擬的點對點的連接。一個Tunnel提供了一條使封裝的數據報文能夠傳輸的通路,並且在一個Tunnel的兩端可以分別對數據報文進行封裝及解封裝。隧道技術就是指包括數據封裝、傳輸和解封裝在內的全過程。隧道技術是IPv6向IPv4過渡的一個重要手段。由於IPv4地址的枯竭和IPv6的先進性,IPv4過渡為IPv6勢在必行。因為IPv6與IPv4的不兼容性,所以需要對原有的IPv4設備進行替換。但是IPv4設備大量替換所需成本會非常巨大,且現網運行的業務也會中斷,顯然並不可行。所以,IPv4向IPv6過渡是一個漸進的過程。在過渡初期,IPv4網絡已經大量部署,而IPv6網絡只是散落在各地的“孤島”,IPv6 over IPv4隧道就是通過隧道技術,使IPv6報文在IPv4網絡中傳輸,實現IPv6網絡之間的孤島互連。
(1)IPv6 over IPv4 隧道原理:

① 邊界設備啟動IPv4/IPv6雙協議棧,並配置IPv6 over IPv4隧道。
② 邊界設備在收到從IPv6網絡側發來的報文后,如果報文的目的地址不是自身且下一跳出③ 接口為Tunnel接口,就要把收到的IPv6報文作為數據部分,加上IPv4報文頭,封裝成
IPv4報文。
④ 在IPv4網絡中,封裝后的報文被傳遞到對端的邊界設備。
⑤ 對端邊界設備對報文解封裝,去掉IPv4報文頭,然后將解封裝后的IPv6報文發送到IPv6網絡中。
(2)IPv6 over IPv4隧道分類:
① 手動隧道:
a) IPv6 over IPv4手動隧道:
手動隧道直接把IPv6報文封裝到IPv4報文中去,IPv6報文作為IPv4報文的凈載荷。手動隧道的源地址和目的地址也是手工指定的,它提供了一個點到點的連接。手動隧道可以建立在兩個邊界路由器之間為被IPv4網絡分離的IPv6網絡提供穩定的連接,或建立在終端系統與邊界路由器之間為終端系統訪問IPv6網絡提供連接。隧道的邊界設備必須支持IPv6/IPv4雙協議棧。其它設備只需實現單協議棧即可。因為手動隧道要求在設備上手工配置隧道的源地址和目的地址,如果一個邊界設備要與多個設備建立手動隧道,就需要在設備上配置多個隧道,配置比較麻煩。所以手動隧道通常用於兩個邊界路由器之間,為兩個IPv6網絡提供連接。

IPv6 over IPv4手動隧道轉發機制為:當隧道邊界設備的IPv6側收到一個IPv6報文后, 根據IPv6報文的目的地址查找IPv6路由轉發表,如果該報文是從此虛擬隧道接口轉發出去,則根據隧道接口配置的隧道源端和目的端的IPv4地址進行封裝。封裝后的報文變成一個IPv4報文,交給IPv4協議棧處理。報文通過IPv4網絡轉發到隧道的終點。隧道終點收到一個隧道協議報文后,進行隧道解封裝。並將解封裝后的報文交給IPv6協議棧處理。

首先保證各個域中的IGP路由能夠通信
在雙棧協議設備上配置:
- 首先啟用Tunnel隧道:
AR2:
[Huawei]inter Tunnel 0/0/100------新建隧道端口0/0/100
[Huawei-Tunnel0/0/100]tunnel-protocol ipv6-ipv4--------隧道協議為IPv6到IPv4
[Huawei-Tunnel0/0/100]source 192.168.1.1----------------源地址(可用環回口地址增強冗余)
[Huawei-Tunnel0/0/100]destination 192.168.1.2-------目標地址(英文看准確,不是備注的英文)
[Huawei-Tunnel0/0/100]ipv6 enable
[Huawei-Tunnel0/0/100]ipv6 address 2015::1/64-----------配置隧道地址為2015::1/64
AR3:
[Huawei]inter Tunnel 0/0/100------新建隧道端口0/0/100
[Huawei-Tunnel0/0/100]tunnel-protocol ipv6-ipv4--------隧道協議為IPv6到IPv4
[Huawei-Tunnel0/0/100]source 192.168.1.2---------------源地址(可用環回口地址增強冗余)
[Huawei-Tunnel0/0/100]destination 192.168.1.1-------目標地址(英文看准確,不是備注的英文)
[Huawei-Tunnel0/0/100]ipv6 enable
[Huawei-Tunnel0/0/100]ipv6 address 2015::2/64-----------配置隧道地址為2015::2/64

- 將隧道加入到IPv6域IGP協議中:
AR2:
[Huawei]inter Tunnel 0/0/100
[Huawei-Tunnel0/0/100]ospfv3 1 ar 0
AR3:
[Huawei]inter Tunnel 0/0/100
[Huawei-Tunnel0/0/100]ospfv3 1 ar 0

b) IPv6 over IPv4 GRE隧道:
與手動隧道基本一致,在IPv4和IPv6中間增加了GRE報文字段

② 自動隧道:
自動隧道中,用戶僅需要配置設備隧道的起點,隧道的終點由設備自動生成。為了使設備能夠自動產生終點,隧道接口的IPv6地址采用內嵌IPv4地址的特殊IPv6地址形式。設備從IPv6報文中的目的IPv6地址中解析出IPv4地址,然后以這個IPv4地址代表的節點作為隧道的終點。
根據IPv6報文封裝的不同,自動隧道又可以分為IPv4兼容IPv6自動隧道、6to4隧道和ISATAP隧道三種。
a) IPv4兼容IPv6自動隧道
IPv4兼容IPv6自動隧道,其承載的IPv6報文的目的地址(即自動隧道所使用的特殊地址)是IPv4兼容IPv6地址。IPv4兼容IPv6地址的前96位全部為0,后32位為IPv4地址。

需要經過Router A發給Router B的IPv6報文到達Router A后,以目的地址::2.1.1.1查找IPv6路由,發現路由的下一跳為虛擬的Tunnel口。由於Router A上的配置的隧道的類型是IPv4兼容IPv6自動隧道。於是Router A對IPv6報文進行了封裝。封裝的時候,IPv6報文被封裝為IPv4報文,IPv4報文中的源地址為隧道的起始點地址1.1.1.1,而目IP地址直接從IPv4兼容IPv6地址::2.1.1.1的后32位拷貝過來即2.1.1.1。這個報文被路由器從隧道口發出后,在IPv4的網絡中被路由轉發到目的地2.1.1.1,也就是Router B。Router B收到報文后,進行解封裝,把其中的IPv6報文取出,送給IPv6協議棧進行處理。Router B返回Router A的報文也是按照這個過程來進行的。
注:如果IPv4兼容IPv6地址中的IPv4地址是廣播地址、組播地址、網絡廣播地址、出接口的子網廣播地址、全0地址、環回地址,則該IPv6報文被丟棄,不會進行隧道封裝處理。

AR2:
[Huawei]inter Tunnel 0/0/100------新建隧道端口0/0/100
[Huawei-Tunnel0/0/100]tunnel-protocol ipv6-ipv4 auto-tunnel------協議為IPv6到IPv4自動隧道
[Huawei-Tunnel0/0/100]source 192.168.1.1----------------源地址(無需配置目標地址)
[Huawei-Tunnel0/0/100]ipv6 enable
[Huawei-Tunnel0/0/100]ipv6 address ::192.168.1.2/96-----------------配置隧道地址后32位必須為對端的IPv4地址
[Huawei]ipv6 route-static :: 0 ::192.168.1.2----配置缺省路由,此時缺省的下一跳封裝tunnel頭為192.168.1.2
R3:
[Huawei]inter Tunnel 0/0/100------新建隧道端口0/0/100
[Huawei-Tunnel0/0/100]tunnel-protocol ipv6-ipv4 auto-tunnel------協議為IPv6到IPv4自動隧道
[Huawei-Tunnel0/0/100]source 192.168.1.2---------------源地址(無需配置目標地址)
[Huawei-Tunnel0/0/100]ipv6 enable
[Huawei-Tunnel0/0/100]ipv6 address ::192.168.1.1/96-----------------配置隧道地址后32位必須為對端的IPv4地址
[Huawei]ipv6 route-static :: 0 ::192.168.1.1----配置缺省路由,此時缺省的下一跳封裝tunnel頭為192.168.1.1

- 配置完隧道之后,雙棧路由器會自動生成一條路由,目標網段為隧道IPv4兼容IPv6地址,下一跳為Tunnel隧道,只有存在這條路由,在訪問對端IPv4兼容IPv6地址時,才會使用IPv4兼容IPv6自動隧道技術,封裝新的IPv4頭部
- AR2 Tunnel隧道 IPv6地址::192.168.1.1訪問AR3的Tunnel隧道IPv6地址::192.168.2.2,根據IPv4兼容IPv6地址,AR2得知去往::192.168.2.2的外層IPv4目標地址為192.168.2.2,源IPv4 Source地址192.168.1.1,查找IPv4路由表,將數據包傳遞給AR2,所以可以根據目標IPv4兼容IPv6地址得出目的IPv4地址
- Client1生成數據包,目標地址為2013::1,傳遞給AR1,AR1上配置IPv6默認路由下一跳為AR2
- AR2收到數據包后,設備上配置靜態路由,下一跳地址為::192.168.1.2,如果雙棧路由器收到的數據包的目標IPv6地址並不是一個IPv4兼容IPv6地址,那么外層IPv4報頭封裝的目標地址為默認路由下一跳(IPv4兼容IPv6地址)轉換的IPv4地址
- AR2的默認路由下一跳地址為::192.168.1.2,是一個IPv4兼容IPv6地址,轉換的IPv4地址為192.168.1.2,所以外層報頭的目標地址為192.168.1.2,送給AR2
- AR2收到數據包后,拆掉外層報頭,IPv6目標地址為2013::1,將數據包送給Client2
注:兼容隧道只能實現端到端的通信,孤島到孤島的通信無法實現
b) 6to4隧道:
6to4隧道也屬於一種自動隧道,隧道也是使用內嵌在IPv6地址中的IPv4地址建立的。與IPv4
兼容自動隧道不同,6to4自動隧道支持Router到Router、Host到Router、Router到Host、
Host到Host。這是因為6to4地址是用IPv4地址做為網絡標識

- FP:可聚合全球單播地址的格式前綴(Format Prefix),其值為001。
- TLA:頂級聚合標識符(Top Level Aggregator),其值為0x0002。
- SLA:站點級聚合標識符(Site Level Aggregator)。
注:孤島中的設備IPv6地址規划有要求,其前綴前16bit必須為2002,后32bit為當前站點
6to4前綴地址為2002::/16,在其后面增加32bit的隧道源地址,得到2002:IPv4地址::/48。6to4地址的網絡前綴長度為64bit,其中前48bit(2002: a.b.c.d)被分配給路由器上的IPv4地址決定了,用戶不能改變,而后16位(SLA)是由用戶自己定義的。
6to4隧道詳解:

6to4隧道部署時,孤島中的IPv6地址前綴中必須包含當前雙棧路由器的出接口IP,這樣在對端訪問時,生成的IPv6數據包直接可以得知當前的目標IPv4地址。
- 當前右側孤島中的接口IP地址為192.186.1.1,所以當中的設備所屬的IPv6前綴為2002:192.168.1.1(轉16進制)
- 左側孤島訪問目標網絡時,目標地址為IPv6地址,格式為2002:192.168.1.1加主機地址,所以此時雙棧路由器可以直接根據目標IPv6地址查找到響應的對端IPv4路由
中繼網絡:

- 在已經部署好的孤島網絡實現6to4通信,但是孤島中的路由器並不是2002::+IPv4地址
- 如果6to4網絡2中的主機要與IPv6網絡互通,在其邊界路由器上配置路由指向的下一跳為6to4中繼路由器的6to4地址
- 中繼路由器的6to4地址是與中繼路由器的6to4隧道的源地址相匹配的。
- 6to4網絡2中去往普通IPv6網絡的報文都會按照路由表指示的下一跳發送到6to4中繼路由器。
- 6to4中繼路由器再將此報文轉發到純IPv6網絡中去。當報文返回時,6to4中繼路由器根據返回報文的目的地址(為6to4地址)進行IPv4報文頭封裝,數據就能夠順利到達6to4網絡中了。

c) ISATAP隧道:
ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)是另外一種自動隧道技術。ISATAP隧道同樣使用了內嵌IPv4地址的特殊IPv6地址形式,只是和6to4不同的是,6to4是使用IPv4地址做為網絡前綴,而ISATAP用IPv4地址做為接口標識。其接口標識符格式如圖10所示:

如果IPv4地址是全局唯一的,則u位為1,否則u位為0。g位是IEEE群體/個體標志。由於ISATAP是通過接口標識來表現的,所以,ISATAP地址有全局單播地址、鏈路本地地址、ULA地址、組播地址等形式。ISATAP地址的前64位是通過向ISATAP路由器發送請求來得到的,它可以進行地址自動配置。在ISATAP隧道的兩端設備之間可以運行ND協議。ISATAP隧道將IPv4網絡看作一個非廣播的點到多點的鏈路(NBMA)。
ISATAP過渡機制允許在現有的IPv4網絡內部署IPv6,該技術簡單而且擴展性很好,可以用於本地站點的過渡。ISATAP支持IPv6站點本地路由和全局IPv6路由域,以及自動IPv6隧道。ISATAP同時還可以與NAT結合,從而可以使用站點內部非全局唯一的IPv4地址。典型的ISATAP隧道應用是在站點內部,所以,其內嵌的IPv4地址不需要是全局唯一的。
圖11為ISATAP隧道一個典型應用場景:

如上圖所示,在IPv4網絡內部有兩個雙棧主機Host B和Host C,它們分別有一個私網IPv4地址。要使其具有ISATAP功能,需要進行如下操作:
- 首先配置ISATAP隧道接口,這時會根據IPv4地址生成ISATAP類型的接口ID。
- 根據接口ID生成一個ISATAP鏈路本地IPv6地址,生成鏈路本地地址以后,主機就有了在本地鏈路上進行IPv6通信的能力。
- 進行自動配置,主機獲得IPv6全球單播地址、ULA地址等。
- 當主機與其它IPv6主機進行通訊時,從隧道接口轉發,將從報文的下一跳IPv6地址中取出IPv4地址作為IPv4封裝的目的地址。如果目的主機在本站點內,則下一跳就是目的主機本身,如果目的主機不在本站點內,則下一跳為ISATAP路由器的地址。
