OSPF的拓展配置
1,手工认证 --- 在OSPF数据包交互中,邻居之间的数据报中将携带认证
口令,两边认证口令相同,则意味着身份合法。
OSPF的手工认证总共分为三种:
1,接口认证
[r5-GigabitEthernet0/0/0]ospf authentication-mode md5 1
cipher 123456
2,区域认证 ---- 其本质还是接口认证,相当于将整个区域所有激
活的接口都配置了接口认证。
[r1-ospf-1-area-0.0.0.2]authentication-mode md5 1 cipher
123456
3,虚链路认证 --- 在建立虚链路的过程中进行的认证,本质上其实
也是接口认证。
[r4-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3 md5 1 cipher
123456
2,加快收敛 --- 修改OSPF的计时器
修改hello时间:
[r1-GigabitEthernet0/0/0]ospf timer hello 5
注意:hello时间修改,死亡时间讲会自动按照四倍关系进行匹

修改死亡时间:
[r2-GigabitEthernet0/0/0]ospf timer dead 20
注意:死亡时间修改,hello时间并不会随之变化。
注意:邻居之间hello时间和死亡时间都必须一致,否则将无法正常
建立邻居关系。
Waiting time --- 等待计时器 --- 跟死亡时间同步 --- DR/BDR的
选举时间,时间长短等同于死亡时间,本身不能直接修改,死亡时间
修改后,等待时间将同步修改。
POLL -- 轮询时间 --- 120S ---- 于状态为DOWN的邻居发送hello报
的周期时间。(NBMA网络中出现)
Retransmit --- 重传时间 --- 5S ---- 当设备发送数据报需要确
认时,对方在重传时间内没有回复确认包,则将重新发送数据。
Transmit Delay --- 传输延迟 --- 1S --- 主要加在LSA的老化时间
上的,用来补偿LSA信息在传输过程中消耗的时间。
3,沉默接口 --- 主要用于连接用户的接口,使这些接口只接收不发送
OSPF的数据。
[r1-ospf-1]silent-interface GigabitEthernet 0/0/2
注意:OSPF的沉默接口会对单播包和组播包生效,所以,不能像RIP
一样结合单播邻居应用在一些特殊场景中。
4,缺省路由
OSPF中的缺省路由总共可以分为三类:
三类缺省 --- 这类缺省只能是在特殊区域中自动产生
普通末梢区域,完全末梢区域,完全NSSA区域
三类缺省的特点 --- 类型:OSPF,默认优先级:10
五类缺省 --- 可以通过命令手工下发,实际上其效果相当于将本地
路由表中其他协议产生的缺省路由重发布到OSPF网络中。所以,是通
过5类LSA携带。
[r1-ospf-1]default-route-advertise
五类缺省的特点 --- 类型:O_ASE,默认优先级:150
[r1-ospf-1]default-route-advertise always --- 如果本地路
由表中没有其他协议产生的缺省路由,则可以通过增加always参
数进行强制下发
七类缺省 --- 两种方法产生,一种是通过特殊区域自动生成 ---
NSSA区域。另一种方法是通过命令进行配置获取。
[r4-ospf-1-area-0.0.0.2]nssa default-route-
advertise --- 进入NSSA区域后下发
注意:7类缺省只会出现在NSSA区域中。
七类缺省的特点 --- 类型:O_NSSA,默认优先级:150
5,路由过滤
OSPF可以直接针对3类,5类,7类LSA进行过滤
[r2-ospf-1-area-0.0.0.1]abr-summary 192.168.0.0
255.255.252.0 not-advertise --- 3类LSA的过滤
[r2-ospf-1-area-0.0.0.1]abr-summary 12.0.0.0 255.255.255.0
not-advertise --- 明细路由信息也可以通过这种方法进行过滤
[r5-ospf-1]asbr-summary 192.168.0.0 255.255.255.0 not-
advertise
6,路由控制
优先级
1,[r4-ospf-1]preference 50 --- 这个命令主要影响的是由1
类,2类,3类LSA获取到的路由信息,类型字段为:OSPF的路由
的优先级。
2,[r4-ospf-1]preference ase 100 --- 这个命令主要影响的
是由5类,7类LSA获取到的路由信息。
以上两种修改优先级的方法都是仅影响本地路由表中路由条目的
优先级。
开销值 ---- COST = 参考带宽 / 真实带宽
可以影响开销值的方法:
1,通过修改参考带宽,影响开销值大小。
华为设备默认的参考带宽为100M
[r4-ospf-1]bandwidth-reference 1000
Info: Reference bandwidth is changed. Please ensure
that the reference bandwidth
that is configured for all the routers are the
same.
因为,参考带宽,一旦修改,则所有接口的开销值都会发生
变化,并且修改参考带宽要求网络中所有设备的参考带宽都
需要修改成一样的,所以,这种方法虽然可以影响开销值,
但并不适合进行选路。
注意:在带宽越来越大的环境中,修改参考带宽的意义会越
来越大,因为参考带宽过小可能会造成选路不佳的情况。
2,通过修改真实带宽,影响开销值的大小
[r4-GigabitEthernet0/0/0]speed ? ---- 可以修改接
口的传输速率。但注意,接口的传输速率只能改小,不能改
大。
10 10M port speed mode
100 100M port speed mode
1000 1000M port speed mode
[r4-GigabitEthernet0/0/0]undo negotiation auto ---
修改之前先通过这个命令去关闭接口速率的自动协商
(注意,这个命令生效需要重启接口)
通过修改接口的传输速率,是可以影响OSPF选路的,但是,
因为他会导致接口的传输速率变低(因为接口速率只能改
小),所以,并不建议使用这种方法来干涉选路。
注意:以上两种方法均不能影响环回接口的开销值
3,直接修改接口的开销值(也可以直接修改环回接口的开销
值)
[r3-GigabitEthernet0/0/0]ospf cost 10
OSPF开销值的计算方式是按照流量流入接口的开销来计算
的。建议,在修改链路接口的开销值后,将两端的开销值改
为一致,否则,在复杂的网络环境中,可能会出现环路问
题。
建议,如果只是需要影响某个网段到达的开销值,可以直接
去修改该末梢网段的接口的开销值,而避免修改沿途的开销
值,因为修改沿途的开销值会影响所有经过的流量。
7,OSPF的附录E

ospf宣告接口还是网段 ospf在接口宣告_OSPF


附录E主要是为了应对以上特殊情况所提出的解决方案,将掩码交

短的正常生成,掩码较长的会将他LS ID改为直接广播地址。

OSPF的选路原则

域内 --- 1类,2类LSA

域间 --- 3类LSA

域外 --- 5类,7类LSA --- 根据开销值的计算规则不同,还分为类型1和

类型2.

1,如果学到的路由都是通过1类,2类LSA获取的域内路由 --- 这种

情况直接比较开销值,优先选择开销值小的路线,如果两条路由的开

销值相同,则负载均衡。

2,如果学到的路由都是通过3类LSA获取的域间路由 --- 这种情况直

接比较开销值,优先选择开销值小的路线,如果两条路由的开销值相

同,则负载均衡。

3,5类LSA和7类LSA类型2的选路原则:先比较种子度量值,优选种子

度量值小的;如果种子度量值相同,则比较沿途累加的开销值,选择

沿途累加开销值小的;如果沿途累加开销值也相同,则将负载均衡。

Type 1 :如果是类型1,则传递的度量值是种子度量值加沿途累加度

量值。

Type 2 :如果是类型2,则传递的度量值为种子度量值。默认选择类

型2。

类型1和类型2之间存在一个优选规则 ---- 类型1永远优于类型2。

OPSF在区域内会产生俩类LSA:Router LSA ,Network LSA
路由器以自己为树根构建最短路径树 ,这里的最短路径树按两步形
成,第一步,仅考虑路由器和传输网络之间的连接。通过 Dijkstra 算
法,根据链路状态数据库的子集形成树。第二步,考虑末节网络连接,
作为叶子加入树。
区域内部OSPF对网络是通过Router LSA ,Network LSA来描述网络
的,最终路由器收到LSA构建出LSDB。
LSDB通过描述一个有向线段图来描述网络拓扑结构,该有向图的端点有
三种类型: 路由器节点,Stub网段和Transit网段。
Router LSA使用Link ID,Data,Type和Metric描述一条链路
类型有四种

ospf宣告接口还是网段 ospf在接口宣告_OSPF_02


Stub网段表示该网段只有数据入口,例如一个Loopback接口就是一个

Stub网段。

此胶片描述了路由器节点和Stub网段的表示方式。

Cost表示从一个端点到另一个端点的开销,该参数可以在OSPF接口上配

置,表示数据离开该接口(出接口)的开销。

ospf宣告接口还是网段 ospf在接口宣告_R3_03


Transit网段有能力转发既不是本网段产生的,也不以本网段做为目的

Transit网段有能力转发既不是本网段产生的,也不以本网段做为目的

地的数据。

有至少两台路由器的广播型网段或NBMA网段就是一种Transit网段。

从路由器到所连Transit网段的开销值就是连接到这个网段的接口所配

置的开销值。

从一个Transit网段到连接到这个网段的路由器的开销为0。(称为伪节

点)

ospf宣告接口还是网段 ospf在接口宣告_网络_04


在描述点到点接口的 Router- - LSA 中:

1. 通告一个到邻居路由器的点到点链接,Link ID设置为对端的Router

ID,Data设置为本地接口的IP地址;

2. 通告一个到该点到点网段的Stub连接,Link ID设置为该点到点网段

的网络号,Data设置为该点到点网段的网络掩码;

3. 上述两个连接的Cost值均为该点到点接口上的Cost值。

ospf宣告接口还是网段 ospf在接口宣告_网络_05


LSDB描述两接口处于不同网段的点到点网段的规则如下:

两台路由器经由两条有向线段直接相连,每个方向一条。

两个接口的网段被表示成Stub网段。

每个路由器通告一个Stub连接到该路由器所连的网段 。

ospf宣告接口还是网段 ospf在接口宣告_R3_06


LSDB描述两接口处于同一网段的点到点网段的规则如下:

两台路由器经由两条有向线段直接相连,每个方向一条。

连接两个接口的网段被表示成Stub网段。

两个路由器同时通告Stub连接到该PPP网段。

ospf宣告接口还是网段 ospf在接口宣告_网络协议_07


在描述广播型或NBMA型接口的Router-LSA中:

1. 如果接口状态是Waiting,或者该网段上只有一个运行OSPF的路由

器,或者该网段上没有DR,则通告一个通往该网段的Stub链接,Link

ID设置为该网段的IP网络号,Link Data设置为该网段的网络掩码;

其他情况下,通告一个通往该网段的Transit连接,Link ID设置为DR的

接口IP地址,Link Data设置为本地接口的IP地址。

2. 连接的开销值为接口的开销。

ospf宣告接口还是网段 ospf在接口宣告_R3_08

ospf宣告接口还是网段 ospf在接口宣告_ospf宣告接口还是网段_09

在描述广播型网段或者NBMA网段的Network-LSA中:
在描述广播型网段或者NBMA网段的Network-LSA中:
Link State ID设置为DR的接口IP地址。
Net mask设置为该网段的网络掩码。
Link State ID和Net mask做与运算,即可得出该网段的IP网络号。
在该LSA中,还包含一个连接到该网段的路由器列表。
从一个Transit网段到所连接的路由器的连接没有开销。

ospf宣告接口还是网段 ospf在接口宣告_网络_10

ospf宣告接口还是网段 ospf在接口宣告_网络协议_11

ospf宣告接口还是网段 ospf在接口宣告_R3_12


计算过程

根据上文描述上图拓扑在LSA传递完毕后生成有向图

接下来计算分为俩个阶段

第一阶段 计算Transit节点,忽略Stub节点,生成一个最短路径树

第二阶段 只计算Stub节点,将Stub网段挂到最短路径树上去

计算过程中首先初始化最短路径树,RTA将自己做为根节点添加到最短

路径树上

ospf宣告接口还是网段 ospf在接口宣告_网络协议_13


RTA将自己添加到最短路径树上之后,检查自己生成的Router-LSA,对

于该LSA中所描述的每一个连接,如果不是一个Stub连接,就把该连接

添加到候选列表中,端点ID为Link ID,到根端点的开销为LSA中描述的

Metric值。本例中,添加端点4.4.4.4和2.2.2.2。

ospf宣告接口还是网段 ospf在接口宣告_R3_14

ospf宣告接口还是网段 ospf在接口宣告_网络协议_15


ospf宣告接口还是网段 ospf在接口宣告_网络协议_16


将候选列表中到根端点开销最小的端点移到最短路径树上

当有新节点添加到最短路径树上的时候,则检查LS ID为新节点的link-id

ID的LSA,本例中检查LS ID为2.2.2.2的LSA。

如果LSA中所描述的连接的Link ID在最短路径树上已经存在,则忽略该

连接。本例中,Link ID为1.1.1.1的连接被忽略,只有10.3.1.1的连接

被添加到候选列表中。到根端点的开销设置为此连接的Metric值(本例

中此连接的Metric值为1)与父端点(本例中此连接的父端点为

2.2.2.2)到根端点的开销(本例中此开销值为48)之和。

ospf宣告接口还是网段 ospf在接口宣告_OSPF_17


将候选列表中到根端点的开销最小的端点移动到最短路径树上,本例

中,将10.3.1.1移到最短路径树上。

ospf宣告接口还是网段 ospf在接口宣告_ospf宣告接口还是网段_18

ospf宣告接口还是网段 ospf在接口宣告_ospf宣告接口还是网段_19


检查LS ID为最新添加节点的端点ID的LSA,本例中检查LS ID为

10.3.1.1的LSA。

在所描述的连接中,忽略2.2.2.2,将3.3.3.3和4.4.4.4添加到候选列

表中。从Transit网段到所连路由器的开销为0。

如果在候选列表中出现两个端点ID一样但是到根端点的开销不一样的端

点,则删除到根端点的开销大的端点。

ospf宣告接口还是网段 ospf在接口宣告_网络_20


将候选列表中到根端点的开销最小的端点移动到最短路径树上,本例

中,将3.3.3.3移到最短路径树上。

ospf宣告接口还是网段 ospf在接口宣告_ospf宣告接口还是网段_21

ospf宣告接口还是网段 ospf在接口宣告_ospf宣告接口还是网段_22


检查LS ID为最新添加节点的端点ID的LSA,本例中检查LS ID为3.3.3.3

的LSA。

本例中,没有新端点被添加到候选列表中。

ospf宣告接口还是网段 ospf在接口宣告_ospf宣告接口还是网段_23


将候选列表中到根端点的开销最小的端点移动到最短路径树上,本例

中,将4.4.4.4移到最短路径树上。

ospf宣告接口还是网段 ospf在接口宣告_网络协议_24

ospf宣告接口还是网段 ospf在接口宣告_网络协议_25


检查LS ID为最新添加节点的端点ID的LSA,本例中检查LS ID为4.4.4.4

的LSA。

本例中,没有新端点被添加到候选列表中。

如果在此时候选列表为空,则计算最短路径树的第一阶段结束。

ospf宣告接口还是网段 ospf在接口宣告_ospf宣告接口还是网段_26


检查每个路由器端点的Router-LSA,计算Stub网段。

本例中,首先检查RTA的Router-LSA,共有三个Stub网段。

ospf宣告接口还是网段 ospf在接口宣告_网络_27

ospf宣告接口还是网段 ospf在接口宣告_OSPF_28

ospf宣告接口还是网段 ospf在接口宣告_OSPF_29

ospf宣告接口还是网段 ospf在接口宣告_网络协议_30

ospf宣告接口还是网段 ospf在接口宣告_R3_31


Type-3 LSA及Type-4 LSA的防环

1) OSPF要求所有的非0区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。

OSPF要求所有的非0区域必须与骨干区域直接相连, 区域间( Inter- - Area Route)路由需经

由骨干区域中转。这个要求使得区域间的路由传递不能发生在两个非0的区域之间,这在很

大程度上规避了区域间路由环路的发生,也使得OSPF的区域架构在逻辑上形成了一个类似

星型的拓扑,如下图所示。

ospf宣告接口还是网段 ospf在接口宣告_网络_32


2) ABR只能够将其所连接的区域的区域内部路由注入到Area0,但是可以将区域内部路由及

区域间的路由注入到非0常规区域。ABR从非骨干区域收到的Type-3 LSA不能用于区域间路

由的计算。

OSPF对ABR有着严苛的要求,区域间的路由传递的关键点在于ABR对Summary LSA的处理。

ospf宣告接口还是网段 ospf在接口宣告_ospf宣告接口还是网段_33


在上图中,如果R3是一台普通的OSPF路由器(不是ABR),例如当它与R2没有OSPF邻居关系

时,它会根据R4在Area2中泛洪的Type-3 LSA计算出1.1.1.0/24路由并将路由加载进路由表

中。但是当R3与R2建立起OSPF邻接关系后,R3在Area0中就有了一个活跃的全毗邻连接,此

时如果它把描述1.1.1.0/24路由的Type-3 LSA再注入回Area0,那么就会带来潜在环路的风

险,如下图所示:

ospf宣告接口还是网段 ospf在接口宣告_网络_34


OSPF区域间防环

因此当一台 ABR 在非 Area0 的区域中收到 Type- 3 LSA 时,虽然它会将其装载进 LSDB ,但是该

路由器不会使用这些 Type- - 3 LSA 进行路由计算,当然它更不会将这些 Type- - 3 LSA 再注入回

Area0 中。

这里有一个有意思的细节,就是如果R3连接R2的接口虽然激活了OSPF(而且属于Area0),

但是不与R2形成邻接关系(例如R2连接R3的接口不激活OSPF),那么此时R3其实并不算是

严格意义上的ABR(虽然它产生的Type-1 LSA中B-bit会被置位,但是它在Area0中并没有全

毗邻的邻居),因此它会将Area2内收到的Type-3 LSA用于区域间路由的计算,所以在R3的

路由表中能看到1.1.1.0/24的区域间路由(下一跳为R4),但是一旦R2-R3之间的邻接关系

建立起来,R3将不能再使用R4下发的Type-3 LSA计算路由,而仅能使用从Area0中收到

的、R 2下发的Type-3 LSA进行区域间路由计算,所以此时R3路由表中1.1.1.0/ 24路由的

下一跳为R2,而且即使这条路径的Cost要比从R4走更大(例如将R3连接R 2的接口Cost调

大),R3也始终不会走R4到达1.1.1.0/24,除非R2挂掉,或者R2-R3丢失邻接关系。这个现

象在思科、华为的真机上验证过了,两者均是如此实现。

3) ABR不会将描述一个Area内部的路由信息的Type-3 LSA再注入回该区域中。

实际上,OSPF区域间路由的传递行为,很有点距离矢量路由协议的味道。以下图为例,在

Area1中,R1及R2都会泛洪Type-1 LSA、Type-2 LSA,两台路由器都能够根据这些LSA计算

区域内路由,而R2作为ABR还担负着另一个责任,就是向Area0通告区域间的路由,实际上

它是向Area0中注入用于描述Area1内路由的Type-3 LSA,而这些Type-3 LSA是不会发回

Area1的——是的,类似水平分割行为对吧?接下来R3利用这些Type-3 LSA计算出了区域间

的路由,并且为Area2注入新的Type-3 LSA用于描述区域间的路由,而这些Type-3 LSA同样

的不会被注入回Area0。

R2在向Area0通告Type-3 LSA,为每条区域间路由携带上Cost值,这个值就是它自己到达各

个目标网段的Cost,而R3收到这些Type-3 LSA并计算路由时,路由的Cost就是在R2所通告

的Cost值的基础上,加上R3自己到R2的Cost值,然后,R3向R4通告这些区域间的路由时也

携带者自己到达目标网段的Cost,而R4到达目标网段的Cost则是在R3的通告值基础上累加

自己到R3的Cost——典型的距离矢量行为。

ospf宣告接口还是网段 ospf在接口宣告_ospf宣告接口还是网段_35


Type-4 LSA实际上与Type-3 LSA都是Summary LSA,只不过一个是Network Summary

Type-4 LSA实际上与Type-3 LSA都是Summary LSA,只不过一个是Network Summary

LSA——用于描述网段路由,另一个则是ASBR Summary LSA——用于描述ASBR,他们使用的

防环机制是一致的。

利用type-4 LSA防环

当一台OSPF路由器将外部路由引入OSPF域后,它就成为了一台

ASBR,被引入的外部路由以Type-5 LSA在整个OSPF域内泛洪。一台

路由器使用Type-5 LSA计算出路由的前提是两个,其一是要收到

-5 LSA,其二是要知道产生这个Type-5 LSA的ASBR在哪里。与

ASBR接入同一个区域的路由器能够根据该区域内泛洪的Type-1 LSA

及Type-2 LSA计算出到达该ASBR的最短路径,从而计算出外部路

由。而其他区域的路由器就没有这么幸运了,因为ASBR产生的

Type-1 LSA只能在其所在的区域内泛洪,所以才需要Type-4 LSA。

因此其他区域的路由器在获取Type-4 LSA后便能计算出到达ASBR的

最短路径,进而利用该ASBR产生的Type-5 LSA计算出外部路

由。Type-5 LSA将会被泛洪到整个OSPF域,表面上看,它本身并不

具有什么防环的能力,但是实际上,它并不需要,因为它可以依赖

Type-1 LSA及Type-4 LSA来实现防环。

 

                          附录E(RFC 2328)
OPSF标准文档RFC2328中,附录e中描述了OSPF
在某些特定环境下会出现路由计算错误问题,
从而给组网应用带来隐患。

ospf宣告接口还是网段 ospf在接口宣告_OSPF_36


OSPF是一种基于链路状态型路由协议,其中3

类、5

类、7类LSA传递的是路由信息,link-id为传

递路

由条目网络号,并且不识别网络掩码;

区别不同的3/5/7类LSA使用 link-id、ADV

router-id、LSA 序列号

若是接收,所有到IP网络号相同但网络掩码不

同的

3/5/7类LSA不能区别只能学习先学习到的。

例如若R5路由器通过eigrp 学习到 AS 100中


10.1.0.0/16以及 AS 200中的10.1.0.0/24两

个网

段,若先将eigrp 100 中通过进入ospf产生5

类或7

类LSA,link-id 为10.1.0.0,此时再重发步

eigrp

200 ,则10.1.0.0/24路由无法重发步,导致

不能

与10.1.0.0/24网段通信。

出现了这样的问题是因为OSPF中使用路由信息

LSA

时不能识别网络掩码,所有在RFC文档2328中

的附

录e中提出了解决办法:

1.将进入OSPF 的3/5/7类LSA,网络号相同但

网络掩码不同的LSA进入OSPF时进行其他的处

理方式具体如下

2.若先将网络掩码长度较短的路由重发步,则

先产生正常LSA,后将网络掩码长度较长LSA重

发步时,则后进入的使用其对应的定向广播地

址;

例如:先进入10.10.0.0/16 ,则link-id 为

10.10.0.0 后进入的10.10.0.0/24,则link-

id为10.10.0.255

3.若先将网络掩码长度较长的路由重发步,则

先产生正常LSA,后将网络掩码较短的LSA重发

步进入时,则先删除源LSA,将网络掩码较短

的LSA通告,并且sequenceNUM+1,再将网络掩

码较长的使用定向广播地址进行通告;

例如:先进入10.10.0.0/24,则link-id为

10.10.0.0 sequenceNUM 100后进入

10.10.0.0/16,先删除序列号为100 的

LSA,通告进入后进入的LSA,link-id为

10.10.0.0,序列号为101,在将10.10.0.0/24

通告

进入,link-id为10.10.0.255,sequenceNUM为

1

查看掩码长度为16 的:

ospf宣告接口还是网段 ospf在接口宣告_ospf宣告接口还是网段_37


掩码长度为24的:

ospf宣告接口还是网段 ospf在接口宣告_网络协议_38


查看路由:

ospf宣告接口还是网段 ospf在接口宣告_网络协议_39


注意:在附录E中解决办法需要注意两点

注意:在附录E中解决办法需要注意两点

1.所有网络掩码是连续的

2.不存在一条外部路由的网络号正好与上述子

网定向广播地址相同

例如:一条路由为10.1.1.0/32 ,一条路由为

10.1.1.0/30(先进入)...