OSPF基本术语
1、链路状态(LS)与链路状态通告(LSA)
链路(LINK):路由器上的一个接口。 状态(State):描述接口以及其与邻居路由器之间的关系。
(1)链路状态(LS)
OSPF是一种链路状态协议,所谓的链路状态,其实就是路由器的接口状态。有关各条链路的状态的信息,用来描述路由器接口以及与邻居路由器的关系。
在OSPF中路由器的某一接口的链路状态包含了如下信息:
① 该接口的链路的类型、IP地址及掩码
② 该接口的带宽(开销)
③ 该接口所连接的邻居
OSPF核心思想是,每台路由器都将自己的各个接口的接口状态(即链路状态)共享给其他路由器。
路由器接口状态
该接口的IP地址及掩码
该接口所属区域的Area-ID
该接口所属路由器的Router-ID
该接口的接口类型(也就是该接口的网络类型,如P2P,广播型)
该接口的接口开销(通常以接口带宽来定义接口开销,带宽越大,开销越小)
该接口所属的路由器的Router Priority(这个参数是用来选举DR与BDR的)
该接口所在二层网络中的DR、BDR
该接口的Hello Dead Interval(接口发送Hello报文的间隔时间)
该接口的Router Dead Interval(实效时间)
该接口所有邻居路由器
该接口认证类型
该接口秘钥等等
(2)链路状态通告(LSA)
LSA(Link State Advertisement)是路由器之间链路状态信息的载体。LSA用来描述路由器和链路的状态。LSA是LSDB的最小组成单位,也就是说LSDB由一条条LSA构成的。
LSA(链路状态通告)包含:链路上的网络类型、接口IP地址及子网掩码、链路上所连接的邻居以及链路开销。
链路状态通告同步前提条件:相同区域中,如果相同区域中设备数量过多,导致设备负担加大,可以不同的区域进行区分,从而减少不同区域中LSDB的大小,优化设备的性能。
2、最短路径算法(SPF)
SPF算法是OSPF路由协议的基础。SPF算法也称为Dijkstra算法。OSPF路由器利用SPF独立地计算出到达目标网络的最佳路由;
3、路由器ID(Router-ID)
(1)概念
路由器ID(Router-ID RID,路由器标识符)在OSPF中,每个路由器都有一个唯一的路由器ID,用于标识自己。路由器ID可以是一个IPv4地址,通常是路由器的一个接口IP地址。如果没有明确配置路由器ID,OSPF会根据一组规则自动选择一个。
例如,假设我们有三个路由器,它们的接口IP地址分别是192.168.1.1、192.168.1.2和192.168.1.3。在这种情况下,路由器ID可以是其中任意一个IP地址。
注意:设备缺省会用使用最大IP地址的环回口地址为RID(Router ID),如果没有环回口则启用最大IP地址的物理口作为Router ID。
注意1:第一个UP的接口,该接口的地址成为Router-ID,如果同时UP,优选IP地址最大的,形成全局的RID。
注意2:在一个OSPF网络里面,每台路由器的Router ID都必须是独一无二,没有Router-ID是无法工作的。
作用: 1.在网络中标识自己 。 2.虚连接会用router-id。
(2)Router-ID的选举规则
配置协议时选择人为指定的方式,默认是自动生成,人为配置的优于自动产生的。
1.手动配置OSPF路由器的Router ID:1.1.1.1 手动指定最优先。(首选)
2.如果没有手动配置Router ID, 那么将使用全局Router ID作为,OSPF的Router ID。
设备第一个配置的IP地址为全局Router ID。只有当前被选举为Router ID的接口地址发生了变化,或者说接口地址被删除,全局Router ID才会改变。
如果重启设备后,最先UP的接口地址作为全局的Router ID
如果全局RouterID发生了变化,OSPF的RouterID不会变化,再重启了OSPF的进程后,才会改变。
3.若有loopback口,则选最大的loopback口IP地址,
若无,则选活跃的物理接口中IP地址最大的作为Router ID(Router-ID不具有抢占性)(物理接口必须是活动状态)
(3)全局RouterID和OSPF协议的RouterID
容易混淆的概念:全局Router ID和OSPF协议的Router ID
如果在OSPF协议里面没有手工配置Router ID,那么就会选择使用全局的Router ID作为OSPF的Router ID。
1)全局Router ID
默认华为的路由器启动后,会自动生成一个全局的Router-id。
全局的router-id默认使用的是设备上配置的第一个IP地址。
通过display router id可以查看设备的全局router-id:
2)OSPF的router-id
默认情况下,使用ospf 1创建的OSPF默认使用的router-id为全局router-id。
当然手动指定ospf的router-id也是可以的:ospf 1 router-id 1.1.1.1
同时也是建议使用手动指定的方式配置OSPF的router-id。
全局的Router ID和OSPF手工配置的Router ID是不同的概念,也可以是不同的数值。
第一种情况:我们在OSPF的协议配置的时候,不手动配置Router ID。(如下左图)
1、首先我们并没有配置全局的Router ID,现在是0.0.0.0,表示的是现在没有Router ID。
2、开启OSPF的一个进程,没有配置Router ID,我们查看ospf bri,现在的Router ID是没有的。
3、随便配置一个接口的IP地址,这里配置的是环回口loo0的ip地址,然后我们再次查看OSPF的进程配置,Router ID使用了全局的Router ID
第二种情况:(如上右图)
我们不配置全局的Router ID,在开始ospf进程的时候手工配置一个Router ID,之后我们再配置一个全局的Router ID。然后重启ospf进程,看下Router ID是否会发生改变。
我们得出结论:手工配置的ospf-router-id并不会改变。
注意1:RouterID是在OSPF进程刚启动时开始选举,如果有必要更改RouterID,则需要重启OSPF进程。
注意2:由于接口的IP地址变动,可能引发OSPF Router ID的变动,进而对网络产生影响,建议给OSPF手动指定固定的Router ID。
注意4:Router ID并不一定是路由器接口的IP地址。
(4)手动配置Router-ID
手工配置的Router ID命令后面的 P地址可以随意,不需要必须是存在的地址。
Router ID一旦定下来以后,即使重新修改了接口地址也不会使其变更,必须通过clear ip ospf process的方式或者reload的方式来改变。
配置格式:Router-ID以IP地址的格式(点分十进制)来定义的,和本设备的IP地址没有关系,只是一个名字。
通常的做法是将Router-ID配置为与该设备某个接口(通常为Loopback接口)的IP地址一致。
手工指定命令:
(1)全局下指定
[AR1] router id 1.1.1.1 //指定OSPF进程中的router-id。如果没有手工指定router-id,该路由器中所有的动态路由协议都使用该地址作为协议的router-id
(2)进程下指定
[AR1] ospf 10 router-id 1.1.1.1 //指定OSPF进程中的router-id
注意:如果重新配置了Router ID,不会立刻生效 ,可以重置进程 (重启设备 )
<AR1> reset ospf process //重置ospf进程
<R3> dis ospf peer brief //查看邻居表
特点:一经确定,除非设备重置或者OSPF协议重置,否则不会改变。
4、度量值Cost
OSPF使用Cost(开销)作为路由的度量值。OSPF默认情况以太网链路开销值为1。
在每一个激活了OSPF的接口上,都会维护一个接口COST,接口COST=100M/接口带宽,其中100M为OSPF的参考带宽。
一条路由的COST由该路由从来路由的起源一路过来的所有入接口cost值的总和。
P2P网络带宽越大开销越小越优先。
以太网链路开销:100/1000M= 0.1约等于1 真机串行链路开销:100/1.544=64
ensp串行链路开销:100/2.048 =48
(2)度量值修改
在规划流量路径时,推荐将汇聚层直连链路Cost值>接入层所有链路Cost值之和,这样可以保证从接入层访问R1或R2时,流量可通过接入层路由器直达R1或R2。
以(上图)为例。R1和R2位于企业网中的汇聚层,R1和R2的直连链路属于区域0,R1有一个直连网段10.0.1.1/32通过在区域0。
在缺省情况下,R4到达10.0.1.1/32的路由存在两个下一跳。修改Cost之后,R4到达10.0.1.1的路由仅存在一个下一跳。
两种方式:
1、接口修改开销 ospf cost 50 //优先选举接口
2、根据参考带宽修改开销 bandwidth-reference 10000
[RTC] ospf
[RTC-ospf-1]bandwidth-reference 500 //修改开销计算的参考值,默认为100M。修改最好在整个OSPF网络中统一修改
Info:OSPF i Reference bandwidth is changed
Please ensure reference bandidth is consistent across all routers
[RTC-ospf-1]quit
[RTB]interface Ethernet 0/0
[RTB-Etherneto/0]ospf cost 5 //修改开销,范围1~65532
[RTB-Etherneto/0]quit
(3)度量值计算的方向
到一个目标网络的度量值 = 从源到目标的所有出站接口的Cost值累加(数据方向)
从目标到源沿途所有的入站接口的Cost值累计(路由方向)
如(上右图):
按路由方向:
路由器A保存了1.1.1.0/24网段的路由,B从A学习该条路由时,从路由的入接口累计cost值;
B学习A的路由的入接口是B左边的接口,B左接口的cost是64,cost=原来的cost+64=1+64=65;
同理,C学习A的路由时,cost在前面的基础上,加上C路由方向入接口的cost;cost=65+1=66;
按数据方向:
C要向1.1.1.0/24发送数据,数据方向向左;
需要经过三个路由器,数据的出接口为路由器左边的接口,cost = 1 + 64 + 1 = 66;
(4)计算cost的实例
Router C上路由表存放的192.168.100.0的路由,COST是多少?
从C到192.168.100.0,有两条路:C-A和C-B-A;C向A学习路由,看得是路由方向的入接口;
C-A: ->1 + 64 =65 C-B-A: ->1 + 64 +64 = 129 选cost小的那条路由,因此cost = 65
5、network 宣告
如何将接口"放"到OSPF中,宣告方式:
(1)区域下宣告
宣告(Network)格式: 接口信息 及 反掩码信息
反掩码:255.255.255.255 - 255.255.255.0 = 0.0.0.255 //接口所属网络的反掩码
192.168.1.1 某一个接口 /32=255.255.255.255
255.255.255.255--255.255.255.255=0.0.0.0
Network 0.0.0.0 代表将本设备的所有接口都宣告进入OSPF中
命令: Network 192.168.1.1 0.0.0.0
192.168.1.1/24 =>255.255.255.0[正掩码] ==>192.168.1.0
(2)接口下宣告
命令:进入接口下 ospf enable area 0
前题:请首先保证全局的OSPF协议,建立了该进程,以及创建了该区域0。
整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun 暗号:CSDN】