OSPF(Open Shortest Path First)是一个内部网关协议(Interior Gateway Protocol,简称IGP)。与RIP相对,OSPF是链路状态路有协议,而RIP是距离向量路由协议。 链路是路由器接口的另一种说法,因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由表。
区域:路由器A(DR)、路由器B(BDR) |
区域:路由器C、路由器D、路由器E、路由器F |
选举DR、BDR是为在广播多路访问中减少连接关系的建立,优化性能
默认Router-ID最大是DR,第二大是BDR,其他是Drother
DR一旦被选定就不会被抢占,
Drother会通过224.0.0.6向DR和BDR通告网络状态信息,DR会通过
224.0.0.5向所有邻居通告信息
OSPF5种分组
1、Hello | 发现邻居并建立和维护邻居关系 (Hello报文) |
---|---|
2、DataBase Description | 检查所有路由器的LSDB是否同步(数据库描述报文DBD——没有明细只有摘要) |
3、Link-State Request | 向另外一台路由器请求特定的链路状态记录 (链路请求报文LSR——双方交互LSR) |
4、Link-State Update | 发送被请求的链路状态记录 (链路回应报文LSU——回应路由明细) |
5、Link-State Acknowledgment | 对其他类型的分组进行确认 (链路确认报文LSA) |
名词解释
1、传送的LSA link status advertisement 链路状态通告,包括拓扑信息
具体包括:网段的前缀 掩码 连接的路由器的哪些接口 直连哪些路由器
LSA分为7中类型
某些包含的是拓扑信息 但是有些包含的是路由信息
2、LSDB 他是LSA的的集合 链路状态数据库
对此进行spf 算法 得到spf 树 (基于cost代价)再得出最优的路由 并将其加入到路由表中
3、既支持vlsm 可变掩码、又支持 cidr(无类别域间选路)
4、封装
layer2| ip |ospf| fcs
直接封装到IP报头内 上层协议号为89 eigrp为88
详解
一、hello发送周期分为10s和30s两种,hello hold的时间为发送时间*4即40s或120s
二、dbd数据库描述报文 包含lsa的报头 即告诉邻居路由器 本地的lsdb中包含哪些LSA信息
同步lsdb过程中如果没有此描述可能会发送重复的LSA 造成资源的浪费导致低效LSA中除了拓扑
或路由信息的载荷外还有LSA的报头也叫LSA的摘要,报头中包含此LSA的标识,从而避免发送重复的LSA信息
三、路由器请求邻居有但是本地没有的LSA,以保证lsdb一致,根据交互的dbd,
将没有的LSA的报头放在LSAR中,表明需要的LSA
四、根据上面的一条 将邻居请求的LSA信息 放在LSU中由本地路由器发送给邻居
LSU包含完整的LSA信息
五、LSACK为确认机制 由OSPF定义的确认机制
ospf定义了两类的确认 一种为显式的确认 另一类为隐式的确认(基于序列号的确认机制)
前者收到一个报文 针对此报文 生成一个单独的确认报文
(只有ospf支持确认)后者收到一个报文 使用相同的报文再发送回来 序列号设置为一致 既传输了信息 又做了确认
Init——初始化;
two-way——双向通信状态;
Exstart——交换初始化状态;
exchange —— 交换状态;
loading ——加载状态;
Full—— 完全邻接
down —— 挂了
1类:所有OSPF路由器都会产生,只在区域内传播
2类:DR产生,只在区域内传播
3类:ABR产生,在相邻的两个区域相互传播
4类:ABR产生,向和ASBR不在同一区域的其他区域传播,用于表示ASBR
5类:ASBR产生,向整个OSPF协议区传播,用于描述另一个协议域的路由信息
7类:NSSA区域中的ASBR产生,用于向NSSA区域通告外部路由
1、dis ospf pee b ##查看邻居关系
dis routing-table pro
2、ospf 1 route 1.1.1.1 ####OSPF指定个route-id、1是表示,只在本区域有效
route id 1.1.1.1 ###全局模式下配置 这个router-id所有协议生效
3、reset ospf 1 process graceful-restart ###1是进程号 重启ospf
4、ospf 配置方法
ospf 1 route 1.1.1.1 ###配置route-id
ospf 10 ##启动ospf 它的进程号是10
area 0 ###进入区域0 骨干区域
network 20.0.0.0 0.0.0.3 ###宣告网段 20.0.0.0 反掩码 0.0.0.3 (32位)
R1配置
[R1]int loo0
[R1-LoopBack0]ip add 1.1.1.1 32
[R1-LoopBack0]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 13.0.0.1 24
[R1]ospf ?
INTEGER<1-65535> Process ID
mib-binding Mib-Binding a Process
router-id OSPF Private router ID
valid-ttl-hops Valid GTSM TTL hops
-instance VPN routing/forwarding Instance
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 13.0.0.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
R2配置
[R1]int loo0
[R1-LoopBack0]ip add 2.2.2.2 32
[R1-LoopBack0]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 13.0.0.2 24
[R1]ospf 1 router-id 2.2.2.2
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 13.0.0.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
R3配置
[R1]int loo0
[R1-LoopBack0]ip add 3.3.3.3 32
[R1-LoopBack0]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 13.0.0.3 24
[R1]ospf 1 router-id 3.3.3.3
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 13.0.0.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
抓包最后一个hello报文,ospf开启之后选举DR和DBR。
注:
1.一般手工配置的router-ID ,DR和DBR的选举依据配置ospf的主次顺序。第一配置的优先选举DR其次是DBR。
将之前的DR——R1shutdown之后
BDR——R2变为DR
小弟R3——DBR
将之前的DR——R1shutdown之后
BDR——R2变为DR
*shutdownR2*
*R1——DR*
*R3——BDR*