1、OSPF简介
开放式最短路径优先OSPF是IETF组织开发的一个机遇链路状态的内部网关协议(Interior Gateway Protocol);其中开放式代表公有协议,不受厂商的限制,在任意设备上使用,应用最广泛的协议。版本:IPV2/IPV3,本文的OSPF均为OSPF IPV2协议。
2、OSPF的优点
作为基于链路状态的协议,除了能够解决RIP所面临的诸多问题以外,还有以下四点优点:
①、OSPF采用组播形式收发协议报文,组播地址是:224.0.0.5(.5代表OSPF内所有的路由器)/244.0.0.6(代表OSPF指定路由器DR);
②、支持无类型域间选路;
③、支持对等价路由器进行负载分担:路径开销相等的情况下,相等的两条路都可以选择;
④、支持报文认证。
3、Router-ID
①、OSPF的术语是Router-ID,一台路由器指定唯一的Router-ID。一旦设定无法更改。若想更改需要重启OSPF进程,但是重启的风险:网络需要重新收敛,重新计算,数据传输有风险;
②、Router-ID的设定可以通过手工配置,用32位点分十进制表示的。一般指的就是回环地址(loopback 0),因为loopback 0属于虚拟主机,接口不会断掉,从而保证了协议的稳定性。
4、OSPF Cost
①、OSPF使用cost“开销”作为路由度量值;
②、OSPF接口cost=100M/接口宽带,其中100M为OSPF的参考带宽,可以修改。数值取整,并非四舍五入;
③、每一个激活OSPF的接口都有一个cost值
④、一条OSPF路由的cost由该路由从起源一路到达本地所有入接口cost值得总和,具体含义看下图。
R1:cost=1;R2:cost=50;R3:cost=1
R1–R2的cost值=50+1;
R1–R3的cost值=50+1+1
1、OSPF的三张表
①、邻居表(peer):是一种可靠的路由协议,需要先建立OSPF邻居关系之后才能发送hello报文,建立邻接关系(全毗邻的邻居关系),网络收敛,形成邻居表;
OSPF邻居关系:直连的路由器是邻居
邻接关系:全毗邻的邻居关系
②、链路状态数据库(LSDB)
OSPF是由LSA(链路状态通告)来描述网络拓扑信息的,用LSDB存储网络的LSA,运行OSPF时LSDB表必须同步
③、OSPF路由
基于LSDB进行SPF(Dijkstra算法是Dijkstra发明的)计算,得出路由表
2、OSPF五种报文
OSPF Hello报文:邻居到邻接关系,中间发送hello报文,到网络收敛之后,仍会发送hello报文,周期性是10s,为了确认邻居仍然存在,若40s没有响应(down),即4倍的周期性时间,就重新寻找邻居(发的组播是255.0.0.5);
OSPF DD报文:描述LSDB,相当于携带LSA头部信息,一个摘要;
OSPF LSR报文:链路状态请求。用于向对方请求所需的LSA,会携带具体的信息;
OSPF LSU报文:用于向对方发送其所需要的LSA,LSA是承载在LSU报文里面的,注意:抓包时只能发现LSU;
OSPF LSAck报文:确认报文。对收到的LSA进行确认。
3、OSPF邻居关系的建立
那么报文从宏观和细节两个方面了解:
①、宏观(四步)
第一步:建立关系R1发送hello包,R1的route-id会记录进去,R2收到hello信息,只有R1的1.1的信息,R2会再记录1.2,这时R2再回hello包给R1时,就建立了关系;
第二步:首先协商主(master)/从(slave)关系,为了选择谁先发送DD报文;发送DD报文,交互LSA头部摘要信息;
第三步:包含LSR(请求)、LSU(发送LSA)、LSAck(确认);
第四步:同步之后进入OSPF全毗邻的邻接关系。
②、细节(即OSPF邻居关系的建立有七种状态)
down状态:时间很短,开启了OSPF协议,还没有收到hello包;
INT状态:OSPF协议启动之后立马发送hello包,R2刚收到R1的hello包,在R1里面只建立了自己的ip,还没有R2的信息,没有双向建立,对于R2来说把R1置于INT状态,在R2里面去设置;
Two-way状态:R2发送自己的ip,把邻居设为R1,双向关系建立之后R1就是Two-way状态;MA网络会选举DR(指定路由器)、BDR(备份指定路由器)(这两个名词后面会做详解);
Ex-start状态(就绪状态):发送DD报文,产生序列号(Seq=x),route-id 大的为主,选择主从关系的时候,DD报文是不携带LSA头部关系的,标志位:I、M、MS
I=1:正在协商主从,I=0:确认主从;
M=1:代表还有DD报文要发送 ,M=0:表示发送DD报文是最后一个;
MS=1:表示报文是主(master)发的,MS=0,表示报文是从(slave)发的;
**Exchange状态:**交换信息,确定主从,开始携带(LSA头部信息)摘要,I=0,MS=0置为从,master发送DD报文11,slave就用原来的DD报文,也是11,这时主再发,主需要+1,DD报文就是12。周而复始,是交互的过程,等到R1和R2都没有了,就进入下一个阶段;
**Loading状态:**发LSR请求–收到全部的信息发送LSU信息–LAck ,R1和R2都是Loading;
**FULL状态:**交换结束
1、DR、BDR的特性
在上面提到OSPF邻居关系的建立的Two-way状态时,MA网络会选举DB、BDR,下面详细讲解下概念以及工作原理:
1)选举规则:先优先级大的,若优先级相同,选routeid大的,默认优先级:1,可选范围是0-255,若没有0则不参加选取;
2) 没有抢占性
DR:指定路由器
BDR:备份指定路由器
在OSPF系统中,建立邻居关系之后,会存在DR和BDR,若DR坏了,BDR承载,当DR恢复正常之后,不会变成BDR,不存在抢占
DR BDR监听组播地址224.0.0.6
DRother 监听组播地址 224.0.0.5
路由器除了被定于为DR和BDR,其余都是DRother。
2、LSA的泛洪
仍看上图
路由器R3用224.0.0.6通知DR及BDR–DR、BDR监听224.0.0.6这一组播地址–DR向组播地址224.0.0.5发送更新以通知其他路由器–所有的OSPF路由器监听224.0.0.5这一组播地址–路由器收到包含变化后的LSA的LSU后–更新自己的LSDB,过一段时间(SPF延迟)-对更新链路状态数据库执行SPR算法–更新路由表
3、OSPF area(区域)的概念
①、单区域的问题:
LSA泛洪严重,OSPF路由器的负担很大;
区域内部动荡会引起全网络路由器的SPF计算;
LSDB庞大,资源消耗过多,设备性能下降,影响数据转发;
每台路由器都需要维护的路由表越来越大,但区域内路由无法汇总
那么就要划分多区域
②、OSPF多区域的优点:
※减少了LSA洪泛的范围,有效的把拓扑图变化控制在区域内,达到网络优化的目的;
※在区域边界可以做路由汇总,减少了路由表
※充分利用OSPF特殊区域的特性,进一步减少了LSA泛洪,从而优化路由
※多区域提高了网络扩展性,有理由组件大规模的网络
area 0位骨干区域,负责在非骨干区域之间中专有“区域边界路由”贵大的链路状态通告信息。area 0 是骨干区域,是必须要有的区域,有且只有一个,若存在多区域,每个区域都要跟area 0相连,area1/2 标准区域
除了骨干区域,还可以配置一下四种区域类型:
stub 末梢区域:后面没有路由器设备 R5
totally 完全末梢区域:只有一条默认路由出去,R4
nssa 非完全末梢区域:完全的不够彻底,R3–R4这一段在OSPF的末梢,但是后面还连着起亚区域,就叫非完全末梢区域,跑的就是7类LSA,不会泛洪到其他区域
totally nssa 完全非完全末梢区域
③、路由器的角色名称:
IR:区域内路由器
ABR:区域边界路由器ABR
BR:骨干路由器
ASBR:AS边界路由器
4、OSPF网络类型(此点仅做了解即可):
1、OSPF的基础配置
先配置各接口ip
再设置loopback 0 ip地址
进入全局配置ospf
ospf 1 创建OSPF进程号
ospf 1 router-id 1.1.1.1 指定OSPF路由地址
area 0 配置骨干区域
network 192.168.1.0 0.0.0.255 在骨干区域配置特定接口
ospf cost 9 进接口配置cost值
2、OSPF的查看及验证
display ospf brief 查看ospf协议相关运行参数
display ospf per 查看ospf邻居表
display ospf lsdb 查看lsdb表
display ospf routing 查看ospf路由
ospf dr-priority 255 修改OSPF DR的优先级
OSPF使用LSA(链路状态通告)来在网络中的路由器之间交换网络拓扑信息。LSA详尽地描述了网络的拓扑,OSPF总共有LSA-1、LSA-2、LSA-3、LSA-4、LSA-5、LSA-7共6类LSA他们分别拥有不同的职能
1、Type-1 LSA:Router LSA
又称:LSA1或者type-1 LSA,每一台运行OSPF的设备都会产生LSA-1;
2、Type-2 LSA: Network LSA
只在多路访问MA网络中存在
3、Type-3LSA: Summary LSA
汇总LSA,可通过操作拦截
4、Type-4 LSA:ASBR Summary LSA
告诉其他区域ASBR所在的位置,根据LSA-5而来
5、Type-5 LSA:External LSA
外部LSA,描述外部信息,不属于任何一个区域
6、Type-7 LSA: NSSA LSA
与LSA-5只是称呼的不同,都是关于域外路由的
Type-5 LSA和Type-7 LSA都有两种度量值Type1和Typ2,将外部路由引入OSPF是,如果为指定该外部路由的度量值类型,则缺省为Type2,且路由的外部cost缺省为1。
7、配置命令
[R4]ospf 1 进入ospf进程
[R4-ospf-1]import-route rip 1 type 2 cost 1 别人注入到OSPF时需要配置cost值
[R4]rip 1 进入rip进程
[R4-rip-1]import-route ospf 1 注入到rip进程
需注意:入注是双向的
import-route direct 引入直连路由
import-route static 引入静态路由
default-route-advertise always 引入默认路由
查看各类信息
dis ospf routing 查看ospf的全局路由表
dis ospf ladb router 1.1.1.1 1类
dis ospf lsdb network 2类
dis ospf lsdb summary 3类
dis ospf lsdb asbr 4类
dis ospf lsdb ase 5类
dis ospf lsdb nssa 7类
R1
[r1]sys R1
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.1.254 24
[R1-GigabitEthernet0/0/0]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 12.0.0.2 24
[R1-GigabitEthernet0/0/1]q
[R1]int loo
[R1]int LoopBack 0
[R1-LoopBack0]ip add 1.1.1.1 32
[R1]ospf 1 创建OSPF进程号为1
[R1-ospf-1]ospf 1 router-id 1.1.1.1 指定OSPF路由地址1.1.1.1
[R1-ospf-1]area 0 配置骨干区域
[R1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255 在骨干区域配置特定接口
[R1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
R2
[Huawei]sys R2
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 12.0.0.1 24
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 23.0.0.2 24
[R2-GigabitEthernet0/0/1]1
[R2]int loop
[R2]int LoopBack 0
[R2-LoopBack0]ip add 2.2.2.2 32
[R2-LoopBack0]q
[R2]ospf 1
[R2-ospf-1]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
R3
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]i add 23.0.0.1 24
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]ip add 192.168.2.254 24
[R3-GigabitEthernet0/0/1]q
[R3]int l
[R3]int LoopBack 0
[R3-LoopBack0]ip add 3.3.3.3 32
[R3]ospf 1
[R3-ospf-1]ospf 1 router-id 3.3.3.3
[R3-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255
display ospf per
dis ip routing-table