ospf的详细信息:https://wenku.baidu.com/view/56feb88b84868762caaed58e.html
概述:
OSPF 全称为Open Shortest Path First,也就开放的最短路径优先协议,因为OSPF是由IETF开发的,它的使用不受任何厂商限制,所有人都可以使用,所以称为开放的,而最短路径优先(SPF)只是OSPF的核心思想,其使用的算法是Dijkstra算法。
工作过程:
OSPF特点:
- 可适应大规模网络
- 使用组播更新,属于触发更新(组播地址:224.0.0.5,224.0.0.6)
- 快速收敛
- 使用SPF算法构造无环网络
- 具有区域划分。
- 使用LSA报文来交换路由信息
基本概念:
Router ID:ospf区域内唯一标识路由器的ip地址。
Router ID选取规则:
- 选取路由器loopback接口上数值最高的ip地址
- 没有loopback接口,在物理端口中选取ip地址最高的
- 也可以使用router-id命令指定Router ID(32位公网IP地址)
区域ID:
- 区域ID可以表示成一个十进制的数字
- 也可以表示成一个ip
DR和BDR的选举方式
自动选举DR和BDR
- 网段上Router ID最大的路由器将被选举位DR,第二大的将被选举为BDR
手工选择DR和BDR
- 优先级范围是0~255,数值越大,优先级越高,默认为1
- 如果优先级相同,则需要比较Router ID
- 如果路由器的优先级被设置为0,则不参与选举
OSPF的三张表
- 邻居表
2台路由器的OSPF要协同工作,基本要求就是二者形成全毗邻的邻接关系,而邻居表存储了OSPF路由器邻居的状态和邻居的其他信息。
- 拓扑数据库(LSDB)
OSPF用LSA来描述网络拓扑信息,LSDB中存储着路由器产生或者受到的LSA。
- OSPF路由表
基于LSDB进行SPF算法运算,计算出的路由存储在此表中,也就是说用于实际数据传送的路由存在此处
OSPF中消息数据包的类型(5种)
OSPF的7个状态,也可以分为两个阶段
1·Down状态
2·Init状态
3· 2-Way状态
4·Exstart状态
5·Exchange状态
6·Loading状态
7·Full状态
·OSPF的网络类型划分,也就是说那些类型适合OSPF,具有 4种类型:
1·点到点网络
2·广播多路访问网络
3·非广播多路访问网络
4·点到多点网络
OSPF的三种通信量:
- 域内通信量:单个区域内的路由器之间交换数据包构成的通信量
- 域间通信量:不同区域的路由器之间交换数据包构成的通信量
- 外部通信量:ospf域内的路由器与ospf域外或另一个自治系统内的路由器之间交换数据包构成的通信量
ospf链路状态数据库
链路状态数据库的组成
- 每个路由器都创建了由每个接口、对应的相邻节点和接口速度组成的数据库
- 链路状态数据库中每个条目称为LSA(链路状态通告),常见的有六种LSA类型
OSPF属于内部网关协议(IGP)----属于链路状态协议----同样是通过组播的形式发送路由更新
----直接工作在IP层,协议号是89
何为链路状态协议?
链路:加入ospf的接口以及接口的简要信息。----针对于路由器上链路就是一个接口(也就是一条网段)
状态:有哪些ospf的邻居
距离矢量协议和链路状态协议的区别:
距离矢量协议再发送路由更新的时候发送的是完整的路由表,而链路状态协议发送路由更新的时候发送的是链路状态数据库;距离矢量协议只能够知道直连的情况,而链路状态协议能知道整个网络的情况。
距离矢量协议是一个听信谣言的协议,而链路状态协议能够知道整个网络的真实情况。
因为距离矢量协议会根据别人告诉你怎么做就怎么做,而ospf就会知道所有的方法并且自己选取一个最优解。
组播地址:
224.0.0.9(RIP)
224.0.0.5----所有的ospf都会加入
224.0.0.6----只有DR/BDR才会加入
要介绍ospf,先介绍ospf路由器的名字--Router ID--RID
RID的作用:在网络中,用于唯一标示一台ospf路由器。一般情况下使用本台设备的IP地址作为RID。
RID的来源:
①手动指定,通过手动指定的RID具有最高级别的优先权,并且不会更改。
②如果没有手动指定,那么就选择回环接口地址作为RID。如果同时存在多个回环口地址,那么就选择IP地址最大的那个。
③如果即不存在手动,又没有回环口地址,那么就选择双up的物理接口地址作为RID,同样是越大越好。
OSPF的hello包:
用于发现、建立和维持邻居之间的关系。
如果hello包中的某些参数匹配,则成功建立邻居关系。
hello时间:10s
dead时间:40s
ospf建立的前提:
①hello间隔要一致
②区域ID要一致
③认证类型要一致
④特殊区域要一致
ospf研究要了解三五七-------三张表-------五个报文-------七个状态
三张表:
①邻居表:启用了ospf协议的路由器,就会加入组播地址224.0.0.5,并且往组播地址发送hello报文,同时也会接收到其他ospf路由器发送的hello报文,此时如果hello包中的参数匹配,则成功建立邻居,并且会把对方的RID和hello包的接收接口关联起来形成邻居表。
IOU1#show ip ospf neighbor
②拓扑表:也叫做链路状态数据库(LSDB),形成邻居关系后,邻居路由器之间就会相互发送链路状态通告(LSA),每一台ospf路由器都会把接受到链路状态通告汇总起来形成拓扑表,拓扑表存放就就是整个网络的信息,并且ospf在发送路由更新的时候发送的就是链路状态数据库。
IOU2#show ip ospf database
③路由表:拿到拓扑表运行SPF算法,得到一条最优路径,存放进路由表中。
IOU1#show ip route ospf
SPF算法:也叫作DIJKSTRA算法,是ospf的一个选路标准,是以自己为重构建一棵最短路径树,并且计算出到达目标的最优路径。
如何判断一条路径是否最短?----ospf的选路标准
ospf链路代价的计算:从源到达目的沿途所有出站接口的开销累积和。
接口开销的计算方式:10^8/BW(带宽)
更改接口开销的方式
手动更改:
①更改带宽来更改开销
IOU1(config-if)#bandwidth 100000
--进入出接口更改带宽,从而更改接口开销,但是一般不建议使用这种方法,因为接口的带宽不止于ospf的开销有关,还与eigrp的度量值计算有关。
②直接进接口更改ospf开销
IOU1(config-if)#ip ospf cost n --直接进入接口更改ospf的接口开销--建议使用
OSPF的区域
为什么要对ospf进行区域的划分?
ospf使用于大型的网络中,由于设备量大,ospf路由器之间需要相互发送链路状态信息,并且形成庞大的拓扑表,再加上运行复杂的SPF算法,所以就会对设备的性能造成很大的负担,并且消耗更多的资源和带宽。
所以提出了区域的概念,把一整个大的网络域划分成多个比较小的区域,这样每个区域只需要管理同步本区域内的拓扑信息即可。
ospf的区域分为:骨干区域(区域0)和非骨干区域(除了区域0以外的其它区域)
要求:非骨干区域一定要与骨干区域连接在一起。
区域划分的优势:
- 每个区域是构成一个网络路由器的一个子集
- 尽量减少路由条目
- 是拓扑的变化只影响区域内的设备
OSPF的网络类型:可以根据链路类型来区分网络类型
①以太网链路(以太网接口):网络类型是广播多路访问环境(MA),MA的网络环境需要进行DR/BDR的选举。会发送组播的hello报文,hello时间是10s。
②串行链路(串行接口):网络类型是点对点(P2P),点对点链路不需要进行DR/BDR的选举。会发送组播的hello报文,hello时间是10s。
③回环接口:网络类型是loopbacks
④非广播多路访问环境;
DR/BDR
DR:指定路由器
BDR:备份指定路由器
DR/BDR的来源:通过选举的得到,并且是在一条链路上进行选举的。
选举规则:
①先比较接口优先级的大小,优先级大的成为DR。(默认的优先级是1,优先级0的不参与选举)
②如果优先级一致,那么就选择RID比较大的成为DR。
保持稳定原则:DR/BDR的选举是非抢占,如果网络已经选择处一个DR,那么此时就算再加入一台具有更高优先级的路由,也不会马上抢夺原来DR的位置,除非重置路由信息。
更改接口的优先级:
IOU1(config-if)#ip ospf priority 2 --越大越优先
OSPF基本配置:
IOU2(config)#router ospf 1 --启用ospf协议,进程号1(进程号只在本地有意义)
IOU2(config-router)#network 12.12.12.2 0.0.0.0 area 0--通告网段,属于12.12.12.0 网段的IP地址所属接口都会加入ospf进程。
IOU2(config-router)#router-id 192.168.1.1--手动更改RID
% OSPF: Reload or use "clear ip ospf process" command, for this to take effect
IOU2#clear ip ospf process
Reset ALL OSPF processes? [no]: y