今天海翎光電的小編為大家介紹一下BGP的相關基礎知識,文章淺顯易懂,適合對BGP完全沒有了解的同學。
BGP(邊界網關協議)是將互聯網聯合在一起的路由協議,海翎光電的小編將解釋在哪些情況下我們需要 BGP 以及它是如何工作的。在您繼續閱讀之前,我應該告訴您“忘記”迄今為止您對RIP、OSPF和EIGRP等路由協議的了解……這三種路由協議有一個共同點:它們都是 IGP(內部網關協議)。我們只在我們的自治系統中使用它們,但它們不可擴展以用于像 Internet 這樣大的網絡。 RIP、OSPF 和 EIGRP 都不同,但它們有一個共同點……它們都想找到到達目的地的最短路徑。當我們查看 Internet 時,我們并不關心找到最短路徑,而是能夠操縱流量路徑更為重要,我們目前在 Internet 上使用的路由協議只有一種,即 BGP。
為什么需要BGP? 讓我們先看一些場景,以便了解為什么以及何時需要 BGP:
現在幾乎所有東西都連接到互聯網,在上圖中,我們有一個連接到 ISP(Internet 服務提供商)的客戶網絡,我們的 ISP 正在確保我們可以訪問 Internet,我們的 ISP 為我們提供了一個可用于訪問 Internet 的公共 IP 地址。為了確保客戶方 LAN 上的每個人都可以訪問 Internet,我們使用NAT/PAT(網絡/端口地址轉換)將我們的內部私有 IP 地址轉換為這個單一的公共 IP 地址。當您只有需要訪問 Internet 的客戶端時,此方案非常適合。在我們的客戶 LAN 上,我們只需要一個指向 ISP 路由器的默認路由,我們就完成了。對于這種情況,我們不需要 BGP...
也許客戶有幾個需要從 Internet 訪問的服務器……也許是郵件服務器或網絡服務器,我們可以使用端口映射并將正確的端口轉發到這些服務器,因此我們仍然只需要一個 IP 地址,另一種選擇是從我們的 ISP 獲取更多公共 IP 地址,并使用這些地址來配置不同的服務器。對于這種情況,我們仍然不需要 BGP……
如果我想要更多的冗余怎么辦?出現單點故障并不是一個好主意,我們可以在客戶端添加另一個路由器并將其連接到 ISP,可以將主鏈接用于所有流量,并使用另一個鏈接作為備份,這種情況我們還是不需要BGP,可以用默認路由解決: 1、在客戶主路由器上面配置低優先級的默認路由; 2、在客戶的備路由器上面配置高優先級的默認路由; 這將確保您的 IGP 使用主鏈路發送所有流量,一旦鏈路出現故障,您的 IGP 將確保所有流量都沿備用鏈路發送,你可以考慮一下......我們可以在這兩個鏈接之間做任何負載平衡嗎?會很難么? 除非出現故障,否則您的 IGP 將沿主鏈路發送所有流量,而不會沿備用鏈路發送任何流量。您可以使用相同的度量發布默認路由,擁有 50/50% 的負載分擔。如果我想在主鏈路上發送 80% 的出向流量,在備用鏈路上發送 20% 怎么辦?上面的方法不會實現此需求,但使用 BGP 是可能的。
一、BGP 含義
Border Gateway Protocol,邊界網關協議,協議優先級為 255,目前所使用的版本為 v4。邊界網關路由協議,EGP 網關協議,適用于大型路由網絡結構,以 AS 為一個節點,每個 AS 有唯一確定的 AS-ID 用于標識。
二、BGP 版本
① 2006 年定義單播 IPV4 網絡 MP-BGP
② MP-BGP 在 IPv6 單播網絡上的應用稱為 BGP4+
③ 在 IPv4 組播網絡上的應用稱為 MBGP(Multicast BGP)
三、BGP 分類 ① IBGP:
Internal Border Gateway Protocol ,內部邊界網關協議,用于在 AS 內部的 BGP協議
② EBGP:
External Border Gateway Protocol,外部邊界網關協議,用于在 AS 之間的 BGP協議,默認數據包中的 TTL 值為 1 跳,鄰居建立使用直連端口建立,通常兩個 AS 之間是不存在 IGP 路由協議的,所以 AS 之間使用直連鏈路建立鄰居
四、BGP 特性 BGP 路由具有以下特點:
① 可靠的路由更新機制② 豐富的 Metric 度量方法③ 從設計上避免了環路的發生④ 為路由附帶屬性信息⑤ 支持 CIDR⑥ 豐富的路由過濾和路由策略⑦ 支持認證⑧ 默認不使用附載分擔
01、可靠的路由更新機制
BGP 使用 TCP 進行路由更新,保證路由傳遞的可靠性,源端口號隨機,目的端口號為179。
02、豐富的 Metric 度量方法
BGP 使用 TCP 進行路由更新,保證路由傳遞的可靠性,源端口號隨機,目的端口號為179。
03、從設計上避免了環路
IBGP 使用水平分割,EBGP 使用 AS-Path 屬性。
04、為路由附帶屬性信息
路由信息攜帶不同的 BGP 路由屬性,為 BGP 選路提供了多種多樣的方式。
05、支持 CIDR、手動聚合
BGP 支持無類域間(CIDR)路由,支持手工匯總和自動匯總。
(1)、自動聚合:
默認情況下,自動聚合時關閉的。自動匯總不會自動匯總 BGP 鄰居發送的路由以及使用 Network 命令通告的路由,只能聚合自身 import 注入的路由條目。當開啟自動聚合后,BGP 路由默認會以主類路由進行聚合。此時聚合路由的屬性為 Aggregate 屬性使用以下命令進行自動聚合:[H******-bgp]summary automaticR1:? [H*****-bgp]network 1.1.1.1 32? 只引入 loo2 到 loo4? 啟用路由聚合
(2)、手動匯總:
BGP 手動路由聚合時,可以手動控制聚合路由的掩碼長度,修改聚合路由屬性等,手動路由聚合又有 兩種方式:
① network 靜態路由② aggregate 宣告③ network 靜態路由:
首先創建靜態路由將網段聚合并指向 null0,BGP 采用 network 方式通告出去,由于直連優先級高于靜態,優先選擇直連的下一跳接口,當直連網段出現問題,匹配靜態送往 Null0。 在 R1 上配置靜態路由:[Huawei]ip route-static 172.16.0.0 255.255.0.0 NULL 0preference 254 使用 network 宣告出去:[Huawei-bgp]network 172.16.0.0 16
④ aggregate 宣告
直接在 BGP 試圖下進行匯總
使用以下命令進行 aggregate 匯總:
[H****-bgp]aggregate 172.16.0.0 255.255.0.0 detail-suppressed
注 1:
默認聚合路由只繼承 Community 屬性和起源屬性(如果明細都為 i,則為 i,有一個為?,則為?)
注 2:
默認聚合后的路由不會攜帶任何的 AS-path 屬性,為了防止環路,如果想要攜帶 AS-path 屬性,后面增加命令 as-set,此時匯總路由會繼承所有明細路由的 AS 號,為無序的AS 號,如果增加了 AS-SET 之后,聚合路由會將明細路由的 AS-Path 放入 AS-SET 屬性中,如果明細路由消失或屬性修改都會造成聚合路由的抖動增加;如果明細路由的AS-PATH id 完全一致,此時聚合路由的 AS-PATH 類型為 AS-Sequence
注 3:
如果不加 detail-suppressed,會將明細路由和匯總路由全部發送出去,使用detail-suppressed 命令只通告匯總路由,此時匯總路由的屬性為ATOMIC_Aggregate,用于通告下游的路由器成員信息被抑制,此時的匯總路由不會攜帶 Community 屬性
注 4:
為了讓聚合后的路由繼承明細路由的路由屬性,聚合命令后面增加attribute-policy 1,此時在定義 Route-policy,規劃屬性值
注 5:
origin-policy 的作用,定義 route-policy,當滿足 if 條件中的路由條目時,聚合路由才會生效,如果定義的路由消失,則聚合路由為 ATOMIC_Aggregate
注 6:
suppress-policy 的作用是用于過濾掉某些明細路由,定義 route-policy,當滿足 if 條件中的路由條目,明細路由就會被過濾掉,如果只抑制了一部分明細路由,屬性依舊為 Aggregate;如過抑制了全部的明細路由,屬性為 ATOMIC_Aggregate
注 7:
同 IGP 路由手動聚合對比,BGP 路由聚合,默認明細匯總都發布,IGP 只發布匯總路由;匯總之后 IGP 不會自動生成一條指向 Null0 的路由,而 BGP 路由匯總之后會自動生成一條指向 Null0 的匯總路由
(3)、默認路由發布
在 peer 對等體的時候,可以使用命令發布默認路由給對端鄰居:[H******-bgp]peer 192.168.1.1 default-route-advertise
五、豐富的路由過濾和路由策略
BGP 攜帶了大量的屬性信息,并支持 13 種選路規則。
六、支持認證
BGP 支持 MD5 認證方式,如果是 MD5 方式,路由器會根據 BGP 報文的某些字段和密鑰計算出一個 128bit 的散列值,然后將 BGP 報文連同散列值發送給鄰居。鄰居路由器收到以后,
會在本地基于收到的 BGP 報文和相同的密鑰在進行一次 HASH 運算。
如果計算出的散列值與接收到的散列值相同,則認證通過。
使用以下命令進行密碼認證:
[H******-bgp]peer 192.168.1.1 password cipher h******/h*****
七、默認不使用附載分擔
BGP 默認不使用附載分擔,即使存在多條路徑也會使用選路規則選出一條“最優路由”將其放入路由表中。開啟附載分擔方式:① 選路規則前 9 條一模一樣(AS ID 順序也一樣),可以使用命令 maximumload-balancing bgp 進行附載分擔,當比較到下一跳的 IGP 開銷值一樣時,會進行流量的負載分擔② 當 BGP 路由中的下一跳地址在 IGP 路由表中存在附載分擔,此時流量會附載分擔③ 使用屬性值對多個目標流量對半分流實現附載分擔
八、EBGP 特性EBGP 默認存在以下特性:
① 在通告給 EBGP 鄰居時會將 NEXT_Hop 屬性設置為自身的接口 IP 地址② 將 Local_PREF 值清空③ 將 MED 數值除 0③ 在 AS_PATH 屬性中增加自己的 AS-ID
九、擴展性強
BGP 擴展性強,在承載多協議路由時,在 MP NLRI 中增加屬性值(TLV)進行擴展。
上面海翎光電的小編介紹了BGP的含義、BGP版本、BGP分類、BGP 特性等,接下來咱們繼續這個話題。
BGP收斂狀態BGP 收斂主要經過以下幾種狀態:
① Idle 初始狀態
② Connect 連接狀態
③ Active 失敗等待狀態
④ Open Sent 協商狀態
⑤ Open confirm 連接確立狀態
⑥ Established 確定建立狀態
① Idle 初始狀態
BGP 初始狀態。在 Idle 狀態下,BGP 拒絕鄰居發送的連接請求。只有在收到本設備的Start 事件后,BGP 才開始嘗試和其它 BGP 對等體進行 TCP 連接,并轉至 Connect狀態。Start 事件是由一個操作者配置一個 BGP 過程,或者重置一個已經存在的過程或者路由器軟件重置 BGP 過程引起的。
② Connect 連接狀態
連接狀態,雙方配置命令后,誰先配置完成誰先主動發起建立 TCP,源端口隨機,目標端口 179,在 Connect 狀態下,BGP 啟動連接重傳定時器,等待 TCP 完成連接
建立狀態:
? 如果 TCP 連接成功,那么 BGP 向對等體發送 Open 報文,并轉至 OpenSent 狀態? 如果對方無響應,則 5S 后發送第二份組播報文,依舊沒有響應,等待大約 25S 時候周期后開始下一輪的 TCP 報文發送,對方一直無響應,則停留在 Connect(對端沒有去往本端的路由)? 如果對方回應拒絕建立 TCP 連接,則不在繼續發送 TCP 報文,在大約 25S 后進入Active 狀態
注:
如果控制 TCP 的主動端和被動端可以使用命令 peer listen-only,此時設備只偵聽對端,而不主動建立;或者控制主動端的連接端口地址
③ Active 失敗等待狀態
失敗等待狀態,huawei 設備依舊為主動建立連接,Active 狀態一個時間周期(大約25S)只發送一次 TCP 報文。
建立狀態:
? 如果建立成功,進入 OPENSENT 狀態? 如果收到拒絕建立 TCP 報文(沒有啟用 BGP),則一個時間周期只發送一次,并停留在此狀態? 如果對方無響應(無本端路由,比如進入 Active 狀態,對端路由撤銷掉了),一個時間周期后回到 Connect 狀態
④ Open Sent 協商狀態
協商狀態,TCP 連接建立成功后,發送 open 報文后,進入 OPENSENT 狀態,開始等待對端接收對端的 Open 報文? 根據 Open 報文中的 AS 號、版本號、認證碼等進行檢查。當接收到對端的 Open報文后,發現 Open 報文無誤,會立刻發送 Keep alive 報文,并進入下一狀態 。
建立狀態:
? 如果發現收到的 Open 報文有錯誤,那么 BGP 發送 Notification 報文給對等體,并轉至 Idle 狀態OPEN 檢測不通過的原因:
① Version 不相同② Route ID 沖突③ TTL 跳數④ 源 IP 與 Peer 地址不一樣
注:BGP Hold-Timer 時間不一致不影響鄰居的建立
⑤ Open confirm 連接確立狀態
等待對端的 keep alive 報文,當收到對端的 keep alive,進入下一狀態。
⑥ Established 確定建立狀態
當成功接收對端 Keep Alive 報文后,進入 Established 狀態,是一種穩態,并周期的發送 Keep Alive 報文。
BGP表
BGP 協議中,連接一旦建立,BGP Speaker 將把自己產生的所有 BGP 路由通告給對等體,有多條路徑時,BGP Speaker 只會選最優的給自己使用放入 IP 路由表中,BGPSpeaker 只會選最優的給鄰居對等體。
BGP 一共包含三張表:
① 鄰居表② IP 路由表③ BGP 路由表
① 鄰居表
用來查看當前的鄰居,使用 display bgp peer 查看:
① Peer Rcv:對端 IP② V:版本③ AS:對端 AS 號④ MsgRcvd:收到了幾條 BGP 消息⑤ MsgSent:發出了幾條 BGP 消息⑥ OutQ:等待發送指定對等體的消息⑦ State:狀態⑧ Pref Rcv:從鄰居學到多少 BGP 路由條數
② IP 路由表
全局路由表,包含目前可用的 BGP 路由
③ BGP 路由表BGP 路由表發送原則:
① IBGP 路由,只發送給 EBGP 對等體② EBGP 路由,發布給所有 EBGP 和 IBGP 對等體③ 只將最優路由發布給對等體④ 只發送增量更新的 BGP 路由
BGP 路由表無效:
① 下一跳不可達(不加入到 IP 路由表中)② IGP 同步開啟,無相應的 IGP 路由(不加入 IP 路由表中)③ 存在相同的 IGP 路由(不加入 IP 路由表中)④ AS ID 相同(不接受此 BGP 路由)⑤ Cluster List 中包含本 RR 的簇 ID(不接受此 BGP 路由)⑥ Originator ID 和本路由器的 Router ID 相同(不接受此 BGP 路由)⑦ 使用 BGP 命令 bgp-rib-only(最優 BGP 路由不會放入 IP 路由表中)
① >為最佳路由,存在多條路徑時,BGP 會選擇最佳路由放入路由表并傳遞給鄰居② *為最優化路由,表示當前路由有效,當沒有*標明此路 由不是最優③ i 為 IBGP 鄰居學到的路由條目,如果位空表示本地產生或 EBGP 學到的路由
審核編輯:湯梓紅
-
交換機
+關注
關注
21文章
2701瀏覽量
100993 -
BGP
+關注
關注
0文章
85瀏覽量
15552 -
邊界網關協議
+關注
關注
0文章
4瀏覽量
1616
發布評論請先 登錄
相關推薦
STM32學習筆記(1)——STM32基礎知識 精選資料推薦
MatLab基礎知識介紹
FreeRTOS任務的基礎知識學習筆記
C語言基礎知識匯總
51單片機的基礎知識學習筆記資料免費下載

評論