一、自治區系 AS
自治系統(Autonomous System,AS),指的是在同一個組織管理下、使用相同策略的設備的集合。
BGP 網絡中的每個AS都被分配一個唯一的AS號,用於區分不同的AS。AS號可分為2個字節AS號和4個字節AS號,其中 2字節AS的取值范圍為 1至 65535,其中64512-65535是私有AS號。4字節AS號的取值范轉為 1至 4294967295,支持 4字節AS號的設備能與支持 2字節AS號的設備兼容,IANA負責AS號的分發。
二、邊界網關協議 BGP
邊界網關協議 BGP(Border Gateway Protocol)是運行於 TCP 上的一種自治系統的路由協議,用於在AS之間實現路由信息的交互。1994年開始使用BGP-4(RFC1771),2006年之后單播IPv4網絡使用的版本是BGP-4(RFC4271),其他網絡使用的版本是MP-BGP(RFC4760)。
BGP的特點:
(1)BGP能夠承載大批量的路由信息,能夠支撐大規模網絡。
(2)BGP能夠支持多協議的擴展(IP v4、IP v6)。
(3)BGP能夠支撐MPLS/VPN的應用,傳遞客戶VPN路由。
三 、BGP的路徑矢量特征
BGP通常被稱為路徑矢量路由協議(Path-Vector Routing Protocol)。每條BGP路由都攜帶着多種路徑屬性(Path attribute),在各種路徑屬性中,AS_Path屬性是非常關鍵的一個,AS_Path屬性記錄了BGP路由傳遞過程中所經過的AS號,實際上它是一個AS號的列表。
BGP路由器不接受AS_Path中包含其自身AS號的路由更新。AS_Path屬性值的長短(AS號的個數)會作為一個比較的依據,影響BGP路由選擇的決策。
四、BGP協議特證
(1)BGP使用TCP為傳輸層協議,TCP端口號179,BGP路由器之間基於TCP建立BGP會話,BGP對等體無需直連。
(2)運行BGP的路由器被稱為BGP發言者(BGP Speaker),兩台BGP路由器需建立對等體關系(鄰居關系)才能交互BGP路由,存在兩種類型的BGP對等體關系 EBGP和 IBGP。
(3)在BGP對等體關系建立完成之后,BGP路由器只發增量更新或觸發更新(不會發周期性更新)。
(4)目前主要的 BGP版本為 V4和 MP-BGP。
五、BGP報文類型
六、BGP的狀態機制
七、BGP對等體 BGP Peer
(1)運行BGP的路由器被稱為BGP發言者,或者BGP路由器。
(2)BGP對等體也叫BGP鄰居,與OSPF、RIP等協議不同,BGP的會話是基於TCP建立的,建立BGP對等體關系的兩台路由器並不要求必須直連。
(3)BGP存在兩種對等體關系類型:EBGP及IBGP。
EBGP(External BGP):位於不同自治系統的BGP路由器之間的BGP鄰接關系,建立EBGP對等體關系,必須滿足兩個條件:
(1)兩個路由器所屬AS不同(也即AS號不同)。
(2)在配置BGP時,Peer命令所指定的對等體IP地址要求路由可達,並且TCP連接能夠正確建立。
IBGP(Internal BGP):位於相同自治系統的BGP路由器之間的BGP鄰接關系,建立IBGP對等體關系,必須滿足兩個條件:
(1)兩個路由器所屬AS需相同(也即AS號相同)。
(2)在配置BGP時,Peer命令所指定的對等體IP地址要求路由可達,並且TCP連接能夠正確建立。
八、AS中的路由黑洞問題
實例:
(1)在 AS 65101與 AS 65102之間,路由器A、B 運行了 BGP 建立了 EBGP對等體關系,在 AS 65102與 AS 65103之間,路由器E、F 運行了BGP 建立了 EBGP對等體關系, 在AS 65102 中,BCDE四台路由器運行了OSPF,路由器 B與E運行BGP,兩者建立IBGP對等體關系,路由器 C與 D並未運行BGP。
(2)路由器A 將本地路由1.1.1.0/24通告到BGP,最終F能夠通過BGP學習到該條路由,路由器C、D由於並未運行BGP,因此無法通過BGP學習到1.1.1.0/24路由,當路由器F 發往1.1.1.0/24網絡的數據包在到達路由器C、D 后將被丟棄,在C及D路由器這里,就出現了黑洞。
AS中黑洞問題的解決辦法:
(1)將 BGP路由引入 IGP。
(2)在AS 65102內,沒有運行BGP路由協議的 C、D路由器上運行BGP,實現BGP對等體關系的全互聯。
(3)通過MPLS技術解決黑洞問題實現通信。
九、IBGP水平分割規則
(1)BGP路由在AS之間的防環依賴於AS_Path路徑屬性,當路由器收到BGP路由后,發現該路由所攜帶的AS_Path屬性中出現了其自己所處的AS號,則路由器認為出現了路由環路,它將忽略該條路由。
(2)AS_Path屬性僅在路由離開AS時才會被更改,而BGP路由在AS內部傳遞時,路由的AS_Path屬性值不會發生改變,如此一來,IBGP路由的防環就無法依賴AS_Path了。
(3)為了防止BGP路由在AS內部傳遞時發生環路,BGP要求:“路由器不能將自己從IBGP對等體學習到的路由再傳遞給其他IBGP對等體”,這就是IBGP水平分割規則。
(4)由於IBGP水平分割原則的存在,BGP要求AS內須保證IBGP對等體關系的全互聯,因為只有這樣,才能夠確保每一個路由器都能學習到路由。
(5)然而在AS內的所有BGP路由器之間維護全互聯的IBGP對等體關系是需要耗費大量資源的,網絡的可擴展性、可維護性也非常差。解決方案:路由反射器,聯邦。
十、路由通告規則
(1)當存在多條路徑時,路由器只選取最優(Best)的BGP路由來使用(沒有激活負載均衡的情況下)。
(2)BGP只把自己使用的路由,也就是自己認為最優的路由傳遞給對等體。
(3)路由器從EBGP對等體獲得的路由會傳遞給它所有的BGP對等體(包括EBGP和IBGP對等體)。
(4)路由器從IBGP對等體獲得的路由不會傳遞給它的IBGP對等體(存在反射器RR的情況除外)。
(5)路由器從IBGP對等體獲得的路由是否通告給它的EBGP對等體要視IGP和BGP同步的情況來決定。
十一、BGP基本配置
(1)創建BGP,指定BGP Router-ID:
[Router] bgp as-num //as-num參數為設備所處的AS號; [Router-bgp] router-id x.x.x.x
為了增加網絡的可靠性,建議將BGP Router-ID手工配置為設備Loopback接口的地址。如果沒有配置,則BGP會自動選取系統視圖下的Router-ID作為BGP協議的Router-ID。
(2)配置BGP對等體:
[Router-bgp] peer x.x.x.x as-number as-num
Peer關鍵字后面的x.x.x.x為對等體的IP地址,本設備與該IP地址之間必須路由可達。
AS號碼決定了與對等體建立的是EBGP會話還是IBGP會話。
(可選)指定用於建立BGP會話(也就是TCP連接)的源接口或源地址:
[Router-bgp] peer x.x.x.x connect-interface intf[ ipv4-src-address]
缺省情況下,BGP使用報文出接口的IP地址作為與對等體建立會話的源地址。
(3)BGP引入IGP路由
BGP引入路由時支持Import和Network兩種方式:
Import方式是按協議類型,將RIP、OSPF、ISIS等協議的路由引入到BGP路由表中。Import方式還可以引入靜態路由和直連路由。
Network方式是逐條將IP路由表中已經存在的路由引入到BGP路由表中。
注:BGP在引入IGP的路由時,可以使用路由策略進行路由過濾和路由屬性設置。
使用network命令將路由通告到BGP:
[router-bgp] network ipv4-address[ mask| mask-length]
使用network命令將路由表中的路由通告到BGP,路由必須存在於路由表中才能夠被成功通告到BGP。
BGP中的network命令與IGP中的network是大不相同的,BGP中的network命令用於將路由通告到BGP,而不是在接口上激活BGP。
如果上述命令沒有指定mask或mask-length參數,則按有類地址處理。指定了mask,則僅當路由選擇表中有與該網絡完全匹配的條目時才被通告出去。
在執行上述命令時,可以關聯route-policy從而更為靈活的控制所引入的路由。
十二、相關命令
dis bgp peer //查看bgp對等體 dis bgp routing-table //查看bgp路由表 dis ip routing-table //查看全局路由表 peer x.x.x.x next-hop-local //配置對等體下一跳地址為自身