OSPF
基础概念
开放式最短路径优先协议
- 适用范围:IGP
- 协议算法特点:链路状态型路由协议,SPF算法
- 协议是否传递网络掩码:传递网络掩码
- 协议封装:基于IP协议封装(跨层封装,三层),协议号89
OSPF数据包
Hello包(唯一一个不需要确认的包)
- 周期性发送
- 之所以周期发送是由于触发更新,只是为了保活,维持我们之间的通信,占用资源不大
- 周期时间位10s或者30s;不同的网络类型发送周期不同(只与网络类型有关),链路带宽高时10s一个,链路带宽低时30s一个
- 死亡时间:10s更新则为40s;30s更新为120s
- poll时间:时间间隔
- 重传间隔:5s;发送一个需要确认的包时,等待确认的时间为5s,5s位收到确认则再重新发送一遍
- 传输延时:1s
- 目的
- 建立并维持OSPF 邻居关系
- 邻居关系建立之后重当保活包功能
- 数据包内容(OSPF的HELLO报头)
- 网络掩码
- Hello时间:10s或者30s
- options:特殊区域位
- 路由器的优先级:默认值为1(选择DR时需要比较,优先级可改,范围0~255,越大越优,0为放弃选举)
- 死亡时间:40s或者120s
- DR
- BDR
- 对方的router-id:第一个Hello包中不带
DBD包(靠DBD确认)
-
功能
- 主从选举:
- 为什么选举主从:由主来控制LSA后期传问题
- 数据库的描述包:给自己的LSA数据写一个目录
- 主从选举:
-
数据包内容(DBD主从选举)
- MTU:最大传输单元(华为默认不发为0)
- 可以选择激活MTU,进入接口,输入ospf mtu-enable
- 修改接口MTU值:(同时修改3层和2层的MTU值),在接口状态下输入mtu 1500
- Options:特殊区域为
- DB Description
- R
- I:1为第一个包;0不是第一个
- M:0为最后一个包
- MS:主从位;1为主,0为从
- 序列号:从需要放弃自己的序列号,用主的序列号
主从选举完成后,发送携带LSA头部信息的DBD包
- MTU:最大传输单元(华为默认不发为0)
LSR(LSU确认)
- 链路状态请求
- 按照DBD中报文的未知LSA头部进行请
- 数据包内容
LSU(LSack确认)
LSack(自身的隐试确认)
OSPF状态机
down:关闭状态
停留这一状态原因:条件不匹配
- ospf邻居还没有建立
- 在建立过程中出现问题,邻居没有建立成功;比如40sHello包未回应,退回down状态,不再10s保活,则是在down状态下以Poll时间发送Hello包
init:初始化状态
- 一旦开始发送hello后则进入此状态
- 变为此状态后,等待对方恢复的一个Hello包,其中要是携带自己的router-id ,则进入下一状态
Attempt:尝试连接的状态(只会出现在NBMA网络中)
Two-way:双向通信状态(邻居状态建立完成)
停留这一状态原因:选不出DR/BDR
- 接收到包含自己router-id 的对方hello报文
- 点对点网络:不需要选取,可以继续进入下一状态
- MA网络中
- 会选举DR(指定路由器) BDR(备份指定路由器);一个区域只能有一个DR和一个BDR
- 选举DR(接口概念)
- 比较优先级(范围:0-255,默认优先级为1 ,越大越优)
- 比较各自的router-id,越大越优
- 等待时间与死亡时间一样多,40s之内选举,没有比自己大的则认为自己为DR
- 先选出一个BDR,看40s之内是否还有比自己优的,没有则升级为DR
Exstart:预启动状态(停留这一状态原因:MTU不同)
- 一旦开始发送主从DBD,则进入预启动状态
- 进行主从选举
Exchange:预交换(问题:MTU不同)
- 主从选举完成,则发送携带LSA头部信息的DBD(目录),进入预交换状态,会发送LSR数据包。(但是没有LSU)
- 主从选举完成之后
- 根据对方发来的DBD目录中的LSA ,选出自己没有的LSA条目,建立自己的请求列表,更具自己的请求列表逐条向对方请求
- 一个LSR中只能带有一个请求条目,收到回复后才会请求下一条
Loading:加载状态(问题:路由器学习不了那么多的LSA)
- 一旦发送LSU数据包,进入了加载状态,进行大量LSA的学习
- 过程
- 收到请求列表中所需要的LSA条目,建立对应的重传列表(LSU),并回复给对方所请求的LSA数据包
- 对方收到了回复给自己的LSU,对比自己的请求列表,是自己请求的则回复一个LSack包,并且把自己请求列表中的这条条目删除
- 收到确认的LSack包,则对照条目删除请求列表中的对应条目,表示确认对方已经学习到此条目
Full:邻接状态
- 双方LSA同步(双方LSA全部学习)
- 双方的请求列表和重传列表都为空时,则为加载完成
OSPF(三表)
邻居表:查看邻居和邻接状态的
- display ospf peer breef查看OSPF邻居表的摘要信息
- Area ID 区域
- 自己的接口 对应的在哪个区域
- 建立关系的接口id
- 状态
- display ospf peer查看OSPF邻居表
- 区域 对方建立关系的id(自己的接口) 关系
- router-id:自己的 Address:
- DR BDR MTU
- 重传计时器:需要确认,规定时间内没有收到确认包则再重传一遍
- 建立了多久
LSDB表:链路状态数据库
-
dis ospf 100 lsdb查看lsa目录信息
- Type:LSA的类型,几类LSA
- LinkState ID:链路ID,标记一条LSA,不同的LSA产生LinkID的方式不同
- AdvRouter:产生这条LSA的路由器
- Age:LSA的Age,LSA的老化时间,LSA是有一个存活时间的;最大老化时间为3600s
- Len:长度
- Sequence:序列号
- 校验核(这里不显示出来)
- Seq、校验和、Age三者来做新旧比较
- LSA老化时间(若以上都相同,LSA age 之差小于15 ,越小越有,若大于15分钟,则无法比较认为都是最新的)
- 先对比序列号,8~F F-0~7,当序列号到7FFF FFFE时,初始路由器把此条LSA的老化时间强行改为3600s,其他路由器删除此条目,初始路由器重新发送序列号8开始的LSA条目
- Metric
路由表
-
dis ip rouring-rable pr ospf
- 学习到的路由
- 协议
- 优先级
- cost值
邻居建立条件
(在满足以下条件的时候,不同网络环境中是可以建立邻居或邻接关系的;点需要选DR的网络环境和不需要选择DR的网络环境之间可以建立邻居,LSA可以同步,但是LSA中的信息无法加表)
- router-id不同
- Area ID一致
- 认证类型一致
- hello时间与死亡时间一致
- 特殊区域标识(E(外部路由位,是否支持5类LSA;1为支持,0为不支持)=1 ;N(NSSA外部路由位,是否支持7类LSA;1为支持,0为不支持)=0 P=0(是否支持7类LSA转换为5类LSA,1支持,0为不支持))
- MA网络中,网络掩码必须一致
- 必须同时使用单播或组播更新
- 更新源检测(双方的IP地址必须在同一网段)
OSPF(LSA)
描述LSA的三种东西
- Type:LSA的类型,几类LSA
- LinkState ID:链路ID,标记一条LSA,不同的LSA产生LinkID的方式不同
- AdvRouter:产生这条LSA的路由器
- 一类LSA:router -LSA
- 功能:产生本路由器针对某个区域的路由信息和拓扑信息;一个路由器针对一个区域产生一条一类LSA
- 传播范围:只能在本区域内传输,中止于ABR
- Link ID :产生者的router-id
- ADV router:产生者的router-id
- 特性:
- 在单个区域中分别产生一条1类LSA,若存在MA网络,1类LSA不完整,需要配合二类LSA生成路由信息以及拓扑信息
- LSA数据包(dis ospf lsdb roter 所查的linkID)
- Type:类型router
- LS ID:
- Adv:
- 存活时间
- Len:字节
- 特殊区域
- 序列号
- 校验和
- Link cout:代表我这个一类LSA是由几部分构成(由*区分)
- link ID
- 类型为TransNet时,此ID为此网络范围的DR
- Data
- 类型为StubNet时,为掩码
- 类型为TransNet时,自己连接DR的接口
- 类型为point-to-point时,自己用于连接
- Link Type
- StubNet(末节网络):表示路由信息
- point-to-point:表示拓扑信息,点对点的
- TransNet:表示拓扑信息,传输网络仅限于MA网络,需要选DR、BDR
- virtual link :虚链路
- 开销值:0为本地环回
- Priority
- link ID
- 二类LSA:network LSA ,网络LSA(只能由DR产生)
- 功能:用于在MA网络中,描述本网络路由器的数量以及本MA网络的网络掩码;一个MA网络只产生一条二类LSA
- 传播范围:只能在本区域内传输,中止于ABR
- Link ID:DR接口的IP地址
- ADV router:DR所在路由器的router-ID
- 特性
- 只会出现在MA网络,用于补充1类LSA(1.MA网络的掩码2.MA网络路由器的数量)
- LSA数据包
- Type:类型Network
- LS ID:
- Adv:
- 存活时间
- Len:字节
- 特殊区域
- 序列号
- 校验和
- 网络掩码
- Priority
- 可达的路由器
- 三类LSA:summary LSA,汇总LSA
- 功能:用于在区域之间传递路由信息
- 传播范围:只能在一个区域内传输,想传输到下一个范围,由连接下一个范围的ABR重新产生新的三类LSA
- link-id :传递路由的网络号(一个范围)
- ADV router:默认为所在区域ABR的router-id
- 特性
- 在穿越不同区域时,有其他的ABR重新产生(ADV router 是变化的)
- 功能是在区域间传输路由,但是不是直接传输,是进入新的区域时是产生的新的LSA
- LSA数据包
- Type:类型Sum-Net
- LS ID:
- Adv:
- 存活时间
- Len:字节
- 特殊区域
- 序列号
- 校验和
- 网络掩码
- 开销值
- 五类LSA:外部LSA
- 功能:用于在整个OSPF中传递外部路由(原本不属于OSPF域)
- 传播范围:在整个OSPF域中传输
- Link id :传递外部路由的网络号(一个网络范围)
- ADV router :产生该LSA的router-id(产生本LSA的ASBR的router-id ,一般为重发布的路由器)
- LSA数据包
- Type:类型External
- LS ID:
- Adv:
- 存活时间
- Len:字节
- 特殊区域
- 序列号
- 校验和
- 网络掩码
- 度量值:重发布到OSPF后度量值初始化为1(种子度量值),可以修改
- E type:类型,默认为类型2
- 类型1:传递过程中此条LSA的度量值是需要累加的
- 类型2:此条LSA的种子度量值在OSPF中传递时是不发生改变的
- Forwarding Address:转发地址
- 5类LSA FA地址规则:
- 默认不产生,若连接其他协议的接口运行了OSPF 协议并且网络类型为BMA,则FA地址为重发布之前路由的下一跳地址
- 若网络类型为P2P,则不会产生FA地址
- 5类LSA FA地址规则:
- Tag:标签
- Priority
- 四类LSA:summary,ASBR LSA
- 功能:除了产生5类LSA所在区域,用于通告ASBR位置;告诉其他路由器,产生五类LSA的路由器在哪里
- 传播范围:一个区域范围,想传输到下一个范围,由连接下一个范围的ABR重新产生新的四类LSA
- Link id:ASBR的router-id,重发布的路由器的router-id
- ADV router:默认ASBR所在区域的ABR的router-id,重发布路由器所在的区域与骨干区域连接的ABR产生
- 特性
- 在穿越不同区域时,有新的ABR重新产生(与3类LSA一致)
- LSA数据包
- Type:类型Sum-Asbr
- LS ID:
- Adv:
- 存活时间
- Len:字节
- 特殊区域
- 序列号
- 校验和
- 开销值
- 七类LSA:NSSA LSA
- 功能:在NSSA区域中,传递外部路由
- 传播范围:NSSA区域内
- Link id:传递路由网络号
- ADV router:产生该LSA的router-id
- 特性
- 默认为类型2 ,度量值为1 ;携带了FA地址(转发地址)
- LSA数据包
- Type:类型NSSA
- LS ID:0.0.0.0
- Adv:产生这条7类LSA缺省的ABR的router-id
- 存活时间
- Len:字节
- 特殊区域
- 序列号
- 校验和
- 网络掩码:0.0.0.0
- 开销值(种子度量值):1
- E type:类型,默认为类型2
- 类型1:传递过程中此条LSA的度量值是需要累加的
- 类型2:此条LSA的种子度量值在OSPF中传递时是不发生改变的
- 转发地址(FA地址):产生这条LSA的路由器的router-id
- 当5类或7类LSA中携带了FA地址,则计算路径开销值时计算的是当前路由器到达FA地址的开销值之和+种子度量值。(若FA地址不可达,则路由不能加表)
- 默认7类LSA 产生FA地址,5类LSA不产生的(7转5的5类LSA 携带FA地址)
- 7类LSA 产生规则:
- 默认产生的FA地址为产生该类LSA的ASBR最大的环回接口地址
- 若连接其他协议的接口也运行了OSPF协议,网络类型为BMA,则产生的7类LSA中FA地址为连接其他接口对应的下一跳地址
- 若网络类型为P2P,则FA地址依然为环回接口中IP地址最大的
OSPF LSA的限制
- 划分区域
- 特殊区域:在某一个区域需要限制LSA的数量(不能在骨干上做)
- stub 区域(末节区域)
- 出现这个区域的原因:
- 此区域的路由器性能弱,学习不了那么多的LSA
- stub区域控制LSA的方法:
- 由于5类LSA的数量最不可控,则过滤5类LSA,5类没有了,4类也没有存在的意义了,一起过滤
- stub区域边界ABR会自动产生3类缺省LSA,保证stub区域路由器与外网保持通信
- 特点:
- 不能出现4、5类LSA
- 特殊区域不能使用虚链路
- stub区域不能为骨干区域
- 若设置stub区域,存在该区域的所有路由器都必须设置
- 特殊区域标识E=1(外部路由位,是否支持5类LSA;1为支持,0为不支持,默认为1)
- ABR产生的3类缺省LSA的数据包
- Type:类型Sum-Net
- LS ID:0.0.0.0
- Adv:产生这条缺省的ABR的router-id
- 存活时间
- Len:字节
- 特殊区域
- 序列号
- 校验和
- 网络掩码:0.0.0.0
- 开销值(种子度量值):1
- 出现这个区域的原因:
- 完全的末节区域
- 出现这个区域的原因
- stub区域中有了3类LSA的缺省,所以其他区域的3类LSA也可以不需要
- 完全的末节区域控制LSA的方法
- 在stub区域基础上,由ABR过滤所有的3类LSA,只保留3类缺省LSA
- 出现这个区域的原因
- NSSA区域(非完全末节区域)
- 出现这个区域的原因
- 为了保护与外部其他协议相连的区域,不学习4、5类,但是还是要学习外部协议的路由
- NSSA区域控制LSA的方法
- 依旧过滤4、5类LSA
- 边界ABR自动产生7类缺省LSA,保证NSSA区域路由器与外网保持通信
- 7类LSA只能在本NSSA区域中转发,其他区域学习不到,与其他OSPF区域相连的ABR将7类LSA中转换为5类LSA,此5类LSA中携带FA地址,此时这个产生5类LSA的路由器为ASBR,同时这个路由器会给其他不与它直连的区域发4类LSA
- 其他区域,路由表查到的LSA中携带FA地址则看FA地址,此时不看4类LSA,若FA地址不可达,则路由不能加表;当过滤掉FA地址后,则查看4类LSA
- 特点:
- 不能出现4、5类LSA
- 特殊区域不能使用虚链路
- NSSA区域不能为骨干区域
- 若设置NSSA区域,存在该区域的所有路由器都必须设置
- 允许进行重发布(允许出现ASBR),产生7类LSA
- 特殊区域标识:E=0(外部路由位,是否支持5类LSA;1为支持,0为不支持,默认为1);N=1(NSSA外部路由位,是否支持7类LSA;1为支持,0为不支持,一般默认为0)
- 7类LSA只能转5类,5类转不了7类
- 为了防环,当一个路由器上既有NSSA也有正常区域,会产生不同类LSA,重发布给NSSA区域的7类LSA是不支持7转5的;优化则可以在连接正常与NSSA区域的边界路由器上关闭重发布7类LSA,直接走ASBR产生的7类LSA
- ABR产生的7类缺省LSA的数据包
- Type:类型NSSA
- LS ID:0.0.0.0
- Adv:产生这条7类LSA缺省的ABR的router-id
- 存活时间
- Len:字节
- 特殊区域
- 序列号
- 校验和
- 网络掩码:0.0.0.0
- 开销值(种子度量值):1
- E type:2
- 转发地址(FA地址):产生这条7类缺省LSA的路由器的router-id
- 出现这个区域的原因
- 完全的非完全的末节区域
- 完全的非完全的末节区域控制LSA的方法
- 在NSSA区域的基础上继续过滤3类LSA,产生3类缺省LSA的
- 特点:
- 当完全的非完全的末节区域里的路由器同时学习到了3类和7类缺省LSA,则优先3类,不管什么情况下3类都优于7类
- LSA汇总(只能针对纯路由的LSA汇总(3、5、7类))
- 3类LSA汇总
- 位置:产生该3类LSA 的路由器上
- 度量值:所有明细路由中metric最大的
- 5类LSA汇总
- 位置:产生该5类LSA的ASBR上
- 7类LSA汇总
- 位置:产生该7类LSA的ASBR上
- 7转5过程中汇总
- 位置:产生该7转5类LSA的ASBR上
- 3类LSA汇总
- LSA过滤(只能针对纯路由的LSA过滤)
- 针对3、5、7、7转5类LSA 进行过滤:在汇总的命令后面+ not-advertise(不通告)
- 完全的非完全的末节区域控制LSA的方法