组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm) E-mail:ouyang@china-pub.com 译者:15222775@61. (15222775@61. hbzzx2001@yahoo.com.cn) 译文发布时间:2002-1-18 版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须 保留本文档的翻译及版权信息。 Linda J. Seamonson Eric C. Rosen BBN Communications January 1984 “烟头”外部网关协议 (RFC888——"STUB" EXTERIOR GATEWAY PROTOCOL) 本注释所阐述的外部网关协议用来讲一个烟头网关联到一个自治系统的核心网关上。文 献规定了工作协议,并定义了一个ARPA官方协议。所有网关的编写这都应该仔细阅读 本文。 目录 1 介绍 1 2.定义与概论 2 3.邻居获得 3 4.邻居可达性协议 3 5.网络可达(NR)报文 4 6.NR报文轮询技术 6 7.发送NR报文 6 8.间接邻居 7 9.局限性 7 1 介绍 DARPA catenet 有希望成为一个不断扩展的系统,因为有越来越多的网络上的越来越多 的主机不断加入其中。当然这需要更多的网关。过去,这种扩展以一种相对无组织的形式进 行。新网关,通常包含了于现存网关极为不同的的软件,将不断增加并立即通过EGP协议 参与共同路由算法。然而随着因特网变得越来越大,这种简单的扩展方式变得越来越不可行。 原因是: ——路由算法的开销变得过大; ——大量截然不同的网关参与同一路由算法,使得管理和错误隔离几乎不可能。因为已 经不能将因特网看作是一个完全的通信系统。 ——网关软件和算法尤其是路由算法台死板和缺乏灵活性,因为任何改变必须经过太多 的部门和太多的人才能完成。 将来,我们希望因特网进化成一组单独的部分或“自治系统”。每个都是由一个或多个 相对同构的网关组成。协议特别是(这些网关用在他们自身之间的)路由算法应当是一种私 人问题,而绝不需要在网关内部实现,除非特殊部分或系统。 最简单的情况下,一个自治系统仅由单个网关组成,这个网关将局域网连到(如)ARPA 网上。我们称这种网关为“烟头”网关,因为他唯一的目的是将本的网络连接到因特网的其 他部分上,既没有打算用他处理发自本地网络内部的通信流也没有打算用他处理去网那个本 地网的通信流。不久的将来,我们把因特网看作一组自治系统,一个由ARP网和STANET 上的DARPA网关组成,其他的是一些到达局域网的网关。前者,被我们成为“核心”的系 统——被后者用作为传输或“长途运输”系统。 最后,因特网由一组自治系统组成,每个可能被来自任意系统或去往任意系统的通信作 为传输介质。这种常见的情况仍然是研究的主题。本论文仅仅描述了怎样用外部网关协议 (EGP)把“烟头”网关连接到核心系统。 2.定义与概论 为了达到本文的目标,必须将烟头网关定义为: ——它不是一个核心网关。 ——它至少和一个核心网关(象某些核心网关一样在同一个网络上具有一个接口) 共享一个接口。 ——它具有到达一个或多个没有核心网关的网关的接口。 ——其他所有通过烟头核心系统才能到达的网络不可见除非通过烟头有别的到达 核心系统的路径。 烟头网关被期望完全处理互联网控制报文协议(ICP)和EGP协议。具体的,他必 须响应ICMP的每个请求。,必须适当的发送ICMP目的地死亡报文。他还必须适当的 发送ICMP重定向报文。 自治系统应被指定一个16位号码(由许多相同的方法如现在也给网络和协议指定 号码),并且每个EGP报文头部为这个数含有一个域。零不被指定给任何系统;零作为 一个自治系统的用法留在将来使用。 我们称两个网关为邻居,如果存在一个到达每个网关都有一个接口的网络。如果两 个网关是同一个自治系统的组成部分,我们称他们为内部邻居;如任何两个位于同一网 络上的两个核心网关称为内部邻居。如果两个网关不是同一个自治系统的组成部分,我 们称他们为外部邻居;如果一个核心网关和一个烟头网关共享一个网络,我们称之为外 部网关。为了使一个系统将另一个作为通信介质,互为外部邻居的网关必须能够知道那 个网络必须通过那些网络才能到达。外部网关协议使这个信息能够在两个外部邻居之间 进行传递。因为它是一个轮询协议,他也能让每个网关控制和接收网络可大性信息的速 率,允许每个系统控制它自己的开销。他还使得每个系统具有自主的路由算法,这些算 法不会因为其他系统的失败而中断。外部网关协议具有三个部分(a)邻居获得协议(b) 邻居可达性协议和(c)网络可达性判断。注意,所有EGP定义的报文仅传播一站。即 他们在一个网关产生并发送到一个邻居网关而不调停任何干涉网关。因此,生存时间应 设成一个很小的数。如果网关在报文流中收到EGP报文但地址不是指向他们,网关会 删除它们。 每个EGP报文含有一个序列号。网关应为每个邻居维护一个序列号。 3.邻居获得 能够从外部网关那里获得路由信息之前,必须象捕获直接邻居一样获得它(直接邻 居和间接邻居之间的差别下面将给以解释)。为了让两关网关称为直接邻居,按照前面 定义的含义,并且他们必须执行邻居获得协议,简单的讲他是一个两次握手标准。 一向根其他网关启动邻居请求的网关,给他发出一个邻居获得请求。这个报文应重 复发送(以合适的速度过去大约每30秒一次),知道收到一个邻居获得应答或邻居获 得拒绝。请求应含有一个标示号,以便拷贝进应答后应答和请求相匹配。 收到邻居获得请求的网关必须决定它是否象成为发出请求者的直接邻居。如果不, 他也许在它的选项上用一个邻居获得拒绝给以响应,随便规定拒绝的原因。否则他会发 送一个邻居获得应答报文。 发出请求的网关当他收到邻居的应答后应认为邻居获得已完成,。发出应答的网关 应认为邻居获得已完成,当他发出应答后。 经过一段合理的时间后,不匹配的应答和拒绝被丢弃。然而所有这些不匹配的信息 对于诊断确实有用的。 来自已成为直接邻居网关的邻居获得请求请求应给予一个应答作为响应。 从网关G到网关G'的邻居获得请求或应答应载有G迅速回答给G'的邻居可达性 Hello报文所用的最小时间段(以秒为单位)和G被迅速去掉NR报文(见下文) 所用的 最小时间段(以秒为单位)。 如果一个网关不想成为继续成为一个特定外部网关的邻居,他发送一个邻居终止报 文。收到邻居终止报文的网关应用一个邻居终止确认给以响应。他应停止把报文发送者 以任何方式作为邻居看待。因为有大量协议运行在直接邻居之间(见下文),如果某些 网关不再需要成为其他的直接网关,他用一个邻居终止报文很礼貌的指出这个事实。在 收到它的确认之前,邻居终止报文应重复传输直到一定次数。收到邻居终止报文之后, 邻居可达性协议应被停止处理。 烟头应具有一些表,其内配置有一些具有和他共同网络的核心网关(仅由两到三个) 的地址。烟头的责任应是使用这些网关发动邻居获取。如果烟头的直接邻居全部失败, 烟头还有一个最少获得一个直接邻居的责任。它能做到这些,通过选择已经成为它的间 接邻居(见下文)的核心网关中的一个,并且用他执行邻居获得协议。(在任何一个时 间仅一个核心网关总是愿意成为一个给定烟头网关的直接邻居。) 4.邻居可达性协议 对一个网关而言,保持它的诸如邻居可达性这样的事时信息是十分重要的。如果一 个网关断定某个特定的邻居不可达,他应停止向那个网关发送通信流。为了做出判断, 一个邻居可达性协议是必须的。EGP协议为此提供了两种报文类型——hello和I heard you报文。 从直接邻居那里收到一份hello报文时,必须立即给那个直接邻居返回一个I heard you报文。收到hello和返回I heard you 之间绝不能大于几秒。 为了判断一个外部邻居的可达性,核心网关将使用下列算法: 一个可达邻居将被公布为不可达,如果核心网关上次发送了n个hello而在此之间 收到的回答少于K个I heard you的话。一个不可达网关应被被公布可达,如果核心网关 上次发送了m个hello而在此之间收到的回答至少j个I heard you的话。 烟头网关也会给他们的直接邻居发送hello并且也会收到I heard you作为回答。判 断可达性的算法可能相似于上面描述的算法。但是对烟头网关而言发送hello不是必须 的。Hello和I heard you报文具备一个状况域,发送网关用它来指出他认为接收网关是 可达的还是不可达的。这个信息对于诊断十分有用。他还允许烟头网关将它的可达性判 断寄生在它的核心邻居上:事实上只有核心网关需要发送hello报文。烟头能够根据hello 内的状态域来判断是否可达。即,烟头网关(仅发送I heard you)宣布核心网关(仅发 送hello)为可达,当来自核心网关的hello指出他已经宣布烟头是可达的。 Hello的发送频率参数k,n,j,和m的值不能在此规定。最好的效果依赖于邻居和邻居 所在的共同网络的特性。这意味着,恰当的参数需要由两个邻居网关的设计者和实现者 共同决定。不顾及邻居和所连网络的特点而孤立的选择算法和参数九没有希望产生最佳 的可达性判断。 然而邻居获得请求和应答报文位邻居提供了一个互相通告迅速回答hello的最小频 率的方法。当网关G发送一个邻居获得请求给网关G'时,他声明它不希望以高于X秒 一次的速度回答来自G'的hello。G'在它的邻居请求回答中指出它不希望以高于Y秒一 次的速度回答来自G的hello。这两个速度不必完全相同。但每个必须遵守另一个的时 间间隔。网关会以低于所要求的速度而非更高的速度发送hello。 直接邻居网关还应被公布为不可达,如果连接它的网络使用了地记得协议信息,这 是可以推断出的。然而例如网关收到一个来自ARPANET的目的地死亡报文,指出一个 直接邻居已死亡,网关应公布那个邻居为不可达。邻居不应被公布为可达,在交换完必 须数量的Hello/I heard you包之前。 变为不可达的直接邻居不会停止成为一个直接邻居。邻居可以被公布为可达而不必 经由邻居获得协议。然而,如果邻居保持不可达很长一段时间,诸如一个小时,网关应 停止把它作为一个邻居,如,应终止发送hello报文给他。邻居获得协议应被重复,在 他又一次变为一直接邻居之前。 来自非直接邻居的hello报文应给予简单的丢弃。然而所有这些信息的记录可以提 供极有用的诊断信息。 一个停极的网关或它的将它连到一个特定邻居的网关的接口停机,那末它应发送一 邻居终止报文给所有不能到达它的直接邻居。终止报文使用在信息域指明停机原因。他 应重传那个报文许多次,在他收到一邻居终止确认之前。以此给邻居提供停机的事前警 告,并使他们准备好在某种程度上最少化由此对现存通信的破坏。 5.网络可达(NR)报文 术语:假定网关G有个到达网络N的接口。我们说这个G相对于网络N(M和N 相隔遥远)是一个到达网络M的合适初站,当且仅当有以下约束时: 去往网络M和网关G的网络N接口上收到的通信将被G转发到M,通过不包含任 何其他具有到达网络N的接口的网关。简而言之,比较于网络N而言G时网络M的合 适初站。在网络N上找不到比它更好的网关以路由去往网络M的通信的话。关于最优 路由,网络N上的去往网络M的通信应总是被转发到一个合适的初站的网关那里。 为了使外部网关G和G'(他们使网络N上的邻居)能够相互用作包交换机来转发 去网远程网络的通信,每个需要了解作为其他网络的合适初站的网络列表。外部网关协 议定义了一个报文,叫做网络可达性报文或NR报文以传送这个信息。 假定G是一个位于网络N上的网。那末G发送的关于网络N的报文必须包含下列 信息: 一张完整的网络列表。表中的网络是对网络N而言所有合适的初站。 如果G'能从外部邻居G获得这些信息,那末它就知道去往那些不在列表之列的网 络的通信不应被转发给G。(然而不能简单的断定列表中网络的所有通信都通过G转发, 因为G'也许有其他到达N的合适初站的邻居。例如G和G"也许都是G'的邻居,但对 网络N而言是等距离的。那末每个都是一个合适的初站。) 对于表中的每一个网络,NR报文还规定了从G到那个网络的“距离”(按照自治 系统中网关G的设计者交付的定义的某些公制作为元素)。核心网关应公布那些能不离 开核心系统就能够到达的网络的距离小于128。其他的为大于等于128。烟头网关应将 列于其NR报文中的所有网络的距离公布为小于128。 距离最大值(255)的意义是指网络不可达。所有其它值得意义是网络可达。 如果来自网关G的一个NR报文没有提及网络N,而先前来自N的NR报文提及过 网络N,那末对于G而言N可能已为不可达。如果连续的来自G的NR报文都没有提及 N,那末就应该解释为对G而言N为不可达。这个过程是必须的,以确保那已不可达, 但不是永远公布为不可达的。网络超时并从网络列表中消除。 一种常见的情况时,核心网关G和烟头网关G'是网络N上的直接邻居,并知道这 些邻居是哪些网络的合适初站。虽然烟头网关G'可能不知道其他所有邻居,但是它能够 方便的和高效的从G那里获取这些信息。因此,EGPNR报文还含有一些允许核心网关 G规定下列信息域: a)(网络N上的)G的所有邻居(包括内部邻居和外部邻居)的列表,这些邻居必须 是G已经可靠的判断为可达的。G还可以在这张列表中包含间接邻居(见下文)。 b)对于邻居中的每一个,可作为网络列表中的哪一个网络的合适初站(对于网络N 而言)。 c)每个<邻居,网络>对,从一个邻居到一个网络的距离。 所以,NR报文提供了一种方法,允许一个网关去发现新的邻居,通过察看一个已 知的邻居是否具有在同一个网路上的另外的邻居。这个信息还使得下面描述的间接邻居 策略的实现成为可能。 NR报文的一个更为精确的解释如下: 报文的数据部分应主要由数据块组成,没块应由一个网关地址作为标题,这个地址 应为任何发送这个报文的网关或网关的邻居的地址。每个网关地址应能通过一个网络列 表而理解为某个网络的合适初站。所有到达同一网关具有相同距离的网络应被组织在这 张列表中,之前加上距离本身和网络号。整个列表之前是表中距离-组的数量。 数据块列表之前是: a) 为这个报文包含数据块的网关G内部邻居的编号的数量(1字节)。习惯上, 这个数量应包含G自身的数据块,它应该第一一个出现。 b) 网关G外部邻居的号码的数量(1字节)为这个报文包含的数据块。 c) 于此报文相关的网络的地址。如果G和G'是网络N上的邻居,那末从G到 G'的NR报文中,这是网络N的地址。习惯上4个字节的地址已被分配给这 个地址末尾的1,2,或3个字节应为零。 各个数据块之间,第一个块是G自身,然后是G的所有内部邻居的块,再是外部邻 居的块。因为所有设计的网关位于同一个网络上,他们的地址已经给定,网关地址的网络部 分(1,2,或2字节)被省略以节约空间。 在这个网络列表中,每个网络地址是任意的一个两个或三个字节。这取决于;这是 一个A类B类或C类地址。没有可用的尾部字节。由一个烟头发送的NR报文应是最简单 的。也就是它仅有个数据块,以它的自身地址开头(在网络上它和相邻核心网关通用),列 出可到达哪儿的合适初站的网络。这些一般正是没有其他网络路径的网络。 核心网关应发送完整的NR报文。包含所有关于同一网络上的其他网关的信息,既 有核心网关(应被列为内部网关)也有其他网关(应被列为外部邻居,可能还包括烟头本身)。 这个信息应使烟头变成一个所有这些其他网关的间接邻居(见下文)。就是,如果合适的话 烟头应直接转发通信给这些其他网关,但不应该变成他们的直接邻居。 烟头绝不应转发给任何直接或间接相邻的核心网关任何对这些网关不是合适初站的 通信,象在一个NR报文中指出的那样。当然,这不能应用到正在使用源路由选项上的数据 报。任何这种数据报应总被按照在源路由选项域中指示的那样转发,即使要求转发到一个不 能作为合适初站的网关上。 6.NR报文轮询技术 没有网关必须发送NR报文给任何其他网关,除了作为一个来自直接邻居的NR轮询的 响应。然而,网关要求在几秒内(服从于两段限制的)去响应一个来自一个直接邻居的NR 轮询。即使网关相信那个邻居已停机。 EGP NR轮询报文为此而定义。没有网关可以为了一个NR报文而大于1分钟一次的轮 询其他网关。网关收到大于1分钟一次的轮询可能会简单的给以忽略或发回一个错误报文。 网关G将接收作为来自作为网关G'的轮询间隔最小的间隔和G'将作为来自网关G轮询 间隔最小间隔被规定为G和G'变成直接邻居的时间。所有邻居获取请求和邻居获取回答都 允许发送者规定它的想要的最小轮询间隔(以秒计算)。如果G规定到达G'也就是它的最 小轮询间隔为X, G'不应以大于X秒一次的频率轮询G。轮询必须只发送给有邻居获取协议 宣布为可达的直接邻居。 NR轮询报文含有一个由轮询网关选择的序列号。被轮询网关应在回应轮询时发送的NR 报文中返回这个序列号,以便以便时轮询网关能使收到的NR报文和轮询匹配。 总的来说,轮询应被重传一定次数(在重传间用一个合理的时间间隔)直到一个NR报 文被收到。若在最大重传次数之后没有收到NR报文,轮询网关应假定被轮询网关对任何网 关而言都不是一个合适的初站。轮询/重传算法的最佳参数应取取决于两个网关和连接他们 的网络的特性。收到的序列号于最近发出的轮询的鉴别号不匹配的NR报文被忽略。不存在 为多个突出的轮询给同一邻居的规定。 7.发送NR报文 通常,NR报报文仅被作为一个轮询的响应被发送。然而,在来自两个外部邻居的成功 轮询之间,一个网关可能发送一个且仅发送一个主动NR报文给那个邻居,这给他有限的权 利去快速的通告可能在上次轮询之后的间隔之内已出现的网络可达性变化。过多的NR报文 可能会被忽略,或被返回一个错误报文。 NR报文应在收到轮询之后几秒内发出。不及使得响应一个NR报文可能导致轮询网关 认定被轮询网关对于任何网络都不是一个合适的初站。作为轮询发送的NR报文载有轮询报 文的序列号报文域中的列号。主动NR报文含有收到的上个轮询的鉴别号,并且具有主动位 设置。(注意,这个允许只为单个NR报文/每轮询周期) 来自非邻居的,来自未被公布为可达的邻居或具有非法的IP源网络域轮询,应被回答 以具有合适原因域的EGP错误报文。如果G发送一NR轮询报文给G'(具有IP源网络N) 并且G'不是G的邻居(G有去往网络N的接口或,G'不具有到达网络N的接口),那末网 络域被认为非法。 一个网关不必在最小间隔内发送多于一个的NR报文,在邻居获取期间。产生意外时, 为了复制轮询(连续的轮询具有相同的序列号)却必须这样做,这种情况在轮询在传输中被 丢失时出现。网关应发送一个NR报文(回答中含有它的最近信息)给一个复制轮询。 8.间接邻居 一个外部网关变成一个间接邻居需要三个步骤:(a)邻居获取(b)运行可达协议还有 (c)为NR报文周期性的运行轮询邻居。假使那个网关G收到一个来自G'的NR报文。在 这个G'中指出存在一些邻居G1…Gn.对于一组网络而言每个都是一个合适的初站。那末应 被允许去为这些网络转发通信直接到G1…Gn中的合适的一个而不必首先发送给G'。在这 种情况下,G也许被认为是G1…Gn中的一个间接邻居,因为它视为转发通信的其他网关的 邻居,但不执行邻居获取,邻居可达性或用他们互换NR报文。邻居和网络可达性信息间接 的通过G'获得,所以指明“间接邻居”。我们说G是一个经由G'的 G1…Gn的间接邻居。 如果G是G'的经由G"的一个间接邻居并且G收到一个来自G"(不涉及G')的NR报 文,G应把G'当成不可达。 9.局限性 必须明确的了解,外部网关协议不在其内部建立路由算法。另外它不提供常规领域路由 算法实现所需的全部信息。如果拓扑不符合上面所给出的烟头所做的实现,外部网关协议就 不能提供足够的拓扑信息去防止循环。 若任意网关发出一个具有错误信息的NR报文,要求成为一个它实际上根本不可能到达 的网络的合适初站,去网那个网络的通信可能永远不会被投递。实现者必须记住这一点。 A 附录 A——EGP报文格式 外部网关协议运行在互联网协议之上,协议号为8(十进制)。 A.1 邻居获取报文 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! EGP Version # ! Type ! Code ! Info ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Checksum ! Autonomous System # ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Sequence # ! NR Hello interval ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! NR poll interval ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 描述: 邻居获取报文有内部和外部网关用来变成互为邻居。 EGP Version # 2 Type 3 Code Code =0,邻居获取请求 Code =1,邻居获取回答 Code =2,邻居获取拒绝(见信息域) Code =3,邻居死亡报文(见信息域) Code =4,邻居死亡确认 Checksum EGP校验和是从EGP版本号域开始的EGP报文的1的反码和的16位1的反码。 为了计算校验和,校验域应为0。 Autonomous System # 此十六位数指出包含这个报文源网关的自治系统。 Info 对于拒绝报文,给出拒绝原因: 0 未指明 1 超出表空间 2 管理性禁止 为终止报文给出终止成为邻居的原因: 0 未指明 1 停机 2 不再需要 否则,这个域必须为0。 Sequence # 它用于帮助匹配请求和应答。 NR Hello interval 最小hello轮询间隔(以秒为单位)。 NR poll interval 最小NR轮询间隔(以秒为单位)。 A.2 邻居hello/I heard you 报文 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! EGP Version # ! Type ! Code ! Status ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Checksum ! Autonomous System # ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Sequence # ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 描述: 外部邻居使用EGP邻居hello和I heard you报文去判断邻居的连通性。当邻居 收到一个来自一个邻居的EGP邻居的hello报文时,它应用一个EGP“I heard you”报 文给以响应。 EGP Version # 2 Type 5 Code Code=0, hello Code=1, I heard you Checksum EGP校验和是从EGP版本号域开始的EGP报文的1的反码和的16位1的反码。 为了计算校验和,校验域应为0。 Autonomous System # 此十六位数指出包含这个报文源网关的自治系统。 Sequence # 它用于帮助匹配请求和应答。 状态 0 非给定状况 1 对我来说你看起来可达 2 由邻居可达性协议看来你不可达 3 由网络可达性信息看来(诸如来自ARPANET网的1822目的地死亡报文)看来 你不可达 4 由于我的网络接口问题看来你不可达 A3 NR轮询报文 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! EGP Version # ! Type ! Code ! Unused ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Checksum ! Autonomous System # ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Sequence # ! Unused ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! IP Source Network ! 描述: 说明 想要接受来自外部网关的NR报文的网关将发送一个NR Poll报文。 在NR报文 中提到的各网关在位于IP源网络域中的网络上具有一个接口。 EGP Version #_ 2 类型 2 代码 0 校验和 EGP校验和是从EGP版本号域开始的EGP报文的1的反码和的16位1的反码。 为了计算该校验和,校验和域应该为零。 独立系统#_ 这个16位号数识别该独立系统 包含那个是该报文的源的网关 序号 帮助匹配请求和答复 IP源网络 在NR报文中提到的各网关在位于IP源网络域中的网络上具有一个接口。 IP 源网络被标记为一字节的网络号码后面是两个字节的零为了A类网络两个字节的网络号 码后面是一字节的零用于B类网络并且三字节的网络号码用于C类网络。 A.4 网络可达性报文 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! EGP Version # ! Type ! Code !U! Zeroes ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Checksum ! Autonomous System # ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Sequence # ! # of Int Gwys ! # of Ext Gwys ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! IP Source Network ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Gateway 1 IP address (without network #) ! ; 1, 2 or 3 bytes +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! # Distances ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Distance 1 ! # Nets ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! net 1,1,1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ; 1, 2 or 3 bytes +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! net 1,1,2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ; 1, 2 or 3 bytes +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Distance 2 ! # Nets ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! net 1,2,1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ; 1, 2 or 3 bytes +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! net 1,2,2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ; 1, 2 or 3 bytes +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Gateway n IP address (without network #) ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! # Distances ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Distance 1 ! # Nets ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! net n,1,1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ; 1, 2 or 3 bytes +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! net n,1,2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ; 1, 2 or 3 bytes +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Distance 2 ! # Nets ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! net n,2,1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ; 1, 2 or 3 bytes +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! net n,2,2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ; 1, 2 or 3 bytes +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ... 说明 网络可达性报文( NR)用来发现通过外部网关可能到达的网络。 发送 NR报 文响应一个NR Poll报文。 EGP Version #_ 2 类型 1 代码 0 校验和 EGP校验和是从EGP版本号域开始的EGP报文的1的反码和的16位1的反码。 为 了计算该校验和,校验和域应该为零。 独立系统#_ 这个识别该独立系统的16位数包含那个是该报文的源的网关。 U (未经请求的)位 这个位被设定如果NR报文正在未经请求的发送。 序号 上一个由邻居发送的给这个正在发送的NR报文的NR poll报文的序号。 这个 号码用来帮助匹配轮询和答复。 IP源网络 在NR报文中提到的各网关在位于IP源网络域中的网络上具有一个接口。 内部网关#_ 在这个报文中提到的内部网关。 外部网关#_ 在这个报文中提到的外部网关。 网关 IP地址 网关 IP地址的1、2或3字节(没有网络#_)。 距离 以网关为单位的数目。 距离 距离 网 在这个距离内的网数目。 网络地址 通过前面的网关能够到达的网络的网络地址的1、2或3字节。 A.5 EGP错误信息 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! EGP Version # ! Type ! Code ! Unused ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Checksum ! Autonomous System # ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Sequence # ! Reason ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! ! ! Error Message Header ! ! (first three 32-bit words of EGP header) ! ! ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 说明 EGP错误信息被作为具有非法的校验和或在它的一个域中具有不正确的值的 EGP报文的响应递送。 EGP Version #_ 2 类型 8 代码 0 校验和 EGP校验和是从EGP版本号域开始的EGP报文的1的反码和的16位1的反码。 为了计算该校验和,校验和域应该为零。 独立系统#_ 这个识别该独立系统的16位数包含那个是该报文的源的网关。 序号 通过网关发送错误信息赋予的序号。 理由 EGP报文有差错的理由。 下列理由已经被定义∶ 0 -未详细说明的 1 -非法的EGP校验和 2-在NR Poll或响应中的非法的IP源地址 3 -未定义的EGP类型或代码 4 -收到的来自非邻居的poll 5 -收到过多未经请求的NR报文 6 -收到过多poll 7 -在收到NR报文中不正确的统计 8 -没有收到NR poll的响应 0 -未详细说明的 RFC888——"STUB" EXTERIOR GATEWAY PROTOCOL “烟头”外部网关协议 1 RFC文档中文翻译计划