目录
OSPF基础
OSPF区域规则
ABR的规则
总结:
1、伪ABR设备不允许转发区域间路由信息
2、对于真实ABR设备
路由器分类
OSPF 报文 :
HELLO包
DBD报文
LSA报文——链路状态通告
(1)———简介:
(2)———头部信息:
(3)———数据部分:
LSR报文
LSU报文
LSAck报文
OSPF七种状态机
条件匹配
选举规则
OSPF的工作过程
结构突变
OSPF报文头部
Hello包
指定路由器---DR
备份指定路由器---BDR
限制邻居关系建立的参数
实例
DBD报文
接口最大传输单元-----MTU
可选项----与Hello报文内容中的可选项字段一致
I ---- 主从关系选举
M ----
MS ---- 代表是否为主设备
DD序列号
LSR包
LSU包
LSAck包
完成显式确认机制
OSPF 的接口网络类型
一、点到点(P2P)---- P2MP (开销值48)
二、MA(多路访问类型)
1、BMA(广播型多路访问类型)
2、NBMA(非广播型多路访问类型)
三、P2P---点到点类型
使用OSPF配置mgre
R7配置
R8配置
R9配置
第一种方法:
弊端
解决方法:放弃选举
第二种方法:
非广播型多路访问类型----NBMA
OSPF区域划分
OSPF区域划分规则
规则1:必须是星形结构
规则2:必须存在ABR
OSPF的不规则区域划分
OSPF的水平分割
实例
方法一
使用tunnel隧道
配置:
检查设备是否联通
Vlink---虚链路
方法二
配置
查看vlink表
检查设备连通性:
动态路由协议的评判标准---收敛速度、选路、占用资源
OSPF:
IGP :内部网关协议
链路状态型协议
SPF算法:开放性最短路径优先
组播 224.0.0.5/224.0.0.6
优先级 10 / 150
默认带宽 100
OSPFv2与RIPv2对比
相同点
无类别路由协议:有无带掩码
均采用组播通讯
均支持开销负载均衡
不同点
ospf可以工作在大型网络中
单进程
双进程
OSPF 结构化部署(区域)
OSPF域、区域
在自己区域内的ospf不会传出去另外的区域的ospf
链路状态型传递拓扑
距离矢量型传递路由
区域内部传递拓扑信息,区域间传递路由信息。---链路状态型协议的距离矢量特征。
多区域提高了网络的扩展性,有利于组件更大规模的网络
区域ID(Area-ID):32位bit组成的非负整数,按点分十进制表示
1.OSPF要求域中的所有非骨干区域(区域ID不为0的区域)都与骨干区域直接相连
2.骨干区域不能被分割
OSPF 定于了ABR(区域边界路由器),来确保遵循这条信息---只有真正的ARB设备才可以转发区域间路由信息
非骨干之间不允许直接相互发布区域间路由信息---- 因为非骨千区域之间的边界设备不是ARP
OSPF规定: 从非骨干区域收到的路由信息,ABR能接收到不会使用这条路由信息(这条规则,被称为OSPF的区域水平分割机制)--- 从一个区域域学习到的路由信息,不能传递回该区域
OSPF有如下规定:
能够将自己直连的非骨干区域的路由信息传递给骨干区域
能够将自己直连的骨干区域路由信息传递给非骨干区域
能够将自己从骨干区域学习到的非骨干区域路由信息传递给直连的非骨干区域。
内部路由器---IR
所有接口都接入同一个OSPF区域路由器
区域边界路由器---ABR
骨干路由器----BR
接入Area0的路由器
自治系统边界路由器----ASBR
工作在OSPF自治系统边界的路由器,负责将OSPF域外的路由引入本域。并不是所有运行了多种路由协议的OSPF路由器就一定是ASBR;必须执行了重发布操作的路由器才会被称为ASBR
无论采用手工还是自动选取的方式,一旦OSPF确定了RID,则之后不会改变。---重启OSPF进程
数据库描述报文
该报文携带的是路径信息的摘要,减少更新量的一种做法
OSPF报文
描述哪些接口启用了OSPF,这个接口的OSPF链路类型,网段和掩码, cost值等信息;【可以理解LSA是一个路由代表】
参考带宽默认是100
某接口cost = 参考带宽/实际带宽
[Huawei-ospf-1]bandwidth-reference 10000 ----修改参考带宽
更改cost的两种方式
直接在接口下配置
修改参考带宽(所有路由器都需要修改,确保选路一致性)
LSA就是代表了一个路由器路由条目,只不过这个路由条目是以数据库方式表示的。
LSA刷新时间 : 这个LSA谁产生的,谁负责每30分钟对这个LSA重新产生一次更新;
LSA老化时间 : LSA在数据库存放的最大时间,1小时,每一秒减去1,一个小时候如果得不到刷新,老化时间变成0,这个LSA会从数据库删除的同时也会泛洪,通知其他OSPF邻居删除这个老化的LSA【路由发生变化】
LSA更新条件: 1、每30分钟刷新一次 2、当我路由器运行OSPF的接口出现了变化,也会触发增量更新,LSA的序列号都会+1(接口刚开始启用OSPF时也会),以代表这是最新的LSA。
LSA组成部分(每个LSA都有相同的LSA头部信息):
——LS age : 老化时间【1800秒(30分钟)~~~3600秒(一小时)】,其中1800是周期的LSA刷新时间,3600是LSA的最大老化时间
——Options : 可选项 DN O DC L NP MC E MT
——LS Type : 说的是数据部分是几类的LSA
——Link State ID : 链路状态ID,是一个变量,根据不同的LSA类型,这个地方的数值也不一样
——Advertising Router : 通告路由, 这个LSA是谁产生的,就把这个路由器的RID写在这里
——LS Seq Number : LSA的序列号,利用这个序列号确定谁的LSA是最新的,LSA每更新一次,序列号+1
——Checksum :奇偶校验和,用于验证数据传输的完整性
——Length : 包含了头部信息和数据部分的总长度
——Number of Links : 我这台路由器有几个接口启用了OSPF
LSA-1,LSA-2, LSA-3,LSA-4,LSA-5,LSA-7
链路状态请求报文----用以获取未知的LSA (链路状态通告)信息
链路状态更新报文
携带真实LSA信息的数据包
链路状态
down---关闭---一旦启动了OSPF协议,则发出hello报文进入下一个状态
init----初始化---收到的hello报文中存在本地RID值,进入下一个状态
2-way----双向通讯---邻居关系建立的标志 ---稳定态
条件匹配: 匹配成功则进入下一个状态,匹配失败则停留在邻居状态。
exstart----预启动----预启动----使用未携带信息的DBD报文进行主从关系选举,RID大的为主
exchange----准交换----使用携带目录信息的DBD报文进行目录共享
loading---加载----邻居间使用LSR/LSU/LSACK报文来获取完整的LSA信息
full---转发---拓扑交换完成后,根据算法计算出路由进入该状态,标志着邻接关系的建立 ---稳定态
DOWN:代表OSPF没有发现任何OSPF邻居的。
Init:代表发现了OSPF邻居。
2-WAY:收到了OSP邻居的Hello报文,并且发现对方的active-neighbor有自身的RID.
Exstart: 用于发送空的DD报文,互相进行主从的选举。
Exchange:当主从关系确定之后,进入到Exchange状态发送带有LSA摘要信息的DD报文。
loading: 当收到了对方的DD报文之后,同时发现M=0,将会进入到loading状态请求自身没有的LSA
FUll:当自身请求列表中,所有待接收的LSA,对方都发送过来之后,将会进入到Full状态。
决定了谁给谁传递拓扑信息。
DR、BDR、DRother----接口角色。
1. 优先级,0-255;选择优先级大的为DR设备,默认为1。若优先级为0则代表放弃选举
2. 若优先级相同,则比较RID值,越大越优先。 选取范围---一个广播域
非抢占模式----重选则需要重启OSPF进程。
在一个MA网络中,可以没有BDR,但是必须存在DR。
条件匹配的选举过程
[Huawei-GigabitEthernet0/0/0]ospf dr-priority ?
INTEGER<0-255> Router priority value
DR优先级为0则代表该接口不具备选举DR和BDR的资格。
Attempt:在NBMA网络中组播不能够传递,在这种情况下,就需要指定OSPF使用单播向邻居发送Hello包,以此试图和指定的邻居建立OSPF邻居关系,在此状态下,OSPF称为Attempt状态。
[Huawei-GigabitEthernet0/0/0]ospf dr-priority ?
INTEGER<0-255> Router priority value
DR优先级为0则代表该接口不具备选举DR和BDR的资格。
1.启动OSPF配置后,OSPF向本地所有运行了OSPF协议的接口以组播224.0.0.5发出hello报文;hello报文中携带了本地的RID参数以及本地已知的邻居RID值。
1. 邻居的RID获取方式:通过接收其他邻居的hello报文来获取本地邻居
2. 建立邻居关系,并生成邻居表。
2.邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系,即2-way状态,仅使用hello报文保活。该状态为稳定态。
3. 匹配成功的邻居开始建立邻接关系。
1. 首先使用未携带数据的DBD报文进行主从关系选举,之后使用携带信息的DBD报文来共享数据库目录;
2. 然后本地通过对方共享的目录信息与本地数据库进行对比,通过使用LSR报文请求未知的LSA信息。
3. 对端使用LSU报文回复完整LSA信息
4. 本端使用LSAck报文确认回复。
4.当本地接收到所有的未知LSA信息后,将信息存放在LSDB中。
1. 之后基于本地数据库生成有向图和最短路径树。
2. 根据最短路径树计算本地到达拓扑中所有未知网段的最短路径,并将其加入到OSPF路由表中。
3. 从OSPF路由表中选择最优路由加载入本地全局路由表。
5.收敛完成后,hello报文周期保活。每30min进行一次周期链路刷新。
1.新增网段----直接使用LSU报文告知邻居,邻居使用ACK进行确认。
2.断开网段----直接使用LSU报文告知邻居,邻居使用ACK进行确认。
3.无法沟通----死亡时间---hello-time*4
一条OSPF路径的cost等于从目的地到本地路由器沿途的所有入接口cost的总和
版本---恒为2
类型---描述OSPF数据包类型
网络掩码
Hello间隔
可选项
路由器优先级
用于选举DR和BDR。
路由器失效时间
两台设备建立OSPF邻居需要确保死亡时间相同
默认情况下是hello间隔的4倍
若修改hello时间,则死亡时间随之改变,若修改死亡时间,则hello时间不变
若没有选举出DR,则使用0.0.0.0来占位
该参数为网络中DR接口的IP地址
若没有选举出BDR,则使用0.0.0.0来占位
该参数为网络中BDR接口的IP地址
邻居
在直连链路上发现的有效邻居,此处填充的是邻居的RouID值
所有224.0.0.x格式的组播地址称为本地链路组播地址,目标IP是本地链路组播的数据包的TTL值被设定为1.所有TTL值被设定为1.所有本地链路组播都存在对应的组播MAC地址,01-00-5e-0后23位,后23位为组播IP地址的后23位
与修改掩码信息结果相同。
全网配通,在R5上下发缺省路由
在华为AR系列路由器上,该参数值默认为0
该字段是用于进行OSPF的MTU检测,而华为默认不开启检测机制
如果设备两端开启了OSPF的MTU检测机制,如果MTU值匹配不上不相同,则会一直处于estart状态
如果该为为1,则代表该数据报文是用于进行主从关系选举。且此时的数据包中不会携带真实的数据库目录信息。
若为1,则代表后续还存在DD报文
若为0,则代表后续没有DD报文
若为1,则代表本设备为Master设备
若为0,则代表本设备为Slave设备
用于确保DD报文传输的有序性和可靠性
在DD报文交互的过程中,DD序列号被逐次加1。且DD序列号必须由Master路由器来决定,而Slave路由器只能使用Master路由器发送的DD序列号来发送自己的DD报文。
隐形确认机制----通过对方发送的数据包中的DD序列号,起到确认的效果。
而主从关系选举就是为了完成隐形确认。
链路状态类型、链路状态ID、通告路由器---LSA的三元组信息。---通过这三个参数可以唯一标识出一条LSA信息
链路状态类型、链路状态ID、通告路由器 可以说就是描述组成LSA的信息
在一个物理的网段内,只能存在两个物理节点,无需二层地址。例如:串线。
在一个物理的网段内,可以存在多个物理节点,且存在广播(洪泛)机制。例如:以太网。
Attempt
如果一个路由器,它邻居处于这种状态,则表示它从邻居没有收到任何信息,但是做了努力来与邻居联系。
Poll --- 轮循时间,poll的时间必须要是hello时间的四倍以上
Retransmit --- LSA 的重传间隔
假如A给B发了一个LSU更新信息,此时B收到得回复一条LSACK但在五秒之后并没有收到B发送的LSACK,则A会认为B并没有收到这个LSU包将会再重传一次LSU(此时间大于每次传递数据包的时间request-->LSU-->LSACK)
修改时间
OSPF在BMA类型的接口上通常以组播的方式发送HEllo报文、LSU、LSACK,以单播的形式发送DD、LSR报文
在一个物理的网段内,可以存在多个物理节点,但不存在广播(洪泛)机制。例如:帧中继、MGRE。
OSPF的接口网络类型,实际上说OSPF的接口在某种网络类型下的一种工作方式或特征
(组播形式发送,在OSPF网络类型上,不以单播形式发送的原因在于点到点网络可以不需要IP地址)
OSPF在点到点中不会选举DR和BDR所以在查看接口的状态的时候会显示P-2-P
开销值----在华为设备中,P2P网络的参考实际带宽默认为2.048 (E1标准)
在点到点网络以组播形式发送所有报文,为什么不用单播呢?
这是因为在点到点网络中并不使用IP地址进行数据交互
环回接口(不选取DR和BDR)
以配好IP地址,使用OSPF打通,这个时候去查路由表发现,这个环回接口他的掩码是32位的,这是为什么呢?
这是由于在华为这套体系中他认为此环回接口只有一个主机路由,所以他识别出是环回接口会自动将掩码改成32位,并且他的类型是P2P点到点链接,因为只认为R3链接了一台设备
掩码32位是由于华为默认环回接口只连接一台设备,且P2P也是只能链接一台设备如果需要看到是自己配的掩码效果,需将网络类型由P2P改为BMA网络类型,广播表示多台设备
这个时候再去查看环回接口的路由就能发现掩码已经变为24了
开销值恒定为0,这样的结果就是修改参考带宽不会影响到环回接口的开销值
Type----华为使用P2P来填充,而cisco使用loopback填充
所有通过OSPF学习到的环回接口的路由掩码都是32位,因为该接口是一个模拟的接口,实际没有连接用户,所以并没有其他IP地址存在与该接口之下,只有一个可用IP。----如果使用其他掩码,可能会导致环路或者路由黑洞
witing---该字段代表正在进行条件匹配,当该计时器超时后,接口会认为自己为DR设备,且将接口的状态切换
为exstart状态。
interface Tunnel0/0/0
ip address 192.168.4.7 255.255.255.0
tunnel-protocol gre p2mp
source 107.0.0.1
nhrp entry multicast dynamic ---开启伪广播功能
ospf 1 router-id 7.7.7.7
area 0.0.0.0
network 192.168.4.0 0.0.0.255
network 192.168.7.0 0.0.0.255
interface Tunnel0/0/0
ip address 192.168.4.8 255.255.255.0
tunnel-protocol gre p2mp
source GigabitEthernet0/0/0
nhrp entry 192.168.4.7 107.0.0.1 register
ospf 1 router-id 8.8.8.8
area 0.0.0.0
network 192.168.4.0 0.0.0.255
network 192.168.8.0 0.0.0.255
interface Tunnel0/0/0
ip address 192.168.4.9 255.255.255.0
tunnel-protocol gre p2mp
source GigabitEthernet0/0/0
nhrp entry 192.168.4.7 107.0.0.1 register
ospf 1 router-id 9.9.9.9
area 0.0.0.0
network 192.168.4.0 0.0.0.255
network 192.168.9.0 0.0.0.255
这些配置下来之后发现了一些问题,R7和R8建立了邻居,但却没有和R9建立邻居,这是为什么呢?
这是因为在P2P网络类型下有且只能有一个邻居,所以都需要将P2P网络类型改为broadcast
[r8-Tunnel0/0/0]ospf network-type broadcast
[r9-Tunnel0/0/0]ospf network-type broadcast
但这样子也会出现一个问题,就是R8 R9都认为自己是DR,路由信息会学不全,对于R1来说他只能接受一个DR发送过来的LSA,要解决这样子的情况最好就是将他两都放弃选举
[r8-Tunnel0/0/0]ospf dr-priority 0
[r9-Tunnel0/0/0]ospf dr-priority 0
华为将tunnel接口的传输速率定为了64Kbps
Hub节点此时属于P2P类型,只能建立一个邻居,无法建立多个邻居,故修改Tunnel接口的网络类型为Broadcast类型
不同的网络类型,可以建立邻居关系,但是可能会造成不同的问题。故修改接口网络类型时,全网保持一致。
如果链路两端,端需要选举DR,另一端不需要,可能会成功建立ful状态,也可能有一个卡在exstart或2-way状态。
让分支节点放弃DR选举,在MGRE环境下,hub节点必须成为DR设备。否则网络路由信息无法学习全面。必须修改分支的优先级为0,有且只有这一种方法、
除了上诉的方法也可以将所有的网络类型改为p2mp,因为点到点类型中是没有DR和BDR的选举的,且会学习邻居的主机路由
[r7-Tunnel0/0/0]ospf network-type p2mp
[r8-Tunnel0/0/0]ospf network-type p2mp
[r9-Tunnel0/0/0]ospf network-type p2mp
点到多点类型----P2MP
只能手动修改
在P2MP环境下,设备会学习所有邻居的接口IP地址,形成主机路由。
在P2MP环境下,只有hello报文是以组播形式发送,其他所有报文以单播形式发送数据
此设备为帧中继,他的原理很简单,如此图所示,比如说一个数据包在R6去往R4会将10.1.1.2打上一个102的标签,帧中继在收到这个数据包后会将标签做一个转换,换成201然后往R4 的方向去发
在NBMA网络中,所有数据包以单播数据通讯。
在NBMA网络中,所有的OSPF路由器都需要使用peer命令单播指定邻居,该命令是双向的。
编号比0大的是非骨干区域,编号为0的是骨干区域,非骨干区域必须连接骨干区域 area
(ABR:区域边界路由器)同时连接两个区域,并且其中有区域0
非骨干区域必须与区域0直接相连
骨干区域不能被分割
不规则区域
远离骨干的非骨干区域
不连续骨干区域
1. 通过三类LSA,普通区域的内部路由可以传递到骨干区域,骨干区域的路由也可以传递到非骨干区域
2.普通区域的路由不可以直接传递到其他非骨干区域
3.普通区域从骨干区域学习到的路由哦不可以传递到其他区域(包含骨干区域)
4.骨干区域从一个普通区域学习到的路由不可以直接传回到该普通区域
已提前配好全网可达了
这个时候去ping与没和非骨干区域的区域是没办法通信的因为普通区域从骨干区域学习到的路由哦不可以传递到其他区域
这个时候就可以使用tunnel隧道将 R2 R3 之间链接一条隧道
[r2-Tunnel0/0/0]ip address 23.0.0.1 24
[r2-Tunnel0/0/0]tunnel-protocol gre
[r2-Tunnel0/0/0]source 25.0.0.1
[r2-Tunnel0/0/0]destination 35.0.0.2
[r2-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[r3-Tunnel0/0/0]ip address 23.0.0.2 24
[r3-Tunnel0/0/0]tunnel-protocol gre
[r3-Tunnel0/0/0]source 35.0.0.2
[r3-Tunnel0/0/0]destination 25.0.0.1
[r3-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
vlink是专门为了解决OSPF不规则区域所诞生的技术,是一种虚拟的、逻辑的链路。
vlink必须找到一个真实的ABR设备建立虚拟链路。
注意:配置位置在需要vlink穿越的区域中,且配置的是RID,而非邻居IP地址
虚链路的配置条件---->只能穿越一个区域
还是原先的图,将tunnel接口shutdown
[r2-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3
[r3-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2
他的类型是属于点到点连接