OSPF:开放式最短路径优先 协议 OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部 AD 思科OSPF的协议管理距离是110 华为OSPF的协议管理距离是150 链路状态 链路是路由器接口的另一种说法,因此OSPF也称为接口状态路由协议 OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由表 LS-支持网络的层次化设计 -区域 骨干 : 0区域,就是骨干区域 非骨干:不是区域0的,都叫做非骨干区域 所有的非0区域,必须直接连接0区域; 非0区域之间,不可以直接进行通信的; Hello协议的目的 1.用于发现邻居   2.在成为邻居之前,必须对Hello包里的一些参数协商成功   3.Hello包在邻居之间扮演着keepalive的角色   4.允许邻居之间的双向通信   5.它在NBMA(Nonbroadcast Multi-access)网络上选举DR和BDR 建立邻居影响因素 1、确保最小范围内双向ping通; 2、能够正常发送OSPF报文; #确保链路正常宣告; 3、能够正常接收OSPF报文; #确保链路正常宣告; #确保ACL放行 OSPF 流量; 4、开始比较OSPF报文参数: 1、RID不能相同; router ospf 1 router-id x.x.x.x clear ip ospf process 2、区域ID必须相同; 3、认证必须成功(认证类型必须相同,并且密码必须相同) 4、子网掩码必须相同(特殊情况下) 5、hello时间必须相同; interface fas0/0 ip ospf hello-interval {value} 6、dead时间必须相同; interface fas0/0 ip ospf dead-interval {value} 7、特殊标记位必须相同; 8、优先级必须不能全为0(特殊情况下) 9、3层MTU必须相同,否则会卡在Exatart状态 Interface fas0/0 Ip mtu +num(如1499) MTU MTU-最大传输单元<max transmit unit> 1500 Hello packet包含 1.源路由器的RID   2.源路由器的Area ID   3.源路由器接口的掩码   4.源路由器接口的认证类型和认证信息   5.源路由器接口的Hello包发送的时间间隔   6.源路由器接口的无效时间间隔   7.优先级   8.DR/BDR   9.五个标记位(flag bit)   10.源路由器的所有邻居的RID OSPF状态: 1.Down:此状态还没有与其他路由器交换信息。首先从其ospf接口向外发送hello分组,还并不知道DR(若为广播网络)和任何其他路由器。发送hello分组是,使用组播地址224.0.0.5。    2.Attempt: 只适于NBMA网络,在NBMA网络中邻居是手动指定的,在该状态下,路由器将使用HelloInterval取代PollInterval来发 送Hello包.    3.Init:初始化收到了Hello包,但是2-Way通信仍然没有建立起来.    4.two-way: 双向会话建立,而 RID 彼此出现在对方的邻居列表中。(若为广播网络:例如:以太网。在这个时候应该选举DR,BDR。    5.ExStart: 信息交换初始状态,在这个状态下,本地路由器和邻居将建立Master/Slave关系,路由器ID大的的成为Master.    6.Exchange: 信息交换状态:本地路由器和邻居交换一个或多个DBD分组(也叫DDP) 。DBD包含有关LSDB中LSA条目的摘要信息)。    7.Loading: 信息加载状态:收到DBD后,使用LSACK分组确认已收到DBD.将收到的信息同LSDB中的信息进行比较。如果DBD中有更新的链路状态条目,则想对方发送一个LSR,用于请求新的LSA 。    8.Full: 完全邻接状态,该状态表示双方的数据库完全同步 DR与BDR的选取原则: 1.优先级为0的不参与选举 2.优先级高的路由器为DR 3.优先级相同时,以router ID 大为DR。router ID 以回环接口中最大ip为准。若无回环接口,以真实接口最大ip为准。 4.缺省条件下,优先级为1 OSPF定义的5种网路类型 OSPF的工作过程,完全由网络类型来决定;任何一种类型的链路,默认都对应着一种网络类型,但是,可以基于网络需求,进行人工修改 类型 2层 Hello与dead DR/BDR 是否主动发包 broadcast :广播 (MA , multi-access) 当2层协议为ethernet时, 对应的是广播网络类型; hello是10s; dead是40s 需要选举DR/BDR 端口主动发包,发包方式为组播(224.0.0.5/6) non-broadcast : 非广播。(NBMA) 当2层协议为Frame-relay时, 对应的是非广播网络类型; hello是30s; dead是120s 需要选举DR/BDR; 端口不主动发包,发包方式为单播; 【OSPF实现单播:neighbor x.x.x.x】 point-to-point 点到点(P2P) 当2层协议为HDLC\PPP时, 对应的是点到点网络类型; hello是10s; dead是40s 不需要选举DR/BDR; 端口主动发包,发包方式为组播(224.0.0.5) point-to-Multipoint: 点到多点(p2mp) hello是30s; dead是120s; 不需要选举DR/BDR; 端口主动发包,发包方式为组播(224.0.0.5)

point-to-Multipoint non-broadcast: 点到多点(p2mp-NB) hello是30s; dead是120s; 不需要选举DR/BDR; 端口不主动发包,发包方式为单播

LSA类型 LSA的类型: LSA的摘要信息详解: LSA的摘要信息中代表的意思 OSPF的数据库中包含的是 LSA ; OSPF的数据库是以区域的形式来组织 LSA 的; 同一个区域中的所有路由器,数据库是完全同步的; link-id:表示的是LSA的名字, adv:表示的是产生这个LSA的路由器的名字; age:表示的是存活时间;最大存活时间是3600s; seq:表示的序列号;LSA表示的链路每变化一次,LSA的序列号就会增加1; checksum:校验和,用于确保 LSA在传输过程中,没有被损坏。 link-count:链路计数器,只有1类LSA才会拥有。表示的是该路由器上有多少个链路宣告进入了该区域; 1类LSA:router LSA 任何一个路由器,都会在任何一个区域中产生一个 1类LSA ; 可以将1类LSA理解为“自我介绍”,用于说明本身有哪些链路进入了该区域,并且是连接着哪些设备,是如何连接的;到对方的距离是多少; 1类LSA只能在一个区域内部进行传输 link-id:路由器的RID adv:路由器的RID 传输范围:只能在一个区域内部 ADV是否变化:不变化
2类LSA:net Link state 这种类型的 LSA ,只有在选举DR的网络环境中才会有。 只有DR才有资格产生 2 类 LSA link-id:表示的是 DR 的接口IP地址; ADV:DR的 RID ; 传输范围:一个区域内部 ADV是否变化:不变化;

// 基于 LSDB 中的1类LSA 或者 1和2类LSA,就可以计算出一个区域内部的路由,叫做 O 的路由; 3类LSA:summary net link state 在不同的区域之间传输路由信息; 这种类型的LSA,仅有 ABR 可以产生。 3类LSA被ABR产生以后,首先进入到 OSPF 区域0,然后再转发到其他区域。 ABR: 1、可以将非0区域中的“域内-O”路由,转变成3类LSA,发送到0区域; 2、可以将0区域中的“域内-O”路由,转变成3类LSA,发送到非0区域;也可以将0区域中的“域间-OIA”路由,转变成新的3类LSA,发送到其他的非0区域中; 3、一定不可以将非0区域中的3类LSA转发到0区域; link-id:表示的是路由的前缀; adv:ABR的RID; 传输范围:一个区域内部 ADV是否变化:是; 4类LSA:summary ASB link state 专门是为了辅助5类LSA计算路由而生的; 传递的信息是 ASBR 的 RID ; 是由与 ASBR在同一个区域的 ABR 产生的; 传递过程中每经过一个ABR,ADV都会变化一次。 link-id:表示的是 ASBR的 RID; adv:ABR 传输范围:同一个区域内部; ADV是否变化:是的; 5类LSA:external LSA 表示的是OSPF的外部路由,没有任何区域概念; 可以在OSPF网络中畅通无阻。 哪里有OSPF,哪里就有5类LSA。 link-id:表示的是外部路由前缀; adv:ASBR的 RID ; 传输范围:没有限制; ADV是否变化:否 注意: 计算域内路由时,使用的1类或者1类和2类LSA; 计算域间路由时,使用的是3类和1类; 计算外部路由时,使用的是5类和1类,或者是5类,4类和1类;

非0区域没有直接与0区域互联,解决方案: 1、引入外部路由; #运行多个OSPF进程,并且相互之间进行重分发; 2、引入内部路由(O IA) #引入虚链路。 通虚链路建立的OSPF邻居关系,永远都是属于区域0的; 路由过滤 distribute-list(只能是做入向的“路由”过滤)
acl/prefix-list - 标准ACL 只能看前缀; - 扩展ACL 同时看前缀和掩码,但是只能在BGP中使用; - 前缀列表 同时看前缀和掩码,在所有的IGP中都能用; Metric Metric(在OSPF中,称之为 cost - 开销) 无论是什么协议的路由,在计算Metric的时候,仅仅关心的是路由沿传递方向上的所有入端口的; OSPF的路由的 Metric 计算方法为:沿路由传递方向,所有入端口的 cost 的累加和。 # 每个端口上的 OSPF cost 计算方法如下: Cost = 100000000/bw ( bw表示的是接口带宽,代为是 bit ) 所得除数小于1的,都按照整数1来计算。 上面的 10的8次方,我们称之为计算路由时的“参考带宽”。 可以通过命令进行你更改(当网络中的路由器之间的互联链路带宽都大于100M的时候) router ospf 1 auto-cost reference-bandwidth 1000(单位是Mbit;) 如果进行该参数的修改,必须在全网的每一个路由器都得进行修改,否则会出现路由次优路径。 汇总 自动汇总:NO 手动汇总:YES -对象: 3类LSA和5类LSA 3类LSA汇总 在产生被汇总的3类LSA的ABR上进行配置配置完成以后,仅仅发送汇总之后的3类LSA,不发送明细LSA 并且会在本地形成一个针对汇总路由的Null0路由,目的是为了实现防止数据转发环路的产生。 5类LSA汇总 在产生5类LSA的 ASBR 上面操作 路由器类型 1.Internal Router:内部路由器 2. ABR(Area Border Router):区域边界路由器 3. Backbone Router(BR):骨干路由器 4. ASBR(Autonomous System Boundary Router):自治系统边界路由器. 虚链路 1. 通过一个非骨干区域连接到一个骨干区域. 2. 通过一个非骨干区域连接一个分段的骨干区域两边的部分区域. 虚链接是一个逻辑的隧道(Tunnel),配置虚链接的一些规则:   1. 虚链接必须配置在2个ABR之间.   2. 虚链接所经过的区域叫Transit Area,它必须拥有完整的路由信息.   3. Transit Area不能是Stub Area.   4. 尽可能的避免使用虚链接,它增加了网络的复杂程度和加大了排错的难度.   OSPF区域—OSPF的精华   Link-state 路由在设计时要求需要一个层次性的网络结构. 2种网络类型 1.传输网络(Transit Network) 2.末节网络(Stub Network ) 末节区域 由于并不是每个路由器都需要外部网络的信息,为了减少LSA泛洪量和路由表条目,就创建了末节区域,位于Stub边界的ABR将宣告一条默认路由到所有的Stub区域内的内部路由器. 特殊之处在于:区域中没有外部路由,也就是没有5类LSA。 -stub area :末节区域 需要在该区域的任何一个路由器上配置命令: router ospf 1 area 12 stub 末节区域,在该区域中,是没有5类LSA和4类LSA。 有1类、2类、3类LSA 但是该区域的 ABR 会自动产生一个 3类 LSA 表示的 默认路由;为了能够与外网链路互通。 为了进一步增强该区域的安全性,不受到内网其他区域的影响,所以我们可以进一步缩小该区域的数据库的大小-干掉3类LSA。

-totally stub area : 完全末节区域;
 仅仅需要在 stub 区域的 ABR 上实施 - 
	   router ospf 1 
	     area 12  stub  no-summary 

此时的完全末节区域,仅仅有1类LSA或者1和2类LSA,还有一个特殊的3类LSA,表示默认路由,是 ABR 自动产生的; 验证命令:show ip ospf

区域类型 OSPF的区域类型有很多: 标准区域、主干、末节、绝对末节、NSSA、绝对NSSA  标准区域:默认的OSPF区域类型 主干区域:就是area 0  末节区域:不接受五类LSA,如果要到AS外部,路由器会使用默认路由,其中末节区域不能包含ASBR  绝对末节:不接受五类LSA与三类LSA,路由器会有默认路由,也不能包含ASBR  NSSA:这是一种特殊的区域,它定义了七类LSA,NSSA具备了末节与绝对末节的优点,但是可以包含ASBR 路由协议支持的认证类型: RIPv2->明文/密文 EIGRP->密文 OSPF->明文/密文/null OSPF的认证: 链路认证(仅仅对某一个或者几个链路) 启动认证和配置密码,都是在链路上进行的; 区域认证(对整个区域的所有的链路) 启动认证是在 OSPF 进程下,对区域配置的;密码,还是配置在具体的链路上; 认证成功必须确保: 1、认证必须同时开启 -->认证类型不同,一方是0,一方是1; 2、认证类型必须相同 3、认证密码必须相同(也可以同时为空)-> mismatch authentication key