文档库 最新最全的文档下载
当前位置:文档库 › OSPF协议详解分析

OSPF协议详解分析

OSPF 学习笔记

OSPF 协议号是89,也就是说在ip 包的protocol 中是89,用ip 包来传送

数据包格式:

在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-定义整个数据包的长度。

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

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

的OSPF 区域。

* Checksum-校验位,用于标记数据包在传递时有无误码。

* Authentication type-定义OSPF 验证类型。

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

FDDI 或快速以太网的Cost 为1,2M 串行链路的Cost 为48,10M 以太网的Cost 为10 等。

所有路由器会通过一种被称为刷新(Flooding)的方法来交换链路状态数据。Flooding 是指路由器将其LSA 数据包传送给所有与其相邻的OSPF 路由器,相邻路由器根据其接收到的链路状态信息

更新自己的数据库,并将该链路状态信息转送给与其相邻的路由器,直至稳定的一个过程。当路由

器有了一个完整的链路状态数据库时,它就准备好要创建它的路由表以便能够转发数据流。CISCO 路由器上缺省的开销度量是基于网络介质的带宽。要计算到达目的地的最低开销,链路状态型路由选择协议(比如OSPF)采用Dijkstra 算法,OSPF 路由表中最多保存 6 条等开销路由条目以进行负

载均衡,可以通过"maximum-paths" 进行配置。如果链路上出现fapping 翻转,就会使路由器不停

的计算一个新的路由表,就可能导致路由器不能收敛。路由器要重新计算客观存它的路由表之前先

等一段落时间,缺省值为 5 秒。在CISCO 配置命令中"timers spf spf-delay spy-holdtime" 可以对两次连续SPF 计算之间的最短时间(缺省值10 秒)进配置。

路由器初始化时Hello 包是用224.0.0.5 广播给域内所有OSPF 路由器,选出DR 后在用224.0.0.6 和DR,BDR 建立邻接。DR 用224.0.0.5 广播给DRother LSA BDR 也是

DRother 用224.0.0.6 广播LSA 给DR 和BDR

DR 是在一个以太网段内选举出来的,如果一个路由器有多个以太网段那么将会有多个

DR 选举;DR 的选择是通过OSPF 的Hello 数据包来完成的,在OSPF 路由协议初始化的过程中,会通过Hello 数据包在一个广播性网段上选出一个ID 最大的路由器作为指定

路由器DR(如果设置优先级的话那么首先看优先级,优先级为0 不参加选举)并且选出ID 次大的路由器作为备份指定路由器BDR,BDR 在DR 发生故障后能自动替代DR 的所有工作然后重新选择BDR 。当一个网段上的DR 和BDR 选择产生后,该网段上的其余所有

路由器都只与DR 及BDR 建立

相邻关系。见下图

DR 的选举过程:这里可以以选举村长为例

选举的时候用Hello 包中的DR 字节来标识,开始的时候都是标识的自己,一旦选举出一个DR 来那么即使后来再有优先级更高的进来也不重新选举(因为一旦重新选举那么所有的邻接关系都要重新建立)

OSPF 启动的过程:

down

init 发送Hello(224.0.0.5)DR 字段为全零(因为还没有选出DR),单通状态,我能收到对端的Hello 报文,但对方没有收到我的报

文,怎么知道对端有没有收到我的报文呢,通过Neighbors Seen

2way 2 个OSPF 路由器从Hello 中发现互相的router id(本地路由器最大

ip,一般是loopback)建立邻接

在这个阶段已经知道谁是DR 了

exstart 预启动状态,OSPF 路由器建立主从关系(看谁的routerid 大)然后

协商一个序列号(因为ip 是不可靠的传输采用确认+超时重传

就可以)准备传送,头两个DD 报文为空,不包含LSA 的数据Router 1:

DD seq=x,I=1,M=1,MS=1

I 是第一个报文

M 是more 表示还有后续报文

MS 是表示Router 1 是Master

Router 2:

DD seq=y,I=1,M=1,MS=1

I 是第一个报文

M 是more 表示还有后续报文

MS 是表示Router 2 是Master

究竟谁是master 呢,就会选一个router id 大的作为

master

谁当了master 序列号就用谁生成的那个数,在这里应该

是Router 2 的y

exchange 和DR 开始交换数据,master 先发送lsdb 报文,此报文只是一个

index(如同一本书的目录)不包含实际的路由数据,slave 也发

送报文,看谁的序列号高,序列高的数据新,相邻路由器可以根

据数据库描述数据包的序列号与自身数据库的数据作比较,若发

现接收到的数据比数据库内的数据序列号大,则相邻路由器会针

对序列号较大的数据发出请求,并用请求得到的数据来更新其链

路状态数据库。

Router 1 先发送DD 报文序列号用master 的并且MS 字段为0

RouteR2 回应报文把序列号加 1 表示已经收到了刚才的DD 报文

且也包含自己的DD 报文,下一个Router 1 的DD 报文还用y+1

来表示因为slave 无权把序列号加1。如果DD 报文中的M=0

那么表示DD 报文发送结束

loading 装入状态,如果新加入的路由器的从DD 报文中看出那个是自己

需要的路由数据,则发送lsr 报文,请求发送数据,对端发送LSU

报文,此报文包含所需的全部数据。

full 收到LSU 报文后发送确认,完成充满状态。

Hello 包TTL 值是1,在以太网中每10 秒发送一次,而且不穿过路由器,通常OSPF 协

议报文的TTL 都是1(虚连接除外)link status 包flood 整个area (麦子说flood 是由区域内所有路由器接力完成)一个DD 报文可以含有很多个LSA 的头部信息从init――――loading 是路由器第一次交换信息的时候才出现,到了full 以后如果在有路由变化那么就只发送LSU

邻居状态机(灰色为可以长期存在的状态,白颜色为短暂状态)2-way 为2 个DRother 之间可以有这种状态

OSPF 五种协议报文:

LSA 类型

type 1 又被称为路由器链路信息数据包(Router Link),所有的OSPF 路由器都会产生这种数据包,用于描述路由器上联接到某一个区域的链路或是某一端口的状态信息。

路由器链路信息数据包只会在某一个特定的区域内广播,而不会广播至其它的区域。在

类型1 的链路数据包中,OSPF 路由器通过对数据包中某些特定数据位的设定,告诉其

余的路由器自身是一个区域边界路由器或是一个AS 边界路由器。并且,类型 1 的链路状态数据包在描述其所联接的链路时,会根据各链路所联接的网络类型对各链路打上链

路标识,Link ID 。表一列出了常见的链路类型及链路标识。

相邻路由器的路由器标

1 用于描述点对点的网络

2 用于描述至一个广播性网络的链路DR 的端口地址

3 用于描述至非穿透网络,即stub 网络的链路stub 网络的网络号码

相邻路由器的路由器标

4 用于描述虚拟链路

链路类型3(1 对0 或者Stub 网络)的链路状态描述――link id10.0.0.0 / 网段/

data:255.0.0.0 / 掩码

type:StubNet (3) / 类型/

metric:50 /度量/

链路类型1(点对点)的链路状态描述,首先要描述一下接口的路由信息:link

id:20.0.0.0 / 网段/ data:255.0.0.0 /掩码/

type:StubNet(3) / 类型/ 此处还是3,因为ppp 类型分成2 部分,首先把它想象成一

个1:0 也就是类型3 的网络这么做是为了描述接口的路由,

20.0.0.0,第二步在描述对端连接的那台路由器

metric:5 /度量值/

对对端路由器的描述:

link id:2.2.2.2 / 对端RouterID/

data:20.0.0.2 /对端路由器的接口地址/

type:Router (1) /类型/

metric:5

对帧中继(点对多点)链路状态的描述:首先也是先描述接口网段的路由

link id:40.0.0.1 /网段/ 描述的是自己的接口地址,不是网段

data: 255.255.255.255 / 掩码/ type:StubNet(3) /类型/ 此

处还是描述成1 对0 的网段metric: 5 /度量值/

link id: 3.3.3.3 /对端routerF 的id/ 因为是连接多点的,所以有多段描述

data:40.0.0.1 /与router F 相连的接口地址/ type:Router(1) / 类型/ metric:5 /

度量值/

link id:4.4.4.4 /对端routerE 的id/

data:40.0.0.1 /与router E 相连的接口地址/ 此处描述的是routerA 的接口地址,并

不是Router E 的接口地址,没关系因为

点对多点连接的接口地址都在一个子网

type:Router(1) /类型/

metric:5 /度量值/

对广播型网络链路状态的描述:不描述接口网段的路由了

link id:30.0.0.3 /网络中DR 的接口地址/ data:30.0.0.1 /本接口的地址/

type:TransNet(2) /类型/ metric:50 /花费/ 每个路由器只生成这些信息,缺少的信息有DR 补齐,这样会节省很多的描述信息,如果不是的话假如这里有100 台路由器那么得生成100 段描述信息。

DR 会单独生成一条(也就是说不管DRother 有多少条)LSA(type 2)描述掩码和这个网段中有那些路由器/DR(6.6.6.6) 生成的LSA/ Net mask:255.255.255.0 Attached 30.0.0.1 router Attached 30.0.0.2 router Attached 30.0.0.3 router

以上的这些描述信息还要加上LSA 的头(head)type:Router /LSA 的类

型/ 此处的Router 表示是LSA 类型1 ls id:1.1.1.1 /LSA 的标识/ adv

rtr: 1.1.1.1 /生成该LSA 的路由器/ 表示这条LSA 是谁生成的ls

age:4 /本条LSA 的老化时间/ 每隔1 秒这个数字会涨1 len: 108 /LSA

的长度/ seq#:80000001 /LSA 序列号/link count:7 /本LSA 中包含的

连接个数/

此时RouterA 路由器完成自己周边链路状态的描述

flood 完lsdb 后就要用spf 生成路由表了,见下图:(以Router A 为例)

首先每个路由器都已自己为根计算路由,以Router a 为例它把每一个LSA 打开,分析每一段,碰到StubNet 这种类型的LSA 就知道这是描述的一条网段路由,于是就直接加

到路由表中比如上图中的10.0.0.0 和20.0.0.0 就直接加到路由表中不过这两条是本

路由器直接相连的网段所以意义不大,那么看第三段,这段描述的是一个点对点的类型,路由器看到这段就会先停止计算,它会去找RouterB 生成的LSA(因为这段描述的到router b 的点对点连接)因为每个LSA 都有router id(adv id)路由器就会以 2.2.2.2 为关键字检索就会找到router b 的LSA,找到以后在打开看它有什么信息,router b 中有一个直连网段50.0.0.0 ,这个网段对于router a 是未知的,所以就加入路由表中下一跳就指向20.0.0.2( 因为此LSA 是Router b 告诉我的)Metric 值相加50+5=55,这样这条路由就完全加入到路由表中了。如果Router B 的LSA 中还连着一个Router W,那么路由器还继续去找Router W 的LSA 找到后在继续算Router w 的路由(因为是RouterB 连接的RouterW 下一跳还是RouterB,Metric 在相加)。RouterA 通过递归和回朔算完所有的LSA 的路由,所有的路由都是从每个router LSA 的StubNet 这种网络中得出路由的,因为StubNet 才是描述接口网段的路由,才是我们最终需要的路由信息,那么Type:Router 只是描述的是下一跳地址。每台路由器都有义务描述自己周边的链

路状态(包括自己直连的路由器)见上图

每台路由器把周边的链路状态都发送到整个area ,这样,所有的路由器都存有一张同

样的lsdb 信息,在由这个库算出来spf 路由。

当一台路由器的连接的某一个网段发生故障,那么就会产生一个LSA 在flood 到整个区域,所有的路由器都要在计算一边spf 路由,因为路由器不知道这条LSA 会影响那个路由,所以要重新把所有的lsdb 重新计算一遍,耗时并且占cpu 。

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

DR 只有在与至少一个路由器建立相邻关系后才会产生网络链路信息数据包,在该数据

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

type 3 4 类型3 和类型4 的链路状态广播在OSPF 路由协议中又称为总结链路信息

数据包(Summary Link),该链路状态广播是由区域边界路由器或AS 边界路由器产生的。Summary Link 描述的是到某一个区域外部的路由信息,这一个目的地地址必须是

同一个AS 中。Summary Link 也只会在某一个特定的区域内广播。类型 3 与类型4 两种总结性链路信息的区别在于,类型 3 是由区域边界路由器产生的,用于描述到同一个AS 中不同区域之间的链路状态;而类型 4 是由AS 边界路由器产生的,用于描述不同AS 的链路状态信息。

Type 3 类型的特点是每一条type 3 的LSA 都对应一条路由

值得一提的是,只有类型 3 的Summary L ink 才能广播进一个残域,因为在一个残域中不允许存

在AS 边界路由器。残域的区域边界路由器产生一条默认的Summary Link 对域内广播,从而在其余

路由器上产生一条默认路由信息。采用Summary L ink 可以减小残域中路由器的链路状态数据库的大

小,进而减少对路由器资源的利用,提高路由器的运算速度。

abr 会把各端口所属的各个区域的LSA type 1 阻断,如:type:Router(1)的LSA

那上图中area3 如何知道area 0 中的路由呢,abr 会把area 0 中所有的路由信息,比如有100 条路由,会以100 条type 3 类型的LSA 发送到area 3 中并且下一跳是abr 本身。这样可以减少LSA 的容量,如果area 0 中有一条路由down 了,那么在area3 中直接可以把这条路由删掉就可以了,

不用像以前那样重新计算

在区域间的路由器上不再描述链路状态而是采用dv 算法

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

1:把外部进来的路由传进来cost 在area 中要叠加的(一般情况)

2:进来的时候cost 是多少那么就一直是多少,不管经过多少路由器(负载均衡时用)

type 4 类型只是描述如何到达asbr,见上图网段写的是asbr 的router id ,下一跳指向abr 为什么不把它当成type 3 那样处理呢?直接生成type 3 的路由信息因为是避免自环,因为外部路由是不可靠的,所以第五类的路由的优先级不一样,这些路由在路由

表中标识出ase,优先级很低

各LSA 都有有它自己的老化计时器,承载在LS 寿命域内。缺省值为30 分钟

LSA 的分类

区域的类型:1:backbone 骨干域

每一个区域都有着该区域独立的网络拓扑数据库及网络拓扑图。对于每一个区域,其网络拓扑结构

在区域外是不可见的,同样,在每一个区域中的路由器对其域外的其余网络结构也不了解。这意味

着OSPF 路由域中的网络链路状态数据广播被区域的边界挡住了,这样做有利于减少网络中链路状态

数据包在全网范围内的广播,也是OSPF 将其路由域或一个AS 划分成很多个区域的重要原因。

骨干域传播域间路由

在OSPF 路由协议中存在一个骨干区域(Backbone),该区域包括属于这个区域的网络及相应的路由

器,骨干区域必须是连续的,同时也要求其余区域必须与骨干区域直接相连。骨干区域一般为区域0,其主要工作是在其余区域间传递路由信息。所有的区域,包括骨干区域之间的网络结构情况是互不

可见的,当一个区域的路由信息对外广播时,其路由信息是先传递至区域0(骨干区域),再由区域0 将该路由信息向其余区域作广播(见上图)

如果骨干网不连续要设置虚链路解决(见下图)

2:stub 末端域

在OSPF 路由协议的链路状态数据库中,可以包括AS 外部链路状态信息,这些信息会通过flooding 传递到AS 内的所有OSPF 路由器上,如果配置成末端域就不接收这类信息,不接收type 5 类型的路由信息,怎么访问外部网络呢?由abr 产生一条默认路由,因为abr 知道所有的路由信息,stub 路由把不知道的包都给abr 就可以了外部的type 5 进来由abr 直接变成一条缺省路由了

针对末端域还有两点需要注意:一是末端域中不允许存在虚拟链路;二是末端域中不允许存在AS 边界路由器。

Hello 包中有stub 字段

3:Totally stub 完全末端

只接收type1 和2,type3 也不接收,接收abr 的一条默认路由,要配置

stub 区域要把域中所有的路由器都配置成stub 所有的域间的路由信息

都要经过area 0 来传递

对于普通的路由器原始发出的LSA 都是type 1 类型的,到了abr 之后传到area 0 中就变成type 3 了,如果abr 同时又是个asbr 外面连的是rip 它就会产成一个type5 传到任何域也是type5 分成E1 和E2 stub 不接收type 5 abr 来判断下面是stub 就会产成一条缺省路由在abr 中配置成完全末端(配no summary)就会产成一条缺省路由了,其他路由器还是配成stub 域就可以了

OSPF 的接口和路由器的分类

为什么说OSPF 是没有自环的:

Virual Link 虚拟连接

应该所有的area 都要和backbone 相连(为了防止环路)不和主干相连的area 传递路由信息也要经过area 0 来穿过阻挡它和主干相连的域

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

汇总路由:把内部域的路由汇聚发到主干域,这样当内部路由flapping 的时候不影响外面

在nbma 网络中的OSPF:

NBMA 网络是指那些能够支持多台(两台以上)路由器但不具有广播能力的网络。帧中

继、ATM 和X.25 都是NBMA 网络的例子

如果serial 口是配置的物理端口,也就是说没有配置子接口,默认是nbma 模式,不支持广播,因为广播或多播地址是无法映射到 2 层的dlci 号的。可以用show ip OSPF int s0 看接口的network type 是nbma 的

如果3 台路由器R1 R2 R3

R3 是帧中继交换机,则R3 必须成为DR,用静态neighbor 指定和R2,R1 建立邻接,因为R1 和R2 的信息通过R3 发送,可讲R2 和R1 优先级设成0,不进行DR 的选举。

在NBMA 拓朴结构上缺省OSPF Hello 间隔和down 机间隔为30 秒和120 秒下表是在各类拓朴结构上缺省OSPF Hello 间隔和down 机间隔

OSPF 环境Hello 间隔Down 机判定间隔

广播10 秒40 秒

点对点10 秒40 秒

NBMA 30 秒120 秒

OSPF 在NBMA 拓朴结构中以两种正式模式之一运作:l 非广播多路访问l 点对多点

在NBMA 拓朴结构中配置路由器时,通常采用子接口可以通过

下面的命令来创建子接口:

iterface serial number.subinterface-number {multipiont | point-to-point}

在大型网络中,采用点对多点模式可以减少完全连通所必需的PVC 数量点对多点有以下属性不需要全互连的网络不需要静态邻居配置使用一个IP 子网复制LSA 数据包

在NBMA 拓朴结构上的OSPF 小结NBMA 全互连邻居必须属于同一子网号人工配置选举

DR/BDRRFC 广播全互连邻居必须属于同一子网号自动选举DR/BDRCisco 点对多点部分

互边或星型邻居必须属于同一子网号自动,没有DR/BDRRFC 点对多点非广播部分互边

或星型邻居必须属于同一子网号手工配置没有

DR/BDRCisco

点对点通过子接口的部分互连或星型各子接口属于不同的子网自动,没有

DR/BDRCisco

在点对点拓朴结构中的OSPF 运行:

在点对点网络上,路由器通过向多目组播地址来检测它的邻居。不用进行选取举,因为

点对点上没有DR 与BDR 的概念,在NBMA 拓朴结构上缺省OSPF Hello 间隔和down 机间隔为10 秒和40 秒

OSPF Point-to-Multipoint, Nonbroadcast

The following example illustrates a point-to-multipoint network with nonbroadcast.

interface Serial0 ip aDDRess 10.0.1.1 255.255.255.0 ip OSPF network point-to-multipoint

non-broadcast encapsulation frame-relay no keepalive frame-relay local-dlci 200

frame-relay map i p 10.0.1.3 202 frame-relay map i p 10.0.1.4 203 frame-relay map i p 10.0.1.5 204 no shut ! router OSPF 1 network 10.0.1.0 0.0.0.255 area 0 neighbor 10.0.1.3 cost 5

neighbor 10.0.1.4 cost 10 neighbor 10.0.1.5 cost 15

The following is the configuration for the router on the other side:

interface Serial9/2 ip aDDRess 10.0.1.3 255.255.255.0 encapsulation frame-relay ip OSPF network point-to-multipoint non-broadcast no ip mroute-cache no keepalive no fair-queue frame-relay local-dlci 301 frame-relay map i p 10.0.1.1 300 no shut ! router OSPF 1 network 10.0.1.0 0.0.0.255 area 0

The output shown for neighbors in the first configuration above looks like this:

Router# show ip OSPF neighbor Neighbor ID Pri State Dead Time ADDRess Interface

4.1.1.1 1 FULL/ - 00:01:52 10.0.1.5 Serial0

3.1.1.1 1 FULL/ - 00:01:52 10.0.1.4 Serial0

2.1.1.1 1 FULL/ - 00:01:52 10.0.1.3 Serial0

OSPF Point-to-Multipoint, Broadcast

The following example illustrates a point-to-multipoint network with broadcast.

interface Serial0 ip aDDRess 10.0.1.1 255.255.255.0 encapsulation frame-relay ip

OSPF cost 100 ip OSPF network point-to-multipoint frame-relay map ip 10.0.1.3 202 broadcast frame-relay map ip 10.0.1.4 203 broadcast frame-relay map ip 10.0.1.5

204 broadcast frame-relay local-dlci 200

!

router OSPF 1 network 10.0.1.0 0.0.0.255 area 0 neighbor 10.0.1.5 cost 5 neighbor

10.0.1.4 cost 10

The configuration of the neighbor at 10.0.1.3 is:

interface $core2s2 ip aDDRess 10.0.1.3 255.255.255.0 ip OSPF network

point-to-multipoint encapsulation frame-relay frame-relay local-dlci 301

frame-relay map ip $core7s0_ip 300 broadcast no shut

! router OSPF 1 network 10.0.1.0 0.0.0.255 area 0

The output shown for neighbors in the first configuration above looks like this:

Router# show ip OSPF neighbor Neighbor ID Pri State Dead Time ADDRess Interface

4.1.1.1 1 FULL/ - 00:01:50 10.0.1.5 Serial0

3.1.1.1 1 FULL/ - 00:01:47 10.0.1.4 Serial0

2.1.1.1 1 FULL/ - 00:01:45 10.0.1.3 Serial0

The route information in the first configuration above looks like this:

Router# show ip route

Codes: C -connected, S -static, I -IGRP, R -RIP, M -mobile, B -BGP D -EIGRP,

EX -EIGRP external, O -OSPF, IA -OSPF inter area N1 -OSPF N SSA e xternal type

1, N2 -OSPF NSSA external type 2 E1 -OSPF e xternal type 1, E2 -OSPF external

type 2, E -EGP i -IS-IS, L1 -IS-IS level-1, L2 -IS-IS level-2, * -candidate

default U -per-user static route, o -ODR

Gateway of last resort is not set

C 1.0.0.0/8 is directly connected, Loopback0

10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks

O 10.0.1.3/32 [110/100] via 10.0.1.3, 00:39:08, Serial0

C 10.0.1.0/24 is directly connected, Serial0

O 10.0.1.5/32 [110/5] via 10.0.1.5, 00:39:08, Serial0

O 10.0.1.4/32 [110/10] via 10.0.1.4, 00:39:08, Serial0

OSPF 路由协议验证

OSPF 数据交换的验证是基于每一个区域来定义的,也就是说,当在某一个

区域的一个路由器上定义了一种验证方式时,必须在该区域的所有路由器上定义

相同的协议验证方式。另外一些与验证相关的参数也可以基于每一个端口来定

义,例如当采用单一口令验证时,我们可以对某一区域内部的每一个网络设置不

同的口令字

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

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

数据包头内的验证数据位不作任何处理。

验证方式1:验证方式1 为简单口令字验证。这种验证方式是基于一个区域

内的每一个网络来定义的,每一个发送至该网络的数据包的包头内都必须具有相

同的64 位长度的验证数据位,也就是说验证方式1 的口令字长度为64bits ,或者为8 个字符。

OSPF 经验总结

SH IP OSPF NEI 可查看路由器邻居状态,正常应为full

注意子网掩码的反码要写对

注意所有的端口起来时才可以加OSPF 路由

area 域一定要相同

注意Hello(默认10 秒)和dead(默认40 秒)时间要两端匹配

OSPF 如果2个路由器其中一台是abr,路由器端口设置了area 10 stub no-summary 那么互连的另一个路由器也要设置,不然端口down 不邻接在单个

区域内配置OSPF要配置OSPF,我们必须执行以下步聚:l 通过"router OSPF process-id" 全局配置命令在路由上启动OSPF 进程process-id 是一个内部编号l 通过"network area" 路由器配置命令来标识路由器上哪些IP 网络号是OSPF 网络的一部分。

network address wildcard area area-id

要确认路由器的ID 可以输入:show ip ospf interface 命令

修改路由器的优先级:router(config)#ip ospf priority number

number 是1~255 的数,缺省是`1,0 表示不能被选举为DR 或BDR

修改链路开销要通过"ip ospf cost cost" 命令覆盖分配给一个OSPF 接口的缺省开销值

要控制OSPF 如何计算接口缺省度量值(开销)可以使用"auto-cost

refence-bandwidth"

在接口配置模式下输入"ip ospf network" 命令来指定OSPF 网络模式配置

互连多个OSPF区域

为了解决最短路径优先(SPF)算法的频繁计算、大型路由表、大型链路状态表,OSPF 被设计为可将大型网络分成多个区域的能力也被称为体系化路由。体系化

路由使我们能够将大型网络(自治系统)分成被称为区域的小网络

OSPF 的体系化拓朴结构有以下优点:SPF 计算频率降低更小的路由表链路状态更新(LSU)负荷降低

OSPF 路由器类型如下:内部路由器主干路由器区域边界路由器(ABR)自治系统边界路由器(ASBR)

区域的类型

标准区域主

干区域未节

区域完全未

节区域次未

节区域

数据包是怎样穿过多个区域的:如果数据包的目的地是本外的一个网络,那么它将被区域内部路由器转发到目的地内部路由器;如果数据包的目的地是本区域外的一个网络,那么它必须经过下面的路径------数据包从源网络到一个ABR

------ABR 将数据包通过主干区域外发送到目的地网络ABR ------目的地ABR 将数据包转达发到域内的目的地网络

虚拟链路有两个条件:它必须被建立在边接着一个共

同区域的两个ABR 之间这两台ABR 其中一台必须连接

着主干区域

路由器上没有用来激活ABR 或ASBR 的功能的特殊命令。路由器通过它所连接区域的情况来承担这个角色,OSPF 的基本配置步骤如下:在路由器上启用OSPF router(config)#router OSPF process-id 指明将路由器上的哪些IP 网络作为OSPF 的一部分router(config-router)#network aDDRess wildcard-mask area

area-id

(任选项)如果路由器有一个接口连接着一个非OSPF 网络,那么还要执行相应

的配置步骤。

要进一步减少路由表的数量,我们可以创建一个完全未节区域,这是CISCO 的一种专有的特性。

Router OSPF 200 用进程

ID 200 启用OSPF

network 10.X.X.X 0.0.0.0 area 0

指定运行OSPF 的接口和它们的区域

area x range 192.168.X.0 255.255.255.0

归纳地址

area X stub [no-summary]

将一个区域配置为一个未节或完全未节区域

area x virtual-link

192.168.x.49 创建一条OSPF

虚拟链路

area x nssa 将一个区域配置为一个次未节区

域(NSSA)

summary-address 172.16.0.0 255.255.0.0

将外部地址归纳发布到OSPF

show ip ospf 显示有关OSPF 路由进程的一般信息

show ip ospf neighbor 显示有关OSPF 邻居信息

show ip ospf database 显示OSPF 链路状态数据库中的条目

show ip ospf interface 显示有关一个接口的具体OSPF 信息

show ip ospf virtual-links 显示OSPF 虚拟链路的状态

debug ip ospf adj 显示涉及建立或拆除一个OSPF 毗邻关系的事件

相关文档