Exterior Gateway Protocol
Exterior Gateway Protocol
| Exterior Gateway Protocol | |
|---|---|
| 中文名 | 外部網關協議 |
| 英文名 | Exterior Gateway Protocol |
| 縮寫 | EGP |
| 提出時間 | 1982年 |
| 正式規範 | RFC 904(1984年4月) |
| 開發者 | Bolt, Beranek and Newman(BBN) |
| 主要作者 | David L. Mills(RFC 904),Eric C. Rosen(RFC 827/888) |
| 路由類型 | 域間路由協議(Inter-Domain Routing Protocol) |
| 核心功能 | 在自治系統之間交換網絡可達性信息 |
| 後續協議 | Border Gateway Protocol(BGP) |
| 標準化狀態 | Historic(歷史標準) |
外部網關協議(Exterior Gateway Protocol,EGP) 是網際網路發展史上第一個用於在不同自治系統之間交換可達性信息的域間路由協議[1][2]。EGP由Bolt, Beranek and Newman(BBN)在20世紀80年代初期開發,其概念最早於1982年在RFC 827中描述[3],隨後在1984年的RFC 904中給出了正式規範[1][4]。EGP的設計基於簡單的樹形拓撲結構假定,採用輪詢機制交換路由信息,只能傳遞可達性信息而不支持路由度量評估。在20世紀80年代中期至90年代初期的網際網路基礎設施中,EGP曾是核心的域間路由標準,主要應用於ARPANET與各類存根自治系統之間的互聯。隨著網際網路拓撲結構從單一核心向多中心互聯演進,EGP在拓撲靈活性、策略控制能力和路由擴展性方面的局限性日益凸顯,於20世紀90年代中期逐步被邊界網關協議所取代,目前已被IETF標記為Historic(歷史)標準[5][6]。
歷史背景
開發動機
EGP的提出源於20世紀80年代初網際網路規模迅速擴張所帶來的架構性挑戰。在網際網路發展的早期階段,ARPANET作為核心骨幹網,所有網關通過GGP網關到網關協議參與全局路由計算,採用統一的距離向量算法。隨著網絡規模的持續擴大,這種無層次結構的方法逐漸暴露出致命問題:路由算法的計算開銷變得過大;大量異構網關參與同一路由算法使維護和故障隔離變得極其困難;對路由算法的任何修改都需要協調眾多獨立機構,其複雜度隨網絡規模增長而失控[7][2]。
分層架構的引入
為了解決上述問題,網際網路被重新規劃為由若干自治系統構成的集合。一個自治系統由一組在統一技術管理下的網關和網絡組成,其內部採用何種路由協議由管理者自行決定,無需被外部網關知曉。自治系統內部的網關稱為內部網關(Interior Gateway),負責在系統內交換路由信息;而代表自治系統與外網通信的網關稱為外部網關(Exterior Gateway)[2]。
在當時的架構設想中,DARPA網關組成的ARPANET和SATNET構成核心系統(core system),各局部網絡的存根網關(stub gateway)作為自治系統連接到核心系統上。核心系統作為長途傳輸介質,為存根系統提供連接服務[7]。這一分層模型中,存根自治系統的外部網關通過EGP與核心系統中相鄰的核心網關交換可達性信息,但存根網關並不轉發來自其他存根系統的流量——它只處理源或目的地位於本網內的數據包[7]。
標準化歷程
EGP的概念最早由Eric C. Rosen在1982年10月的RFC 827中提出。1984年1月,Seamonson和Rosen在RFC 888中描述了存根網關連接到核心系統的具體協議方案[7]。1984年4月,David L. Mills發布了RFC 904,作為EGP的正式規範,該文檔更新了RFC 827和RFC 888中的部分內容,被指定為DARPA社區的官方協議標準[1][4]。RFC 904基於有限狀態自動機建立了一個形式化模型,詳細規定了事件、狀態轉換和動作行為[1]。該版本在網際網路中得到廣泛部署,通常被稱為EGPv2[8]。
工作機制
EGP採用簡單的分層拓撲設計,其主要功能包括鄰居獲取、鄰居可達性檢測和網絡可達性信息交換三個部分[2]。
鄰居獲取(Neighbor Acquisition)
在交換任何路由信息之前,相鄰的外部網關必須首先通過鄰居獲取過程建立對等關係。當一個網關希望與相鄰網關交換可達性信息時,它發送鄰居獲取請求(Acquisition Request)。對方網關若同意,則回復確認(Confirm),此後兩者正式成為EGP鄰居。若收到拒絕(Refuse)消息,則獲取失敗。鄰居關係建立後,網關之間便進入後續的可達性維護和路由信息交換階段[2]。
鄰居可達性檢測(Neighbor Reachability)
EGP採用周期性的Hello/I-HU(I-Heard-You)消息交換來檢測鄰居是否可達。主動網關按固定間隔發送Hello消息,鄰居收到後回復I-Heard-You消息作為響應。若在規定時間內未收到響應,則判定鄰居不可達,此前從該鄰居學習到的所有網絡信息將被視為無效[1]。
網絡可達性交換(Network Reachability)
這是EGP的核心路由更新機制。EGP採用輪詢(Polling)模式來獲取網絡可達性信息:網關主動向其EGP鄰居發送輪詢命令(Poll command),鄰居收到後以一或多個網絡可達性消息(Network Reachability message,也稱Update message)作為響應。網絡可達性消息中包含該網關所知曉的網絡列表,每條網絡可達性條目包括網絡號以及該網絡是否可達的狀態標誌。與後來出現的域間路由協議不同,EGP的消息中不包含用於評估路徑優劣的距離度量(如跳數或開銷),它只傳遞某個網絡是否可達的二元信息[1][2][9]。
協議局限性
隨著網際網路從單一核心網絡向多骨幹網互聯的拓撲結構演進,EGP的多個設計缺陷逐漸暴露,最終導致其被淘汰。
拓撲限制
EGP在設計時假定網際網路由單一的中央核心(最初為ARPANET,後為NSFNET)和若干連接到該核心的存根自治系統(stub AS)構成,網絡拓撲呈簡單的樹形結構。在這種模型下,每個存根自治系統只能通過一個出口連接到核心,不允許自治系統同時連接到多個骨幹網絡。當網際網路中出現多個對等的核心網絡(如NSFNET與其他機構網絡並存)且自治系統需要與多個骨幹網建立連接時,EGP缺乏處理這種拓撲的能力[2][9]。此外,EGP不允許在路由更新中攜帶環路檢測信息,也無法防止樹形拓撲以外結構中的路由環路。
無距離度量
EGP在路由更新中不包含距離或開銷信息,只傳遞可達/不可達的二元狀態。因此,當一個自治系統通過多條路徑連接到同一目的網絡時,EGP無法在這些路徑之間進行選擇——這在本質上不是一個真正的路由協議,而更接近網絡可達性宣告協議[9][2]。EGP被一些研究文獻評價為「準確地說不是一個路由協議」[9]。
無策略控制機制
隨著NSFNET的建設和不同網絡之間商業利益關係(如可接受使用政策AUP)的出現,網絡運營商開始需要根據來源或路徑的性質做出路由選擇。例如,某些網絡可能不願意為特定來源或目的地的流量提供中轉服務。EGP沒有設計任何機制來承載此類策略信息,導致網絡運營商無法細粒度地控制路由的傳播和接受[10]。運營商從EGP鄰居學到路由後,所有策略相關信息(例如「這條路由來自NSFNET」)都在注入內部網關協議時永久丟失[10]。
擴展性問題
EGP將完整的可達性通告封裝在單個IP數據報中。隨著網際網路規模的增長,可達性通告的尺寸超出了鏈路的最大傳輸單元(MTU),導致通告必須被分片傳輸。分片後的通告中任何一個分片的丟失都會導致整個通告的丟失,可靠性較低。IETF曾對EGP的下一代版本(非正式稱為EGPv3)進行過研究並探索了增量更新機制,但這些工作在BGP出現後即被終止[11][10]。
EGP到BGP的過渡
鑑於EGP的諸多局限性,IETF路由工作組啟動了下一代域間路由協議的研發工作。1989年6月,第一個BGP規範(RFC 1105,即BGP-1)發布[12]。與EGP相比,BGP引入了路徑向量算法(Path Vector)以有效防止路由環路,支持攜帶豐富的路徑屬性以承載路由策略信息,並利用TCP作為可靠的傳輸層協議以解決可達性宣告的MTU分片問題。1995年BGP-4(RFC 1771)引入無類別域間路由支持後,EGP徹底退出了歷史舞台。1995年3月發布的RFC 1772(BGP-4應用指南)中專門提供了從EGP向BGP過渡的建議和遷移路徑[13][5]。
目前,EGP被IETF列為Historic狀態。需要注意的是,在當代網絡技術語境中,「外部網關協議」這一中文譯名通常指代EGP這一特定歷史協議,而非泛指某一類域間路由協議。在英文語境下,「exterior gateway protocol」(小寫)仍可作為「域間路由協議」的統稱使用,在學術討論中形容一類協議的功能分類,與特定歷史版本的EGP(大寫)在概念上需要加以區分。
參考文獻
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Mills, D. L., "Exterior Gateway Protocol formal specification", RFC 904, April 1984.
- ↑ 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Korhonen, J., "Exterior Routing", Helsinki University of Technology, 1996.
- ↑ Rosen, E. C., "Exterior Gateway Protocol (EGP)", RFC 827, October 1982.
- ↑ 4.0 4.1 RFC Editor, "Information on RFC 0904".
- ↑ 5.0 5.1 Exterior Gateway Protocol, Wikipedia via Kiwix.
- ↑ EGP and BGP, Netlab, Helsinki University of Technology.
- ↑ 7.0 7.1 7.2 7.3 Seamonson, L. J., Rosen, E. C., "STUB EXTERIOR GATEWAY PROTOCOL", RFC 888, January 1984.
- ↑ Chiappa, N., "[ih The story of BGP?", Internet History Mailing List, February 2013.]
- ↑ 9.0 9.1 9.2 9.3 A Survey of Routing Protocols, Journal of Japanese Society for Software Science and Technology, 1993.
- ↑ 10.0 10.1 10.2 Mamakos, L., "[ih EGP vs. BGP", Internet History Mailing List, August 2009.]
- ↑ Chiappa, N., "[ih The story of BGP?" (EGP3 discussion), Internet History Mailing List, February 2013.]
- ↑ Lougheed, K., Rekhter, Y., "A Border Gateway Protocol (BGP)", RFC 1105, June 1989.
- ↑ Rekhter, Y., "Application of the Border Gateway Protocol in the Internet", RFC 1772, March 1995.