基本介绍
OSPF:Open Shortest Path First(最短路径优先)协议类型89
Cisco官方rfc文档:https://tools.ietf.org/html/rfc2328
SPF:根据LSDB生出树形算法区域内(无环)完全自己算路由(原料,灵活性强)
rip:完全别人告诉
eigrp:一部分别人告诉,一部分自己算
ospf:完全自己算,维护3张表,保证所有路由器的lsdb一样
OSPF度量值:10^8/最小带宽(单位bps,100M带宽的cost=1)
手动修改cost:config-if#ip ospf cost X (1-65535)
查看接口cost命令:#show ip ospf interface brief
查看带宽等参数信息:#show int br
OSPF维护3张表:邻居表,拓扑表(lsa信息),路由表
OSPF没有传输层,ip的上一层即ospf
passive接口不处理hello包,直接邻居关系down,pc不会发ospf报文,与pc连接的路由器passive,不影响另一接口路由转发
hello包发给:224.0.0.5
DR发给 The Other224.0.0.5
The Othe发给DR/BDR224.0.0.6
邻居间7种状态:
路由更新
当网络稳定后,路由器A会每1800s周期性更新左侧连接网段C的存活时间并增大校验和,且只有路由器A有资格更新
ospf无环保证
区域内:所有路由器LSDB内LSA的数量相同(LSACK确认机制)、路由存活时间最新(周期性更新路由age)
区域间:所有区域穿越骨干,相当于星形拓扑
OSPF会根据二层的协议来判断网络类型是什么(针对接口)
如果二层是PPP或者HDLC协议,OSPF就会认为该接口网络类型是P2P;
如果二层是EthernetⅡ协议,OSPF就会认为该接口网络类型是BMA;
如果二层是Frame relay协议,OSPF就会认为该接口网络类型是NBMA。
Loopback在OSPF中,环回接口的路由掩码会变为32位,可用命令修改为24位;
Config#int Loopback0
Config-if#ip ospf network point-to-point
常用命令
查看OSPF的哪些接口被宣告进:#show ip ospf interface brief
查看OSPF的数据库:#show ip ospf database //列出所有直连区域的LSA
查看OSPF的路由进程,以及哪些接口启用了被动接口:#show ip protocols
查看OSPF的邻居:#show ip ospf neighbor
清理进程重新选DR:# clear ip ospf process
删除进程:#no ip ospf 1
修改AD值(本地有效,不要轻易修改)distance 80
查看详细信息:#show ip ospf neighbor detail
从邻居收到的ospf计算出路由:show ip ospf route
查看进程号:show ip ospf
查看某个接口具体配置:show run int e0/0
看各类LSA:Show ip ospf database self(看自己)/network(2类)
DR/BDR选举原则
每个hello包在hello包中将自己标记为DR,在BMA网络当第一台路由器接口配置完ospf协议,发送hello包的同时启动计时器40s,所有属于BMA网络的路由器共享40s时间选BDR
①比较接口优先级,越大越优(默认为1 , 如设置为0,表示不参与选举)
②比较Router-ID,越大越优; Router-id:①手工配置>②逻辑最大的映射>③物理接口最大的IP地址映射
DR与Other直接是邻接关系(可以交换路由)
BDR与Other直接是邻接关系(可以交换路由)
Other与Other直接是邻居关系(无法交换路由条目)
DR/BDR是路由器接口的特性,而非路由器的特性,也就是说一个路由器可以是DR也可以是BDR
邻居建立不起来原因分析
- Router id相同,邻居起不来
- hello时间:10s,hello时间不同,邻居起不来
- dead时间不同邻居起不来,40s还收不到hello报文,认为邻居不可达
- Area id不同,起不来邻居
- 认证类型不同,邻居起不来
- 认证数据密码不同,邻居起不来
- 不在一个网段,能ping但是不能建邻居
- 两端的接口所在不同区域,不能建邻居
- router-id冲突
- passive-interface接口不能建邻居
- 两端接口优先级都为0,没有DR,最远可以到达2-way状态,无法选主从,无法到达exstart
- 接口MTU不一致,无法建立邻接关系
- 网络类型不一致,改成点到多点,hello时间变30s,邻居down,BMA+P2P可以建邻居
#修改hello时间,同时dead time,wait time也跟着改
int e0/0
ip ospf hello-interval 11
Show ip ospf int e0/0
两个邻居之间的5种报文:
- hello报文:路由器A第一次发hello报文给路由器B,不携带邻居信息,当B收到A的hello时,带着A的IP返回给B,A收到带有自己IP的hello报文,进入2-way状态
- DBD报文:第一个DBD在exstart状态下发,不携带LSA头部,仅比较router-id选DR/BDR,之后的DBD开始携带LSA头部,交换信息,有I /M /MS三位
- LSR报文:请求自己没有的LSA,若5s没收到LSU,会一直发
- LSU报文:回复某条LSA
- ACK报文:收到LSU后回复
ABR:至少有一个接口属于area0,其他接口不属于area0,维护两张表
ASBR:至少有一个接口属于ospf区域
LSA头部:Advertise ID+LinkState ID+LS Type唯一标识一个LSA实例
FA:默认0.0.0.0代表下一跳是ASBR
OSPF报头:
version,type,包长度,router-id,area-id,校验和,认证类型
hello内容:hello时间,hold时间,路由器优先级,DR,BDR
认证类型:
1. 空认证:0
2. 明文认证:1密码放在头部
3. 密文认证:2密码放在data里
网络类型: BMA+P2P可以建邻居,能传路由,The other之间最终状态2-WAY,不可能是邻居
3600s(1h)过期从LSDB删除,每1800s更新age,为防止频发LSA,在其基础上240s一起发
第一条LSA的sequence number:0x8000 0001–0x7FFFFFFFF
一类LSA router产生
Link type不同,Link-id和Link-data表示的内容不同
transit就是伪节点(方框表示)
虚链路
ID:对端router-id
Data:自己到对端最优路径的物理IP地址
注意:2类LSA 会产生2条链路状态,p-to-p和stub标识链路网段
二类LSA (DR产生) network
根据LSA可以计算出路由,一二类LSA 根据SPF算法算出最短路径,防环
三类LSA (ABR产生)传递路由,一个路由产生一个3类LSA
四类LSA asbr-summary 告诉非ASBR所在区域内所有路由器如何到达ASBR(其实是ABR告诉的故是ABR产生)
ABR产生告诉区域内路由器,想访问外部要经过我。4类LSA不一定存在,如果直接本区域内引入5类LSA则不需要
Link state id为ASBR的router-id
五类LSA (ASBR产生) 将引入的外部路由传递到所有area的路由
总结:
I = 1:第一个DBD报文,没有LSA header字段
M = 1:还有更多DBD报文
MS = 1:主从(我是主)刚开始都认为自己是主,比较
只有主有权利发sequence号,从对主发的每一个报文进行确认
age小为优
sequence大为新(先看)
checksum大为优
注意点
- 小于40s已经选出DR,来个再大的router id不会把DR挤掉
- Ipv6环境下必须配routerid,否则起不来
- 所有非骨干区必须和骨干区直连
- lsa发出后每30分钟(1800s)更新,60分钟不更新会被从路由表删除
- *>可以进路由表
- Hello 10s/40(修改hello会影响dead,修改dead不影响hello)
- DR,BDR只支持MA,不支持点对点和loopback,因为点对点不能选DR
- 修改参考带宽100……10000
OSPF 汇总(ABR,ASBR)分区域
同一个area共享数据库,所以在区域内路由器做汇总毫无意义
ABR
router ospf 1
area 1 range 3.1.0.0 255.255.248.0(汇总路由来自哪个区域)
ASBR
router ospf 1
summary-address 1.1.0.0 255.255.248.0
#就算之前R1已经收到明细路由,汇总后ABR告诉R1将明细老化,并生成汇总路由
redistribute rip subnets
OSPF下发默认路由:在ASBR上
无法像EIGRP那样重分布静态路由,因为静态路由无法在链路状态下传递,也不会有metric
(ospf进程下)default-information originate (always)
always不管是否有静态,都能下发
不加always前提:本身上有一条静态路由
修改缺省路由metric值:default-information originate metric 10
• 如果有多个边界路由器,建议不要使用always,因为并不会做备份,而是只选择一个
• 如果只有一个边界路由器,推荐使用always
虚链路配置
R1不会学到23网段路由,因为不是ABR,不会传递Area2间路由
ABR会接收非骨干区域传过来的LSA,但次LSA不会参与路由计算,不防环,虚链路可以解决,但是两端都要配
虚链路不会周期性泛红,不会更新age,也不会老化
R1会收到23网段路由,不会收到34和4.4.4.4网段
ABR区域
stub区:设备便宜,不会接受5类LSA,更不会去到外部网络,所以由ABR发送一条默认5类LSA,骨干区域不能配置成stub
(进程下) area1 stub
对区域而言,此时如果一条链路一个接口是stub,另一个不是stub,邻居关系就会建立不起来,正常配置后,会看到默认下发的3类LSA
totally stub
(进程下) area1 stub no-summary 正常3类不收,ABR下放默认3类,只收缺省3类
#修改stub 区ABR的默认metric,备份
(ABR的ospf下)area1 default-cost 2 (默认为1),结果路由器到ABR的0.0.0.0的metric是10+2
缺点:选路时stub只能以ABR作为目标设备选路,导致整体选路不精确
ASBR区域
nssa区:不收5类LSA,收正常3类,但能引进除ABR的7类LSA,到ABR时将7类转为5类进入到骨干区域
ABR需要手动在nssa区下放7类缺省路由,这样她若想访问外网就可以通过ABR
totally nssa:不收5类LSA,正常3类也不收,但能产生7类LSA,nssa区域的ABR将7类转为5类,但ABR会产生默认7类和3类LSA
#修改stub 区ABR的默认metric
#ospf v2针对ipv4使用
#ospf v3针对ipv4和ipv6
R2若想访问3.3.3.3网段,只能通过找ASBR也就是R1才能到达,这样会绕远,若R1的e0/0满足上述3个需求,就会产生FA是R3的e0/0接口,R2想访问
可以通过直连访问,并且R2到R3的e0/0的路由必须是O或OA1才可以访问,若R2到R3的e0/0是直连也无法访问,解决方法是将R3变成ABR
命名OSPF
Router ospf lab
Address-faminly ipv4 unicast automous-system 1
Af-interface e0/0
Address-faminly ipv6 unicast automous-system 1
OSPFv3
Config#Router ospfv3 1
Config-router#Address-family ipv6 unicast
Config-router-af#router-id 1.1.1.1
#Show ospfv3 neighbour
#Show ospfv3 database
#Show ip route ospfv3
老版ospf认证ipv6
明文认证
接口下:1:启明文认证,2:为明文认证配密码
区域下:1:区域下启认证,2:在接口下配置密码
空认证
(接口)Ip ospf authentication null
密文认证
OSPF优化
① 路由器读取目的地址,并查找路由表,选择和目的地址最精确匹配(最长匹配)的路由进行转发;
② 如果存在2条相同的路由,查看管理距离;
③ 根据O > O IA >O E1 > O E2 的优先级顺序转发;
④ 如果此时还存在等cost路径,则作负载均衡转发(OSPF默认4条路径负载均衡)。