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:内部路由器- ABR(Area Border Router):区域边界路由器
- Backbone Router(BR):骨干路由器
- ASBR(Autonomous System Boundary Router):自治系统边界路由器.
虚链路 1. 通过一个非骨干区域连接到一个骨干区域. - 通过一个非骨干区域连接一个分段的骨干区域两边的部分区域.
虚链接是一个逻辑的隧道(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
本文转自 linuxpp 51CTO博客,原文链接:http://blog.51cto.com/13505118/2053162,如需转载请自行联系原作者