引入:
假如在一个大型网络中,OSPF如果没有分层,会有以下的问题产生:
1、每一个路由器会接收到太多的LSA
2、网络抖动,会经常进行路由的计算
3、LSDB/路由表太大,而路由器的内存是有限的。
划分区域(分层)优点:
1、路由器只会接收本区域的LSA;
2、区域范围有限,网络抖动频率降低,减少LSA触发更新和SPF计算次数;
3、LSDB/路由表规模减小,节约路由器内存。
OSPF路由器的类型:
1、内部路由器(IR)–在一个普通区域内的路由器
2、核心路由器–在area 0区域内的路由器
3、ABR区域边界路由器–连接两个或多个不同区域的路由器
4、ASBR自治系统边界路由器–连接OSPF域到另一个自治系统的路由器
OSPF拓扑、路由和汇聚
1、拓扑表(LSDB):LSA
—1类LSA(路由器LSA):每台路由器都创建一条1类LSA,用于向自己所在区域描述自己(接口IP、末梢网段、R-ID)。
—2类LSA(网络LSA):每个中转网络拥有一个2类LSA,由网络中DR创建;描述子网及连接到子网的路由器接口。
—3类LSA(网络汇总LSA):由ABR创建,描述一个区域的1类和2类LSA包含的子网,被通告到另一个区域。它指明了始发区域的链路(网段)和开销,但不包含拓扑数据(LSA3宣告的是路由,而不是链路状态)。
—4类LSA(ASBR汇总LSA):通告前往ASBR的主机路由;
—5类LSA(AS外部LSA):用于描述注入到OSPF中的外部路由;
—*6类LSA(组成员资格LSA):为MOSPF定义的,思科IOS不支持它;
—7类LSA(NSSA外部LSA):类似于5类LSA,只是由NSSA区域内的ASBR创建。
1.1 1类LSA(router LSA)
—发布者:每台路由器;
—范围:区域内;
—内容:向区域描述自己;
(1)Link-id–发布路由器的R-ID;
(2)对于没有选举DR的接口,指出接口的子网号/掩码和OSPF开销(OSPF将这类子网称为末节网络)
(3)对于选举DR的接口,指出DR的IP地址以及连接到中转网络的链路(OSPF将需要选举DR的子网称为中转网络);
(4)对于没有选举DR但通过它可连接到一个邻居的接口,指出该邻居的RID和自己的接口IP。
show ip ospf database —查看OSPF的LSDB(按LSID排序,每个LSA占一行)
注:LSID(链路状态标识符)–1类LSA的LSID由路由器的RID来充当。
show ip ospf database router [x.x.x.x] —查看1类LSA
1.2 2类LSA(network LSA)
—发布者:DR路由器;
—传递范围:区域内;
—内容:描述子网及连接到该子网的路由器(RID);
注:2类LSA表示中转网络(伪节点,由DR运行和控制);
1类LSA仅仅列出到中转网络的连接以及DR的RID.
show ip ospf database network x.x.x.x(DR的IP)—查看2类LSA
注:1类LSA引用了中转网络(主要描述自己怎样连到中转网络);
2类LSA列出了连接到中转网络的所有路由器(RID);
这可以使SPF能够依据此2种LSA确定网络的拓扑。
1.3 3类LSA(Summary link LSA)
—发布者:ABR(区域边界路由器)
—传递范围:OSPF网络(除特殊区域:绝对末节区域和绝对次末节区域)、除本区域
—内容:将一个区域的子网通告给其他区域(一个子网创建一条3类LSA)
show ip ospf database summary x.x.x.x(网段)
注:
一、可以将普通区域的内部路由(3类LSA)传递到骨干区域,也可以将骨干区域的路由传递到普通区域。
二、不可以将普通区域的路由直接传递到另一个普通区域
三、普通区域通过骨干区域学习到的区域间路由不可以传递到其它区域
四、骨干区域从一个普通区域学习到的路由不可以直接传回到这个普通区域(OSPF区域间水平分割)
1.4 4类LSA(Summary ASB Link States)
—把ASBR的Router-id传播到其他区域,让其他区域的路由器得知ASBR的位置。
—由ABR产生并发出,穿越一个ABR,其ADV Router就会变成此ABR的Router-id.
show ip ospsf database asbr-summary
Link ID: ASBR的RID
ADV router: ABR的router ID(经过一个ABR,就会改为这个ABR的router ID)
注:在ASBR直连的区域内,不会产生4类的LSA,因为ASBR会发出一类的LSA,其中会指明自已是ASBR。
1.5 5类LSA(Type-5 AS External Link States)
—域外路由,不属于某个区域。
—ASBR产生,泛洪到整个AS。不会改变ADV Router。
show ip ospf database external
Link ID: 路由(网络号)
ADV router: ASBR的router ID
1.6 7类LSA(Type-7 AS External Link States)
—特殊的域外路由,只存在于NSSA区域中
show ip ospf database nssa-external
Link ID: 路由(网络号)
ADV router: ASBR的router ID (只在NSSA区域中)
1.4 OSPF LSA小结
LSA类型 表示什么 LSID(link-ID) ADV Router(创建者/宣告者)
1 一台路由器 R-ID 每台路由器
2 包含DR的子网 DR的IP DR
3 其他区域的子网 子网号 ABR
4 ASBR位置 ASBR的RID 传递LSA4的ABR
5 域外路由 路由(网络号) ASBR的RID
7 域外路由 路由(网络号) ASBR的RID(NSSA区域)
2、数据库交换过程
2.1 OSPF消息和邻居状态
—OSPF消息(报文)
1、Hello:用于邻居发现(在广播或NBMA链路上选举DR/BDR);维护邻居关系(监控邻居是否正常);
2、数据库描述(DD/DBD):LSA的摘要信息(LSA头部);
3、链路状态请求(LSR):LSR包含多个LSID,请求对方发送完整LSA;
4、链路状态更新(LSU):响应LSR请求;
5、链路状态确认(LSAck):用于确认LSU已收到。
—OSPF邻居状态
1、Down:在大于Dead-time的时间内没有收到邻居的Hello消息;
2、Attempt:手工指定邻居(neighbor)时,在发送Hello前,但收到邻居的Hello消息后;
3、初始化状态(Init):收到邻居Hello,但邻居报文里的邻居表中没有自己的RID;
4、双向状态(2way):收到邻居Hello,且邻居的邻居表中有自己的RID;
5、预启动状态(Exstart):协商DD报文序列号,以及用于DD分组的主/从关系;
6、交换状态(Exchange):交换DD分组(LSA摘要信息);
7、加载状态(Loading):路由器发送LSR/LSU/LSAck分组以交换完整LSA;
8、完全邻接状态(Full):双方LSDB同步。
2.2 交换过程(没有DR)
RT1(1.1.1.1)-----------------------RT2(2.2.2.2)
down down
Hello(邻居表:空;RID:1.1.1.1)
------------------------> init
Hello(邻居表:1.1.1.1;RID:2.2.2.2)
2way <------------------------
Hello(邻居表:2.2.2.2;RID:1.1.1.1)
-------------------------> 2way
DD(seq=x,Flag=1,1,1)
Exstart ---------------------------->
注:Init--置1表示为第一个报文
More--置1表示还有后续报文
Master--置1表示为主路由器(RID以大为优)
DD(seq=y,Flag=1,1,1)
<----------------------------Exstart
DD(seq=y,Flag=0,1,0)
Exchange ---------------------------->
DD(seq=y+1,Flag=0,1,1;LSA头部)
<---------------------------- Exchange
DD(seq=y+1,Flag=0,1,0;LSA头部)
---------------------------->
......
注:从路由器DD消息的LSA头部这一部分是主路由器发送过来(用以确认收到主路由器发送过来的LSA摘要);还有一部分是自己的LSA摘要信息,以便主路由器知晓自己没有的LSA。
LSR/LSU/LSAck
Loading <--------------------------> Loading
......
最后,当自己的LSR列表为空列表,则状态为Full。
注:邻居状态是本端对邻居的状态(不是自己状态),用于表示邻居与自己的关系。
2.3 有DR的交换过程:
DRother只与DR/BDR交互数据库,然后DR与子网中的其他路由器交换新的/修改后的LSA。
注:DR/BDR侦听224.0.0.6;DRother侦听224.0.0.5;
DR负责子网内LSA更新,BDR只负责侦听。
2.4 LSA泛洪到整个区域(1类和2类LSA)
邻居之间交换LSA信息后,再分别发送给自己其他邻居,直到整个区域的LSA都同步;
邻居根据LSA的序列号判断是否对方更新/自己没有,则LSR请求更新—先通过DD报文通告,然后邻居再请求学习,可以避免LSA重复发送。
2.5 定期泛洪
OSPF每隔30min将LSA泛洪一次,同时序列号加1;
show ip ospf database显示其LSA age不超过1800s;
当路由器意识到需要将一个LSA从LSDB中删除时,将其LSA age设置为Maxage(3600s)并且将其泛洪,其他路由器收到LSA age为3600s时,也会将该LSA从LSDB中删除。
3、计算路由并选择最佳
3.1 区域内计算并选择最佳
第一步:根据1类LSA指出的末节网络以及2类LSA找出区域内的中继网络;根据1类和2类LSA形成拓扑表。
第二步:运行SPF找出当前路由器到每个子网的所有可行路由;
第三步:计算每条路由中所有出站接口的OSPF接口开销,并将总开销最低的路由做为最佳路由。
3.2 计算区域间路由的开销
1.ABR创建3类LSA,内容如下:
—LSA提供的子网号/掩码;
—ABR前往子网的最佳路由的开销;
—ABR的RID.
2.根据当前3类LSA,当前路由器:
第一步:计算本端到ABR的开销;
第二步:加上3类LSA中列出的开销值(ABR到目标子网的开销)。
3.3 同时有区域内路由和区域间路由的特殊规则:
—区域内总是优于区域间路由,无论度量值如何;
—当3类LSA和1类/2类LSA的目标网络为同子网时,优先考虑1类/2类LSA,忽略3类LSA。
3.4 度量值和SPF计算
1类和2类LSA变化会导致SPF重新计算(网络抖动);3类LSA变化则不会。
show ip ospf | begin area xx —显示SPF运算次数和最后一次运算时间
度量值=参考带宽/接口带宽
注:参考带宽默认为100M,如100/10=10,100/1.544=64(向下取整)
3.5 OSPF中修改度量值
方式一:修改参考带宽
OSPF视图:auto-cost reference-bandwidth xx
注:如果修改,建议整个OSPF网络的路由器都修改一致。
修改的参考带宽只对本地有效(对自己本地学习的路由有效)。
方式二:修改接口带宽
接口:bandwidth xx(单位:kbit)
注:修改接口带宽只对入方向路由计算度量值有效。
修改接口带宽时,1000 000=1000M
方式三:直接配置接口开销
接口:ip ospf cost xx 只对入方向路由计算度量值有效
show ip ospf interface brief —显示接口关于OSPF的信息
show ip ospf interface