协议概述
RIP协议存在的问题
存在最大15跳的限制,不能适应大规模组网的需求
周期性发送全部路由信息,占用大量的宽带资源
路由收敛速度慢
以跳数作为度量值
存在路由环路可能性
邻居关系、LSDB和路由表
邻居表:邻居表记录了建立了邻居关系的路由器
拓扑表:LSDB中包含了所有的链路状态信息,并需要实时同步
路由表:经过SPF算法计算出的路由存放再OSPF路由表(display ospf routing)
生成OSPF路由
分层结构
区域划分
骨干区和非骨干区
划分区域的优势
减少了区域内LSDB中链路状态信息的数量,降低了运行OSPF协议对路由器性能的要求
可以将相同的功能性或地理位置的路由器划分在一个区域内,以便于管理
隔离拓扑变化,减少路由震荡对整个自治系统的影响
OSPF路由类型
区域内路由
IR:所有接口都在同一区域
骨干路由器
BR:有接口在骨干区域
区域边界路由器
ABR:连接骨干区域和非骨干区域
自治系统边界路由器
ASBR:连接外部自治系统,并引入外部路由
网络类型
Route ID(针对接口)
一台路由器如果要运行OSPF协议,则必须存在Router ID(RID)RID是一个32比特无符号的整数,可以在一个自治系统中唯一的标识一台路由器。
RID可以手动配置,也可以自动生成。
如果没有通过命令指定RID,将按照如下顺序自动生成一个RID:
如果存在配置IP地址Loopback接口,则选择Loopback地址中最大的作为Router ID;
如果没有配置IP地址的Loopback接口,则从其他接口的IP地址中选择最大的作为Router ID(不考虑接口的up/down状态)
Router ID 的选取
如果想改变原来的DR/BDR,需要修改优先级,然后需要重置所有的ospf进程:
example:在接口下,ospf dr-priority 10, reset ospf process,同样R2也需要 reset ospf process。
修改Router ID:
ospf router-id xxxx
reset ospf process
OSPF网络模型
定义:对于不同的二层链路类型的网段,OSPF会生成不同的网络类型。不同的网络类型,DR/BDR选举,LSA细节,协议报文发送形式等会有所不同
用于改变建立DR/BDR方式
Broadcast
display ospf interface
广播网络,以太网默认的网络类型
组播发送协议报文
组播地址:
224.0.0.5:所有运行的OSPF的接口会监听
224.0.0.6:所有的DR/BDR的接口会监听
需要选举DR/BDR
hello-time 10s
dead-time 40s
NBMA(Non-Broadcast Multi-Access,非广播多点可达网络)
非广播多点可达,帧中继默认的网络类型
单播发送协议报文,需要手动指定邻居
需要选举DR/BDR
hello-time 30s
dead-time 120s
P2MP(Point-to-MutiPoint,点到多点)
点到多点网络,由其他网络类型手动更改(默认不存在)
模拟组播发送协议报文,可以自动发现邻居
不选举DR/BDR(这是模拟组播)
hello-time 30s
dead-time 120s
P2P(Point-to-Point,点到点)
点到点网络,PPP默认的网络类型
组播发送协议报文
不选举DR/BDR
hello-time 10s
dead-time 40s
报文和封装
OSPF报文类型与封装
OSPF报文类型 | 作用 |
---|---|
hello | 建立并维护邻居关系 |
Database Description (DD) | 数据库内容的汇总(仅包含LSA摘要) |
Link State Request (LSR) | 请求自己没有的或者比自己更新的链路状态详细信息 |
Link State Update (LSU) | 链路状态更新信息 |
Link State Acknowledge (LSAck) | 对LSU的确认 |
OSPF报文直接封装在IP报文中,协议号为89
链路层帧头 | IP Header | OSPF Packet | 链路层帧尾 |
---|
邻居建立和状态迁移
邻接关系建立过程
OSPF的状态机
Down、Init、2-way、ExStart、Exchange、Loading、Full
1、Down:关闭状态(稳定状态)
2、Init:单方发现状态,收到对方的hello报文,但没有收到对方的hello确认报文(单项发现)
3、2-way:邻居状态(稳定状态)邻居双方互相发现,并确认了DR/BDR角色(双向发现)
当选举完毕,就算出现一台更高优先级的路由器,也不会替换成为新的DR/BDR
需要原DR/BDR失效,或者重置OSPF进程才会成为新的DR/BDR
2-way的前提
Router-id无冲突(两台直连路由器)修改Rouer-id需要重置OSPF进程使生效
掩码长度一致
区域id一致(一个网段的两个端口)
验证密码一致
hello-time一致
dead-time一致
排错命令:
<R2>dis ospf statistics error
2-way状态表示路由器之间变成了邻居状态
4、Exstart (第一个DD报文)
1)交换开始状态
2)发送第一个DD报文
不发送LSDB摘要
仅用于确定LSA传递的主从
3)DD报文置位符
I:Init位,置位则表示此报文是第一个DD报文
M:more位,置位则表示还有后续DD报文
MS:master位,置位则表示本端为主
当RTA接受RTB为master时,seq按照RTB的序列号发送时确定。且ms=0,最后状态变成Exchange
5、Exchange状态(带摘要的DD报文,)
交换状态,发送后续DD报文,用于通告LSDB摘要
RTA和RTB交换LSA摘要信息。
6、loading或full
Loading:读取状态,进行LSA的请求、加入和确认
Full:邻接状态(稳定状态),两端LSDB同步
Full的前提
1)两端MTU一致,否则邻居状态卡在Exstart、Exchange
2)两端网络类型一致,
将收到的LSA摘要和本地的LSDB比较,发现在LSDB缺少部分LSA,同步过来,更新自己的LSDB,变成FULL状态
如果LSA一样,那么直接变成FULL状态
LSDB更新
1)更新流程
1、收到LSA更新,在本地LSDB中查询此LSA和本地LSA进行序列号对比
2、查到此LSA,则把收到的LSA和本地LSA进行序列号对比
3、如本地LSA序列号大,则丢弃更新,否则加入LSDB
2)广播网络中的更新,只由DR发起更新
优化OSPF网络
OSPF网络类型及选举优先级配置
1、配置OSPF接口的网络类型
[R2-GigabitEthernet0/0]ospf network-type ?
broadcast Specify OSPF broadcast network
nbma Specify OSPF NBMA network
p2mp Specify OSPF point-to-multipoint network
p2p Specify OSPF point-to-point network
2、配置OSPF接口的路由器优先级
[R2-GigabitEthernet0/0]ospf dr-priority ?
INTEGER<0-255> Router priority
配置OSPF接口开销
1、配置OSPF接口的开销值
[R2-GigabitEthernet0/0]ospf cost ?
INTEGER<1-65535> Cost Value
2、配置OSPF接口的参考宽带
[R2-ospf-1]bandwidth-reference ?
INTEGER<1-4294967> The reference bandwidth (Mbits/s)
缺省情况下,带宽参考值为100Mbps,因此百兆和千兆以太网的接口开销都被计算为1
OSPF开销计算
参考带宽
1、计算开销的基准带宽值
2、默认参考带宽是100M
3、建议把网络中最高的链路带宽设置为参考带宽
计算方法
1、链路带宽大于等于参考带宽 cost=1
2、链路带宽小于参考带宽 cost=参考带宽/链路带宽(Mb),不足1的按1算
配置OSPF报文定时器
1、配置OSPF的Hello定时器
[R2-GigabitEthernet0/0]ospf timer hello ?
INTEGER<1-65535> Second(s)
2、配置OSPF的邻居失效时间
[R2-GigabitEthernet0/0]ospf timer dead ?
INTEGER<1-2147483647> Second(s)
3、报文定时器默认值
网络类型 | Hello定时器(s) | 邻居失效时间(s) |
---|---|---|
Broadcast | 10 | 40 |
P2P | 10 | 40 |
NBMA | 30 | 120 |
P2MP | 30 | 120 |
配置OSPF引入缺省路由
[R2-ospf-1]default-route-advertise ?
always Always advertise default route
cost Cost of default route
permit-calculate-other Calculate default route advertised by other
route-policy Specify the routing policy
summary Advertise a default route in a Type-3 LSA (only
available in VPN)
type Type of Type-5 LSA
<cr>
在OSPF视图下
此命令用于将默认路由引入到OSPF路由区域
always:如果本机没有配置默认路由,使用此参数可产生一个描述默认路由的LSA发布出去
cost:该默认路由的度量值
type:该LSA的类型
[R2-ospf-1]default-route-advertise #要求已经存在的默认路由引入到OSPF
OSPF 实验
实验拓扑
实验需求
1、按照图示配置 IP 地址
2、R1,R2,R3 运行 OSPF 使内网互通,所有接口(公网接口除外)全部宣告进 Area 0;要求使用环回口作为 Router-id
3、业务网段不允许出现协议报文
4、R5 模拟互联网,内网通过 R1 连接互联网,在 R1 上配置默认路由并引入到 OSPF
5、R1 上配置 EASY IP,只允许业务网段访问互联网
6、要求业务网段访问互联网流量经过 R3,R2,R1
实验解法
1、省略
2、R1,R2,R3 运行 OSPF 使内网互通,所有接口(公网接口除外)全部宣告进 Area 0;要求使用环回口作为 Router-id
步骤 1:创建 OSPF 进程,手动指定环回口地址为 Router-id,把所有内网接口宣告进 Area 0
[R1]ospf router-id 1.1.1.1
[R1-ospf-1]a 0
[R1-ospf-1-area-0.0.0.0]network 10.1.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 10.2.2.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[R2]ospf router-id 2.2.2.2
[R2-ospf-1]a 0
[R2-ospf-1-area-0.0.0.0]network 10.1.1.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 10.3.3.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[R3]ospf router-id 3.3.3.3
[R3-ospf-1]a 0
[R3-ospf-1-area-0.0.0.0]network 10.2.2.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
3、业务网段不允许出现协议报文
步骤 :把 R3 连接业务网段的 g0/2 口配置为静默接口,防止协议报文冲击业务网段
[R3-ospf-1]silent-interface g0/2
4、R5 模拟互联网,内网通过 R1 连接互联网,在 R1 上配置默认路由并引入到 OSPF
步骤 1:在 R1 上配置默认路由,下一跳指向为 202.1.1.5
ip route-static 0.0.0.0 0 202.1.1.5
步骤 2:在 R1 上把默认路由引入到 OSPF
因为 R1 上已经配置了默认路由,所以引入在 OSPF 中引入默认路由时,不需要带 always 参数
[R1-ospf-1]default-route-advertise
在其他路由器上验证:
<R2>dis ip routing-table
Destinations : 22 Routes : 23
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_ASE2 150 1 10.1.1.1 GE0/0
<R3>dis ip routing-table
Destinations : 25 Routes : 26
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_ASE2 150 1 10.2.2.1 GE0/1
5、R1 上配置 EASY IP,只允许业务网段访问互联网
步骤 1:在 R1 上创建基本 ACL,只允许业务网段 192.168.1.0/24
[R1]acl basic 2000
[R1-acl-ipv4-basic-2000]rule per source 192.168.1.0 0.0.0.255
步骤 2:在 R1 的公网接口上,配置 EASY IP,使内网可以访问互联网
[R1-GigabitEthernet0/0]nat outbound 2000
效果测试:在 PC4 上 PING R5的地址,PING 通说明可以访问互联网
<H3C>ping 202.1.1.5
Ping 202.1.1.5 (202.1.1.5): 56 data bytes, press CTRL_C to break
56 bytes from 202.1.1.5: icmp_seq=0 ttl=253 time=5.000 ms
56 bytes from 202.1.1.5: icmp_seq=1 ttl=253 time=1.000 ms
56 bytes from 202.1.1.5: icmp_seq=2 ttl=253 time=1.000 ms
6、要求业务网段访问互联网流量经过 R3,R2,R1
要想使流量经过 R2,就需要通过修改链路 Cost,使 R1-R3 的 Cost 比 R1-R2-R3 的 Cost 大,这里把 R1-R3 的 Cost 修改为 1000,来影响 OSPF 选路(改路由器进接口方向的cost,推荐两边相同)
步骤 1:把 R1 和 R3 相连的接口的 Cost 修改为 1000
[R1-GigabitEthernet0/2]ospf cost 1000
[R3-GigabitEthernet0/1]ospf cost 1000
测试:查看 R1,R2,R3 的路由表,确认默认路由和 192.168.1.0/24 网段的路由是经过 R1,R2,R3
[R1-GigabitEthernet0/2]dis ip routing-table
192.168.1.0/24 O_INTRA 10 3 10.1.1.2 GE0/1
<R2>dis ip routing-table
192.168.1.0/24 O_INTRA 10 2 10.3.3.3 GE0/1
[R3]dis ip routing-table
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_ASE2 150 1 10.3.3.2 GE0/0