定義
BGP叫做邊界(AS的邊界)網(wǎng)關(guān)協(xié)議
AS:AS是指由同一個技術(shù)管理機構(gòu)管理(企業(yè),ISP運營商)楚午,使用統(tǒng)一選路策略的一些路由器的集合昭齐。
IGP:AS內(nèi)部網(wǎng)關(guān)協(xié)議,實現(xiàn)AS內(nèi)部的互聯(lián)互通
EGP:AS互聯(lián)互通的一種路由協(xié)議
AS號:取值范圍 1-65535
64512-65535 是私有AS號矾柜,用大型企業(yè)內(nèi)部進行AS的復(fù)制
1-64511 是公有AS號阱驾,需要為用戶/企業(yè)提供互聯(lián)網(wǎng)介入服務(wù)時分配的
AS號 老的長度2個字節(jié),16bit
AS號 新的長度4個字節(jié)怪蔑,32bit
IGP 直連鄰居之間傳遞路由信息里覆,逐跳(逐路由)的傳遞路由
BGP是一種工作在應(yīng)用層的協(xié)議,只要BGP鄰居能夠建立缆瓣,BGP可以跨越多跳路由器建立鄰居關(guān)系
BGP的路由屬性是人為設(shè)計的喧枷,BGP的路由屬性是對BGP路由進一步的描述
作用:實現(xiàn)BGP路由的控制,防環(huán),選路隧甚,管理
BGP鄰居發(fā)現(xiàn)
1车荔、BGP是一種基于TCP協(xié)議的應(yīng)用層路由協(xié)議,所以鄰居不會自動建立戚扳,需要手動配置夸赫。
2、BGP是一種單播通信咖城,DIP要事先知道
3、BGP使用TCP的179端口進行工作
4呼奢、BGP建立鄰居的地址要保證連通性(兩個地址之間的路由要通)
BGP發(fā)現(xiàn)鄰居時需要先啟動BGP的一端宜雀,先發(fā)起TCP連接,RTB先啟動BGP協(xié)議握础,RTB 使用隨機端口號向RTA的179端口發(fā)起TCP連接辐董。
BGP鄰居類型
EBGP:運行在不同AS之間的BGP路由器建立的鄰居關(guān)系為EBGP鄰居關(guān)系
IBGP:運行在同一個AS之間的BGP路由器建立的鄰居關(guān)系為IBGP鄰居關(guān)系
EBGP的配置步驟
1、直連物理接口配置EBGP
實驗拓撲
ip配置不再贅述
配置BGP的AS
[R1]BGP 1
[R1-bgp]peer 10.1.12.2 as-number 2
源地址默認情況下為去往鄰居地址路由的出接口IP
[R2]bgp 2
[R2-bgp]peer 10.1.12.1 as-number 1
我們在進行BGP配置的時候需要注意指定的鄰居地址為本端向該鄰居發(fā)送BGP報文的目的地址禀综,源地址默認情況下為去往鄰居地址路由的出接口IP
我們繼續(xù)實驗:
<R1>dis bgp peer
BGP local router ID : 10.1.12.1##繼承全局的router id
Local AS number : 1 ##用來描述自己所在的AS號
Total number of peers : 1 #用來描述鄰居的數(shù)量 Peers in established state : 1#用來描述能正常建立鄰居關(guān)系的數(shù)量
Peer(鄰居ip) V (協(xié)議版本號)AS(鄰居bgpAS號) MsgRcvd (從鄰居那邊收到的BGP報文的數(shù)量) MsgSent(發(fā)送給鄰居BGP報文的數(shù)量) OutQ(在發(fā)送給鄰居的BGP出接口隊列上有多少BGP简烘,不為0,說明BGP相關(guān)的鏈路有擁塞) Up/Down (狀態(tài)) State PrefRcv(表示從鄰居那邊收到BGP路由的數(shù)量)
10.1.12.2 4 2 19 19 0 00:17:47(鄰居建立起來的時間) Established(只有這種的狀態(tài)才是best定枷,其他的都有問題)
0(表示從鄰居那邊收到路由的數(shù)量為0)
<R1>dis
<R1>display rou
<R1>display router i
<R1>display router id
RouterID:10.1.12.1
繼承全局的router id
2孤澎、用lookback接口配置EBGP
背景:
繼續(xù)實驗:
為了解決單條BGP線路不穩(wěn)定,我們新建一條物理鏈路作為備選路線欠窒,并配置如下
ip配置完成之后覆旭,我們將其配置入BGP進程中。
[R1]bgp 1
[R1-bgp]peer 10.1.21.2 as 2
R2操作相同
此時我們查詢bgp 鄰居
這種i情況看似穩(wěn)定岖妄,但是我們繼續(xù)實驗就會發(fā)現(xiàn)問題
我們在R1引入一條靜態(tài)路由型将,
[R1]ip route-static 192.168.1.0 24 NULL 0
[R1]bgp 1
[R1-bgp]import-route st
[R1-bgp]import-route static
[R1-bgp]q
[R1]dis bgp rou
[R1]dis bgp routing-table
BGP Local router ID is 10.1.12.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.1.0 0.0.0.0 0 0 ?
我們從R2上觀察bgp 的路由表
從上圖我們可以看到針對一條路由,它傳遞了兩次荐虐,一次是上邊的路由線路七兜,一次是下邊的路由線路。這樣就會增加協(xié)議的負擔(dān)福扬,因為BGP的路由都是十萬多條數(shù)據(jù)起步腕铸,增加資源負擔(dān),~占用忧换。
所以這種方法是不建議的恬惯。
因此我們可以采用環(huán)回口配置EBGP鄰居,因為不管兩條鏈路中的任何一條都可以通過環(huán)回口通信亚茬。在保證可靠性的同時又可以節(jié)省資源占用酪耳。
做法
1.各自起環(huán)回口
[R1]int lo 0
[R1-LoopBack0]ip add 1.1.1.1 32
R2同
[R2]int l0
[R2-LoopBack0]ip add 2.2.2.2 32
我們測試一下連通性:
一定是不通的
現(xiàn)在我們刪掉R2設(shè)備上BGP相關(guān)的所有配置,(現(xiàn)網(wǎng)不要用,小心蹲號子)
[R1]undo bgp 1
Warning: All BGP configurations will be deleted. Continue? [Y/N]: y
R2同上
配置路由:
[R1]ip route-static 2.2.2.2 32 10.1.12.2
[R1]ip route-static 2.2.2.2 32 10.1.21.2
R2
[R2]ip route-static 1.1.1.1 32 10.1.12.1
[R2]ip route-static 1.1.1.1 32 10.1.21.1
路由ping通之后我們就可以建立BGP鄰居了
建立
[R1]bgp 1
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 2.2.2.2 as
[R1-bgp]peer 2.2.2.2 as-number 2
[R1-bgp]dis ip rout
[R1-bgp]dis ip routing-table 2.2.2.2
[ R2]bgp 2
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 1.1.1.1 as
[R2-bgp]peer 1.1.1.1 as-number 1
[R2-bgp]
這里需要注意一下碗暗,我們查看路由表發(fā)現(xiàn)颈将,他還是會用物理口作為源地址發(fā)起連接,至于是哪個物理口言疗,我們需要看負載分擔(dān)的情況晴圾。
此時我們的目的很明顯,就是通過1.1.1.1作為源地址向2.2.2.2發(fā)送BGP報文噪奄,但是此時的R1的1.1.1.1是環(huán)回口靜態(tài)路由死姚,默認用的是出接口的地址作為源地址進行通信。
因此我們需要再進行以下操作
BGP進程下
[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[R2-bgp]peer 1.1.1.1 connect-interface LoopBack 0
這條命令表示:向指定鄰居發(fā)送BGP報文的地址為指定loopback接口的ip地址
我們發(fā)現(xiàn)此時過了很久雙方鄰居關(guān)系還是沒有建立起來勤篮。
埋雷
這是因為從環(huán)回口到路由都毒,中間是進過一跳的,從1.1.1.1的環(huán)回口到對端路由器接口后TTL-1=0,還需要再往本路由的環(huán)回口作為下一跳繼續(xù)發(fā)送碰缔,但是此時TTL=0账劲,直接丟棄,導(dǎo)致鄰居關(guān)系不建立金抡。
ps: 在現(xiàn)實網(wǎng)絡(luò)環(huán)境中瀑焦,由于防止單一線路脆弱,路由器選路的方式有很多條梗肝,我們可以把TTL值設(shè)置的大一點榛瓮,讓路由經(jīng)過很多條依然可以使得在到達對端BGP路由器接口時TTL>=1.
默認情況下,EBGP鄰居之間發(fā)送BGP報文的TTL=1巫击,即強制要求EBGP鄰居直連榆芦。
修改BGP進程下環(huán)回口ip的TTL值
[R1]bgp 1
[R1-bgp]peer 2.2.2.2 eb
[R1-bgp]peer 2.2.2.2 ebgp-max-hop 10
R2同
目的:當EBGP鄰居之間存在多跳時,指定向EBGP鄰居發(fā)送BGP報文的TTL值喘鸟,僅在EBGP鄰居之間使用匆绣,IBGP鄰居默認TTL=255
效果圖
因為我們是在bgp引入靜態(tài)路由,所以也會把2.2.2.2這條路由存入BGP路由表什黑,現(xiàn)在我們直接發(fā)布路由崎淳,
[R1-bgp]undo import-route static
[R1-bgp]network 192.168.1.0 24
此時我們再次從R2查看BGP的路由表
如果我們需要在同一個AS號內(nèi)用loopback接口配置IBGP,我們就只需要配置兩條命令
bgp 1
peer 2.2.2.2 as 1
peer 2.2.2.2 connect-interface LoopBack 0
這個時候就不需要進行TTL值的配置愕把,因為在IBGP中鄰居默認的TTL值255
bgp 1
peer 1.1.1.1 as 1
peer 1.1.1.1 connect-interface LoopBack 0