是ieee公有的动态路由协议协议,市面上路由器基本上都支持,由ietf推荐,并且使用最广的IGP动态路由协议。在一个ospf进程内可以分出主干区域和多个非主干区域,有效的降低路由协议本身大量的广播对网络造成负担,并具有很好的可扩展性。它的优点甚多 具体的我就不说了。大家可以百度一下。
ospf有三张表:
邻居表:列出所有和本路由器直连的ospf邻居
链路状态数据库:列出所有从自己邻居那里得到的lsa,并且在同一个区域的路由器,拥有同样的链路状态数据库
路由表:在链路状态数据库中,通过spf算法得出的路由再添加到路由表中
从时间角度上看先有邻居表 再有链路状态数据库 最后添加进路由表
从空间角度上看邻居表在最底下,链路状态数据库建立在邻居表之上,ospf的路由表又建立在链路状态数据库上。
邻居表:
邻居表是由hello包建立和维护
hello包包含以下信息:
1.路由id:在ospf进程中的本路由器标识
(选举顺序:手工设-loopback最大ip-活动物理接口最大ip)
2.邻居
*3.hello包时间间隔:广播链路10秒,40秒没收到就挂掉。NBMA是30秒,120秒没收到就挂掉
*4.区域id
5.路由器优先级
6.DR的ip地址
7.BDR的ip地址
*8.认证密码
*9.stub区域标记
*注意:只有3489项匹配才能够建立邻接关系,这个很重要
那么邻接关系是怎么建立的呢?
分以下几个步骤:
1.down (路由器A从运行ospf的接口以组播地址224.0.0.5发送hello包)
2.init (所有收到从路由器A发送来hello包的路由器都把A添加到邻居表中)
3.two way (所有收到A发来hello包的路由器都向其回发一个hello包,A收到这些包以后会检查这些包,如果包中含有自己的id,那么把那个路由器加到自己里来)
如果是非广播链路就直接full了,广播链路需要在此同时选出DR/BDR
4.exstart (DR/BDR与其他路由器建立相邻关系)
5.exchange (由DR向其他路由器发送数据库描述数据包DBD)
6.loading (发送链路状态请求包的过程)
7.full (区域内所有邻居都同步了,每个链路都有相同的链路状态数据库了,可以转发数据了)
为什么说邻居表属于最底层?
不光因为要先建立邻居才能有链路状态数据库。而且邻居的建立是和物理网络链路是密切相关的
在ospf看来物理网络链路类型分三种:
1 点到点链路:如HDLC和PPP的串行链路,它们不支持广播和多播,它要求必须是full状态,所以也不需要DR/BDR
2 广播链路:如以太网,令牌环,它们支持广播和多播,为了集中管理减少广播,需要选出DR/BDR
3 非广播多路访问:如帧中继和ATM这些默认不传输广播流量但支持多点的广域网链路,这也需要DR/BDR(它默认不支持广播你可以手动设置成广播嘛 或者设成点到点链路那种)
OSPF的区域
ospf一般分为两个区域:主干区域(area 0)和非主干区域
每个非主干区域都必须至少有一个路由器连接至主干区域,这台路由器叫ABR(区域边界路由器)
连接并重分发至其他ospf进程或其他路由协议的路由器叫做ASBR(自治系统边界路由器)
划分多区域有两个好处:一是减少每个区域的路由条目,进而减少设备内存消耗提高转发效率
二可以利用ABR或ASBR的路由汇总,防止抖动
非主干区域又可以分成几种类型:
1.stub区域(末梢区域):只有域内/域间路由没有域外的(阻止lsa 4/5)
2.totally stub(完全末梢区域):只有域内路由,然后一条默认路由从ABR出去(阻止lsa 3/4/5)
3.NSSA(not-so-stub area):虽然是完全末梢,但可以允许外部路由进来
另外,如果违反规定,非主干区域未直连至主干区域,可以用虚链路作为桥接进主干
链路状态数据库(LSDB)
LSDB起着承上起下的作用,它收集区域内每一个路由器收到的邻居信息,生成链路状态数据库,利用spf算法,算出最优路径,生成路由条目。概括的说LSDB在ospf中起着“地图”的作用
LSDB是由各种LSA组成,下面列出常见的六个LSA类型:
1.router lsa
每一个路由器都会产生一条关于自身的router lsa,它包含本路由器直连链路信息列表并对ip前缀进行鉴别
router lsa只在区域内泛洪,不会穿越ABR
2.network lsa
network lsa由DR产生,包含广播网络和NBMA网络信息如:ip,掩码,DRID
network lsa只在区域内泛洪,不会穿越ABR
3.summary lsa
summary lsa由ABR产生,包含了区域内的LSA汇总,由router lsa+network lsa得出。包括网络号,掩码,metric(不包括接口)
在整个运行本ospf进程中的路由域中泛洪
4.asbr-summary lsa
asbr-summary lsa由ABR产生,至包含了ASBR的route-id,目的只是告诉大家ASBR的位置
在整个运行本ospf进程中的路由域中泛洪
5.external lsa
external lsa由ASBR产生,包含网络号,掩码,metric
在整个运行本ospf进程中的路由域中泛洪
7.nssa lsa
NSSA 就是运行外部路由进入stub,
nssa lsa只在NSSA区域内传播,然后在ABR上被转换成external lsa再向别的区域泛洪