OSPF
协议本身
详细资料OSPF思维导图
OSPF(Open Shortest Path First,开放式最短路径优先协议) 基于SPF(最短路径算法)所开发,是一个链路状态型路由协议,路由与路由间所传为拓扑状态,无类别协议,更新时携带子网掩码;组播更新地址为224.0.0.5/6。但是需要结构化部署(区域划分、地址规划)区域内传拓扑,区域间传路由。
5种数据包
- hello包—用于发现、建立、维持、周期保活邻居关系
- DBD包(数据库描述包)—本地数据库
- LSR(链路状态请求)—收到邻居DBD后查询其他未知信息
- LSU(链路状态更新)—回答邻居的LSU并分享本地LSA的信息
- LSack(链路状态确认)
7个状态机
- down—本地发出hello包进入下一状态
- lint—接收到存在本地router-id的hello包后,进入下一状态
- 2way—邻居关系建立,点到点网络直接进入下一状态,MA网络进行DR/BDR选举,DRother不进入下一状态
- Exstart—发送类DBD包进行主从选举,router-id大进入下一状态
- Exchange—使用真正的DBD包,进行数据库目录的共享,需要ACK确认
- Loading—使用LSR/LSU/lsack获取未知拓扑信息
- Full—邻接关系建立
起初本地为down状态,一旦本地发出hello包就进入lint初始化;接收到hello包后,若存在本地的RID,则进入2way状态;2way双向通信标志着邻居关系的建立(条件匹配:点到点网络直接进入下一状态,MA网络将进行DR/BDR的选举 DRother不得进入下一状态)Exstart预启动:发送类hello的DBD包进行主从关系的选举,RID数字大的为主优先进入Exchange准交换状态;准交换状态使用真正的DBD包进行数据库目录的共享,需要ack来进行确认,确认完毕进入Loading加载状态;加载状态使用LSR/LSU/LSack来获取未知的lsa信息,获取完毕进入full转发状态;转发状态标志着邻接关系的建立
6类LSA
类别 | 传播范围 | 通告者 | 携带信息 |
---|---|---|---|
LSA1router | 本区域 | 该区域所有路由器 | 本地直连拓扑 |
LSA2network | 本区域 | DR | MA部分网络拓扑 |
LSA3summary | 本区域 | ABR | O IA域间路由 |
LSA4asbr-summary | 除ASBR外其他区域 | ABR | ASBR的位置,所在区域用LSA1告知 |
LSA5external | 整个OSPF区域 | ASBR | OE域外路由 |
LSA7nssa-external | NSSA区域 | ASBR | ON域外路由 |
类别 | Link id | 通告者 |
---|---|---|
LSA1router | 通告者的RID(直连信息) | 本区域所有路由器 |
LSA2network | DR的接口IP地址 | DR |
LSA3summary | O IA路由目标地址(域内路由) | ABR,经过一个ABR 会修改 |
LSA4asbr-summary | ASBR的RID(位置) | ABR,经过一个ABR 会修改 |
LSA5external | OE路由目标地址(域内路由) | ASBR |
LSA7nssa-external | ON路由目标地址 | ASBR |
工作过程
启动配置完成后,本地使用组播发送hello包到所有邻居处,若收集到其他邻居的hello包,那么建立邻居关系,生成邻居表;
和所有邻居间进行条件匹配,若失败将停留于邻居关系,仅hello包周期保活即可;
若匹配成功,将建立邻接关系;邻接关系间将使用DBD/LSR/LSU/LSack来获取未知的LSA信息;当收集齐所有的LSA信息后,本地生成LSDB–链路状态数据库—数据库表;
再本地基于LSDB计算到达所有未知网段的最佳路径,然后将其加载到路由表中;
不规则区域的解决方法
- tunnel —在两台ABR上创建tunnel,然后将其宣告到OSPF协议中
缺点:选路不佳且周期hello和更新均对中间区域进行影响 - 虚链路—OSPF自带,在两台ABR上配置,使未连接骨干的ABR得知骨干的存在,之后将域间路由进行交互;取消周期的更新和邻居保活
优点:选路佳、占用中间区域资源少;
缺点:不可靠 - 多进程双向重发布,不同的进程拥有不同的RID和数据库,不同进程间的数据库是不共享的;且计算所得路径同时放置于路由表中;若多个进程同时工作于一个接口,那么仅最先工作进程生效## ospf的优化
ospfLSA的优化
-
优化非骨干区域
【1】不存在ASBR
1.末梢区域—拒绝4、5类LSA;产生一条3类缺省,需在该区域内所有设备修改
2.完全末梢区域—在末梢区域的基础上进一步拒绝3类的LSA,仅保留一条3类的缺,先将该区域配置为末梢区域,然后仅需要在ABR上定义为完全末梢即可
【2】存在ASBR
1.NSSA—拒绝4、5的LSA,不自动产生3类缺省(华为设备产生一条缺省,思科设备需手工添加);5类在NSSA区域内被转换为7类转发;离开该区域后还原为5类
2.完全的NSSA----在NSSA的基础上,进一步拒绝3/4/5类LSA,5类转7类;自动产生缺省指向ABR;先将该区域配置为NSSA,然后仅需要在ABR上定义为完全即可 -
优化骨干区域
在ABR上进行域间路由汇总;在ASBR上进行域外路由汇总
链路类型
类型type | link id | 数据data |
---|---|---|
P2P | 邻居的router id | 该网段本地接口的IP地址 |
Transnet | DR的接口IP地址 | 该网段本地接口的IP地址 |
Stubnet | 该stub网段的IP地址 | 该stub网段的网络掩码 |
Virtual | 虚链路邻居的router id | 该虚链路邻居的本地接口IP地址 |
SPF算法
SPF算法将每一个路由器作为root来计算到每一个路由器的距离,形成一个有向图,SPF算法会优先记录最小cost值的路径
优点:
域间汇总减少路由条目数量
汇总路由是在所有明细路由均消失后才删除,网络更稳定
区域划分后不同类别的LSA传播范围不同,控制更新量
不规则区域实验
实验要求:
1.R4为ISP
2.R1-R3中R3为DR,无BDR,IP为192.168.1.0/24
3.R5-R14ip地址为172.16.0.0/16
4.合理规划ip,减少LSA更新量
5.两边区域可以互相通信
子网划分(OSPFip可按区域划分)
区域 | IP网段 | 细分网段 | IP网段 |
---|---|---|---|
A0 | 172.16.0.0/19 | R5-8 | 172.16.0.0/20 |
- | - | R5环回 | 172.16.16.0/22 |
- | - | R6环回 | 172.16.20.0/22 |
- | - | R7环回 | 172.16.24.0/22 |
- | - | R8环回 | 172.16.28.0/22 |
A1 | 172.16.32.0/19 | R9骨干+环回 | 172.16.32.0/20 |
- | - | R10骨干+环回 | 172.16.48.0/20 |
A2 | 172.16.64.0/19 | R11骨干 | 172.16.64.0/21 |
- | - | R11环回 | 172.16.72.0/21 |
- | - | R12骨干 | 172.16.80.0/21 |
A3 | 172.16.96.0/19 | R13骨干+环回 | 172.16.96.0/19 |
A4 | 172.16.128.0/19 | R14骨干+环回 | 172.16.128.0/19 |
A5 | 172.16.160.0/19 | R12环回 | 172.16.160.0/19 |
网段 | IP地址 |
---|---|
R1环回 | 192.168.1.0/26 |
R2环回 | 192.168.1.64/26 |
R3环回 | 192.168.1.128/26 |
R1-3 | 192.168.1.192/26 |
R3-R4和R4-R5之间使用34.1.1.0/24和45.1.1.0/24网段
实验及各区域网段如下:
1.基本ip配置略
2.在两个区域分别启两个OSPF协议
R1(config)#router ospf 10
R1(config-router)#router-id 1.1.1.1
R1(config-router)#exit
R1(config)#interface loopback 0
R1(config-if)#ip ospf 10 area 0 可以在接口进行宣告
R1(config-if)#exit
R1(config)#interface f0/0
R1(config-if)#ip ospf 10 area 0
R1(config-if)#exit
R12右边两个环回启的RIPV2协议
R12(config)#router rip
R12(config-router)#version 2
R12(config-router)#no auto-summary
R12(config-router)#network 172.16.160.0
R12(config-router)#network 172.16.176.0
3.R1-R3区域修改接口优先级 使R3为DR 无BDR
R1(config)#interface f0/0
R1(config-if)#ip ospf priority 0 接口等级为0表示放弃选举
R1(config-if)#end
R1#clear ip ospf process 因为OSPF选举为非抢占行性,所以修改优先级后要重启进程
Reset ALL OSPF processes? [no]: y
R2略
4.R3,R5直接用tunnel
R3(config)#interface tunnel 0
R3(config-if)#ip address 35.1.1.1 255.255.255.0 配置缺省
R3(config-if)#tunnel source fastEthernet 1/0 隧道源
R3(config-if)#tunnel destination 45.1.1.2 隧道目标,必须为真是IP地址
R3(config-if)#ip ospf 100 area 0 tunnel接口划入ospf
R3(config)#ip route 172.16.0.0 255.255.0.0 tunnel 0 流量引入接口
R5(config)#interface tunnel 0
R5(config-if)#ip address 35.1.1.2 255.255.255.0
R5(config-if)#tunnel source f0/0
R5(config-if)#tunnel destination 34.1.1.1
R5(config-if)#ip ospf 100 area 0
R5(config)#ip route 192.168.1.0 255.255.255.0 tunnel 0
5.R7,R14做虚链路virtual-link
R7(config)#router ospf 100
R7(config-router)#area 3 virtual-link 1.0.1.3 Area 3为穿越区域 后面跟对端的router-id
R13(config)#router ospf 100
R13(config-router)#area 3 virtual-link 7.7.7.7
6.R12上做重发布
R12(config)#router ospf 100
R12(config-router)#redistribute rip subnets 因为R12右边是环回接口,所以只需要将环回的路由信息导入到area2即可
7.进行区域优化
Area1区域为末梢区域,可配置完全末梢
R8(config)#router ospf 100
R8(config-router)#area 1 stub
R9(config)#router ospf 100
R9(config-router)#area 1 stub
R10(config)#router ospf 100
R10(config-router)#area 1 stub
R8(config)#router ospf 100
R8(config-router)#area 1 stub no-summary
Area2为nssa区域,可进行优化
R6(config)#router ospf 100
R6(config-router)#area 2 nssa
R11(config)#router ospf 100
R11(config-router)#area 2 nssa
R12(config)#router ospf 100
R12(config-router)#area 2 nssa
R6(config)#router ospf 100
R6(config-router)#area 2 nssa no-summary
每个区域可以进行路由信息的汇总进行优化
R5(config)#router ospf 100
R5(config-router)#area 0 range 172.16.0.0 255.255.224.0每个区域的每个路由器都需要配置
8.R5和R3上写缺省,做NAT并下放缺省
R5(config)#ip route 0.0.0.0 0.0.0.0 45.1.1.1 写一条缺省指向ISP
R5(config)#access-list 1 permit 172.16.0.0 0.0.255.255 定义感兴趣流量
R5(config)#ip nat inside source list 1 interface f0/0 做nat
R5(config)#interface f0/0
R5(config-if)#ip nat outside
R5(config-if)#exit
R5(config)#interface f1/0
R5(config-if)#ip nat inside
R5(config)#router ospf 100
R5(config-router)#default-information originate 向ospf区域内路由器下方缺省
R3(config)#ip route 0.0.0.0 0.0.0.0 34.1.1.2
R3(config)#access-list 1 permit 192.168.1.0 0.0.0.255
R3(config)#ip nat inside source list 1 interface f1/0
R3(config)#interface f1/0
R3(config-if)#ip nat outside
R3(config-if)#ex
R3(config)#interface f0/0
R3(config-if)#ip nat inside
R3(config-if)#exit
R3(config)#router ospf 10
R3(config-router)#default-information originate
测试
R10可以ping通R4的环回
R1可以ping通R10的环回