ospf(开放最短路径优先协议)
分类
1.范围igp
2.设计原理,链路状态性协议。
3.无类,cidr。
ospf封装
ospf封装在ip报文中,协议号89.
组播地址224.0.0.5一般用,224.0.0.6.
邻居建立
周期发送hello包,
建立邻居表
传递lsa链路状态通告,
6中lsa。
存放进lsdb,链路状态数据库。存放一条条的lsa
通过spf算法算出最短路径,得出路由表。
树形结构,最短路径优先算法。
在ospf中每台路由器就作为树根,找到最短路径。cost值最小的。
三张表
neighbor table
topology table:lsdb,不仅仅包括路由,还包括拓扑信息。
routing table
链路状态和dv协议比较
1pv协议时传闻路由,ospf不光包括路由还包括拓扑描述出来。
2每台路由器都有一个整网的拓扑
3链路状态协议一定要分层,在ospf中分两大区域,骨干区域和非骨干区域。
ospf 区域
1减小了路由表的条目。域间汇总。
2本拓扑的变化最会影响本区域,不会影响其他区域。
3.lsa不止是路由信息,还包括拓扑信息。某些lsa仅仅只在一个区域泛红。
4.通过接口来划分区域
backbone routers骨干路由器,所有在骨干区域的路由器。区域之间路由器叫abrs路由器。
ospf邻居建立。
ospf建立邻居要分网络类型
邻居:仅仅只交互的hello包
邻接:交互了lsa,交互完了路由信息。
网络类型:
1.点到点的网络类型:串口。所有路由器都会变成邻接。
2.ma
bma:以太网,支持发送广播组播
nbma:帧中继。不支持广播
ma网络有一些只可能到邻居,有一些到邻接
dr:指定路由器
bdr:备份指定路由器
1.在ma网络首先先把dr选举出来。为了减少lsa的频率,所有的邻居都会和dr和bdr形成邻接关系full,交互lsa。dr再把统一的信息传递给我们。drothers之间只可能到neighbor。2way
2.路由器的更新只可能传递在两个邻接的路由器。一旦邻接形成,lsa会互相同步。
opsf算法
spf
1.在同一区域的路由器都有一致的lsdb
2.每台路由器以自己为根算出最短路径,cost值最短,把最好的路由放进路由表。
触发更新,周期性的泛红,30分钟泛红1次,老化时间60分钟。
lsa过程:
本台路由收到lsla,查看本地有没有,如果没有就会收,向源端发送一个ack,说明我收到了,然后把lsa泛红到其他邻居,然后计算路由表,如果本地已经有了,那么我就会判断这个lsa是更新的还是我的更新,通过序列号判断是更新的还是我的更新,每一个lsa发起的时候都有一个序列号,它的比较越大越好,如果我的序列号是较小的,发来的是较大的。我就会认为是更新的,我就会放进lsdb,如果序列号是一样的,说明我已经有了,直接就忽略了,如果发来的没有我的序列号大,说明我自己的更新,我会把我的lsa发送到源端一份。
序列号是一个4byte,16进制数,第一个序列号 0x80000001-0x7fffffff。棒棒糖式增加。
ospf报文:
1hello
2dbd数据库的描述:dbd是lsa的摘要。节约链路带宽。
3lsr链路状态请求
4lsu链路状态更新
5lsack链路状态确认 仅仅只做lsu的确认
ospf包头的内容
version v2 ipv4 v3 ipv6
type:1-5 hello,dbd,lsr,lsu,lsack
packet length 整个包的长度
router id
选择方式:
1.手工指定(任意指定,确保唯一性)
2.先选环回口最大的ip地址
3.物理接口最大的ip地址
aera id 区域id
check-sum确保数据完整性
authen type 0 1 2 无,名,密。
authen-tication 密钥填写字段
data 看type是hello包还是dbd、lsr、lsu、lsack数据。
hello包内容
router id
hello and dead intervals *
neighbors
area id *(直连不能放入不同区域)
router priority
dr ip address
bdr ip address
authentication password *
stub area flag *(stub区域标识一致)
hello包10s 死亡时间4倍40s
hello包30s 死亡时间4倍120s
建立邻居过程
在没运行ospf就是down状态,当路由器的接口运行ospf就会主动发送hello包到224.0.0.5。然后进入init状态。当另一台路由器收到hello包就会回应。当我收到一个说看见我的hello包就会进入two-way状态。(drother只到two-way状态结束)
exstart状态时dbd交互,那个dbd选择出一个主从关系,比较route id,高的是主路由器,低的是从路由器,
dbd报文字段
第一个字段i字段,第二个字段m字段,第三字段m/s字段
init more master/slave
exchange状态,互相交换dbd完成dbd交互。
loading状态交换lsr和lsu
最后进入full状态。
总结:
init:发送hello包
2way:收到自己的rid
如果是ptp直接进入exstat状态。
如果是ma网络进入dr和bdr选择。通过hello包选举。
exstat:通过交互第一次dbd报文选择主从关系,谁先发dbd
exchange:dbd交互。
loading:交互lsr和lsu交互lsack确认。
full:完成。
dbd包中的mtu不一致邻居也建立不起来。
cost=10^8/bw(单位bit)
在ospf中如果是换回口被通告进ospf中,不管环回口配置多少位掩码,邻居收到的都是32位路由。
还原成配置多少位,邻居收到多少位。
int lo0
ip ospf network point-to-point(更改网络类型)
修改hello包时间
ip ospf hello-interval 30
ip ospf dead-interval 120
两边hello包不一致邻居为down。
dr和bdr选举:
在ma网络中,dr和bdr监听,224.0.0.6.drother监听224.0.0.5,一旦选出dr和bdr,drother就会发送到224.0.0.6.点到点所有人都发到224.0.0.5
dr选举方式:
1.先看较大的优先级(默认是1)
2.较大的route-id
更改ospf接口优先级
int e0
ip ospf priority 2(默认是1)
<0-255> 0代表drother
dr特点:
1.dr不抢占。除非网络发生变化
2.bdr也不会抢占。
3.当dr down,bdr直接升为dr,然后重新选举bdr.
4.dr/bdr/drother是接口概念
5.不同网段分别选dr/bdr/drother