OSPF 开放式最短路径优先协议。荷兰科学家发明的。支持触发更新 等价负载均衡
先了解网络连接,基于对网络连接的理解在来计算,以我出发去往每个非直连网络的路由。

定位:igp ls 基于拓扑的协议。支持路由器数量超过100台。但is is所支持的网络更大,优化更好,更稳定。

每台路由器都会产生1类lsa,通过泛洪交互lsaf都能收到区域内的其他路由器所产生的lsa。他就能知道,他所以区域内有几台路由器存在**,路由器之间彼此如何连接,接口,接口类型。**

度量值 控制层面路由流向的入接口度量值累加

在ls没有自动汇总的说法,只要运行了所产生的就是明系路由

dr必须有 但bdr是可有可无

优先级0代表没有资格参选

路由器之间传lsa。 layer 2|ipv4|ospf|fcs 89 224.0.0.5 224.0.0.6(只有在mq网络中,DR,和BDR会监听这个地址)

ospf如何宣告_路由算法


ospf的所有类型报文都做了一个高qos的标记设计,qos在ipv4报头中叫服务类别,用来做流量上色,将不同流量标上不同值,路由器收到看是什么类型,来判断延迟转发还是优先转发。

比较经典的用法就是只使用前3比特,ip优先级
默认发送时候就是6。保证当网络拥塞了,ospf报文的排队时间的最短的。
所以在用acl抓ospf报文,可以抓组播组地址,协议号,也可以抓ip优先级为6的。

和eigrp一样基于ip无连接来转发数据,所以设计了传输可靠性的参数。 定义了确认报文,在给邻居发送重要传输报文邻居是要给确认的。分为 显示确认,隐式确认。 也能重传

报文:

hello :建邻居维护邻居关系
DBD 数据库描述报文 一条lsa分为两个部分,一个报头一个载荷,发更新之前先交互DBD了解双方的lsa。只交互彼此没有的lsa。 里面有lsa报头。通过序列号,拿相同的重要报文做确认又回应。隐式。
LSR
LSU
LSack

邻居 只交互过hello,5种报文都交互过并且lsdb 已经同步才是邻接关系。邻接才能发送lsa.

hello 发送周期。基于网络类型。10s ,30。 周期hello维护邻居,4倍hello才down.又需要周期发送hello维护邻居状态,又需要周期性的发送LSA来判断那些非直连路由器的lsa是否有效.30分钟 一次。 老化计时器 一小时。交互彼此没有的lsa。这样的效率最高的。

lsa以泛洪的方式告诉该区域内的其它路由器。真正交互 lsa只交互彼此没有的。接收到lsa后会加入 lsdb.链路状态数据库。

在ospf中如何判断网络是否收敛 lsbd同步 代表收敛成功。

缺陷: 1.处一同一区域大家了解整体网络的连接,虽然绝对避免环路,但当网络不稳定的时候,路由器的消耗很大。2.做不了路由汇总,导致有大家量路由存在,但没办法压缩路由表空间,维护路由表消耗一定内定,并且转发数据时,增加查表延迟。

ospf如何宣告_ospf如何宣告_02


使用层次化部署 分为两级 area0 骨干传输指控制层面lsa的传输。

abr来传递彼此的区域间信息。区域边界路由。可以汇总 减少条目数量并且汇总路由 条目翻动,不会影响到其它区域。区域间汇总。 区域间是基于传闻的方式来学习路由的。所以要将区域连接设计成星型,ospf通过接口划分 区域。

ABR区域边界路由器,真ABR接

真abr需要遵循三类lsa的防环机制,而伪abr不需要。

ASBR:自制系统边界路由器。做重分发。

建邻居分为两类:ma网络和ppp.
ppp网络中只要到达邻居就能把full,接口网络类型决定,可以手工修改。ma:会优化邻居关系建立机制,在路由器中选一个DR,比接口优先级取值0-255,默认是1。在选一个bdr ma网络中都跟DR和DBR建邻居。发送lsa更新时,用.6组播地址接收。在由DR通过.5的组播地址将lsa发送给这个网络中的所有其他人。接口广播类型广播选DR。

网络初始化,最先到达two-way的路由器宣布 选举开始。时间默认是hello的4倍。通过hello包里pc接口优先级,和rid. 不在可抢占。df挂了,一定 是BDR来继承。接口优秀级0没有资格参加选举,一定是DRothers。

真机:如果接口提前宣告进去了,在到邻居路由器宣告。不会有选举。 先宣告的一方会成为bdr。

DR有且只有一个而在帧中继网络环境中,DR只有一个由hub来做。

选举接口的ip必须在同一子网段.如果不在同一子网段,不会选在一起去。

RID手工指定优先级最高,没有通常将环回口最大ip地址成为rid。没有就最大的物理接口,接口无须参加 ospf进程,但必须up。最好是手工指定更稳定,如果拿接口ip做rid,当接口挂了,会影响网络的一系列策略的部署。rid只是一个名字。

了解网络连接之后 使用spf算法。 使用开销 代宽来计算。100m:1 10M:10 1:100 10的8次方/带宽 以比特为单位。

度量值:控制层面路由流向出接口度量值累加。

v1:实验室 。版本2:ipv4 3:ipv6。 authentication-type :0 不认 1明文 2密文。

两台路由器建邻居 版本要一致 router id不能冲突,直连属于同一区域。

当你将一个非骨干区域设特殊区域,hello包的flag字段会发生改变

flag 字段 E N 两台路由器交互hello flag字段要匹配。

非骨干 1 0
stub 0 0
nass 0 1

ospf如何宣告_网络协议_03

一个接口默认通过一个接口发送hello这个neighbor是空的。neighbor描述有收到过哪些路由器给你发送hello。

hello的掩码要一致,hello时间,options的E,位 N位要一致。 只能到达two-way。

在交互DBD时候,包含接口的mtu,有的厂商路由器默认开启mtu一致性检测.保证mtu一致。才能建邻接。 思科路由器默认开始mtu一致性检测。华为没开启。

邻接建立的八级:
down
刚启用ospf

attempt
不是100%出现 , 接口网络类型是NBMA或ppp nbma 类型。这种接口是不能直接发送hello包的 必须neighbor才能单播发送。没响应之前 就是。

initial
收到hello ,neighbor字段中没有包含你的路由器id ,单身邻居关系 。单向

two-way
邻居 neighbor字段中包含你的R id双向。
ppp直接full ma选举dr,bdr

Exstart 交互DBD ,first dbd 不包含任何lsa报头信息。 为了确定我们之间的隐式确认由谁做master。 master发送第一个DBD由slave用相同的seq又确定又回应。 RID大的做。 交互first DBD:包含rid mtu lsa空的。first dbd 包含三个比特 I 初始位 代表第一个DBD 是 1 不是 0 M 后续还有更多的DBD 有 1 没有0 M/S位 1做master 0 做slave.。 mtu一致情检测 不匹配就卡在这个状态 。

ospf如何宣告_ospf如何宣告_04

exchange 交互DBD, master先发 slave拿相同序列号的dbd又确认又回应,一来一回。exchange结束后双方都知道对方有哪些lsa了。

ospf如何宣告_网络_05


loading 交互lsr lsu lsack

full adfacency 邻接 传输列表传完 就到 full

ospf如何宣告_网络_06

lsa 防环机制, 建好之后邻接以泛洪的方式传递lsa 。所以设计了防环机制:新的lsa 接入 并 泛洪 。 是相同的 看哪个新 接收的新 更新本地并泛洪。一样新丢弃 。旧 ,丢弃并反向同步 。

看序列号。使用线性空间。 到最大超时,重新获得lsa。最小0x80000001到0x7FFFFFF。一样看lsa的老化计时器,在比报头校验核。