實戰 MPLS單域通訊過程詳解

2021-10-10 12:52:29 字數 2674 閱讀 5052

一、背景說明

本文專門從路由傳輸與資料傳輸兩個維度詳細講解傳輸的過程,上文實驗拓撲如下圖所示,為了簡單起見,只已客戶a為例(紫色)進行描述

二、路由傳輸層面

r5與r1之間通過ospf 1學習到5.5.5.5/32網路 

將5.5.5.5/32路由匯入r1上的instance a中,在bgp路由表中能看到5.5.5.5/32的起源路由器為r1,起源方式為incomplete 

由於r1和r3底層已經通過ospf建立鄰居關係,bgp協議的update包可以直接通過「一跳」的方式將路由從r1傳到r3 

由於r3上也建立了vrf,所以r1將5.5.5.5/32傳給r3時將普通的bpg報文變成mp-bgp報文傳送給r3,其中通過rd值來表示路由的唯一性,rt值告訴r3該路由應該放進r3上哪個vrf中,rt值資訊粘附在r1傳給r3的bgp update報文community擴充套件屬性中 

一併傳給r3的還有r1通過mp-bgp為5.5.5.5/32分配的標籤值,此處為1028 

這一點也可以從r1上看到 

最後,r3將5.5.5.5/32由mp-bgp引入ospf1,在通過ospf1發給r7,至此路由資訊傳送完成 

由上述可知,在整個過程中,pe(r1,r3)裝置的任務最為繁重,他需要將普通的bgp路由條目轉換成mp-bgp的4路由條目,再通過lsp隧道發出,pe路由器的功能模組在此過程中如下圖所示

可以看到bgp除了本身的4路由表外,還單獨為每個vrf例項維護了一張路由表

三、資料傳輸層面

首先資料報從r7出來,目的位址是5.5.5.5/32 

由於r1,r2,r3之間還執行了ldp協議,所以當資料報到達r3時,棧底先壓上r1的mp-bgp為5.5.5.5/32分配的標籤1028,外層再壓上r2為1.1.1.1/32分配的標籤1025傳送給r2 

之所以壓上r2為1.1.1.1/32分配的標籤,是因為在r3的fib表中,去往5.5.5.5/32走的是0x3隧道 

資料報到達r2後,剝離外層標籤,再發給r1 

r1根據mp-bgp分配的標籤值放入相應的vrf中,最後以ip報文的形式傳送給r5,至此資料傳輸完成 

整個過程可以在r7上進行標籤路徑檢視 

四、rd、rt與mp-bgp label詳解

1.rt詳解

當r1要把路由傳給r3時,由於r3上也執行了vrf,所以就需要有一種判斷機制來確定將路由存放到那乙個vrf中,而rt的引入就是結局這個問題,他作為只對vrf感興趣的判斷依據,存放於bgp updata的擴充套件community屬性中,所以rt屬於控制(路由傳輸)層面的引數

2.rd詳解

關於rd值,以r1為例,很多解釋說他是為了在r1上標識路由的唯一性,其實這個說法並不準確,再往深層次的挖,就算r1上instance a與instance b使用了相同的路由,但bgp updata報文中的rt值已經判斷出要傳輸的路由屬於哪個vrf,所以rd值的作用並不是在此體現

還是以r1為例,假設instance a與instance b上都有5.5.5.5/32,傳送給r3後,由於有rt這個擴充套件屬性,所以r3使能分辨出該放到哪個vrf中的,但之後如果r1給r3發的是一種撤銷報文(route reserve),這種報文與bgp的updata不同,他不會去檢視屬性,所以此時的r3就不知道該撤銷那個vrf中的5.5.5.5/32,rd也只是在這種場景下發揮作用。這也是為什麼rd是粘附在路由字首之前,而rt在擴充套件屬性中,rd與rt一樣屬於控制(路由傳輸)層面的引數

3.label詳解

首先要說明的是,label屬於**(資料傳輸)層面的引數。當r1將路由傳遞個r3後,r3將資料要傳送給r1,此時他知道如何去往r1,但資料報送到r1的那個vrf中卻無法判定,所以bgp在通過rt值將路由傳送過來時,一併附帶乙個label值,就是用於告訴r3將資料發往哪個vrf的。

單例模式 實戰應用詳解

單例模式的概念 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這樣做有以下幾個優點 1.對於那些比較耗記憶體的類,只例項化一次可以大大提高效能,尤其是在移動開發中。2.保持程式執行的時候該中始終只有乙個例項存在記憶體中 單例模式的概念 確保某乙個類只有乙個例項,而且自行例項化並向...

php apache開啟跨域模式過程詳解

apaceh 配置 serveradmin qq.com documentroot c htdocs demo servername dev.dd.cn errorlog logs dummy host.localhost error.log customlog logs dummy host.lo...

通訊架構實戰 3 7 守護程序詳解 範例演示

一 普通程序執行觀察 ps eo pid,ppid,sid,tty,pgrp,comm,stat,cmd grep e bash pid nginx a 程序有對應的終端,如果終端退出,那麼對應的程序也就消失了 它的父程序是乙個bash b 終端被佔住了,你輸入各種命令這個終端都沒有反應 二 守護程...