o(open)s(system)
OSPF:链路状态路由协议(发送的是网络连接状态的信息),最短路径优先路由协议,基于IP协议。
最短路径的选择是根据带宽、延迟、cost值等条件选取的
封装IP头部协议字段:88 eigrp 89 ospf
工业标准(不管什么设备它都能用),工作在IP网络
组播地址:224.0.0.5 224.0.0.6(什么时候用5什么时候用6)
网络要大一些
链路状态型的路由
。建立邻居表
。发送LSA:
。LSA:链路状态分析(把它连接的状态信息发送给它的邻居路由器,以及它整个区域的所有的路由器)
。对方收到数据会形成一个拓扑表(存放的发送的链路状态的情况)
。运行SPF算法(以这台路由器为根,形成一棵树,选出到达目标的最近的路径,添加到路由表)
。路由表
OSPF维护三张表:邻居表、拓扑表、路由表
OSPF是以树的形式,以上面为根,选择到达目标的路径
OSPF为无环路由协议
区域汇总LSA:DR会传输汇总LSA,只在该区域进行传输,不传输给别人
BR:area 0 骨干区域(分区路由必须要有区域0)
其他所有区域都必须和骨干区域相连
骨干区域路由器的性能要非常好
ABR:区域边界路由器(一边连接骨干路由器(area 0),一边连接区域路由器(如下图的CDE)
发送LSA的时候只在区域内发送
选出其中某一台去联系其他区域
DR
BDR
在同一个AS,通过接口划分区域,ABR(区域边界路由器)
自治系统边界路由器(ASBR):一边连接的为ospf协议,另一边连接的为其他协议(如Eigrp)
区域边界路由器(ABR):一边为area 0 一边为area 1
区域LSA
划分区域的好处:
1、减少路由表的路由条目
2、拓朴发生改变时,只影响本区域的数据库
3、每隔30分钟泛洪数据库信息(周期和触发更新),划分区域后,只在本区域泛洪
4、网络设计灵活
1、邻居关系:Hello数据包 (必需记住,❤建立邻居的七种状态和每个状态的意思❤)
只有建立了邻接关系时才会发送路由更新
只有建立了邻接关系才会发送LSA
adj(邻接)
可使用命令debug ip ospf adj 查看邻居建立的详细过程
建立邻居表的过程一个要经过以下七个状态❤❤❤:
down 路由器A刚启动时,ospf处于down的状态,因为它还没有与其他路由器交换信息。它使用组播地址224.0.0.5发送hello分组。 (通过hello包去寻找它的邻居)
init 所有运行ospf的路由器收到A的hello分组时,将A加入邻居列表中,这是init状态。
2way 收到A的hello的路由器都向A发送单播应答,A收到后,将这些路由器加入邻居列表,所有路由器都建立了双向关系,进入了2way状态。
Exstart 如果链路类型是广播网络(如以太网),接下来必须选举DR和BDR,选举结束后,路由器处于预启动Exstart状态。
Exchange 然后交换链路状态数据库摘要,也就是交换DBD,这是Exchange状态。
Loading DBD(链路状态数据库)交换完毕后进入Loading状态
Full 路由器根据DBD发送LSR(链路状态请求)请求更新链路状态条目,对方用LSU(链路状态更新)进行响应。至此,双方都学到了路由条目,database完整,就是Full状态。
开启端口并给端口设置IP地址
给路由器添加回环地址
配置OSPF:
R1(config)#router ospf 1(进程号,不同的进程号之间能通信)
R1(config-router)#network 12.1.1.0 0.0.0.255(反掩码) area 0(区域0,必须要有一个区域0)
R1(config-router)#network 192.168.10.0 0.0.0.255 area 0
R2(config)#router ospf 1
R1#show ip ospf neighbor(R2没有宣告网络,没有建立邻居关系)
R2(config-router)#network 12.1.1.0 0.0.0.255 area 0(只要R1和R2都宣告12.1.1.0网络,则建立了邻居关系)
R1#show ip ospf neighbor
显示Loading Done则表示OK了(交换DBD结束),另一边就能学习到路由条目了
R2(config-router)#network 192.168.10.0 0.0.0.255 area 0
R2#show ip route
O开头的表示是通过OSPF协议学习到的
R1#debug ip ospf adj
router ID(ID编号)
seq 0x80000009(序列号)
关闭端口 开启端口
2.DR/BDR选取(❤❤❤)(在广播网络中选,点到点中不会选)
DR:指定路由器 BDR:备份指定路由器
(1)❤在多路访问网络中(多路访问网络会选取(端口优先级为1),点对点不会选取(连接的是串口console)(端口优先级为0)),DROTHER路由器只与DR与BDR建立邻接关系,DROTHER之间只建邻居关系❤。
(2)DR与BDR有自己的组播地址:224.0.0.6
(3)DR与BDR选取原则
首要因素是时间(已经选取好了不会重选,非抢占,router id选取最先开启(relaod)的路由器)
其次是接口优先级(多路访问(在广播的环境下才会去选取,点对点的情况不会去选取)网络的接口优先级为1,点到点网络接口优先级为0。
ip ospf priority 可以修改接口优先级,若为0则不参与DR选举
❤❤首先是路由器ID(router id)(最大的做DR,第二大的为BDR,其余的为DRother,所有的DRother都给DR发,BDR和DR是可以同步的)、再比环回接口,最后比物理接口(物理接口最大的去参与选举)❤❤
❤(4)DR与BDR选取是非抢占的,以下情况会重选❤
重启ospf进程或路由器;参与的路由器都执行clear ip ospf process命令;DR故障;
OSPF接口优先级为0。
(5)如果DR故障,BDR接管DR,如果BDR故障,选新的BDR
#show ip ospf int f0/0
#show ip ospf neighbor
(路由器之间如果是串口连接(红色的闪电线),就是点到点)
默认情况下它是选回环口,回环口最大的地址作root id,其次才是物理IP
R1(config)#router ospf 1
R1(config-router)#router-id 2.1.1.1(手动指定一个root id)
R2(config)#router ospf 1
R2(config-router)#router-id 1.1.1.1
R1#show IP ospf neighbor
不是抢占模式,一旦选取成功就不再选取(除非reload重启)
断开f0/0端口变为router id
Cost=10^8/BW(b/s)(接口的带宽)
metric值=所有目的地址到达本地路由器的入接口的cost值之和
metric值=所有本地路由器到达目的地址的路由器的出接口的cost值之和
也可以使用命令❤sh ip ospf interface loopback 0❤ 查看接口的cost值
修改接口的cost值:
Router(config)#int f0/0
Router(config-if)#ip ospf cost 1
或Router(config-if)#bandwidth 100(修改带宽)
加WIC-2T模块
Router3:
Router2:
Router0(R1):
#show ip route ospf
172.16.1.1 [110(优先级/管理距离)/3(Metric值,值越小开销越小)]
ospf管理距离为110
rip 管理距离为120
eigrp 管理距离为90
S静态管理距离为1
C直连的管理距离为0
当多个路由协议运行的时候,管理距离/优先级决定我们到底使用哪个协议
对于rip来说Metric值就是跳数,对于Eigrp来说Metric值为FD值,对于ospf来说Metric值就是cost值
Router0:
#show ip ospf int f0/0 查看接口的cost值
#show ip ospf int loopback 0查看接口的cost值
#show int f0/0 查看BW值
开销=参考带宽/接口带宽(b/s)
Cost=10^8/BW(b/s)(接口的带宽)(1/80取整数1)
metric值=所有目的地址到达本地路由器的入接口的cost值之和 (是路由传递方向所有入接口的cost值(不算交换机))
metric值=所有本地路由器到达目的地址的路由器的出接口的cost值之和
也可以使用命令sh ip ospf interface loopback 0 查看接口的cost值
#show ip ospf database
修改接口的cost值:
router0:
R2(config)#int f0/0
Router(config-if)#ip ospf cost 64或Router(config-if)#bandwidth 64
#show ip route
#ip ospf priority 0 修改优先级
Router(config)#router ospf process-id
Router(config-router)#network address wildcard-mask area area-id
单区域存在的问题:相互都会发LSA
最多可以支持16条路径,默认只支持4条
RIP支持等价
eigrp支持等价非等价
OSPF支持等价
(1)配置明文认证
接口认证:
R1(config)#int f0/1
R1(config-if)#ip ospf authentication-key ccie 设置明文密码,两端口密码要一致
R1(config-if)#ip ospf authentication 开启接口认证
区域认证:(区域认证也用到接口认证)
R1(config)#router ospf 1
R1(config-router)#area 1 authentication 开启区域认证
(2)配置密文认证
端口:(接口传不传LSA)
R1(config)#int f0/1
R1(config-if)#ip ospf authentication-key 1 md5 ccie 设置明文密码,两端口密码要一致
R1(config-if)#ip ospf authentication 开启接口认证
区域:(学不学到区域的LSA)
R1(config)#router ospf 1
R1(config-if)#ip ospf authentication
(3)配置区域认证
R1(config-if)#ip ospf message-digest-key 1 md5 ccie
R1(config-router)#area 1 authentication message-digest
OSPF安全认证实验:
配置简单口令验证
1、配置简单口令验证
R2(config-router)#area 0 authentication 开启认证
R2(config)#int e0/0
R2(config-if)#ip ospf authentication-key cisco
R1(config-router)#area 0 authentication
R1(config)#int e0/0
R1(config-if)#ip ospf authentication-key cisco
2、查看接口是否配置了简单口令验证
R2#sh ip ospf interface
Simple password authentication enabled 表示该端口启用了简单口令认证
3、查看区域启用验证的情况
R2#sh ip ospf
Area BACKBONE(0)
Number of interfaces in this area is 2
Area has simple password authentication
4、动态查看接收的OSPF数据包
R2#debug ip ospf packet
R2#undebug all
*Mar 1 00:24:54.159: OSPF: rcv. v:2 t:1 l:48 rid:2.2.2.2
aid:0.0.0.0 chk:B68E aut:1 auk: from Ethernet0/0
v:OSPF版本
t:OSPF数据包类型,1:HELLO;2:DBD;3:LSR;4:LSU;5:LSAck
l:数据包长度,单位字节
rid:路由器ID
aid:区域ID
chk:校验和
aut:验证类型
auk:验证信息
5、如果没有配置密码和密码有误,可通过以下命令查看:
R2#debug ip ospf event
6、基于链路的简单口令验证
R1(config)#int e0/0
R1(config-if)#ip ospf authentication
R1(config-if)#ip ospf authentication-key cisco
R1(config)#int e0/0
R1(config-if)#ip ospf authentication
R1(config-if)#ip ospf authentication-key cisco
配置MD5验证
1、基于区域的MD5验证
R1(config-router)#area 0 authentication message-digest
R1(config)#int e0/0
R1(config-if)#ip ospf message-digest-key 1 md5 cisco
R2(config-router)#area 0 authentication message-digest
R2(config)#int e0/0
R2(config-if)#ip ospf message-digest-key 1 md5 cisco
2、基于链路的MD5验证
R1(config)#int e0/0
R1(config-if)#ip ospf authentication message-digest
R1(config-if)#ip ospf authentication-key 1 md5 cisco
R2(config)#int e0/0
R2(config-if)#ip ospf authentication
R2(config-if)#ip ospf authentication-key cisco
思考?❤
1、在上面的实验中,在路由器R1上配置Key ID2后能否验证成功?
2、继续上面的实验,将R1上配置的KeyID2删除并查看验证情况?
3、按以下顺序重新配置KeyID,并查看是否能验证成功?
R1的配置: R2的配置:
Key ID 1 ccna Key ID 2 ccnp
Key ID 2 ccnp Key ID 1 ccna
Key ID 3 ccie Key ID 3 ccie
查看是否配置ospf:sh ip protocols
查看邻居表:sh ip ospf neighbor
查看链路状态数据库(拓朴表):sh ip ospf database
Link ID:标识每个LSA
ADV Router:指通告链路状态信息的路由器ID
Age:老化时间,范围是0–60min,老化时间到达60min的LSA条目将从LSDB中删除
Seq#:序列号,范围为0X80000001-0X7fffffff,序列号越大,LSA越新。为了确保LSDB的同步,OSPF每隔30min对链路状态刷新一次,序列号会自动加1。
Checksum 校验和,计算除了Age字段以外的所有字段,LSA存放在LSDB中,每5min进行一次校验,以确保LSA没有损坏。
Link count:通告路由器在本区域内的链路数目
Tag:外部路由的标识,在route-map中,可以通过匹配tag值来定义路由策略
查看路由表:sh ip route /sh ip route ospf
查看ospf进程及相关信息:sh ip ospf
查看运行ospf接口的信息:sh ip ospf interface f0/0
1、区域间路由汇总必须在ABR上完成
2、外部路由汇总必须在ASBR上完成
3、“no-advertise”参数阻止传递汇总路由
ospf路由汇总的目的:
减少网络中lsa传输的数量,减少网络中的变化,减少链路状态数据库,减少路由表,大大提高数据包查表转发的能力,能减少因为链路状态数据库的变化而引起的spf算法的重计算。
实验一要求:
1.如图运行OSPF区域
2.区域1要求用OSPF明文验证
3.区域0要求用可靠的验证方式
4.要求R4去往R1的环回从R2走
5.R1上看到去往R4的两条等价负载均衡
R4(config)#router ospf 1
R4(config-router)#network 44.1.1.0 0.0.0.255 area 0
实验二要求:
1、了解路由汇总的目的
2、OSPF区域间路由汇总的配置和调试
3、外部自治系统路由汇总的配置和调试
O 本区域学到的路由
O IA 是从其他区域学到的路由
O E2 从其他自治系统学到的路由,类型为2,默认metric值为20,不累加
O E1 从其他自治系统学到的路由,类型为1,默认metric值为20,会累加
R2(config-router)#area 1 range 172.16.0.0 255.255.252.0 配置区域间路由汇总
路由重分:在运行了多个路由协议的路由器上做
R3为自治系统边界路由器:这个路由器左边的为OSFP协议,右边为Eigrp协议
进入ospf进程:
将eigrp注入ospf:
R3(config)#router ospf 1
注入:
R3(config-router)#redistribute eigrp 1 subnets(以子网的形式进行重分,不进行汇总) 默认为 metric-type 2(show ip route 是0 E2开头的) OE2,Metric默认为20,不累加
R3(config-router)#redistribute eigrp 1 metric-type 1(重分时指定的类型) metric 100(指定Metric值,到R2为100,到R1为101) subnets metric-type 1 OE1 Metric默认为20,累加
将OSPF注入到EIGRP:
R3(config)#router eigrp 1
R3(config-router)#redistribute ospf 1 metric 1000 100 255 1 1500(指定五个k值,带宽、延迟、度量值、最大传输单元,实际上只有带宽和延迟)
种子度量值(Metric),默认情况下为无穷大,不可达
D EX从外部学习过来的
汇总:(在自治系统边界路由器上做汇总)
R3(config)#router ospf 1
R3(config-router)#summary-address 192.168.0.0 255.255.252.0 配置外部自治系统路由汇总
在R2上看路由表,会发现有一条路由为:
172.16.0.0/22 is a summary, 00:12:06, Null0
为避免环路,请使用以下命令:
R2(config-router)#no discard-route