当前位置:文档之家› OSPF学习笔记

OSPF学习笔记

OSPF(开放式最短路径优先)1.OSPF基础概念1.1 Router-id:每一台OSPF路由器只有一个Router-ID,Router-ID使用IP地址的形式来表示,确定Router-ID的方法为:⏹ 1 .手工指定Router-ID。

⏹ 2 .路由器上活动Loopback接口中IP地址最大的,也就是数字最大的,如C类地址优先于B类地址,一个非活动的接口的IP地址是不能被选为Router-ID的。

⏹ 3 .如果没有活动的Loopback接口,则选择活动物理接口IP地址最大的。

Router-ID只在OSPF启动时计算,或者重置OSPF进程后计算,言外之意,假如已经建立了邻居关系再配置router-id,是无效的(抢占原则,也是为了稳定OSPF域),除非重启进程(clear ip ospf process)方能生效。

如下为router-id的验证实验配置好IP地址宣告进OSPF域内。

可以查看OSPF邻居情况。

由于R2的物理接口地址大于R1,所以R2成为了DR。

然后尝试在R1,R2上各开启一个loopback口,R1的大于R2,观察结果可见,当R1loopback口的IP大于R2时,R1就会成为DR最后尝试修改router-id来控制选举,在loopback口地址不修改的情况下进行,R2的router-id大于R1的。

可见,R2因为router-id的缘故又成为了DR。

使用loopback作为router-id有2个好处:●Loopback口比其他任何物理接口更稳定,一旦路由器启动成功,这个环回口就立即生效直至被关闭或者路由器断电。

分配和识别路由器router-id时有更多的回旋余地。

1.2 COST值OSPF使用接口的带宽来计算Metric,例如一个10 Mbit/s的接口,计算Coast 的方法为:将10 Mbit换算成bit,为10 000 000 bit,然后用10000 0000除以该带宽,结果为 10000 0000/10 000 000 bit = 10,所以一个10 Mbit/s的接口,OSPF认为该接口的Metric值为10,需要注意的是,计算中,带宽的单位取bit/s,而不是Kbit/s,例如一个100 Mbit/s的接口,Cost 值为 10000 0000 /100 000 000=1,因为Cost值必须为整数,所以即使是一个1000 Mbit/s(1GBbit/s)的接口,Cost 值和100Mbit/s一样,为1。

如果路由器要经过两个接口才能到达目标网络,那么很显然,两个接口的Cost值要累加起来,才算是到达目标网络的Metric值,所以OSPF 路由器计算到达目标网络的Metric值,必须将沿途中所有接口的Cost值累加起来,在累加时,同EIGRP一样,只计算出接口,不计算进接口。

(路由的出接口,也就是数据的入接口)例如路由器B,来自192.168.100.0/24的路由条目COST值为1+64=65。

OSPF计算的Cost,同样是和接口带宽成反比,带宽越高,Cost值越小。

到达目标相同Cost值的路径,可以执行负载均衡,最多6条链路同时执行负载均衡。

1.3 DR BDR的选举当一台路由器加入到OSPF进程中时,它将检查是否已经存在DR和BDR,假如存在,则接受设定成为一台DROTHER,否则,就参与选举,选出具有最高优先级别的路由器作为DR,其次的作为BDR。

PS:只有在多路访问网络中存在DR和BDR的选举。

选举优先级如下:比较路由器优先级,若没有设置优先级,则比较router-id,若无router-id则比较loopback接口地址大小,最后比较路由器所配置的最大的的物理地址大小。

有配置优先级的情况下,自动忽略剩下的三种比较方式。

当两台需要建立邻居关系的路由器同时把优先级设置为0,则永远无法建立起邻居。

将会永远停留在INIT这个阶段。

2.OSPF邻居关系建立2.1 OSPF邻居状态⏹DOWN路由器刚刚启动OSPF进程,还没有从任何路由器收到任何数据包,Hello包也没有收到,在此进程,可以向外发送Hello包,以试图发现邻居。

⏹ATTEMPT因为OSPF使用组播发送数据包,如使用组播发送Hello包,如果Hello包不能发出去被其它路由器收到,就不能和其它路由器建立OSPF邻居;在一些组播不能发送的网络中,例如帧中继这样的非广播网络环境,组播不能够传递,在这种情况下,就需要指定OSPF使用单播向邻居发送Hello包,以此试图和指定的邻居建立OSPF邻居关系,在此状态下,OSPF称为Attempt状态。

⏹INIT只是OSPF路由器一方收到了另一方的Hello,但并没有双方都交换Hello,也就是对方的Hello中还没有将自己列为邻居。

⏹2-WAY双方都已经交换了Hello信息,并且从Hello中看到对方已经将自己列为邻居,此状态,就表示OSPF邻居关系已经建立,并且如果是需要选举DR和BDR的话,也已经选举出来,但OSPF邻居之间并不一定就会交换LSA,如果不需要交换LSA,则永远停留在此状态,如果需要形成邻接并互相交换LSA,则状态继续往下进行。

(比如Drother与Drother之间将永远停留在Two-way状态,因为Drother与Drother之间不需要交换LSA。

)⏹EXSTART因为在OSPF邻居之间交换完整的LSA之前,会先发送Database Description Packets (DBD),Link-state Request(LSR)等数据包,邻居之间是谁先发,谁后发,需要确定顺序,在Exstart状态,就是确定邻居之间的主从关系(Master—Slave关系),Router-ID 数字大的为主路由器,另一端为从路由器,由主路由器先向从路由器发送信息。

在选举DR 与BDR的网络环境中,并不一定DR就是主路由器,BDR就是从路由器,因为DR和BDR可以通过调整接口优先级来控制,所以DR也许是因为优先级比BDR高,而Router-ID并不比BDR 高。

在任何网络环境下,OSPF在交换LSA之前,都需要确定主从关系。

⏹EXCHANGE就是交换Database Description Packets (DBD)的过程,DBD只是LSA的简单描述,只包含LSA 的一些头部信息,收到DBD 的路由器会和自己的链路状态数据库作对比,确定需要哪些LSA 的完整信息,就会发送LSR 请求给邻居 ⏹ LOADING邻居根据收到的LSR (Link-State Request ),向对方回复Link-state update (LSU )。

⏹ FULL等到OSPF 都收到了邻居回复的所有Link-state update (LSU ),那么此时的数据库状态就变成了收敛状态,此状态就是Full 状态,但此时只是数据库已经同步,但路由表却还在计算当中。

3.OSPF 的几种链路类型OSPF 作为一种链路状态路由协议,对于2层链路状态的变化,OSPF 会采取不同的行为。

常见的几种OSPF 链路类型如下⏹ OSPF 的网络类型决定于二层链路类型,但是也支持手工修改(比如帧中继情况下增加broadcast 关键字使链路支持广播)⏹ OSPF 邻居建立并不要求双方网络类型一致,但是,由于网络类型不一致也许会导致邻居建立成功之后数据库的链路状态信息无法加载进路由表。

3.1 Point-To-Point Link⏹ 如果二层的协议为PPP 、HDLC 等,则OSPF 网络类型为P2P ⏹ 如果帧中继子接口类型为P2P 的,则OSPF 网络类型也为P2P ⏹ 不选举DR 、BDR⏹ 使用组播地址224.0.0.5⏹ OSPF 能够根据二层封装自动检测到P2P 网络类型网络类型 HELLO 时间 DR/BDR 选举 邻居建立方式 点到点(Point-to-Point ) 10s 否 自动 点到多点(Point-to-Multipoint ) 30s 否 自动 广播(Broadcast ) 10s 是 自动 非广播(Non-Broadcast )30s是 手动 点到多点非广播(Point-To-Multipoint Non-Broadcast ) 30s 否手动在P2P类型的网络中,建立邻居的路由器两端IP地址掩码长度不一,邻居一样可以建立起来由于建立邻居的两个IP地址前缀长度不同,会多出来一条对端IP地址所属网段的路由。

R1的路由表R2的路由表3.2 Transit Link拥有2台和两台以上OSPF进程并建立邻居关系的路由器组成的链路,称为Transit Link。

从左上往右下依次为R1-R5,R1借口优先级设置为250,R2借口优先级设置为200,其余路由器保持默认1。

在R1上查看OSPF邻居状态在R2上查看OSPF邻居状态在广播多路访问网络中,需要选举DR,BDR。

3.3 Virtual Link4.OSPF数据包HELLO 建立和维护OSPF邻居关系,每10s发送一次hello分组。

DBD 描述路由器链路状态数据库的内容LSR 链路状态请求,向OSPF邻居请求链路状态信息LSU 向邻居发布链路状态更新信息(往往包含多条LSA)LSACK 确认信息4.1 HELLO包HELLO包报文格式4.2 DBD报文此报文为两台OSPF路由器建立邻居关系的第一个DBD报文数据库描述数据包里有3个标记为用于管理邻接关系的建立⏹I位:又称初始位(Init bit)只有第一个数据库描述数据包的I位会被置为1,后续的都是0。

⏹M位:又称后继位(More bit)表明不是最后一个数据库描述数据包时,M位被置为1。

否则置0。

⏹MS位:又称为主从位当DBD数据包始发于一个主路由器时,此位置1。

但是当两台路由器刚建立邻居关系时,为了抢占选举Master,双方发出的第一个DBD包中,此位都会置1。

下图是最后一个DBD报文,可见,M位置0,说明后续再无DBD报文发送,而MS位置0说明发送此DBD报文的是一台Slave路由器而非Master路由器。

4.3 LSR报文4.4 LSU报文链路状态ID⏹V位当置为1时,说明此路由器是一条或者多条具有完全邻接关系的虚链路的断点。

⏹E位当始发路由器时一台ASBR时,此位置1⏹B位当始发路由器时一台ABR时,此位置14.5 LSA格式4.5.1 类型1 路由器LSA(Router LSA)⏹每个路由器针对它所在的区域产生LSA1,描述区域内部与路由器直连的链路的信息(包括链路类型,Cost等)⏹1类LSA只允许在本区域内洪泛,不允许跨越ABR⏹LSA中会标识路由器是否是ABR(B比特置位),ASBR(E比特置位)或者是Virtual-link(V比特置位)的端点的身份信息4.5.2 类型2 网络LSA(Network LSA)⏹描述TransNet(包括Broadcast和NBMA网络)网络信息⏹由DR生成,描述其在该网络上连接的所有路由器以及网段掩码信息,以及这个MA所属的路由器⏹LSA类型2只在本区域Area内洪泛,不允许跨越ABR⏹Network LSA ID是DR进行宣告的那个接口的IP地址⏹Network LSA 中没有COST字段4.5.3 类型3 网络汇总LSA(Network Summary LSA)⏹由ABR生成,实际上就是将区域内部的Type1 Type2的LSA信息收集起来以路由子网的形式扩散出去⏹Type 3 的链路状态ID是目的网络地址⏹如果—台ABR路由器在与它本身相连的区域内有多条路由可以到达目的地,那么它将只会始发单一的一条网络汇总LSA到骨干区域,而且这条网络汇总LSA是上述多条路由中代价最低的4.5.4 类型4 ASBR汇总LSA (ASBR Summary LSA)⏹ASBR Summary LSA由ABR生成,用于描述ABR能够到达的ASBR它的链路状态ID为目的ASBR的RID4.5.5 类型5 自治系统外LSA (AS External LSA)⏹Autonomous System External LSA由ASBR生成⏹用于描述OSPF自治域系统外的目标网段信息⏹链路状态ID是目的地址的IP网络号。

相关主题