OSPF:开放式最短路径优先协议
无类别链路状态IGP动态路由协议
- 距离矢量协议:运行距离矢量协议的路由器会周期性的泛洪自己的路由表,通过路由之间的交互,每台路由器都从相邻的路由器学习到路由条目,随后加载进自己的路由表中。对于网络中的所有路由器而言,他们并不清楚整张拓扑的结构,只是简单的知道要去往某个地方方向在哪儿,距离多远。这既是距离矢量协议的本质。
- 链路状态协议:与距离矢量协议不同,链路状态协议通告的是链路状态,而不是路由表。运行链路状态协议的路由器之间会首先建立一个协议的邻居关系,然后彼此之间开始交互LSA=链路状态通告。每台设备都会产生自己的LSA,路由器将接收到的LSA信息放入自己的LSDB(链路状态数据库)中。路由器通过自己的LSDB,便掌握了全网的拓扑。最后,路由器将计算出最优路径加载进自己的路由表中。
支持同开销负载均衡
基于组播进行更新----224.0.0.5 224.0.0.6
支持触发更新 , 每30min周期更新一次
需要结构化的部署----区域划分---地址规划
OSPF在相同区域内传播的是,区域之间传播的是
区域划分的规则:
- 星型结构 骨干区域为0去,所有大于0的区域 都是非骨干区域,所有非骨干区域必须接入到骨干区域上
- ABR---域间路由器 两个区域互联时,必须存在域间路由器ABR,且ABR同时工作在两个区域
Router ID 路由器标识符 , 用于在一个OSPF域中唯一的标识一台路由器,RID必须唯一。
RID的设定可以通过手工配置的方式,或使用系统自动生成的方式。 (切记:务必使用手工配置的方式)
使用系统自动生成-----有限配置环回的最大数值,如果没有环回则选择最大的物理接口。
使用cost值作为度量值;cost=参考带宽/接口带宽;参考带宽默认为100M;整段路径cost值之合最小为最佳
若接口带宽大于参考带宽,则度量值为1 ,故会导致选路不佳,所以在接口带宽大于参考带宽的环境中,可以认为修改参考带宽。
一:OSPF的数据包
二:OSPF的状态机
三:OSPF的工作过程
四:OSPF的基础配置
五:OSPF的扩展配置
OSPF的数据包
- Hello包 用于邻居间的发现 关系建立 和 周期保活
- DD包 数据库描述包 用于携带本地的数据库目录
- LSR包 链路状态请求包 在查看完对端的DD包后,基于本地的LSA进行信息查询,随后去索要。
- LSU包 链路状态更新包 用于携带各种LSA信息
- LSack包 链路状态确认包 表示确认收到
OSPF的状态机
Down状态:表示未被激活的状态,一旦本地发出hello包,或接收到hello包,立刻进入下一个状态机
Init状态:表示初始化的状态
TOW-WAY状态:双向通讯建立 表示建立了邻居关系
如何从Init状态进入TOW-WAY状态:
条件匹配:
Exstart 状态 :预启动 使用不携带数据库目录的DD包进行主从选举,RID大为主,优先进入下一个状态机
Exchange 状态:准交换 携带具体数据库目录的DD包进行目录交换,需要ack确认
Loading状态: 加载 在查看完对端的DD包后,使用LSR LSU 及 LSACK 进行LSDB的同步。
FULL 状态: 转发 邻接关系建立的标志
三:OSPF的工作过程
启动配置完成后,本地组播 224.0.0.5 发送hello包;
Hello包将携带本地的rid值,以及本地已知的所有邻居的rid值;
若接收到来自对端的hello包中,存在本段的rid,那么视为双方认识,邻居关系建立;
生成邻居表
邻居关系建立后,开始条件匹配,匹配失败将永远停留于邻居关系,仅hello包保活即可;
若条件匹配成功,则表明可以建立邻接关系
先使用不携带数据库目录的DD包进行主从选举,rid大为主,优先进入下一个状态(优先共享自己的数据库目录)
最后在基于对端的DD包查询本地的LSDB,筛选出自己所需要的LSA
之后使用LSR LSU LSACK 来获取未知的LSA信息;
最终生成数据库表(LSDB-链路状态数据库表)
之后启用SPF算法,基于本地的LSDB生成有向图,在计算出最短路径树,在基于树形结构算出本地到达所有位置的最短路径,加载于本地的路由表中;
收敛完成后,hello包周期保活;
每30min邻接关系之间,在进行DD包的比对,若一致,则继续保活,若不一致则重新收敛。
结构突变:
- 新增一个网段:直连新增网段的设备 直接使用更新包告知邻接关系 需要ack确认
- 断开一个网段:直连断开网段的设备 直接使用更新包告知邻接关系 需要ack确认
- 无法沟通: hello time 10s , dead time 40s ,时间到了就删除邻居信息
OSPF的基础配置
[R1]ospf 1 router-id 1.1.1.1 创建ospf进程, 进程号为1, RID为1.1.1.1
[R1-ospf-1]area 0 进入0区
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[R1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
反掩码:掩码反过来
<R2>display ospf peer 查询邻居关系
<R2>display ospf peer brief 查询邻居表
<R2>display ospf lsdb 查询数据库表
<R2>display ospf lsdb router 2.2.2.2 打开数据库表种的详细目录 (类型+ID)
修改参考带宽 注:单位
[R2]display ospf routing 查看ospf生成的路由表
OSPF的扩展配置
- 从邻局关系成为邻接关系的条件
网络类型----两个类型
①点到点的网络------在一个网段中,仅支持存在两个节点
②MA:多路访问---在一个网段中,支持存在的节点不限
在点到点的网络类型中,所有邻居关系将直接成为邻接关系
在MA网段中,若所有设备间均是邻接关系,将导致大量的重复更新;故进行DR/BDR的选举。
所有和DR/BDR设备相连的设备之间,为邻接关系
所有非DR/BDR的设备统一称之为DRother
选举DR/BDR的规则:
①先比较参选接口的优先级 默认为1 范围0-255 大为优
② 若接口的优先级相同,比较参选设备的RID,大为优
[R1]interface g 0/0/0 进入参选接口
[R1-GigabitEthernet0/0/0]ospf dr-priority 2 将该接口在sopf协议中 DR参选时 优先级设置为2
DR的选举是非抢占性质的,若参选接口的优先级为0,则视为放弃参选。
<R1>reset ospf process 重启ospf进程
手工认证:在相邻的设备之间定义安全密钥
[R1]interface g 0/0/0 进入相邻接口
[R1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 666666
3.手工汇总------汇总区域
[R2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.252.0 在0区中进行路由汇总发往其他区域
注意:必须要在域间路由器上进行汇总,汇总那个区域就进入那个区域去做。
4.被动接口-----沉默接口---仅接收不发送路由信息,只能用于链接用户pc端的接口;不得用于路由器之间。
[R1-ospf-1]silent-interface g 0/0/1 在ospf1进程中,将g0/0/1接口设置为被动接口
5.加快收敛----改计时器
Hello time 10s dead time 40 s
切记:邻居间直连接口的 hello time 若不一直 则 该接口的dead time 就会自动关闭 将无法建立邻居关系
修改时不建议修改的过小 ---- 不建议修改
[R1-GigabitEthernet0/0/0]ospf timer hello 10 将该接口 的hello time 修改为10 s
6.缺省路由----在连接的边界路由器上,配置一条缺省路由,随后该设备将向内网发送缺省路由目的地指向自己。
[R3-ospf-1]default-route-advertise always 下发缺省路由