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
附录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描述一条链路
类型有四种
Stub网段表示该网段只有数据入口,例如一个Loopback接口就是一个
Stub网段。
此胶片描述了路由器节点和Stub网段的表示方式。
Cost表示从一个端点到另一个端点的开销,该参数可以在OSPF接口上配
置,表示数据离开该接口(出接口)的开销。
Transit网段有能力转发既不是本网段产生的,也不以本网段做为目的
Transit网段有能力转发既不是本网段产生的,也不以本网段做为目的
地的数据。
有至少两台路由器的广播型网段或NBMA网段就是一种Transit网段。
从路由器到所连Transit网段的开销值就是连接到这个网段的接口所配
置的开销值。
从一个Transit网段到连接到这个网段的路由器的开销为0。(称为伪节
点)
在描述点到点接口的 Router- - LSA 中:
1. 通告一个到邻居路由器的点到点链接,Link ID设置为对端的Router
ID,Data设置为本地接口的IP地址;
2. 通告一个到该点到点网段的Stub连接,Link ID设置为该点到点网段
的网络号,Data设置为该点到点网段的网络掩码;
3. 上述两个连接的Cost值均为该点到点接口上的Cost值。
LSDB描述两接口处于不同网段的点到点网段的规则如下:
两台路由器经由两条有向线段直接相连,每个方向一条。
两个接口的网段被表示成Stub网段。
每个路由器通告一个Stub连接到该路由器所连的网段 。
LSDB描述两接口处于同一网段的点到点网段的规则如下:
两台路由器经由两条有向线段直接相连,每个方向一条。
连接两个接口的网段被表示成Stub网段。
两个路由器同时通告Stub连接到该PPP网段。
在描述广播型或NBMA型接口的Router-LSA中:
1. 如果接口状态是Waiting,或者该网段上只有一个运行OSPF的路由
器,或者该网段上没有DR,则通告一个通往该网段的Stub链接,Link
ID设置为该网段的IP网络号,Link Data设置为该网段的网络掩码;
其他情况下,通告一个通往该网段的Transit连接,Link ID设置为DR的
接口IP地址,Link Data设置为本地接口的IP地址。
2. 连接的开销值为接口的开销。
在描述广播型网段或者NBMA网段的Network-LSA中:
在描述广播型网段或者NBMA网段的Network-LSA中:
Link State ID设置为DR的接口IP地址。
Net mask设置为该网段的网络掩码。
Link State ID和Net mask做与运算,即可得出该网段的IP网络号。
在该LSA中,还包含一个连接到该网段的路由器列表。
从一个Transit网段到所连接的路由器的连接没有开销。
计算过程
根据上文描述上图拓扑在LSA传递完毕后生成有向图
接下来计算分为俩个阶段
第一阶段 计算Transit节点,忽略Stub节点,生成一个最短路径树
第二阶段 只计算Stub节点,将Stub网段挂到最短路径树上去
计算过程中首先初始化最短路径树,RTA将自己做为根节点添加到最短
路径树上
RTA将自己添加到最短路径树上之后,检查自己生成的Router-LSA,对
于该LSA中所描述的每一个连接,如果不是一个Stub连接,就把该连接
添加到候选列表中,端点ID为Link ID,到根端点的开销为LSA中描述的
Metric值。本例中,添加端点4.4.4.4和2.2.2.2。
、
将候选列表中到根端点开销最小的端点移到最短路径树上
当有新节点添加到最短路径树上的时候,则检查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)之和。
将候选列表中到根端点的开销最小的端点移动到最短路径树上,本例
中,将10.3.1.1移到最短路径树上。
检查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一样但是到根端点的开销不一样的端
点,则删除到根端点的开销大的端点。
将候选列表中到根端点的开销最小的端点移动到最短路径树上,本例
中,将3.3.3.3移到最短路径树上。
检查LS ID为最新添加节点的端点ID的LSA,本例中检查LS ID为3.3.3.3
的LSA。
本例中,没有新端点被添加到候选列表中。
将候选列表中到根端点的开销最小的端点移动到最短路径树上,本例
中,将4.4.4.4移到最短路径树上。
检查LS ID为最新添加节点的端点ID的LSA,本例中检查LS ID为4.4.4.4
的LSA。
本例中,没有新端点被添加到候选列表中。
如果在此时候选列表为空,则计算最短路径树的第一阶段结束。
检查每个路由器端点的Router-LSA,计算Stub网段。
本例中,首先检查RTA的Router-LSA,共有三个Stub网段。
Type-3 LSA及Type-4 LSA的防环
1) OSPF要求所有的非0区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。
OSPF要求所有的非0区域必须与骨干区域直接相连, 区域间( Inter- - Area Route)路由需经
由骨干区域中转。这个要求使得区域间的路由传递不能发生在两个非0的区域之间,这在很
大程度上规避了区域间路由环路的发生,也使得OSPF的区域架构在逻辑上形成了一个类似
星型的拓扑,如下图所示。
2) ABR只能够将其所连接的区域的区域内部路由注入到Area0,但是可以将区域内部路由及
区域间的路由注入到非0常规区域。ABR从非骨干区域收到的Type-3 LSA不能用于区域间路
由的计算。
OSPF对ABR有着严苛的要求,区域间的路由传递的关键点在于ABR对Summary LSA的处理。
在上图中,如果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区域间防环
因此当一台 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——典型的距离矢量行为。
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是一种基于链路状态型路由协议,其中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 的:
注意:在附录E中解决办法需要注意两点
注意:在附录E中解决办法需要注意两点
1.所有网络掩码是连续的
2.不存在一条外部路由的网络号正好与上述子
网定向广播地址相同
例如:一条路由为10.1.1.0/32 ,一条路由为
10.1.1.0/30(先进入)...