目錄

簡介

為什麼6PE在資料平面中使用兩個MPLS標籤？

相關資訊

簡介

本檔案將說明為什麼Cisco IOS© IPv6提供者邊緣路由器(6PE)在資料平面中使用兩個多重協定標籤交換(MPLS)標籤。

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

問：為什麼6PE在資料平面中使用兩個MPLS標籤？

A.6PE使用兩個標籤：

- 頂部標籤是傳輸標籤，由標籤分發協定(LDP)或MPLS流量工程(TE)逐跳分配。

- 底部標籤是由邊界網關協定(BGP)分配並由提供商邊緣(PE)路由器之間的內部BGP(iBGP)通告的標籤。

6PE發佈時，主要要求是MPLS核心路由器（P路由器）都不必須支援IPv6。這一要求促使人們需要在資料平面上放置兩個標籤。6PE需要兩個標籤的原因有兩個。

PHP功能

如果只使用傳輸標籤，並且使用倒數第二跳跳躍(PHP)，則倒數第二跳路由器（P路由器）需要瞭解IPv6。

使用PHP時，此倒數第二跳路由器需要刪除MPLS標籤並將資料包作為IPv6資料包轉發。此P路由器需要知道資料包是IPv6，因為P路由器需要對IPv6使用正確的第2層封裝型別。(IPv6和IPv4的封裝型別不同；例如，對於乙太網，IPv6的封裝型別是0x86DD，而IPv4的封裝型別是0x0800。) 如果倒數第二跳路由器不支援IPv6，則它可能將IPv4的第2層封裝型別用於IPv6資料包。輸出PE路由器隨後會認為資料包是IPv4。

IPv4和IPv6標頭中都存在生存時間(TTL)處理。在IPv6中，該欄位稱為跳數限制。IPv4和IPv6欄位位於報頭中的不同位置。此外，還需要更改IPv4報頭中的報頭校驗和；IPv6中沒有Header Checksum欄位。如果倒數第二跳路由器不支援IPv6，則會導致IPv6資料包格式錯誤，因為路由器期望在報頭中找到TTL欄位和Header Checksum欄位。

由於這些差異，倒數第二跳路由器需要知道它是IPv6資料包。此路由器如何知道資料包是IPv6資料包，因為它沒有為IPv6轉發等價類(FEC)分配標籤，並且在MPLS報頭中沒有封裝欄位？它可以掃描標籤堆疊後的第一個半位元組並確定資料包是IPv6（如果值為6）。但是，這意味著倒數第二跳路由器需要支援IPv6。

如果使用顯式null標籤（因此沒有PHP），則此方案可能會起作用。 然而，該決定是要求PHP。

負載平衡

P路由器上的典型負載平衡遵循此過程。P路由器會前往標籤堆疊的尾端，並透過檢視標籤堆疊後的第一個半位來判斷它是否為IPv4封包。

- 如果半位元組的值為4，則MPLS負載是IPv4資料包，P路由器通過雜湊源和目標IPv4地址來平衡負載。

- 如果P路由器支援IPv6，而nibble的值為6，則P路由器通過雜湊源和目標IPv6地址來平衡負載。

- 如果P路由器不支援IPv6，且半位元組的值不是4（如果資料包是IPv6資料包，則可能是6），則P路由器確定它不是IPv4資料包，並根據底部標籤做出負載均衡決策。

在6PE場景中，假設有兩個出口PE路由器向BGP中的入口PE路由器通告一個IPv6字首。此IPv6字首將在BGP中使用兩個不同的標籤進行通告。因此，在資料平面中，底部標籤將是兩個標籤中的一個。這將允許P路由器按流量對底部標籤進行負載均衡。

如果6PE僅使用傳輸標籤通過MPLS核心傳輸6PE資料包，則P路由器將無法逐流地負載均衡這些資料包，除非P路由器支援IPv6。如果P路由器支援IPv6，它們可以使用源和目的IPv6地址做出負載均衡決策。

相關資訊

- 技術支援與文件 - Cisco Systems