主頁 >  其他 > HCNP Routing&Switching之BGP路由屬性和優選規則

HCNP Routing&Switching之BGP路由屬性和優選規則

2021-11-01 06:17:30 其他

  前文我們了解了BGP防環機制和路由聚合相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15458110.html;今天我們來聊一聊BGP路由屬性和選路規則相關話題;

  BGP路由屬性

  先來看一看BGP路由表

  提示:BGP路由表主要顯示了BGP路由,其中主要由路由狀態代碼,目標網路地址,下一跳,med屬性值,本地優先級,路由首選值,以及路由的AS_path和起源屬性組成;狀態代碼中,星號(*)表示該路由可用,如果沒有星號,表示該路由不可用,一般情況不可用的BGP主要有下一跳地址不可達,即沒有去往下一跳的路由;其次還有可能是對應路由已經在IGP路由里學習到了,因為IGP路由的優先級要比BGP高,所以在ip路由表里存在的就是IGP路由,而對于BGP來說,就不可用(因為有IGP路由更優);大于號(>)表示最優路由,即當一個網路有多個下一跳時,首選的路由;d表示,抑制,懲罰;即對應路由有懲罰機制;BGP路由是有懲罰機制的,如果一條路由不穩定,一會好,一會不好,此時對應路由就可能被懲罰(如果開啟了懲罰機制);即懲罰一段時間不可用,等懲罰時間過去以后,對應路由才會從抑制狀態變為可用;s表示抑制,即該路由不被通告給其他鄰居;只存在本地bgp路由表中;起源屬性(Origin),i表示本地宣告,即network宣告的路由;?表示匯入外部路由,即引入宣告的路由;e表示從egp學習到的(BGP前身,目前已被淘汰);起源屬性優先級是本地宣告大于引入 宣告;

  BGP路由屬性分類

  提示:BGP路由屬性主要從公認屬性和可選屬性分類,其中公認屬性中又分必選和可選;可選屬性中有分可過渡和非過渡;公認必遵表示所有BGP都可以識別的屬性,并且是必須存在Update訊息中的;比如起源屬性,as_path,下一跳這些屬性就是所有BGP路由器在更新訊息中必須要有的屬性;換句話說這些屬性是不可省略,必須存在;公認任意就是指所有bgp路由器都可以識別,當不要求必須存在update訊息中,即這些屬性可以存在,也可以不存在,取決對應路由的需求,不是必須強制要求存在update訊息中;比如本地優先級,自動聚合;可選過渡是指不被所有BGP路由器識別,如果無法識別,對應屬性是可以正常傳遞給鄰居的;比如手動聚合,團體屬性;可選非過渡是指不能被所有BGP路由器識別,如果不能識別,則對應屬性丟棄(只是對應路由的對應屬性丟棄,并不是對應路由被丟棄);比如med,med就類似ospf里的開銷,這個屬性在bgp里是私有屬性,所以不是被所有BGP路由器識別(華為是med,思科是metric,但兩者作用都是一樣的);

  BGP路由屬性圖解

  1、PrefVal:優選值,數字越大越優先;默認0;私有屬性,主要作用是定義本地路由的優先級,作用范圍只限于本地有限,不傳遞給鄰居;

  提示:當去往同一網路有多個下一跳時,我們可以通過調整很優選值來影響去往對應網路的路由;如上所示,我們希望RTA去往RTD經過RTC,那么我們可以將RTA去往RTC的首選值調大;

  2、Origin:起源屬性,主要用來描述對應BGP路由的產生方式;

  提示:起源屬性優先級順序是,本地通過network宣告的路由,要優于引入宣告的路由;

  3、AS_Path:AS路徑,主要用來描述BGP路由在傳輸的路徑中所經歷的AS的串列;該屬性會在EBGP傳遞時更新(即傳遞給EBGP鄰居時,會在對應路由更新中加上自己所在AS的號碼),同時AS_Path這個屬性也是EBGP防環的一個屬性,即丟棄AS_Path屬性中包含本端as號的路由;該屬性是數量越少越優先(一個as我們可以理解為RIP里的跳數,經過多跳數越小,對應路由就越優);as_path除了能夠防止as間環路,同時它也可以用作路由過濾,比如as_path filter;

  提示:如上圖所示,針對as100去往RTA,如果從RTA--->RTB--->RTD--->AS100,那么對于AS100收到的路由更新中對應AS_path的值為65201,65223,65101;如果從RTA--->---RTC--->AS100,對應as100收到RTA的路由更新中as_path的值為65330,65101,相對于上面的路由,對應AS_Path的長度要略小,所以as100去往RTA會經過RTC到達RTA,而不會走經過RTD,RTB在到達RTA; 

  4、Next Hop下一跳,主要用來描述對應去往目標網路的下一跳屬性 ,即發出路由更新的路由器(更新源);

  提示:如上所示,RTD發布路由更新,對應下一跳就會是本地出介面ip地址(如果是物理口建立鄰居),而對應IBGP型別鄰居,默認更新不會更改更新源,即RTC收到RTD的路由更新,對應下一跳還是RTD,即RTC向EBGP發送對應路由更新,其下一跳不會更改為RTC,而還是RTD;對于RTB收到RTC的路由更新,因為RTB和RTA是EBGP鄰居,所以RTB收到RTC的路由更新以后,會把對應的下一跳修改為自己,然后再傳遞出去;同樣的道理,RTA收到RTB的路由更新,因為RTA和RTF或RTE是IBGP鄰居,所以RTA收到RTB的路由更新以后,向鄰居傳播時,它不會更改更新源,即下一跳地址還是會是RTB;所以我們在RTF看到去往8.0.0.0/24的路由里,對應下一跳屬性會是RTB的介面地址;

  5、Local-Preference:本地優先級,該屬性值在IBGP鄰居傳遞,數字越大越優先,默認是100;主要用于控制流量怎樣流出AS,即對出站路由的控制;

  提示:如上圖所示,對于RTD要想去往RTA的路由,我們可以在RTC或RTB上更改本地優先級屬性來影響RTD去往RTA的路由路徑;如果我們想要讓RTD的流量經過RTC到達RTA,那么我可以在RTC上將對應本地優先級屬性調大,從而達到影響as65101的出站路由;

  6、MED:Multi-Exit-DISC,該屬性類似IGP里的度量值(cost),主要用于區別到達同一鄰居AS的多條入口鏈路;數字越小越優先;該屬性僅在相鄰的兩個AS之間傳遞,收到此屬性的AS不會在通告給任何其他第三方AS;該屬性常用語控制流量怎樣進入AS,即控制AS入站路由;

  提示:如上圖所示,我們想要控制AS65330的入站路由,我們可以在RTB和RTC上修改med的值,如果我們希望AS65101和AS65330之間的流量走RTB,我們可以將RTC的med調大,或者降低RTB的med值,從而讓RTA學習到的路由對應下一跳為RTB;默認情況下,不允許對比來自不同AS鄰居的路由資訊中的med值,除非能夠確認不同AS采用了同樣的IGP路由選擇方式,我們可以使用命令compare-different-as-med來比較不同AS鄰居的MED值;如下所示

  提示:針對192.10.0.0/16這個網路來說,它從as500和as600發送的MED不會被as700作為選路對比條件;因為med只會被來自同一AS到達多個相鄰鄰居入站路由對比條件;像這種不同AS是不被采用;當然如果能夠確定AS500和as600都是使用相同的IGP路由協議(比如都是用ospf作為IGP路由協議)和路由選擇方式(路由策略等),那么我們也可以使用命令compare-different-as-med來對比來自不同AS中med的值;

  BGP路由優選規則

  BGP選路規則分三種情況

  1、如果該路由到達目的地的路由是唯一的,則直接優選;

  2、如果達到同一目的地的多條路由,優選優先級最高的,即比較優先級,優先級最高被優選;

  3、如果達到統一目的地的且具有相同優先級的多條路由時,則使用如下更細的原則比較

  提示:BGP路由優選的首要條件是對應路由的下一跳必須可達,即只會在BGP路由表中對應路由有星號的路由上進行優選;滿足下一跳可達的前提下,首先優選首選值(Preference_Value)最高的路由(該屬性為私有屬性,僅在本地有效,一般不長修改來影響路由選路);如果首選值一樣,則對比本地優先級(Local_Preference),本地優先級最高的路由被優選;如果本地優先級一樣,則比較聚合方式,聚合方式是手動聚合大于自動聚合,大于本地network宣告,大于引入宣告,大于從鄰居學習到的路由;如果聚合方式一樣,則比較AS_Path長度,AS_Path最短的路由被優選(這里的AS_Path最短是指經過的as數量最少,并非as號碼長度);如果AS_Path長度一樣,則比較起源屬性,起源屬性優先級是本地宣告大于引入宣告;如果起源屬性也一樣,則比較來自同一AS的路由,優選MED最小的路由;如果MED也一樣,則比對鄰居型別,鄰居型別優選順序是EBGP型別鄰居大于IBGP型別鄰居;如果鄰居型別也一樣,則優選AS內部IGP的開銷最小的路由;即比較去往對應下一跳的開銷;去往對應下一跳開銷小的路由被優選;如果去往對應下一跳的開銷一樣,則比較cluster_list,優選cluster_list最短的路由,如果cluster_list長度一樣,則優選orginator_Id最小的路由;cluster_list和orginator_id這個是路由反射器中的屬性,目前不特別介紹;如果上述屬性都一樣,則比較router-id,優選router-id最小的路由器發布的路由;如果router-id也一樣,則優選ip地址最小的鄰居學習到的路由;

  從上面的BGP路由優選規則來說,BGP不管怎樣它都會選出一條最優的路由來,在BGP里沒有等價路由;默認情況下BGP是不允許有負載分擔的,即負載分擔的功能是關閉的;當然如果在滿足上述前9條規則的前提下,且AS_Path是一模一樣(當然AS_Path不一樣,我們也可以使用命令忽略AS_Path不一樣的情況,強制開啟負載分擔;在bgp行程模式下使用load-balancing as-path-ignore來忽略as_path不一樣的情況;),我們可以視為對應路由為等價路由;可以使用命令開啟BGP負載分擔功能(在bgp行程下使用maximum load-balancing 2開啟負載分擔,默認只允許1路負載,最大支持8路負載);

  BGP聚合方式對選路的影響

  提示:默認情況下,如果手動聚合和自動聚合開啟了,對同一網路路由的聚合如果不是一樣,則手動聚合和自動聚合不沖突;如果自動聚合和手動聚合,聚合后的路由一模一樣,則手動聚合優先級高于自動聚合;如上圖所示在RTB上開啟了自動聚合,同時也手動聚合200.0.0.0/24;此時手動聚合和自動聚合后的路由一模一樣,則優先通告手動聚合后的路由,對于自動聚合的路由不會通告給任何鄰居;

  鄰居型別對BGP選路的影響

  提示:如上圖所示,對于RTA來說,它從RTC通過EBGP學習到達200.0.0.0/24網路,同時也從RTB通過IBGP學習到達200.0.0.0/24的路由;此時RTA會優選通過EBGP鄰居型別學習到的200.0.0.0/24的路由;原因很簡單,因為RTB和RTA是IBGP鄰居;即在同一AS內;那么對于同一AS內的路由器來說,路由更新只傳遞一跳,如果RTB從內部其他路由器學習到200.0.0.0/24的路由,此時是不會發送給RTA的;所以RTB能夠學習到達200.0.0.0/24網路的路由,肯定是從其他AS學習過來的;這樣一來,RTA從其他as直接學習到達200.0.0.0/24網路的路由,肯定優于RTB從其他AS學習到達200.0.0.0/24網路路由后,再次傳遞給RTA;所以BGP選路原則中對于同一目標網路來說,從EBGP鄰居學習到的路由要優于從IBGP鄰居學習到的路由;

  AS內部IGP開銷對BGP選路的影響

  提示:如上圖所示,針對200.0.0.0/24網路來說,RTA通過BGP能夠學習到達200.0.0.0/24網路的下一跳有兩個;在其他條件都一樣的情況下,此時內部asIGP的開銷是可以作為BGP選路的一個評判標準;如圖RTA如果走RTB,則對應鏈鋸的帶寬為50M,而走RTC則對應鏈路帶寬為100M;很明顯走RTC的鏈路更優;所以在其他條件都一樣的情況下,對比去往對應下一跳的開銷就作為選路的標準;即as內部IGP開銷越小,對應鏈鋸就更優,對應的BGP路由也就更優;

  Router-ID與IP地址對BGP選路的影響

  提示:如上圖所示,如果在優選值,本地優先級,聚合方式,as_path,起源屬性,med以及內部IGP開銷對比都一樣的情況下;此時會對比對應路由的router-id;即發送對應路由的路由更新路由器id,router-id最小被優選;如圖,對于RTA去往200.0.0.0/24的路由來說,在RTA的BGP路由表中會有三個下一跳,一個是RTC,兩個為RTB(RTB和RTA建立兩個鄰居,所以對應下一跳也會有兩個);首先在三個下一跳中對比router-id,router-id小者被優選;所以RTC不會被優選(router-id大于RTB);但對于RTA來說,下一跳為12網段和21網段的router-id都是同一路由器,所以router-id一樣;此時比較ip地址,ip地址最小的被優選;所以對于RTA去往200.0.0.0/24網路的的最優路由是下一跳為10.1.12.2,而非10.1.21.2;原因就是10.1.12.2小于10.1.21.2;

作者:Linux-1874 出處:https://www.cnblogs.com/qiuhom-1874/ 本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/343027.html

標籤:其他

上一篇:CentOS部署LNMP環境(一)安裝 nginx

下一篇:AcWing 第23場周賽

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more