點擊藍色目錄查找內容
BGP協議理論
BGP概述
BGP是一種運行在AS與AS之間的動態路由協議,主要作用是在AS之間自動交換無環路由信息
以此來構建AS的拓撲圖,從而消除路由環路並實施用戶配置的路由策略。
目前公網網絡條目衆多,IGP協議無法承載,而BGP可以輕鬆應對,通常BGP協議用於ISP和ISP之間或跨域地域總、分公司之間的路由信息交換
自制系統編號
自治系統(AS)是由一個技術管理機構管理,使用統一選路策略的一組路由器集合
自治系統編號範圍:1-65535,其中1-64511是互聯網上註冊公有AS號,類似公網IP地址。
64512-65535是私有AS號,類似私網IP地址
www.inna.org,註冊網址(個人無法註冊)
動態路由的分類
按自治系統分類
IGP
自治系統內部路由協議,主要:RIP1/RIP2、OSPF、ISIS、EIGRP(思科私有協議)
IGP是運行在AS內部的路由協議,主要解決AS內部的選路問題,發現、計算路由
EGP
自治系統之間的路由協議,通常:BGP
EGP是運行在AS與AS之間的路由協議,他解決AS之間選路問題。
按協議類型分類
距離矢量路由協議
rip1/2、BGP(路徑矢量協議)、EIGRP(高級距離矢量協議)
鏈路狀態路由協議
OSPF、ISIS:使用SPF最短路徑算法
BGP的特點
●傳輸協議:TCP,端口號179
●BGP是外部路由協議,用來在AS之間傳遞路由信息
●是一種增強的路徑矢量路由協議
●擁有可靠的路由更新機制
●具備豐富的Metric度量方法
●無環路協議設計
●爲路由條目附帶多種屬性信息
●支持CIDR(無類別域間選路)
●豐富的路由過濾和路由策略
●無需週期性更新
●路由更新時只發送增量路由
●週期性發送KeepAlive報文以保持 TCP連通性
BGP的工作原理
BGP報文
Open報文
OPen報文是TCP建立後發送的第一個報文,用於建立BGP對等體之間的連接關係,主要包含BGP版本號、本地AS編號、Holdtime等信息
UPdate報文
Update報文用來在BGP之間更新路由信息,Updata報文可以通告多條屬性相同的可達路由信息,也可以撤銷多條路由不可達的路由信息
Notification報文
報文的作用是當BGP檢測到錯誤狀態時候,立即向對等體發送NOtification報文,之後BGP就會中斷只要收到Notification報文就會返回idle狀態
Route-Refresh報文
用來告知對等體所支持路由的刷新能力,BGP的入口策略路由發生變化,本地的BGP路由會向對等體發送Route-Refresh報文,收到信息後,對等體將其路由信息重新發送給本地BGP路由器
KeepAlive報文
該報文在對等體之間週期的發送報文,用以保持連接的有效性並維護其連接,KeepAlive報文只有一個BGP報文頭,默認KeepAlive報文發送週期爲60S,保持時間180S,這個類似於OSPF中的Hello報文
BGP數據庫
IP路由表:全局路由信息庫,包括最優的IP路由信息
BGP路由表:BGP路由信息庫,包括本地BGPSpeak通告的路由信息,將其最優的添加到路由表中
鄰居表:對等體鄰居清單表,包括對等體兩端的鄰居信息及鄰居列表
Adi-RIB-In:對等體宣告給本地的Speak的未處理的路由信息庫
Adjust-RIB-OUT:本地Speak宣告給指定的對等體路由信息庫
BGP的類型
兩種鄰居:IBGP和EBGP
IBGP:同一個AS內部BGP鄰居關係,IBGP鄰居是指運行BGP協議的對等體兩端在同一個AS域內,屬於BGP AS內部
EBGP:AS之間的BGP鄰居關係,EBGP通常指運行BGP協議的對等體兩端在不同AS內部
BGP跨AS路由實驗配置
實驗環境
eNSP軟件
4臺路由器(R1,R2,R3,R5)
R1,R2,R5處於OSPF的area 0,也處於AS100中
R3處於AS200中
實驗目的
通過相應配置,實現路由全收斂,達到全網通信目的
實驗拓撲圖
具體配置參數
R1配置
[R1]dis cu '//查看R1的所有配置'
#
sysname R1 '//修改名稱'
#
router id 1.1.1.1 '//宣告router id'
#
#
interface GigabitEthernet0/0/0 '//配置接口地址'
ip address 12.0.0.1 255.255.255.252
#
interface GigabitEthernet0/0/1 '//配置接口地址'
ip address 15.0.0.1 255.255.255.252
#
#
interface LoopBack0 '//配置接口地址'
ip address 1.1.1.1 255.255.255.255
#
bgp 100 '//啓動bgp,100爲進程號'
peer 2.2.2.2 as-number 100 '//和router id 爲2.2.2.2且as區域爲100的路由建立鄰居關係的第一步,指定對方'
peer 2.2.2.2 connect-interface LoopBack0 '//和router id 爲2.2.2.2的路由建立鄰居關係的第二步,用loo 0接口連接對方'
peer 5.5.5.5 as-number 100 '//和router id 爲5.5.5.5且as區域爲100的路由建立鄰居關係的第一步,指定對方'
peer 5.5.5.5 connect-interface LoopBack0 '//和router id 爲5.5.5.5的路由建立鄰居關係的第二步,用loo 0接口連接對方'
#
network 1.1.1.1 255.255.255.255 '//宣告網段'
#
ospf 1 '//啓動ospf進程爲1'
area 0.0.0.0 '//宣告ospf區域'
network 1.1.1.1 0.0.0.0 '//以下都爲宣告網段'
network 12.0.0.0 0.0.0.3
network 15.0.0.0 0.0.0.3
#
R2配置
'//步驟意思和R1相同,不在贅述,但其中和bgp200建立鄰居關係屬於跨區域建立,需要注意使用物理地址建立連接,不可以使用虛擬接口'
[R2]dis cu
#
sysname R2
#
router id 2.2.2.2
#
#
interface GigabitEthernet0/0/0
ip address 12.0.0.2 255.255.255.252
#
interface GigabitEthernet0/0/1
ip address 23.0.0.1 255.255.255.252
#
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
#
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 5.5.5.5 as-number 100
peer 5.5.5.5 connect-interface LoopBack0
peer 23.0.0.2 as-number 200 '//直接使用23.0.0.2的物理地址和bgp200區域的路由器建立連接,不可以使用虛擬接口地址'
#
network 2.2.2.2 255.255.255.255 '//宣告網段'
import-route ospf 1 '//注入ospf 1 的路由條目,否則R3學習不到bgp100中的其他路由條目,除了R2在BGP中宣告的2.2.2.2,其他的都會學習不到,所以需要注入ospf 1 的路由條目'
#
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 12.0.0.0 0.0.0.3
network 23.0.0.0 0.0.0.3
#
R3配置
'//基本都是相同步驟,此處不再贅述步驟含義'
[R3]dis cu
#
sysname R3
#
router id 3.3.3.3
#
#
interface GigabitEthernet0/0/1
ip address 23.0.0.2 255.255.255.252
#
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
#
bgp 200
peer 23.0.0.1 as-number 100 '//使用物理地址23.0.0.1和bgp100的路由器建立鄰居關係'
#
network 3.3.3.3 255.255.255.255
#
R5配置
'//基本都是相同步驟,此處不再贅述步驟含義'
[R5]dis cu
#
sysname R5
#
router id 5.5.5.5
#
#
interface GigabitEthernet0/0/1
ip address 15.0.0.2 255.255.255.252
#
#
interface LoopBack0
ip address 5.5.5.5 255.255.255.255
#
interface LoopBack1
ip address 202.0.0.1 255.255.255.0
#
interface LoopBack2
ip address 202.0.1.1 255.255.255.0
#
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
#
network 5.5.5.5 255.255.255.255
#
ospf 1
area 0.0.0.0
network 5.5.5.5 0.0.0.0
network 15.0.0.0 0.0.0.3
network 202.0.0.0 0.0.0.255
network 202.0.1.0 0.0.0.255
#
此時我們使用dis ip routing-table即可發現已經相互學習到了所有的路由條目
驗證
成功全網互通,用相同方法測試其他幾臺路由器即可
小結
跨自治域建立鄰居關係需要使用物理地址,否則學習不到對方的路由條目
跨自治域建立鄰居關係的兩個路由器,想要學習對方區域的所有路由條目,需要對方將ospf或者IS-IS的路由條目注入進來
跨自治域建立鄰居關係如果要使用虛擬迴環地址,需要添加靜態路由,並指向下一條爲兩跳
'//靜態路由的添加不在贅述'
##R2##
[R2] router id 2.2.2.2
[R2] bgp 100
[R2-bgp] peer 3.3.3.3 as-number 200
[R2-bgp] peer 3.3.3.3 connect-interface LoopBack 0
[R2-bgp] peer 3.3.3.3 ebgp-max-hop 2
##R3##
[R3] router id 3.3.3.3
[R3] bgp 200
[R3-bgp] peer 2.2.2.2 as-number 100
[R3-bgp] peer 2.2.2.2 connect-interface LoopBack 0
[R3-bgp] peer 2.2.2.2 ebgp-max-hop 2