Exterior Gateway Protocol:修订间差异
TeodoroSeccombe(留言 | 贡献) 小 创建页面,内容为“。” |
IdleTap-bot(留言 | 贡献) 由旧格式Infobox转换为新参数格式(label/data),修复空信息框(由IdleTap-bot执行) |
||
| 第1行: | 第1行: | ||
{{Infobox | Exterior Gateway Protocol{{Infobox | ||
| | | title = Exterior Gateway Protocol | ||
| label1 = 中文名 | |||
| data1 = 外部网关协议 | |||
| label2 = 英文名 | |||
| data2 = Exterior Gateway Protocol | |||
| label3 = 缩写 | |||
| data3 = EGP | |||
| label4 = 提出时间 | |||
| data4 = 1982年 | |||
| label5 = 正式规范 | |||
| data5 = RFC 904(1984年4月) | |||
| label6 = 开发者 | |||
| data6 = Bolt, Beranek and Newman(BBN) | |||
| label7 = 主要作者 | |||
| data7 = David L. Mills(RFC 904),Eric C. Rosen(RFC 827/888) | |||
| label8 = 路由类型 | |||
| data8 = 域间路由协议(Inter-Domain Routing Protocol) | |||
| label9 = 核心功能 | |||
| data9 = 在自治系统之间交换网络可达性信息 | |||
曾 | | label10 = 后续协议 | ||
| data10 = Border Gateway Protocol(BGP) | |||
| label11 = 标准化状态 | |||
| data11 = Historic(历史标准) | |||
}}'''外部网关协议(Exterior Gateway Protocol,EGP)''' 是[[互联网]]发展史上第一个用于在不同[[自治系统]]之间交换可达性信息的域间[[路由协议]]<ref name="RFC904">[https://datatracker.ietf.org/doc/rfc904/ Mills, D. L., "Exterior Gateway Protocol formal specification", RFC 904, April 1984.]</ref><ref name="CSE">[https://www.cse.hut.fi/fi/opinnot/T-110.5190/1996/ext_rout.html Korhonen, J., "Exterior Routing", Helsinki University of Technology, 1996.]</ref>。EGP由Bolt, Beranek and Newman(BBN)在20世纪80年代初期开发,其概念最早于1982年在RFC 827中描述<ref name="RFC827">[https://datatracker.ietf.org/doc/rfc827/ Rosen, E. C., "Exterior Gateway Protocol (EGP)", RFC 827, October 1982.]</ref>,随后在1984年的RFC 904中给出了正式规范<ref name="RFC904" /><ref name="RFC904_Info">[https://www.rfc-editor.org/info/rfc0904 RFC Editor, "Information on RFC 0904".]</ref>。EGP的设计基于简单的树形拓扑结构假定,采用轮询机制交换路由信息,只能传递可达性信息而不支持路由度量评估。在20世纪80年代中期至90年代初期的互联网基础设施中,EGP曾是核心的域间路由标准,主要应用于ARPANET与各类存根自治系统之间的互联。随着互联网拓扑结构从单一核心向多中心互联演进,EGP在拓扑灵活性、策略控制能力和路由扩展性方面的局限性日益凸显,于20世纪90年代中期逐步被[[边界网关协议]]所取代,目前已被IETF标记为Historic(历史)标准<ref name="[[Wiki]]EGP">[https://browse.library.kiwix.org/content/wikipedia_en_all_maxi/A/Exterior_Gateway_Protocol Exterior Gateway Protocol, Wikipedia via Kiwix.]</ref><ref name="Netlab">[https://www.netlab.tkk.fi/opetus/s38030/k00/ EGP and BGP, Netlab, Helsinki University of Technology.]</ref>。 | |||
== 历史背景 == | |||
=== 开发动机 === | |||
EGP的提出源于20世纪80年代初互联网规模迅速扩张所带来的[[架构]]性挑战。在互联网发展的早期阶段,ARPANET作为核心骨干网,所有网关通过GGP网关到网关协议参与全局路由计算,采用统一的[[距离向量算法]]。随着网络规模的持续扩大,这种无层次结构的方法逐渐暴露出致命问题:路由算法的计算开销变得过大;大量异构网关参与同一路由算法使维护和故障隔离变得极其困难;对路由算法的任何修改都需要协调众多独立机构,其复杂度随网络规模增长而失控<ref name="RFC888">[https://www.rfc-editor.org/info/rfc888 Seamonson, L. J., Rosen, E. C., "STUB EXTERIOR GATEWAY PROTOCOL", RFC 888, January 1984.]</ref><ref name="CSE" />。 | |||
=== 分层架构的引入 === | |||
为了解决上述问题,互联网被重新规划为由若干自治系统构成的集合。一个自治系统由一组在统一技术管理下的网关和网络组成,其内部采用何种路由协议由管理者自行决定,无需被外部网关知晓。自治系统内部的网关称为内部网关(Interior Gateway),负责在系统内交换路由信息;而代表自治系统与外网通信的网关称为外部网关(Exterior Gateway)<ref name="CSE" />。 | |||
在当时的架构设想中,DARPA网关组成的ARPANET和SATNET构成核心系统(core system),各局部网络的存根网关(stub gateway)作为自治系统连接到核心系统上。核心系统作为长途传输介质,为存根系统提供连接服务<ref name="RFC888" />。这一分层模型中,存根自治系统的外部网关通过EGP与核心系统中相邻的核心网关交换可达性信息,但存根网关并不转发来自其他存根系统的流量——它只处理源或目的地位于本网内的[[数据]]包<ref name="RFC888" />。 | |||
=== 标准化历程 === | |||
EGP的概念最早由Eric C. Rosen在1982年10月的RFC 827中提出。1984年1月,Seamonson和Rosen在RFC 888中描述了存根网关连接到核心系统的具体协议方案<ref name="RFC888" />。1984年4月,David L. Mills发布了RFC 904,作为EGP的正式规范,该文档更新了RFC 827和RFC 888中的部分内容,被指定为DARPA社区的官方协议标准<ref name="RFC904" /><ref name="RFC904_Info" />。RFC 904基于有限状态自动机建立了一个形式化模型,详细规定了事件、状态转换和动作行为<ref name="RFC904" />。该版本在互联网中得到广泛部署,通常被称为EGPv2<ref name="IHEGP2">[https://elists.isoc.org/pipermail/internet-history/2013-February/002675.html Chiappa, N., "[ih] The story of BGP?", Internet History Mailing List, February 2013.]</ref>。 | |||
== 工作机制 == | |||
EGP采用简单的分层拓扑设计,其主要功能包括邻居获取、邻居可达性检测和网络可达性信息交换三个部分<ref name="CSE" />。 | |||
=== 邻居获取(Neighbor Acquisition) === | |||
在交换任何路由信息之前,相邻的外部网关必须首先通过邻居获取过程建立对等关系。当一个网关希望与相邻网关交换可达性信息时,它发送邻居获取请求(Acquisition Request)。对方网关若同意,则回复确认(Confirm),此后两者正式成为EGP邻居。若收到拒绝(Refuse)消息,则获取失败。邻居关系建立后,网关之间便进入后续的可达性维护和路由信息交换阶段<ref name="CSE" />。 | |||
=== 邻居可达性检测(Neighbor Reachability) === | |||
EGP采用周期性的Hello/I-HU(I-Heard-You)消息交换来检测邻居是否可达。主动网关按固定间隔发送Hello消息,邻居收到后回复I-Heard-You消息作为响应。若在规定时间内未收到响应,则判定邻居不可达,此前从该邻居学习到的所有网络信息将被视为无效<ref name="RFC904" />。 | |||
=== 网络可达性交换(Network Reachability) === | |||
这是EGP的核心路由更新机制。EGP采用轮询(Polling)模式来获取网络可达性信息:网关主动向其EGP邻居发送轮询命令(Poll command),邻居收到后以一或多个网络可达性消息(Network Reachability message,也称Update message)作为响应。网络可达性消息中包含该网关所知晓的网络列表,每条网络可达性条目包括网络号以及该网络是否可达的状态标志。与后来出现的域间路由协议不同,EGP的消息中不包含用于评估路径优劣的距离度量(如跳数或开销),它只传递某个网络是否可达的二元信息<ref name="RFC904" /><ref name="CSE" /><ref name="[[Js|JS]]tage">[https://www.jstage.jst.go.jp/article/jssst/10/4/10_4_298/_pdf/-char/en A Survey of Routing Protocols, Journal of Japanese Society for Software Science and Technology, 1993.]</ref>。 | |||
== 协议局限性 == | |||
随着互联网从单一核心网络向多骨干网互联的拓扑结构演进,EGP的多个设计缺陷逐渐暴露,最终导致其被淘汰。 | |||
=== 拓扑限制 === | |||
EGP在设计时假定互联网由单一的中央核心(最初为ARPANET,后为NSFNET)和若干连接到该核心的存根自治系统(stub AS)构成,网络拓扑呈简单的树形结构。在这种模型下,每个存根自治系统只能通过一个出口连接到核心,不允许自治系统同时连接到多个骨干网络。当互联网中出现多个对等的核心网络(如NSFNET与其他机构网络并存)且自治系统需要与多个骨干网建立连接时,EGP缺乏处理这种拓扑的能力<ref name="CSE" /><ref name="JStage" />。此外,EGP不允许在路由更新中携带环路检测信息,也无法防止树形拓扑以外结构中的路由环路。 | |||
=== 无距离度量 === | |||
EGP在路由更新中不包含距离或开销信息,只传递可达/不可达的二元状态。因此,当一个自治系统通过多条路径连接到同一目的网络时,EGP无法在这些路径之间进行选择——这在本质上不是一个真正的路由协议,而更接近网络可达性宣告协议<ref name="JStage" /><ref name="CSE" />。EGP被一些研究文献评价为“准确地说不是一个路由协议”<ref name="JStage" />。 | |||
=== 无策略控制机制 === | |||
随着NSFNET的建设和不同网络之间商业利益关系(如可接受使用政策AUP)的出现,网络运营商开始需要根据来源或路径的性质做出路由选择。例如,某些网络可能不愿意为特定来源或目的地的流量提供中转服务。EGP没有设计任何机制来承载此类策略信息,导致网络运营商无法细粒度地控制路由的传播和接受<ref name="IH_BGPvsEGP">[https://elists.isoc.org/pipermail/internet-history/2009-August/000874.html Mamakos, L., "[ih] EGP vs. BGP", Internet History Mailing List, August 2009.]</ref>。运营商从EGP邻居学到路由后,所有策略相关信息(例如“这条路由来自NSFNET”)都在注入内部网关协议时永久丢失<ref name="IH_BGPvsEGP" />。 | |||
=== 扩展性问题 === | |||
EGP将完整的可达性通告封装在单个IP数据报中。随着互联网规模的增长,可达性通告的尺寸超出了链路的最大传输单元(MTU),导致通告必须被分片传输。分片后的通告中任何一个分片的丢失都会导致整个通告的丢失,可靠性较低。IETF曾对EGP的下一代版本(非正式称为EGPv3)进行过研究并探索了增量更新机制,但这些工作在BGP出现后即被终止<ref name="IH_EGP3">[https://elists.isoc.org/pipermail/internet-history/2013-February/002675.html Chiappa, N., "[ih] The story of BGP?" (EGP3 discussion), Internet History Mailing List, February 2013.]</ref><ref name="IH_BGPvsEGP" />。 | |||
== EGP到BGP的过渡 == | |||
鉴于EGP的诸多局限性,IETF路由工作组启动了下一代域间路由协议的研发工作。1989年6月,第一个[[BGP]]规范(RFC [[110]]5,即BGP-1)发布<ref name="RFC1105">[https://datatracker.ietf.org/doc/rfc1105/ Lougheed, K., Rekhter, Y., "A Border Gateway Protocol (BGP)", RFC 1105, June 1989.]</ref>。与EGP相比,[[BGP]]引入了路径向量算法(Path Vector)以有效防止路由环路,支持携带丰富的路径属性以承载路由策略信息,并利用[[TCP]]作为可靠的传输层协议以解决可达性宣告的MTU分片问题。1995年BGP-4(RFC 1771)引入[[无类别域间路由]]支持后,EGP彻底退出了历史舞台。1995年3月发布的RFC 1772(BGP-4应用指南)中专门提供了从EGP向BGP过渡的建议和迁移路径<ref name="RFC1772">[https://datatracker.ietf.org/doc/rfc1772/ Rekhter, Y., "Application of the Border Gateway Protocol in the Internet", RFC 1772, March 1995.]</ref><ref name="WikiEGP" />。 | |||
目前,EGP被IETF列为Historic状态。需要注意的是,在当代网络技术语境中,“外部网关协议”这一中文译名通常指代EGP这一特定历史协议,而非泛指某一类域间路由协议。在[[英文]]语境下,“exterior gateway protocol”(小写)仍可作为“域间路由协议”的统称使用,在学术讨论中形容一类协议的功能分类,与特定历史版本的EGP(大写)在概念上需要加以区分。 | |||
== 参考文献 == | == 参考文献 == | ||
<references /> | <references /> | ||