BGP協議的路由表記錄了整個路由路徑嗎?

路由表不是只記錄下一跳地址嗎?

可在讀《網路科學引論》(M.E.J.Newman著)的時候,讀到了下面的說法:

「路由表語句路由器之間的共享信息構建,這些路由器都遵守邊界網關協議(BGP)……從理論上講,為了使數據包在正確的路徑上傳輸,路由器只需要存儲每一條路徑的第一項,然而為了路由選擇效率更高,路由器最好是保存數據包到么一個目的地址的全部路徑。在Internet初期,路由器都是如此運行的。」


高手很多,但是感覺前排答案答非所問!

題主問的是「BGP協議的路由表記錄了整個路由路徑嗎?」

答案:是的!

查看了一下原文《Networks: An Introduction》,作者:Mark Newman,Chapter 2 Technolgical Network,2.1.2小節,Measuring internet structure using routing
tables,

截圖如下:

先解讀一下原文內容:

這一段主要在描述Internet路由器所使用的路由協議,當然這裡主要是指BGP。

這裡區分一下路由信息(Route Information)和數據包(Packet),這兩個在網路中傳遞的方向正好相反,例如,路由器1通告本地路由信息給路由器2,路由器2就知道如何將packet送到路由器1。所以,對於這個Packet來說,路由器2上的路由信息(Route Informatin)等於目的地(Destination)

同時文章指出,路由器上的BGP路由表記錄了路由信息從起源到這台路由器的完整路徑

那問題來了,為什麼BGP要這麼做呢?因為要選擇最優路徑!

Bgp協議記錄的路徑實際上是AS
Path,可以理解AS是BGP世界裡的每個獨立小王國,那麼路由器會記錄路由條目是本地AS產生的,還是經過哪幾個AS到我這裡的。然後根據這些記錄選擇一條最優的路徑

如圖,

對AS5中的路由器來說,得到10.0.0.0/8這條路由的路徑分別是AS1-AS3和AS1-AS2-AS4,所以路由器知道從AS3-AS1這條路是最近的。

如果AS Path一樣怎麼辦,請參考BGP選路原則。


如果高度抽象,將BGP的 一個AS自治系統無限的縮小,縮小到一個黑點,抽象成一台路由器,路由器的 Router ID = AS號,不同AS之間的互聯成本抽象成OSPF的cost =1,那BGP 就和OSPF沒有什麼兩樣。

10.1.1.0/24 ----&> A----&> B ----&> C ----&> D

BGP在與直連路由器交換BGP路由的時候,也有一個類似OSPF的cost 的成本屬性,即AS_Path,AS_Path越少,越優先。與OSPF不同的是,BGP路由AS_Path是累積的,如果上圖中ABCD代表的是AS,則路由器D上的BGP table 應該為:

Entry 【AS list 】

10.1.1.0/24 【C,B,A】

BGP生成的路由條目為:

10.1.1.0/24 next-hop AS C"s local-link

收集AS_Path是為了優先路由,越短越優先,選完最優的路徑,剩下來關心得僅僅是下一跳,只要有了下一跳,就可以更接近目的地,遵循這樣的邏輯,不斷接近目的地,直到到達目的地。


不知道題主身份是什麼,先要解釋一點:

路由器上存在兩類路由表:

第一類就是題主說的,記錄下一條和cost(distance)的路由表,用於路由器轉發,可以稱之為核心表(或者轉發表)

另一類是不同路由協議里記錄的路由表,比如OSPF就有自己的OSPF路由表,RIP也有RIP的路由表,同樣的BGP也有BGP的路由表。

各個協議內部的路由表是獨立的,協議表會負責通告協議的路由情況給核心表管理模塊,核心表管理模塊根據不同協議的權重負責選擇最優的路徑,並計算出選路用的核心表。

BGP路由表裡就記錄著BGP路由的狀態,這裡不僅僅包含下一條,還包含各種AS信息,這些信息在核心表裡是看不到的。理論上BGP表裡包含整網的全部路由。

類似的,OSPF協議內還記錄著area內的鏈接狀態,核心表也是看不到的。

所以BGP表裡的信息更多與核心表裡只記錄下一條二者並不矛盾。

核心表和協議表是兩個不同的概念。

放個圖:

不同廠商都有對應的核心表管理模塊,比如H3C的好像叫NM(或者RM)模塊


bgp路由器上show bgp

上面有三大強制屬性!!!as path orig和as號!


瀉藥,請參考其他大神的答案,

我這個真心不知道,


謝邀

最近壓力有點大 說話可能有點語無倫次

首先 路由器有個路由表 像前面幾位說的那樣 這個表你可以看做核心表 雖然並沒有人這麼叫他

路由器通過 且只通過這張所謂的核心錶轉發數據包

一條路由如果想被記錄進入這張所謂的核心表時 通常只能通過兩種方式 一種是手動寫入 即所謂的靜態路由 另一種是通過其他路由協議經過計算後產生的最優路由 即為動態路由

bgp是動態路由協議 他會維護自己的一個資料庫 通過這個資料庫計算出的路由才會被寫入所謂的核心表


感覺題主把轉發和路由混淆了,從轉發層面看,轉發表項存儲於fib即轉發資料庫,高端路由器fib基於硬體實現,一般執行最長匹配,針對與介面上收到的數據包轉發到匹配的表項所指定的下一跳,但轉發資料庫則有控制平面生成,控制層面有各種路由協議,也包括產生介面網段路由的各廠商所實現的私有路由。

bgp主要用於在各大運營商間廣播各自的路由,各個運營商之間建立了peer來發布自己路由並接收到其他網路的路由,在這些路由中選出最優的一條或者幾條,下發給轉發表項維護模塊,表項維護模塊根據路由協議間的優先順序,選出最終的轉發表項,寫入硬體,前綴、下一跳、出介面這些是最重要的表項。

針對上一段的解釋舉個例子,移動自治域內有條路由,分別通過bgp發布給電信和聯通,電信聯通又都發布給廣電,廣電認為走電信比較優先,最終廣電的用戶到移動那條路由的主機的訪問就都走電信,但總體上,電信移動廣電都有這條路由,且有多條路徑。

推廣到全球,骨幹路由器基本上都有整網的路由,當然這些路由往往是聚合過的路由,目前整網路由已經40萬條了。

然而,bgp的強大在於路由策略的複雜和多樣,每台路由器接收發布都有自己的策略,很可能路由或如你所說的路徑信息都可能有不少的差異。

關於全球路由的了解,你可以查找bgp looking glass來查找某個ip的歸屬as信息,以及在整網路由中的路由信息,遺憾的是,國內目前沒有looking glass,無從分析國內骨幹網路由情況。


按照我的理解,BGP協議的路由只指向下一跳路由器,一般來說下一跳路由器都是自治系統的邊界路由器,而到達邊界路由器的路徑則是由內部網關協議(比如ospf或者isis)決定的。而根據內部網關路由協議的特點,根據介面信息計算出路徑,路由表中只顯示最優路徑,但是其他信息則是保存在協議的內存之中,因此樓主所讀的內容那樣說並沒有錯。這樣說不知道能表達清楚不一一


實際上...AS PATH attribute 的主要目的是為了防環....

而且記錄的也不是實際的路由前綴,更不是NDB或RDB,僅僅是經過的AS號而已。

BGP計算路由基於DV演算法,如果想透徹討論這個問題需要先了解DV演算法和BGP的基本數據結構。


最近自學CCIE的BPG中。是個半吊子。

我理解的BGP路由中有兩個表,一個BGP表。

一個路由轉發表。

其中BGP表是 network提取路由轉發表中信息,通告在BGP表中。

然後BGP路由相互傳遞BGP表。而不傳遞路由轉發表。

而在BGP表中各種屬性,as path as set 記錄了經過的所有as號。

然後,題目中書的意思那麼說也對。但現在更多的是用as path中所有的as排序號來保證BGP拓撲無環。


BGP 的As-path 屬性


路由表也分好多種路由表的

常用的路由表全名應該叫:IPV4生效路由表。

根據我對題主問題的理解做分析:

常用來指導IP報文轉發的路由表並不是完全的路由表,其中還有各路由協議的路由表(BGP4、BGP4+、OSPFV2、OSPFV3、集成化ISIS、EIGRP、RIP、RIPng等等),而且路由器還有一個總表,裡面包含生效路由和不生效路由和各路由協議學來的路由以及靜態路由等等。建議題主多看看路由的基礎知識,再研究各種路由協議會更好的理解《網路科學引論》所說的東西


推薦閱讀:

計算機執行一條指令要多長時間?
如何做一個能被別人訪問的網站?
免流的原理到底是什麼?
怎麼破解無線網路?又如何防範?
Mac升級10.9後 銳捷顯示無法找到網卡?

TAG:計算機網路 | 網路工程 | 路由表 | 網路協議 |