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.