一.基本知识:
OSPF(Open Shortest Path Fist),开放式最短路径优先,传信机制,目前所使用的为OSPFv2版本,IPV6使用OSPFv3版本,协议优先级为10/150
OSPF依靠IP进行承载,协议号位89。OSPF作为链路状态的协议(Link-state Routing Protocol),具有收敛快、路由无环、扩展性好等优点,被快速接受并广泛使用。
链路状态算法路由协议互相通告的是链路状态信息,每台路由器都将自己的链路状态信息(包含接口的IP地址和子网掩码、网络类型、该链路的开销值等)发送给其它路由器,,并在网络中泛洪,当这台路由器收集到网络内所有的链路状态信息后,就能应有整个网络的拓扑情况,然后通过运行SPF(Shortest Path First)算法,得出所有网段的最短路径。

  1. 特点:
    ① 支持无类域间路由CIDR
    ② 支持报文的认证
    ③ 无路由自环
    ④ 路由变化收敛速度快,触发更新
    ⑤ 使用组播首发协议数据(DR-other:224.0.0.5/DR:224.0.0.6)
    ⑥ 支持多条等价路由
    ⑦ 支持区域划分
    (1)支持无类域间路由CIDR:
    OSPF路由汇总可以减少LSA的条目,当明细条目消失时,不会形成路由动荡,当所有的明细条目消失后,汇总路由也会消失。与RIP不同,OSPF不支持自动路由聚合,仅支持手动路由聚合。OSPF的路由聚合有两种方式:
    ① 区域间路由聚合
    ② 外部路由聚合
    ① 区域间路由聚合:
    在区域边界路由器ABR上进行路由聚合:
    [Huawei]ospf
    [Huawei-ospf-1]area 1
    [Huawei-ospf-1-area-0.0.0.1]abr-summary 1.1.1.0 255.255.255.0-将区域1
    的聚合路由发布到其他区域
    not-advertise—不通告,即汇总和明细都没有
    cost------------修改汇总通告的cost值,默认聚合路由的开销值为0
    advertise-------默认为通告
    注1:在做区域间路由聚合时,一定要在产生明细路由的区域ABR上做汇总
    注2:当明细路由全部消失后,汇总路由也会消失
    ② 外部路由聚合:
    [Huawei]ospf
    [Huawei-ospf-1]asbr-summary 1.1.1.0 255.255.255.0----将外部路由聚合
    注:外部路由汇总只能在ASBR或NSSA区域7转5的ABR上做路由汇总时,默认的花费为
    2
    (2)报文认证:
    OSPF支持邻居间认证和链路间认证两种方式,认证可以基于明文和md5模式。
    ① 链路认证:
    [Huawei-GigabitEthernet0/0/1]ospf authentication-mode simple Huawei
    ② 区域认证:
    [Huawei-ospf-1-area-0.0.0.0]authentication-mode simple Huawei
    注:当同时存在链路认证和区域认证时,链路认证优先
    ③ V-Link认证:
    V-Link属于区域0,所以如果配置了V-Link,并且区域0启用了认证,此时由于V-Link端没有配置认证,此时会造成V-Link down的现象,V-Link认证属于特殊的接口认证
    [Huawei-ospf-1-area-0.0.0.1]vlink-peer 1.1.1.1 simple huawei
    注:当同时存在V-Link认证和区域认证时,V-Link优先
    备注:

V-link配置方法:

在R3的area0上配置区域认证

在两端的V-Link上配置V-Link认证

④ MD5认证原理:

华三OSPF向其他设备注入默认 华三ospf下发默认路由命令_网络

当OSPF采用MD5认证的时候,OSPF区域认证的头部报文里面会携带以下参数:

① 2Byte的保留位

② 1Byte的Key ID

③ 1Byte的认证数据长度

④ 4Byte的加密序列号

报文的最后携带128bit的哈希值

并不携带密码,摘要信息进行验证,信息摘要附加在OSPF包的后面,不考虑为OSPF包的一部分。认证长度描述了附加在OSPF包后面的信息摘要的长度(128bit==16Byte)

a)摘要生成过程:

OSPF的MD5摘要是OSPF包(OSPF Header+OSPF payload有效载荷)和Key的计算结果,生成128bit的哈希值,并附加在OSPF报文的后面。

注:密码只是起到一个哈希改变的作用,并不是直接用密码+ID进行哈希,而是使用OSPF报文+Key ID生成哈希,所有的协议都基于此过程进行哈希

b)Key id作用:

结合OSPF报文进行哈希的生成,每次增加数值不确定

进行平滑过渡,OSPF MD5验证可以在不中断邻居关系的前提下更改密钥,所以可以在OSPF接口上配置多份密钥,每个密钥有一个Key ID(1~255)关联,验证时同时传递多份报文,分别使用不同的Key,接收测根据Key ID在已有的密钥列表中找到对应的Key即可,只有一个Key存在即可,不用所有的密码都存在

c)Data Length:

哈希长度

d)Data:

哈希值,为128bit

e)Sequence Number:

序列号,默认每次发送数据包,序列号都会加1,如果对端收到重复的序列号不会接受,用于防止“报文重放攻击”(anti-replay)。重放攻击是攻击者先从链路上捕获包含认证信息的OSPF信息,在适时重新放到链路上发送,以达到干扰OSPF邻居路由器间的通讯的目的。

加密序列号是个32位整数,与特定的一台邻居路由器关联,OSPF路由器会增加该值,当邻居路由器收到该序列号之后,便记忆下来,随后的OSPF消息中的加密序列号字段值低于上次记忆的值,邻居路由器会丢弃该消息。目的是攻击者捕获了曾经的报文,使用该消息的SN到Link上,受攻击路由器不收,所以每个消息中该值都在递增。

针对加密序列号的攻击是攻击者伪造更大的加密序列号让邻居路由器记忆,合法的路由器送来的相对较小的序列号反而不被接受,导致邻居关系Down,攻击成功,所以加密序列号绝非提供完美的安全方案(但如果攻击者吧加密序列号变大,相当于OSPF报文发生变化,这样导致接收方验证摘要值的时候不相等,所以OSPF验证失败)

如果序列号增加到最大值,至少需要100多年,可以不去考虑担心

(3)默认路由发布:

OSPF引入静态时不会引入默认路由,所以使用以下方式引入默认路由

① 配置默认路由,使用命令[Huawei-ospf-1]default-route-advertise重分布,如果没有默认路由,命令不生效

② 使用命令[Huawei-ospf-1]default-route-advertise always强制下发默认路由

2. Area/AS:

(1)Area:

OSPF支持区域的划分,区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识,一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。Area 0位骨干区域,所有的非特殊区域都必须连接到Area 0实现通信,在一个OSPF区域中有且只有一个骨干区域,区域的路由器称为ABR。

Area的规划为一个AS中只能有一个Backbone区域(Area0),其余的区域都为Normal区域,所有的Normal区域只能与Backbone区域传递3类LSA,Normal区域与Normal区域之间不会传递3类LSA,用于防止环路。

3类LSA是ABR将区域内的路由表生成LSA传递给另外一个区域,所以区域间为距离矢量的行为,会造成环路,所有的Normal区域只能与Backbone区域传递3类LSA用于防止环路

华三OSPF向其他设备注入默认 华三ospf下发默认路由命令_华为_02

① 如果没有规定Normal区域之间不可以传递三类LSA,此时Area 1生成三类LSA传递给Area0

② Area0将三类LSA传递Area2,Area2将三类LSA传递给Area3,Area3会将三类LSA重新传回给Area0,如果此时Area1中的网段消失了,Area1会删除此三类LSA,此时Area0会选择Area3传递的关于10.1.1.0/24的网段的LSA,形成环路

(2)AS:

Autonomous System,通常运行一个OSPF的体系为一个AS,AS包含ospf所有的区域,AS外部的路由称之为OSPF外部路由,自制系统边界路由器称为ASBR。

(3)进程ID:

代表的仅仅是OSPF进程,只具有本地意义。

空间大小为16bit,默认0不可用

取值范围为1-2^16为1-65535

注:ABR路由器上,所连接的两个区域必须在同一个进程ID中,否则会造成邻居可以建立但是无法传递路由的现象,使用import可以解决此现象

华三OSPF向其他设备注入默认 华三ospf下发默认路由命令_网络_03

  1. 区域路由器角色:

(1)BR:

Backbone Router,骨干区域路由器,至少有一个接口属于骨干区域。

(2)IR:

Internal Router,内部路由器,纯属于普通区域中的路由器。

(3)ABR:

Area Border Router,区域边界路由器,用于连接骨干区域和非骨干区域的路由器,但其中一个必须是骨干区域,和骨干区域可以是物理连接的(真ABR),也可以是逻辑连接的(假ABR)。

“真正的ABR”需要满足两个两个条件:

① 能产生3类LSA通告给隔壁区域

② 接口发布到Area0并且和邻居形成Full的邻居关系(只有Loop口属于Area0的路由器称为“伪ABR”)

注:由于ABR连接着骨干区域0和Normal区域,所以ABR设备维护骨干区域的LSDB和Normal区域的LSDB

(4)ASBR:

AS Border Router自制系统边界路由器,用于OSPF边界连接外部的路由器并引入外部路由的设备为ASBR。

4. Router-ID:

一些动态路由协议要求使用Router-ID作为路由器的身份标识,为点分十进制。

Router-ID选举规则:

① 如果配置路由协议的Router-ID,则将其作为协议Router-ID

② 如果在全局下配置了Router-ID,则将其作为协议Router-ID

③ 如果配置了loopback接口IP,则将loopback中地址最大的作为协议Router-ID

④ 如果配置接口IP地址,则从接口IP中地址最大的作为协议Router-ID(不考虑接口的Up/down状态)

注1:在选举Router-id之后,即使被标识Router-id的接口down掉或更改IP也不会造成Router-id的重新选举

注2:Router-ID是用来标识路由器的。

5. Router身份:

广播型网络和NBMA网络中,如果网络中存在很多路由器,则需要建立很多邻接关系,即当路由器很多时,需要建立和维护邻接关系就很多,两两之间需要发送的报文也就特别多,这会造成很多很多内容重复的报文在网络中传递,浪费了设备的带宽资源。此时,便出现了DR/BDR/DR-other的定义。

(1)身份定义:

在OSPF中,主要包含三种路由角色:

① DR

② BDR

③ DR-other

① DR:

DR是针对同一网段中接口的一种标志,OSPF协议定义了指定路由器DR(Designated Router),即所有其他路由器都只将各自的链路状态信息发送给DR,再由DR以组播的方式发送至所有路由器,减少了OSPF数据包的发送。

注1:DR侦听地址为224.0.0.6,也侦听224.0.0.5,所有发送到DR、BDR的LSA的目标地址都为 224.0.0.6。

② BDR:

在OSPF中,如果DR由于某种故障失效,此时网络中必须重新选举DR,并同步链路状态信息,这需要较长的时间。为了能够缩短这个过程,OSPF协议又定义了BDR(Backup Designated Router)的概念,作为DR路由器的备份,当DR路由器失效时,BDR成为DR,并在重新选举新的BDR路由器。

注1:与DR相同,BDR默认侦听地址为224.0.0.6,也侦听224.0.0.5,所有发送到DR、BDR的LSA的目标地址都为224.0.0.6。

注2:默认DR工作正常时,BDR只会接收DD报文,请求缺少的LSA,但是不会去泛洪DD报文和LSA

③ DR-other:

没有选举为DR或BDR的路由器称为DR-other。DR-other默认侦听的地址为224.0.0.5,当DR或BDR发送信息给DR-other时,采用224.0.0.5作为目标地址。

6. DR/BDR:

(1)DR/BDR选举规则:

在广播型网络和NBMA网络中会进行DR/BDR的选举,通过Hello包的交换进行选举。

注1:DR在选举完成后,默认为非抢占模式,即当网络中出现了比DR更优的设备时,默认DR也不会被抢占,防止端口抖动出现的频繁迁移,所以优先级高的不一定为DR,在有限时间内只有一台设备启动,超出选举时间后(40S)便认为自己是DR。

注2:在一个广播型网络中,当两台路由器建立邻居选举出DR和BDR后,此时又有一台设备启用OSPF,不会抢占,所以优先级高的路由不一定为DR,可以在全局下使用命令

reset ospf process重新加载OSPF进行重新选举DR。

华三OSPF向其他设备注入默认 华三ospf下发默认路由命令_OSPF_04

主要通过以下几种方式选举:

①优先级

②Router-id

① 优先级:

首先比较优先级,优先级数值越大越优先,默认为1(如果为0没有选举权),使用命令在接口上进行优先级的修改:

[R1]inter G0/0/1

[R1-G0/0/1]ospf dr-priority 100

② Router-ID:

当优先级一致时,使用Router-ID进行DR的选举,默认Router-ID越大越优先。

(2)DR/BDR选举算法:

在OSPF中,一个网段内的路由器在没有选举出DR之前,都会启用一个Wait timer,时间大小和Dead timer时间一致,在Wait timer时间内,不会自动选举DR和BDR,而是检测邻居发送过来的Hello报文中的Designated Router表项和Backup Designated Router表项中的标识参考当前网络的DR和BDR。

如果在Wait timer时间超时后,依旧没能得知当前网网络中的DR和BDR,此时会使用DR算法进行选举。

DR算法过程:

① 路由器会启用DR算法生成三个结合:DR-other{}、BDR{}、DR{},选举顺序也是按照此顺序进行选举

② 由于当前没有设备认为自己为DR或BDR,所以将当前接收到的Router-ID标识全部放入DR-other{}中

③ 从DR-other中选举出最好的Router-ID放入BDR{}中

④ 从BDR{}中选举出最好的Router-ID放入DR{}中

⑤ 缺少BDR,再从DR-other{}选举出最好的Router-ID放入BDR{}中

华三OSPF向其他设备注入默认 华三ospf下发默认路由命令_华为_05

Router-ID选举案例:

华三OSPF向其他设备注入默认 华三ospf下发默认路由命令_网络_06

(1)默认情况下:

R6为DR

R5为BDR

(2)当LSW1与LSW2端口down掉后:

1)左侧网段:

R5为DR

R3为BDR

2)右侧网段:

R6为DR

R4为BDR

(3)当两端链路恢复后:

R6为DR

R4为BDR

(4)当R6down掉后:

R4为DR

R5为BDR

7. Neighbor/Adjacency:

① Neighbor邻居状态

② Adjacency邻接状态

华三OSPF向其他设备注入默认 华三ospf下发默认路由命令_华三OSPF向其他设备注入默认_07

(1)Neighbor:
邻居状态,默认双方发送并接收到对端的hello报文后,为Neighbor状态,DR-other之间收敛之后处于邻居状态。
通常在双方互相发送Hello包之后并且得到了对端的确认之后进入此状态,需要:
1)数据包头部信息无误:
版本号一致
Router-ID不相同
Area-ID一致
认证类型和密码一致
2)Hello包中内容无误:
掩码一致(P2P网络可以不一致)
Hello时间一致
(2)Adjacency:
邻接状态,DR和DR-other收敛之后的最终状态。
网络类型中的邻接关系:
网络类型 是否和邻居建立邻接关系
P2P 总是和邻居建立邻接关系
P2MP 总是和邻居建立邻接关系
Virtual Link 总是和邻居建立邻接关系
Broadcast
NBMA DR总是和其他所有路由器包括BDR建立邻接关系
BDR总是和其他所有路由器包括DR建立邻接关系
处于DR-other状态的路由器只与DR和BDr建立邻接关系
DR-other之间为邻居状态
8. 被动接口:
OSPF被动接口也称为抑制接口,成为被动接口后,将不会接收和发送OSPF报文。
[Huawei-ospf-1]silent-interface g0/0/1-----ospf进程下配置g0/0/1为被动口