目录
1. OSPF的概念
OSPF协议是一种链路状态协议,开放式最短路径优先(Open Shortest Path First,OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。
每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新。
1.1 OSPF的基本特点
(1)OSPF采用组播形式收发协议报文,这样可以减少对其它不运行OSPF路由器的影响
(2)OSPF支持无类型域间选路(CIDR)
(3)OSPF支持对等价路由进行负载分担
(4)OSPF支持报文认证
1.2 OSPF的术语
1、Router-ID
32位点分十进制,一般指定的是路由器的回环地址 loopback 口
配置loopback 口: 逻辑接口,相较于物理接口,更有可靠性,保证了业务的稳定性
如果不选定ip地址,他自己默认选择接口上的一个地址作为ID 具有唯一性
router-ID 无法更改,如果一定要更改的话,重启ospf 进程,重新计算,影响进程
2、OSPF Cost
OSPF使用cost“开销”作为路由度量值。
接口cost:ospf参考带宽/接口带宽,默认带宽是100Mbit/s(cost值不足1,默认为1 )
每一个激活ospf的接口都有一个cost值
每一个cost路由的cost由该路由从起源一路到达本地的所有入接口cost值的总和
1.3 OSPF的三张表
邻居表(peer table)
通过参数协商,建立邻居条件
OSPF 是可靠的路由协议,链路状态通告前需要先建立ospf邻居关系,hello报文用于发现直连链路上的其他ospf路由器,
邻居表:凡是出现在表中的设备都是邻居
邻接表:只有状态显示为full时,才称之为邻接。(两边设备的数据库必须完全一致)
链路状态数据库(Link-state database)
OSPF用LSA (link state Advertisement,链路状态通告)来描述网络拓扑信息,然后OSPF路由器用L SDB来存储网络的这些LSA。OSPF将自己产生的以及邻居通告的LSA搜集并存储在LSDB中。掌握L SDB的查看以及对LSA的深入分析才能够深入理解OSPF。
(可以用dis ospf lsdb命令来查看)
链路状态数据库的形成过程:
1.建立邻接关系
2、泛洪LSA报文数据
3、存进本地LSDB
4、经过SPF算法算出一条以自己为根的无环的树,得到最优路径
5、存进ospf路由表
6、存进全局路由表
OSPF路由表(routing-table)
每一个OSPF都会基于数据库中的LSA,进行路由计算(SPF算法),从而形成最终的"路由表"。各自路由器拥有独立计算,如果某一个链路路由出现问题,则只关系该路由本身。从而不会出现环路。
1.4 OSPF的五种报文
Hello报文:用于发现、建立和维护邻居关系
DD(数据库描述)报文:描述LSDB情况,交换链路状态数据库摘要
LSR(链路状态请求)报文:请求自身缺少的链路状态信息
LSU(链路状态更新)报文:发送详细的链路状态信息,回应LSR的请求
LSAck(链路状态确认)报文:收到LSU后进行确认,发送确认报文
1.5 OSPF的七种状态
Down:没有启用OSPF的状态;邻居失效后变为该状态
Init:初始化状态,第一次收到对端发来的hello包(包含对端route-id)时,将对端的状态设置为init
2-way:邻居状态,相互间周期发送hello的状态(双方建立会话)
Exstart:交换信息的初始化状态
Exchange:交换信息的状态
该状态下,相互间发送DBD,告知对端本地所有的LSA的目录;同时,可以发送 LSR,LSU,LSACK来学习对端的LSA
Loading:加载状态(没有学习完的状态)发送LSR,LSU,LSACK,专门学习对端的LSA的详细信息
Full:邻接状态(学习完的状态)彼此的LSDB同步,即所有的LSA相同
1.6 OSPF的邻居关系的分析
OSPF建立过程可以简单分为以下三个过程
①建立邻居关系 ②建立各自拓扑表 ③建立邻接关系
例如现在有R1 R2 两个路由
- 初始状态DOWIN
- R1和R2都不知道对方的存在,开始相互发送Hel1o报文以组播的方式(224.0.0.5) ,报文携带自身的router-ID信息,R1发送hello报文
- R1和R2在组播中同时接收到对方的报文信息,便将对方都在自己的这方设置为INIT状态,同时都给对方以发送Hello报文(这时候hello报文携带对方的router-id),此时状态都为two-way,建立邻居关系。
- 当双方建立邻居关系后,双方升始进入ex-start准备中,此过程升始选出主(Mster) 从(slave),此时,双方都将把自己当为主,相互发送DD报文,此时的DD报文没有摘要信息
- Exchange状态:这是有LSA的头部摘要,谁是主谁会先产生一个序号,备的序列号不变,主发的序列号加1. 发送DD报文携带摘费信息
- 双方交换了DD报交后,开始学习对方信息
- 将自己的详细信息发送给对方,井向对方发送确认报文,发送LSR、LSU、LSACK报文
- full 状态 最終建立邻接关系
要注意的是:
I=1:正在协商主从; I=主从协商完成。
M=1:还有报文; M=0的时候,最后一个报文
MS=1:Master发送报文; MS=0 :备slave发送报文。
EX-start :选举主从(准备就绪)
Seq=y 这是序号,谁是主,谁先产生一个序列号
1.7 OSPF的网络类型
点到点网络
广播型多路访问网络
非广播型多路访问(NBMA)网络
P2MP网络
网络类型 | 常见链路层协议 |
---|---|
Point-to-Point | PPP链路;Lapb链路;HDLC链路; |
Broadcast | 以太网链路; |
NBMA | 帧中继链路;ATM链路 |
P2MP | 需手工指定 |
1.8 DR+BDR
DR(designated route指定路由器)
BDR(backup designated router 备份指定路由器)
如果不是DR,BDR 就是DRother ,DRother只和DR BDR交互
选优先级,优先级大的成为DR 优先级一样的选择 看route-id 大小,可选范围是0-255,
优先级=0 时,不参与DR BDR 默默退出,没有抢占性
华为设备默认优先级是1
DR BDR 必须是邻居关系(毗邻关系)
DR、BDR监听组播地址224.0.0.6 .
DRother监听组播地址224.0.0.5
1.9 OSPF 区域
OSPF单区域存在的问题:
LSA泛洪严重,OSPF路由器的负担很大
区域内部动荡会引起全网路由器的SPF计算
LSDB庞大,资源消耗过多,设备性能下降,影响数据转发
每台路由器都需要维护的路由表越来越大,单区域内路由无法汇总
OSPF多区域的优点:
减少了LSA泛洪的范围,有效的把拓扑变化控制在区域内,打到网络优化的目的
在区域边界可以做路由汇总,减小了路由表
充分利用OSPF特殊区域的特性,进一步减少LSA泛洪,从而优化路由
多区域提高了网络的扩展性,有利于组建大规模的网络
区域分为以下几个部分:
骨干区域(area0)、标准区域/其他区域(area)
ospf路由器的角色:
区域内路由器(Internal Router)
ASBR: AS边界路由器(Area Border Router)
骨干路由器(Backbone Router)
AS边界路由器ASBR(AS Boundary Router)
2. 实验题
代码部分:
sw1:
[Huawei]sysname sw1
[sw1]vlan b 10 20
[sw1]int e0/0/2
[sw1-Ethernet0/0/2]p l a
[sw1-Ethernet0/0/2]p d v 10
[sw1-Ethernet0/0/2]int e0/0/3
[sw1-Ethernet0/0/3]p l a
[sw1-Ethernet0/0/3]p d v 10
[sw1-Ethernet0/0/3]int e0/0/1
[sw1-Ethernet0/0/1]p l t
[sw1-Ethernet0/0/1]p t a v 10 20
[sw1-Ethernet0/0/1]q
[sw1]int Eth-Trunk 1 //配置链路聚合
[sw1-Eth-Trunk1]trunkport e 0/0/4 0/0/5
[sw1-Eth-Trunk1]p l t
[sw1-Eth-Trunk1]p t a v a
[sw1-Eth-Trunk1]mode manual load-balance
sw2:
[Huawei]sysname sw2
[sw2]vlan b 10 20
[sw2]int e0/0/3
[sw2-Ethernet0/0/3]p l a
[sw2-Ethernet0/0/3]p d v 20
[sw2-Ethernet0/0/3]int e0/0/4
[sw2-Ethernet0/0/4]p l a
[sw2-Ethernet0/0/4]p d v 20
[sw2-Ethernet0/0/4]q
[sw2]int Eth-Trunk 1 //配置链路聚合
[sw2-Eth-Trunk1]trunkport e 0/0/1 0/0/2
[sw2-Eth-Trunk1]p l t
[sw2-Eth-Trunk1]p t a v 10 20
[sw2-Eth-Trunk1]mode manual load-balance
r1:
[Huawei]sysname r1
[r1]int g0/0/0.1
[r1-GigabitEthernet0/0/0.1]ip add 192.168.1.254 24
[r1-GigabitEthernet0/0/0.1]dot1q termination vid 10
[r1-GigabitEthernet0/0/0.1]a b e
[r1-GigabitEthernet0/0/0.1]int g0/0/0.2
[r1-GigabitEthernet0/0/0.2]ip add 192.168.2.254 24
[r1-GigabitEthernet0/0/0.2]dot1q termination vid 20
[r1-GigabitEthernet0/0/0.2]a b e
[r1-GigabitEthernet0/0/0.2]q
[r1]int g0/0/1
[r1-GigabitEthernet0/0/1]ip add 192.168.6.1 24
[r1-GigabitEthernet0/0/1]q
[r1]ospf 1 r
[r1]ospf 1 router-id 1.1.1.1
[r1-ospf-1]area 2
[r1-ospf-1-area-0.0.0.2]import-route direct
[r1-ospf-1]q
[r1]ospf 1
[r1-ospf-1]area 2
[r1-ospf-1-area-0.0.0.2]network 192.168.6.0 0.0.0.255
r2:
[Huawei]sysname r2
[r2]int g0/0/0
[r2-GigabitEthernet0/0/0]ip add 192.168.6.2 24
[r2-GigabitEthernet0/0/0]int g0/0/1
[r2-GigabitEthernet0/0/1]ip add 192.168.7.1 24
[r2-GigabitEthernet0/0/1]q
[r2]ospf 1 router-id 2.2.2.2
[r2-ospf-1]area 2
[r2-ospf-1-area-0.0.0.2]network 192.168.6.0 0.0.0.255
[r2-ospf-1-area-0.0.0.2]area 0
[r2-ospf-1-area-0.0.0.0]network 192.168.7.0 0.0.0.255
r3:
[Huawei]sysname r3
[r3]int g0/0/0
[r3-GigabitEthernet0/0/0]ip add 192.168.7.2 24
[r3-GigabitEthernet0/0/0]int g0/0/1
[r3-GigabitEthernet0/0/1]ip add 192.168.8.1 24
[r3-GigabitEthernet0/0/1]int g2/0/0
[r3-GigabitEthernet2/0/0]ip add 192.168.11.1 24
[r3-GigabitEthernet2/0/0]q
[r3]ospf 1 r
[r3]ospf 1 router-id 3.3.3.3
[r3-ospf-1]area 0
[r3-ospf-1-area-0.0.0.0]network 192.168.7.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]area 1
[r3-ospf-1-area-0.0.0.1]network 192.168.8.0 0.0.0.255
[r3-ospf-1-area-0.0.0.1]area 3
[r3-ospf-1-area-0.0.0.3]network 192.168.11.0 0.0.0.255
r4:
[Huawei]sysname r4
[r4]int g0/0/0
[r4-GigabitEthernet0/0/0]ip add 192.168.8.2 24
[r4-GigabitEthernet0/0/0]int g0/0/1
[r4-GigabitEthernet0/0/1]ip add 192.168.9.1 24
[r4-GigabitEthernet0/0/1]q
[r4]ospf 1 r
[r4]ospf 1 router-id 4.4.4.4
[r4-ospf-1]area 1
[r4-ospf-1-area-0.0.0.1]network 192.168.8.0 0.0.0.255
[r4-ospf-1-area-0.0.0.1]q
[r4-ospf-1]q
[r4]rip 1
[r4-rip-1]version 2
[r4-rip-1]network 192.168.8.0
[r4-rip-1]network 192.168.9.0
[r4-rip-1]q
[r4]rip 1
[r4-rip-1]import-route ospf 1
[r4-rip-1]q
[r4]ospf 1
[r4-ospf-1]import-route rip 1
r5:
[Huawei]sysname r5
[r5]int g0/0/0
[r5-GigabitEthernet0/0/0]ip add 192.168.9.2 24
[r5-GigabitEthernet0/0/0]int g0/0/1
[r5-GigabitEthernet0/0/1]ip add 192.168.10.2 24
[r5-GigabitEthernet0/0/1]q
[r5]rip 1
[r5-rip-1]version 2
[r5-rip-1]network 192.168.9.0
[r5-rip-1]network 192.168.10.0
r6:
[Huawei]sysname r6
[r6]int g0/0/0
[r6-GigabitEthernet0/0/0]ip add 192.168.10.1 24
[r6-GigabitEthernet0/0/0]int g0/0/1
[r6-GigabitEthernet0/0/1]ip add 192.168.5.254 24
[r6-GigabitEthernet0/0/1]q
[r6]rip 1
[r6-rip-1]version 2
[r6-rip-1]network 192.168.5.0
[r6-rip-1]network 192.168.10.0
[r6-rip-1]q
[r6]int g0/0/0
[r6-GigabitEthernet0/0/0]nat server protocol tcp global 192.168.10.10 80 inside
192.168.5.10 80
[r6-GigabitEthernet0/0/0]q
[r6]acl 2000
[r6-acl-basic-2000]rule permit source any
[r6-acl-basic-2000]int g0/0/1
[r6-GigabitEthernet0/0/1]nat o
[r6-GigabitEthernet0/0/1]nat outbound 2000
sw3:
[Huawei]sysname sw3
[sw3]vlan b 30 40 50
[sw3]int g0/0/2
[sw3-GigabitEthernet0/0/2]p l a
[sw3-GigabitEthernet0/0/2]p d v 30
[sw3-GigabitEthernet0/0/2]int g0/0/3
[sw3-GigabitEthernet0/0/3]p l a
[sw3-GigabitEthernet0/0/3]p d v 40
[sw3-GigabitEthernet0/0/3]int g0/0/1
[sw3-GigabitEthernet0/0/1]p l a
[sw3-GigabitEthernet0/0/1]p d v 50
[sw3-GigabitEthernet0/0/1]q
[sw3]int vlan 30
[sw3-Vlanif30]ip add 192.168.3.254 24
[sw3-Vlanif30]int vlan 40
[sw3-Vlanif40]ip add 192.168.4.254 24
[sw3-Vlanif40]int vlan 50
[sw3-Vlanif50]ip add 192.168.11.2 24
[sw3-Vlanif50]q
[sw3]ospf 1 r
[sw3]ospf 1 router-id 7.7.7.7
[sw3-ospf-1]area 3
[sw3-ospf-1-area-0.0.0.3]network 192.168.11.0 0.0.0.255
[sw3-ospf-1-area-0.0.0.3]q
[sw3-ospf-1]import-route direct
实验效果: