路由分类
-直连路由
-非直连路由
&:静态路由
&:动态路由
:IGP:内部网关路由协议-在同一个AS内部使用(在企业内部或者数据中心内部使用)
-DV:距离矢量路由协议
-RIP(v1/v2)
-IGRP-思科私有协议
-EIGRP-思科私有协议
-LS:链路状态路由协议
-OSPF:开放式最短路径优先(企业用:功能多,可以精细化控制)
-ISIS:中间系统到中间系统(数据中心用,转发能力强,大流量转发)
:EGP:外部网关路由协议:在不同的AS之间使用(AS:自治系统)
-BGP:边界网关协议
纯文本
静态路由的不足
静态路由的不足:
1)当企业网络规模过大,设备过多,网段过多,配置静态路由工作量大,效率低,容易出错
2)当企业网络拓扑发生变更时,设备增加或减少时,IP地址发送变化时,由可能会需要删除原有的静态路由
重新配置静态路由,导致后期运维成本高,公司断网时间长
纯文本
OSPF概述
1、OSPF是什么
-开放式最短路径优先协议,一种最受欢迎的动态路由协议
-版本:OSPFv2(IPv4) 和OSPFv3(IPv6)
-OSPF位于OSI参考模型的第三层,数据封装在IP报头的后面
-协议号是89
2、场景:适用于中、大型网络规模,常见的场景有
& 政企网,层次化的网络架构中
& 数据中心内部,用于实现把不同的网段打通
3、作用:便于大型网络中对路由的管理和维护
OSPF的工作过程
⇒建立邻居表:和小姐姐成为朋友
⇒同步数据库:交换个人信息(家庭住址)
⇒计算路由表:计算出从我们家到她家的最优的路径
-建立邻居表:成为朋友,交换个人基本信息
hello报文 :建立邻居关系和维护邻居关系
打招呼,大家好,我是小红
大家好,我是小兰
你好,小兰,我是小红,我和你是朋友
你好,小红,我是小兰,我和你是朋友
周期性发2送hello ,用于维护邻居关系(朋友关系)
Cypher
-同步数据库:把秘密分享给对方(我有有多少邻居,邻居特点,住址)
DBD报文:用于描述数据库摘要信息
小红家:有蔬菜 小兰家:有肉
黄瓜 猪肉
LSR报文:用于请求对方数据库中的LSA(链路状态通告)
小红:兰姐,我想要你家的猪肉
小兰:红妹,我想要你家的黄瓜
LSU报文:根据对方的请求,更新信息,传递LSA(完整的LSA信息发过去)
小兰:红妹,猪肉,你查收一下
小红:兰姐,黄瓜,你查收一下
LSACK:报文收到对方的更新信息(LSA)进行确认
小红:兰姐,你的猪肉,我收到了,谢谢你
小兰:红妹,你的黄瓜,我收到了,谢谢你
什么叫同步,就是我们两个的数据库里面的内容完全相同
小红家有 黄瓜和猪肉
小兰家有 猪肉和黄瓜
备注:数据库同步--厨房蔬菜同步后,就可以炒菜,炒猪肉炒黄瓜
备注:这道菜:猪肉炒黄瓜:就是代表一个被计算出来的路由条目
猪肉:代表计算路由的原材料,在OSPF中称为LSA(链路状态通告)
黄瓜:代表计算路由的原材料,在OSPF中称为LSA(链路状态通告)
所以,我们可以得出一个结论,OSPF中,所有的路由条目都是路由器通过OSPF计算出来的,不是学习来的
但是计算路由的“原材料- LSA”都是通过同步数据库 ,学习来的,
所以运行OSPF的路由器,学习的是LSA,通过LSA计算出来的是路由
Haskell
-计算路由表:根据得到的信息构建一张地图,根据地图导航最优路径
报文类型
-Hello 用于发现、建立、维护和断开邻居关系(交朋友)
-DBD 用于描述数据库摘要信息(LSA头部信息)(发菜单)
-LSR 请求自己数据库中没有的LSA信息(我要)
-LSU 根据对方的请求信息,更新LSA给对方 (给你)
-LSack 收到对方的更新LSA信息后,进行确认(说谢谢)
OSPF区域
1、区域划分:
OSPF适用于大型网络,采用分层设计,分为骨干区域和非骨干区域。
2、OSPF 骨干区域
区域号为0,表示的就是“骨干区域”
3、OSPF 非骨干区域
区域号不为0,表示的就是“非骨干区域”
4、非骨干区域必须和骨干区域“直接”相连,能实现“区域之间的互通”
5、OSPF 区域的表示
通过十进制表示,例如区域
通过点分十进制表示,例如区域
6、为什么要引入区域
原因:只有一个区域的不足
如果只有一个区域,公司内所有路由器都要同步数据库:
不足:
- 1)数据报文非常多,所以设备压力大, 带宽占用多
- 2)由于数据报文多,所以同步数据库非常慢,占用时间多
- 3)由于数据库非常大, 所以计算路由慢,所以计算出来的路由表也非常大
- 4)由于路由表非常大,路由器转发数据的时候, 查路由表时会让设备压力大(CPU占用高),查表慢,最终导致,数据转发慢,公司网络性能差所以我们要引入OSPF区域
引入多个区域的优势:
1)只有同一个区域内的路由器才需要同步数据库,不同区域的路由不需要同步数据库
2)所以同步数据库的设备少, 数据报文就少,设备压力也小,也不过多浪费带宽3)由于数据报文少,所以数据库最终就小
4)数据库小,数据库同步的速度就快,计算路由的路由就快5)数据库小,最终路由表也小,转发数据的速度就快,公司的网络质量就好
OSPF单区域实验案例
拓扑
需求
实现全网互联互通
配置步骤
1)配置PC接口IP地址
2)配置路由器的接口IP地址
3)配置OSPF
-创建ospf进程,定义router-id
-指定相应区域
-宣告网段进入ospf
4)验证结果
配置命令
第一步:配置PC接口IP地址
第二步:配置路由器接口IP地址
第三步:配置OSPF:
R1:配置
ospf 1 router-id 1.1.1.1 //指定ospf进程号, 指定router-id
area 0.0.0.0 //指定区域id
network 192.168.1.0 0.0.0.255 //宣告直连网段
network 192.168.12.0 0.0.0.255 //宣告直连网段
R2:配置
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 192.168.23.0 0.0.0.255
network 192.168.12.0 0.0.0.255
R3:配置
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 192.168.23.0 0.0.0.255
network 192.168.2.0 0.0.0.255
第四步:验证结果
display ospf peer brief //查看邻居表简要信息
display ip routing-table //查看路由表
PC1 ping PC2验证结果
<R1>display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 2 Routes : 2
OSPF routing table status : <Active>
Destinations : 2 Routes : 2
Destination/Mask Proto Pre Cost NextHop Interface
192.168.2.0/24 OSPF 10 3 192.168.12.2 G0/0/0
192.168.23.0/24 OSPF 10 2 192.168.12.2 G0/0/0
纯文本
OSPF邻居表解析
<R1>display ospf peer brief //查看邻居表简要信息
OSPF Process 1 with Router ID 1.1.1.1
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 2.2.2.2 Full
----------------------------------------------------------------------------
1、Process:进程号
ospf 1 :指定ospf进程号1
1)作用:在同一个设备上,区分不同的ospf路由协议
2)通过不同的进程号的ospf协议所学习到的路由信息是不会自动相互传递的,
从而实现各个ospf协议之间的隔离
3)ospf进程号只在本地路由器起作用,不同的路由器的进程号,可以相同,也可以不同
4)进程号范围<1-65535>
2、Router ID
router-id 1.1.1.1 //指定router-id为1.1.1.1
1)ospf协议给路由器起的一个名字,格式类似于IP地址(点分十进制)但是不是IP地址
2)在ospf网络中,router-id是唯一的标识一台路由器
3)router-id的生产方式
选举规则:-手动指定:最优
-如果没有手动指定router-id ,会进行自动选举
&:自动选举
-首先选举本设备上的loopback接口的IP地址,选择IP地址最大的
--如果没有配置loopback接口选举物理接口IP地址最大的
备注:自动选举的前提是,所有的接口同时运行ospf ,如果没有同时运行,那个接口先启用ospf,
就选择那个接口的地址号,做router-id
&:手动配置
[huawei] ospf 1 router-id 1.1.1.1 //手动指定的命令
备注:当路由器已选router-id后,手修改router-id并不会生效
为什么?ospf需要稳定,ospf稳定,网络才会稳定,一旦选举router-id,就不会被替代
-如果已经有了router-id ,后来又手动指定的router-id想让新的router-id生效,怎么办?
重启ospf进程:<huawei> reset ospf process //在用户视图下执行命令
3、Area Id:区域号
area 0.0.0.0
1)表示的是与对方设备建关系时,所使用的区域号
2)对于ospf来说,这个区域号一定不能少
3)区域号的表示方式有两种
&:十进制数:0-4294967295
&:点分十进制:0.0.0.0 - 255.255.255.255
4)区域分为两类:
&:骨干区域:0
&: 非骨干区域:不为0
4、Interface:使用那个接口与对端建立的邻居
5、Neighbor id:邻居的router-id
6、State:邻居之间的状态
full :完美的邻居--也叫邻接
备注:
two-way :双向通信: 邻居状态
full :数据库同步完成 :邻接状态(最好的邻居的状态)
Ada
报文字段解析:
OSPF头部报文解析:
【OSPF】
这个字段,指的是OSPF的版本
版本2——针对的是IPv4的网络
版本3——针对的是IPv6的网络
【 Message Type 】
消息类型
OSPF中,一共有五种报文:Hello、DD、LSR、LSU、LSAck
分别对应了1、2、3、4、5
【 Packet Length 】
报文的长度,不可修改
【OSPF】
发送这个Hello报文的路由器的Router ID
而在一个OSPF网络中,Router ID就是用来唯一标识一台路由器的
所以,不同路由器的Router ID不能相同
【ID】
发送这个Hello报文的接口,所在的区域
两台路由器,想要建立邻居,它们的互联接口,必须在同一个区域中
【 Packet Checksum 】
报文的校验和,用来校验报文是否完整
【/Data 】
这里指的是OSPF的认证
认证的类型
认证的数据
纯文本
OSPF Hello Packet 报文解析:
【 Network Mask 】
子网掩码
默认情况下:两个建立OSPF邻居的路由器,互联接口的掩码必须相同
【 Hello Interval 】
时间间隔/Hello计时器/Hello时间
就是发送这个Hello报文的路由器,多长时间发一个Hello包
默认情况下:Hello时间为10秒
两台路由器,想要建立OSPF邻居,它们的Hello时间必须相同
【 Option 】
特殊标记位
不同的区域类型的标记位也不同
想要建立OSPF邻居,Option位必须相同
【 Router Priority 】
DR优先级,用于DR选举
如果两台想要建立OSPF邻居的路由器,在互联接口上都配置了自己的DR优先级为0,那么,两台路由器都不会参加DR选举
而在需要DR的网络中,选举不出DR,邻居就无法继续建立
所以,两台设备DR优先级为0,在需要DR的网络中,邻居状态会卡在2-way
【 Router Dead Interval 】
时间/死亡时间
默认情况下:是Hello时间的4倍=40秒
时间会随着Hello时间的改变而改变,但还是4倍关系
所以,我们如果更改Dead时间,一定要注意是否受Hello时间影响,
即:我们需要单独更改Dead时间(手动配置的Dead时间优先于默认情况——4倍Hello时间)
【Designated router 】 : DR :指定路由器
【backup Designated router】 :BDR :备份指定路由器
【Active Neighbor 】 :活跃的邻居,我认可的邻居
纯文本
<R1>display ospf interface GigabitEthernet 0/0/0
OSPF Process 1 with Router ID 1.1.1.1
Interfaces
Interface: 192.168.12.1 (GigabitEthernet0/0/0)
Cost: 1 State: BDR Type: Broadcast MTU: 1500
Priority: 1
Designated Router: 192.168.12.2
Backup Designated Router: 192.168.12.1
Timers: Hello 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
重要字段解析:
Interface: 192.168.12.1 (GigabitEthernet0/0/0) :接口号和接口IP地址
Cost: 1:开销值默认为1
State: BDR:接口状态默认位BDR(备份指定路由器)
Type::网络类型默认位 广播型网络
MTU: 1500:最大传输单元,1500字节
纯文本
邻居建立失败的原因(router-id/area-id)
实验1:两台路由器的router-id 不能相同,才能建立邻居关系
1)修改R1路由器的的router-id 为2.2.2.2 让R1的router-id 和R2的router-id 相同
[R1]ospf 1 router-id 2.2.2.2 //修改R1的router-id 为2.2.2.2
<R1>reset ospf process //重启ospf 进程
纯文本
3)验证:无法建立邻居关系
4)结论: 两台路由器的router-id 不能相同,如果相同无法建立邻居关系
5)备注:验证完成,记得恢复配置,把R1的router-id 在改回1.1.1.1
实验2: 两台路由器的Area id 必须相同,才能建立邻居关系
1)修改R1路由器的的Area id 为2 让R1的Area id 和R2的Area id 不相同
2)配置命令
[R1]ospf 1
[R1-ospf-1]area 0
[R1-ospf-1-area 0]undo network 192.168.10.0 0.0.0.255
[R1-ospf-1-area 0]area 2
[R1-ospf-1-area 0]network 192.168.10.0 0.0.0.255
3)验证:无法建立邻居关系
<R1>display ospf peer brief
OSPF Process 1 with Router ID 1.1.1.1
Peer Statistic Information
Area Id Interface Neighbor id State
4)结论:两台路由器的Area id 必须相同,才能建立邻居关系
实验3: 两台设备的互联的接口,需要能够ping 通(三层互通),如果三层不通,无法建立邻居关系
[R111]ospf 1 router-id 1.1.1.1
[R111-ospf-1]area 0
[R111-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]undo ip add
[R2-GigabitEthernet0/0/0]ip add 192.168.13.2 24
[R2-GigabitEthernet0/0/0]quit
[R2]ospf 1
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]undo network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 192.168.13.0 0.0.0.255
无法建立邻居的原因?
1)两台设备的router-id 不能相同,如果相同无法建立邻居
2)两台设备互联接口的区域号必须相同,如果不同,无法建立邻居
3)两台设备的互联的接口,需要能够ping 通(三层互通),如果三层不通,无法建立邻居关系
OSPF路由角色
- 骨干路由器:路由器只要有一个接口在骨干区域
- 非骨干路由器:路由器的所有接口都在非骨干区域
- ABR(区域边界路由器) 同时连接着骨干区域和非骨干区域的路由器
- ASBR(自治系统边界路由器)具有产生外部路由能力的路由器
OSPF多区域实验案例
拓扑
需求
实现全网互联互通
配置步骤
1)配置PC接口IP地址
2)配置路由器的接口IP地址
3)配置OSPF
-创建ospf 进程 和 router-id
-配置ospf 区域id
-宣告直连网段进ospf
4)验证结果
配置命令
第一步:配置PC接口IP地址
第二步:配置路由器接口IP地址
第三步:配置OSPF:
R1配置:
ospf 1 router-id 1.1.1.1
area 0.0.0.12
network 192.168.1.0 0.0.0.255
network 192.168.12.0 0.0.0.255
R2配置:
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 192.168.23.0 0.0.0.255
area 0.0.0.12
network 192.168.12.0 0.0.0.255
R3配置:
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 192.168.23.0 0.0.0.255
network 192.168.34.0 0.0.0.255
R4配置:
ospf 1 router-id 4.4.4.4
area 0.0.0.0
network 192.168.34.0 0.0.0.255
network 192.168.45.0 0.0.0.255
R5配置:
ospf 1 router-id 5.5.5.5
area 0.0.0.0
network 192.168.45.0 0.0.0.255
area 0.0.0.56
network 192.168.56.0 0.0.0.255
R6配置:
ospf 1 router-id 6.6.6.6
area 0.0.0.56
network 192.168.2.0 0.0.0.255
network 192.168.56.0 0.0.0.255
第四步:验证结果
display ospf peer brief //查看邻居表简要信息
<R1>display ip routing-table protocol ospf
PC1 ping PC2验证结果
纯文本
无法建立领居
无法建立领居关系的原因
1因为三层网络不通, 无法建立领居关系 所以网络三层通信必须要在同一网段 可以建立领居
2因为Router-id一致, 无法建立领居关系 所以routerid必须要不同 可以建立领居
3因为区域不一致 无法建立领居关系 所以OSPF区域要相同 可以建立领居
4因为OSPF 没有进行宣告 无法建立领居关系 所以OSPF要进行宣告 可以建立领居
5因为Hello时间不一,死亡时间一致 无法建立邻居关系 所以OSPFhello时间必须要一致 可以建立领居
6因为dead时间不一致 无法建立领居关系
7接口的掩码不一致 无法建立领居关系
Bash