OSPF集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OSPF集合相关的知识,希望对你有一定的参考价值。

OSPF**认证完整总结**

OSPF的认证有确切说是3种,OSPF头里其中认证字段0表示无认证, 1表示明文认证, 2表示MD5认证。明文认证发送密码进行认证,而MD5认证发送的是报文摘要。有关MD5的详细信息,可以参阅RFC1321.

?

OSPF的认证可以在链路上进行,也可以在整个区域内进行认证。另外虚链路同样也可以进行认证。

技术图片

虚链路配置:两个ABR之间ospf进程下,指的是对方router-id 区域是中间穿越区域

area 1(中间穿越区域) virtual-link 3.3.3.3 (对方ABR router-id)

area 1(中间穿越区域) virtual-link 2.2.2.2 (对方ABR router-id)

注意:双方的RID不需要路由能通!

? 基于接口认证

1. 在**R1R2的串行链路上进行OSPF**明文认证:

? (config-if)#ip ospf authentication**(启用认证)**

(config-if)#ip ospf authentication-key cisco**(配置密码)**

只有一端开启通过debug工具我们可以看到如下信息:

*Aug 15 22:51:54.275: OSPF: Rcv pkt from 10.1.1.2, Serial1/0 : Mismatch Authentication type. Input packet specified type 0**,** we use type 1

这里的type0是指对方没有启用认证,type1是明文认证。

2.**R2R3的串行链路上进行MD5认证的:**

(config-if)#ip ospf authentication message-digest**(定义认证类型为MD5 (config-if)#ip ospf message-digest-key 1 md5 cisco(定义key**和密码)

#show ip ospf int s1/0

Serial1/0 is up, line protocol is up

Internet Address 11.1.1.2/24, Area 1

Process ID 10, Router ID 3.3.3.3, Network Type POINT_TO_POINT, Cost: 64

Transmit Delay is 1 sec, State POINT_TO_POINT,

Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5

? oob-resync timeout 40

? Hello due in 00:00:05

Index 1/1, flood queue length 1

Next 0x648352C8(13)/0x0(0)

Last flood scan length is 1, maximum is 2

Last flood scan time is 0 msec, maximum is 0 msec

? Flood pacing timer due in 0 msec

Neighbor Count is 1, Adjacent neighbor count is 1

? Adjacent with neighbor 2.2.2.2

Suppress hello for 0 neighbor(s)

Message digest authentication enabled

Youngest key id is 1

所以要修改链路的MD5认证的密码时,可以先将新的密码配置到启用认证的路由器后在将原来的密码删除,这样的话可以保证在修改配置的时候邻居关系依然存在。

区域**认证方法**(私有技术)

接口定义密钥,区域启用

  明文认证**
  
Router(config-if)#ip ospf authentication-key cisco启用明文密钥
  
Router(config-router)#area 1 authentication声明明文认证**

  密文认证
  Router(config-if)#ip ospf message-digest-key 1 md5 cisco 启用密文密钥
  Router(config-router)#area 0 authentication message-digest 声明密文认证

如果R2在区域0采用认证,且重启进程,对于虚链路而言:

R2#sho ip ospf virtual-links

Virtual Link OSPF_VL0 to router 3.3.3.3 is up

Run as demand circuit

DoNotAge LSA allowed.

Transit area 1, via interface Serial1/1, Cost of using 64

Transmit Delay is 1 sec, State POINT_TO_POINT,

Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5

? Hello due in 00:00:06

Simple password authentication enabled

R3#sho ip ospf virtual-links

Virtual Link OSPF_VL0 to router 2.2.2.2 is up

Run as demand circuit

DoNotAge LSA allowed.

Transit area 1, via interface Serial1/0, Cost of using 64

Transmit Delay is 1 sec, State POINT_TO_POINT,

Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5

Hello due in 00:00:04

因为virtual-link属于Area0,因此在R2配置完成Area0区域认证后,R3也需要相应的配置。

R3(config)#router ospf 10

R3(config-router)#area 0 authentication

R3(config-router)#

*Aug 15 23:32:57.175: %OSPF-5-ADJCHG: Process 10, Nbr 2.2.2.2 on OSPF_VL0 from LOADING to FULL, Loading Done

R2#sho ip ospf virtual-links

Virtual Link OSPF_VL0 to router 3.3.3.3 is up

Run as demand circuit

DoNotAge LSA allowed.

Transit area 1, via interface Serial1/1, Cost of using 64

Transmit Delay is 1 sec, State POINT_TO_POINT,

Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5

? Hello due in 00:00:05

? Adjacency State FULL (Hello suppressed)

? Index 3/4, retransmission queue length 0, number of retransmission 1

? First 0x0(0)/0x0(0) Next 0x0(0)/0x0(0)

? Last retransmission scan length is 1, maximum is 1

? Last retransmission scan time is 0 msec, maximum is 0 msec

Simple password authentication enabled

虚链路在建立起来后是不老化LSA,所以如果没有重启OSPF进程的话,即使一端配置了认证,虚链路也是不会断开的。

   虚链路**认证方法**

  明文认证

(config-router)#area 2 virtual-link 3.3.3.3 authentication-key cisco 启用明文(config-router)#area 2 virtual-link 3.3.3.3 authentication声明明文认证

 密文认证

(config-router)#area 2 virtual-link 3.3.3.3 message-digest-key 1 md5 cisco
(config-router)# area 2 virtual-link 3.3.3.3 authentication message-digest

只支持等价负载均衡

默认4条,最大16条

Router(config-router)#maximum-paths 16

接口下修改优先级和cost

r1(config-if)#ip ospf priority 2**------大好**

r1(config-if)#ip ospf cost 65535

通告默认路由

r3(config-router)#default-information originate metric 100

r3(config)#ip route 0.0.0.0 0.0.0.0 null 0

两个ABR连接两个ISP,提供热备冗余备份。经测试,在骨干区域ABR打入这个命令会向骨干和非骨干都会通告,但一般用在边界的两个ABR上面。全ospf通告泛洪

r1(config-router)#default-information originate metric 100--通告默认,但是这个默认必须提前在路由表中

r1(config-router)#default-information originate always metric 15---即使我路由表中没有默认,也会自动创建一个广播出去,且还有一个作用,减少默认路由抖动引起的数据库操作,保证数据库稳定。因为我R1就没有产生一个默认路由,就无从谈起默认路由抖动问题了。默认metric为1

r1(config-router)#default-information originate always metric 15 metric-type 1-----其他路由器收到,这个15的外部cost值加上自己去ASBR(谁通告默认谁是ASBR)的cost值。在有多条链路去往ASBR的环境中适用。默认是oe2

ACL匹配路由:

r1(config)#access-list 1 per 3.3.3.0 0.0.0.255

r1(config)#route-map aaa per 10

r1(config-route-map)#match ip add 1

r1(config-route-map)#exit

----------------------------------------------------------------

前缀列表匹配路由:

ip prefix-list aaa seq 1 permit 34.1.1.0/24

ip prefix-list aaa seq 2 permit 35.1.1.0/24!

!

route-map aaa permit 10

match ip address prefix-list aaa

exit

------------------------------------------------------------------------------------------

r1(config)#router ospf 100

r1(config-router)#default-information originate always route-map aaa

在我是ASBR,连接一个后面路由器,这个路由器连接互联网,我作为R1,只有路由表中有3.3.3.0的路由才会向自己的ospf区域通告一个默认路由

路由汇总

ABR区域汇总:

area area-id range ip-address mask not-advertise**(不通告,就是抑制他,过滤LSA-3。路由聚合只针对域内路由做聚合,不能针对区域间路由做聚合)**

ASBR外部路由汇总:

summary-address ip-address mask

地址汇总计算方法:

1、简单的 ,同一子网的汇总

192.168.1.0/24

192.168.2.0/24

192.168.3.0/24

192.168.4.0/24

192.168.5.0/24

192.168.6.0/24

判断第几位发生变化,转换成二进制

192.168.00000 001.0/24

192.168.00000 010.0/24

192.168.00000 011.0/24

192.168.00000 100.0/24

192.168.00000 101.0/24

192.168.00000 110.0/24

将不变的位保留下来作为子网掩码的位数= 16+5=21

你也可以算变化的位 24-3=21

变化的位全部值0 那么这个时候的网络地址就是汇总后的地址

192.168.00000000.0/21=192.168.0.0/21

255.255.248.0

复杂一丁点的,不同子网的汇总

202.12.133.1/25 = 202.12.0.0/16

202.78.56.8/26 = 202.78.0.0/16

202.65.145.56/27 = 202.65.0.0/16

202.23.123.156/28 = 202.23.0.0/16

首先判断是第几段的地址位发生变化,后面的可以忽略

汇总成这个段的地址的主网络号

其次使用上面简单的处理方法

202.0 0001100.0.0/16

202.0 1001110.0.0/16

202.0 1000001.0.0/16

202.0 0010111.0.0/16

汇总后 子网为8+1=9 或者16-7=9

202.00000000.0.0/9

转发地址不可达情况

(config-router)#area 15 nssa translate type7 suppress-fa

ABR的路由器只有存在转发地址的OSPF路由时候,才会进行7转5. 如果我的转发地址不可达,可在NSSA区ABR处把转发地址设置成0.0.0.0,默认是NSSA区域的ASBR的router-id。如果是0.0.0.0就是代表直接去找7转5的ABR,不用去找转发地址了

其他路由器收到这个external的lsa后,还要检查是否有到达转发地址的路由,这个去往转发地址的路由必须是通过OSPF学习到的!如果没有,不会参与计算

可用静态路由测试!!!!!!!!!!!

--------------------------------------------------------------------------------------

技术图片

技术图片

过滤LSA-3:

该命令用来在ABR上作summary lsa过滤,如果是骨干区域(非骨干区域),就防止从其他非骨干区域(骨干区域)转换到该区域符合特定条件的summary lsa生成,过滤彻底。对应IOS命令为:

ip prefix-list bbb seq 1 deny 67.1.1.0/24

ip prefix-list bbb seq 2 permit 0.0.0.0/0 le 32

ABR(config-router)# area area-id filter-list prefix bbb in

如果是骨干区域(非骨干区域),就阻止从该区域转换到其他非骨干区域(骨干区域)符合特定条件的summary lsa生成,过滤彻底。对应IOS命令为:

Router(config-router)# area area-id filter-list prefix AAA out

技术图片

技术图片

T**unnel下启用ospf:只是通告tunnel接口IP地址,分析两层IP头部**

:tunnel源是自己物理接口,目的是对方物理IP地址,用于封装外层IP头部,在使用一条默认只想对方物理IP地址,tunnel接口才能使用,再在tunnel接口运行动态路由协议

r1(config-if)#ip ospf hello-interval 10----hello发送时间

r1(config-if)#ip ospf dead-interval 40----hello死亡时间

r1(config-if)#ip ospf retransmit-interval 5-----LSU重传时间

r1(config-if)#ip ospf transmit-delay 1-------age每次加一秒

r1(config-if)#ip ospf flood-reduction-----抑制hello和30分钟刷新时间(有问题点,测试不成功)

r1(config-router)#timers pacing lsa-group 240-----30分钟刷新时间后延时240秒,等待更多的LSA延时,以便组成一个组更新,这样更加节省CPU资源,数据库大,这个时间可以相对应设置小一点

Timers spf delay interval ---- 用于修改SPF计算的延迟和间隔,默认时间为 5s/10s

(config-if)#ip ospf dead-interval minimal hello-multiplier 3----hello是333毫秒,1秒除以3得到的

修改接口网络类型!!!点对点

管理距离

r1(config-router)#distance 110-------全部都改

? OR

r1(config-router)#distance ospf intra-area 10 inter-area 10 external 150

r1(config-router)#distance 110 1.1.1.1 0.0.0.0---从1.1.1.1的router-id学到的路由修改AD值(如指向直连邻居,且直连不是ABR,ABR在这个直连后面。对于这个直连的直连接口网段不起作用,但对于对方换回接口可以,指向后面的ABR更完美)如果修改的是区域间路由,后面IP地址设置为ABR的RID,如果修改的是域内路由指向ABR的RID不会生效,因为域内路由不是ABR给我的,反之,如果修改遇见路由把IP地址设置为我域内一台路由器的RID也不会生效,因为区域间路由不是域内路由器通告给我的,而是ABR通告被我的!

r1(config)#access-list 99 per 3.3.3.0 0.0.0.255

r1(config-router)#distance 130 1.1.1.1 0.0.0.0 99---从router-id为1.1.1.1收到的3.3.3.0修改它的AD值130

r1(config-router)#distance ospf inter-area 10(区间) intra-area 20 (区域内)external 30----修改域内,区域间,及外部路由AD值

改变外部路由的metric值

r1(config-router)#default-metric 20

但是如果在重分发时候手工已经指定metric,手工指定的优先

注意:充分发直连接口进来不会生效!!!

修改参考带宽值

r1(config-router)#auto-cost reference-bandwidth 1000

一个路由器,有个G借口,有个F接口,但算出来的cost值都是1,不公平!全局生效。单位是M

这个1000M实际是替代10的8次方

1G==1 000 000 000

100M==1 000 000 00

Distribute-list过滤

r1(config)#access-list 1 deny 3.3.3.0 0.0.0.255

r1(config)#access-list 1 deny 4.4.4.0 0.0.0.255

r1(config)#access-list 1 permit any

r1(config)#router ospf 100

r1(config-router)#distribute-list 1 in

过滤acl匹配的路由进入我的路由表,但数据库中仍在,也会更新给别人

利用前缀列表来匹配路由条目:

ip prefix-list aaa seq 1 deny 192.168.100.0/24

ip prefix-list aaa seq 2 permit 0.0.0.0/0 le 32

router ospf 100

distribute-list prefix aaa in

exit

r1(config)#access-list 1 deny 3.3.3.0 0.0.0.255

r1(config)#access-list 1 deny 4.4.4.0 0.0.0.255

r1(config)#access-list 1 permit any

r1(config)#router ospf 100

rr1(config-router)#distribute-list 1 in f0/0

从f0/0接口进来的3.3.3.0和4.4.4.0的LSA计算路由的时候忽略;不能进入我的路由表,但要防止他能从其他接口进来

r1(config-router)#distribute-list 1 out

r1(config-router)#distribute-list 1 out f0/0

不会把自己的路由条目通告出去,但是ospf是通告lsa,所以这两条命令对于ospf无效

r1(config)#access-list 1 permit 4.4.4.0 0.0.0.255

r1(config)#router ospf 100

r1(config-router)#distribute-list 1 out rip

只允许RIP路由4.4.4.0能进入我的数据库,用于控制重分布进来的路由进入我的数据库(ASBR处配置)

ip prefix-list aaa seq 1 deny 34.1.1.0/24

ip prefix-list aaa seq 2 permit 0.0.0.0/0 le 32

r1(config)#router ospf 100

r1(config-router)#distribute-list prefix aaa in

从我的邻居收到ospf路由,能进我的数据库,但是34.1.1.0不能进入我的路由表

防止**LSA**向这个接口泛

仅支持**NBMA和多点接口下应用,相应接口下面必须配置(config-if)#ip os network point-to-multipoint**

(config-router)#nei 1.1.1.1 database-filter all out------基于邻居的

r1(config-if)#ip ospf database-filter all out------------基于接口的

在**NBMA接口定义邻居死亡后hello**的查询间隔

r1(config-router)#nei 1.1.1.1 poll-interval 90------NBMA下邻居死亡后仍然向这个接口发hello!!!点对多点接口不能使用这个

修改优先级

r1(config-router)#nei 1.1.1.1 priority 10----------对于1.1.1.1来说,我的优先级是10

r1(config-if)#ip ospf priority 10-------我这个接口优先级是10

最大router-id为DR

被动接口

(config-router)#passive-interface s0/1

这个接口不发送**ospf**报文

r1(config-router)#passive-interface default

r1(config-router)#no passive-interface s0/1

所有接口置为**passive,除了S0/1以外。R1连接100个分支,且只和R2建立ospf邻居情况,这100个分支又包含在network**语句中

重分发

重分发**BGP默认cost==1,其他协议====2**

重点讲解**route-map与重分发的配合问题,能match什么,set**什么??

不能把默认静态充分发进OSPF

按需链路(收费链路)禁止**hello30**分钟更新(需支持按虚链路,DC置位)但是需要在特定接口网络类型中:point-to-point

(config-if)#ip ospf demand-circuit

? donotage**标记**

(config-if)#ip ospf flood-reduction---**--发送带有donotage标记的LSA给邻居,让邻居age时间一直不变,相当于我这端每30分钟泛洪功能没有了,主要应用与大网中网络环境很稳定,每30**分钟发送更新没有必要的情况下

MTU**不匹配**

邻居起不来!!!!一直停留在**exstart状态,因为交换DBD数据库描述包,DBD描述包里有个MTU值,如果不匹配,我发的描述包对方不给确认,我会一直重发DBD描述包给对方,且状态一直停留在exstart**状态

r1(config-if)#ip ospf mtu-ignore------**忽略MTU检查(小的一方)**

或者修改接口下面的**MTU,但以太接口不能修改MTU**

? 记录ospf邻居状态

Router ospf 100

Log-adjacency-chenge [detail]-----------在控制台显示

Logging bufferad 4096 debugging-----------把ospf邻居变化存放到内存

Show logging------------------------------------查看日志

? 两个ABR选路问题**一个区域两个ABR,且COST相同,是走负载吗?不是,选择router-id大的转发**

OSPF与BGP协议联动

在存在备份链路的情况下,BGP在链路回切时,由于路由收敛速度滞后于OSPF路由收敛速度,从而造成流量丢失。

图1所示,四台设备RouterA、RouterB、RouterC、RouterD之间运行OSPF协议,并建立IBGP连接。RouterC为RouterB的备份设备。当网络环境稳定时,BGP与OSPF在设备上是完全收敛的。

正常情况下,从RouterA到10.3.1.0/30的流量会途经RouterB。当RouterB发生故障后,流量切换到RouterC。RouterB故障恢复以后,流量回切到RouterB,此时会有流量丢失。

这是因为,在流量回切到RouterB的过程中,IGP收敛速度比BGP快,因此OSPF先收敛,BGP还没有完成收敛,导致RouterB不知如何到达10.3.1.0/30。

这样,当从RouterA去往10.3.1.0/30的流量被发送给RouterB时,由于没有必要的路由选择信息,这些流量就会被丢弃。

图1 OSPF与BGP联动
技术图片

R**outer OSPF**

M**ax-metric router-lsa on-starup 5分钟**

? OR

M**ax-metric router-lsa wait-for-bgp**

? 帧中继

1,Ospf neighbor 1.1.1.1与ip ospf network broadcast

技术图片

三个点,在同一个网段,全互联PVC

由于帧中继的NBMA环境不支持广播,可使用neighbor命令指定发送hello报文或者直接把NBMA配置成广播环境也行,二选其一

全互联情况下,C选DR和路由器B选成BDR,其实在全互联情况下选DR和BDR没有什么用处,但是如果非全互联环境就不一样了

但是全互联有一个致命缺点:费用太昂贵

{(n)(N-2)}/2 就是5台设备需要10个PVC,10台设备需要45个PVC,11台设备在额外增加11个PVC,可以采用hub-and-spoke联网技术

? hub-and-spoke联网技术

技术图片

技术图片

技术图片

技术图片

技术图片

路由器C被选成DR,因为他的router-id最大,所有路由器与DR邻接,B和C之间没有直连,所以B不能成为DR的邻接邻居!!解决:路由器A始终成为DR,B和C优先级设为0就可以了

修改完成,三台设备路由表互相收敛完成,测试:

A ping 2.2.2.2 !!!!!

Ping 3.3.3.3 !!!!!

B ping 1.1.1.1 !!!!

Ping 3.3.3.3 ..........

C ping 1.1.1.1 !!!!!

Ping 2.2.2.2 ........

原因:B和C认为他们有直连关系,因为他们在同一个子网,而且网络类型为广播,在B的路由表中:去往3.3.3.3下一条直接是C的S0接口,但是他们实际没有直连PVC,肯定不通,必须让A作为中转才能通,解决方案:增加一个MAP映射

Frame-relay map ip 10.1.1.3 110 broadcast-----------------B

Frame-relay map ip 10.1.1.2 120 broadcast-----------------C

技术图片

技术图片

ip ospf network point-to-multipoint

ip ospf network point-to-multipoint------点对多点网络,我一个接口连接多个点对点

HUB可以配置成point-to-multipoint,两个分支可以配置成point-TO-POINT网络类型,但是邻居关系出不来,因为hello时间不匹配,因为多点网络hello是30s,点对点式10s

Ip ospf hello-interval 30----B和C

? IP OSPF POINT-TO-POINT

技术图片

所有路由器没有打ip ospf network point-to-point, A只能和C形成邻居关系,因为子接口是point-TO-point情况下网络类型也是point-TO-point,匹配的,但是B使用的物理接口,接口ospf网络类型任然是NO-BROADCAST非广播类型,A和B肯定无法建立邻居关系,解决:B处手工指定邻居或者在B接口使用ip ospf network point-to-point解决!!!!!

帧中继下子接口反向ARP自动失效!!!!!!!!!

以上是关于OSPF集合的主要内容,如果未能解决你的问题,请参考以下文章

OSPF中DR和BDR到底是谁先选举出来的?

OSPF(开放最短路径优先)

OSPF路由协议

OSPF路由协议

路由交换技术——OSPF

OSPF LSA报文格式详解