动态路由协议培训

更新时间:2024-07-02 19:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

培训教材-路由器

目录

1.

路由协议 ............................................................................................................................................. 3 1.1. 1.2. 1.2.1. 1.2.2. 1.2.3. 1.2.4. 1.3. 1.3.1. 1.3.2. 1.3.3. 1.3.4. 1.3.5. 1.3.6. 1.3.7. 1.3.8. 1.3.9. 1.4. 1.5. 1.6. 1.7. 1.7.1. 1.7.2. 1.7.3. 1.7.4. 1.7.5. 1.7.6. 1.7.7. 1.7.8. 1.7.9. 1.7.10. 1.7.11. 2.

静态的与动态的内部路由 .................................................................................................... 3 选路信息协议(RIP) .......................................................................................................... 5

慢收敛问题的解决 .................................................................................................... 7

RIP报文格式 ............................................................................................................ 8 RIP编址约定 ............................................................................................................ 9 RIP报文的发送 ...................................................................................................... 10

OSPF .................................................................................................................................... 10

概述.......................................................................................................................... 10 数据包格式 .............................................................................................................. 10 OSPF基本算法 ....................................................................................................... 11 OSPF路由协议的基本特征 ................................................................................... 12 区域及域间路由 ...................................................................................................... 13 OSPF协议路由器及链路状态数据包分类 ........................................................... 16 OSPF协议工作过程 ............................................................................................... 18 OSPF路由协议验证 ............................................................................................... 21 小结.......................................................................................................................... 21

HELLO协议 ........................................................................................................................ 22 将RIP,HELLO和EGP组合起来.................................................................................... 23 边界网关协议第4版(BGP4) ......................................................................................... 24 EGP ...................................................................................................................................... 27

给体系结构模型增加复杂性 .................................................................................. 27

一个其本思想:额外跳 .......................................................................................... 28 自治系统的概念 ...................................................................................................... 30 外部网关协议(EGP) .......................................................................................... 31 EGP报文首部 ......................................................................................................... 32 EGP邻站获取报文 ................................................................................................. 33 EGP邻站可达性报文 ............................................................................................. 33 EGP轮询请求报文 ................................................................................................. 34 EGP选路更新报文 ................................................................................................. 35 从接收者的角度来度量 .......................................................................................... 37 EGP的主要限制 ..................................................................................................... 38

CISCO 路由器产品介绍 ................................................................................ 错误!未定义书签。 2.1. 2.2. 2.3. 2.4.

CISCO 2500 ......................................................................................... 错误!未定义书签。 CISCO 4500-M .................................................................................... 错误!未定义书签。 CISCO 7200 ......................................................................................... 错误!未定义书签。 CISCO 7513/7507 ................................................................................ 错误!未定义书签。

3. 路由器的基本配置 ........................................................................................... 错误!未定义书签。 参数设置 ............................................................................................................... 错误!未定义书签。

培训教材-路由器 1

培训教材-路由器

网络号 ............................................................................................................... 错误!未定义书签。 IP类设置 .......................................................................................................... 错误!未定义书签。 菜单设置 ........................................................................................................... 错误!未定义书签。 欢迎文本 ........................................................................................................... 错误!未定义书签。 异步线的设置 ................................................................................................... 错误!未定义书签。 总结................................................................................................................... 错误!未定义书签。 附录一 路由器常用命令 ................................................................................. 错误!未定义书签。

4.

基本维护 ........................................................................................................... 错误!未定义书签。

两种状态 ........................................................................................................... 错误!未定义书签。 帮助................................................................................................................... 错误!未定义书签。 命令简写 ........................................................................................................... 错误!未定义书签。 跟踪错误 ........................................................................................................... 错误!未定义书签。 进入设置状态 ................................................................................................... 错误!未定义书签。 存储退出 ........................................................................................................... 错误!未定义书签。 删除设置 ........................................................................................................... 错误!未定义书签。 一些常用命令 ................................................................................................... 错误!未定义书签。 修改地址 ........................................................................................................... 错误!未定义书签。 修改enable secrect password .................................................................... 错误!未定义书签。

附录二 常见网络故障分析及排除 ..................................................................... 错误!未定义书签。 1 路由器常用测试命令 ................................................................................... 错误!未定义书签。 2 路由器传输故障排除方法 ........................................................................... 错误!未定义书签。 3网络常见问题 ................................................................................................ 错误!未定义书签。

培训教材-路由器 2

培训教材-路由器

1. 路由协议

1.1. 静态的与动态的内部路由

在一个自治系统内的两个路由器彼此互为内部路由器。例如,因为核心构成了一个自治系统,两个Internet核心路由器互为内部路由器。在大学校园里的两个路由器也互为内部路由器,因为在校园里的所有机器都属于同一个自治系统。

自治系统中的路由器如何获得关于本系统内部的网络的信息呢?在小型的、缓慢变化着的互连网络中,管理者可以使用手工方式进行路由的建立与修改。管理者保留一张关于网络的表格,并在有新的网络加入到该自治系统或从该自治系统删除一个网络时,更新该表格。例如图1.1中显示的小公司的互连网络。为这样的互连网络选路耗费就微不足道,因为任何两点之间仅有一条路由。管理者可用人工的方式来配置所有的主机和路由器的路由。互连网络更改状态(如新增一个网络)时,管理者重新配置所有机器上的路由。

网络1 R1 网络2 R2 网络3 R3 网络4 R4 网络5

图1.1 在一个网点中包括了5个以太网和4个路由器的

小型互连网络。在这个互连网络中任意两台主机之间仅有一个路由

人工的系统明显存在缺点,它不能适应网络的迅速增长或迅速变化。在大型的、迅速变化的环境中,如Internet 网,人对情况变化的反应速度太慢,来不及处理问题;必须使用自动机制。采用自动机制还有利于提高可靠性,并对某些路由可变的小型互连网络中的故障采取反应措施。为了验证这一点,我们假设在图1.1中增加一个路由器,使之变为图1.2 所示的结构。

培训教材-路由器 3

培训教材-路由器

网络1 R1 网络2 R2 网络3 R3 网络4

图1.2 增加了路由器R5后使得网络2和3之间多了一条备

用路径当原有路由出故障时,选路软件能够迅速切换到备

用路由

对于拥有多个物理路径的互连网络体系结构,管理者通常选择其中一条作为基本路径。如果该基本路径上的路由器出故障,就必须改动路由使得通信流量通过备用路由器来传输。人工改变路由的方式耗时长而且容易带来错误。因此,即便是小型互连网中,也应使用处动机制来迅速而可靠地改变路由。

为了自动地保存准确的网络可达信息,内部路由器之间要进行通信,即路由器与可到达的另一个路由器要交换网络可到达性数据或网络选路信息。把整个自治系统的可到达信息汇集起来之后,系统中某个路由器就使用EGP把它们通告给另一个自治系统。

内部路由器通信与外部路由器通信的不同之处就是:EGP提供了为外部路由器通信广泛使用的标准,而内部路由器通信却没有一个单独的标准。造成这种情况的原因之一,就是自治系统的拓扑结构和具体技术的多样性。另一个原因是结构简单与功能强大之间的折衷,即易于安装和配置的协议往往不能提供强大的功能。因此,流行的适用于内部路由器通信的协议有很多种,但多数自治系统只选择其中一个在内部的来传播选路信息。

由于没有单独的标准,我们使用内部网关协议IGP(Interior Gateway Protocol)作为统称来描述所有的用于内部路由器之间交换的网络可达信息及选路信息的算法。例如Butterfly核心路由器构成了一个特定的自治系统,它使用SPREAD作为其内部网关协议IGP。有些自治系统使用EGP来作IGP,不过这对那些由具有广播功能的局域网组成的小型自治系统没有多少意义。

图1.3是自治系统使用某种IGP在内部路由器之间传播可到达信息的示意图。

在这个图中,IGP1和IGP2分别表示自治系统1和2所使用的内部网关协议。从图中可以得到这个重要的概念:

培训教材-路由器 4

R5 R4 网络5 培训教材-路由器

IGP1 IGP2 EGP R1 R2 IGP2 IGP1

图1.3 两个自治系统各自在其内部使用不同的IGP,但

是其外部路由器使用EGP与另一个系统通信的示意图

一个单个的路由器可以同时使用两种选路协议,一个用于到自治系统之外的通信,另一个用于自治系统内部的通信。

具体地说,运行EGP通告可达性的路由器,通常还需要运行一种IGP,以便获得其自治系统内部的信息。

1.2. 选路信息协议(RIP)

使用最广泛的一种IGP是选路信息协议RIP(Routing Information Protocol),RIP的另一个名字是routed(路由守护神),来自一个实现它的程序。这个程序最初由加利福尼亚大学伯克利分校设计,用于给他们在局域网上的机器提供一致的选路和可达信息。它依靠物理网络的广播功能来迅速交换选路信息。它并不是被设计来用于大型广域网的(尽管现在的确这么用)。

在旋乐(Xerox)公司的Palo Alto研究中心PARC早期所作的关于网络互连的研究的基础上,routed实现了起源于Xerox NS RIP的一个新协议,它更为通用化,能够适应多种网络。

尽管在其前辈上做了一些小改动,RIP作为IGP流行起来并非技术上有过人之处,而是由于伯克利分校把路由守护神软件附加在流行的4BSD UNIX系统上一起分发,从而使得许多TCP/IP网点根本没考虑其技术上的优劣就采用routed并开始使用RIP。一旦安装并使用了这个软件,它就成为本地选路的基础,研究人员也开始在大型网络上使用它。

关于RIP的最令人吃惊的事可能就是它在还没有正式标准之前就已经广泛流行了。大多数的实现都脱胎于伯克利分校的程序,但是由于编程人员对未形成文档的微妙细节理解不同而造成了它们之间互操作性限制。协议出现新版本后,出现了更多的问题。在1988年6月形成了一个RFC标准,这才使软件商解决了互操作性问题。

RIP协议的基础就是基于本地网的矢量距离选路算法的直接而简单的实现。它把参加通信的机器分为主机的(active)和被动的(passive或silent)。主动路由器向其他路由器通告其路由,而被动路由器接收通告并在此基础上更新其路由,它们自己并不通告路由。只有路由器能以主动方式使用RIP,而主机只能使用被动方式。

培训教材-路由器 5

培训教材-路由器

以主动方式运行RIP的路由器每隔30秒广播一次报文,该报文包含了路由器当前的选路数据库中的信息。每个报文由序偶构成,每个序偶由一个IP网络地址和一个代表到达该网络的距离的整数构成。RIP使用跳数度量(hop count metric)来衡量到达目的站的距离。在RIP度量标准中,路由器到它直接相连的网络的跳数被定义为1,到通过另一个路由器可达的网络的距离为2跳,其余依此类推。因此从给定源站到目的站的一条路径的跳数(number of hops或hop count)对应于数据报沿该路传输时所经过的路由器数。显然,使用跳数作为衡量最短路径并不一定会得到最佳结果。例如,一条经过三个以太网的跳数为3的路径,可能比经过两条低速串行线的跳数为2的路径要快得多。为了补偿传输技术上的差距,许多RIP软件在通告低速网络路由时人为地增加了跳数。

运行RIP的主动机器和被动机器都要监听所有的广播报文,并根据前面所说的矢量距离算法来更新其选路表。例如图1.2中的互连网络中,路由器R1在网络2上广播的选路信息报文中包含了序偶(1,1),即它能够以费用值1到达网络1。路由器R2和R5收到这个广播报文之后,建立一个通过R1到达网络1的路由(费用为2)。然后,路由器R2和R5在网络3上广播它们的RIP报文时就会包含序偶(1,2)。最终,所有的路由器和主机都会建立到网络1的路由。

RIP规定了少量的规则来改进其性能和可靠性。例如,当路由器收到另一个路由器传来的路由时,它将保留该路由直到收到更好的路由。在我们所举的例子中,如果路由器R2和R5都以费用2来广播到网络1的路由,那么R3的R4就会将路由设置为经过先广播的那个路由器到达网络1。即:

为了防止路由在两个或多个费用相等的路径之间振荡不定,RIP规定在 得到费用更小的路由之前保留原有路由不变。

如果第一个广播路由的路由器出故障(如崩溃)会有什么后果?RIP规定所有收听者必须对通过RIP获得的路由设置定时器。当路由器在选路表中安置新路由时,它也为之设定了定时器。当该路由器又收到关于该路由的另一个广播报文后,定时器也要重新设置。如果经过180秒后还没有下一次通告该路由,它就变为无效路由。

RIP必须处理下层算法的三类错误。第一,由于算法不能明确地检测出选路的回路,RIP要么假定参与者是可信赖的,要么采取一定的预防措施。第二,RIP必须对可能的距离使用一个较小的最大值来防止出现不稳定的现象(RIP使用的值是16)。因而对于那些实际跳数值在16左右的互连网络,管理者要么把它划分为若干部分,要么采用其他的协议。第三,选路更新报文在网络之间的传输速度很慢,RIP所使用的矢量距离算法会产生慢收敛(slow convergence)或无限计数(count to infinity)问题从而引发不一致性。选择一个小的无限大值(16),可以限制慢收敛问题,但不能彻底解决客观存在。

选路表的不一致问题并非仅在RIP中出现。它是出现在任何矢量距离协议中的一个根本性的问题,在此协议中,更新报文仅仅包含由目的网络及到达该网络的距离构成的序偶。为了理解这个问题我们考虑图1.4中路由集合。图中描述了在图1.2中到达网络1的路由。

培训教材-路由器 6

培训教材-路由器

网络1 R1 (a) R2 R3 网络1 R1 (b) R2 R3 图1.4 慢收敛问题。(a)中的三个路由器各有到网络1的路由。(b)

中,到网络1的路由已经消失了,但是R2对它的路由通告引起了选路的环路

正如图1.4(a)所显示的那样,R1直接与网络1相连,所以在它的选路表中有一条到该网络的距离为1的路由;在周期性的路由广播中包括了这个路由。R2从R1处得知了这个路由,并在自己的选路表中建立了相应的路由产工将之以距离值2广播出去。最后R3从R2处得知该路由并以距离值3广播。

现在假设R1到网络1的连接失效了。那么R1立即更新它的选路表把该路由的距离置为16(无穷大)。在下一次广播时,R1应该通告这一信息。但是,除非协议包含了额外的机制预防此类情况,可能有其他的路由器在R1广播之前就广播了其路由。可能假设一个特殊的情况,即R2正好在R1与网络1连接失效后通告其路由。因此,R1就会收到R2的报文,并对此使用通常的矢量距离算法:它注意到R2有到达网络1的费用更低的路由,计算出现在到达网络1需要3跳(R2通告的到网络1费用是2跳,再加上到R2的1跳)。然后在选路表中装入新的通过R2到达网络1的路由。图1.4描述了这个结果。这样的话,R1和R2中的任一个收到去网络1的数据报之后,就会把该报文在两者之间来回传输直到寿命计时器超时溢出。

这两个路由器随后广播的RIP不能迅速解决这个问题。在下一轮交换选路信息的过程中,R1通告它的选路表中的各个项目。而R2得知R1到网络1的距离是3之后,计算出该路由新长度4。到第三轮的时候,R1收到从R2传来的路由距离增加的信息,把自己的选路表中该路由的距离增到5。如此循环往复,直至距离值到达RIP的极限。

1.2.1. 慢收敛问题的解决

对图1.4的例子,可以使用分割范围更新(split horizon update)技术来解决慢收敛问题。在使用分割范围技术时,路由器记录下收到各路由的接口,而当这路由器通告路由时,就不会把该路由再通过那个接口送回去。在该例中,路由器R2不会把它到网络1的距离为2的路由再通告给R1,因此一旦R1与网络1的连接失效,它就不会再通告该路由。经过几轮选路更新之后,所有的机器都会知道网络1是不可达的。但是分割范围更新技术不能解决所有的拓扑结构中的问题 。

考虑慢收敛问题的另一个方法是使用信息流的概念。如果路由器通告了到某网络的短路由,所有接收路由器迅速地作出安装该路由的反应。当路由器停止通告某路由,协议在判断该路由不可达之前,要依据超时机制来工作。当超时出现时,路由器寻找替代路由并开始传

培训教材-路由器 7

培训教材-路由器

播此信息。不幸的是,路由器并不知道这个替代路由是否要依赖于刚刚消失的路由。因此,通常不应迅速地传播否定的信息。有一条警句或谓一语破的:

好消息传播得快,坏消息传播得慢。

解决慢收敛问题的另一个技术使用了抑制(hold down)法。抑制法迫使参与协议工作的路由器,在收到关于某网络不可达的信息后的一段固定时间内,忽略任何关于该网络的路由信息。这段抑制时间的典型长度是60秒。该技术的思路是等待足够的时间以便确信所有的机器都收到坏消息,并且不会错误地接受内容过时的报文。需要指出的是,所有参与RIP的机器都要遵循抑制策略,否则仍然会发生选路回路现象。抑制技术的缺点是:如果出现了选路回路,那么在抑制期间内这些选路回路仍然会维持下去。更严重的是,在抑制期间所有不正确的路由也保留下来了,即使是有替代路由的存在。

解决慢收敛问题的最后一种技术就是毒性逆转(poison reverse)。当一条连接消失后,路由器在若干个更新周期内都有保留该路由,但是在广播路由时则规定该路由的费用为无限长。为提高毒性逆转法的效率,它应该与触发更新(triggered updates)技术结合。触发更新技术使得新信息,路由器减少了因为想信好消息而容易出错的时间。

不幸的是,虽然触发更新技术、毒性逆转技术、抑制技术和分割范围技术能够解决一些问题,但它们又带来了一些新的问题。例如,在许多路由器共享一个公共网络的结构中采用触发更新技术的情况下,一个广播就能改变这些路由器的选路表,引发一轮新的广播。如果第二轮广播改变了路由表,它又会引起更多的广播。这就产生了广播雪崩。

使用广播技术(这有可能产生选路回路)和使用抑制技术防止慢收敛问题,可使得RIP在广域网上的工作效率极低。广播要耗费大量宝贵的带宽。即便不出现广播雪崩现象,所有机器周期性地进行广播也意味着网络流量随着路由器数目的增加而增加。而可能出现的选路回路在线路容量有限的情况下可能就是致命的问题。当兜圈子的分组使得线路的容量饱和后,路由器要交换一些选路报文来打破这种回路,就变得很困难甚至是不可能的。同样,在广域网中,抑制期间可能太长,使得高层协议使用的定时器超时从而中断连接。尽管有这些熟知的问题,但还是有许多的组织在广域网上使用RIP作为IGP。

1.2.2. RIP报文格式

RIP报文大致可分为两类:选路信息报文和对信息的请求报文。它们都使用同样的格式,由固定的首部和后面可选的网络和距离序偶列表组成。图1.5给出的报文的格式:在这个图中,命令(COMMAND)字段按照下表的规定对应了各种操作:

培训教材-路由器 8

培训教材-路由器

0 8 16 命令(1-5) 版本(1) 网1的协议族 网1的IP地址 必为零 必为零 至网1的距离 网2的协议族 网2的IP地址 必为零 必为零 至网2的距离 ? 24 31 必为零 必为零 必为零 图1.5 RIP报文的格式。在32比特的首部之后,报文包含了一系

列的序偶,每个序偶由一个网络IP地址和一个到达该网络的整

数距离值构成 命令 1 2 3 4 5

含 义

请求部分的或全部的选路信息

响应,包含发送方选路表内的网络距离序偶 启动跟踪模式(已过时) 关闭跟踪模式(已过时)

保留由Sun Microsystem公司内部使用

路由器或主机通过发送请求命令向另一个路由器请求(request)选路信息。路由器使用响应(response)命令回答。但是在大多数情况下,路由器不经请求就周期性发送响应报文。版本(VERSION)字段包含了协议的版本号(目前的值是1),接收方检测该字段以便对报文作出正确的解释。

1.2.3. RIP编址约定

RIP的普遍适用性也体现在它传送网络地址的方式上。它的地址格式不局限于供TCP/IP用户使用,还能适应其他网络协议族的规定。图1.5中显示出RIP通告中的每个网络地址可以长达14个八位组。当然,IP地址仅需4个八位组,RIP定义余下的八位组必须为零。网络i族(FAMILY OF NET i)字段指出了解释它后面出现的网络地址时应遵循的协议族。RIP对各类地址族的赋值遵循了4BSD UNIX操作系统的规定(IP地址类型的赋值是2)。

除了正常的IP地址之外,RIP规定地址0.0.0.0作为默认路由。RIP对通告的每个路由,包括默认路由,都附加了距离度量标准。因此可以让两个路由器以不同的度量标准来通告默认路由(如到互连网络的其余部分的路由),选择其中的一条作为基本路径,另一条作为备用。

在RIP报文每个项目的最后一个字段是到网络i的距离(DISTANCE TO NET i)字段,其内容是到达指定网络的整数型距离值。距离值是以跳数作为度量单位的,但是它的取值范围限制在1到16,16代表无限远(也就是说该路由不存在)。

培训教材-路由器 9

培训教材-路由器

1.2.4. RIP报文的发送

RIP报文中并没包含显式的长度字段。相反,RIP假设底层投递系统能够告诉接收方收到的报文长度。特别是,在TCP/IP系统中,RIP报文依赖于UDP来告诉接收方报文的长度。RIP工作在UDP上的端口是520,虽然RIP可以以不同的UDP端口来发送请求报文,但是在接收端的UDP端口通常都是520,同时这也是RIP产生广播报文的源端口。

使用RIP作为内部路由器协议限制选路的度量必须基于跳数。但跳数通常仅仅提供对网络响应能力和容量的粗略估量,而并不能产生最佳路由。此外,基于最小跳数来计算路由会有严重的缺点,即它会使选路相对固定不变,因为路由不能对网络负荷的变化作出反应。

1.3. OSPF

随着Internet技术在全球范围的飞速发展,OSPF已成为目前Internet广域网和Intranet企业网采用最多、应用最广泛的路由协议之一。OSPF(Open Shortest Path First)路由协议是由IETF(Internet Engineering Task Force)IGP工作小组提出的,是一种基于SPF算法的路由协议,目前使用的OSPF协议是其第二版,定义于RFC1247和RFC1583。

1.3.1. 概述

OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。在这里,路由域是指一个自治系统(Autonomous System),即AS,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在这个AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。

作为一种链路状态的路由协议,OSPF将链路状态广播数据包LSA(Link State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。

1.3.2. 数据包格式

在OSPF路由协议的数据包中,其数据包头长为24个字节,包含如下8个字段: * Version number-定义所采用的OSPF路由协议的版本。 * Type-定义OSPF数据包类型。OSPF数据包共有五种:

* Hello-用于建立和维护相邻的两个OSPF路由器的关系,该数据包是周期性地发送的。 * Database Description-用于描述整个数据库,该数据包仅在OSPF初始化时发送。

* Link state request-用于向相邻的OSPF路由器请求部分或全部的数据,这种数据包是在当路由器发现其数据已经过期时才发送的。

* Link state update-这是对link state请求数据包的响应,即通常所说的LSA数据包。 * Link state acknowledgment-是对LSA数据包的响应。 * Packet length-定义整个数据包的长度。

培训教材-路由器 10

培训教材-路由器

* Router ID-用于描述数据包的源地址,以IP地址来表示。

* Area ID-用于区分OSPF数据包属于的区域号,所有的OSPF数据包都属于一个特定的 OSPF区域。

* Checksum-校验位,用于标记数据包在传递时有无误码。 * Authentication type-定义OSPF验证类型。

* Authentication-包含OSPF验证信息,长为8个字节。

1.3.3. OSPF基本算法

SPF算法及最短路径树

SPF算法是OSPF路由协议的基础。SPF算法有时也被称为Dijkstra算法,这是因为最短路径优先算法SPF是Dijkstra发明的。SPF算法将每一个路由器作为根(ROOT)来计算其到每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓扑结构图,该结构图类似于一棵树,在SPF算法中,被称为最短路径树。在OSPF路由协议中,最短路径树的树干长度,即OSPF路由器至每一个目的地路由器的距离,称为OSPF的Cost,其算法为:

Cost = 100×106/链路带宽

在这里,链路带宽以bps来表示。也就是说,OSPF的Cost 与链路的带宽成反比,带宽越高,Cost越小,表示OSPF到目的地的距离越近。举例来说,FDDI或快速以太网的Cost为1,2M串行链路的Cost为48,10M以太网的Cost为10等。

链路状态算法

作为一种典型的链路状态的路由协议,OSPF还得遵循链路状态路由协议的统一算法。链路状态的算法非常简单,在这里将链路状态算法概括为以下四个步骤:

1、 当路由器初始化或当网络结构发生变化(例如增减路由器,链路状态发生变化等)

时,路由器会产生链路状态广播数据包LSA(Link-State Advertisement),该数据包里包含路由器上所有相连链路,也即为所有端口的状态信息。

2、 所有路由器会通过一种被称为刷新(Flooding)的方法来交换链路状态数据。Flooding

是指路由器将其LSA数据包传送给所有与其相邻的OSPF路由器,相邻路由器根据其接收到的链路状态信息更新自己的数据库,并将该链路状态信息转送给与其相邻的路由器,直至稳定的一个过程。

3、 当网络重新稳定下来,也可以说OSPF路由协议收敛下来时,所有的路由器会根据其各自的链路状态信息数据库计算出各自的路由表。该路由表中包含路由器到每一个可到达目的地的Cost以及到达该目的地所要转发的下一个路由器(next-hop)。

4、 第4个步骤实际上是指OSPF路由协议的一个特性。当网络状态比较稳定时,网络中传递的链路状态信息是比较少的,或者可以说,当网络稳定时,网络中是比较安静的。这也正是链路状态路由协议区别与距离矢量路由协议的一大特点。

培训教材-路由器 11

培训教材-路由器

1.3.4. OSPF路由协议的基本特征

前文已经说明了OSPF路由协议是一种链路状态的路由协议,为了更好地说明OSPF路由协议的基本特征,我们将OSPF路由协议与距离矢量路由协议之一的RIP(Routing Information Protocol)作一比较,归纳为如下几点:

* RIP路由协议中用于表示目的网络远近的唯一参数为跳(HOP),也即到达目的网络所要经过的路由器个数。在RIP路由协议中,该参数被限制为最大15,也就是说RIP路由信息最多能传递至第16个路由器;对于OSPF路由协议,路由表中表示目的网络的参数为Cost,该参数为一虚拟值,与网络中链路的带宽等相关,也就是说OSPF路由信息不受物理跳数的限制。并且,OSPF路由协议还支持TOS(Type of Service)路由,因此,OSPF比较适合应用于大型网络中。

* RIP路由协议不支持变长子网屏蔽码(VLSM),这被认为是RIP路由协议不适用于大型网络的又一重要原因。采用变长子网屏蔽码可以在最大限度上节约IP地址。OSPF路由协议对VLSM有良好的支持性。

* RIP路由协议路由收敛较慢。RIP路由协议周期性地将整个路由表作为路由信息广播至网络中,该广播周期为30秒。在一个较为大型的网络中,RIP协议会产生很大的广播信息,占用较多的网络带宽资源;并且由于RIP协议30秒的广播周期,影响了RIP路由协议的收敛,甚至出现不收敛的现象。而OSPF是一种链路状态的路由协议,当网络比较稳定时,网络中的路由信息是比较少的,并且其广播也不是周期性的,因此OSPF路由协议即使是在大型网络中也能够较快地收敛。

* 在RIP协议中,网络是一个平面的概念,并无区域及边界等的定义。随着无级路由CIDR概念的出现,RIP协议就明显落伍了。在OSPF路由协议中,一个网络,或者说是一个路由域可以划分为很多个区域area,每一个区域通过OSPF边界路由器相连,区域间可以通过路由总结(Summary)来减少路由信息,减小路由表,提高路由器的运算速度。一个典型的OSPF网络结构可以参见附图二

附图2:OSPF典型结构

培训教材-路由器 12

培训教材-路由器

* OSPF路由协议支持路由验证,只有互相通过路由验证的路由器之间才能交换路由信息。并且OSPF可以对不同的区域定义不同的验证方式,提高网络的安全性。

* OSPF路由协议对负载分担的支持性能较好。OSPF路由协议支持多条Cost相同的链路上的负载分担,目前一些厂家的路由器支持6条链路的负载分担。

1.3.5. 区域及域间路由

前文已经提到过,在OSPF路由协议的定义中,可以将一个路由域或者一个自治系统AS划分为几个区域。在OSPF中,由按照一定的OSPF路由法则组合在一起的一组网络或路由器的集合称为区域(AREA)。

在OSPF路由协议中,每一个区域中的路由器都按照该区域中定义的链路状态算法来计算网络拓扑结构,这意味着每一个区域都有着该区域独立的网络拓扑数据库及网络拓扑图。对于每一个区域,其网络拓扑结构在区域外是不可见的,同样,在每一个区域中的路由器对其域外的其余网络结构也不了解。这意味着OSPF路由域中的网络链路状态数据广播被区域的边界挡住了,这样做有利于减少网络中链路状态数据包在全网范围内的广播,也是OSPF将其路由域或一个AS划分成很多个区域的重要原因。

随着区域概念的引入,意味着不再是在同一个AS内的所有路由器都有一个相同的链路状态数据库,而是路由器具有与其相连的每一个区域的链路状态信息,即该区域的结构数据库,当一个路由器与多个区域相连时,我们称之为区域边界路由器。一个区域边界路由器有自身相连的所有区域的网络结构数据。在同一个区域中的两个路由器有着对该区域相同的结构数据库。

我们可以根据IP数据包的目的地地址及源地址将OSPF路由域中的路由分成两类,当目的地与源地址处于同一个区域中时,称为区域内路由,当目的地与源地址处于不同的区域甚至处于不同的AS时,我们称之为域间路由。

OSPF的骨干区域及虚拟链路(Virtual-link)

在OSPF路由协议中存在一个骨干区域(Backbone),该区域包括属于这个区域的网络及相应的路由器,骨干区域必须是连续的,同时也要求其余区域必须与骨干区域直接相连。骨干区域一般为区域0,其主要工作是在其余区域间传递路由信息。所有的区域,包括骨干区域之间的网络结构情况是互不可见的,当一个区域的路由信息对外广播时,其路由信息是先传递至区域0(骨干区域),再由区域0将该路由信息向其余区域作广播。骨干区域与其余区域的关系可以以附图三来说明。

培训教材-路由器 13

培训教材-路由器

附图3:骨干区域及域间路由

在实际网络中,可能会存在backbone不连续的或者某一个区域与骨干区域物理不相连的情况,在这两种情况下,系统管理员可以通过设置虚拟链路的方法来解决。

虚拟链路是设置在两个路由器之间,这两个路由器都有一个端口与同一个非骨干区域相连。虚拟链路被认为是属于骨干区域的,在OSPF路由协议看来,虚拟链路两端的两个路由器被一个点对点的链路连在一起。在OSPF路由协议中,通过虚拟链路的路由信息是作为域内路由来看待的。下面我们分两种情况来说明虚拟链路在OSPF路由协议中的作用。

1. 当一个区域与area0没有物理链路相连时

前文已经提到,一个骨干区域Area 0必须位于所有区域的中心,其余所有区域必须与骨干区域直接相连。但是,也存在一个区域无法与骨干区域建立物理链路的可能性,在这种情况下,我们可以采用虚拟链路。虚拟链路使该区域与骨干区域间建立一个逻辑联接点,该虚拟链路必须建立在两个区域边界路由器之间,并且其中一个区域边界路由器必须属于骨干区域。这种虚拟链路可以以下图来说明。

培训教材-路由器 14

培训教材-路由器

附图4:虚拟链路(1)

在上图所示的例子中,区域1与区域0并无物理相连链路,我们可以在路由器A及路由器B之间建立虚拟链路,这样,将区域2作为一个穿透网络(Transit-network),路由器B作为接入点,区域1就与区域0建立了逻辑联接。

2. 当骨干区域不连续时

OSPF路由协议要求骨干区域area0必须是连续的,但是,骨干区域也会出现不连续的情况,例如,当我们想把两个OSPF路由域混合到一起,并且想要使用一个骨干区域时,或者当某些路由器出现故障引起骨干区域不连续的情况,在这些情况下,我们可以采用虚拟链路将两个不连续的区域0连接到一起。这时,虚拟链路的两端必须是两个区域0的边界路由器,并且这两个路由器必须都有处于同一个区域的端口,以下图为例:附图 5:虚拟链路(2)

在上图的例子中,穿过区域1的虚拟链路将两个分为两半的骨干区域连接到一起,路由器A与B之间的路由信息作为OSPF域内路由来处理。

培训教材-路由器 15

培训教材-路由器

另外,当一个非骨干区域的区域分裂成两半时,不能采用虚拟链路的方法来解决。当出现这种情况时,分裂出的其中一个区域将被其余的区域作为域间路由来处理。

残域(Stub area)

在OSPF路由协议的链路状态数据库中,可以包括AS外部链路状态信息,这些信息会通过flooding传递到AS内的所有OSPF路由器上。但是,在OSPF路由协议中存在这样一种区域,我们把它称为残域(stub area),AS外部信息不允许广播进/出这个区域。对于残域来说,访问AS外部的数据只能根据默认路由(default-route)来寻址。这样做有利于减小残域内部路由器上的链路状态数据库的大小及存储器的使用,提高路由器计算路由表的速度。

当一个OSPF的区域只存在一个区域出口点时,我们可以将该区域配置成一个残域,在这时,该区域的边界路由器会对域内广播默认路由信息。需要注意的是,一个残域中的所有路由器都必须知道自身属于该残域,否则残域的设置没有作用。另外,针对残域还有两点需要注意:一是残域中不允许存在虚拟链路;二是残域中不允许存在AS边界路由器。

1.3.6. OSPF协议路由器及链路状态数据包分类

OSPF路由器分类

当一个AS划分成几个OSPF区域时,根据一个路由器在相应的区域之内的作用,可以将OSPF路由器作如下分类:

内部路由器:当一个OSPF路由器上所有直联的链路都处于同一个区域时,我们称这种路由器为内部路由器。内部路由器上仅仅运行其所属区域的OSPF运算法则。

区域边界路由器:当一个路由器与多个区域相连时,我们称之为区域边界路由器。区域边界路由器运行与其相连的所有区域定义的OSPF运算法则,具有相连的每一个区域的网络结构数据,并且了解如何将该区域的链路状态信息广播至骨干区域,再由骨干区域转发至其余区域。

AS边界路由器:AS边界路由器是与AS外部的路由器互相交换路由信息的OSPF路由器,该路由器在AS内部广播其所得到的AS外部路由信息;这样AS内部的所有路由器都知道至AS边界路由器的路由信息。AS边界路由器的定义是与前面几种路由器的定义相独立的,一个AS边界路由器可以是一个区域内部路由器或是一个区域边界路由器。

指定路由器—DR:在一个广播性的、多接入的网络(例如Ethernet、TokenRing及FDDI环境)中,存在一个指定路由器(Designated Router),指定路由器主要在OSPF协议中完成如下工作:

* 指定路由器产生用于描述所处的网段的链路数据包—network link,该数据包里包含在该网段上所有的路由器,包括指定路由器本身的状态信息。

* 指定路由器与所有与其处于同一网段上的OSPF路由器建立相邻关系。由于OSPF路由器之间通过建立相邻关系及以后的flooding来进行链路状态数据库是同步的,因此,我们

培训教材-路由器 16

培训教材-路由器

可以说指定路由器处于一个网段的中心地位。

需要说明的是,指定路由器DR的定义与前面所定义的几种路由器是不同的。DR的选择是通过OSPF的Hello数据包来完成的,在OSPF路由协议初始化的过程中,会通过Hello数据包在一个广播性网段上选出一个ID最大的路由器作为指定路由器DR,并且选出ID次大的路由器作为备份指定路由器BDR,BDR在DR发生故障后能自动替代DR的所有工作。当一个网段上的DR和BDR选择产生后,该网段上的其余所有路由器都只与DR及BDR建立相邻关系。在这里,一个路由器的ID是指向该路由器的标识,一般是指该路由器的环回端口或是该路由器上的最小的IP地址。DR和BDR在一个广播性网络中的作用可用下图来说明。

附图 6 :DR及BDR选择

OSPF链路状态广播数据包种类

随着OSPF路由器种类概念的引入,OSPF路由协议又对其链路状态广播数据包(LSA)作出了分类。OSPF将链路状态广播数据包共分成5类,分别为:

类型1:又被称为路由器链路信息数据包(Router Link),所有的OSPF路由器都会产生这种数据包,用于描述路由器上联接到某一个区域的链路或是某一端口的状态信息。路由器链路信息数据包只会在某一个特定的区域内广播,而不会广播至其它的区域。

在类型1的链路数据包中,OSPF路由器通过对数据包中某些特定数据位的设定,告诉其余的路由器自身是一个区域边界路由器或是一个AS边界路由器。并且,类型1的链路状态数据包在描述其所联接的链路时,会根据各链路所联接的网络类型对各链路打上链路标识,Link ID。表一列出了常见的链路类型及链路标识。

链路具体描述 链路标识 培训教材-路由器 17

培训教材-路由器

类型 1 2 3 4 用于描述点对点的网络 识 用于描述至一个广播性网络的链路 用于描述至非穿透网络,即stub网络的链路 用于描述虚拟链路 识 相邻路由器的路由器标DR的端口地址 stub网络的网络号码 相邻路由器的路由器标

表格1: 链路类型及链路标识

类型2:又被称为网络链路信息数据包(Network Link)。网络链路信息数据包是由指定路由器产生的,在一个广播性的、多点接入的网络,例如以太网、令牌环网及FDDI网络环境中,这种链路状态数据包用来描述该网段上所联接的所有路由器的状态信息。

指定路由器DR只有在与至少一个路由器建立相邻关系后才会产生网络链路信息数据包,在该数据包中含有对所有已经与DR建立相邻关系的路由器的描述,包括DR路由器本身。类型2的链路信息只会在包含DR所处的广播性网络的区域中广播,不会广播至其余的OSPF路由区域。

类型3和类型4:类型3和类型4的链路状态广播在OSPF路由协议中又称为总结链路信息数据包(Summary Link),该链路状态广播是由区域边界路由器或AS边界路由器产生的。Summary Link描述的是到某一个区域外部的路由信息,这一个目的地地址必须是同一个AS中。Summary Link也只会在某一个特定的区域内广播。类型3与类型4两种总结性链路信息的区别在于,类型3是由区域边界路由器产生的,用于描述到同一个AS中不同区域之间的链路状态;而类型4是由AS边界路由器产生的,用于描述不同AS的链路状态信息

值得一提的是,只有类型3的Summary Link才能广播进一个残域,因为在一个残域中不允许存在AS边界路由器。残域的区域边界路由器产生一条默认的Summary Link对域内广播,从而在其余路由器上产生一条默认路由信息。采用Summary Link可以减小残域中路由器的链路状态数据库的大小,进而减少对路由器资源的利用,提高路由器的运算速度。

类型5:类型5的链路状态广播称为AS外部链路状态信息数据包。类型5的链路数据包是由AS边界路由器产生的,用于描述到AS外的目的地的路由信息,该数据包会在AS中除残域以外的所有区域中广播。一般来说,这种链路状态信息描述的是到AS外部某一特定网络的路由信息,在这种情况下,类型5的链路状态数据包的链路标识采用的是目的地网络的IP地址;在某些情况下,AS边界路由器可以对AS内部广播默认路由信息,在这时,类型5的链路广播数据包的链路标识采用的是默认网络号码0.0.0.0。

1.3.7. OSPF协议工作过程

OSPF路由协议针对每一个区域分别运行一套独立的计算法则,对于ABR来说,由于一个区域边界路由器同时与几个区域相联,因此一个区域边界路由器上会同时运行几套OSPF计算方法,每一个方法针对一个OSPF区域。下面对OSPF协议运算的全过程作一概括性的描述。

区域内部路由

培训教材-路由器 18

培训教材-路由器

当一个OSPF路由器初始化时,首先初始化路由器自身的协议数据库,然后等待低层次协议(数据链路层)提示端口是否处于工作状态。

如果低层协议得知一个端口处于工作状态时,OSPF会通过其Hello协议数据包与其余的OSPF路由器建立交互关系。一个OSPF路由器向其相邻路由器发送Hello数据包,如果接收到某一路由器返回的Hello数据包,则在这两个OSPF路由器之间建立起OSPF交互关系,这个过程在OSPF中被称为adjacency。在广播性网络或是在点对点的网络环境中,OSPF协议通过Hello数据包自动地发现其相邻路由器,在这时,OSPF路由器将Hello数据包发送至一特殊的多点广播地址,该多点广播地址为ALLSPFRouters。在一些非广播性的网络环境中,我们需要经过某些设置来发现OSPF相邻路由器。在多接入的环境中,例如以太网的环境,Hello协议数据包还可以用于选择该网络中的指定路由器DR。

一个OSPF路由器会与其新发现的相邻路由器建立OSPF的adjacency,并且在一对OSPF路由器之间作链路状态数据库的同步。在多接入的网络环增中,非DR的OSPF路由器只会与指定路由器DR建立adjacency,并且作数据库的同步。OSPF协议数据包的接收及发送正是在一对OSPF的adjacency间进行的。

OSPF路由器周期性地产生与其相联的所有链路的状态信息,有时这些信息也被称为链路状态广播LSA(Link State Advertisement)。当路由器相联接的链路状态发生改变时,路由器也会产生链路状态广播信息,所有这些广播数据是通过Flood的方式在某一个OSPF区域内进行的。Flooding算法是一个非常可靠的计算过程,它保证在同一个OSPF区域内的所有路由器都具有一个相同的OSPF数据库。根据这个数据库,OSPF路由器会将自身作为根,计算出一个最短路径树,然后,该路由器会根据最短路径树产生自己的OSPF路由表。

建立OSPF交互关系adjacency

OSPF路由协议通过建立交互关系来交换路由信息,但是并不是所有相邻的路由器会建立OSPF交互关系。下面将OSPF建立adjacency的过程简要介绍一下。

OSPF协议是通过Hello协议数据包来建立及维护相邻关系的,同时也用其来保证相邻路由器之间的双向通信。OSPF路由器会周期性地发送Hello数据包,当这个路由器看到自身被列于其它路由器的Hello数据包里时,这两个路由器之间会建立起双向通信。在多接入的环境中,Hello数据包还用于发现指定路由器DR,通过DR来控制与哪些路由器建立交互关系。

两个OSPF路由器建立双向通信这后的第二个步骤是进行数据库的同步,数据库同步是所有链路状态路由协议的最大的共性。在OSPF路由协议中,数据库同步关系仅仅在建立交互关系的路由器之间保持。

OSPF的数据库同步是通过OSPF数据库描述数据包(Database Description Packets)来进行的。OSPF路由器周期性地产生数据库描述数据包,该数据包是有序的,即附带有序列号,并将这些数据包对相邻路由器广播。相邻路由器可以根据数据库描述数据包的序列号与自身数据库的数据作比较,若发现接收到的数据比数据库内的数据序列号大,则相邻路由器会针对序列号较大的数据发出请求,并用请求得到的数据来更新其链路状态数据库。

培训教材-路由器 19

培训教材-路由器

我们可以将OSPF相邻路由器从发送Hello数据包,建立数据库同步至建立完全的OSPF交互关系的过程分成几个不同的状态,分别为:

w Down:这是OSPF建立交互关系的初始化状态,表示在一定时间之内没有接收到从某一相邻路由器发送来的信息。在非广播性的网络环境内,OSPF路由器还可能对处于Down状态的路由器发送Hello数据包。

w Attempt:该状态仅在NBMA环境,例如帧中继、X.25或ATM环境中有效,表示在一定时间内没有接收到某一相邻路由器的信息,但是OSPF路由器仍必须通过以一个较低的频率向该相邻路由器发送Hello数据包来保持联系。

w Init:在该状态时,OSPF路由器已经接收到相邻路由器发送来的Hello数据包,但自身的IP地址并没有出现在该Hello数据包内,也就是说,双方的双向通信还没有建立起来。

w 2-Way:这个状态可以说是建立交互方式真正的开始步骤。在这个状态,路由器看到自身已经处于相邻路由器的Hello数据包内,双向通信已经建立。指定路由器及备份指定路由器的选择正是在这个状态完成的。在这个状态,OSPF路由器还可以根据其中的一个路由器是否指定路由器或是根据链路是否点对点或虚拟链路来决定是否建立交互关系。

w Exstart:这个状态是建立交互状态的第一个步骤。在这个状态,路由器要决定用于数据交换的初始的数据库描述数据包的序列号,以保证路由器得到的永远是最新的链路状态信息。同时,在这个状态路由器还必须决定路由器之间的主备关系,处于主控地位的路由器会向处于备份地位的路由器请求链路状态信息。

w Exchange:在这个状态,路由器向相邻的OSPF路由器发送数据库描述数据包来交换链路状态信息,每一个数据包都有一个数据包序列号。在这个状态,路由器还有可能向相邻路由器发送链路状态请求数据包来请求其相应数据。从这个状态开始,我们说OSPF处于Flood状态。

w Loading:在loading状态,OSPF路由器会就其发现的相邻路由器的新的链路状态数据及自身的已经过期的数据向相邻路由器提出请求,并等待相邻路由器的回答。

w Full:这是两个OSPF路由器建立交互关系的最后一个状态,在这时,建立起交互关系的路由器之间已经完成了数据库同步的工作,它们的链路状态数据库已经一致。

域间路由

前面一节描述了OSPF路由协议的单个区域中的计算过程。在单个OSPF区域中,OSPF路由协议不会产生更多的路由信息。为了与其余区域中的OSPF路由器通讯,该区域的边界路由器会产生一些其它的信息对域内广播,这些附加信息描绘了在同一个AS中的其它区域的路由信息。具体路由信息交换过程如下:

在OSPF的定义中,所有的区域都必须与区域0相联,因此每一个区域都必须有一个区

培训教材-路由器 20

培训教材-路由器

域边界路由器与区域0相联,这一个区域边界路由器会将其相联接的区域内部结构数据通过Summary Link广播至区域0,也就是广播至所有其它区域的边界路由器。在这时,与区域0相联的边界路由器上有区域0及其它所有区域的链路状态信息,通过这些信息,这些边界路由器能够计算出至相应目的地的路由,并将这些路由信息广播至与其相联接的区域,以便让该区域内部的路由器找到与区域外部通信的最佳路由。

AS外部路由

一个自治域AS的边界路由器会将AS外部路由信息广播至整个AS中除了残域的所有区域。为了使这些AS外部路由信息生效,AS内部的所有的路由器(除残域内的路由器)都必须知道AS边界路由器的位置,该路由信息是由非残域的区域边界路由器对域内广播的,其链路广播数据包的类型为类型4。

1.3.8. OSPF路由协议验证

在OSPF路由协议中,所有的路由信息交换都必须经过验证。在前文所描述的OSPF协议数据包结构中,包含有一个验证域及一个64位长度的验证数据域,用于特定的验证方式的计算。

OSPF数据交换的验证是基于每一个区域来定义的,也就是说,当在某一个区域的一个路由器上定义了一种验证方式时,必须在该区域的所有路由器上定义相同的协议验证方式。另外一些与验证相关的参数也可以基于每一个端口来定义,例如当采用单一口令验证时,我们可以对某一区域内部的每一个网络设置不同的口令字。

在OSPF路由协议的定义中,初始定义了两种协议验证方式,方式0及方式1,分别介绍如下:

验证方式0:采用验证方式0表示OSPF对所交换的路由信息不验证。在OSPF的数据包头内64位的验证数据位可以包含任何数据,OSPF接收到路由数据后对数据包头内的验证数据位不作任何处理。

验证方式1:验证方式1为简单口令字验证。这种验证方式是基于一个区域内的每一个网络来定义的,每一个发送至该网络的数据包的包头内都必须具有相同的64位长度的验证数据位,也就是说验证方式1的口令字长度为64bits,或者为8个字符。

1.3.9. 小结

前文介绍了OSPF路由协议的概念及该协议的工作原理。OSPF路由协议定义于RFC1247及RFC1583,该协议提供了一个不同的网络通过同一种TCP/IP协议交换网络信息的途径。作为一种链路状态的路由协议,OSPF具备许多优点:快速收敛,支持变长网络屏蔽码,支持CIDR以及地址summary,具有层次化的网络结构,支持路由信息验证等。所有这些特点保证了OSPF路由协议能够被应用到大型的、复杂的网络环境中。

培训教材-路由器 21

培训教材-路由器

1.4. HELLO协议

HELLO协议提供了一个IGP的例子,它使用的选路度量标准是基于网络时延而不是跳数。虽然现在HELLO已经废弃不用了,但是由于曾经被早期的NSFNET主干网中的模糊球(fuzzball)路由器采纳为IGP,它还是在Internet的发展史上具有非同一般的意义。HELLO对我们有重要意义,因为它提供了一个不使用跳数的矢量距离算法的例子。

HELLO提供两个功能:使许多机器的时钟同步,并且使每个机器都能计算到目的站的最短路径。因此,HELLO报文在带有选路信息的同时,还携带有时间戳信息。HELLO的基本原理很简单:参加HELLO交换的每一个机器,维侍一个对邻站机器时钟的最佳估值的表。在传送一个分组之前,机器把当前时钟值复制到分组中作为它的时间戳。分组到达之后,接收方计算这条链路的当前时延。为了做到这点,它估计出邻站机器的当前时钟值,再减去到达分组的时间戳值。机器周期性地轮询邻站机器,以便重新估计时钟值。

HELLO报文允许参与的机器计算新的路由。这个算法和RIP的很像,只不过是使用时延而不是跳数而已。每个机器周期性地向其邻站机器发送一个到所有其他机器的估计时延。假如机器A向机器B发送一个选路表,指出目的站和时延。B检查表中的各个项目。如果B到一个已知的目的站D的当前时延,比从A到D的时延与从B到A的时延之和还要大,B就更改它的路由,并把流量经A送给D。也即只要经过A的路由的时延较小,B就使通信流量经过A。

和其他选路算法一样,HELLO也不能太频繁地改变路由,否则它就不稳定。选路算法的不稳定性会产生“二阶段振荡”(two—stage oscillation)的效应,即通信流量在两个不同的路由之间来回切换。在第一阶段,机器找到一条轻载路径后突然将流量切换给它,但不料又发现该路径严重超载。第二个阶段,机器将通信流量从这条超载路径切换开,结果又会发现这是负载最轻的路径。这样就形成了振荡。为避免这种现象,HELLO选择的策略是仅在路由的时延差距较大时才进行切换。

图1.6是HELLO的报文格式。这种协议比其报文格式更为复杂,因为它把通过本地网的连接与那些跳数很多的连接区分开来,使选路表中的陈旧项目不再起作用,并且它使用局部标识符而不是完整的IP地址来标识主机。

0 16 24 31 校验和 日期 时间 培训教材-路由器 22

培训教材-路由器

时间戳 时延1 时延2 时延n 本地项目 主机数 偏移1 偏移2 时延n 图1.6 HELLO报文的格式。每个报文携带日

期、时间以及时间戳,以便协议用来估计网络的时候

校验和(CHECKSUM)字段记录了整个报文的校验和,日期(DATE)字段是发送者的当地日期,时间(TIME)字段是按照发送者的时钟记录下的当地时间,时间戳(TIMESTAMP)字段用于计算往返时延。

标有 # HOSTS的字段给出了主机列表中的项目数,本地项目(LOCAL ENTRY)字段标出本地网络使用的项目块。每个项目包括时延(DELAY)字段和偏移(OFFSET)字段,分别给出了到达目的的主机的时延,以及发送方对该主机与自己时钟的偏差的当前估值。

1.5. 将RIP,HELLO和EGP组合起来

我们已经发现,同一个路由器一面在使用IGP来获取本自治系统内部的选路信息,一面又在使用EGP向其他自治系统通告路由信息。在理论上,编制一个软件实现这两种协议,使之具有无需人工干预收集路由和通告路由的能力是很容易的事。但由于技术和政策上的阻碍,实践起来就非常困难。

从技术上说,IGP协议与RIP和HELLO一样都是选路协议。路由器使用这样的协议,请求获得本自治系统内其他路由器的信息以便更新其选路表。与内部路由器协议不同,EGP除通常的选路表之外,还要作其他工作。运行EGP的路由器与其他自治系统之间进行可达信息的通信,是独立于自己的选路表。这样,实现RIP的一个UNIX程序routed,通告从本地选路表得到的信息,并在收到更新信息时更改本地选路表。它信赖运行RIP的机器送来的数据是正确的。相反,实现EGP的程序不通告从本地选路表获得的路由;它为网络的可达信息保留了一个独立的数据库。

运行EGP的路由器在通告可达信息时,必须注意仅能传播那些已被授权通告的路由,否则将会影响互连网络的其他部分。例如,某自治系统中的路由偶尔广播了一条实际上不存在的到珀杜大学的距离为0的路由,RIP协议会使其他路由器认可这条路由并把到珀杜大学的通信流量转给出错的路由器,这样,这些路由器所在的自治系统的通信流量就不能到达珀杜大学。如果EGP把这种错误广播到自治系统之外的机器上,那么互连网络上的某些部分就到达不了珀杜大学了。

gated程序把多种IGP和EGP按照一系列限制对外部路由器广播路由的规则,组合起来形成一个整体。例如,gated可以像routed程序那样接收RIP报文并修改本地机的选路表,它使用EGP通告那些从本自治系统可达的路由。这些规则允

培训教材-路由器 23

培训教材-路由器

许管理人员明确指定那些网络可以通告,那些不行,该如何通告到达该网络的距离。因此,尽管gated程序不是IGP协议族的一员,它在选路过程中仍起了重要的作用,它说明了建立自动机制来链接IGP和EGP而不牺牲安全性能是可行的。

Gated程序的另一个性能就是实现了距离度量标准的转换。具体地说,在自治系统内部的路由器通告路由时使用的距离值在固定的限度(如128)之下。而外部路由器在通告跨越自治系统而尚未超出自治系统联盟的路由时所使用的距离度量,要转换到较高的范围(即128到191),这样的转换机制人为地提高了到自治系统外部的路由的费用,从而使得流量尽量在自治系统内部流动。最后,对于那些超出自治系统联盟的路由,其距离值被转换到更高的范围(即192到254)以便尽量使得流量在自治系统联盟内流动。由于gated程序提供了自治系统之间的接口,可以容易地实现这样的转换操作。

1.6. 边界网关协议第4版(BGP4)

外部选路协议的创建是为了控制路由表的扩展以及通过把路由域划分成独立的管理区以便为因特网提供更加结构化的模式,这些具有自己独立的选路策略的管理区称为自治系统(AS)。

早期的因特网,使用了一个叫做EGP[3](不要与通常所说的外部网关协议混淆)的外部网关协议。NSFNET使用EGP在骨干网和区域网间交换可达性信息。尽管EGP使用很广泛,但是在处理选路循环和设置选路策略时,它的拓扑限制和低效率导致了对一种新的更先进的协议的需求。当前,BGP4[4]是因特网选路的实际标准;它是一种先进的外部协议,能为因特网提供一种可控制的无循环的拓扑。

BGP经历了不同的阶段,从1989年的最早版本BGP1,发展到了1993年开始开发的最新版本BGP4。BGP4是第一个能处理聚合(CIDR)和超级网的版本。

BGP没有对基础因特网拓扑施加任何限制。它假定自治系统内部的选路已经通过自治系统内的选路协议完成了(为了本书的目的,内是指在一个实体内部选路,外是指在实体之间)。基于在BGP相邻体之间交换的信息,BGP构造了一个自治系统图。这个导引的图形环境有时叫做树。就BGP而论,这个因特网就是一个AS图,每个AS用AS号码来识别。两个AS之间的连接形成一个路径,路径信息的汇集成到达特定目的地的路由。BGP确保无循环域间选路。图2.1表示了这个一般的路径树概念。 AS1 AS1

培训教材-路由器 24

AS1 AS-路径树 培训教材-路由器

图2.1 AS _路径树的例子

BGP是怎样工作的

BGP是用来在自治系统之间传递选路信息的路径向量协议。术语路径向量来自这一事实,即BGP选路信息带有一个AS号码的序列,它指出一个路由已通过的路径。BGP把TCP当做它的传送协议(端口179)。这就保证了所有的传送可靠性,诸如再传输可以由TCP管理,而不需要由BGP自己来实现。

两个BGP路由器相互间构成传送协议的连接。这两个路由器就称为相邻体或对等体。图2.2说明了这种关系。对等路由器交换多种报文以开放并确认连接参数,例如两个对等体间的运行的BGP的版本(举例来说,BGP3就是第3版,BGP4就是第4版)。如果对等体之间有什么一致,就会有差错通知发送,这个对等体连接就不会建立。

N1 N3 2.2.2.2 1.1.1.1

N2 N4

与1.1.1.1建立相邻体对话 与2.2.2.2建立相邻体对话

图2.2 BGP路由器成为相邻体

最初,所有候选BGP路由都被交换,如图2.3所示。当网络信息改变时,就发

送增量的更新。就CPU开销以及带宽分配与前面协议(如EGP)使用的完整的定期更新相比较而言,增量更新的方法体现了巨大的改进。 N3, N4 N1 N3 2.2.2.2 1.1.1.1 N2 N4

N3N1, N2 N4 培训教材-路由器 25 N1 N2

培训教材-路由器

N1 N2N3N4 图2.3 交换所有的选路更新

在一对BGP路由器之间,路由以UPDATE报文通告。UPDATE报文其中包括一个〈长度,前缀〉数组的列表,它表示通过每个系统可到达的目的地的列表。UPDATE报文还包括路径属性,诸如某个特定路由的优先级别的信息。

如果信息改变了,例如一个路由难以到达或有了更多的路径,BGP就会通过撤销无效路由注入新的选路信息,来告知它的相邻体。如图2.4所示,撤销的路由是UPDATE报文的一部分。它们是不能再供使用的路由。图2.5表示了稳定状态的情形:如果没有发生路由改变,路由器只交换KEEPALIVE数据包。

N1 N2 取消N1 N3 N4 N3N4 N1 N2 2.2.2.2 1.1.1.1 N1 N2N3 N4 图2.4 N1出了问题,局部更新被发送

N3 N4 N3N4 N2 N2 N2N3 N4 2.2.2.2 1.1.1.1 图2.5 稳定状态:N1仍然中断

KEEPALIVE报文在BGP相邻体之间周期地发送,以确保连接保持有效。KEEPALIVE数据包(每个数据包19字节)不会导致路由器CPU或链路带宽的紧张,因为它们只占用最小的带宽(大约2.5bit/s,每周期60s)。

BGP保存了一个表格的版本号,以便跟踪BGP路由表的情况。如果表格改变了,BGP就增加表格的版本。表格版本的迅速增加通常表示网络的不稳定。 BGP报文报头格式

培训教材-路由器 26

培训教材-路由器

BGP报语言报头格式是一个16字节的标记字段,跟着是2字节的长度字段和1字节的类型字段。图2.6表示了BGP报文报头的基本格式。

0 7 15 23 31

标记

长度 类型

图2.6 BGP报文头格式

报头后面接或不接数据部分都可以,这要依据报文的类型而定,例如DEEPALIVE报文,只需要报文报头,没有跟着的数据。标记字段可以用来鉴别进入的BGP报文或者检测两个BGP对等体间同步的丢失。标记字段可有两种格式:

·如果报文类型是OPEN或者这个OPEN报文没有鉴别信息,标记字段必须全为“1”。

·否则,标记字段会基于所使用的鉴别技术的一部分被计算。

长度表示整个BGP报文包括报头的长度。最短的BGP报文不会小于19字节(16+2+1),不会大于4 096字节。

类型表示了报文的类型,有以下几种可能: ·OPEN ·UPDATE

·NOTIFICATION ·KEEPALIVE

1.7. EGP

1.7.1. 给体系结构模型增加复杂性

原始的核心路由器系统在Internet网仅有一个主干网的那段时期得到了发展。提出核心体系结构的部分动机就是提供局域网与主干网的连接。如果一个互连网络仅由一个主干网以及与之相连的局域网组成,就不需要更进一步的结构。每个路由器知道与自己相连的唯一的本地网络,通过在主干网上与其他路由器通信也能知道其他网络的情况。不幸的是,除非互连网络的范围很小,让所有的路由器直接参与选路更新协议的能力就显得不足。第一、即使每个连接到这个互连网络

培训教材-路由器 27

培训教材-路由器

上的网点仅有一个本地网络,核心体系结构也是不合适的因为它不能扩展到能适应任意数量的网点。第二、许多网点使用多个局域网,并用多个路由器相互连接。由于一个核心路由器在每一个网点上与一个网络相连,核心路由器就知道那个网点中的一个网络的情况。第三、一个大型的互连网络是把独立管理的网络群互连起来的。选路体系结构必须为每个群提供独立的控制进行选路和接入。 1.7.2. 一个其本思想:额外跳

由一个或多个主干网组成的互连网络体系结构,这些主干网被一个核心路由器所包围。我们考虑到把核心系统当做一个集中式选路机制,那些非核心路由的路由器可以把数据报交给核心系统来投递。不能随意地扩展一个单独的主干网。在互连网中的核心路由器比网络少,因此必须改变关于核心体系结构的观念,否则选路将得不到最佳。为了说明为什么是这样,图例3.1:

图3.1 额外跳的问题。连接到主干网的非核心路由器 必须从核心路由器获得路由知识以便优化选路

图中核心路由器R1和R2相应地与局域网1和2连接。它们之间可以交换选路信息,所以它们都知道怎样到达这两个网络。假设非核心路由器R3把核心路由器当做一个投递系统,并选择其中一个核心路由器,如R1便把所有发给不直接相连的网络上的数据报,都送交这个路由器由它来转发。现在R3把发给网络2的数据报,通过主干网送到所选的核心路由器R1,R1接着就必须将此数据报通过主干网送到R2。当然,传输的最佳路由是R3把发给网络2的数据报直接送给R2。请注意,选择哪个核心路由器并不重要。只有在所选择的核心路由器正好与数据报要发给的网络直接相连时才能得到最佳解,其他情况都要通过主干网路由器转发,因此在路由中就增加了一个额外跳(extra hop)。同时还要注意到,核心路由器不能用ICMP重定向报文来通知R3其路由有错,因为ICMP重定向报文只能发到初始源站而不是发到中间的路由器。

我们把图3.1中选路的反常现象称为额外跳的问题。要解决这个问题需要改变我们关于核心体系结构的观念:若把核心系统当做一个中央路由器,则对于大多数的通信流量会引起额外跳的问题。需要建立一个机制,它允许非核心路由器从核心路由器处得到路由信息,以便选择最佳的主干网路由。

允许一个网点拥有多个网络和路由器,就意味着核心系统将不能与所有网络直接相连,因而需要增加一个机制使得核心系统能得到不与之直接相连的网络的信

培训教材-路由器 28

本地网1 R1 核心路由器 R3 非核心路由器 主干网络 R2 核心路由器 本地网2 培训教材-路由器

息。例如图3.2中的网络和路由器集合就不直接连到核心系统。我们可以把这种情况想像成一个公司或大学内部的网络进行互连,每个网络与一栋大楼或一个部门对应。

主干网络 R1 1 本地网1 R2 本地网2 R3 本地网3 R4 本地网4

图3.2 多个网络和路由器与单个主干网相连的例子。需

要一个机制把附加的这些本地网络的可达信息送给核心系统

假设该网点刚刚安装了本地网络4并获得其互连网络地址。设路由器R2,R3和R4拥有全部四个本地网络的路由信息,并假定默认路由是把所有其他的通信量送到核心路由器R1。直接与本地网络4相连的主机相互之间可以通信,在该网络上的其他路由器可以把分组送给其他主干网网点。但是由于路由器R1仅仅与本地网络1相连,它并不知道本地网络4的情况。那么从核心系统的角度来说,本地网络4是被本地网络1隐藏起来了。下面这一点很重要:

由于单个网点可以具有任意复杂的结构,核心系统不可能与所有的网络相连。需要一个机制让非核心的路由器把隐藏的网络的情况通知给核心系统。

请记住,除了要把隐藏网络的信息提供给核心系统,我们还需要允许非核心路由器从核心路由器处得到选路信息的机制。在理论上,一个机制应能解决这两个问题。建立这样的机制是很复杂的。敏感的问题就是职责和能力。到底由谁负责通知核心系统?如果我们决定让某个路由器去通知核心系统,那么谁有能力办到呢?再研究刚才举的这个例子。路由器R4是距本地网络4最近的路由器,但是它距最近的核心路由器还有2跳。因此R4必须依赖R3才能对发到网络4的分组选路,即R4不能仅靠自己来保证本地网络的可达性。路由器R3到核心路由器还有1跳,它可以负责分组的传送,但是它并不与本地网络4直接相连。所以让R3负责检测网络4的可达性也不行。要解决这个两难问题就需要引入新的概念。下面将研究这一概念以及建立在此概念的一个协议。

培训教材-路由器 29

培训教材-路由器

1.7.3. 自治系统的概念

应该由哪个路由器负责与核心系统进行可达信息的通信呢?这个难题是来自于我们仅仅考虑了互连网络选路体系结构而没有考虑管理机构的作用。在主干网的网点可以具有复杂的本地结构的情况下,像图3.2中那样的网络互连不应该看作多个独立的网络,而应看作一个独立的组织,那些网络处于这个组织的控制之下。由于这些网络和路由器都在单独的管理机构控制之下,这个机构就要负责保证其内部的路由信息的一致性和可用性。另外,管理机构还要选择其内部的一台机器负责向外界提供网络的可达信息。在图3.2的例子中,由于路由器R2、R3和R4处于同一管理机构的控制之下,管理机构指定R3来通告网络2、3、4的可达信息(我们认为核心系统早就知道网络1的情况,因为有一个核心路由器直接与之相连)。

从选路的角度来说,处于一个管理机构控制之下的网络和路由器群组称为一个自治系统(autonomous system)。在一个自治系统内的路由器可以自由地选择寻找路由、广播路由、确认路由以及检测路由的一致性的机制。在这样的定义下,核心路由器自己也构成一个自治系统。我们说过原先的Internet网的核心路由器使用GGP来进行通信,而后来改为使用SPREAD。这个改变并不影响其他的自治系统。

自治系统的思想在概念上说是图3.2中描述的那种体系结构的直接而自然的派生物,只需把局域网换成自治系统即可。图3.3表述了这个思想。

主干网络 R1 R2 R3 自治 系统1 自治 系统2 自治 系统3

图3.3 自治系统与主干网相连的互连网络体系

结构。每个自治系统包括处于一个机构管

理之下的多个网络以及路由器

为了能通过Internet到达隐藏在自治系统中的网络,每个自治系统必须把自己的网络可达信息传播给其他自治。虽然在核心体系结构中可以把路由通告送给任一个自治系统,但是每个自治系统有必要把自己的信息传送给某个核心路由器。有可能存在若干路由器,每个负责通知一个网络子集合。

我们对自治系统的定义可能有点含糊不清,但是在实践中自治系统之间的划分

培训教材-路由器 30

培训教材-路由器

必须区分严格,以便于使用自动选路算法。例如,一个自治系统属于某个公司,它可能不会选择这样的路由,把分组转发到与之直接相连的但属于另一个公司的某个自治系统。为了让自动选路算法能区分各个自治系统,各自治系统被赋予一个自治系统编号(autonomous system number),该编号由负责赋予Internet网络地址的集中式管理机构分发。当两个路由器交换网络可达信息时,报文中要携带该路由器代表的自治系统的编号。

对上述思想总结如下:

一个大型的TCP/IP互连网络有一个附加的结构来适应管理的界限:每个由一个机构管理的网络和路由器的集合称为一个自治系统。一个自治系统可自由地选择其内部的选路体系结构,但是必须收集其内部所有的网络的信息,并责成若干个路由器把这些可达信息送给其他的自治系统。由于Internet使用核心体系结构,每个与之相连的自治系统都要把可达信息送到Internet核心路由器。 1.7.4. 外部网关协议(EGP)

两个交换选路信息的路由器若分属两个自治系统,则被称为外部邻站(exterior neighbors),但它们若同属一个自治系统,则称为内部邻站(interior neighbors)。外部邻站使用的向其他自治系统通告可达信息的协议被称为外部网关协议EGP(Exterior Gateway Protocol),使用该协议的路由器被称为外部路由器(exterior router)。在Internet网中,EGP显得尤为重要,因为与之相连的自治系统使用它向核心系统通告可达信息。

图3.4显示了两个外部邻让使用EGP的情况。路由器R1收集了自治系统1中的网络信息,使用EGP把这些信息通告给路由器R2,与此同时,路由器R2也通告了自治系统2的信息。

EGP 自治系统1 自治系统2 R1 R2

3.4 对两个外部路由器R1和R2收集到所在的自治系

统中的网络信息后,使用EGP来通告这些信息的过程的概念性说明。正如其名字“外部”的含义那样,

外部路由器通常接近自治系统的外围边界

EGP有三大功能。第一个是它支持邻居获取(neighbor acquisition)机制,

培训教材-路由器 31

培训教材-路由器

即允许一个路由器请求另一个路由器同意交换可达信息。我们可以说,一个路由器获得了(acquire)一个EGP对等路由器(EGP peer)或一个EGP邻站(EGP neighbor)。EGP对等路由器仅在交换选路信息的意义上来说是邻站,而不论其地理位置是否邻近。第二,路由器持续地测试其EGP邻站是否能够响应。每三,EGP邻站周期性地传送选路更新报文(routing update message)来交换网络可达信息。

1.7.5. EGP报文首部

为了实现上述三个基本功能,EGP定义了下表所列的九种报文类型:

EGP报文类型 描 述

Acquisition Request(获取请求) 请求路由器成为邻站(对等路由器) Acquisition Confirm(获取证实) 对获取请求的肯定响应 Acquisition Refuse(获取拒绝) 对获取请求的否定响应 Cease Request(中止请求) 请求中止邻站关系 Cease Confirm(中止证实) 对中止请求的证实响应 Hello(你好) 请求邻站回答是否活跃 I Heard You(我听见你) 对Hello报文的回答 Poll Request(轮询请求) 请求更新网络的选路 Routing Update(选路更新) 网络可达信息 Error(差错) 对不正确报文的响应

所有的EGP报文都有固定的首都用于说明报文类型。图3.5给出了EGP首部的格式。

0 8 16 31 版本 类型 代码 状态 校验和 序号 自治系统编号 图3.5 所有EGP报文的固定首部

首部中的版本(VERSION)字段取整数值,指出该报文使用的EGP的版本号。

接收方检测版本号以确认双方使用相同版本的协议。类型(TYPE)字段指出报文的类型,而代码(CODE)字段给出了子类型。状态(STATUS)字段包含了与本报文有关的状态信息。

EGP使用校验和字段来确认报文的正确到达。其算法与IP的校验和算法相同。它把整个EGP报文当做16比特整数的序列,使用各个整数的二进制反码和的二进制反码作为校验和。计算校验和之前把校验和(CHECKSUM)字段初始化为零,通过填充0来把报文长度变为16比特的整数倍。

培训教材-路由器 32

培训教材-路由器

自治系统号(AUTONOMOUS SYSTEM NUM)字段给出了表示发送该报文的路由器所在的自治系统的编号,而序号(SEQUENCE NUMBER)用于收发双方进行联系。路由器请求邻站时赋一个初始序号,以后每次发送报文时将序号增加。邻站回送最近收到的序号值,发送方便用这个回送值与发送时的值作一比较来确保报文的正确性。

1.7.6. EGP邻站获取报文

路由器通过发送邻站获取(neighbor acquisition)报文来和另一个路由器建立EGP通信。请注意,EGP并未规定选择邻站的原则和具体方式。我们认为应该由管理该路由器的机构而不是由协议软件来作出这个选择。

除了标准首部的序号字段之外,邻站获取报文还包括了一个初始时间间隔值,在每隔一段时间就去监测邻站是否在使用中(该时间间隔称为Hello间隔),报文中还包括了轮询间隔(polling interval),它用于控制路由更新的最高频率。发送方提供一个轮询间隔n,即告诉接收方每秒钟最多轮询n次。发送方最初可以随着时间动态地改变轮询间隔。此外,对等路由器所使用的轮询间隔可能是不对称的,可以允许某个对等路由器以更快的频率进行轮询。图3.6给出了邻站获取报文及其响应的格式。

0 版本 8 类型(3) 校验和 序号 轮询间隔 16 24 代码(0-4) 31 状态 自治系统编号 HELLO间隔 图3.6 EGP邻站获取报文的格式。首部以外的字段指定了协议使用的初始参数 下表给出了代码(CODE)字段与报文类型的对应关系:

代码 0 1 2 3 4

描 述

Acquisition Request(获取请求) Acquisition Confirm(获取证实) Acquisition Refuse(获取拒绝) Cease Request(中止请求) Cease Confirm(中止证实)

1.7.7. EGP邻站可达性报文

EGP有两种测试邻站是否活跃的方式。一种是主动方式,路由器周期性地发送轮询报文和Hello报文并等待邻站的回答。另一种是被动方式,路由器依靠其邻站向其发送Hello报文或轮询报文(被动地等待)。按照被动方式工作的路由器使用可达报文中的状态字段来判断其对等是否活跃,以及其对等是否知道它是活跃

培训教材-路由器 33

培训教材-路由器

的。通常一对邻站都采用主动方式对对等进行检测。

把邻站可达性的计算与路由信息的交换分离开来是十分重要的,它可以降低网络负载。由于网络选路信息并不像单个路由器的状态那样频频变化,所以没必要经常传输选路信息。因此,把这两种检测分开之后,可以以最小的计算负荷和通信负载去经常地检测邻站状态。图3.7显示了仅仅由EGP报文的标准首部构成的邻站可达性请求。

0 8 16 31 版本 类型 (5) 代码 (0或) 状态 校验和 序号 自治系统编号 图3.7 EGP邻站可达性请求报文的格式。代码字段取0

表示这是Hello请求报文,代码字段取1表示I Hear You回答报文

由于Hello报文和I Hear You报文都可能丢失,EGP就使用n中取k原则来判断对等路由器的状态是否从“正常”(up)转为“故障”(down)。理解该算法最好的方法,就是设想一个路由器连续地发送Hello报文并接收I Hear You报文,同时建立一个窗口记录最近n次报文的交互情况。当最近的n次交互中,必须至少发生k次故障之后,路由器才把邻站的状态置为故障,而一旦邻站宣布处于故障状态,那么必须至少要正常交互j次,才能宣布邻站状态为正常。协议标准建议的j和k的值包含这样的意思:在EGP宣布对等路由器为故障(正常)状态之前,应出现两个连续的报文丢失(收到)。

引入j和k带来的迟滞现象对EGP的整体性能有重大影响。和其他选路算法一样,EGP不应传播不必要的路由变更信息。原因很简单:路由器把这个变更传播到等路由器后,变化并不会停止。而对等路由器会把这个变更传播给其他路由器。当EGP对等使用矢量距离算法来传播更新的路由信息时,尽量减少迅速改变的路由变化就显得特别重要,这是因为这种持续变化会使矢量距离算法变得不稳定。因此,如外部路由器在每次报文丢失的情况下就发出可达信息发生变化的报知,那么就会使选路系统处于持续的变迁之中。 1.7.8. EGP轮询请求报文

路由器使用EGP轮询请求(poll request)和轮询响应(poll request)报文获得网络可达信息。图3.8给出了报文的格式。IP源网络(IP SOURCE NE TWORK)字段说明了一个与这两个路由器都相连的网络,并且这个网络是两个自治系统所共有的。而响应报文含有一些路由,其距离是以这个指定的IP源网络上的路由器为参照来计算的。

0

8

16

24

31

培训教材-路由器 34

培训教材-路由器

版本 类型(2) 校验和 序号 代码(0或1) 保留 状态 自治系统编号 IP源网络 图3.8 EGP轮询报文格式。代码为0表示

Hello请求报文,代码为1表示I Hear You回答报文

要想理解为什么EGP使用轮询请求来指定源网络,这可能有点困难。之所以这样作有两个原因。首先我们知道,路由器可以与两个或更多的物理网络相连。如果运行在该路由器上的应用软件使用EGP,那么这个应用软件可能并不知道EGP请求报文会到达哪个网络接口。因此,它也就不知道这个请求报文是发给哪个网络的。其次,运行EGP的路由器经常要收集整个自治系统的信息。在传播网络可达信息时,外部路由器向邻站发送一个序偶集合,每个序偶指出在自治系统内的一个目的网络以及到达该网络所要路经的路由器。显然,到达目的网络所要经过的路由器,取决于进入自治系统的通信流量。在轮询请求报文中提到的源网络指定了分组进入自治系统的入口。图3.9给出了使用基于自治系统之间共有的网络来传播网络可达信息的示意图。

EGP使用的 共有的网络 G1 G2 图3.9 两个自治系统中的路由器使用EGP进行网络可达信息的

通信。可到达性报文指出了两个所共有的网络上的路由器,

以及通过这些路由器所能到达的目的站

1.7.9. EGP选路更新报文

外部路由器发送选路更新报文,将可达网络的信息传送给它的EGP邻站。通常,外部路由器收集这些信息,并使它们能被其他自治系统中的路由器使用。在原理上,运行EGP的路由器可以向其对等路由器报告两类可达信息。第一种是由该路由器所在的自治系统中所有目的网络构成的。第二种是由该路由器所知道的、位于其自治系统之外的目的网络构成的。

培训教材-路由器 35

培训教材-路由器

EGP不允许一个任意的路由器通告到一个任意的目的网络的可达性。了解这一点很重要。对路由器通告的网络的信息有一个严格的限制,通告的信息仅限于该路由器所在的自治系统内部的目的网络。即:

EGP限制一个(非核心)路由器仅仅通告那些完全可以从该自治系统内部到达的网络。

这个原则(又叫作EGP第三方限制(EGP third party restriction))的意图在于控制选路信息的传播,并且允许每个自治系统能选择它自己通告可达性的具体方式。例如,每个大学校园构成一个自治系统,某个校园中的路由器收集该大学中的网络的信息,并向提供Internet连接的系统通告这些信息,但是不能提供到其他大学的网络的路由。第三方限制原则显然并不适用于对核心系统的通告。 图3.9给出了选路更新报文的格式。标有 # INT.GWYS和 # EXY.GWYS的字段给出了在本报文中出现的内部路由器和外部路由器的编号。区分内部和外部路由器有助于接收方知道距离值是否具有可比性。不幸的是,不可能仅靠路由器的地址来进行判别,而报文格式中又不提供其他信息。实际上EGP软件通过分别针对内部和外部路由器进行通告来解决这个问题。标有IP源网络(IP SOURCE NETWORK)字段指出了度量可达性的基准网络。

0 版本 8 类型(1) 校验和 序号 IP源网络 路由器的IP地址(无网络前缀) 距离组数 距离D11 在距离D11的网络数 在距离D11的网络数1 16 代码(0) 内部路由器数 24 状态 外部路由器数 31 自治系统编号 在距离D11的网络数2 ··· 距离D12 在距离D12的网络数1 在距离D12的网络数2 ··· 路由器的IP地址(无网络前缀) 距离组数 距离 在距离Dn1的网络数 在距离Dn1的网络1 在距离Dn1的网络2 培训教材-路由器 36

培训教材-路由器

··· 路由器N的最后一个距离的最后一个网络 图3.10 EGP选路更新报文的格式。给出的所有路由都是

对一个特定的网络。报文列出了在那个网络上的一些路由器,以及通过每个路由器到目的站的距离。一个网络地址长度为1个,2个,或3个八位组

从某种意义来说,EGP选路更新报文是GGP选路更新报文的推广,因为它们能适应多个而不是单个的路由器。因此,在选路更新报文中IP源网络(IP SOURCE NETWORK)字段以后的字段构成了一个块序列,每个块给出了对于源网络上的某个路由器的可达信息。块的开始部分是一个路由器的IP地址。从这个路由器可达的网络和该路由的距离排列在一起。和GGP一样,EGP把网络按照其距离分成若干群组。对于每个距离值,给出一个网络数目,再列出相应的网络地址。列出给定距离上的所有网络之后,继续对下一个距离值使用这个模型,直到穷尽所有的距离值。

1.7.10. 从接收者的角度来度量

与多数传播选路信息的协议不同的是,EGP不通告自己到达目的的网络的费用。它是从共有的源网络来度量距离的,这样从对等路由器的角度来说,所有的距离就都是准确的。图3.11阐述了这个思想:

在图3.11给出的例子中,路由器R2代表自治系统来运行EGP。它必须报告到网络1至4的可达性。它报告:可通过R1到达网络1,可通过R3到达网络3和4,而可通过R2到达网络2。从R2的角度来看,到网络2的距离是0,但是它通告的网络2的距离是1,这是从源网络的角度来度量的值。 至其他自治系统中的邻站 源网络 R1 R2 运行 R3 网络2 网络1 网络3 R4 网络4 培训教材-路由器 37

培训教材-路由器

3.11 一个自治系统的举例。路由器R2运行EGP,

根据源网络而不是自己的选路表来通告距离值

1.7.11. EGP的主要限制

我们已看到EGP对路由器进行了限制,只允许它们通告那些完全可以在该路由器所在的自治系统内部到达的目的网络的信息。然而EGP还使用了一个更为基础的限制:

EGP不对出现在选路更新报文中的任何距离值的标准进行解释。

这个规则规定了距离值为255意味着该网络不可达,但是其他的值只是在分别代表同一个自治系统中的路由的时候具有比较的意义。在本质上,EGP使用距离字段只是为了指出一个路径是否存在,根据距离值不能判断两个不在同一个自治系统中的路由之间哪个会较短一些。

为什么自治系统中的路由器不能通告到另一个自治系统中的网络的可达信息(这也就是提出第三方限制原则的理由)。问题的本质现象就是:当一个路由器知道了另一个自治系统中的网络之后,它并没有得到具有统一标准的距离值。因此,这个路由器就不能将这种距离值传递下去。使用EGP通告路由就等于说:“本自治系统提供到这个网络的具体路径(the path)”而不能说是:“本自治系统提供到这个网络一条可能的路径(one possible path)”。

对距离的另一种解释让我们认识到EGP不能被当成是一个选路算法。特别是,即使一个路由器知道了到同一个网络的两个不同的路由,它也不能决定哪条路由更短。由于没用选路信息。我们必须谨慎地只通告这些路由,即我们希望通信流量沿着这些路由传播。这样,从核心路由器到任意一个网络都仅有一条路由。可归纳如下:

由于EGP仅仅传播可达信息,它把使用EGP的互连网络的拓扑结构都限定为以核心系统为根的树型结构;在与核心系统相连的其他自治系统中,没有回路。

这里有一个关键点,即:使用EGP提供在若干自治系统之间选择路由的任何互连网络,其拓扑结构都是树型的,其中核心系统构成了树的根。

对EGP的限制是必须有树型结构的互连网。这一点部分来源于历史的演变,即Internet是围绕一个主干网发展的。虽然这些限制是无害的,它们不是具有几个惊人的结果:

1. 如果核心路由器系统出故障,则全局的连通性即受到损害。虽然

不太可能出现整个Internet核心同时出故障的情况,但是范围较小的故障曾经是有过的例子。特别是,当Internet网络迅速增长而使得某些核心路由器中的选路表出现溢出时EGP就不能有效地为新网络安装初始化路由。这些网络的地址没有登记到核心路由表中,所以Internet中的许多网点就不能访问这些网络。

培训教材-路由器 38

培训教材-路由器

2. 对于每个网络EGP仅仅通告一条路径。在登记路由之后,从自治

系统到另一个自治系统的所有流量,不论实际上这两者之间是否有多个物理连接,都通过一条路由传输。同时请注意所有流出自治系统的流量,不管源系统是通过多少路径把它们送出来的,都只能使用一条返回路径。这就造成了一对通信的机器的时延和吞吐率可能不对称,使得监测互连网络以及排错都较为困难。

3. EGP不支持任意自治系统之间的路由器分担负载的技术。如果两

个自治系统之间实际上有多个路由器连接,人们可能会希望在所有这些路由器之间分担通信流量。EGP允许自治系统通过划分网络来分担通信流量(例如,自治系统把网络划分为多个网络子集,并让多个路由器通告这种划分),但是它不提供更一般的负载分担措施。

4. 作为第3点的特例,EGP不适于在多个主干网经多点互连的体系

结构下优化选路。要优化选路就不能仅仅使用EGP交换选路信息,而是应该由管理者人工地划分NSFNET,为这些网络子集通告不同的路由。

5. 如果一条路径失效,难以切换到另一条路径,尤其在路径要穿过

两个甚至更多自治系统的情况下更是如此。由于EGP对距离值不作解释,第三方不能通告路由和倚靠接收方切换到备用路由,而选择最小费用路由的任务就由进行通告可达性的外部路由器来完成。

培训教材-路由器 39

本文来源:https://www.bwwdw.com/article/i10.html

Top