OSPF

优点

  • 支持触发更新:能够快速检测并通告自治系统内的拓扑变化
  • 区域划分:区域内部的路由器使用SPF最短路径算法保证了区域内部的无环路。
  • 路由分级:路由有不同的级别有不同的功能
  • 支持验证:OSPF路由器之间的报文可以配置成必须经过认证才能进行交换
  • 组播发送:效率高

OSPF特性

  • 管理性距离:110
  • OSPF采用SPF算法计算达到目的地的最短路径
  • OSPF报文封装在IP报文头部,协议号为89。
  • 指派路由器(DR)和备份指派路由器(BDR)

DR和BDR选举

  • Hello报文通过IP组播发送
  • 选举可以减少网络之间的流量
  • 相同优先级的情况使用Router-ID比较大小来决定
  • 最高OSPF优先级的路由器被选为DR,次高OSPF优先级的路由器被选为BDR
  • DR选举是非抢占
  • 在多路访问网络上可能存在多个路由器,为了避免路由器之间建立完全相邻关系而引起的大量开销,OSPF要求在区域中选举一个DR。每个路由器都与之建立完全相邻关系。DR负责收集所有的链路状态信息,并发布给其他路由器。选举DR的同时也选举出一个BDR,在DR失效的时候,BDR担负起DR的职责。

OSPF的三张表

邻居列表(neighbor table)

列出每台路由器全部已经建立邻接关系的邻居路由器

链路状态数据库(topology table)

列出网络中其他路由器的信息,由此显示了全网的网络拓扑

OSPF路由表(routing table)

列出通过SPF算法计算出到达每个相连网络的最佳路径

OSPF的网络类型

点到点型
  • Point-to-point(P2P)型网络,是指该接口通过点到点的方式与一台路由器相连。
  • 此类型网络不需要进行OSPF的DR、BDR选举。
  • 当链路层协议是PPP或HDLC时,OSPF缺省认为网络类型是P2P。
  • 在此类型的网络中,OSPF以组播方式(224.0.0.5)发送协议报文。
广播多路访问型
  • Broadcast multiAccess网络,网络本身支持广播功能,通常运行在LAN环境。
  • 当链路层协议是Ethernet、FDDI时,OSPF缺省认为网络类型是广播型。
  • 此类型网络需要进行OSPF的DR、BDR选举。
  • 所有相邻路由器仅和DR,BDR形成FULL的邻接关系
  • 给DR和BDR发送的报文使用组播224.0.0.6
  • 从DR发送到其他路由器的报文使用组播地址224.0.0.5
非广播多路访问型
  • NBMA(Non-BroadcastMultipleAccess)型网络,虽然从一个接口可以到达多个目的节点,但是网络本身不支持广播功能。
  • 当链路层协议是帧中继、ATM或X.25时,OSPF缺省认为网络类型是NBMA。
  • 此时OSPF的邻居需要管理员手工指定。
  • 在该类型的网络中,以单播方式发送协议报文。
点到多点型(Point-to-MultiPoint)
  • 不需要DR选举,只能使用一个子网
  • Hello每30秒
  • 必须静态针对邻居
  • P2MP型网络比较特殊,没有一种链路层协议会被缺省地认为是点到多点类型。
  • 点到多点必须是由其他网络类型强制更改而来。常用做法是将NBMA改为点到多点的网络。
  • 在该类型的网络中,缺省情况下以组播方式(224.0.0.5)发送协议报文,也可以根据用户需要,以单播形式发送协议报文。

OSPF报文种类

Hello报文

用于发现,建立和维护邻居关系
Hello 报文

  • Network Mask:发送该报文接口所在网段掩码
  • Hello Interval [sec]:hello 周期发送时间
  • Options:选项位,用于支持不同的功能
    DN:Down
    E:External Routing:如果置位表示支持 5 类 LSA
    N:NSSA Routing:如果置位表示支持 7 类 LSA
  • Router Priority:路由器优先级,用于竞选 DR/BDR,缺省为 1
  • Router Dead Interval [sec]:hello 的失效时间=4*hello 时间
  • Designated Router:DR 路由器,使用 Router-id 标识
  • Backup Designated Router:BDR 路由器,使用 Router-id 标识
  • Active Neighbor:活跃的邻居列表,使用 Router-id 标识
DBD(Database Description)链路状态数据库描述信息

描述LSDB中LSA头部信息
DBD报文

  • Interface MTU:0
  • Options:选项置位
  • DB Description:DD 报文描述置位
    (I) Init:如果置位表示是第一个 DD 报文
    (M) More:如果置位表示后续还有带有 LSA 摘要信息的 DD 报文
    (MS) Master:如果置位表示发送该 DD 报文的是 Master
  • DD Sequence:DD 报文序列号,用于标识 DD 报文,只有 Master 产生序列号,每发送一次加 1
LSR(Link State Request)链路状态请求

LSR报文
用于请求响应的 LSA,包含有要请求的 LSA 的三要素
LSA 的三要素

LSU(Link State Update)链路状态更新

包含一条或多条LSA)
LSA链路信息更新
用于向邻居更新请求的 LSA,含有真正的 LSA

LSACK(Link State Ack) 报文

LSAck报文
用于对收到的 LSA 做确认,只包含 LSA 的摘要信息

OSPF邻居的有限状态机

邻居状态机

Down

在DOWN状态下,OSPF接口仍然有尝试发现邻居的意愿,因此会不断的发送组播hello包。

Attempt

只存在于NBMA网络中,当一台设备试图联系自己邻居时,没有收到回应报文时,就会将邻居状态设置为Attempt,在Attempt状态下,路由器将使用hellointerval时间代替pollinterval的时间来作为向邻居发送hello数据包的时间间隔。

init

i表示一台路由器收到另一台路由器的hello报文,但是报文中的邻居表里没有自己的RouterID

Two-way

表示一台路由器收到另一台路由器的hello报文,报文的邻居表中有自己的RouterID
该状态是OSPF邻居之间可以具有的最基本的关系,也是第一个稳态,但是此时两者还不能共享路由信息。

Exstart

一台OSPF路由器在将某个邻居置为2way状态后,就开始发送空的DBD包,用于协商master/slave。这个就是ex-start状态。两台router间用空的BDB 分组确定master和slave关系(注意不是DR和BDR)
在DBD包中有3个标记位用来管理邻接关系的建立过程:

  • I位 或称为初始位(initial bit) 用于ex-start协商主从关系的初始化协商的DBD包,该位置1
  • M位 或称为后继位(More bit) 如果这不是OSPFrouter发送的最后一个DBD,该位置1
  • MS位 或称为主/从位(Master/slave bit) 如果始发路由器是Master,则该位置1
    如果某台OSPF router收到邻居发来的DBD,I位也就是init位置0,则意味着ex-start状态结束,并且MS/slave已经选出来了,那么该路由器会将邻居置为exchange状态,开始用包含LSA头部的DBD交换各自的LSBD。
Exchange

双方使用包含自己LSA头部的DBD报文进行交互,并且将对方发过来的LSA头部、并且自己感兴趣的LSA(或自己没有的LSA)存储在一个本地OSPF接口的队列里,以便在下一个阶段进行LSA详细信息的请求。当某个OSPF接口收到邻居发来的DBD,M位置0,则表示对方已经发完DBD了,与此同时,如果该路由器的这个OSPF接口上存在待请求的LSA,那么它会将这个邻居置为loading状态。

Loading

对方的LSA摘要和自己的LSDB比较后,发现LSA摘要中存在LSDB中没有的,需要更新

Full

收到的LSA摘要和自己的LSDB表一致,不需要进行更新

OSPF路由器类型

区域内路由器

区域内路由器(Internal Routers):该设备的所有端口都属于同一个ospf区域。

区域边界路由器ABR

区域边界路由器ABR(Area Border Routers):改路由器可以连接两个以上区域,但必须有一个端口连接骨干路由器。用于连接骨干与非骨干路由器。

骨干路由器

骨干路由器(Backbone Routers):至少一个接口属于骨干区域,ABR和位于Area0 的路由器都属于骨干路由器。

自治系统边界路由器ASBR

自治系统边界路由器ASBR(AS Boundary Routers) 连接不同的AS或其他的IGP协议
OSPF路由器类型

OSPF LSA类型详解

LSA1 路由器LSA(Router LSA)

由区域内所有路由器产生,并且只能在本个区域内泛洪广播。
这些最基本的LSA通告列出了路由器所有的链路和接口,并指明了它们的状态和沿每条链路方向出站的代价。
LSA传播范围:本域内传递
LSA通告路由器:本路由器的Router ID
LSA链路状态ID:本路由器的Router ID
LSA包含的内容:本路由器的直连邻居,以及直连接口的信息

LSA2 网络LSA(Network LSA)

必须在BMA网络和NBMA网络区域内的DR或BDR路由器产生,报文包括DR和BDR连接的路由器的链路信息。
网络LSA也仅仅在产生这条网络LSA的区域内部进行泛洪。
LSA传播范围:本域(存在以太网络连接的域)内传递
LSA通告路由器:DR的Router ID
LSA链路状态ID:DR的接口IP
LSA包含的内容:BMA网络中的路由器以及本网的掩码信息和DR路由器本身的Router ID

LSA3 网络汇总LSA(Network summary LSA)

由ABR产生,可以通知本区域内的路由器通往区域外的路由信息。
在一个区域外部但是仍然在一个OSPF自治系统内部的缺省路由也可以通过这种LSA来通告。
如果一台ABR路由器经过骨干区域从其他的ABR路由器收到多条网络汇总LSA,那么这台始发的ABR路由器将
会选择这些LSA通告中代价最低的LSA,并且将这个LSA的最低代价通告给与它相连的非骨干区域。
LSA传播范围:域间路由,能泛洪到整个AS中,始发路由器除外。
LSA通告路由器:ABR的Router ID(经过一个ABR,就会改为这个ABR的Router ID)
LSA链路状态ID:网络号
LSA包含的内容:本区域中的路由信息,包括网络号和掩码

LSA4 ASBR汇总LSA(ASBR summary LSA)

也是由ABR产生,但是它是一条主机路由,指向ASBR路由器地址的路由。
LSA传播范围:泛洪到整个AS中,(把ASBR的Router ID传播到其他区域,让其他区域的路由器得知ASBR的位置。)
LSA通告路由器:ABR的Router ID(经过一个ABR,就会改为这个ABR的Router ID)
LSA链路状态ID:ASBR的Router ID
LSA包含的内容:本区域中的路由信息,包括网络号和掩码

注意:在ASBR直连的区域内,不会产生4类的LSA,因为ASBR会发出1类的LSA,其中会指明自己是ASBR。

LSA5 自治系统外部LSA(Autonomous system external LSA)

由ASBR产生,告诉相同自治区的路由器通往外部自治区的路径。
自治系统外部LSA是惟一不和具体的区域相关联的LSA通告,将在整个自治系统中进行泛洪。
LSA传播范围:域外路由,不属于某个区域,一个LSA即是一条路由信息
LSA通告路由器:ASBR的Router ID,通告路由器不会发生改变
LSA链路状态ID:网络号
LSA包含的内容:将外部自治系统传递进来,包含着域外的路由信息

LSA7 NSSA外部LSA(NSSA External LSA)

由ASBR产生,几乎和LSA 5通告是相同的,但NSSA外部LSA通告仅仅在始发这个NSSA外部LSA通告的非纯末梢区域内部进行泛洪。
在NSSA区域中,当有一个路由器是ASBR时,不得不产生LSA 5报文,但是NSSA中不能有LSA 5报文,所有ASBR产生LSA 7报文,发给本区域的路由器。

查看LSA类型
show ip ospf database summary

OSPF建立邻居的必要条件

  1. ospf的区域号必须一致,区域类型(stub)必须一致
  2. 计时器必须一致
  3. 认证必须一致
  4. IP地址必须前缀和掩码一致(lan环境,P2P环境对掩码没有要求)
  5. 接口MTU一致(会卡在exstart,可使用ip ospf mtu-ignore忽略这个问题)
  6. 网络类型一致(不一致即使建立邻居也无法获得路由)
  7. RID必须域唯一
  8. 在广播链路不可以双方优先级都为0

OSPF路由种类

OSPF路由类型描述
OOSPF区域内部
router LSA和network LSA
  • 在同一区域内部的路由
    通告路由器LSAs以及网络LSA
    o路由由本地运算得出,无法进行汇总
O|AOSPF内部区域间
summary LSA
  • 在同一自制系统的不同区域的路由
    通告汇总LSA
O E1类型一外部路由
cost可以累加
  • 区域外部路由
    通告外部LSA
    包含路由信息而不是链路状态信息
O E2类型一外部路由
默认cost20

OE1,OE2 区别:
OE2:默认选项,metric始终为20,不累加,5型lsa学来的路由,metric值始终是20
OE1:metric值累加,适用于由两个ASBR到达同一个非ospf自制系统的网络

注:当有多个ASBR到达外部自制系统时候,建议使用OE1

修改路由类型

在ASBR上

router ospf 110
 redistribute eigrp 90 subnet metric-type 1
将metric的类型改为OE1

区域划分

标准区域

默认的区域类型,接收链路更新路由汇总外部路由等

骨干区域

也叫中转区域,其他区域都与之相连.

末节区域(stub)

  • 不接受AS外部的LSA信息,也就是不接受4类和5类LSA
  • 只接受区域间类LSA和本区域内LSA,
  • ABR会过滤4和5类LSA的流量,会以3类LSA的形式向内部产生一条默认路由,发往stub
  • 在末节区域里不能有ASBR(否则就会出现5类LSA了).不接受5类LSA意味着末节区域路由器的路由表里不会出现E1或者E2类型路由.

完全末节区域(totolly stub):

  • CISCO专有的,在末节区域基础上的加强版
  • 不但不接受5类LSA.更不接受3类 4类的汇总LSA.
  • 因此绝对末节区域里的路由表将不会有O IA E1 E2类型路由.
  • 完全末节区域同样不能有ASBR
  • 所有路由器必须被配置为stub
  • ABR必须被配置为完全末节

次末节区域(NSSA区域)

  • 这类是末节区域的一种变态扩展,它容许末节里出现了ASBR,
  • 因而在此区域里出现了独特的7类NSSA LSA.
  • NSSA的ABR上执行7转5(对7类的且设置了P位=1的LSA),执行7转5的ABR变成很特殊的ABR/ASBR混合体
  • 这个路由器上存在5类,注意5类是和区域无关的.
  • NSSA与末节区域的最大区别在于,NSSA区域可以允许自身将外部路由重分布进OSPF,而末节区域则不可以。

Totally NSSA(完全NSSA区域):Totally Not-So-Stubby Area

  • Totally NSSA与NSSA的区别在于,NSSA区域可以允许其它OSPF区域的路由(Inter-Area Route)进入,而Totally NSSA区域却不可以,但Totally NSSA区域的ABR会自动向Totally NSSA区域内发送一条指向自己的默认路由。
  • 过滤3,4,5类lsa,ABR会产生缺省的3类lsa,该区域能引入外部路由
  • 7类LSA在这里还是7类LSA,出本area后就变成5类而传播了

成为末节区域的标准:

  1. 所有末节区域内的路由都必须被配置为末节区域路由器,否则在hello报文里的末节区域标志将不匹配从而无法建立邻居关系.
  2. 末节区域内不能存在虚链路
  3. 末节区域不能存在ASBR
  4. 末节区域只能存在1个区域出口或存在多个区域出口但不需要选择最佳路径.默认类型下路由器对到外部AS的路由不考虑在OSPF内的开销(E2类型),所以这时会无法选择最佳路径.

配置OSPF

虚链路

在ospf中非骨干区域需要跟骨干区域相连,不然不能通讯,但是骨干区域接口有限,没有跟骨干区域相连的只有通过设置虚链路才可建立通讯。

R2(config)#router ospf 1  //进入ospf进程1
R2(config-router)#area 1 virtual-link ip-address  //设置虚链路连接到R3

路由汇总

域外汇总
R2(config)#router ospf 100
R2(config-router)#summary-address 172.16.0.0 255.255.0.0
  • ASBR上做;
  • COST继承明细最小;
    -明细最后一条消失,汇总路由才会消失;
  • 本地会生成一条指向NULL0的路由,防环;
  • 汇总路由将抑制明细路由。
区域汇总

在ABR上配置总

R2(config)#router ospf 100
R2(config-router)#area 1 range 172.16.0.0 255.255.0.0
  • 区域的所有ABR上做;
  • 汇总路由的COST可手动修改,默认继承明细最小;
  • 明细最后一条消失,汇总路由才会消失;
  • 本地会生成一条指向NULL0的路由,防环;
  • 汇总路由将抑制明细路由。

配置认证

区域简单口令认证
R1(config)#router ospf 1
R1(config-router)#area 0 authentication
R1(config)#int s0/0
R1(config-if)#ip ospf authentication-key cisco
R2(config)#router ospf 1
R2(config-router)#area 0 authentication
R2(config)#int s0/0
R2(config-if)#ip ospf authentication-key cisco

区域MD5认证

R1(config)#router ospf 1
R1(config-router)#area 0 authentication message-digest
R1(config)#int s0/0
R1(config-if)#ip ospf message-digest-key cisco
R2(config)#router ospf 1
R2(config-router)#area 0 authentication message-digest
R2(config)#int s0/0
R2(config-if)#ip ospf message-digest-key cisco
接口简单口令认证
R1(config)#int s0/0
R1(config-if)#ip ospf authentication
R1(config-if)#ip ospf authentication-key cisco
R2(config)#int s0/0
R2(config-if)#ip ospf authentication
R2(config-if)#ip ospf authentication-key cisco
接口MD5认证
R1(config)#int s0/0
R1(config-if)#ip ospf authentication message-digest
R1(config-if)#ip ospf message-digest-key cisco
R2(config)#int s0/0
R2(config-if)#ip ospf authentication message-digest
R2(config-if)#ip ospf message-digest-key cisco

单区域OSPF

R1(config)#router ospf 1        //启动OSPF进程 ,1是进程ID
R1(config-router)#router-id 1.1.1.1        //配置路由器ID
R1(config-router)#network 172.16.1.0 0.0.0.255 area 0        //通告直连网络
R1(config-router)#network 172.16.1.0 255.255.255.0 area 0        //通告直连网络

默认路由再发布

R1(config)#ip route 0.0.0.0 0.0.0.0 loopback 1        //添加静态默认路由
R1(config)#router ospf 1
R1(config-router)#default-information originate        //再发布默认路由

EIGRP重分布

R2(config)#router ospf router-id
R2(config-router)#redistribute eigrp rigrp-id subnets
  • OSPF路由进程ID的范围在1-65535之间,而且只有本地含义,不同路由器的路由进程ID可以不同。如果要想启动OSPF路由进程,至少确保有一个接口是up的。同一台路由器上可以启动多个OSPF进程,但会消耗更多的CPU
  • 区域ID是0-4294967295的数,也可以是IP地址的格式A.B.C.D。当网络区域为0或0.0.0.0时称为主干区域。
  • Router ID选择遵循如下顺序:
    1.最优先的是在OSPF进程中使用“router-id”指定了RID;
    2.如果没有在OSPF进程中指定RID,则选择IP地址最大的环回接口的IP地址为RID;
    3.如果没有环回接口,则选择活动的IP地址最大的物理接口的IP地址为RID。
    ①如果使用“secondary”配置IP地址时,该地址不起作用,即不参与RID竞选;
    ②使用“router-id”后,应使用命令“clear ip ospf process”重置ospf进程,新配置的RID才能生效;
    ③2、3步只有在下次重启路由器时才会生效,即后来加入大的IP地址也不能选举为RID直到路由器重启。

查看测试

查看邻居表

Switch#sh ip ospf neighbor 
Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2           1   EXSTART/DR      00:00:34    192.168.1.2     FastEthernet0/1

查看拓扑结构库

Switch#show ip ospf database
            OSPF Router with ID (2.2.2.2) (Process ID 1)

                Router Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum Link count
2.2.2.2         2.2.2.2         201         0x80000007 0x004bfd 2
1.1.1.1         1.1.1.1         201         0x80000004 0x00a685 3

                Net Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum
192.168.1.2     2.2.2.2         201         0x80000001 0x002c3f

查看运行OSPF接口的信息

show ip ospf interface

查看OSPF路由表命令

show ip route ospf router-id
Switch#show ip route ospf 1
     10.0.0.0/24 is subnetted, 2 subnets
O       10.1.2.0 [110/2] via 192.168.1.1, 00:11:25, FastEthernet0/1
     20.0.0.0/32 is subnetted, 1 subnets
O       20.1.1.1 [110/2] via 192.168.1.1, 00:11:25, FastEthernet0/1
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
02f,18aug03,agi added #include 02e,02jun03,agi removed #include "rwproto.h" 02d,02jun03,agi changed #include "rwos.h" to include "ospf_rwos.h" 02c,29may03,agi removed unused includes, added new includes 02c,08may03,asr Changes to make OSPF virtual stack compatible 02b,09may03,agi added #include , removed #include 02a,17feb02,ram SPR 81808 Added OSPF memory partition support 21,13october01,kc Dynamic configuration changes. 20,21september01,kc Removed unused raw socket specific declarations. 19,26september00,reshma Added WindRiver CopyRight 18,25september00,reshma RFC-1587 implementation for OSPF NSSA Option, also tested against ANVL. 17,20july00,reshma Unix compatibility related changes. 16,06july00,reshma Removed unnecessary header files and defines. 15,23february00,reshma Changes for ospf mib 14,23december99,reshma Compatibility with VxWorks-IP and VxWorks RTM-interface 13,13august99,jack compilation fixes no IP case 12,05august99,nishit Replaced including IP header files by the new ospf_ip_structures.h 11,17may99,jack Added new include file ospf_patricia_32_bits_key_prototypes.h 10,28december98,jack Compiled and added some comments 09,25november98,rajive Deleted socket include file 08,11november98,jack Config changes, linted and big endian changes 07,30october98,jack Incorporate changes for compilation on Vxworks 06,12february98,release engineer code style changes, feature enhancements, complete CISCO and BAY compaltibility. OSPF v4.2.0 05,10july97,cindy Pre-release v1.52b 04,10february97,cindy Release Version 1.52 03,22october97,cindy Release Version 1.50 02,05june96,cindy Including visnpstr.h as a kludge for the first beta release. 01,05june96,cindy First Beta Release

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值