有關MPLS PHP?

如題,看文檔說php倒數第二跳彈出,減輕了LER的負擔,直接查找FIB表。到倒數第二跳的LSR不是要查兩次表了嗎?找LFIB發現是標籤3,彈出標籤再找FIB?

是這樣?

那php最大的優化就是減少了LER的負擔,但好像增加了倒數第二跳的負擔了。

請問大家我的思路是正確的嗎?


抓transit packets看一下, 正常的表現是, 只是signal 3(implicit null), 但並無實際的label=3發過來, 因為倒數第二跳直接就pop了.

核心問題其實不在這裡, PHP和UHP主要看你是不是MPLS VPN.

不管PHP還是UHP, VPN的情況下普通LSR(非倒數第二跳啊)有兩層標籤, 但只處理外層(靠外層標籤交換轉發數據咩~), 非VPN的情況下普通LSR有一層標籤.

(VPN咱叫個PE, 非VPN咱就叫LER了好伐)

比較關鍵的問題其實在最後一台SR上的處理.

VPN的情況:

PHP: 對EGRESS PE, incoming traffic 只有一層標籤, egress PE要pop這一層label 做本地IP lookup

UHP: 對EGRESS PE, incoming traffic 有兩層標籤, egress PE要pop這兩層label 做本地IP lookup

非VPN的情況:

PHP: 對EGRESS LER, incoming traffic是純IP, LER直接做路由查找

UHP: 對EGRESS LER, incoming traffic是一層標籤, LER要pop這層label 做本地IP lookup

性能方面, 以前有區別, 現在沒區別.

實際應用上IPv4怎麼都行, 但是IPv6一般是UHP, 因為有其他考慮(暫時想不起來是啥了, 想起來再說)


在cisco 平台上預設方式是PHP,即倒數第二跳只需要將有一個VPN的內層標籤的發給最後一跳設備。

那是因為最後一跳在和其鄰居交換LDP標籤時,知道自己是最終的目的地,舉個例子:比如最後一跳的loopback = 1.1.1.1,當為1.1.1.1 分配標籤時,可以使用label = 3,這個3 代表的是 隱式空標籤 ( implicit null label ), 意思是:老鄉們,不要發LDP 標籤給我了!

這樣倒數第二跳查LFIB表,發現對應的出標籤為3,立馬就懂了,這個是空標籤!兩個步驟:

1)pop 上一跳的LDP 標籤

2)將只有VPN標籤的包從出介面發送出去

最後一跳只需要查詢VPN標籤,找到對應的VRF,然後再查詢FIB表,找到出介面。


從實際需求和應用上講,LER作為邊緣路由器會被多條VPN共享而LSR則不一定。

所以你可以理解PHP是把一個LER的負擔分擔到多個LSR上,所以對於LER來說,確實是很減負的。

另外,對於LSR來說,都只需要查LFIB。區別在於,沒PHP的情況下,LER給LSR分配的是正常的標籤,LSR查LFIP發給LER;有PHP的情況下,LER給LSR分配的是帶有POP的標籤,LSR查LFIP彈出標籤發給LER。


沒有增加任何LSR的負擔吧,次末跳php機制是說給自己的本地網段傳送給鄰居帶有POP標籤,比如一個包過來,倒數第二跳進埠標籤比如為123,出口就為pop,然後發給ler,不會再查fib。ler收到的就是ip包。

用抓包軟體在倒數第二跳出口處抓包就能看到了。


推薦閱讀:

家裝布線最後一步:DIY水晶頭製作,網口檢測
利用wireshark和fiddler破解中控人臉識別考勤機

TAG:Cisco思科 | 計算機網路 | 網路工程 |