poetry

梦入少年丛,歌舞匆匆。老僧夜半误鸣钟。惊起西窗眠不得,卷地西风。

OSPF

距离矢量路由协议

​ 路由器相互之间只更新路由表信息,并且逐条更新,依照传闻的更新,任何一台路由器对路由表的更改,都将直接影响到下游。

链路状态路由协议

​ 每台路由器都选择一个IP地址作为自己的名字,(Router-ID)

​ 将自己的每个接口的网络信息,带宽信息进行描述,做成链路状态信息

​ 将Router-ID和链路状态一起发送给自己的邻居,并且也帮助其他设备转发

​ 最终会得到全网所有路由器的链路状态信息,通过分析可以得到全网拓扑图

​ 使用最短路径算法(SPF),得到去往每个目的地的最短路线,得到路由表

简介

  • ospf在Cisco设备中的管理距离为120
  • 不使用传输层的TCP/UDP进行数据封装,更新消息直接放在网络层后,协议号为89
  • OSPF使用触发更新的机制,和邻居共享链路状态信息,而不是共享路由信息
  • OSPF有邻居的概念,使用Hello消息来建立和维护邻居,在以太网中,10s更新一次,40s没收到就判定邻居失效。
  • OSPF建立邻居有7个状态
  • OSPF使用224.0.0.5224.0.0.6来更新LSA(链路状态通告)
  • ospf宣告的环回口不管子网掩码是多少,传播的时候都时32位

名词介绍

  1. Router-ID:相当于路由器的名字,因为需要靠Router-ID去辨识每个节点,所以在一个网络中不允许出现Router-ID一样。Router-ID会以稳定性作为第一要素。

    1、Router-ID会优先选择路由器LoopBack接口的IP地址,如果有多个选择数值,选择最大的。

    2、Router-ID在没有LoopBack的情况下,会选择物理接口IP数值最大的,注意:这个接口必须要是UP状态

    3、Router-ID允许手动指定,但往往不能即使生效,除非重启,不然还是稳定保持不变

  2. 区域:Area,由于每台路由器都有全网的拓扑,如果这个网络比较庞大,那么任何一个网段的变化,都会导致OSPF路由器中链路状态数据库的数据发生变化,从而触发路由器对所有的目的地最佳路线进行重算。为了节约资源和加快路由器运行速度,所以OSPF可以进行区域划分,每台路由器只需要计算本区域的拓扑。对于其他区域的网段,只需要知道怎么离开本区域就行了。

  3. OSPF有两种区域,一种是骨干区域,区域号为0,这个是固定的,只要是骨干区域,区域号必须是0,还有一种是非骨干区域,非骨干区域的区域号除了0都可以。非骨干区域必须和骨干区域相连,在正常情况下,所有的区域都可以学习到全网所有的路由条目,在人为优化的情况下,可以让非骨干区域只学习到本区域的路由,去其他区域从默认路由走,从而精简路由表。

邻居建立过程

  1. down

表示OSPF启动了,由于某些原因,还没开始发送Hello

  1. init

表示收到了对方发给我的Hello消息,但是没有在对方的Hello消息中,看的自己的Router-ID

  1. 2-way

在收到对方发给我的Router-ID中发现了自己的Router-ID

开始选举谁做指定路由器DR

  1. exstart(预开始)

开始选举谁来主导这个链路状态信息交换的过程,选举(Slave,Master)

注意,此阶段互相传递的消息格式是链路状态数据库摘要(但是内容为空)。

  1. exchange(预交换)

由Slave发送自己的链路状态数据的摘要给Master,由Master确认之后再将Slave需要的链路状态信息发回去

  1. loading

开始发送链路状态请求,然后接收对方发送的完整链路状态信息

  1. Full

完成当前阶段的链路状态数据库同步,之后只需要维持邻居关系和触发更新

1.webp

1
2
3
4
5
6
7
8
9
10
Neighbor ID     Pri   State           Dead Time   Address         Interface
3.3.3.3 1 FULL/DR 00:00:37 192.168.23.3 Ethernet0/0


Neighbor_ID: 邻居表里记录了邻居的Router-ID
Pri: 选举DR和BDR的用的优先级,默认是1
State: 邻居建立过程中的状态和角色 [down,init,2-way,exstart,exchange,loading,full | DR,BDR,DRother]
Dead_Time: 邻居的死亡计时40s,每当收到邻居hello包的时候,就重置,计时到0,就删除邻居
Address: 建立邻居的IP
Interface: 建立邻居的接口

DR和BDR

show ip ospf interface e0/0

查看OSPF接口信息,这个信息是和OSPF有关的

  1. 在多路访问的网络(交换机所在网络)里,OSPF建立邻居关系,导致最终邻居关系较复杂,更新消息重复而多于,所以在MA网络中,选举一个路由器作为指定路由器(DR),在非DR中,再选一个BDR作为备份。当任何的更新来临时,会先发送给DB和BDR,再由DR发送给所有的DRother路由器
  2. 选取DR和BDR的时候,先看优先级,越大越优,如果是0,就不参与DR和BDR选举。如果优先级一样,就看Router-ID谁大,谁大谁就是DR,不过必须在第一台设备启动后的40s内选举,超出这个时间,就不可以抢占DR和BDR。
  3. DR和BDR在监听224.0.0.5和224.0.0.6这个地址,DRother只监听224.0.0.5这个地址,当需要更新的时候,DRother会向224.0.0.6去更新,DR会向224.0.0.5去更新消息
  4. 为了让ospf网络快速收敛,可以考虑在合适的接口上配置p2p网络类型,让ospf邻居不进行40s等待

信息查看

2.webp

路由器配置

  • R1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
en
conf t
no ip do lo
line con 0
no exec-t
logg syn
ho R1
int lo0
ip add 1.1.1.1 255.255.255.255
int e0/0
ip add 192.168.13.1 255.255.255.0
no sh
int range e0/0 , lo0
ip ospf 1 area 1
end

  • R2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
en
conf t
no ip do lo
line con 0
no exec-t
logg syn
ho R2
int lo0
ip add 2.2.2.2 255.255.255.255
int e0/0
ip add 192.168.23.2 255.255.255.0
no sh
int range e0/0 , lo0
ip ospf 1 area 1
end

  • R3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
en
conf t
no ip do lo
line con 0
no exec-t
logg syn
ho R3
int lo0
ip add 3.3.3.3 255.255.255.255
int e0/1
ip add 192.168.13.3 255.255.255.0
no sh
int e0/2
ip add 192.168.23.3 255.255.255.0
no sh
int e0/0
ip add 192.168.34.3 255.255.255.0
no sh
int range e0/1 -2
ip ospf 1 area 1
int range e0/0 , lo0
ip ospf 1 area 0
end

  • R4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
en
conf t
no ip do lo
line con 0
no exec-t
logg syn
ho R4
int lo0
ip add 4.4.4.4 255.255.255.255
int e0/0
ip add 192.168.34.4 255.255.255.0
no sh
int e0/1
ip add 192.168.45.4 255.255.255.0
no sh
int range e0/0 -1 , lo0
ip ospf 1 area 0
end

  • R5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
en
conf t
no ip do lo
line con 0
no exec-t
logg syn
ho R5
int lo0
ip add 5.5.5.5 255.255.255.255
int e0/1
ip add 192.168.45.5 255.255.255.0
no sh
int e0/0
ip add 192.168.56.5 255.255.255.0
no sh
int range e0/1 , lo0
ip ospf 1 area 0
int range e0/0
ip ospf 1 area 2
end

  • R6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
en
conf t
no ip do lo
line con 0
no exec-t
logg syn
ho R6
int lo0
ip add 6.6.6.6 255.255.255.255
int e0/0
ip add 192.168.56.6 255.255.255.0
no sh
int range e0/0 , lo0
ip ospf 1 area 2
end

当前路由器角色

  • 查看当前路由器的角色,此时R3是ABR(Area Border Router)
1
2
3
4
5
6
7
$ show ip protocals
Routing Protocol is "ospf 1"
Router ID 3.3.3.3 #Router_ID
It is an area border router #ABR
Number of areas in this router is 2. 2 normal 0 stub 0 nssa
Maximum path: 4 #最大负载均衡路径

DR/BDR

  • 查看当前网络信息,包括DR,BDR,R1的e0/0接口信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
R1#sh ip ospf int e0/0
Ethernet0/0 is up, line protocol is up
Internet Address 192.168.13.1/24, Area 1, Attached via Interface Enable
[区域为aera 1]
Process ID 1, Router ID 1.1.1.1, Network Type BROADCAST, Cost: 10
[网络类型:Broadcast]
[传输延迟1s] [状态BDR] [优先级1]
$ Transmit Delay is 1 sec, State BDR, Priority 1
[DR路由器的RouterID] [接口地址]
$ Designated Router (ID) 3.3.3.3, Interface address 192.168.13.3
[BDR路由器的RouterID] [接口地址]
$ Backup Designated router (ID) 1.1.1.1, Interface address 192.168.13.1
[时间间隔] $ $ $ $
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:05 #下一次发送Hello包是什么时候
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 3.3.3.3 (Designated Router)

P2P网络

  • 使用point-to-point网络连接R5和R6,在P2P网络内,不选DR和BDR。默认网络为Broadcast。P2P网络可以不用发组播,就能建立邻居。
1
2
3
R5(R6同理):
int e0/0
ip ospf network point-to-point

但是,只有没有多路访问的网络(网络不存在交换机)方便使用p2p连接,不然就会出现三个路由器两两交替抢占邻居的现象,即一会收到A的Hello包,和A建立邻居,一会收到B的Hello包,和B建立邻居,等到A的Hello包再来,因为P2P网络只能点对点,所以又只好断掉B的邻居和A建立邻居,循环往复。

链路数据

数据库字段

1
2
# 查看
show ip ospf database

3.webp

字段解释:

  • Link ID:(link state id),链路ID
  • ADV Router:(advertising router)发送LSA的路由器
  • Age :正计时,寿命1h,OSPF有周期性更新的行为,周期为30min,每到30min,数据库进行泛洪,将所有数据全部发出,刷新Age
  • Seq:序列号 ,十六进制,序列号有新的就用新的,OSPF认为0x80000000是错误的,会先更新,然后删除。类似RIP中的16跳。
  • Checksum :校验,MTU分组发送的时候需要校验
  • Link count:链路条数

LSA和多区域

  • LSA(Link-State Advertisement ) ,链路状态通告:链路状态通告,里面包含了路由器的ID和链路状态相关的IP地址,带宽等信息。目前在OSPF内,一共有11中LSA
  • LSU(Link-State Advertisement), 链路状态更新:链路状态更新,更新里面含有LSA
  • LSDB(Link-State Database), 链路状态数据库:数据库中会记录每个LSA更新的路由器ID,会记录序列号,序列号用16进制表示。数据库每个LSA一个计时器,这个计时器是LSA老化时间,正常情况下1h就会然这条LSA失效,但OSPF每隔30min泛洪会更新一次LSA。

stub

  • Stub(末梢区域):OSPF如果不想让非骨干区域学习到OSPF_AS外的条目,达到精简路由表的目的,可以在ABR上对末梢区域进行 area 1 stub 配置,这样ABR就不会向那个区域发送AS外的条目,还会产生一条 0.0.0.0/0 的路由,保障没有路由的情况下,这个区域也可以访问外界。本区域的所有路由器你都别忘了配置Stub,不然邻居关系无法建立。该区域不存在4、5类LSA。

stub no-summary

  • Stub no-summary:如果做到极致精简,可以让末梢区域连OSPF其他区域路由也不学习,可以在ABR上对末梢区域进行 area 1 stub no-summaryno-summary 只需要在ABR上加。Stub no-summary 也被称为完全末梢区域。该区域不存在4、5类LSA,以及除了ABR默认路由三类LSA以外的3类

nssa

  • NSSA(not so stub area):次末梢区域。由于Stub区域无法存在4、5类LSA,所以stub区域无法引入外部路由,如果使用NSSA区域来做末梢,就看可以引入外部路由条目,不过是以7类LSA的方式进入,并且会在NSSA区域边界路由器上被转为5类。area 1 nssa 默认情况下,NSSA不会像非骨干区域注入一条默认路由,不过可以手动注入一条默认路由的7类LSA:area 1 nssa default-infor orig

T-nssa

  • T-NSSA (total-not so stub area)完全次末梢区域,除了可以存在7类LSA引入外部路由以外,其他功能和stub no-summary一致。area 1 nssa no-summary

总结:·

1
2
3
4
5
6
7
8
9
`area 1 stub`  area1是末梢区域

`area 1 stub no-summary` area1是完全末梢区域

`area 1 nssa` area1是次末梢区域

`area 1 nssa default-infor-origin` area1是次末梢区域,并且通告默认路由

`area 1 nssa no-summary` area1完全次末梢区域

OSPF Codes

标识 含义
O 区域内的路由
O IA 不同区域之间的路由
OE1 区域外的路由(不是OSPF协议的路由),会累加METRIC值(默认20)
OE2 区域外的路由(不是OSPF协议的路由),不累加METRIC值(默认20),由外部重分布进来默认使用OE2。
ON1 区域外的路由,由NSSA的ASBR重发布进来的,会累加Metric值
ON2 区域外路由,由NSSA的ASBR重发布进来的。NSSA区域中的路由器没有LSA-5,用LSA7算出的external路由,就标记为ON1/2

十一种LSA

OSPF路由器会发送LSA通告,如果路由器太多,收到的通告就会很多,在进行SPF算法的时候,网络拓扑图太大,计算复杂,而且每当网络状态更新,都需要重复这样一次计算,计算量庞大。

  • 收到的LSA通告太多了,OSPF路由器的负担很
  • 内部动荡会引起全网路由器的完全SPF计算
  • 资源消耗过多,LSDB庞大,设备性能下降,影响数据转发
  • 每台路由器都需要维护的路由表越来越大,单区域内路由无法汇总
LSA类型代码 描述
1 路由器LSA,本地路由器产生,用于描述自身的链路信息,如接口、带宽、ip地址
2 网络LSA,由DR产生,用于向全网告知自己所在的局域网信息 。
3 网络汇总LSA,ABR产生,将其他区域的路由条目转发到本区域,会丢失拓扑信息
4 ASBR汇总LSA,ASBR产生,告知本区域路由如何离开自治系统
5 AS外部LSA,ASBR产生,告知本区域路由器外面的路由条目
6 组成员LSA
7 NSSA外部LSA,nssa区域路由器重发布外界路由产生,导入其他区域会被ABR修改为5类LSA
8 外部属性LSA
9 Opaque LSA (链路本地范围)
10 Opaque LSA (本地区域范围)
11 Opaque LSA (AS范围)

1

1类LSA — 路由器LSA,每台路由器都会产生,用于描述自身的接口状态。

1
2
3
4
5
6
7
8
9
10
11
12
13
$ sh ip ospf database

Router Link States (Area 1)
Link ID ADV Router Age Seq# Checksum Link count
1.1.1.1 1.1.1.1 1678 0x80000006 0x00997D 2
2.2.2.2 2.2.2.2 1621 0x80000007 0x00559F 2
3.3.3.3 3.3.3.3 1724 0x80000009 0x009362 2

路由链路状态表(区域1)
连接的ID,从哪个路由器学到的,寿命,序列号,校验位,链路数

# 查看详细信息
$ sh ip ospf database router 1.1.1.1

2

2类LSA :网络LSA,由DR产生,用于向全网告知自己所在的局域网信息 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
R1#sh ip ospf database network 192.168.13.3
OSPF Router with ID (1.1.1.1) (Process ID 1)
Net Link States (Area 1)
#头部信息
Routing Bit Set on this LSA in topology Base with MTID 0
LS age: 56
Options: (No TOS-capability, DC)
LS Type: Network Links
Link State ID: 192.168.13.3 (address of Designated Router)
Advertising Router: 3.3.3.3
LS Seq Number: 80000001
Checksum: 0x7E26
Length: 32
Network Mask: /24
#当前区域内的路由器
Attached Router: 3.3.3.3
Attached Router: 1.1.1.1

3

3类LSA —路由器汇总LSA,由ABR(区域边界路由器)产生,用来将其他区域的路由进行汇总,然后转发到本区域。ARB传递的是路由表类似的LSA,会丢失掉拓扑信息,所以区域之间是无法得知拓扑。

1
R6#sh ip ospf database summary 3.3.3.3

4

4类LSA,ASBR汇总LSA,Link state ASBR,由ABR产生,用来告知本区域的路由器如何离开本OSPF自治系统

1
2
3
4
5
6
7
#注入外部路由,并形成一条默认路由
int e0/2
ip add dhcp
no sh
ip ospf 1 area 0
router ospf 1
default-information originate always
1
2
四类LSA:				Summary ASB Link States (Area 1)
R1#sh ip ospf database asbr-summary 4.4.4.4

5

5类LSA,由ASBR产生,用来告知本区域的路由器外面的条目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
5类LSA:					Type-5 AS External Link States

R1#sh ip ospf database external
OSPF Router with ID (1.1.1.1) (Process ID 1)
Type-5 AS External Link States
Routing Bit Set on this LSA in topology Base with MTID 0
LS age: 212
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 0.0.0.0 (External Network Number )
Advertising Router: 4.4.4.4
LS Seq Number: 80000001
Checksum: 0xFAEC
Length: 36
Network Mask: /0
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 10
Forward Address: 192.168.70.2
External Route Tag: 1

7

用于在NSSA区域表示外界路由,由NSSA区域的边界路由产生,发布到其他区域时,会被ABR转换为5类的LSA。

1
2
3
4
5
6
7
8
# 需要在路由器上都配好	
router ospf 1
area 1 nssa

#在R1上引入外部路由,也就是NSSA区域的路由器上引入外部路由
ip route 11.11.11.11 255.255.255.255 null0
router ospf 1
re st su
1
2
3
4
5
6
7
8
9
10
11
12
13
14
R2的链路状态数据库中,11.11.11.11是7类LSA
Type-7 AS External Link States (Area 1)

Link ID ADV Router Age Seq# Checksum Tag
11.11.11.11 1.1.1.1 123 0x80000001 0x006BF6 0



在NSSA边界路由器,11.11.11.11被转换为了5类LSA
R5的链路状态数据库
Type-5 AS External Link States
Link ID ADV Router Age Seq# Checksum Tag
0.0.0.0 4.4.4.4 343 0x80000002 0x00F8ED 1
11.11.11.11 3.3.3.3 323 0x80000001 0x00C3A0 0

有五类LSA但没有四类的LSA一定是因为存在NSSA区域导致的。

路由汇总

由于OSPF不传递路由表信息,而是直接发送LSA信息,所以在一个区域内,所有路由器都有本区域的拓扑,所以在单个区域内无法完成路由汇总。

在OSPF中,汇总只能发生在ABR和ASBR上,这两种路由器转发的路由表的LSA信息。而其他路由器是转发拓扑信息

1
2
3
4
5
6
7
8
9
10
11
12
在R4添加
int lo10
ip add 172.16.1.1 255.255.255.0
int lo20
ip add 172.16.2.1 255.255.255.0
int lo30
ip add 172.16.3.1 255.255.255.0
router ospf 1
redistribute connected subnets
# 可以观察到R1、R3、R4等路由器都受到了路由条目明细,现在在ASBR上对路由做汇总
# 这里要注意,不能再ABR(R3)上对OSPF_as以外的路由进行汇总
summary-address 172.16.0.0 255.255.0.0

注入默认路由

在Stub网络里,注入默认路由无效,但是可以在NSSA网络注入。

1
2
3
4
5
6
router ospf 1
default-information originate
#这条命令用来产生一条五类的LSA,包含的是缺省路由信息。其它路由器收到这条LSA后,会计算出缺省路由0.0.0.0/0。

#命令生效的条件是该路由器上存在缺省路由。如果没有,而且仍然想发布这种LSA,要在命令后面加always,即
default-information originate always

5.webp

构造虚链路

OSPF路由器要成为ABR的条件,除了要同时连接多个区域,必须满足有一个接口连接area 0。

虚链路会导致故障变得复杂,线路变得不稳定,所以一般是个临时解决方案,一个全新设计的网络架构里面虚链路是不合理的。

virtual-link是ospf自带的虚链路解决方式,这种方式存在诸多问题,比如通过虚链路学习的LSA是DNA,含有DNA(do not age)的时间不会改变,这样会导致错误的LSA信息得不到更新,甚至虚链路邻居关系都不需要Hello包来维持。

R2:

1
2
3
router ospf 1
area 1 virtual-link 3.3.3.3
area 1 virtual-link 4.4.4.4

R3

1
2
router ospf 1
area 1 virtual-link 2.2.2.2

这时候,R3和R2建立了两个邻居关系,其中一个接口用的是OSPF_VL0

1
2
# 查看虚链路
show ip ospf virtual-links

HAMC

只提供完整性和可用性,不提供机密性。OSPF分为接口和区域认证,但都是明文加密的

认证和RIP&EIGRP类似。

OSPF小练习

6.webp

7.webp

区域配置

R{1~4} : area 0

R{3-5} , R{4-6} :area 1

R{3,4}的环回口:area 0

R{5,6}的环回口:area 1

R{5,6,7}:area 2

优化命令

1
2
3
4
5
6
7
8
en
conf t
no ip do lo
line con 0
no exec-t
logg syn


R1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ho R1
int e0/0
ip add 192.168.12.1 255.255.255.0
no sh
ip ospf 1 area 0
int e0/1
ip add 192.168.23.1 255.255.255.0
no sh
ip ospf 1 area 0
int e0/2
ip add 192.168.184.1 255.255.255.0
no sh
ip ospf 1 area 0
int lo0
ip add 1.1.1.1 255.255.255.0
ip ospf 1 area 0
do sh ip int bri

R2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ho R2
int e0/0
ip add 192.168.12.2 255.255.255.0
no sh
ip ospf 1 area 0
int e0/1
ip add 192.168.24.2 255.255.255.0
no sh
ip ospf 1 area 0
int e0/2
ip add 192.168.184.2 255.255.255.0
no sh
ip ospf 1 area 0
int lo0
ip add 2.2.2.2 255.255.255.0
ip ospf 1 area 0
do sh ip int bri

R3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ho R3
int e0/0
ip add 192.168.13.3 255.255.255.0
no sh
ip ospf 1 area 0
int e0/1
ip add 192.168.35.3 255.255.255.0
no sh
ip ospf 1 area 1
int e0/2
ip add 192.168.184.3 255.255.255.0
no sh
ip ospf 1 area 0
int lo0
ip add 3.3.3.3 255.255.255.0
ip ospf 1 area 0
do sh ip int bri

R4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ho R4
int e0/0
ip add 192.168.24.4 255.255.255.0
no sh
ip ospf 1 area 0
int e0/1
ip add 192.168.46.4 255.255.255.0
no sh
ip ospf 1 area 1
int e0/2
ip add 192.168.184.4 255.255.255.0
no sh
ip ospf 1 area 0
int lo0
ip add 4.4.4.4 255.255.255.0
ip ospf 1 area 0
do sh ip int bri

R5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ho R5
int e0/0
ip add 192.168.35.5 255.255.255.0
no sh
ip ospf 1 area 1
int e0/1
ip add 192.168.57.5 255.255.255.0
no sh
ip ospf 1 area 2
int lo0
ip add 5.5.5.5 255.255.255.0
ip ospf 1 area 1
do sh ip int bri

R6

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ho R6
int e0/0
ip add 192.168.46.6 255.255.255.0
no sh
ip ospf 1 area 1
int e0/1
ip add 192.168.67.6 255.255.255.0
no sh
ip ospf 1 area 2
int lo0
ip add 6.6.6.6 255.255.255.0
ip ospf 1 area 1
do sh ip int bri

R7

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ho R7
int e0/0
ip add 192.168.57.7 255.255.255.0
no sh
ip ospf 1 area 2
int e0/1
ip add 192.168.67.7 255.255.255.0
no sh
ip ospf 1 area 2
int lo0
ip add 7.7.7.7 255.255.255.0
ip ospf 1 area 2
do sh ip int bri

8.webp

目前来说,R1的1.1.1.1ping不通R7的7.7.7.7的,因为R5和R6构不成边界路由器ABR。所以需要在R3-R5,R4-R6之间构建VPN隧道。

配置隧道

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
R3
int tun 0
tu so 192.168.35.3
tu de 192.168.35.5
ip add 172.16.35.3 255.255.255.0
ip ospf 1 area 0


R5:
int tun 0
tu so 192.168.35.5
tu de 192.168.35.3
ip add 172.16.35.5 255.255.255.0
ip ospf 1 area 0

R4
int tun 0
tu so 192.168.46.4
tu de 192.168.46.6
ip add 172.16.46.4 255.255.255.0
ip ospf 1 area 0

R6
int tun 0
tu so 192.168.46.6
tu de 192.168.46.4
ip add 172.16.46.6 255.255.255.0
ip ospf 1 area 0

当虚通道建立好的时候,就可以用R1ping通R7了。

R1、R2在R{1~4}的区域中分别为DR和BDR

1
2
3
4
5
6
7
8
9
R1:
int e0/2
ip ospf priority 100

R2:
int e0/2
ip ospf priority 90

之后使用do clear ip ospf process 重置ospf 的进程

其余的链路使用P2P网络

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
R1:
int range e0/0 -2
ip ospf net point-to-point


R2:
int range e0/0 -1
ip ospf net point-to-point


R3:
int range e0/0 -1
ip ospf net point-to-point

R4:
int range e0/0 -1
ip ospf net point-to-point

R5
int range e0/0 -1
ip ospf net point-to-point


R6
int range e0/0 -1
ip ospf net point-to-point

R7
int range e0/0 -1
ip ospf net point-to-point

默认路由注入

4、R1,R2缺省路由

1
2
3
4
5
6
7
8
9
10
11
12
13
14
R1:
interface Loopback1
ip address 100.1.1.1 255.255.255.0
ip ospf 1 area 0
router ospf 1
default-information originate always


R2:
interface Loopback1
ip address 100.1.1.1 255.255.255.0
ip ospf 1 area 0
router ospf 1
default-information originate always metric 10

metrci - 度量值,越小越优

特殊区域

5、area 2为特殊区域

1
2
3
4
5
6
7
8
9
10
11
12
R5:
router ospf 1
area 2 nssa no-summary

R6:
router ospf 1
area 2 nssa no-summary

R7
router ospf 1
redistribute connected subnets
area 2 nssa
! ! ! OSPF 5类LSA比7类LSA更优先
没有开启nssa之前的路由表:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
O*E2  0.0.0.0/0 [110/10] via 172.16.46.4, 00:08:22, Tunnel0
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/1011] via 172.16.46.4, 00:01:58, Tunnel0
2.0.0.0/32 is subnetted, 1 subnets
O 2.2.2.2 [110/1011] via 172.16.46.4, 00:23:01, Tunnel0
3.0.0.0/32 is subnetted, 1 subnets
O 3.3.3.3 [110/1011] via 172.16.46.4, 00:02:22, Tunnel0
4.0.0.0/32 is subnetted, 1 subnets
O 4.4.4.4 [110/1001] via 172.16.46.4, 00:23:01, Tunnel0
5.0.0.0/32 is subnetted, 1 subnets
O IA 5.5.5.5 [110/1021] via 172.16.46.4, 00:02:22, Tunnel0
6.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 6.6.6.0/24 is directly connected, Loopback0
L 6.6.6.6/32 is directly connected, Loopback0
7.0.0.0/32 is subnetted, 1 subnets
O 7.7.7.7 [110/11] via 192.168.67.7, 00:42:06, Ethernet0/1
100.0.0.0/32 is subnetted, 1 subnets
O 100.1.1.1 [110/1011] via 172.16.46.4, 00:01:58, Tunnel0
172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
O 172.16.35.0/24 [110/2010] via 172.16.46.4, 00:02:22, Tunnel0
C 172.16.46.0/24 is directly connected, Tunnel0
L 172.16.46.6/32 is directly connected, Tunnel0
O 192.168.12.0/24 [110/1020] via 172.16.46.4, 00:23:01, Tunnel0
O 192.168.13.0/24 [110/1020] via 172.16.46.4, 00:02:22, Tunnel0
O 192.168.23.0/24 [110/1020] via 172.16.46.4, 00:01:58, Tunnel0
O 192.168.24.0/24 [110/1010] via 172.16.46.4, 00:23:01, Tunnel0
O IA 192.168.35.0/24 [110/1020] via 172.16.46.4, 00:02:22, Tunnel0
192.168.46.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.46.0/24 is directly connected, Ethernet0/0
L 192.168.46.6/32 is directly connected, Ethernet0/0
O 192.168.57.0/24 [110/20] via 192.168.67.7, 00:42:06, Ethernet0/1
192.168.67.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.67.0/24 is directly connected, Ethernet0/1
L 192.168.67.6/32 is directly connected, Ethernet0/1
O 192.168.184.0/24 [110/1010] via 172.16.46.4, 00:02:22, Tunnel0
O 192.168.197.0/24 [110/1020] via 172.16.46.4, 00:01:58, Tunnel0

装完NSSA

屏蔽外部路由,形成一条默认路由0.0.0.0/0,指向R5和R6

1
2
3
4
5
6
7
8
9
10
11
O*IA  0.0.0.0/0 [110/11] via 192.168.67.6, 00:00:05, Ethernet0/1
[110/11] via 192.168.57.5, 00:00:05, Ethernet0/0
7.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 7.7.7.0/24 is directly connected, Loopback0
L 7.7.7.7/32 is directly connected, Loopback0
192.168.57.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.57.0/24 is directly connected, Ethernet0/0
L 192.168.57.7/32 is directly connected, Ethernet0/0
192.168.67.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.67.0/24 is directly connected, Ethernet0/1
L 192.168.67.7/32 is directly connected, Ethernet0/1

路由汇总

6、R3的路由汇总

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
R3:
======
$这些回环接口配置的ip地址宣告进了area 1,所以在area 1中汇总
int lo1
ip add 172.16.1.1 255.255.255.0
int lo2
ip add 172.16.2.1 255.255.255.0
int lo3
ip add 172.16.3.1 255.255.255.0

int range lo1,lo2,lo3
ip ospf 1 area 1
router ospf 1
area 1 range 172.16.0.0 255.255.0.0


R5:
======
router ospf 1
area 1 range 172.16.0.0 255.255.0.0

R2:
======
router ospf 1
area 1 range 172.16.0.0 255.255.0.0

Question?:为什么R1读取不到R3的172.16.0.0/16的条目,而R5可以读到,因为R3和R5有一个Tunnel 吗?

在汇总之前,R1的路由表

1
2
3
4
5
6
      172.16.0.0/16 is variably subnetted, 5 subnets, 2 masks
O IA 172.16.1.1/32 [110/11] via 192.168.184.3, 00:00:05, Ethernet0/2
O IA 172.16.2.1/32 [110/11] via 192.168.184.3, 00:00:05, Ethernet0/2
O IA 172.16.3.1/32 [110/11] via 192.168.184.3, 00:00:05, Ethernet0/2
O 172.16.35.0/24 [110/1010] via 192.168.184.3, 00:37:33, Ethernet0/2
O 172.16.46.0/24 [110/1010] via 192.168.184.4, 00:37:33, Ethernet0/2

OSPF认证

7、area 0的明文认证

1
2
3
4
5
6
7
8
R1-R3,先不开启R4的明文认证
router ospf 1
area 0 authentication

#注意,下面的所有代码都是R5和R6没有添加明文认证的,这里添加上明文认证
#难关area 0学习不到7.7.7.0的路由
router ospf 1
area 0 authentication

等到40s死亡计时过了之后,就会发现R4失效:

1
2
3
4
5
6
*Jan  1 03:13:17.836: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on Ethernet0/0 from FULL to DOWN, Neighbor Down: Dead timer expired
R4(config)#router
*Jan 1 03:13:19.671: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on Ethernet0/2 from FULL to DOWN, Neighbor Down: Dead timer expired
R4(config)#router ospf 1
R4(config-router)#
*Jan 1 03:13:21.215: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on Ethernet0/2 from FULL to DOWN, Neighbor Down: Dead timer expired

一旦在R4上开启认证,R4又会重新从Down变成Full

1
2
3
R4:
router ospf 1
area 0 authentication

R3-5,R4-6密文认证

1
2
3
4
5
6
7
8
9
R3:
int e0/1
ip ospf message-digest-key 1 md5 cis_pad
ip ospf authentication message-digest

# 配置完之后,R3路由表中,R5的Dead Time会跌出30,然后直到消失,这是在R5的相应接口上也配置认证,彼此又会建立相应的连接。
int e0/0
ip ospf message-digest-key 1 md5 cis_pad
ip ospf authentication message-digest

抑制路由

8、禁止area 2内的路由被其他区域学到

1
2
3
4
5
6
7
8
9
10
11
12
13
R5:
=====
router ospf 1
area 1 range 192.168.57.0 255.255.255.0 not-advertise
area 1 range 192.168.67.0 255.255.255.0 not-advertise
area 2 nssa translate type7 suppress-fa

R6:
=====
router ospf 1
area 1 range 192.168.57.0 255.255.255.0 not-advertise
area 1 range 192.168.67.0 255.255.255.0 not-advertise
area 2 nssa translate type7 suppress-fa

OSPF命令

配置OSPF协议

1
2
3
4
5
6
7
router ospf [Process_ID]			#进程ID本地有效
network 1.1.1.0 0.0.0.255 area 0 #将1.1.1.0网段(包含子网掩码)宣告进OSPF网络
router-id 1.1.1.1 #设置Router-ID,注意需要重启生效

#基于链路的配置
int range e0/0 -1 #行入e/0、e0/1接口
ip ospf 1 area 0 #将该接口加入OSPF,并且按照配置的子网掩码宣告其接口上

配置OSPF优先级

1
2
3
4
int e0/0
ip ospf priority 10 # 默认为1
# 重置OSPF进程,重新选举
do clear ip ospf process

LSA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看1类LSA
show ip ospf database router x.x.x.x

# 查看2类LSA
show ip ospf database network x.x.x.x

# 查看3类LSA
show ip ospf database summary x.x.x.x

# 查看4类LSA
show ip ospf database asbr-summary x.x.x.x


# 查看5类LSA
show ip ospf database external x.x.x.x

# 查看7类LSA
show ip ospf database router x.x.x.x