OSPF协议

OSPF开放式最短路径优先
全称:Open Shortest Path First
是目前使用最为广泛的路由协议,主要因为OSPF是开放式协议,和IGRPEIGRP思科的私有协议不同。
接口敏感型的协议;

链路状态路由协议

特点:

  • 是一种链路状态路由协议,无路由环路(全局拓扑),RFC2328
  • "开放"意味着非私有的

所有的厂商都可以使用的公有化的协议;

  • 管理型距离:110(AD值)
  • OSPF采用SPF算法计算达到目的地的最短路径

什么叫链路(LINK)? = 路由器接口
什么叫状态(State)? = 描述接口以及其与邻居路由器之间的关系

OSPF metric

每个路由器都把自己当做根,并且给予累计成本Cost值来计算到达目的地的最短路径
Cost = 参考带宽(10^8) / 接口带宽(b/s)

OSPF metric详细的计算方式:

进来一条路由的所有路由器的如接口方向的累计;

OSPF报文类型

  • Hello 简历和维护OSPF邻居关系
  • DBD 链路状态数据库描述信息(描述LSDBLSA头部信息)
  • LSR 链路状态请求,向OSPF邻居请求链路状态信息
  • LSU 链路状态更新(包含一条或多条LSA)
  • LSAck 对LSU中的LSA进行确认。

OSPF区域

  • 在区域边界可以做路由汇总,减小了路由表
  • 减少了LSA洪范的范围,有效的把拓扑变化控制在区域内,提高了网络稳定性
  • 拓扑的变化影响可以只限制涉及本区域内
  • 多区域提高了网络的扩展性,萝莉与组件大规模网络

OSPF的三张表

  • 邻居表(neighbor table):

OSPF用邻居机制来发现和维护路由表的存在,邻居表存储了双向通信的邻居关 系OSPF路由器列表的信息。

  • 拓扑表(topology table):

OSPFLSA(Link state Advertisement 链路状态通告)来描述网络拓扑信息,然后OSPF路由器用拓扑数据库来存储网络的这些LSA信息

  • OSPF路由表(routing table)

对链路状态数据库进行SPF(Dijkstra)计算,而得出的OSPF路由表。

OSPF基本的运行步骤:

  • 步骤1、建立邻居关系(Establish route adjacencies)
  • 步骤2、必要的时候进行DR的选举(Elect the DR / BDR)
  • 步骤3、发现路由(Discover routes)
  • 步骤4、选择合适的路由器(Select appropriate route)
  • 步骤5、维护路由信息(Maintain routing infomation)

一、建立邻居关系
下图中为OSPF在建立邻居关系发送的Hello包中的数据

  • Hello包用来发现OSPF邻居关系并建立相邻关系,通过组播地址224.0.0.5来给ALLSPFRroutes
  • 通告两台路由器建立相邻关系必要的统一的参数。
  • 在以太网和帧中继网络等多路由访问网络中选举制定路由器(DR)和备用制定路由器(DBR)

OSPF的网络类型

  • BMA广播性多路访问
  • Point-to-Point 点对点
  • NBMA非广播型多路访问

以上三种是根据某一个路由器接口的二层封装来识别这个路由器的这个接口应该是OSPF的网络类型,从而影响到OSPF在这个接口上运转.

  • 点对多点

不是路由器自己设别,需要手工配置

LSA的泛洪解决方式:

选举DRBDR

这里需要注意:DRBDR的选举,只在以太网(MA)或者是Frame relay的方式才会进行,并且DRBDR的选举,会影响路由器之间建立邻居关系的时间,因为在建立邻居关系的时候,会穿插着进行DRBDR的选举。

  • 为减小多路访问网络中的OSPF流量,OSPF会选举一个制定路由器(DR)和一个备用制定路由器(BDR)
  • 选举规则:最高接口优先级被选作DR,如果优先级相等(默认为1),具有最高的路由器ID(Router-ID)的路由器被选举程DR,并且DR具有非抢占性
  • 制定路由器(DR):DR负责使用该变化信息更新其他所有OSPF路由器(DRouter)
  • 备用制定路由器(BDR):BDR会监控DR的状态,并在当前DR发生故障时接替其角色

RouterID

用于表示OSPF路由器的ID,全网唯一性;可手动配置,也可动态选举(有Loopback接口时,选择最高的Loopback IP地址;否则,选择最高活跃物理接口的IP地址)。

LSA泛洪

当网络中某一台路由器R1线路发生变化时,R1会通过组播地址224.0.0.6发送通知LSA,而一个OSPF网络环境中,只有DRBDR会监听这个地址,也就是说该网络中,只有DRBDR会接收到通知
DR接收到后,再通过组播地址224.0.0.5发送变更通知LSU,改地址代表网络中所有运行OSPF协议的路由器都会监听224.0.0.5地址,并受到通知
路由器收到包含变化后的LSALSU后,更新自己的链路状态数据库,过一段时间(SPF延迟),对更新的链路状态数据库执行SPF算法,必要时更新路由表。


OSPF基本配置

  • 开启OSPF进程
  • 宣告特定的网络到OSPF区域

通配符掩码

通配符是一个用于决定哪些IP地址位该精确匹配(0代表精确匹配)哪些地址被忽略的32位数值,通常用于处理访问控制列表(ACL)、OSPF和EIGRP等路由协议的网络通告。

掩码:1位表示网络号;0位表示主机位。掩码用于区分IP地址中的网络及主机部分
通配符:1位表示无所谓;-位表示需要严格匹配。通配符用于决定一个IP钟的那些为该匹配

下面是实际配置:
根据下图中的拓扑配置OSPF

R1配置:

R1>en
R1#conf t
R1(config)#int s 0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#
R1(config-if)#ex
R1(config)#router ospf 1
R1(config-router)#network 192.168.1.0 0.0.0.255 area 0

R2配置:

R2>en
R2#conf t
R2(config)#int s 0/0
R2(config-if)#ip add 192.168.1.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#ex
R2(config)#int s 0/1
R2(config-if)#ip add 192.168.2.1 255.255.255.0
R2(config-if)#no sh
R2(config-if)#ex
R2(config)#router ospf 1
R2(config-router)#network 192.168.1.0 0.0.0.255 area 0
*Mar 1 00:05:06.847: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.1 on Serial0/0 from LOADING to FULL, Loading Done # 这里提示邻居关系已经建立
R2(config-router)#network 192.168.2.0 0.0.0.255 area 0

R3配置:

R3>en
R3#conf t
R3(config)#int s 0/0
R3(config-if)#ip add 192.168.2.2 255.255.255.0
R3(config-if)#no sh
R3(config-if)#ex
R3(config)#router ospf 1
R3(config-router)#network 192.168.2.0 0.0.0.255 area 0
*Mar 1 00:06:41.635: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.2.1 on Serial0/0 from LOADING to FULL, Loading Done # 这里提示邻居关系已经建立

验证:

R1:

R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    E1 - OSPF external type 1, E2 - OSPF external type 2
    i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
    ia - IS-IS inter area, * - candidate default, U - per-user static route
    o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
C    192.168.1.0/24 is directly connected, Serial0/0
O    192.168.2.0/24 [110/128] via 192.168.1.2, 00:00:05, Serial0/0
R1#ping 192.168.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/14/32 ms

R3:

R3#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    E1 - OSPF external type 1, E2 - OSPF external type 2
    i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
    ia - IS-IS inter area, * - candidate default, U - per-user static route
    o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
O 192.168.1.0/24 [110/128] via 192.168.2.1, 00:00:14, Serial0/0
C 192.168.2.0/24 is directly connected, Serial0/0
R3#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/18/36 ms

此时可以看到192.168.1.0/24192.168.2.0/24网段都能互通,完成。

最新文章

  1. java服务器端编程
  2. Flowplayer-playlist
  3. listview 设置数组为空
  4. jQuery 其他操作
  5. 强大的内网劫持框架之MITMf
  6. linux文件的通用操作方法学习
  7. 关于struts2的modelDriven
  8. "ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效"的快速解决方法
  9. Java中swap解惑
  10. Java条形码/二维码生成和解析
  11. 最全的命令行(gradle)打包安卓apk
  12. Yii2整合AdminLTE后台主题
  13. javascript的数组之reverse()
  14. 第一天 Requests库入门
  15. k8s搭建问题(1)--OOMKilled
  16. PLSQL 使用技巧汇总贴(一个坑)
  17. SecureCRT安装使用
  18. MT【92】空间余弦定理解题
  19. FTP主动模式与FTP被动模式所需的端口
  20. C#基础--------------------C#正则表达式

热门文章

  1. [2018-01-13] 安装Django的一些笔记
  2. python——自行实现sorted函数
  3. RocketMQ ACL使用指南
  4. PHP结合SQL语句写一句话木马
  5. Ansible之playbook拓展
  6. nyoj 114-某种序列 (python EOFError, List, append)
  7. nyoj 111-分数加减法 (gcd, switch, 模拟,数学)
  8. Python3安装mysql模块
  9. shell配置文件
  10. 【NServiceBus】什么是Saga,Saga能做什么