OSPF:开放式最短路径优先协议

简介: OSPF:开放式最短路径优先协议

OSPF:开放式最短路径优先协议  

 

无类别链路状态IGP动态路由协议  

 

1.距离矢量协议:没建立邻居关系,只是泛洪

 

运行距离矢量协议的路由器会周期性的泛洪自己的路由表。通过路由的交互,每台路由器从相邻的路由器学习到路由,并且加载进自己的路由表中;对于网络中的所有路由器而言,路由器并不清楚网络的拓扑结构,只是简单的知道要去往某个目的地的方向在哪儿,距离多远(跳几下)。这既是距离矢量协议的本质。

链路状态协议:先建立邻居关系

与距离矢量协议不同,链路状态协议通告的是链路状态信息(即拓扑信息),而不是路由表。运行链路状态协议的路由器之间会先建立一个协议的邻居关系,然后彼此之间开始交互LSA(链路状态通告)。每台路由器都会产生LSA,路由器将接收到的LSA放入自己的LSDB(链路状态数据库)中。路由器通过LSDB,掌握了全网所有的拓扑信息。最后,由路由器通过SPF算法计算出最优路径,随后加载于自己的路由表中。

image.png

OSPF的特征--OSPF属于链路状态协议

 

1.支持等开销负载均衡

 

2.基于组播进行更新----224.0.0.5  224.0.0.6

 

3.支持触发更新 ; 每30min进行一次周期更新

 

触发更新 每10S发一个hello包;每30分钟收敛一次----对整体OSPF协议的集体检查,害怕哪个地方出现问题无法发现找到 类似于(体检)

4.需要结构化的部署---区域划分  地址规划

OSPF发送拓扑信息,信息量大,如果上万台路由器在一起互相连接着,节点多,且每个节点上发送的数据很多,就会很卡,地址规划就是缩小泛洪范围,提高效率,减小卡顿。

 

5.相同区域传递拓扑,不同区域传递路由表

 

注意:路由表上的信息属于拓扑信息的一部分;rip发路由表,OSPF发拓扑信息

 

区域划分的规则:

 

星型结构  0区为骨干区域;大于0则为非骨干区域,所有非骨干区域必须接入到骨干区域上。

星型结构:中间有个核心路由器向外扩散---这里可以区域化看待:

 

同时要存在域间路由器,域间路由器既工作在0区又工作在1区

 

必需要有ABR---域间路由器  两个区域相连时,必须存在ABR,ABR---同时工作在两个区域上。

星型结构:中间有个核心路由器向外扩散---这里可以区域化看待:

 

同时要存在域间路由器,域间路由器既工作在0区又工作在1区,如下图:0区为骨干区域,大于0为非骨干区域,所有的非骨干区域必须接入到骨干区域上

image.png

3.Router-ID 路由器标识符 ,用于一个OSPF域中唯一的标识一台路由器。

 

rip最大跳才15跳,所以rip工作在小型网络中;OSPF工作于大型网络,所以就得有标识自己的东西,不然路由器太多了就分不清。建议手动配置RID。

 

Router-ID的设定可以通过手工配置的方式,或 使用系统自动生成的方式。

 

定义RID值,建议使用IP地址,全网唯一,要是不进行手工配置则会自动生成-------优先配置为环回的最大数值,如果没有环回,则自动配置为最大物理接口数值。

 

4.使用COST值作为度量值:Cost=开销值=参考带宽/接口带宽;默认参考带宽为100M,整段路径cost值之合最小为最佳。

 

若接口带宽大于参考带宽,则度量值为1,可能会导致选路不佳,故而在接口带宽大于参考带宽的网络中,可以人为的修改参考带宽。

 

接口带宽大于参考带宽度量值为1:因为如果两条路的cost值一个为0.3(接口带宽300M参考带宽100M),一个为0.25(接口带宽400M参考带宽100M),那么度量值都是1的话就成负载均衡了。度量值为小数的时候会导致都认为是1,从而导致选路不佳,可以将参考带宽修改成1000M。

 

[R1-ospf-1]bandwidth-reference 1000 修改参考带宽为1000Mbits/s

 

注意:一旦修改参考带宽,需全网所有设备都修改一致

 

一:ospf的数据包类型

二:ospf的状态机

三:ospf的工作过程

四:ospf的基础配置

五:ospf的扩展配置  

一:ospf的数据包类型

1. HELLO包  用于邻居间的发现 关系建立 及保活

建立邻居关系之前要先发现邻居,以组播地址发送hello包发现邻居。一开始用于发现邻居,之后用于每10S确认保活。

DBD包(DD包)  数据库描述包  用于携带本地数据库目录

DBD包发一个目录过去,先告诉对方我有什么,比如A有2345,B有1234,那么A就知道我没有1,B就知道他没有5;这个DBD包就是知道你有什么而我没有的,还有你有的我也有的;减少数据链路的荷载。如果对方把我有的数据和我没有的都发过来,那么我有的数据就变成了重复信息。

LSR包  链路状态请求包  在查看完对端邻居的DBD包后,基于本地的位置查询LSA 随后去索要未知的LSA信息,就通过这个LSR包。

向对方要我没有的链路状态,A就去向B要1,B就向A要5。

 

LSU包 链路状态更新包 用于携带各种LSA信息

对方要链路状态,我就拿LSU包把这个你要的链路状态发过去

 

LSACK包 链路状态确认包  用于确认接收到对端的信息  

发包的顺序依照当时状态而定

二:ospf的状态机

形容这台设备在某一个时间点处于的一个状态;从启动的那刻起到收敛状态完成过程中的状态变化。

image.png


Down状态:表示未激活的状态,一旦本地发出hello包,则进入下一个状态。

 

Init状态:表示初始化状态  

 

Tow-way状态:双向通信 表示建立了邻居关系

 

经过条件匹配,成功则进入下一个状态机,失败则停留于tow-way状态

 

R1启动的快,先发hello包,没有固定先后顺序

 

R1在发出hello包之前是down状态,一旦本地发出hello包则进入下一个状态init;init状态:我发出了一个hello包或者我接收到了一个hello包就会进入这个状态

 

R2在发出hello包之前收到了R1发出的hello包,一旦接收到hello包中存在本地的ruterID (R1的名字)那么R2也会被动进入init状态

 

然后R2给R1发送hello包 ,我(R1)知道了R2的名字,且我(R1)还知道R2也知道我的名字,此时对于R1来讲R1和R2是邻居,但是此时对于R2来讲R1和R2还不是邻居。此时R1收到hello包变成2way。

 

R1给R2发送hello,R2知道了R1的名字并且R2也知道对方知道自己的名字,对于R2来说,R2和R1是邻居。R2变成2-way。

 

进入DBD和LSR是需要条件的,可能有些一辈子都是邻居关系 image.png

Exstart 状态:预启动状态  

 

Exchange 状态: 准交换状态  

 

建立邻居关系之后可以进入下一个状态了,下一个状态需要条件匹配

 

R1进入EX-start然后发一个空的数据库描述包里面有我要当主我的routerID 是什么,进行主从选举,谁胜出谁优先进入下一个状态,为主的优先分享自己的东西,即优先发送自己的LSDB包。设备比较强的先进行下一状态。

 

这里规定了先后顺序

 

exchange就是在交换目录DBD包,查看对比和自己的数据包。

image.png

Loading 状态: 加载状态  在查看完对端邻居的DBD包后,使用LSR包来询问自己位置的LSA信息,对端使用LSU包进行回复,本地还需要使用LSACK进行确认回复。

Full 状态: 邻接关系建立的标识  

下面该发LS请求包了:

 

loading状态就在干要数据发送数据和确认收到三个步骤

 

Loading 完了就进入full状态,收敛完成;full:建立邻接关系

 

要数据的时候是根据目录DBD去要的,而发送数据,给的时候是要遵循MTU(1500字节)

 

一般在OFSPF里面只有两三个人可以进入邻接关系

三:ospf的工作过程总结

 

启动配置完成后,以本地组播地址 224.0.0.5 发送hello包,Hello包将携带本地的RID值及已知的邻居的RID值(不仅告知自己的也会告知自己已知的邻居的RID),若接收到对端的hello包中有自己的RID则视为认识,于是建立邻居关系(注意这里是单向的),生成邻居表,开始条件匹配,若成功 则进入下一个阶段;不成功则永远是邻居。匹配成功后进入下一阶段:使用空的DBD包进行主从选举,对比RID,大为优且优先进入下一个状态,即优先共享数据库目录(DBD包对比),双方会将数据库目录基于本地的数据库进行对比,筛选出你有我没有的东西,之后通过LSR去要,LSU去给,LSACK去确认(使用 LSR/LSU/LSACK 来获取未知的LSA信息并加载于本地的LSDB中)。 然后启用SPF算法 基于本地LSDB生成有向图,在计算出最短路径树,在基于树形结构算出本地为起始点到达全网各个节点的最优路径,最后加载于本地路由表中,收敛完成后,开始发hello包保活,发到30分钟,开始周期更新(发DBD目录),再对比一遍,还相同就继续发hello保活,不相同就重新收敛,重新收敛是从(loading状态开始LSR/LSU/LSACK三个过程走一遍

 

周期更新即为对比数据库目录

结构突变:

 

新增一个网段  直连新增网络设备,直接使用更新包告知邻接关系,需要ack确认。

OSPF完成后,又重新插上了一个设备,导致结构突变,直接使用更新包告知邻接关系新增一个网段

 

断开一个网段  直连断开网络设备,直接使用更新包告知邻接关系,需要ack确认。

OSPF完成后,直接拔掉了一个设备

 

无法沟通: hello time 10s ,dead time 40s,时间到了就删除邻居信息。

明明连着但是包发不过去---时间问题hello time 10S,dead time 40S,连续收不到对端的四个hello包,时间到了就删除邻居信息,之后你hello包来了还能迅速的连接建立邻居关系,效率很高。

四:ospf的基础配置

 

1.首先创建一个OSPF进程(注:每个路由器都要是同一个进程即进程号要一样)

 

[R1]ospf 1 router-id 1.1.1.1  

 

创建ospf进程号为1 仅具有本地意义 同时定义RID值(不然就会自动生成),建议使用IP地址 全网需要唯一。

 

2.区域划分

 

[R1-ospf-1]area 0  进入0 区 开始规划区域

 

3.开始宣告:

 

[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

rip里面如果有1.1.1.0和1.1.2.0网段,如果只想宣告1.1.1.1,是做不到的,因为rip是主类宣告,只能宣告1.0.0.0,则1.1.1.0和1.1.2.0都会被宣告,无法做到精确宣告。而ospf可以做到精确宣告:

 

1.1.1.1   0.0.0.0    

 

其中0代表除我所对应的数以外还有0种变化,相当于宣告了一个IP地址是不能动的,就是1.1.1.1,即为精确宣告。

 

12.1.1.0  0.0.0.255

 

宣告了一个网段 ,255代表我所对应的数的位置除了0以外还有255种变化,刚好256个,而12.1.1.0的网络号是24,就相当于网段里面包含了256个IP

 

反掩码:掩码反过来  

 

192.1.0.0/26 的掩码 255.255.255.192 其反掩码就是用255把掩码的各个位一减 0.0.0.63

<R1>display ospf peer   查询详细邻居关系

<R1>display ospf brief  查询邻居表  

<R1>display ospf lsdb  查询链路状态数据库

OSPF 的pre是10

五:ospf的扩展配置

 

从邻居关系建立成为邻接关系的条件

网络类型----两个

 

①点到点的网络:在一个网段中,仅支持存在两个节点的网络。(在点到点的网络类型中,可以直接成为邻接关系)

 

②MA:多路访问---在一个网段内,存在的节点数量不限

 

在MA网络中,若所有设备均是邻接关系,则会造成大量的重复更新,故,进行DR/BDR的选举,所有非DR/BDR的设备被称之为DRother,DRother之间维持邻居关系。

 

DR--BDR   BDR--DR 邻接关系

 

DR--DRother、BDR---DRother 邻接关系

 

DRother--DRother邻居关系

image.png

只有邻接关系才能互相收发LSA

若所有人都是邻接关系,则会造成大量的重复更新

BDR是DR的备胎,DR掉线时,BDR会承担DR的职责

即DR是班长,BDR是副班长,班长负责收所有人的消息,然后比较之后给每个同学发他们没有的消息,每个同学之间不能沟通,就不会有重复的消息(重复更新)。若班长没了,副班长就接替班长的职责去给同学们收发消息。

选举规则:选举DR和BDR

 

在每个区域里面选举(area)

 

先比较参选接口的优先级  默认1  范围0-255  大为优

若参选接口的优先级相同,比较参选设备的RID,大为优

[R1-GigabitEthernet0/0/0]ospf dr-priority 2 将参选接口优先级改为2  

 

切记:ospf的DR选举是非抢占性的,故需要重启ospf进程达到重新选举的目的。

 

非抢占性:把优先级改高了之后,要重启ospf进程(不是重启路由器)进行重新参选,优先级才能改变。即并不是你把优先级改了之后你就是DS

 

退到用户视图 reset ospf process 重启ospf进程

<R1>reset ospf process  重启ospf进程

 

注意:选举是两者之间的选举

 

2.手工认证

 

在邻居间接口上定义安全密钥

 

[R1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456  

 

ospf要给账号编号1(范围1-255),rip里面是usual,一样是在接口处配置

 

每一个内网到外网都有一个硬件防火墙,所以认证在ospf一般用不到

 

手工汇总----汇总区域  ---汇总一个网段

既考虑到了传递LSA的准确性,又考虑到了传递拓扑所带来的资源减少的问题。区域和区域之间传递的是路由表---路由表信息比LSA信息少得多。

 

链路状态协议里面的距离矢量特征---ospf

image.png

AR1的ospf协议生成路由表里面应该有3条内容 23.1.1.0/24  3.3.3.0/24  2.2.2.0/24

 

AR2里面有2条 1.1.1.0/24  3.3.3.0/24

 

AR3里面有3条 1.1.1.0/24   12.1.1.0/24   2.2.2.0/24

 

和自己直连的就没有

 

注意:修改参考带宽   Rip 和ospf一样,一经修改全网全都要改

 

区域和区域之间有域间路由器就可以了(所以区域划分可以有多种、不唯一)

 

目录
相关文章
|
网络协议 安全 网络虚拟化
华为数通HCIA小型拓扑综合实验,运用OSPF动态路由协议、ACL访问控制列表,交换机生成树协议,修改交换机根桥、交换机划分vlan、链路聚合等相关数通技术、NAT地址转换以及NAT网络地址转换的配置
华为数通HCIA小型拓扑综合实验,运用OSPF动态路由协议、ACL访问控制列表,交换机生成树协议,修改交换机根桥、交换机划分vlan、链路聚合等相关数通技术、NAT地址转换以及NAT网络地址转换的配置、ACL访问控制列表的配置方法。访问控制列表的书写技巧、ACL访问控制列表的匹配原则。...
华为数通HCIA小型拓扑综合实验,运用OSPF动态路由协议、ACL访问控制列表,交换机生成树协议,修改交换机根桥、交换机划分vlan、链路聚合等相关数通技术、NAT地址转换以及NAT网络地址转换的配置
|
域名解析 网络协议 安全
自上而下的理解网络(5)——IP篇
本系列博客到此,在理解网络这一专题中,我们已经走过了不短的路程。你或许已经发现了,由于网络分层模型的存在,每一层都有明确的任务和目的,使得每一层的工作都不太复杂,上层也不需关心下层的实现方式,整个网络结构有了更强的灵活性与扩展性。在上一篇中,我们介绍了TCP协议,这种可靠的传输协议保证了将应用层的数据准确无误的传输到目的端。从网络模型上看,TCP属性传输层的协议,传输层的TCP协议数据最终会被组成成IP数据报,开始进入真正的数据发送。本篇文章,我们将进入网络世界最核心的部分:网络层。对IP协议进行介绍。
302 0
|
网络协议 算法 数据库
【计算机网络】网络层 : OSPF 协议 ( 协议简介 | 链路状态路由算法 | OSPF 区域 | OSPF 特点 )
【计算机网络】网络层 : OSPF 协议 ( 协议简介 | 链路状态路由算法 | OSPF 区域 | OSPF 特点 )
385 0
【计算机网络】网络层 : OSPF 协议 ( 协议简介 | 链路状态路由算法 | OSPF 区域 | OSPF 特点 )
|
负载均衡 网络架构
bgp选路原则【第二部】
面向逻辑谈bgp选路原则(第二部)        终于到了BGP终极解析的第二部曲——BGP选路原则。与题目相呼应,我不会直接介绍选路原则的规则,而是从时间逻辑和空间逻辑上将所有的选路原则分层分类。
2083 0
|
网络协议 网络架构 数据库
《OSPF网络设计解决方案(第2版)》一导读
OSPF也是一个你无法绕过的路由协议。从技术角度来看,由于OSPF协议的大量使用,几乎所有从事网络相关工作的人都不可避免地会涉及到该协议。正是因为如此,理解OSPF的工作原理、配置方法、故障排除,尤其是知道如何来设计一个运行OSPF协议的网络,则显得非常必要。
1876 0