3.CCNP闫辉视频笔记OSPF

简介

  • OSPF(开放式最短路由优先协议)
  • IGP
  • LS 发送的是LSA(链路状态通告Link Status Advertisement),包含的是拓扑信息。加入LSDB,用SPF计算出Routing Table
  • VLSM/CIDR
  • 四层协议 三层报头中的上层协议号为89


  • 7中邻接关系
  • 7中LSA
  • 5中报文
  • 3张表
    • 邻居表(邻接数据库)
    • 拓扑表(LSDB)
    • 路由表(转发数据库)

链路状态协议特点

  • 链路状态路由协议比距离矢量路由协议更加了解网络拓扑
  • 每台路由器都会保存同一区域的拓扑
  • 不会产生环路

OSPF区域

  • 两个层次
    • 骨干区域(area 0),或者叫传输区域
    • 非骨干区域
  • 减少路由表表项
    • OSPF中没有自动汇总的概念,因为OSPF中传递的是LSA,而不是路由条目。
    • 不能进行域内汇总,只能进行域间汇总和域外汇总。
  • 将拓扑变更的影响限制在一个区域内
  • 特定LSA泛洪停止在域边界上,不同类型的LSA有不同的传递性
名词
骨干路由 backbone routers
ABR area border router 区域边界路由器 将其他区域连接到area 0

OSPF邻接关系

在OSFP中,对邻居关系(Neighbor)和邻接关系(Adjacency)严格区分。
邻居关系是指三层直连,邻接是指7层FULL邻接关系。
  • P2P WAN
    • 两端邻居成为FULL邻接关系
  • LAN 
    • 邻居与DR和BDR形成FULL邻接关系
    • DROTHER之间形成two-way state
  • 只有当邻接关系建立起来了,才能交换LSA,并同步LSDB。
  • LSA是泛洪的。

OSPF算法计算

也叫Dijkstra算法
  • 同一个区域内的所有路由器拥有相同的LSDB
  • 度量值称为cost,将每段路径用10^8/BW(bit/s)计算,然后求和,得到整条路径的cost
LSA
3.CCNP闫辉视频笔记OSPF_第1张图片
OSPF和RIP一样,既支持周期发送,也支持触发发送。
序列号
最小值 0x8000 0001
最大值 0x7FFF FFFF
3.CCNP闫辉视频笔记OSPF_第2张图片
序列号使用的最右边的棒棒糖型空间

OSPF报文类型

  • HELLO
    • Hello timer:10s或者30s,取决于接口类型。
    • Dead timer是发送周期的4倍,修改hello时间,dead时间将自动变为4倍,反过来,修改了dead不会改变hello。
  • DBD(Database Description)
    • LSDB的摘要信息,防止不必要的LSA交换
  • LSR(Link-State Request)
    • 请求自己没有的LSA
  • LSU(Link-State Update)
    • 包含LSR请求的LSA信息
  • LSAck(Link-State Acknowledgment)
    • 确认收到了LSU中的LSA,有多少条LSA,就有多少LSAck进行确认

OSPF的确认机制

  • 显示确认 使用LSU确认LSR使用LSAck确认LSU
  • 隐式确认(基于序列号的确认机制) 不使用额外的报文确认,而是用相同序列的同类型报文进行确认。如DBD

OSPF包封装

3.CCNP闫辉视频笔记OSPF_第3张图片

Router ID的选择:
  1. 手工配置
  2. 所有状态为UP UP的环回口中选举最大的IP地址
  3. 所有状态为UP UP的物理接口最大的IP地址
Router ID和Area ID都可以用点分十进制表示。

HELLO报文
  • Router ID
  • Hello and dead intervals *
  • Neighbors 包含邻居的RID
  • Area ID *
  • Router priority 在P2P接口中,这个字段是没有意义的
  • DR IP address
  • BDR IP address
  • Authentication password *
  • Stub area flag *
*表示建立邻接关系必须协调成功的条目

邻接关系建立过程的7种状态
  1. Down 初始状态,接口被宣告进OSPF,没有发送任何报文
  2. Init 通过接口发送一份Hello
  3. Two-Way 通过接口收到了一份Neighbor字段包含自身RID的Hello
  4. Exstart 交互3个不带LSA报头的DBD,选择Master/Slave
  5. Exchange 由Master发起的带有LSA报头的DBD信息交互
  6. Loading 交互LSR LSU以及LSAck实现LSDB的同步
  7. Full 一旦LSDB同步,邻接关系到达Full
3.CCNP闫辉视频笔记OSPF_第4张图片
Two-Way状态并不是同时到达的。到达了Two-Way State之后,MA网段将进行DR选举。
3.CCNP闫辉视频笔记OSPF_第5张图片
在进入Exstart State之后,将交换3个DBD,以确立主从关系(Master/Slave),由RID更大的作为Master。
3.CCNP闫辉视频笔记OSPF_第6张图片
图中,I指initial,M指more,M/S指Master/Slave。
在Exchange State阶段中,由Master主导DBD交换。
3.CCNP闫辉视频笔记OSPF_第7张图片


OSPF小特性

  • MTU更改
  • 在OSPF中,Loopback口将会处理成一台stub host,其路由以32位主机路由通告出去,可以防止路由黑洞。

DR/BDR选举

选举原则
  1. 参与该MA网段的路由器接口的OSPF优先级,越高越好(0-255),缺省值是1。值为0,表示不参与选举。
  2. 该MA网段所连接的路由器的RID,越高越好。
选举时间为wait time,从第一台路由器到达Two-Way State开始计算,默认为40s或者120s,是必须选满的。
选举完成之后,就不再进行选举了。与根桥选举不同,根桥选举是时时进行的。
特点:
  • DR/BDR无法被抢占
  • DR挂了,BDR会立即抢占成为新的DR,新的BDR通过在所有DROther之间重新选举得出
  • DR和BDR是接口级别概念,每个MA网段的DR和BDR是单独选举的
  • BDR并不是必需的,可以使用ip ospf priority 0将除了DR以外的接口置为0。这个在FR中很重要,只将HUB节点作为DR,没有BDR。
  • 如果一个网段中,没有DR和BDR,所有都为DROther,2-way state,不会有任何邻接关系,也没有任何LSA传递。
只要一个接口开启了OSPF进程,该接口会立即监听224.0.0.5,仅当该节点成为DR或BDR时,该接口才会同时监听224.0.0.5和224.0.0.6。
所有路由器发送给DR和BDR的报文的目的地址都是.6,DR发给其他路由器的是.5。


OSPF路由器类型
ABR 连接骨干区域和非骨干区域
ASBR 连接其他路由协议AS

LSA类型

3.CCNP闫辉视频笔记OSPF_第8张图片

LSA类型1:Router LSA

  • 传递范围: 在该区域内泛洪,不穿越ABR
  • 通告者: 区域内的每个路由器将发送一条Router LSA,用Router ID标识
  • 包含内容: 纯拓扑信息,包括宣告进该区域的所有直连链路的前缀、掩码和网络类型、度量值
  • Link-ID: 通告该LSA的RID
  • ADV Router: 通告该LSA的RID

LSA类型2:Network LSA

  • 传播范围: 在该区域内泛洪,不穿越ABR
  • 通告者: DR
  • 包含内容: 纯拓扑信息,该MA网段所连接的Router的RID、该MA网段的掩码
  • Link-ID: DR接口的IP地址
  • ADV Router: DR的RID

LSA类型3:Summary LSA

用来传递域间路由的
这里的Summary只是一个名字,默认是不做汇总的
  • 传递范围: 除了本区域外的所有区域
  • 通告者: ABR
  • 包含内容: 纯路由信息,一条域间路由对应一条Summary LSA
  • Link-ID: 3类LSA路由的前缀
  • ADV Router: ABR的RID,每跨域一个ABR都会自动改写为该ABR的RID

LSA类型4:Summary ASB LSA

  • 传递范围: 除了ASBR所在区域的所有区域
  • 通告者: ABR
  • 包含内容: 拓扑信息,
  • Link-ID: ASBR RID
  • ADV Router: ABR RID,每跨域一个ABR都会自动改写为该ABR的RID

LSA类型5:External LSA

  • 传递范围: 整个AS
  • 通告者: ASBR
  • 包含内容: 纯路由信息,一条域外路由对应一条External LSA
  • Link-ID: 5类LSA路由的前
  • ADV Router: ASBR的RID,不会改变

小特性

O E1和O E2

  • 当外部路由引入是,需强制添加Seed Metric(种子度量值)。
  • 对于OSOF而言,如果将BGP路由重分发进入,默认为1;所有其他外部路由缺省Seed Metric为20。
  • 当我们更加关心内网路径好坏的时候,可以手动指定类型1,逐跳累加cost。
  • (config-router)#redistributed eigrp 90 subnets metric-type 1

汇总

域间汇总:需要在该区域的所有ABR上实施对3类LSA汇总
ospf的汇总是在进程内设置的,不是链路的。
(config-router)#area 0 range 202.10.8.0 255.255.252.0
该命令之后可以加cost,调整度量值,也可以加not-advertise,不通告该汇总,这样明细和汇总路由都不会有,相当于路由过滤。
但是,这种路由过滤的方法并不推荐。正常做法是:
(config)#ip prefix-list 10 seq 10 deny 202.10.8.0/23 ge 24 le 24
(config)#ip prefix-list 10 permit 0.0.0.0/0 le 32
(config-router)#area 1 filter-list prefix 10 in
域外汇总:需要再ASBR上对5类LSA汇总
(config-router)#summary-address 192.168.8.0 255.255.252.0

OSPF LSDB过载保护

(config-router)#max-lsa maximum-number

改变cost

(config-if)#ip ospf cost <1-65535>
或者
(config-router)#auto-cost reference-bandwidth ref-bw
改变cost计算公式中的分子,ref-bw单位是Mbits,默认是100,也就是10^8bps。

OSPF建邻接的条件

  1. 相同的hello时间和dead时间
  2. 直连接口属于相同的区域
  3. 使用相同的认证类型和密钥
  4. 相同的末节区域标识
  5. 相同的MTU
  6. 相同的网络类型

OSPF特殊区域

Stub区域

目的

过滤4/5类LSA

部署条件

  1. 建议只有一个ABR,否则每个ABR都会发送缺省路由,可能导致内网路由器根据自己的情况选择它认为更近的缺省路由,从而产生次优路径。
  2. 同区域内的所有路由器全部配置为stub路由器
  3. 没有ASBR
  4. 不能是区域0
  5. 没有虚链路

部署

(config-router)#area 1 stub
在该区域的所有路由器上部署STUB特性,ABR将入区域方向的4/5类LSA同时过来,同时该ABR会主动向区域内部下放一条O IA的0.0.0.0/0的3类缺省路由,Seed Metric为1。
3.CCNP闫辉视频笔记OSPF_第9张图片
Area 1成为Stub Area,R2将过滤4/5类LSA,同时将发送缺省路由。
部署之前
3.CCNP闫辉视频笔记OSPF_第10张图片
部署之后
3.CCNP闫辉视频笔记OSPF_第11张图片

假设Area 1还有一个ABR R6,那么R6也下放缺省路由,可能产生次优路由。
防止次优路由的方法:在R6上,使用area 1 default-cost修改默认cost,改高一些。

Totally Stub区域

目的

过滤3/4/5类LSA

部署

在ABR上部署,内网路由器上并不需要加no-summary参数
(config-router)#area 1 stub no-summary
部署之后
3.CCNP闫辉视频笔记OSPF_第12张图片


次末节区域

Not-So-Stubby Areas(NSSA)
过滤4/5类路由
允许区域内部有ASBR
3.CCNP闫辉视频笔记OSPF_第13张图片
NSSA中的ASBR将外部路由重分发进来的时候,就是以7类LSA发送的,仅在NSSA内存在。
NSSA中的ABR把从内到外的7类LSA转换成5类LSA,一个NSSA只能有一个ABR(RID最大)充当转换器。 3.CCNP闫辉视频笔记OSPF_第14张图片
7类LSA与区域是相关的,在R1上以O N2表示,并转换为O E2的5类LSA发送给Area 0。
凡是能发送5类LSA的都是ASBR,因此R1的身份变成了ABR/ASBR,也变成了5类LSA的ADV Router。
因此,NSSA内部的ASBR R3并不为外界知道,外界知道的是转换器R1作为ASBR。
forward address就是用来告知真正需要转发的是R3而不是R1。
NSSA中的ABR默认不会向区域内部下放缺省路由,建议下放。
下放方法是:
(config-router)#area 2 nssa default-information-roginate
 O N2 0.0.0.0/0 Seed-Metric = 1

完全次末节区域

过滤3/4/5类LSA
主动下放缺省路由 O IA 0.0.0.0/0 Seed-Metric = 1
(config-router)#area 2 stub no-summary

加表优先级
O > O IA > O E1/E2 == O N1/N2


OSPF不规则区域

网络设计时,不要使用不规则区域。不规则区域的产生,大多是由于项目割接。这里提供的是临时应急方案。

远离骨干区域的非骨干区域


单点双向重分发

在没有与Area 0直连的ABR上,使用OSPF双进程,启用单点双向重分发。
(config)#router ospf 110
(config-router)#redistribute ospf 100 subnets
(config)#router ospf 100
(config-router)#redistribute ospf 110 subnets

缺点:全部是O E2路由。

tunnel

在没有与Area 0直连的ABR上,建立一个Tunnel链路连接到离其最近的Area 0中的ABR路由器上。在这两台ABR上对Tunnel配置IP地址为同一个IP子网段,并且将其宣告进OSPF的Area 0.
tunnel 状态为 Up 的条件有3个:
(1)配置了 tunnel 接口的IP地址;
(2)配置了源地址和目的地址;
(3)源和目的地址之间要有可达的路由。
R1(config)#int tunnel 1
R1(config-if)#ip add 31.1.1.1 255.255.255.0
R1(config-if)#tunnel source 1.1.1.1
R1(config-if)#tunnel destination 3.3.3.3
R3(config)#int tunnel 3
R3(config-if)#ip add 31.1.1.3 255.255.255.0
R3(config-if)#tunnel source 3.3.3.3
R3(config-if)#tunnel destination 1.1.1.1
这样就建立了逻辑接口tunnel。1.1.1.1和3.3.3.3必须有可达路由,这样tunnel口才能up up。
在ospf进程内宣告tunnel接口的IP地址,如果此时源地址和目的地址(分别是1.1.1.1和3.3.3.3)也宣告进了ospf进程,将造成ospf邻接关系翻动现象。
因此,只有将1.1.1.1和3.3.3.3做成静态路由,就可以同时解决翻动现象和tunnel up up的问题了。

缺点:配置量大且繁琐。

Virtual-Link
在没有与Area 0直连的ABR和离其最近的Area 0中的ABR路由器上部署。
不能跨域骨干区域和特殊区域。
R1(config-router)#area 2 virtual-link 93.3.3.3
R3(config-router)#area 2 virtual-link 91.1.1.1
Virtual-Link是一根按需链路,DoNotAge LSA,简称DNA,也就是说LSA的老化计数器不会计数。
Virtual-Link没有Hello时间和Dead时间

被分割的Area 0

OSPF认证

不管是链路级认证还是区域级认证,密钥id和密钥字符串是配置在接口(包括Virtual-Link)上的,因此每个网段内保持一致即可。

链路级认证

明文认证

(config-if)#ip ospf authentication-key cisco
(config-if)#ip ospf authentication

密文认证

(config-if)#ip ospf message-digest-key 13 md5 cisco
(config-if)#ip ospf authentication message-digest

区域级认证

明文认证

(config-if)#ip ospf authentication-key cisco
(config-router)#area 0 authentication

密文认证

(config-if)#ip ospf message-digest-key 13 md5 cisco
(config-router)#area 0 authentication message-digest

针对于虚链路认证
如果在R1和R2上做了Area 0的区域级认证,由于虚链路是area 0的一部分,因此虚链路上不做认证,邻接关系是起不来的。
因此,还需要在虚链路两端配置密钥,并在R3上开启Area 0的区域级认证


OSPF网络类型

  1. Loopback 只有环回口是Loopback的,其他类型接口都不能改为Loopback 无论接口掩码多少,都以/32主机路由通告
  2. Point-To-Point Serial/ISDN BRI/FR point2point SubIf 支持组播,没有DR HELLO时间10s
  3. Broadcast Ethernet 支持组播,有DR HELLO时间10s
  4. NBMA FR主接口/FR多点子接口 不支持组播,有DR HELLO时间30s
  5. Point-To-Multipoint 默认情况不会是这种 支持组播,没有DR HELLO时间30s
  6. Point-To-Multipoint Non-Broadcast 默认情况不会是这种 不支持组播,没有DR HELLO时间30s
这些网络类型是高层的概念,与物理接口的类型没有一一对应的关系,也就是说,串口可以是点到点的,也可以是广播的。

修改网络类型
(config-if)#ip ospf network + TYPE

NBMA

(config-if)#ip ospf network non-broadcast
(config-router)#neighbor + IP地址
这里指neighbor只需要单向指就可以了,不需要双向。应用场景:
3.CCNP闫辉视频笔记OSPF_第15张图片
在帧中继环境中,由于Hub接单和Spoke节点物理相聚很远,一般在Hub上单向指S1/S2/S3就可以了。
NUMA中,Hello时间为30s

Point-To-Multipoint

(config-if)#ip ospf network point-to-multipoint
支持组播,有DR
自动生成关于直连邻居接口的/32主机路由

Point-To-Multipoint Non-broadcast

(config-if)#ip ospf network point-to-multipoint non-broadcast
不支持组播,无DR
自动生成关于直连邻居接口的/32主机路由
在sh ip ospf interface中看不到non-broadcast,只有在sh run中可以看到


OSPF在帧中继中的部署


在帧中继环境中,应用OSPF会比其他环境复杂很多。

帧中继概念回顾

星型拓扑
PVC
DLCI 相当于MAC地址
LMI 本地管理接口 有三类:ANSI/CISCO/Q933a
帧中继映射 本地DLCI与对端IP地址
有两种方式:
自动映射 Inverse-ARP(目的IP地址为0.0.0.0,本地DLCI )
自动开启
关闭命令:(config-if)#no frame-relay inverse-arp
(config-if)#no arp frame-ralay
手工映射
只能发送单播,不能发送组播和广播,但是可以发送伪广播
伪广播在DLCI自动映射中是自动开启的,在DLCI手工映射中是手工开启的

帧中继拓扑

3.CCNP闫辉视频笔记OSPF_第16张图片
R1作为HUB节点,R2和R3作为SPOKE节点,分别从R1建立两条PVC通往R2和R3。
配置步骤:
1.将R1~R6的serial口上,设置封装类型frame-relay,并打上时钟率(模拟器不需要)
(conig-if)#encapsulation frame-relay ietf
2.在R4~R6上,配置以太网接口IP地址,运行某个IGP(如EIGRP)
3.将R4~R6模拟为帧中继交换机
(config)#frame-relay switching
4.将R4~R6上的serial口上,在数据链路层上,配置为DCE。不能打时钟率(物理层概念)
(config-if)#frame-relay intf-type dce
5.定义lmi类型
(config-if)#frame-relay lmi-type ansi
6.在真实环境中,R1、R2、R3之间距离很远,为了使其在逻辑上在同一网段,因此必须在R4~R6上创建tunnel接口
如:
R4(config)#interface tunnel 45
R4(config-if)#tunnel source 45.1.1.4
R4(config-if)#tunnel destination 45.1.1.5
R4(config-if)#frame-relay route 102 interface tunnel 45 500(任意一个DLCI号)

目前,通过帧中继自动映射,R1可以ping通R2和R3。
但是,R2和R3之间并不能ping通。原因是:
当R2 ping R3时,目的IP地址是123.1.1.3,查路由表发现从serial 1/1发出;
serial 1/1是帧中继封装的,因此,必须将DLCI号封装进二层。但是,R2上并没有123.1.1.3和DLCI的映射关系。
此时,必须手动指定该映射,命令是:
R2(config-if)#frame-relay map ip 123.1.1.3 201 broadcast ietf
R3(config-if)#frame-relay map ip 123.1.1.2 301 broadcast ietf
这时,R2和R3可以相互ping通,R2的ping先发给R1,再发给R3。

但是,此时,R1并不能ping通自己。即
R1#ping 123.1.1.1
是不通的。
解决方法是:在R1上手动指定123.1.1.1的映射
R1(config-if)#frame-relay map ip 123.1.1.1 102 broadcast ietf
ping包先从R1发给R2,再从R2发回R1。不仅在帧中继环境中,在PPP或HDLC中,也是这样的。只有在以太网环境中,是在接口上打了个环,就通了。

帧中继环境中的OSPF 

假设帧中继环境中,只有自动映射,将所有的手工映射先删除掉。

NBMA网路类型

1.
为了建立邻居,需要在Hub节点手工指Neighbor,SPOKE节点不需要回指。
R1(config-router)#neighbor 123.1.1.2
R1(config-router)#neighbor 123.1.1.3

2.
由于轴幅型拓扑,只有HUB节点连接了所有其他节点。默认情况下,选举DR/BDR,可能造成某些节点缺乏某些路由信息。
为了保证路由传递没问题,需要手工修改接口的OSPF优先级,保证HUB为DR,spoke节点为DRother。
R1(config-if)#ip ospf priority 255
R2(config-if)#ip ospf priority 0
R3(config-if)#ip ospf priority 0
此时,
R1#ping 2.2.2.2 source 1.1.1.1
R1#ping 3.3.3.3 source 1.1.1.1
都是通的,但是R2#ping 3.3.3.3 source 2.2.2.2不通。原因是缺少映射。

3.
为了保证spoke节点所连接的下游网段内的PC可以互访,需要在spoke节点彼此指手工FR映射。
R2(config-if)#frame-relay map ip 123.1.1.3 201 broadcast ietf
R3(config-if)#frame-relay map ip 123.1.1.2 301 broadcast ietf
此时,R2#ping 3.3.3.3 source 2.2.2.2就通了。

broadcast网路类型

在R1~R3上,指定广播类型。由于支持组播发送,不需要手工指neighbor(FR Map开启伪广播功能)
(config-if)#ip ospf network broadcast
同样,需要手动指定优先级
R1(config-if)#ip ospf priority 255
R2(config-if)#ip ospf priority 0
R3(config-if)#ip ospf priority 0
彼此指手工FR映射。
R2(config-if)#frame-relay map ip 123.1.1.3 201 broadcast ietf
R3(config-if)#frame-relay map ip 123.1.1.2 301 broadcast ietf

P2MP Non-broadcast网络类型

(config-if)#ip ospf network point-to-multipoint non-broadcast
为了建立邻居,需要在Hub节点手工指Neighbor,SPOKE节点不需要回指。
R1(config-router)#neighbor 123.1.1.2
R1(config-router)#neighbor 123.1.1.3
在这种情况下,因为不选DR/BDR,不需要手工修改接口OSPF优先级
不需要手工帧中继映射,因为/32的主机路由

P2MP网络类型

(config-if)#ip ospf network point-to-multipoint
不需要指Neighbor
不需要修改OSPF优先级
不需要手工映射
在帧中继网络环境中,使用P2MP是最理想的。
但是,在考试中,一般会考“hub节点为P2MP,spoke节点为P2P”。
更改网络类型,然后修改Hello时间,使其一致。
此时,R2和R3之间ping不通,但是下游主机是可以ping通的。即:
R2#ping 3.3.3.3 不通
R2#ping 3.3.3.3 source 2.2.2.2

OSPF高级特性

注入缺省路由

1.
R1(config-router)#default-information originate
R1(config)#ip route 0.0.0.0 0.0.0.0 INTERFACE

2.
R1(config-router)#default-information originate always
不管有没有0.0.0.0 0.0.0.0缺省路由,R1都会主动下放缺省路由

被动接口

OSPF的被动接口不能发送、接收任何报文。
(config-router)#passive-interfac loopback 0

你可能感兴趣的:(CCNP)