網(wǎng)站首頁 編程語言 正文
BGP ---邊界網(wǎng)關(guān)協(xié)議
IGP:內(nèi)部網(wǎng)關(guān)協(xié)議
EGP:外部網(wǎng)關(guān)協(xié)議(不僅僅有BGP)
BGP:
AS ---自治系統(tǒng)---由單一機構(gòu)或組織管理的一些列IP網(wǎng)絡(luò)及其設(shè)備的集合。
1,網(wǎng)絡(luò)范圍太大,協(xié)議跑不過來,需要進行劃分;
2,自治管理
為了方便區(qū)分和標定不同的AS,我們給每個自治系統(tǒng)設(shè)計了一個編號:
AS號---16位二進制構(gòu)成---0 -65535;其中0和65535為保留值,不用,所以,AS號真正的取值范圍為1 -65534;我們將64512 - 65534AS號稱為私有AS號。
因為傳統(tǒng)的AS號存在不夠用的問題,所以目前也存在拓展版的AS號---32位構(gòu)成---目前絕大多數(shù)設(shè)備已經(jīng)支持拓展版的AS號
EGP協(xié)議在之前還存在一款協(xié)議---EGP,但是由于其功能有限,后來在其基礎(chǔ)上進行優(yōu)化和改進,生成了現(xiàn)在的BGP協(xié)議。目前AS之間使用最廣泛的協(xié)議就是BGP協(xié)議。
在目前IPV4環(huán)境下,使用最廣泛發(fā)BGP版本是BGPV4。目前市場上已經(jīng)存在BGPV4+。BGPV4+又可以稱為MP-BGP ---可以支持多種地址族的應(yīng)用。
在沒有BGP協(xié)議的情況下,僅使用重發(fā)布技術(shù),也可以實現(xiàn)AS之間的路由信息的共享。但是,之所以不采用這種方案,其原因如下:
- 重發(fā)布技術(shù)本省存在缺陷
---在多點重發(fā)布中,因為種子度量值問題,必然造成選路不佳
2,ASBR設(shè)備的歸屬問題
BGP之間傳遞路由信息的方式一定是和RIP類似,通過傳遞路由條目信息來實現(xiàn)。(只需要學(xué)習本地IGP和BGP)
之所以不使用拓撲信息,主要因為:
- 拓撲信息資源占用量太大,而BGP需要傳遞的數(shù)量是巨大的。
- 傳遞拓撲信息將暴露本AS內(nèi)部的拓撲連接情況。
BGP ---無類別的路徑矢量型協(xié)議
距離矢量---在距離矢量型協(xié)議中,距離是開銷的體現(xiàn),將跳數(shù)作為開銷值的評判標準。將一個路由器看作是一個單位計算距離。
距離矢量是算法的概念,因為IGP協(xié)議本身需要通過算法來計算出未知網(wǎng)段的路由信息。
路徑矢量---是將一個AS看作一個整體路徑矢量不牽扯算法,因為BGP僅僅是將IGP計算出來的路由信息發(fā)送到其他AS之中,相當于僅將現(xiàn)成的路由進行傳遞而不需要計算。
IGP?---選路佳,收斂快,占用資源少
BGP協(xié)議的關(guān)注點:
1,可控性---AS之間需要傳遞大量的路由信息,所謂可控,就是可以更方便的干涉選路,更容易做路由策略。
為了保證可控型,BGP舍棄了開銷值。取而代之的是BGP給每條路由信息附加了很多路徑屬性。之后,可以通過這些屬性來進行選路。因為多種屬性的存在,將導(dǎo)致我們的選路變的更加的靈活和方便。使得BGP協(xié)議具有強大的可操控型。
因為BGP協(xié)議需要傳遞大量的路由信息,所以,其本身不可能存
在周期更新機制。BGP僅存在觸發(fā)更新。
2,可靠性---需要保證數(shù)據(jù)傳輸?shù)目煽?/span>。BGP為了保證傳輸?shù)?/span>
可靠性,其傳輸層協(xié)議直接選擇使用TCP協(xié)議。使用TCP的179
號端口進行工作。
IGP協(xié)議不選擇使用TCP的原因:
1,TCP傳輸效率較低?
2,TCP傳輸占用資源較大
3,TCP協(xié)議只能實現(xiàn)單播,所以,無法通過組播或者廣播的形式發(fā)送,則將導(dǎo)致IGP協(xié)議無法自動發(fā)現(xiàn)鄰居關(guān)系,只能手工指定。
因為BGP選擇使用的是TCP協(xié)議,所以,BGP需要手工建立鄰居關(guān)系。
BGP因為傳輸層使用的是TCP協(xié)議,所以,只要在TCP協(xié)議可以正常建立會話的基礎(chǔ)上就可以完成BGP的建鄰工作。
BGP支持非直連建鄰(網(wǎng)絡(luò)可達)---BGP的非直連建鄰建立在IGP(靜態(tài))之上在BGP中,我們將鄰居關(guān)系稱為對等體關(guān)系。
EBGP對等體關(guān)系---如果建立對等體的兩臺路由器位于不同的AS中,則他們的關(guān)系被稱為EBGP對等體關(guān)系。
IBGP對等體關(guān)系---如果建立對等體的兩臺路由器位于同一個的AS中,則他們的關(guān)系被稱為IBGP對等體關(guān)系。
因為,EBGP對等體之間一般使用直連建鄰,所以,EBGP對等體之間發(fā)送的數(shù)據(jù)包中的TTL值我們將其設(shè)置為1。如果遇到EBGP對等體之間需要進行非直連建鄰,則需要手工修改TTL?值。IBGP對等體關(guān)系在AS內(nèi)部一般都是非直連建鄰,所以TTL值設(shè)置為255。
- AS-BY-AS---在BGP當中,我們將一個AS看作一個整體。
BGP協(xié)議是不支持負載均衡的。----在BGP當中,如果到達同一個目標網(wǎng)段存在多條路徑可以走時,BGP將會根據(jù)其中的路徑屬性來選擇一條最優(yōu)的加載到路由表中,而不會進行負載均衡。
- BGP的數(shù)據(jù)包
BGP協(xié)議所有數(shù)據(jù)包的傳輸?shù)目煽啃跃蒚CP協(xié)議來保證。所有BGP數(shù)據(jù)包均基于TCP建立的會話通道發(fā)送。
OSPF的Hello ---可以周期性的發(fā)現(xiàn),建立和保活鄰居關(guān)系。
在BGP中,發(fā)現(xiàn)鄰居關(guān)系的過程變?yōu)橛扇?/span>手工指定。主要因為TCP協(xié)議需要建立會話通道,之后才會基于通道發(fā)送數(shù)據(jù)包。
open包---建立BGP對等體關(guān)系。----鄰居關(guān)系的建立無非就是參數(shù)協(xié)商的過程。BGP建立鄰居關(guān)系需要通過OPEN包來攜帶參數(shù),進行比對協(xié)商。
AS號---在創(chuàng)建鄰居關(guān)系時需要指定鄰居所在的AS號,這個參數(shù)將被攜帶在OPEN報文中發(fā)送給對方,對方將比對這個AS號和本地所在的AS號是否一致,如果一致,則可以正常建立鄰居關(guān)系。
認證---BGP建鄰也可以做認證,做認證后將攜帶認證口令,認證口令雙方需要比對,一致則可以正常建立鄰居關(guān)系。
ROUTE-ID----區(qū)分和標定路由器的。也是由32位二進制構(gòu)成,按照IP地址的格式來表示。----1,手工配置;2,自動獲取(先看設(shè)備是否存在環(huán)回接口,如果存在則將選擇環(huán)回接口中IP地址最大的地址作為RID,如果沒有環(huán)回接口,則將在物理接口中選擇IP地址最大的作為RID)這個RID將在OPEN包中攜帶,發(fā)送到對端之后,對端將檢測這個RID,如果和本地的RID不同,則將可以正常的建立鄰居關(guān)系。
手工建立鄰居關(guān)系時所指定的建鄰的IP地址必須和收到的open?包中的源IP地址相同才能正常建立鄰居關(guān)系。否則,鄰居關(guān)系將建立失敗。
Holdtime---保活時間---默認時間為180S,在保活時間內(nèi),如果沒有收到對方發(fā)送的keeplive包或者update包,則將斷開BGP鄰居關(guān)系。這個參數(shù)在open報文中將被攜帶,但是,雙方不一致不會影響鄰居關(guān)系的建立,但是在執(zhí)行時,這個時間必須是一致的,則將采用雙方中較小的保活時間來使用。路由器是否支持刷新功能也將成為OPEN報文中所攜帶的一個協(xié)商參數(shù)。
keeplive包---周期保活---周期發(fā)送時間等于保活時間的1/3。默認保活時間180S,則默認的周期發(fā)送時間為60S。
除了保活之外,keeplive包還將在open報文協(xié)商參數(shù)時臨時充當確認包的作用。
TCP協(xié)議進行確認的目的是為了保證數(shù)據(jù)傳輸?shù)目煽啃裕?keeplive報文確認的目的是為了確認認可對方發(fā)送的open報文中的參數(shù)。
update包---更新包---攜帶需要傳遞的路由信息的數(shù)據(jù)包。表示一
條路由條目信息,需要攜帶的參數(shù)主要就是目標網(wǎng)絡(luò)號和子網(wǎng)掩碼信
息,以及路徑屬性。
在更新包中,存在一個撤銷路由條目字段,在這個字段下的路由條目將需要對端刪除,而不再需要通過帶毒傳輸?shù)姆绞絹肀磉_。
notification包---BGP中設(shè)計的一個告警機制。
Route-refresh包---用于改變路由策略變更后請求對等體重新發(fā)送路由
信息。(前提條件是雙方均支持路由刷新功能才行。)
- BGP的狀態(tài)機
BGP的狀態(tài)機描述的是BGP對等體建立過程中狀態(tài)的變化。因為BGP這個協(xié)議可以將鄰居建立過程和路由收發(fā)過程分開進行。
BGP的狀態(tài)機---6種
?
IDLE ---空閑狀態(tài)---路由器啟動BGP進程之后,將先處于idle狀態(tài)。當你手工指定鄰居關(guān)系后,BGP將進入到一個檢查環(huán)節(jié),檢查指定的IP地址在本地路由表中是否可達。如果可達,則將進入到下一個狀態(tài)---connect。
Connect---連接狀態(tài),該狀態(tài)完成TCP會話的建立。
如果TCP會話建立成功,則將進入到opensent狀態(tài),發(fā)送open報文。
如果TCP會話建立失敗,則將進入ACTIVE狀態(tài),嘗試重新建立TCP?會話。
在建立TCP會話過程中,因為雙方都會主動發(fā)起建立會話的過程,而最終建立的都是一個雙向的會話。所以,最終只需要保持一個會話通道即可。選擇方式是通過后續(xù)open報文中的RID進行比較,選擇保留RID大的設(shè)備發(fā)起的TCP會話。
Opensent---發(fā)出本地的open報文。收到對端發(fā)送的open報文,查看里面的參數(shù),之后,如果確認參數(shù)無誤。則將回復(fù)keeplive報文作為確認。
Openconfirm---open報文確認狀態(tài)---對端也收到本地發(fā)送的open報文,之后根據(jù)里面的參數(shù)進行確認。如果確認無誤則將發(fā)送keeplive報文。本段收到對方發(fā)送的keeplive報文之后將進入下一個狀態(tài)。
Established---建立狀態(tài)---標志著BGP對等體關(guān)系的建立。
?
?
- BGP的工作過程
1,基于IGP協(xié)議實現(xiàn)IP可達?
2,指定鄰居關(guān)系,通過三次握手,建立TCP的會話通道。之后所有BGP的數(shù)據(jù)報都將基于TCP會話通道來進行傳遞。
3,使用open報文和keeolive報文進行鄰居關(guān)系的建立。之后將鄰居關(guān)
系收集到一張表中---鄰居表。
4,通過update報文傳遞路由信息。傳遞的路由條目信息中主要包含目標網(wǎng)絡(luò)號,掩碼信息,以及各種路徑屬性。之后,設(shè)備會將所有自己發(fā)出的以及收到的路由信息記錄在一張表中---BGP表。
5,之后將BGP表中的最優(yōu)路徑加載到路由表中。 (依靠屬性選擇出最優(yōu)路徑)
6,收斂完成后,BGP將周期使用keeplive報文進行保活。保活時間默認為180S,周期發(fā)送時間默認為保活時間的1/3,即60S。?
7,若出現(xiàn)錯誤信息,將使用notification報文進行告警。?
8,若發(fā)生結(jié)構(gòu)突變,則將使用update報文進行觸發(fā)更新。
4,BGP的路由黑洞
?
由于BGP協(xié)議支持非直連建鄰,故可能出現(xiàn)BGP協(xié)議跨越未運行BGP協(xié)
議的路由器。導(dǎo)致BGP路由傳遞后,控制層面可達,但是數(shù)據(jù)層面,在經(jīng)
過未運行BGP協(xié)議的路由器時無法通過。形成路由黑洞。
- 在R3上將BGP協(xié)議的路由信息重發(fā)布到IGP當中。
2,直接在R4上運行BGP協(xié)議
3,MPLS
為了避免路由黑洞的情況產(chǎn)生,BGP提出了同步機制---即當一臺路由器從自己的IBGP對等體學(xué)習到一條BGP路由時,他將不能把他通告給自己的EBGP對等體,除非他又從IGP協(xié)議當中學(xué)習到這條路由。
5,BGP的防環(huán)
BGP使用的防環(huán)機制---水平分割機制
EBGP的水平分割---一種專門應(yīng)用EBGP對等體之間,用來解決EBGP對等體之間可能出現(xiàn)的環(huán)路問題。
BGP協(xié)議將在路由條目中記錄所經(jīng)過的AS編號----AS_PATH ---記錄AS路徑的一個屬性。(這個屬性除了可以完成EBGP的水平分割外,還可以作為選路的依據(jù)。)---接收到的BGP路由條目中,其中的AS_PATH屬性中,若存在本地的AS號,則將拒絕接受。
IBGP的水平分割---一種專門應(yīng)用在IBGP對等體之間,用來解決IBGP對等體之間可能出現(xiàn)的環(huán)路問題。
?
IBGP水平分割---當一個路由器從一個IBGP對等體處學(xué)習到某條BGP路由時,他將不能在將這條路由信息通告給其他的IBGP對等體關(guān)系。
?
因為IBGP水平分割的限制,導(dǎo)致IBGP對等體之間的路由信息只能傳遞
一跳,在這情況下,可能會造成通信障礙。
解決方案:
-
構(gòu)建全連的IBGP對等體關(guān)系---這樣的方法弊端在于
- 全連建鄰會導(dǎo)致資源消耗增加;
- 可能會導(dǎo)致網(wǎng)絡(luò)的可拓展性降低。
2,路由反射器
3,聯(lián)邦
6,BGP的基本配置
原文鏈接:https://blog.csdn.net/Newcomer_L/article/details/125898346
相關(guān)推薦
- 2022-06-29 Python自定義模塊的創(chuàng)建與使用_python
- 2022-01-29 win server 2008 web IIS部署asp.net程序后,CSS樣式錯亂不顯示問題
- 2022-07-02 Python?matplotlib繪圖時使用鼠標滾輪放大/縮小圖像_python
- 2022-05-29 ASP.NET?Core在WebApi項目中使用Cookie_實用技巧
- 2022-10-27 scrollview?tableView嵌套解決方案示例_IOS
- 2022-02-17 奇怪的小知識 - 如何清空一個數(shù)組?在不改變地址的情況下呢?
- 2022-12-08 React競態(tài)條件Race?Condition實例詳解_React
- 2022-07-16 from .cv2 import * 沒有這個模塊
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支