天天看點

BGP集訓營:第一天BGP概覽基礎

要通路Sina的網站,我們需要有以下幾個步驟:

1、有ISP的接入

2、有到該站點的路由

3、有DNS提供IP到命名的服務

Inter-domain routing(域間路由)

域(domain):即自治系統(Autonomous system,AS)

AS:處于同一技術掌控和政策掌控之下的連續的路由範圍。為了解決Internet的擴充性,并且降低管理成本,增加公網(Internet)流量選路政策的靈活性。

路由協定根據運算機制進行分類:

1. 靜态路由

2. 動态路由

動态路由根據部署的邊界進行分類:

1. 域内路由(intra-domain routing):也叫做内部網關協定(Interior gateway protocol,IGP)

2. 域間路由(inter-domain routing):也叫做外部網關協定(Exterior gateway protocol,EGP)

注:這裡的網關等同于AS。

常見的IGP:RIP,OSPF,IS-IS,EIGRP,IGRP

常見的EGP:EGP,BGPv1, BGPv2, BGPv3, BGPv4

EGP被淘汰是因為他沒有一個度量的标準。

BGPv1, BGPv2, BGPv3:完全被淘汰

域間路由解決方案要考慮到的問題:

1. 擴充性

2. 安全性

3. 路由政策

BGP對應上述問題衍生出的特點:

1. 觸發式增量更新

2. 可靠連接配接(TCP)

3. 沒有度量(Metric)的概念,采用屬性(Attribute)來實作選路功能,并且有一套非常強大的選路政策工具集。

TCP 179端口作為通信端口,滑動視窗,三次握手。

三次握手來建立連接配接:

1. 源裝置向目标裝置發送一個TCP的SYN(S————D:SYN)

2. 目标裝置向源裝置反回一個TCP的SYN ACK(d————S:SYN ACK)

3. 源再向目标裝置回報一個TCP的ACK(S————D:ACK)

傳輸資料

四次握手來終止連接配接:

1. 源向目标方發送一個FIN(S————D:FIN)

2/3.分别目标裝置向源裝置發送一個ACK/FIN(D——S:ACK/FIN)

4. 源裝置向目标裝置發送一個ACK(S——D:ACK)

連接配接終止。

如果收到一個TCP帶有RST字段的時候,強制将這條TCP給切斷

需要一種保活機制來維護TCP連接配接通路。這種機制資訊叫keepalive

客戶和ISP連接配接方式:

1. 單宿主(single-homed):一般使用私有AS号,使用PA位址。

2. 多宿主(multi-homed):一般使用公有AS号,一般使用PI位址

AS範圍:1-65535

其中1-64511:公有AS号(public):必須向InterNIC去買,由IANA配置設定,公網可見。

64512-65535:私有AS号(private):無須購買,可由ISP提供,公網不可見。

公網IP位址:

1. PI(營運商獨立位址):與ISP無關,直接向位址注冊機構購買的。

2. PA(營運商配置設定位址)與ISP相關,由ISP租賃給你。

客戶AS——ISP傳輸AS——客戶AS

BGP資訊:

1. Open:用來建立BGP會話

2. Keepalive:用來維護TCP連接配接

3. Update:用來承載BGP路由資訊,每一個BGP更新都會相應的附帶一些BGP屬性。

4. Notification:當BGP檢測到錯誤之後,用于切斷BGP會話。

BGP路由器鑒别機制:BGP Router-ID(RID):

1. 如果有邏輯接口,邏輯接口IP位址最大的IP位址作為RID

2. 如果隻有實體接口,實體接口IP位址最大的IP位址作為RID

BGP鄰居關系的建立:

1. 首先,當BGP路由器之間準備建立TCP連接配接,此時,BGP鄰居關系的狀态稱之為空閑狀态(idle)

2. 當TCP連接配接建立完成之後,此時BGP鄰居關系的狀态稱之為活躍狀态(active)

3. 當TCP雙向連接配接建立之後,BGP路由器發送open包,open包包含的參數包含:AS号,keepalive計時器,RID等,這個狀态叫做OpenSent狀态

4. 對方給予open包,這個狀态叫做OpenConfirm狀态

5. 如果雙方Open包參數協商成功,那麼BGP鄰居(會話)關系建立,達到 Established狀态,如果不成功,可能回退到Active狀态,再重新發送Open包,試圖建立BGP會話。

3和4在CISCO IOS的show指令裡是看不到的,統稱為active狀态。

1、 AS-PATH屬性:AS-PATH屬性越短,路徑越優先。

2、 起源(Origin)屬性:定義BGP更新是如何産生的:

(1)、起源于IGP:BGP更新是通過BGP程序下network指令所釋出出來的。(i)

(2)、起源于EGP:BGP更新是通過EGP重分發進來的。(e)

(3)、起源不完整(incomplete):BGP更新是通過IGP(OSPF,EIGRP等)重分發進來的。(?)

如果同一個BGP更新有3種起源方式。IGP優先于EGP優先Incomplete

3、下一跳(NEXT_HOP)屬性:到達目标AS的下一個AS(IP位址)。

BGP連接配接關系:

1.内部BGP(Internal BGP,IBGP)

建立BGP鄰居關系的BGP路由器位于同一自治系統。

對于IBGP鄰居,AS-PATH屬性是不變,下一跳屬性也不變。

2.外部BGP(External BGP,EBGP)

建立BGP鄰居關系的BGP路由器位于不同自治系統。

對于EBGP,AS_PATH屬性根據經過的AS号碼向前疊加,下一跳屬性也會改變。

對于EBGP而言:下一跳屬性是宣告該EBGP更新的接口IP位址。

知名任意屬性:

1、本地優先級(Local_pref):預設值100。用于同一個AS多出口的選路控制,值超高,也就越優先。本地優先級隻在AS内比較(隻在IBGP鄰居間比較),用于影響出站流量。 本地産生的為空。

2、Atomic aggregate:用于通知鄰居AS,說明執行彙總路由器的路由資訊。位址資訊以RID呈現。

可選傳遞屬性:

1. Aggregator:定義了實行路由聚合(彙總)的路由器的IP位址AS号資訊,位址資訊是接口資訊。

2. 社團屬性(community):用于BGP的路由标記(打标簽)。

可選非傳遞:

1. MED:預設值為0,值越低越優先,用于不同AS多出口的選路比較。用于影響進站流量。預設情況下,來自不同AS的MED屬性不能互相比較。如果MED屬性為空(NULL),CISCO裝置把空值當成0,其他廠商把空值當成無窮大。

CISCO私有屬性:權重(0-65535)

1. 本一産生的BGP更新權重預設是32768

2. 從鄰居學過來的BGP更新權重預設為0,值越高,越優先。權重本地有效,不傳遞。影響出站流量。

BGP的選路法則:

(必須要下一跳可達)

如果一個BGP更新同時通過多個鄰居學習到,就要進行一系列的選路比較法則。過程如下:

1. 先比較權重,權重高的越優先。(隻對本地有效,隻能影響自己不能影響别人)

2. 比較本地優先級,越高越優先,僅在同一個AS内的IBGP鄰居比較。

3. 本地産生(下一跳屬性為0.0.0.0)的優先于從鄰居學過來的。

4. AS-PATH長度最短。(BGP:路徑矢量協定)

5. 比較起源屬性:IGP優先于EGP優先于Incomlete

6. 比較MED屬性,越低越優先。

7. EBGP(AD=20)優先于IBGP(AD=200)

-------------------------------------------------分水嶺------------------------------------------------------------

8a.如果是EBGP更新,那麼最老(最先被學習到的)的EBGP更新更優先

8b.如果是IBGP更新,離鄰居IGP路徑成本最小的路徑優先。

9.比較BGP RID,越低越優先。

10.比較學習到BGP更新的接口位址,接口IP位址越小越優先。

本文轉自 ltyluck 51CTO部落格,原文連結:http://blog.51cto.com/ltyluck/204641