电脑技术学习

BERKELEY UNIX 4.2下的EGP网关

dn001

1. 介绍

外部网关协议(外部网关协议)[ Rosen 82;Seamonson & Rosen 84; Mills 84a]
已经答应不同的网关体系的自主开发虽然国际互联网络路由选择信息仍然保持全球性分布。
EGP为不同的自治网关系统交换经由他们可以达到的网络的信息提供一些方法。。

本报告主要叙述在一VAX计算机上运行的Berkeley Unix 4.2操作系统上的当做一个用户进
程工作的EGP的实现。
还对某些涉及局域自治系统配置相关的问题也进行了论述。

该EGP实现是试验性的而不是Unix 4.2 BSD的一部分。 可以预料伯克来将来可能加入一
个EGP版本。

该程序是由C语言编写。 EGP部分是以Liza Martin在麻省理工学院写成的C - Gateway程
序代码为基础,而且路由治理部分以Unix 4.2 BSD路由治理守护进程" routed "为基础。

除非非凡声明,该EGP功能与[ Mills 84a]的规范一致。

假定已具有在[ Seamonson & Rosen 84; Mills 84a]叙述的EGP知识。。

本章论述该工程的动机,第2章叙述网关设计,第3章为测试,第四章建议一些改进并且第5
章论述拓扑结构问题。

关于运行该EGP程序和该软件说明的具体资料刊登于ISI研究报告ISI/RR - 84 - 145 [ Kirton
84]。

该EGP程序的copies和文本的请求应该发送给Joyce Reynolds ( JKReynolds@_USC -
ISIF.ARPA)。没有提供软件支持。


1.1开发动机

与EGP的介绍相一致,internet网关被分成由Bolt, Beranek和Newman ( BBN)维护的"核心"
自治系统( AS)和许多由不同的组织维护的最少具有一个与一个核心AS网关共有的网络的
"stub " AS。
该核心AS可能充当传递路由选择信息的集线器

_______________

*
Unix is a trade mark of AT&T
* *
VAX是Digital Equipment Corporation的商标
不同的stub AS ' s以便它仅仅需要stub AS能与核心网关一起执行EGP。 更进一步的细节
在[ Rosen 82]中给出。

在本工程中,在internet中曾有28个" non - routing "网关。 Non - routing网关不能交换路
由选择信息,但是需要在核心网关路由选择表中的静态的记录。 1984年八月1日以后,
这些静态表目已经删除并且先前地non - routing网关被要求动态地经由EGP [ Postel 84]传达
本消息给核心网关。

在该USC信息科学研究所( ISI)曾有一个non - routing网关去往处于Irvine网络( UCI - ICS)
上的加利福尼亚大学。 由于从核心网关列表中消除了non - routing网关,必须通知该路由
到UCI - ICS的核心ISI网关使用EGP。

还有,万一该核心ISI网关当机的话我们想要在ISI - NET和ARPANET之间具备一个备份网
关。 如此以来,网关可能需要经由EGP运输路由选择信息。 ISI网络配置的细节在5.2节
进行论述。

Of the 28 non-routing gateways 23 were implemented by Unix systems, including
ISI's. 还有, ISI的被提议的备份网关是UNIX操作系统。因此存在局部和普遍的需要外部网
关协议实现运行在 Unix下面。 当前包括Department of Defense ( DoD)协议的UNIX操作系
统的版本是Berkeley Unix 4.2 ,所以它中选。


1.2外部网关协议综述

本报告假定了解外部网关协议,然而为完整起见这里给出一个简短概观。为了解EGP背景详
情请查阅[ Rosen 82], [ Seamonson & Rosen 84]提供了非正式的描述,并且[ Mills 84a]提供了
进一步格式说明和实现细节。

EGP通常在不同AS中的且具有有一个公用网络的网关即邻居网关之间传输。
公用网络即邻居网关。

EGP包含三个程序,邻居获得,邻居可达性和网络可达性。

邻居获得是一次双向握手,在此过程中网关对通过交换请求和确认报文(包括最少Hello和
Poll间隔值)来进行传导达成一致。 通过交换停止和停止确认报文终止获取过程。

邻居可达性是一个Hello commands和确保各网关正在运行的I - H -U ( I heard you)回应周期
式交换。。 当前30秒最小间隔被用于越过ARPANET。 只有一个网关必须发送一些命令,
其他的网关可以利用这些命令判定可达性。
正发送可达性命令的网关叫做处于主动态,而正回答的网关叫做处于被动态。
网络可达性由周期地发送Poll commands和接受表明该网络经由一或多个在共享网络上的网
关可以达到的更新应答来判定。 当前2分钟最小间隔被用于越过ARPANET。

2. 网关设计

EGP是一种具有松散定时约束的polling协议。 因此,唯一要求具有较高性能的功能是包转
发。 Unix 4.2已经将包转发技术嵌入到内核内核内部,在那里可以达到最佳性能。
在编写Unix 4.2的时候,没有为误编路由的包发送ICMP ( Internet控制消息协议)重定向报
文。
这是一个必要ofinternet网关并且Berkeley以后将加入。

EGP和路由更新功能作为一个用户进程实现。 因为只有微小的更改需要加入Unix内核,
这简化了开发和分配。 这个方法与基于Xerox NS路由信息协议( Routing Information
Protocol [ Xerox 81])的Unix路由分配程序" routed " [ Berkeley 83]的方法是类似的。


2.1路由表

一个路由由一个目的网络号组成,相邻网关的地址用在直接相连的网络上,而且用到达目的
网络的网关站数作为距离的公制。

存在两组路由表,内核列表(被用于包转发技术)和EGP进程表。 该内核已经为主机和网
络目的地设立了独立的列表。 EGP进程仅维护网络路由表。 当接到EGP更新报文时EGP
列表被更新。 当一个路由被更改时核心网络列表通过SIOCADDRT和SIOCDELRT ioctl
系统调用被更新。 在初始化时为了保持一致性,内核网络路由表由内核存储映象文件
/dev/kmem读取并被拷贝到EGP列表中。

此EGP的实现被设计成在网关(也是一个主机)上运行。
因为用polling获得路由更新相对较慢,在通过EGP通知EGP进程之前主机通过ICMP重
定向收到路由变更的通告是可能的. 重定向直接更新内核列表。 EGP进程在一个生疏的插
座上侦听重定向报文并且更新它的路由表以维护它们与内核的一致性。

EGP进程和路由表被当做两个单独的列表进行维护,一个为外部路由( via different AS网关)
而一个为内部路由(通过此AS的网关)。 外部路由表通过EGP更新报文更新。 内部路由
表当前是静态的并且在初始化时设定。 它包括全部直接连接的网络,通过SIOCGIFCONF
ioctl系统调用和任何内部非routing网关读自外部网关协议初始化文件, EGPINITFILE来确
定。 将来内部路由表可以被内部网关协议( IGP)动态地更新.

为外部和内部路由维护单独的列表简化了仅包含内部路由选择信息[ Mills 84b]的传出更新
报文的预备。 在内部路由失败情况下,还答应选择作为内部路由备份保存的外部路由进行
替换。
候选路由标记以RTS_NOTINSTALL从而表明该内核路由将不会被更新。 在当前的实现中
候选路由不被使用。

2.1.1输入更新

EGP更新用来更新外部路由表,假如满足下列中的一个:

-不存在目的网络的路由表项而且公制表明该路由是可以达到的。

-被报告的网关与当前路由相同。

-被报告的距离公制小于当前公制。

当前路由比全部已经获取的EGP邻居极限轮询间隔旧。 简而言之,该路由被来自上次
的更新所忽略。

除了省缺路由之外,假如任一外部路由表项在4分钟或3次最大轮询间隔(任何一个较大的)
时间内没有被EGP更新,该外部路由表项被删除。

假如获得了多个EGP邻居,对来源于他们的更新报文按照接收的先后顺序做相同的处理。

在最坏的情况中,即一个路由变成时间比较久的路由而且该较旧的路由最初没有被公布为不
可达时,可以使用两个轮询间隔去更新一个路由。 With the current poll interval this could be 4
minutes. 在Unix 4.2 BSD下,TCP连接(传输控制协议)在空闲6分钟之后被自动地关闭。 所
以最坏的情况也不会导致TCP连接自动结束。o

2.1.2输出更新

输出更新包括来自内部路由表的直接地和静态网络,除了与 EGP邻居共享的网络之外。。

答应在更新中被通知的网络可以在初始化时用EGPINITFILE规定。 这些答应精确的路由以
排除来自(可能的)路由回路情况下的外部更新。 其它必须有这个选项的情况是,非路由网
关属于一个不同的AS而这个AS还没有实现EGP时。 它的路由可能需要被归入核心路由
表但是他们没有被答应在输出更新中被告知。

假如内部路由表包括其他的在与 EGP邻居共享的网络上的内部网关,它们将被作为他们所
连网络的合适初站而包含在更新中。

到网络的距离按照内部路由表进行设置,除非路由标志为down,而在这样情况下距离设置
为255。 目前路由仅在输出接口当机时才被标记为down。 为了给各输出更新做预备,预
先用SIOCGIFFLAGS ioctl系统调用校验所有接口的状态。

未经请求的更新不予发送。


2.2邻居获取

EGPINITFILE列出了可信赖的EGP邻居网关的地址,在初始化时读取。 这些通常是核心
网关,因为只有核心网关提供完整的internet路由选择信息。 编写的时候在阿帕网上存在
三个核心网关支持EGP Css - GATEWAY, ISI - GATEWAY和PURDUE - CS - GW,而且两个
在MILNET, BBN - MINET - A - GW和AERONET - GW上。

EGPINITFILE还包含每次所能获得的网关的最大值。 期望值通常为一。 假如这个网关被
公布为down,另一个列表中的网关于是在充分的时间内将被自动地获取以确保当前路由不
超时。

该网关将仅接受来安闲可信赖列表中邻居的获取,而且假如它已经获得它的最大量限额就不
会接受他们。 这个防止接受来自可能不可靠的来源的更新。

因为不是所有核心网关都运行EGP,所以不包含获得核心网关不在信任列表中的但是已经
通过更新报文间接地获悉的核心网关的功能。

新的获取请求被发给邻居,为了使他们出现在EGPINITFILE中。 新的请求假如不大于还
有待于获得的邻居的最大数的话就被立即发送。 许多突发请求用32秒间隔最多重传5次,
这时候获取重发间隔增加到4分钟。 只要已经获得了最大数量的邻居,具有突出的请求的
unacquired邻居被发送到Ceases。 这方法提供一种快速响应妥协,当邻居没有最初响应而
且期望最小化一个可能是已发出一个确认但还没收到证实的停止的邻居。 假如该指定的邻
居的最大数没能获得,请求被无穷地重传输到全部unacquired邻居。
2.3 Hello和Poll轮询间隔

请求和确认信息包含Hello和Poll间隔的最小值。 由他和核心网关告知的最小数当前分别
是30和120秒。
收到的间隔要检查上界以便防止其值无意义。 当前上界是分别定在120和480秒。 假使
某邻居超出上界,则被认为是非法的并且不再发送要求达一小时。 这个答应去改正这种情
况,在另一处的网关正常运行直到那个网关自动地重新恢复而不必产生过多不必要的网络信
息流通量。


实际的Hello与Poll间隔由第一次选择由网关与它的对等网关报告的间隔的极值决定。考虑
到可能网络时延变化2秒容差被加到Hello间隔上,Poll间隔增加为Hello间隔的整数倍。
这导致32秒Hello与128秒Poll间隔。

假如一个响应Poll的更新没有被收到,至多发送一个repoll (顺序号码相同)代替下一个已经安
排的Hello。
2.4邻居中止

假如EGP进程通过Kill命令发送一SIGTERM信号,全部已经获得的邻居都发送Cease (停止)
命令。 Ceases在hello间隔内至多重复传输3次。 一旦全部具有任一个具有Cease - acks
的响应或者已发送三重复传输的Ceases,该进程终止。
2.5邻居可达性

只有当前可达性判定被实现。 它的行为与在[中Mills 84a]推荐的有微小的变化。

应答移位寄存器被维护。 关于各个Poll or Hello命令发送一个零变换为移位寄存器。 假如
一个响应( I - H - U,更新或错误)得到正确的序号反应,零被一替代。 各个新命令发送之前
可达性通过检查上移位寄存器四项判定。假如该邻居是可以达到的并且收到的响应< = 1,该
邻居被认为不可达。 假如该邻居被认为不可达并且收到的应答> =3,现在被认为可以达到
的。

一个邻居后获取之后被立即认为可以达到的,所以第一个来源于一个核心网关(一旦它认为
这个网关可以达到的)poll用一个更新回答。Polls不发送除非一个邻居已经认为可以达到的
并且它没有在它的最后的Hello I - H - U或Poll报文中建议它认为这个网关不可达。 这个
防止第一个Poll在一个down/up转换以后被丢弃。这是重要的因为轮询用于可达性判定。
遵循至少一获取报文必须被接到,在第一个轮询发送之前。 这将决定同位体不认为这个网关
停机。在第一个poll之前通常要求至少发送一个Hello。这段落的讨论不同于[ Mills 84a],它
建议一个同位体按照获取被认为停机并且一旦同位体被认为开机Polls就可能发送。这是唯
一偏离[ Mills 84a]的重要的之处。
由被认为不可达的同位体收到的Polls发送一个错误反应,它答应他们的可达性判定正确地
改进。
此举是一个[Mills 84a]选项。

当一个邻居变成不可达,利用它的全部路由从该路由表上删掉。假如知道不能获得邻居的话
该不可达网关被停止并且尝试获得一个新邻居。
假如知道已经获得的全部邻居,可达性判定延长30分钟( [ Mills 84a]建议60分钟),在定时
不可达邻居中止以后并且reacquisition每4分钟尝试一次。
目的在于减少不必要的网络信息流通量。

假如三个连续的轮询没有收到正确的更新应答该邻居被停止并且在4分钟内尝试获得或
reacquisition一个替换。本规定防御邻居发送不正确的更新数据格式。这些情况一度在测试
过程中出现。


2.6序号

序号是如同在[ Mills 84a]中推荐的方式处理。为各个邻居维护单独的发送和接收顺序号。 发
送序列号被赋初值零并且在各个新Poll (非repoll)发送与不在其他的时间之前加1。发送序
列号用于全部命令。 接收顺序号通过拷贝上次来源于一个邻居的请求、Hello或Poll命令
维护。
本序号用于输出更新。全部应答(包含错误应答)返回该刚才收到的报文的序号。


2.7过多命令的处理

假如在任一8分钟之内从一个邻居收到多于20命令,该邻居被认为非法的,中止并且
reacquisition一小时。

在poll interval期满之前(小于4秒网络时延变化性容量)最多收到一一个repoll (相同顺序号
码),用一个更新答复,其它则发送一个错误反应。当在响应中发送一个更新到的repoll时,
unsolicited [未经请求的位]没有被设定,它不同于在[ Mills 84a]中的建议。

2.8不适当的Messages

假如证实从任一网关(巳知的或未知)收到Hello、I - H - U、Poll或更新也就是说进入
unacquired状态,同步大概由于某种原因被沉没。发送中止(协议违规)报文以避免与减少不必
要的网络信息流通量。此举是一个[Mills 84a]选项。


2.9缺省网关

缺省网关在EGPINITFILE中具体说明。缺省路由(在Unix 4.2 BSD中的net 0)用于内核包转
发,假如目的网络没有具体的路由。假如全部巳知的EGP邻居不可达时,它提供结局级备
份。假如仅存在一个可用的EGP EGP邻居时这个尤其有用,象在5.2.2节的ISI情况中那样。

缺省路由在初始化时安装并且在一个正确的EGP更新报文收到之后被删除.假如全部已经获
得的邻居并无一个可以达到的那么它被重新安装,假如在进程终止前路由超时而不存在已经
获得并且可以达到的EGP邻居。

因为缺省网关不会知道比通过EGP获悉的更多路由选择信息,所以一个正确的EGP更新报
文收到后它被删除。 假如没被删除,全部转到不可达网络的通信量可能发送给Unix 4.2转发
策略下面的缺省网关。

缺省网关将设置成一个标准地全路由核心网关而不是巳知的万一所有的EGP gateways同时
停机时提供另一个备份的EGP邻居网关。

⒊测试

在此简短地描述一些在测试期间发生的有趣的情况。

不同的实现者对序号有不同的解释。因此一些实现拒收具有不正确的序号的报文,导致对等
网关被公布停机。
难题要点是该规格完全是文字报告式的,轻易产生不一致、含糊和不完善的。[ Mills 84a]
的更多的格式说明已经除去这个含糊。

当测试响应发给一个邻居网关不在同一网络的接口的包的时候,回路产生了,因为两个网关
重复地交换指出一个非法接口的错误报文。 该难题在于两个网关在检查地址之后,EGP消
息类型被之前发送错误应答。 通过不发送错误响应除非可以确信该报文不是一个错误响应
本身来纠正。

曾经一个核心网关在更新报文中具有某种形式的数据错误引起他们被拒绝即使可达性正在
令人满足地传导。这导致全部路由超时。 解决方案是去计算不导致收到正确的更新的连
续的轮询的数目,假如这号码达到3去中止EGP,努力获得一个替换网关。

由Mike Karels在伯克来报告的另一个使发生爱好的特性,由在MILNET和ARPANET具有多
网关两者之间引起。每个ARPANET主机具有一个给定的gateway去用于访问MILNET。如
果该EGP gateway是一个主机又是一个网关, EGP更新报文可能指出一个不同的
MILNET/ARPANET网关从该给定的一个。当host/gateway发生通过EGP报告的网关路由的
一个包时,它将收到一个去往它的给定的网关的重定向。 因此该MILNET网关能够在由EGP
报告的网关和指派的网关两者之间保持是交换式的。 当使用去其他的通过
MILNET/ARPANET gateways达到的网络时类似东西出现了。
⒋将来的改进
4.1多独立系统

当前获得一个来自一个信赖的列表EGP邻居的最大数的方式暗示全部邻居位于同一个AS
中。 意思是他们全部隶属于核心AS。更新路由表时,更新被独立地对待没有区别被建议路
由是对等体的AS的内部还是外部。 并且,路由选择公制没有参考源AS进行比较。

假如EGP用附加的除核心AS之外AS的治理,需要获得列表上的全部邻居以确保来自两个
AS的网关总是能获得。这导致一个不必要的额外的EGP通信量,假如为安全性获取众多的
邻居。一个更可取的方法将是为每个AS持有单独的被信赖的EGP gateways列表和获得的
最大数。路由登记项需要持有源AS以便将优先权能够给与来源于自己的AS的信息(看5.1.2
节)。

4.2接口监控

目前接口状态仅在一个响应Poll的更新发送前检查。 接口状态应能够更经常的进行监控并
且探测到一个变化时发送一个未经请求的更新。 这时改善EGP轮询响应缓慢的一个方面。
这对于通过dial - in线路连接网络具有非凡的重要性。
当上述的一个网络拨入时,它的相关的接口将被标记为up但是直到该变化已经通过EGP传
送之前它不会收到包。这对于未经请求的更新报文的情况将有所帮助,但是对于其他的非核
心网关为新路由选择信息去轮询核心EGP网关时依旧存在延迟。

开始认为这个情况可能对于内核EGP的实现有所帮助 但是该内核目前不通过中断加入新
设备传递接口状态改变。
假如这样做,当一个接口状态改变时可能象提供一个用户级信号一样简单。


4.3网络级状态信息

目前网络级状态报告诸如IMP目的地不可达报文、不用来探测在EGP邻居或其他的邻居网
关的可达性方面变化。这个信息应该用于改善响应时间改变。


4.4内部网关协议接口

目前所有的AS内部路由选择信息都是是静态的,而且都是从初始化文件中选读。内部路由
治理职能已经编写以便它合理地便于动态内部路由更新连接一个IGP。通过分离的外部和内
部路由表这个变得更为方便。

输出EGP Updates通过rt_NRnets ()正确地为内部路由表做好预备,不管是静态的或动态内
部路由。
函数也提供检查、增加、改变和删除内部路由, i.e.,那就是说分别是rt_int_lookup (), rt_add (),
rt_change () and rt_delete ()。

一个IGP用当前数据结构的交互作用基本上包括三个功能∶用一个类似于...的rt_NRupdate ()
的函数更新内部路由表,制定输出内部更新类似于去rt_NRnets (),超时interior routes类似于
rt_time)。

⒌拓扑问题
5.1拓扑约束和路由回路
5.1.1背景

EGP不是一个路径选择算法。 它仅仅能使外部邻居去交换路由选择信息,很可能需要通过
一个路径选择算法。 它不能传递充分的信息去防止路由回路,假如循环存在于拓扑之中
[ Rosen 82].

路由回路可能出现当两个网关认为通过彼此存在达到一个第三网关的候选路由时。当第三网
关停机时,他们结束彼此指向,形成路由路由一个路由回路。 当前核心系统内部,回路通过
从零数到无限(国际互联网络网关站数直径)解除。 这个(通常)工作的令人满足因为GGP传
送变化十分迅速,一旦变化出现路由选择更新就被发送。
国际互联网络直径是相当小的( 5)而且使用一个通用的距离公制,段数,。但是这个将来可能有
所改变。

用EGP,改变被迟缓地传送。 虽然单个未经请求的NR报文可能发送,但是它不必要地直接地
传递给其他的需要间接收听的网关。 还有,不同的AS的距离公制是完全独立的,因此从零
数到无限不能总是时适用。

初始的提议将通过限制AS的拓扑成为树状结构以便不存在通过候选AS的多路由来防止路
由回路。 相同AS内部多路由被答应,假如内部路由选择策略负责控制回路。

[ Mills 84b]注重到即使树状构形约束, "我们必须假定短暂的回路有时可能在核心系统内部
形成而且这个信息可能逃到其他的系统;然而,人们预期这个回路不会持续良久而且在核心系
统内部不久将被解除。因此一个非核心系统间回路可能持续直到第一个更新报文圆发送给其
他的系统之后全部回路探测已经被清除或直到可达性信息页表超时,无论那一个首先出现"。

用初始简单stub EGP systems,树状构形约束能够达到目地。但是对于长期这个不提供充分
的强度。

[ Mills 83]建议一个方法,通过方法AS能够动态地重新配置他们自己因此拓扑约束总是满
足,没有对单个" core " AS的需要。 一个AS拥有一个共享网络而且它的邻居AS用自己传
导EGP。属主将间接地传递上述的信息,象核心系统现在所做。假如拥有AS被定义去接近
于该树状构形根,所有的不规则的互连能够形成一个适当的树状结构拓扑。 通过路由拓扑我
依照在路由选择中通知的理解拓扑。存在其他物理连接是可能的,但是假如他们未被报告则
不会用于路由。每个AS最多只能用一个拥有共享网络的AS传导EGP。所有的不通过另一
个AS拥有的网络传导EGP的AS是子树的根。它可能用拥有一个共享网络的其他的AS传
导EGP。这个"附件"将两个子树组合变成单个子树,因此整个拓扑还是一个树。 拓扑违规
能够判定,因为两个不同的AS拓扑违规将报告他们能够达到相同网络。

上述的动态树,可能有较佳的备份连接。在此情况下必须监视器失败的连接以便路由能够被
改回到较佳的连接,当服务被恢复时。

另一方面考虑是探测路由回路的可能性然后中断他们。包生存时间( TTL)期满可用于做这件
事情。假如一个诊断程序包怀疑有一个回路,诸如ICMP echo,能够通过发送可疑的路由去证
实它是否是一个回路。假如探测到一个回路,可以通过该路由发送一个非凡的路由包,它指
示每个网关转发该包之后去删除该路由。新路由选择信息的接受可能需要被推迟一段停工检
修时间。 这方法需要为初始TTL做出明智的选择。但是许多主机并没有这么做。

5.1.2现行政策

鉴于总趋势是增加网络互连而且替换long - haul networks诸如ARPANET、WBNET (宽带卫
星网络)和公用数据网的有效性,树状拓扑约束通常是不受欢迎的。当前推荐的是限制的较
少的拓扑。
以下取自[ Mills 84b]。

EGP拓扑学模型∶

-一个独立系统包含一组通过网络连接的网关。 在该系统中的每个网关对于在它的系统
中的每个其他的网关必须是可以达到的,路径仅包含在该系统中的网关。

-系统中的一个网关可以与在任一其他的系统中的网关一起运行EGP,只要通过的那个
EGP的路径在第三系统中不包含一个它自己运行EGP的网关。

-"核心系统"不同于其它核心系统,由于只有它被答应去分布关于系统而不是它自己的可
达性信息。

-在每个系统中至少一个网关必须具有一个和在核心系统中的网关一样的网络。

-除了上面那些暗示不存在拓扑的或连通性约束。

一个网关将使用来源于它的配置(直接连接网络)、它的系统的IGP、调用在下文中的S、(内
部网络)与EGP (内部和外部网络的邻居系统)去构造它的路由表。信息假如与一个非凡的网
络N出现冲突,他们将被如同下述那样解决:

假如N直接连接到该网关,全部关于N的IGP与EGP报告被忽略不计。

假如N被IGP报告为S内部,被EGP报告为另一系统的外部或者内部,则该IGP报告
优先处理。

-假如N被EGP通告作为一个系统内部和另一系统外部,该内部report占主导地位。

- If N被使用EGP的相同系统的两个或更多网关作为内部,该报告指定的最小的站数占主
导地位。

-在全部其他的情况中,最近的收到的报告占主导地位。

旧的信息可能来源于表的过时信息。

该临时的模型提供一个可接受的自组织程度。
短暂的路由回路可能出现在系统之间,但是这些最后被旧的可达性信息中断,因为这些信息
从列表中过时。 短暂的回路可能由于临时的核心系统回路出现,由于当地的网络位于多系
统该附加的回路可能存在看起来不会增加太大的危险性。

5.2当前ISI配置

一个ISI网络配置的精简版本显示在图表5 - 1中。
ISI - Hobgoblin能为在ARPANET和ISI - NET之间的核心ISI -网关够提供一个备份网关功
能。ISI - Hobgoblin是一个运行Berkeley Unix 4.2.的VAX 11/750,该描述於这些报告EGP
实现运行在ISI - Hobgoblin上。

ISI - Troll属于加利福尼亚大学古生物博物馆在irvine网络( UCI - ICS)上的一个分离网关。
完全的逻辑的网关包含ISI - Troll,该9600波特连接和UCI - 750A [ Rose 84]。ISI Troll运行
Berkeley Unix 4.1a由此不能运行EGP程序。 所以它是一个非路由网关。 UCI - ICS网络的
存在必须通过ISI - Hobgoblin被通知给核心AS。 通过在EGPINITFILE中包含一个适当的
登录项便可做到。

在ISI - NET上主机,包含ISI - Troll,具有静态路由登录项以指出ISI - Gateway作为除了UCI -
ICS和ISI - NET的全部网络的第一个站点。

-------------------------------------------------
/
/ ARPANET
10 /
/
-------------------------------------------------



+-------------+ +-------------+ +---------------+
ISI-PNG11
Arpanet ISI-GATEWAY ISI-HOBGOBLIN
Address Vax 11/750
logical Core EGP Unix 4.2
multiplexer
+-------------+ +-------------+ +---------------+



--------------- ----------------------------
/ /
/ 3 Mb/s Ethernet / ISI-NET
net 10 / 128.9 /
/ /
--------------- ----------------------------



+--------------+
ISI-TROLL
Vax 11/750
Unix 4.1a
Non-routing

9600 ISI-TROLL, UCI-750A
baud and the link form a
link single logical gateway

UCI-750A
Vax 11/750
Unix 4.2
+--------------+



----------------------
/
/ UCI-ICS
192.5.19 /
/
----------------------


Figure 5-1: Simplified ISI Network Configuration

EGP或者用ISI - Gateway或者ISI - NET越过ARPANET传导。

5.2.1 EGP越过阿帕网

ISI - Hobgoblin即将通知ISI - Gateway越过ARPANET,由此该核心系统能够达到ISI - NET
和UCI - ICS。

发自AS的外部到ISI与驶往UCI - ICS的包可能通过ISI Gateway、ISI - Hobgoblin与ISI -
Troll路由。 通过ISI - Gateway (或其他的核心EGP网关)额外的路程段是因为核心网关当前
不传递地址在他们的IGP报文中的间接邻居外部网关
网关去网间连接协议)。 发源于UCI - ICS驶往外部AS的包可能通过ISI - Troll与ISI
Gateway路由。 因此该输入与输出包路径是不同的。

发源于作为一个主机的ISI - Hobgoblin驶往外部AS的包可能通过在阿帕网上适当的网关路
由。

假如ISI - Troll、ISI - Hobgoblin与ISI - Gateway全部开机,UCI - ICS只得与外部AS通信。
依靠ISI - Gateway可能被淘汰,if ISI - Troll通过ISI - Hobgoblin路由包胜于ISI - Gateway。
然而,因为ISI - Hobgoblin主要地是一个主机而不是一个网关,当可能时宁愿ISI - Gateway
路由包。

ISI - Hobgoblin可能提供一个备分网关功能给ISI - Gateway因为它可能自动地转到一个替换
核心EGP对等,假如ISI - Gateway goes down停机。
即使ISI - Hobgoblin正常地访问核心系统,它可能达到ISI - NET,因为核心通过ISI - Gateway
优先权运用它的内部拥有路由。
为了在ISI - NET上hosts正确地路由输出包,他们需要静态的从ISI - Gateway到ISI -
Hobgoblin网关登录项变化。 目前这些人工地完成。假如ISI - Gateway将要停机很长一段
时间时,这样做才是适当的。

5.2.2 EGP越过ISI - NET

ISI - Hobgoblin即将通知ISI - Gateway越过它的间接相邻ISI NET, ISI - Troll,由此该核心系
统能够达到ISI - NET和UCI - ICS。

全部UCI - ICS外部分组路由选择将通过双向没有站数ISI - Gateway通过ISI - Hobgoblin。
发源于作为一个主机ISI Hobgoblin驶往外部AS的包将通过ISI - Gateway双向路由,而非
ARPANET接口,因此处理一个附加的路程段。

UCI - ICS只得与exterior AS通信,假如ISI - Troll与ISI - Gateway正在运行而且ISI -
Hobgoblin已经报告UCI - ICS的ISI - Gateway路由。 假如ISI - Hobgoblin停机,通信还是可
能的因为ISI - gateway (及其他核心网关)不会超时到其他邻居的路由。
假如ISI - Gateway随后停机,当它出现时它需要通过UCI - ICS路由的ISI - Hobgoblin重
新读入。

通过ISI - NET而非ARPANET传导EGP将为UCI - ICS提供更为可靠的服务,因为下列理
由∶ISI - Gateway被明确地设计为一个网关,它的运行时间应该多于ISI - Hobgoblin,除去可
能的额外路由站点是可取的, ISI - hobgoblin停机之后外部路由选择信息将持续。 假如
ISI - Hobgoblin用于备份模式,新网关路由被人工地安装在该主机之后EGP可能越过
ARPANET重新启动。
所以, EGP越过ISI - NET被选为较佳的运行方式。

5.2.3潜在路由回路

因为ISI - Gateway和ISI - Hobgoblin他们两个共同提供在ARPANET和ISI NET间的路由,
所以存在一个潜在路由回路。这些拓扑事实上违反初期的树状结构约束。所提供的ISI
Hobgoblin不同时与ISI - Gateway通过ISI NET和ARPANET传导EGP,该网关甚至仅了解来
自共享EGP网络的替换路由,来自其他网络的则不知道。 因此一个回路不可能出现。 举
例来说,假如EGP通过ISI - NET传导, ISI - Gateway和ISI - Hobgoblin将知道通过彼此从ISI
NET到ARPANET的替换路由,但是他们不会知道该网关在ARPANET上的地址,所以不能
从ARPANET进入ISI - NET。 因此他们没有充足的路由选择数据在他们自己间去路由包。


5.3可能的未来配置
5.3.1去往UCI - ICS的网关

向UCI ICS提供的服务在安全性和性能方面的一个改进可以通过移动从ISI Troll到ISI -
Hobgoblin的UCI ICS接口完成。安全性将改善,因为该连接仅要求ISI - Hobgoblin和它的
ARPANET接口正在运行;性能将改善,因为额外的网关路程段可能的被除去。

这些还有将答应EGP越过ARPANET传导,提供对运行EGP的替换核心网关的访问。这些
将增加总是可靠地获得一个EGP邻居的机会。它也将为发源于作为一个主机的Hobgoblin
的驶往外部网络的包去除这些额外的路程段,

这些配置变化会在将来的某一天完成。 最初没有这样做,因为ISI - Hobgoblin是试验性的
而且停机比ISI -Troll更频繁。
5.3.2动态转到备份网关

ISI - Hobgoblin能为在ARPANET和ISI - NET之间的核心ISI -网关够提供一个备份网关功
能,这在5.2.1节以注明。上述的备份网关可以变成一个公共的方法去提供更大的安全性。

目前对备份网关的改变是要求新的网关路由被人工地加入到ISI - NET的主机上。本节描述
一个当原始网关停机时为动态地完成这些转换时所用的可能方式。

目标是能够探测原始网关什么时候停机,用最低附加网络通信量将在该局部网络上的全部主
机转换为备份网关。当它又出现时,主机应该还原为原始网关。

倡议的方式是仅为备份网关监控该原始网关状态,当存在一个改变时为它通知全部新网关地
址主机。
5.3.2.1常用的操作

备份网关运行一个进程,它每30秒发送可达性-探针报文,诸如ICMP echoes,给原始网关而且
运用该应答去判定EGP可达性。 假如该原始网关goes down一个
指出该备份网关地址的"网关-地址信息"被广播
(更可取地多点传送)给全部主机。 当该原始网关出现另一个指出该原始网关地址网关报文
时,它被广播。
这些广播应该在30秒间隔内进行四次,为了避免确认和宿主机地址的消息的需要。

每个主机将运行一个进程,倾听网关-地址信息。假如一个不同的网关为了新地址建议改变
缺省网关项。
5.3.2.2主机初始化

当一个主机出现时,原始网关可能停机,所以它需要能够决定它是否将要使用该备份网关。
该主机可能从一个静态的初始化文件中读取原始和备份网关地址。
它于是将设定它的缺省网关为原始网关而且发送一个
"网关-请求消息"给备份网关,请求当前网关地址。该备份网关将以一个网关-地址信息响应。
假如无应答被接到,该网关-请求应该在30秒间隔内重复传输三次。 假如无应答被收到,
该备份网关被假定停机而且该原始网关保持作为默认网关。

每当该备份网关出现,它广播以一个网关-地址信息响应。

换句话说,一个广播(或多点传送)网关-请求消息可能
被定义为仅被网关响应。 备份网关-地址信息需要指出它是备份网关以便将来的请求不必广
播。三次重传应该被用。 但是该原始网关也需要广播它的地址,每当它出现。
5.3.2.3什么时候原始而且备份两者都停机

假如原始网关停机而且备份知道它停机,它将要广播网关-地址信息指出该原始网关,万一原
始网关出现。

除了备份可能不加警告停机外,而且原始在它之前出现。假如原始网关当它出现时广播一个
网关-地址信息,是不可能的问题。否则,当主机使用备份网关时,他们每10分钟应该发送
一个网关-请求消息。 假如无应答被收到它应该在30秒间隔内重复传输3次而且假如仍然
无应答该备份被假定停机而且原始网关被还原。

因此当原始网关在出现和正在被用时不发送网关-地址信息时,主机需要周期地发送消息。
有时候,诸如在ISI,原始网关通过不同的组织治理而且实验特性没能随时增加。

5.3.2.4 Unix 4.2 BSD

一个难点是不存在规定internet广播或多点传送地址的标准方法。多点传送地址是更可取的,
因为只有他们需要处理该报文(具有硬件多点传送检测接口是可用的)。至于Unix 4.2 BSD一
个Internet地址具有零本机地址是被指定为internet广播地址。
然而,普通Internet地址政策是使用一个全1去指出一个播送功能。

在Unix 4.2 BSD systems上,网关和主机进程两者都可能运行在用户级以便不要求修改内核。

用户数据报协议( UDP)套按字可能专留作主机-备份-网关通信。

超级用户为发送和收到ICMP Echo报文访问raw套按字需要稍微修改国际互联网络-族协议
转换表。
⒍致谢

我向所有对本工程提供帮助的人们致以诚挚的感谢,非凡是:提出的该工程Dave Mills,Jon
Postel的讨论和鼓励, Liza Martin提供初始EGP代码, Berkeley提供" routed代码, Mike Brescia
协助测试、Telecom Australia为我提供资金和ISI提供设备。
⒎参考资料
[Berkeley 83] "Unix Programmer's Manual", Vol. 1, 4.2 Berkeley Software
Distribution, University of California, Berkeley.

[Kirton 84] Kirton, P.A., "EGP Gateway Under Berkeley Unix 4.2", University
of Southern California, Information Sciences Institute,
Research Report ISI/RR-84-145, to be published.

[Mills 83] Mills, D.L., "EGP Models and Self-Organizing Systems" Message
to EGP-PEOPLE@BBN-UNIX, Nov. 1983.

[Mills 84a] Mills, D.L., "Exterior Gateway Protocol Formal Specification",
Network Information Center RFC904, April 1984.

[Mills 84b] Mills, D.L., "Revised EGP Model Clarified and Discussed",
Message to EGP-PEOPLE@BBN-UNIX, May 1984.

[Postel 84] Postel, J., "Exterior Gateway Protocol Implementation Schedule"
Network Information Center RFC890, Feb. 1984.

[Rose 84] Rose, M.T., "Low-Tech Connection into the ARPA-Internet: The
Raw-Packet Split Gateway", Department of Information and
Computer Science, University of California, Irvine, Technical
Report 216, Feb. 1984.

[Rosen 82] Rosen, E.C., "Exterior Gateway Protocol", Network Information
Center RFC827, Oct. 1982.

[Seamonson & Rosen 84]
Seamonson, L.J. and Rosen, E.C., "Stub Exterior Gateway
Protocol", Network Information Center RFC0, Jan. 84.

[Xerox 81] "Internet Transport Protocols", Xerox System Integration
Standard XSIS 028112, Dec. 1981.

RFC911——EGP GATEWAY UNDER BERKELEY UNIX 4.2 BERKELEY UNIX 4.2下的EGP网关