
OSPF和STP所触及的概念较多,也相对较难。其中关于各类数值权限也比较容易混淆,将对这两种协议单独文章记录,以便后续查看回顾。
OSPF相关观念
OSPF Version2:IPV4
OSPF Version3:IPV6
OSPF Router-ID:路由器标识符(Router Identifier),在OSPF域中唯一地标识一台路由器。OSPF协议使用Router-ID作为路由器的身份标示,如果在启动这些路由协议时没有指定Router-ID,则路由协议进程可能无法正常启动;在OSPF区域中必须保证Router-ID唯一,不然OSPF无法正确识别邻居,导致OSPF网络不通。参考资料:Router-ID介绍
OSPF Router-ID 选举规则
1)如果通过Router-ID命令配置了Router-ID,则按照配置结果设置,选取优先级为第一;
2)在没有配置Router-ID的情况下,如果存在配置了IP地址的Loopback 接口,则选择Loopback接口地址中最大的地址作为Router-ID,选取优先级为第二;
3)如果没有已配置IP地址的Loopback接口,则从其他接口的IP地址中选择最大的地址作为 Router-ID(不考虑接口的Up/Down状态),选取优先级为第三。
优先级为已配置的Router-ID>最大Loopback>最大IP地址>0.0.0.0(如上述三项均未配置则默认为0.0.0.0)
当且仅当被选为Router-ID的接口IP地址被删除/修改,才触发重新选取Router-ID,其他情况(例如接口处于DOWN状态;已经选取了一个非Loopback接口地址后又配置了一个Loopback接口地址;配置了一个更大的接口地址等)不触发重新选择的过程。
OSPF Router-ID选举具有非抢占性,Router-ID改变之后,OSPF协议需要通过手动执行reset命令,重启OSPF进程(或重启路由器)后才会重新选取新的Router-ID。
重启OSPF进程命令:
<huawei>reset ospf process
OSPF network宣告 :基于接口宣告和基于进程宣告。两者可以互相兼容。
接口宣告:
[r1]int g0/0/0
[r1]ospf enable 1 area 0
进程宣告:
[r1]opsf 1 router-id 1.1.1.1
[ospf 1]area 0
[osfp-area-0.0.0.0]netword 12.1.1.1 0.0.0.0
OSPF Area:用于标识一个OSPF的区域。
只有属于同一个区域内的ospf路由器才可以建立ospf 领居关系,区域是从逻辑上将设备划分为不同的组,每个组用区域号area ID进行区分。ospf的区域ID是一个32bit发非负整数,按点分十进制(与IPV4地址格式一样)呈现,ospf的区域是基于接口的。不是说一台设备属于一个区域,而是设备接口属于某个区域。
OSPF协议优先级
对于ospf邻居学来的路由,在华为ospf中,有两个优先级:
1)内部优先级:ospf 中network 宣告的内部路由--优先级为10
2)外部优先级:ospf 中从外部路由域外入的外部路由--优先级150
优先级这个值越小越优。
Cost:度量值或路由开销,可以用来选择最优路径。如掩码相同,协议优先级相同,则会看发送开销(即查看路由器出接口的带宽)。如有两个链路可访达目标路由,则会走最小开销路线。如一个接口为100M,一个接口为10M,则会优先走100M,计算方式为100M/链路速率。100M/100M时,cost=1。当100M/10M时,cost=10.但cost值需计算这两条的是整个达到网络所有的cost值总和。而不是看单一出接口cost值。(当cost值小于1时取1,华为的环形接口花销默认为0)
有时需人为修改某台路由器出接口的cost值,则需要在启动ospf 的路由器出接口中配置
[Huawei]int g0/0/1 /*进入出接口
[Huawei-GigabitEthernet0/0/1]ospf cost 100 /*修改cost 值为100

OSPF工作原理
OSPF的5种报文
OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89.组播地址为224.0.0.5


Hello:周期性发送,用来发现和维护OSPF邻居关系。每10S发送一个hello包维持邻居关系,dead time时间为hello报文的4倍。如40S没有收到回应,则会判断此链路或路由器已失效,则会删除对此路由器的OSPF邻居关系。如果人为修改hello报文的发送时间,则需要在所有设备中修改hello报文的时间。由于dead time 是hello报文的4倍时间,则修改hello 报文会直接影响到dead time,而直接修改dead time 则不会影响到hello报文发送时间。
[Huawei-GigabitEthernet0/0/0]ospf timer hello 3

Database Description:
1)确认主从设备,双发会比较随机序列号。Router-ID大的一方为主设备,后续按照主设备序列号为传递依据进行,例如主设备序列号为100,主设备发送的包序列号为100,从设备回包序列号为100,主设备再发送101,从设备再回包101...
2)用于描述本地LSDB(链路状态数据库)的摘要信息,用户两台设备进行数据库同步。通过Database Description是LSA(链路状态通告)的描述,各路由器通过交换LSA来完善数据库。
Link State Request:用于向对方请求所需要的LSA。设备只有在OSPF邻居双发成功交换DD报文后才会向对方发送LSR报文。
Link State Update:用于向对方发送所需要的LSA。
Link State ACK:用于对接收的LSA进行确认。(确认邻接关系即state:full)
OSPF的3张表
OSPF的工作过程分为3个大步骤,分别是形成邻居关系,形成邻接关系,计算路由。(邻居关系为发送hello包,邻接关系为收集完自己所需的LSA,两者是不同的概念)
OSPF将对应形成OSPF邻居表,LSDB表及OSPF路由表。
查看邻居表:display ospf peer
查看LSDB表:display ospf lsdb
在OSPF的同一个区域号中,LSDB中的内容一定是一致的。
查看OSPF路由表:display ospf routing
注意:ospf 路由表不等于路由表,因为某些ospf 路由的优先级比路由表的路由低时,则不会加入路由表中。
OSPF配置
路由器需设置Router-ID及Area,将直连到路由器的网段全部宣告出去,宣告网段时掩码需使用反掩码。
OSPF邻接关系建立流程
OSPF的状态机:
1)down:关闭--代表此时ospf没有收到领居的hello报文
2)init:初始化--代表此时ospf收到领居的hello报文,但没有本设备的RID;
3)2-way:双向确认--代表此时ospf收到领居的hello报文,且收到本设备的RID;(此时建立邻居关系)
当ospf的2-way邻居关系建立完毕后如果是MA网络,ospf要进行DR和BDR的选举(40s)
4)exstart:预启动--此时发送DBD报文。要进行ospf的主从选举。(此DBD报文不包含任何链路状态描述)特点是DBD报文中的init=1.主从选举规则比较rid大的为master主。此时DBD描述为:
设R1 RID 大,设R2 RID 小。
R1:发送init初始化=1 Master主=1 More更多位=1 随机序列号XXXX (R1为主设备)
R2:发送init初始化=1 Master主=1 More更多位=1 随机序列号YYYY (R2为从设备)
PS:选举完毕后,init初始化将从1变为0。
5)exchange:预交换--此时发送DBD报文,要进行OSPF的DBD交换。特点是从设备会用主设备的序列号进行确认。此时DBD描述为:
R1发送init初始化=0 Master主=1 More更多位=1 随机序列号XXXX //此时R1的init初始化为=0,R1的是主设备,所以Master=1
R2发送init初始化=0 Master主=0 More更多位=1 随机序列号XXXX //此时R2的init初始化为=0、Master主=0且随机序列号是R1的XXXX
当后续发送DBD链路描述时(同步进行)
从设备R2发送init初始化=0 Master主=0 More更多位=1 LSDB 摘要信息 随机序列号XXXX
主设备R1发送init初始化=0 Master主=0 More更多位=1 LSDB 摘要信息 随机序列号XXXX+1
从设备R2发送init初始化=0 Master主=0 More更多位=1 LSDB 摘要信息 随机序列号XXXX+1
PS:直至LSDB摘要信息通告完毕后,More更多位=0进入loading阶段。
6)loading:此时正式交换OSPF的LSA链路状态通告。此阶段将出现之前说的OSPF 的3钟报文:LSR、LSU、LSA。
7)full:邻接--当请求列表请求完全同步了OSPF的邻居的所有LSA。至此LSDB数据库同步。此阶段为OSPF的邻接关系。
8)attempt:尝试--只会出现在NBMA网络中手动指定OSPF邻居时才会出现。一般不会见到该状态。
1)发送Hello报文,当发送报文后,未得到对方回复是状态为Init,得到回复后状态为2-way.
2)如下图所示,两台设备会发送空的DBD报文(即DD报文),里面带有Router-ID,然后进行比较Router-ID大小,Router-ID大的成为主设备(即master),小的为从设备,主设备会先发带有摘要信息的DBD报文,从设备则后发DBD报文,从而查看有哪些摘要信息。

3)如下图所示,当收到DBD报文时,则向对方申请自己没有的LSA,此过程会发送LSR,对方接收到后会回复请求的LSA,此过程会发送LSU,当收到LSU后将LSA学习后完善自身LSDB表,添加LSA完成后则会向对方发送LSACK,然后接着请求下一个LSA。。直到双方LSDB相互同步为止。
OSPF网络类型

下图两种以不再使用,仅做认识即可。
DR与BDR
MA即多路访问网络中,如每台路由器均向各路由器发送OSPF请求,则会消耗资源,所以为了优化MA网络中的邻接关系,OSPF指定三种OSPF路由器身份,DR(指定路由器),BDR(备用指定路由器),和DRother。
只允许DR和BDR与其他OSPF路由建立邻接关系(FULL),DRouter之间不会建立毗邻OSPF邻接关系,双方关系停留在2-way。(即发送Hello报文后发现邻接路由器)
BDR会监控DR的状态,并在当前DR发生故障时接替其角色。此时会在其他DRother 中选择一台成为新的BDR,并对其他路由器进行邻接操作。
DRother向DR,BDR发送DD,LSA request或者LSA UPdate时目标地址是AllDRother(224.0.0.6);
DR,BDR向DRother发送DD,LSA Request或者LSA Update时目标地址是AllSPFRother(224.0.0.5);
DR与BDR选举方式
DR和BDR选举时间跟dead时间一致,默认选举时间为40S.
选举时,查看OSPF 接口优先级,优先级越大则为DR(优先级可设置),优先级第二大的为BDR。当DR相同时则查看Router-ID,Router-ID越大则为DR,Router-ID第二大的为BDR。所有设备默认优先级为1。在选举结束前修改优先级,生效,结束后则不生效。
DR优先级范围0-255,优先级为0则表示该设备退出选择,如果所有设备优先级设置为0,则所有设备都是DRother,各网络设备状态均为2-way,此时OSPF 将停止路由提供。所以,OSPF中可以没有BDR,但一定要有DR。
修改DP优先级
[Huawei-GigabitEthernet0/0/0]ospf dr-priority 5
当修改另外一台设备优先级时,则此设备为BDR
[Huawei-GigabitEthernet0/0/0]ospf dr-priority 4

OSPF域与单区域
如小规模网络可使用单区域OSPF。
OSPF多区域
如大规模网络可使用OSPF的多区域划分,将大区域划分为多区域,由区域边界路由器进行区域内路由汇总,发送到各区域,减少每台路由器请求LSA的学习成本,从而提高各区域网络质量。(此做法中必须要有area0)
OSPF多区域划分中各路由器角色
1)区域的分类:区域可以分为骨干区域与非骨干区域。骨干区域即Area 0,除Area 0以外其他区域都称为非骨干区域。
2)多区域互联原则:基于防止区域间环路的考虑,非骨干区域与非骨干区域不能直接相连,所有非骨干区域必须与骨干区域相连。
区域内路由器IR(Internal Router):非Area 0的路由器为区域内路由器。该类路由器的所有接口都属于同一个OSPF区域。
区域边界路由器ABR(Area Border Router):该类路由器的接口同时属于两个以上的区域,但至少有一个接口属于骨干区域。连接两个的区域路由器为边界路由器。
骨干路由器BR(Backbone Router):该类路由器至少有一个接口属于骨干区域。Area 0中的路由器均为骨干路由器。
自治系统边界路由器ASBR(AS Boundary Router):该类路由器与其他AS交换路由信息。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。两个路由协议的边界路由器,如其他AS为RIP,那么将和本身的OSPF进行路由。
OSPF基础配置命令
创建并运行OSPF进程
[Huawei]opsf X route-id X.X.X.X (ospf X为进程号,同一设备可运行多个不同的OSPF进程)
在OSPF视图下创建OSPF区域
[Huawei]area X
在OSPF区域视图下,宣告直连接口
[Huawei-ospf-0.0.0.0]network X.X.X.X 0.0.0.255(此处使用反掩码)
除此方法外,可以在接口上配置,直接将接口划进ospf区域中
[r1] int g0/0/0
[r1- g 0/0/0]ospf enable 1 area 0 //后续所有基于这个接口的配置都可以直接通告。比如修改IP地址等。
[r2] int g0/0/0
[r2- g 0/0/0]ospf enable 1 area 0
在接口视图下,配置OSPF接口开销值,在出接口配置。
[Huawei-GE1/0/0]ospf cost X(缺省情况下cost值为100M/接口速率)
OSPF带宽修改,将因为100M/接口速率小于1时将取值为1,无法识别端口大于100Mbit/s的接口速率,所以可将带宽设置为100000Mbit/s,此时就得到大于100Mbit/s的cost值。
[Huawei-ospf-1]bandwidth-reference X(X的取值范围为1-2147483628单位为Mbit/s,缺省情况下100Mbit/s)
在接口视图下,OSPF选举DR是设置优先级
[Huawei-GE0/0/0]ospf dr-priority X(X值为priority,priority越大越优先,取值范围为·0-255)
本文由 yorickbao 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。