ospf协议(主流域内路由协议,使用链路状态路由算法),它通过建立LSDB链路状态数据库来获取全网的拓扑变化,用spf算法计算最短路径树,再算出最佳路由形成路由表
优点:无环路、收敛快、扩展性好、支持认证。
ospf基于接口带宽计算开销:
开销=带宽参考值%带宽
通过命令bandwidth-reference可以调整带宽参考值,当配置带宽参考值时、要在整个ospf网络中统一调整,可以通过命令ospf cost来调整接口开销
工作原理:
1LSA泛洪(建立LSDB数据库)
2 spf算法(建立最简路径树)
3路由计算(把结果放入路由器的路由表内)
ospf的数据包类型:hello、DBD、LSU、LSR、LSA共五种
Hello包;建立和维护 OSPF的邻居关系
DBD包: 教据库描述数据包,用于 OSPF 的数据库同步
LSU包: 连续状态更新故据包,用于发送最新的 LSA 的信息
LSR包: 链路状态请求数据包,用于请求缺失的 LSA 信息
LSA包: 链路状态确认数据包,用于回复确认的
ospf连接过程
运行ospf的路由器之间需要交换链路状态信息和路由信息,在这之前要先建立邻接关系
1 邻居:ospf路由器启动后,便会通过ospf接口发送hello报文来发现邻居。当ospf路由器收到hello报文后,便会检查报文中定义的参数,如果参数一致,就会形成邻居关系。
2 邻接:形成邻居关系的路由器不一定可以形成邻接关系。只有当双方交换了DD报文(用来确认主仆关系、DD报文里面包含了LSA的头部信息来描述LSDB的摘要信息),去同步LSDB信息(包括更新、请求、确认)才是形成了邻接关系
网络类型:广播域网络(MA、一个网段多个设备的网络)、点到点网络(P2P、一个网段只有两个设备的网络)、点到多网络(P2MP,多个点到点网络的集合)
广播型网络:DR&BDR
DR:指定路由器
BDR:备份的指定路由器
通过DR和BDR可以减少邻接关系的数量(减少链路状态信息和路由信息节省带宽,降低处理信息的压力),不是DR和BDR的路由器只需要和DR和BDR形成邻接关系。
如何选择DR:通过端口的DR优先级的值进行选举(谁越大谁当选)。如果DR优先级相同,则去比较router-id。
router-id:
router-id:一个32位的值、用来标识一个自治系统的路由表、排错
格式:1.1.1.1
如果没有定义router-id:从逻辑接口里面找最大IP作为router-id,如果没有则选活跃物理接口最大的ip作为router-id,建议手动配置router-id防止因为接口地址发生变化而发生变动
其他:
为什么ospf扩展性好,因为每个区域只需要维护一个独立的LSDB。
ospf可以分为两个区域:骨干区域和非骨干区域,非骨干区域通过骨干区域连接,而且应该ospf只能有一个骨干区域,骨干区域必须和所有非骨干区域连接,骨干区域为0;
连接两个区域之间的叫做ABR、处于自治域边界的叫做ASBR(会想内部公布外部的信息)、
区域边界路由器ABR:用来连接两个区域的路由器
骨干路由器:至少有一个在骨干区域0中;
内部路由器:所有路由接口都在同一个区域里面
自治系统边界路由器ASBR:路由器不仅仅连接了ospf,还有其他路由协议
再给路由器配置ospf时,我们只需要配置router-id、区域、ospf接口。
dispaly ospf peer来查看邻居相关的属性,包括区域、邻居状态、邻居的主从状态、DR、BDR。
【例子】
实验测试
单区域ospf:
我们以下图为例:
<Huawei>sy //进入系统视图
[Huawei]sy R1 //给路由器取一个名字R1
[R1]int g0/0/0 //进入接口视图g0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.12.1 24 //为g0/0/0配置ip地址
[R1-GigabitEthernet0/0/0]int LO0 //进入接口视图LoopBack0
[R1-LoopBack0]ip address 1.1.1.1 24 为LoopBack0配置ip地址
查看路由器接口下的IP地址信息:
dis ip interface breif
当我们配好路由器ip地址后,查看哪些地址可以ping通时,发现只可以ping通直连路由,那么接下来我们来配置ospf协议:(这里以R1举例)
[R1]ospf 1 router-id 1.1.1.1 //ospf后面的为ospf的进程ID,当缺省时,也为1
[R1-ospf-1]area 0 //配置的区域为多少
[R1-ospf-1-area-0.0.0.0]network 1.1.1.0 0.0.0.255 //network用于通告,告诉路由器哪些网段要使用ospf协议
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
接下来我们在R2、R3、R4、也配置好同理的操作。接下来用命令来查看路由器R1的路由有哪些,可以看到我们配置的七个网段(1.1.1.0、2.2.2.0、3.3.3.0、4.4.4.0、192.168.12.0、192.168.23.0、192.168.34.0)都有了对应的路由.
<R1>display ip routing-table
那我们仔细的来看一下路由表的各个内容我们以下面这条路由为例子进行说明:
OSPF: 路由条目是通过 OSPF 路由协议得来的;
192.168.23.0/24:目的网络;
10:OSPF 路由协议的默认路由优先级:
2:度量值 (COST) //cost=带宽参考值%带宽(华为每个接口默认带宽为10的9次方,这里默认的带宽参考值是10的8次方,因此算出来为0.1,取整就是1,那么192.168.12.0的网段去往192.168.34.0的网段的路由就要经过两个路由器,因此为2)
192.168.23.3:下一跳地址
GigabitEthernet0/0/0: 出接口
注:我们可以通过命令:bandwidth-reference [值] 和 ip ospf cost [值] 来设置cost的大小。
现在我们来测试一下从R1去ping离它最远的路由,发现也是可以ping通的
多区域ospf:
上图是单区域ospf,选择我们把多区域也规划出来看一下,其中R2和R3是骨干区域的ABR、R4是ASBR。注意:我们把网段2.2.2.2、3.3.3.3划分到骨干区域area 0中。
其中R1是这样配置的:
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]network 1.1.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.1]network 192.168.12.0 0.0.0.255
R2是这样配置的:
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 2.2.2.0 0.0.0.255
R3是同理的,值得注意的就是R2和R3的部分网段是在area 1和area 2中的
R4与R1、R2、R3都是不一样的,因为它连接了一个外网4.4.4.4,所有我们还要配置一条缺省路由,来指定去往外网的下一跳地址是R4上的LookBack 0 接口 .配置命令如下:
[R4]ospf 1 router-id 4.4.4.4
[R4-ospf-1]area 2
[R4-ospf-1-area-0.0.0.2]network 192.168.34.0 0.0.0.255
[R4-ospf-1-area-0.0.0.2]q
[R4-ospf-1]q
[R4]ip route-static 0.0.0.0 0.0.0.0 LoopBack 0 //配置缺省路由,不知道静态路由的可以看我的这篇文章:点这里!!
[R4]ospf 1
[R4-ospf-1]default-route-advertise //在ospf的进程1中(也就是我们所有的路由器)都去同步这条静态路由
这样我们就配置完成了,现在我们来查看一下
我们在R1上去ping4.4.4.4(最远网段) ,去查看它经过了哪些网段(用命令tracert 4.4.4.4):
然后我们再去R2上查看更多关于ospf的信息,包括ospff的简要信息(用命令 dis ospf brief 我这里只放了一部分),ospf的路由表信息(用命令dis ospf routing)、ospf有哪些区域的信息(用命令dis ospf peer breif。
最后验证实验完成了,喜欢就点赞,关注吧!