1. 介紹
BGP是自治系統(tǒng)間的路由協(xié)議。BGP交換的網(wǎng)絡(luò)可達性信息提供了足夠的信息來檢測路由回路并根據(jù)性能優(yōu)先和策略約束對路由進行決策(要點見RFC 1104[2])。特別地,BGP交換包含全部AS path的網(wǎng)絡(luò)可達性信息,按照配置信息執(zhí)行路由策略。
隨著近年來的進步和增長,它也不得不面對一些嚴重的規(guī)模問題,包括:
-B類網(wǎng)絡(luò)地址空間的耗盡。該問題的主要原因之一,是缺少適于中型組織的中等大小的網(wǎng)絡(luò);C類網(wǎng)絡(luò),最多擁有254個主機地址,實在太少,而B類網(wǎng)絡(luò)允許最多65534個地址,卻又太大無法充分使用。
-互聯(lián)網(wǎng)中路由表的增長使目前的軟件(和人們)無法有效管理。
-32位IP地址空間的耗竭。
很明顯,前兩個問題和最后一個問題可能分別在今后一兩年內(nèi)和三年內(nèi)變得急迫。無類別域間路由(CIDR)試圖解決這些問題,設(shè)計相應(yīng)機制來降低路由表和對新IP網(wǎng)絡(luò)分配需求的增長速度。它并沒有解決更具長期性的第三個問題,而是努力讓近期問題推遲使得互聯(lián)網(wǎng)仍能有效運作,同時著手遠期的解決。
BGP-4對BGP-3做了擴展,支持路由信息的聚合及基于無類別域間路由體系(CIDR)[3]的路由減少。本備忘錄論述了BGP-4在互聯(lián)網(wǎng)中的應(yīng)用。
本文檔的所有討論基于如下假設(shè):互聯(lián)網(wǎng)是一些隨意連接的自治系統(tǒng)的集合。也就是說,互聯(lián)網(wǎng)可以建模成一張一般的網(wǎng)絡(luò)圖,圖上節(jié)點是AS,邊是每對AS間的連接。
自治系統(tǒng)的經(jīng)典定義是,一組路由器在統(tǒng)一管理之下,在AS內(nèi)使用內(nèi)部協(xié)議和統(tǒng)一度量來路由數(shù)據(jù)包,而通過外部網(wǎng)關(guān)協(xié)議將數(shù)據(jù)包路由到其他AS。該經(jīng)典定義尚在發(fā)展,一些AS在其內(nèi)部使用多種內(nèi)部網(wǎng)關(guān)協(xié)議和度量。在此,強調(diào)一下自治系統(tǒng)在本文檔中的含義,即使它采用多種IGP和度量,它的管理區(qū)別于其他 AS,其內(nèi)部路由是一致的,當路由穿越它時,它在圖上視作一個節(jié)點。
每個AS由一個管理機構(gòu)管理,至少在外部看來它代表著該系統(tǒng)的路由信息。
2. BGP拓撲模型
當我們說一個在兩個AS之間的連接時,意味著兩件事:
物理連接:兩個AS之間存在一條共享的數(shù)據(jù)鏈路子網(wǎng),并且在該子網(wǎng)上,每個AS至少有一臺自己的邊界網(wǎng)關(guān)路由器。因此,每個AS的邊界網(wǎng)關(guān)路由器可以轉(zhuǎn)發(fā)數(shù)據(jù)包到其他AS的邊界網(wǎng)關(guān)路由器,無需借助于AS內(nèi)到AS間的路由。
BGP連接:在各個AS的BGP發(fā)言人之間有一個BGP會話進程,通過會話溝通路由,經(jīng)過聲明的AS到達某目標網(wǎng)絡(luò)。
本文檔中,我們對構(gòu)成BGP連接的BGP發(fā)言人加以額外限制:他們必須是自己直接共享數(shù)據(jù)鏈路子網(wǎng)。因此,相鄰AS間的BGP會話無需AS內(nèi)或AS間的路由。超出本文范圍的案例可能與該限制不符。
因此,在每個連接中,每個AS擁有一個以上的BGP發(fā)言人和邊界網(wǎng)關(guān)路由器,這些BGP發(fā)言人和邊界網(wǎng)關(guān)路由器分布在共享數(shù)據(jù)鏈路子網(wǎng)上。注意到, BGP發(fā)言人不一定是邊界網(wǎng)關(guān)路由器,反之亦然。一條連接上一個AS的BGP發(fā)言人聲明的路徑可以被同一個共享子網(wǎng)上其他AS的邊界網(wǎng)關(guān)路由器使用,也就是非直接的鄰居是允許的。
一個AS內(nèi)的流量,要么是源于該AS,要么是終于該AS(也就是說,IP數(shù)據(jù)包的源IP或目的IP在該AS內(nèi))。符合以上描述的流量稱為"本地流量",否則稱為"過渡流量"。BGP使用的主要目的是控制過渡流量。
按照某AS如何處理過渡流量,AS可以分為以下幾類:
末端AS:只連接到一個其他AS。自然地,末端AS只運輸本地流量。
多宿主AS:連接到超過一個的其他AS,但不運輸過渡流量。
過渡AS:連接到超過一個的其他AS,可以運輸本地和過渡流量。
一個完整的AS path提供了有效和簡捷的方式來避免路由回路、消除伴隨距離向量算法的"計數(shù)到無窮"問題,因此,BGP沒有對AS之間的連接拓撲加以任何限制。
3. 互聯(lián)網(wǎng)中的BGP
3.1 拓撲學(xué)考慮
互聯(lián)網(wǎng)拓撲可以視作過渡AS、多宿主AS和末端AS的任意互連。為了盡可能減少對目前互聯(lián)網(wǎng)結(jié)構(gòu)的影響,末端和多宿主AS不一定要使用BGP。這些AS 可以運行其他的協(xié)議(比如,EGP)來與過渡AS交換網(wǎng)絡(luò)可達性信息。使用BGP的過渡AS將對這些信息做標記,以表明其學(xué)習(xí)自BGP以外的方法。BGP 不一定運行于末端或多宿主AS,這就不會對源于或終于末端AS或多宿主AS的數(shù)據(jù)包的AS間路由質(zhì)量產(chǎn)生負面影響。
然而,仍然建議在末端和多宿主AS上使用BGP。在這些情況下,BGP相比其他目前使用的協(xié)議(比如EGP),可以提供更優(yōu)的帶寬和性能。另外,這將減少默認路由的使用,為多宿主AS的AS間路由提供更好選擇。
3.2 BGP的整體特性
整體水平上,BGP用來在多個自治系統(tǒng)間傳遞路由信息。其信息流如下圖示:
+-----------+ +------------+
BGP | BGP | BGP | BGP | BGP
-------------------+ +--------------------------+ +----------
| IGP | | IGP |
+------------+ +-----------+
<-AS A--> <--AS B->
這張圖表說明,在AS間只用BGP傳輸信息,而在AS內(nèi)BGP和IGP均可以傳輸信息。確保AS內(nèi)BGP和IGP間路由信息的兼容性,是一個重大問題,最后將在附錄A中詳細討論。
3.3 BGP鄰居關(guān)系
互聯(lián)網(wǎng)視作隨意連接的AS的集合。通過BGP直接連接的路由器就是BGP發(fā)言人。BGP發(fā)言人可以在同一AS內(nèi),也可以在不同AS內(nèi)。每個AS的BGP 發(fā)言人互相通信,遵照每個AS建立的策略,交換網(wǎng)絡(luò)可達性信息。對某BGP發(fā)言人,如果與其他BGP發(fā)言人通信而且那個BGP發(fā)言人在不同的AS,則那個其他 BGP發(fā)言人稱為外部對等體,而如果在相同的AS內(nèi),則稱為內(nèi)部對等體。
在一個AS內(nèi)可以有許多BGP發(fā)言人并被認為是需要的。通常,如果一個 AS與其他AS有多個連接,則需要多個BGP發(fā)言人。所有BGP發(fā)言人代表著相同AS,對外保持統(tǒng)一形象。這就要求他們之間保持一致的路由信息。這些路由器可以通過BGP或其他方法互相通信。在同一AS內(nèi)的所有BGP發(fā)言人的策略約束必須一致。一些技術(shù),如使用帶標記的IGP(參見A.2.2),可以用來探測可能的矛盾。
對于外部對等體,對等體分別屬于不同的AS,但共享同一數(shù)據(jù)鏈路子網(wǎng)。這共同的子網(wǎng)用來在對等體之間運輸BGP信息。如果BGP使用通過一個干預(yù)的AS,則將使AS path信息無效。自治系統(tǒng)號必須在BGP中使用,用來標明BGP發(fā)言人所在的自治系統(tǒng)。
4. 路由聚合的需要
當路由信息由各部分聚合時,一致的BGP-4實現(xiàn)需要對其聲明。例如,一個在自治系統(tǒng)邊界的BGP發(fā)言人必須能產(chǎn)生某目標IP集合的聚合路由(在BGP -4 術(shù)語中該目標IP集合稱為網(wǎng)絡(luò)層可達性信息,NLRI),在它基礎(chǔ)上進行管理(包括路由器自身代表的地址),即使當這些地址不是同時全部可達的。
當聚合的NLRI產(chǎn)生時,一致實現(xiàn)應(yīng)能給予聲明。
當NLRI解聚合時,一致實現(xiàn)應(yīng)能給予聲明。
當出現(xiàn)重疊路由時,一致實現(xiàn)應(yīng)能支持如下選項:
-安裝聚合和詳細的路由
-只安裝詳細路由
-安裝聚合路由
-均不安裝
一定的路由策略可能依賴于NLRI(比如,"研究"與"商業(yè)")。因此,一個運行路由聚合的BGP發(fā)言人,可能的情況下,應(yīng)該能認知聚合NLRI時路由策略的潛在實現(xiàn)。
5. BGP的策略生成
BGP通過各種路由參數(shù)選擇和約束,實現(xiàn)策略。策略并不直接編入?yún)f(xié)議。而是,策略通過BGP的配置信息來實現(xiàn)。
BGP實現(xiàn)策略的途徑有,影響從多條路徑中的選擇,控制路由信息的下步傳遞。策略由AS的管理者決定。
路由策略與政治、安全或經(jīng)濟考慮有關(guān)。
例如,如果一個AS不愿意將流量運輸?shù)狡渌鸄S,它可以制定策略來禁止。如下是一些能夠改變BGP使用的路由策略的例子:
1. 一個多宿主AS可以拒絕成為其他AS的過渡AS。(它只告知那些目標網(wǎng)絡(luò)在自己AS內(nèi)部的路由。)
2. 一個多宿主AS可以指定成為幾個相鄰AS的過渡AS,也就是說,一部分而不是全部AS,可以把該多宿主AS作為過渡AS。(它只把它的路由信息告知被允許的AS。)
3. 一個AS向外運輸流量時,可以決定是否偏愛特定的AS。
BGP應(yīng)用可以控制許多性能相關(guān)的標準:
1. 一個AS可以最少化過渡AS的數(shù)目。(AS path越短,越可能被采用。)
2. 過渡AS的權(quán)重。如果一個AS決定,兩個以上的AS path可以用來到達目標網(wǎng)絡(luò),那么,AS可以使用多種方法來決定采納哪個候選AS path。一個AS的權(quán)重值由以下幾個因素決定:徑向距離,鏈路速度,容量,擁塞的趨勢,和運行質(zhì)量。這些性能值可以由BGP以外的方法決定。
3. 優(yōu)先考慮內(nèi)部路由,而不是外部路由。
為了一個AS的統(tǒng)一性,那些產(chǎn)自策略和/或正常路由選擇過程的等值路徑,必須以一致的方式解決。
BGP的基礎(chǔ),是這樣一個規(guī)則:一個AS只把自己使用的路由通知給相鄰的AS。該規(guī)則反映了目前互聯(lián)網(wǎng)常用的"一跳接一跳"的路由方式。
6. BGP的路徑選擇
BGP 發(fā)言人的一項主要任務(wù),是評價諸條從自身出發(fā)到那些用網(wǎng)絡(luò)前綴表達的目的地的路徑,從中選出最優(yōu),應(yīng)用合適的策略約束,然后將它通知給所有的BGP鄰居。關(guān)鍵問題是如何評價和比較這些不同的路徑。傳統(tǒng)的距離向量協(xié)議(比如RIP)中,每條路徑只有一個度量。