網工必須要了解BGP外部網關路由選擇協議

首先它是邊界網關協議 BORDER GATEWAY PROTOCOL
TCP/IP中唯一的一款AS之間使用的協議 ,但我們使用靜態默認也可以去往外網,並且你使用bgp要接收外網的明系路由,15w條外網明系還會佔用極大的內存空間,轉發數據負擔更大,查表延時也更加高。爲啥要使用BGP?

那麼可以提出一概念單宿主和多宿主。
1. 單:只有一個外線連接
2. 多:多個出口,可以保證冗餘,高可用性。
靜態默認只能讓你去往外網,當你外線足夠多,當你有選路空間,有選路需求的時候靠bgp是不夠的。
bgp讓as的路由器獲得外網明系路由,並且這些屬性可以修改供我們來選擇。解決多宿主環境下的選路問題。

* 用法:1.純粹bgp讓路由器能獲得外網的完整明系路由,通過操作屬性來,完成選路。2.靜態默認結合bgp明系。

最大的特點:

通過bgp來傳遞路由,可以包含各種各樣的屬性。通過route-map來對他做一個修改,可以實現修路的特性。從內到外訪問外網從哪個邊界出,外到內通過哪條鏈路進。路徑矢量協議,可以知道接收到時的數據包始發哪個as,經過哪些as。因爲有AS-path特性。

bgp的更新裏包含路由。 是一個dv協議,即使是一個dv協議對路由器的消耗也非常大。 如果是ls我感覺 會直接癱掉。無類。

五種報文,交互報文需要tcp連接,因爲bgp報文都是通過tcp來封裝的。只支持單播報文。bgp 179端口 建立bgp鄰居 會跟你完成tcp的三次握手 會發送目的端口爲179目的端口爲隨機的一股流量 。兩端都會發送,只會建立一條,誰先指對方爲neighbor誰就會保留,後指的會被斷掉,會完成3次握手建立會話。

想要成爲AS必須向IANA購買as號沒有隻能是一個園區 0-65535, 0不能用。
公有:1-64511
私有:64512-65535
4134中國電信第一個
後期擴展32位的空間。

路由邏輯也跟igp不同,它關注的不是路由器本身。是AS .

對於bgp而言,as就是一臺邏輯的路由器。如果在一個as內下一跳是不變的。
只有當你把數據傳遞給其它as的時候,下一跳纔會變更爲這個路由器針對鄰居的更新源地址。

bgp沒有度量值的概念而是通過屬性修改一定是使用route map 。
希望成爲穿越as可以運行BGP。

bgp支持的路由條目數量是最大的。isis才4萬條。這是算法的差距。2.運行bgp可以修改路由策略,通過修改策略可以完成選路,在igp中使用路由策略只能控制從哪個出口出。可以花式選路3.可擴展性比甚至isis還要強。通過多款AFI和SAFI。

可以基於ipv4的AFI來傳遞ipv4路由,可以基於ipv6的AFI來傳遞ipv6路由,可以基於vpn v4的AFI來傳遞vpn v4路由。AFI 策略只有本地意義。兩臺路由器建好鄰居,其實正常情況下,你告訴對方來激活哪一個AFI鄰居。

BGP允許不同的人來做策略,並不影響整體連通性。bgp特性:可靠的協議運行了tcp,tcp通過面向連接的機制,可靠 在路由器之間傳遞,不用擔心丟包,太快擁塞。總而言之tcp會通過一系列的可靠傳輸機制,來保證路由器之間正常交互報文。

bgp建鄰居和傳路由是兩碼事,igp鄰居建立的同時路由也就傳遞了,bgp不同。運行bgp的同時必須要先運行igp或者靜態,通過igp 學習到的路由導入到bgp裏去。以bgp的形式在把路由發送走 ,bgp默認不會產生任何路由。 路由搬運工。要麼通過重分發和宣告來實現 。

鄰居通過你學習到路由。它就能發送給他的鄰居。也能通過aggregatee來做彙總和聚合進而發送 。路由只傳一次,下一次v2的觸發更新。發完之後針對 路由修改屬性,修改完這條路由不會重新發送,也就是說修改的屬性他不會生效,需要清一下進程在重新給鄰居發送走。clear ip bgp * //軟重置 後加soft .
硬重置完三次握手會被斷除,要重新建立。但代價太大了,要斷網三分鐘。
軟重置鄰居還在,只會把某些/所以路由在向鄰居發送一次。

*號是正則表達式的術語代表全部。

華爲:修改完調用了route policy之後 這個策略就生效 了。原因是因爲bgp會自動的去做軟重置。只要策略起到了效果,華爲路由器會瞬間的自動軟重置。

igp建立鄰居交互hello。bgp通過open的報文來建立鄰居,只交互一個,裏面信息同步完成後。會通過60s的keepalive來保活。3倍down。

BGP的路徑屬性:
MED多出口 鑑別器 在cisco中會拿metric來替代它。把其它協議重分發進bgp的時候會做一個度量值繼承,把igp的度量值繼承到bgp的med屬性中去,各國各大運營商之間都是通過bgp來建立鄰居。

默認不支持等價負載均衡的協議、

假如一臺路由器又運行bgp和ospf ,當都通過他倆學到了相同路由,比管理距離小的加
IBGP 200 EBGP20 ibgp負責在as之間的邊界路由器建鄰居。 運行bgp的路由器就叫speak
三張表:

  1. 鄰居表: 放置鄰居關係
  2. BGP 表:包含屬性的路由表在bgp表裏
  3. 路由表:最優路由。

5種報文

  1. 路由刷新 要求鄰居給我在重新發送路由,這時候在經過策略生效了
  2. open 3次握手在交互open鄰居就能建立。open裏面也會有很多參數,router id (其它一樣)
  3. keepalive要維持鄰居關係
  4. update bgp發路由前提是你要產生路由或者是你要收到路由。
  5. notification 報警 指鄰居指錯了。當你運行bgp時出現問題要麼基於配置要麼基於協議運作,發現問題的路由器就會產生這類報文。

ibgp 內部 鄰居關係: 兩臺路由器屬於同一個AS 傳遞的是ibgp路由

ebgp 外部 鄰居關係:不同as ,傳遞ebgp路由

ebgp鄰居只能使用直連接口地址來建立,ebgp報文的 ttl值爲1,意味只能1跳。 因爲沒辦法跟其它接口建立鄰居,建鄰居需要路由,又不能igp寫靜態多麻煩 。

bgp的鄰居叫對等體運用bgp的路由器叫speak.

下一跳邏輯:通過network產生路由,始發路由器的本地Bgp路由表就會先產生該BGP 路由,在給鄰居路由器發送走,本地路由表關於該下一跳有兩種可能 。

  1. :0.0.0.0
  2. 繼承該路由本身下一跳的地址

取決於被通告的路由原本在路由表中是否包含下一跳。

ibgp可以跨越路由器,在非直連的兩臺路由器之間來建立鄰居的

ibgp防環機制

對於始發路由器

通告給ibgp鄰居

  1. 如果該路由在本地BGP表下一跳0.0.0.0通告給igbp鄰居,會理性路由的下一跳。改變成該路由器針對該鄰居的更新源地址。
  2. 如果該路由在本地BGP表包含下一跳通告給igbp鄰居,下一跳不變。

通告給ebgp鄰居
下一跳一定會變更爲本地針對鄰居的更新源地址

通過ibgp鄰居收到
  1. 通過ibgp鄰居收到一條路由,只能傳遞給ebgp鄰居(ibgp的水平分割),通過ibgp學到一條路由只能發送給ebgp.下一跳變更自身針對該鄰居的更新源地址。
  2. 通過ebgp鄰居收到一條路由,可以發送給ibgp鄰居也可以發送給ebgp鄰居,向ibgp鄰居發送下一跳不變。 向ebgp發送下一跳變更自身針對該鄰居的更新源地址。

路由下一跳的強行修改

在思科中 next-hop-shlf
華爲:nest-hop-local

通過ebgp收到路由在傳遞給ibgp鄰居,要針對ibgp鄰居修改下一跳

Ebgp防環機制: AS-path:屬性,用來描述使發了哪個as,經過了哪了as最終到達本地
始發默認爲空,發送ibgp鄰居的時候,as-path也爲空,只有傳給ebp鄰居的時候,傳之前會把as號放在as-path裏面發送走,每傳一條增加as信息。

一臺路由器如果收到ebgp路由,會檢查as-path 字段的。看是否包含自身的as號在裏面。如果沒有包含代表這條路由從來沒有來過,這種路由可以接收並且轉發。as-path包含自身,會丟棄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章