文章目录
一、基本概念
OSPF:Open Shortest Path First 开放式最短路径优先
1.适用范围:IGP
2.是否携带网络掩码:携带
3.算法:SPF算法,即Dijkstra 最短路径算法
4.封装:基于IP封装,协议号为89
5.ospf是一种链路状态型路由协议(传递拓扑信息),现使用ospf v2,v3用于ipv6
6.OSPF更新信息:LSA—链路状态通告 ,既包含了路由信息也包含拓扑信息
7.LSA种类: 在OSPFV2中使用 1 、2、3、4、5、7类
–路由信息:包含的接口的路由信息
–拓扑信息:路由器之间的连接关系
8.OSPF更新地址: 使用组播或单播更新,组播地址224.0.0.5 224.0.0.6
9.OSPF更新方式:使用周期性更新加触发更新 ,周期时间30分钟(LSA状态刷新)
10.OSPF支持认证(链路认证、区域认证、虚链路认证)
链路认证:两台直连路由器接口之间的认证
区域认证:在同一个区域的接口之间的认证
虚链路认证:
11.OSPF支持路由汇总(仅仅在某些特殊的路由器支持汇总)
链路状态型路由协议没有自动汇总
拓扑信息不能汇总,即只能对纯路由的LSA进行汇总(3,5,7)
12.OSPF支持区域的划分
–减少LSA数量
–减少LSA传播范围
13.OSPF非常消耗路由器资源,一个cisco设备上最大支持31个OSPF路由进程
14.OSPF使用 cost(相当于带宽)计算metric
使用每段链路的cost值之和
二、区域设计
1.ospf区域标识:使用十进制或类似于IP地址的点分十进制
2.ospf区域划分:基于接口划分
3.ospf区域类型:
骨干区域:区域0
非骨干区域:非0区域
4.ospf 路由器角色
骨干路由器:所有接口都属于区域0
非骨干路由器:所有接口都属于非0区域
ABR:区域边界路由器,其接口有属于区域0的,也有属于非0区域的,能够产生3类LSA
ASBR:自治系统边界路由器,其接口有属于ospf任意区域的,也有属于非ospf区域的,并且将不属于ospf的路由引入到ospf当中,能够产生5类或7类LSA的路由器
5.ospf区域设计原则
-必须存在唯一的骨干区域,但当整个ospf只有一个区域时,这个区域可以不是区域0
-非骨干区域必须和骨干区域相连接,非骨干区域之间不能连接
-不规则区域:不连续的0区域,或非骨干没有连接到骨干区域
比如 0->1<-0或者0->1->2
三、ospf消息数据包
<1>.hello包
建立邻居,维持邻居关系,默认hello时间10s,dead时间为30s,特殊网络类型下(NBMA)hello时间40s,dead时间120s,关系为1:4
同时开启R1和R2相连接的接口,建立邻居期间总共发了4个hello包
1.R1发出的第一个hello包
源地址为R1的接口地址12.1.1.1,目标地址为组播地址224.0.0.5
Source OSPF Router:标明了自己的router id
router-id:路由器标识符,用于标识本路由器在OSPF网络中的唯一性
router-id 选举原则: 1.手工指定最优先 2.选择最大环回接口地址 3.最大的物理接口地址
Area ID:标明了自己所在的区域
Auth Type:标明自己的认证类型,0表示不认证,1表示明文认证,2表示md5认证
Auth Data:认证密码
Hello Interval:hello时间 10s
Dead Interval:dead时间 40s
N位:特殊区域标记
-末梢区域
-完全末梢区域
-NSSA:非完全末梢区域
-完全NSSA:完全的非完全末梢区域
Designated Router:指定路由器,在MA网路中需要选举DR和BDR
Backup Designated Router:备份指定路由器
2.R2发出的第一个hello包
与R1发出的hello包类似,都是标明自己信息的
3.R1发出的第二个hello包
这里多了一个参数
Active Neighbor:92.2.2.2
表示我R1已经和R2建立邻居关系
4.R2发出的第二个hello包
同样的这里也多了一个参数
Active Neighbor:91.1.1.1
表示我R2已经和R1建立邻居关系
过程是这样的:
1.双方都发送hello包给对方,包含了自己的信息
2.双方都收到了对方的hello包,知道了对方的信息
3.双方确定了邻居关系可以建立(对方发来的hello报文包含了自己的router id),此后双方发送的hello包里边包含Active Neighbor字段表示已经建立邻居关系,也用于保活。
<2>.DBD包
数据库描述报文
1.主从选举DBD
此DBD位R2发出的第一个DBD报文,R1发出的第一个DBD也是如此
Init位: 为1表示这是我发送的第一个DBD报文
More位: 为1表示后边还有DBD没有发送
Master位: 为1表示我是主
主从选举DBD报文用于选举DBD,默认双方发送的第一个DBD报文Master位都为1,都想抢占为主
实际上router id大的会被选举为主
R1此后发送的DBD报,Master位为0,表示我不是主
R2此后发送的DBD报,Master位为1,表示我是主
2.携带目录信息的DBD
在双方主从选举DBD发送完成之后,紧接着就发送携带了目录信息的DBD
注意:这里的DBD包为隐式确认,即R1发送DBD包的序列号为上一个R2发送的DBD包的序列号,当最后一个LSDB发送完之后,这个LSDB由最后一个不携带目录信息的DBD确认
<3>.LSR包
链路状态请求
R1发送的请求R2的LSR报文
LS Type:请求的LSA的类型
Link State ID:请求的路由器的link id
Advertising Router:是由谁通告的
<4>.LSU包
链路状态更新
R2回应R1的LSU报文
包含了请求的详细信息
<5>.LSACK包
链路状态确认
用于确认对方发送的LSU。
四、OSPF邻居建立条件
1.router id必须不一致
router id用于表示本路由器在网络中的唯一性,故必须不一致
2.area id必须一致
建立邻居的两台路由器必须处于同一区域
3.认证类型和认证字段必须一致
4.hello时间、dead时间必须一致
ospf中必须一致,eigrp中没有此要求
5.特殊区域标记必须一致
建立邻居的两台路由器必须处于同一特殊区域,或者都不处于特殊区域
6.在MA网络中,网络掩码必须一致
点对点网络中不做此要求
7.必须同时使用单播或组播
与eigrp要求一致
注意:在MA网络中,所有的路由器只能和DR和BDR建立邻接关系
五、OSPF邻居状态机制
Down: 关闭状态
,接口开启,并且对端接口也开启,那么此状态就会开始发送hello包,或者在死亡时间内没有收到hello包,也会进入此状态
Init: 初始化状态
,收到了hello包,但没有包含自己的router id时,就进入此状态
Two way: 双向通信状态,即邻居状态
,收到对方的hello包中包含自己的router id,就进入了two way状态,邻居建立的标志
点到点直接进入下一状态;MA网络进行DR/BDR选举(30s),非DR/BDR间不能进入下一状态
在MA网络中需要选举DR:
1.比较接口优先级(0-255),数值越大越优
2.router id,越大越优
注意:
1.DR是接口概念
2.DR不能抢占
3.若优先级为0,视为放弃选举
4.停留在Two way状态,在MA网络中不能选出DR ,BDR
Exstart: 预启动状态
,发送主从选举DBD,就进入了exstart状态。router id 大的为主。
1.主控制在学习路由的过程中的dd序列号,最多只有一个报文等待确认,只有收到了确认,才能发送下一个报文。
即主控制每一个报文需要被ACK确认之后才能发送下一个报文。
2.此阶段协商双方MTU,若不一致则会卡在这个状态,解决办法,进入接口int s1/0
,忽略mtuip ospf mtu-ignore
Exchange: 预交换状态
,使用DBD包进行LSDB目录交互,就进入了exchange状态。
Loading: 加载状态
,使用LSR/LSU/LSack来获取未知的LSA信息,就进入了loading状态。
若LSA不能同步,则卡在此状态
Full: 转发状态
,双方LSA信息同步完成(路由收敛),邻接关系建立的标志。
Attempt: 尝试状态
,在NBMA等网络类型中,路由器之间不能自动建立邻居关系,必须使用单播邻居建立,若邻居指定发生错误,则进入该状态。
从左往右分别是area1,area0,area2
六、OSPF基本配置
在R1上起ospf
R1(config)#router ospf 100 //进程号100只具有本地意义
R1(config-router)#router-id 91.1.1.1 //1.手工指定最优先;2,最大的环回接口;3,最大的物理接口
R1(config-router)#network 12.1.1.0 0.0.0.255 area 1 //使用反掩码通告到area1区域
R1(config-router)#network 1.1.1.0 0.0.0.255 area 1
也可进入接口,通告,但如果两个都做了,产生歧义,则以接口为准
R1(config-router)#int lo0
R1(config-if)#ip ospf 100 area 1
七、OSPF三张表
<1>邻居表
R1#sho ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
92.2.2.2 0 FULL/ - 00:00:34 12.1.1.2 Serial1/1
Neighbor ID | 邻居的rid |
---|---|
Pri | 优先级,MA网络中选举DR,BDR,范围0-255,默认为1,等于0就是放弃选举 |
State | 状态,full表示邻接, - 在MA网络中会标识邻居是DR还是BDR |
Dead Time | 死亡时间,此时间内没有收到对方的hello包,则down掉邻居关系 |
Address | 对端地址 |
Interface | 自己接口 |
<2>链路状态数据库
R1#show ip ospf database
OSPF Router with ID (91.1.1.1) (Process ID 100)
Router Link States (Area 1)
Link ID ADV Router Age Seq# Checksum Link count
91.1.1.1 91.1.1.1 1334 0x80000003 0x0058F8 3
92.2.2.2 92.2.2.2 1325 0x80000002 0x004D14 2
Summary Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
2.2.2.2 92.2.2.2 1320 0x80000001 0x00CD04
3.3.3.3 92.2.2.2 1244 0x80000001 0x00226B
4.4.4.4 92.2.2.2 1182 0x80000001 0x00FD8A
5.5.5.5 92.2.2.2 1132 0x80000001 0x0052F1
23.1.1.0 92.2.2.2 1310 0x80000001 0x005F22
34.1.1.0 92.2.2.2 1254 0x80000001 0x00D99B
45.1.1.0 92.2.2.2 1182 0x80000001 0x00CC5D
Link ID | 链路标识符,就是rid |
---|---|
ADV Router | 通告路由器,就是此条lsa是由谁产生的,即产生该lsa的rid |
Age | 此条lsa的存活时间,填满整个序列空间时,将此条lsa的age置为最大,代表毒化路由 |
Seq | 序列号,用于两条相同lsa的新旧比较,使用棒棒糖序列空间;新旧比较的方法(比较较新的方法):1,最大的序列号;2,最大的检验和;3,若lsa时间差小于15分钟,则lsa age较小的为更新的。 |
link count | 一条lsa包含了几部分 |
<3>路由表
R1#sho ip route ospf
34.0.0.0/24 is subnetted, 1 subnets
O IA 34.1.1.0 [110/129] via 12.1.1.2, 00:34:11, Serial1/1
2.0.0.0/32 is subnetted, 1 subnets
O IA 2.2.2.2 [110/65] via 12.1.1.2, 00:35:18, Serial1/1
3.0.0.0/32 is subnetted, 1 subnets
O IA 3.3.3.3 [110/129] via 12.1.1.2, 00:34:01, Serial1/1
4.0.0.0/32 is subnetted, 1 subnets
O IA 4.4.4.4 [110/130] via 12.1.1.2, 00:32:59, Serial1/1
5.0.0.0/32 is subnetted, 1 subnets
O IA 5.5.5.5 [110/194] via 12.1.1.2, 00:32:09, Serial1/1
23.0.0.0/24 is subnetted, 1 subnets
O IA 23.1.1.0 [110/128] via 12.1.1.2, 00:35:08, Serial1/1
45.0.0.0/24 is subnetted, 1 subnets
O IA 45.1.1.0 [110/193] via 12.1.1.2, 00:32:59, Serial1/1
ospf共有六种路由类型
O | OSPF |
---|---|
O IA | OSPF inter area 域间路由 |
O N1 | OSPF NSSA external type 1 ;NSSA区域产生的外部路由,类型一沿途累加metric值 |
O N2 | OSPF NSSA external type 2 ; NSSA区域产生的外部路由,类型二沿途部累加metric值 |
O E1 | OSPF external type 1 ;外部路由,类型一沿途累加metric值 |
O E2 | OSPF external type 2 ;外部路由,类型二metric值不累加 |
默认AD值为110
八、OSPF的metric值计算
使用cost值之和
一条链路的cost值(路由学习入方向的接口)等于 参考带宽100M/实际带宽,
若结果大于1,则小数点后省略,若结果小于1,则直接进位到1
比如R1学习R5的环回,要计算R1右边接口(100M/1.544M=64),R2右边接口(100M/1.544M=64),R3右边接口(100M/100M=1),R4右边接口(100M/1.544M=64),以及R5的环回接口(100M/8000M=1)
则R1到达R5环回的 路由metric值应该为 64+64+1+64+1=194
在R1上查看,计算正确
5.0.0.0/32 is subnetted, 1 subnets
O IA 5.5.5.5 [110/194] via 12.1.1.2, 00:32:09, Serial1/1
若一个网段只有一个主机,则ospf会把这个网段的路由改成/32位,比如这里的5.0.0.0/32
若不想这样,可以将R5的环回接口类型改为ptp
R5(config-if)#int lo0
R5(config-if)#ip ospf network point-to-point
此时路由正常
5.0.0.0/24 is subnetted, 1 subnets
O IA 5.5.5.0 [110/194] via 12.1.1.2, 00:00:04, Serial1/1