ospf

OSPF(Open Shortest Path First开放式最短路径优先)[1]是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。与RIP相比,OSPF是链路状态路由协议,而RIP是距离矢量路由协议。OSPF的协议管理距离(AD)是110。算法

  一。OSPF起源数据库

  IETF为了知足建造愈来愈大基于IP网络的须要,造成了一个工做组,专门用于开发开放式的、链路状态路由协议,以便用在大型、异构的I P网络中。新的路由协议以已经取得一些成功的一系列私人的、和生产商相关的、最短路径优先(SPF )路由协议为基础, 在市场上普遍使用。包括OSPF在内,全部的S P F路由协议基于一个数学算法—Dijkstra算法。这个算法能使路由选择基于链路-状态,而不是距离向量。OSPF由IETF在20世纪80年代末期开发,OSPF是SPF类路由协议中的开放式版本。最初的OSPF规范体如今RFC1131中。这个第1版( OSPF版本1 )很快被进行了重大改进的版本所代替,这个新版本体如今RFC1247文档中。RFC 1247 OSPF称为OSPF版本2是为了明确指出其在稳定性和功能性方面的实质性改进。这个OSPF版本有许多更新文档,每个更新都是对开放标准的精心改进。接下来的一些规范出如今RFC 158三、2178和2328中。OSPF版本2的最新版体如今RFC 2328中。最新版只会和由RFC 213八、1583和1247所规范的版本进行互操做。安全

  链路是路由器接口的另外一种说法,所以OSPF也称为接口状态路由协议。OSPF经过路由器之间通告网络接口的状态来创建链路状态数据库,生成最短路径树,每一个OSPF路由器使用这些最短路径构造路由表。网络

  OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,通常用于同一个路由域内。在这里,路由域是指一个自治系统(Autonomous System),即AS,它是指一组经过统一的路由政策或路由协议互相交换路由信息的网络。在这个AS中,全部的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是经过这个数据库计算出其OSPF路由表的。ide

  做为一种链路状态的路由协议,OSPF将链路状态广播数据LSA(Link State Advertisement)传送给在某一区域内的全部路由器,这一点与距离矢量路由协议不一样。运行距离矢量路由协议的路由器是将部分或所有的路由表传递给与其相邻的路由器。oop

  二.OSPF的hello协议ui

  1.Hello协议的目的:debug

  1.用于发现邻居设计

  2.在成为邻居以前,必须对Hello包里的一些参数进行协商调试

  3.Hello包在邻居之间扮演着keepalive的角色

  4.容许邻居之间的双向通讯

  5.用于在NBMA(Nonbroadcast Multi-access)网络上选举DR和BDR

  2.Hello Packet包含如下信息:

  1.源路由器的RID

  2.源路由器的Area ID

  3.源路由器接口的掩码

  4.源路由器接口的认证类型和认证信息

  5.源路由器接口的Hello包发送的时间间隔

  6.源路由器接口的无效时间间隔

  7.优先级

  8.DR/BDR接口IP地址

  9.五个标记位(flag bit)

  10.源路由器的全部邻居的RID

  三.OSPF的网络类型

  OSPF定义的5种网络类型:

  1.点到点网络 (point-to-point)

  2.广播型网络 (broadcast)

  3.非广播型(NBMA)网络 (non-broadcast)

  4.点到多点网络 (point-to-multipoint)

  5.虚连接(virtual link)

  1.1.点到点网络, 好比T1线路,是链接单独的一对路由器的网络,点到点网络上的有效邻居老是能够造成邻接关系的,在这种网络上,OSPF包的目标地址使用的是224.0.0.5,这个组播地址称为AllSPFRouters.

  2.1.广播型网络,好比以太网,Token Ring和FDDI,这样的网络上会选举一个DR和BDR,DR/BDR的发送的OSPF包的目标地址为224.0.0.5,运载这些OSPF包的帧的目标MAC地址为0100.5E00.0005;而除了DR/BDR之外发送的OSPF包的目标地址为224.0.0.6,这个地址叫AllDRouters.

  3.1.NBMA网络, 好比X.25,Frame Relay,和ATM,不具有广播的能力,所以邻居要人工来指定,在这样的网络上要选举DR和BDR,OSPF包采用unicast的方式

  4.1.点到多点网络 是NBMA网络的一个特殊配置,能够当作是点到点链路的集合. 在这样的网络上不选举DR和BDR.

  5.1.虚连接: OSPF包是以unicast的方式发送

  全部的网络也能够概括成2种网络类型:

  1.传输网络(Transit Network)

  2.末梢网络(Stub Network )

  四.OSPF的DR及BDR

  在DR和BDR出现以前,每一台路由器和他的全部邻居成为彻底网状的OSPF邻接关系,这样5台路由器之间将须要造成10个邻接关系,同时将产生25条LSA.并且在多址网络中,还存在本身发出的LSA 从邻居的邻居发回来,致使网络上产生不少LSA的拷贝,因此基于这种考虑,产生了DR和BDR.

  DR将完成以下工做

  1. 描述这个多址网络和该网络上剩下的其余相关路由器.

  2. 管理这个多址网络上的flooding过程.

  3. 同时为了冗余性,还会选取一个BDR,做为双备份之用.

  DR BDR选取规则: DR BDR选取是以接口状态机的方式触发的.

  1. 路由器的每一个多路访问(multi-access)接口都有个路由器优先级(Router Priority),8位长的一个整数,范围是0到255,Cisco路由器默认的优先级是1优先级为0的话将不能选举为DR/BDR.优先级能够经过命令ip ospf priority进行修改.

  2. Hello包里包含了优先级的字段,还包括了可能成为DR/BDR的相关接口的IP地址.

  3. 当接口在多路访问网络上初次启动的时候,它把DR/BDR地址设置为0.0.0.0,同时设置等待计时器(wait timer)的值等于路由器无效间隔(Router Dead Interval).

  DR BDR选取过程:

  1. 路由器X在和邻居创建双向(2-Way)通讯以后,检查邻居的Hello包中Priority,DR和BDR字段,列出全部能够参与DR/BDR选举的邻居(priority不为).

  2. 若是有一台或多台这样的路由器宣告本身为BDR(也就是说,在其Hello包中将本身列为BDR,而不是DR),选择其中拥有最高路由器优先级的成为BDR;若是相同,选择拥有最大路由器标识的。若是没有路由器宣告本身为BDR,选择列表中路由器拥有最高优先级的成为BDR,(一样排除宣告本身为DR的路由器),若是相同,再根据路由器标识。

  3. 按以下计算网络上的DR。若是有一台或多台路由器宣告本身为DR(也就是说,在其Hello包中将本身列为DR),选择其中拥有最高路由器优先级的成为DR;若是相同,选择拥有最大路由器标识的。若是没有路由器宣告本身为DR,将新选举出的BDR设定为DR。

  4.若是路由器X新近成为DR或BDR,或者再也不成为DR或BDR,重复步骤2和3,而后结束选举。这样作是为了确保路由器不会同时宣告本身为DR和BDR。

  5. 要注意的是,当网络中已经选举了DR/BDR后,又出现了1台新的优先级更高的路由器,DR/BDR是不会从新选举的。

  6. DR/BDR选举完成后,DRother只和DR/BDR造成邻接关系.全部的路由器将组播Hello包到AllSPFRouters地址224.0.0.5以便它们能跟踪其余邻居的信息,即DR将泛洪update packet到224.0.0.5;DRother只组播update packet到AllDRouter地址224.0.0.6,只有DR/BDR监听这个地址.

  简洁的说:DR的筛选过程

  1.优先级为0的不参与选举;

  2.优先级高的路由器为DR;

  3.优先级相同时,以router ID 大为DR;

  router ID 以回环接口中最大ip为准;若无回环接口,以真实接口最大ip为准。

  4.缺省条件下,优先级为1。

  五.OSPF邻居关系

  邻接关系创建的4个阶段:

  1.邻居发现阶段

  2.双向通讯阶段:Hello报文都列出了对方的RID,则BC完成.

  3.数据库同步阶段:

  4.彻底邻接阶段: full adjacency

  邻居关系的创建和维持都是靠Hello包完成的,在通常的网络类型中,Hello包周期性的以HelloInterval秒发送,有1个例外:在NBMA网络中,路由器每通过一个PollInterval周期发送Hello包给状态为down的邻居(其余类型的网络是不会把Hello包发送给状态为down的路由器的).Cisco路由器上PollInterval默认60s Hello Packet以组播的方式发送给224.0.0.5,在NBMA类型,点到多点和虚链路类型网络,以单播发送给邻居路由器。邻居能够经过手工配置或者Inverse-ARP发现.

  OSPF路由器在彻底邻接以前,所通过的几个状态:

  1.Down:此状态尚未与其余路由器交换信息。首先从其ospf接口向外发送hello分组,还并不知道DR(若为广播网络)和任何其余路由器。发送hello分组使用组播地址224.0.0.5。

  2.Attempt: 只适于NBMA网络,在NBMA网络中邻居是手动指定的,在该状态下,路由器将使用HelloInterval取代PollInterval来发送Hello包.

  3.Init: 代表在DeadInterval里收到了Hello包,可是2-Way通讯仍然没有创建起来.

  4.two-way: 双向会话创建,而RID彼此出如今对方的邻居列表中。(若为广播网络:例如:以太网。在这个时候应该选举DR,BDR。)

  5.ExStart: 信息交换初始状态,在这个状态下,本地路由器和邻居将创建Master/Slave关系,并肯定DD Sequence Number,路由器ID大的的成为Master.

  6.Exchange: 信息交换状态,本地路由器和邻居交换一个或多个DBD分组(也叫DDP) 。DBD包含有关LSDB中LSA条目的摘要信息)。

  7.Loading: 信息加载状态:收到DBD后,将收到的信息同LSDB中的信息进行比较。若是DBD中有更新的链路状态条目,则向对方发送一个LSR,用于请求新的LSA 。

  8.Full: 彻底邻接状态,邻接间的链路状态数据库同步完成,经过邻居链路状态请求列表为空且邻居状态为Loading判断。

  六.OSPF泛洪

  Flooding采用2种报文

  LSU Type 4---链路状态更新报文

  LSA Type 5---链路状态确认报文

  (补充下)

  {

  Hello Type 1 ---Hello协议报文

  DD(Data Description) Type 2----链路数据描述报文

  LSR Type 3----链路状态请求报文

  }

  在P-P网络,路由器是以组播方式将更新报文发送到组播地址224.0.0.5.

  在P-MP和虚链路网络,路由器以单播方式将更新报文发送至邻接邻居的接口地址.

  在广播型网络,DRother路由器只能和DR&BDR造成邻接关系,因此更新报文将发送到224.0.0.6,相应的DR以224.0.0.5泛洪LSA而且BDR只接收LSA,不会确认和泛洪这些更新,除非DR失效 在NBMA型网络,LSA以单播方式发送到DR和BDR,而且DR以单播方式发送这些更新.

  LSA经过LS类型、LS标识和宣告路由器来识别,并经过序列号、校验和、老化时间判断LSA新旧。

  Seq: 序列号(Seq)的范围是0x80000001到0x7fffffff.

  Checksum: 校验和(Checksum)计算除了Age字段之外的全部字段,每5分钟校验1次.

  Age: 范围是0到3600秒,16位长.当路由器发出1个LSA后,就把Age设置为0,当这个LSA通过1台路由器之后,Age就会增长,1个LSA保存在LSDB中的时候,老化时间也会增长.

  当收到相同的LSA的多个实例(LS类型、LS标识、宣告路由器相同)的时候,将经过下面的方法来肯定哪一个LSA是最新的:

  1. 比较LSA实例的序列号,越大的越新.

  2. 若是序列号相同,就比较校验和,越大越新.

  3. 若是校验和也相同,就比较老化时间,若是只有1个LSA拥有MaxAge(3600秒)的老化时间,它就是最新的.

  4. 若是LSA老化时间相差15分钟以上,(叫作MaxAgeDiff),老化时间越小的越新.

  5. 若是上述都没法区分,则认为这2个LSA是相同的.

  六.OSPF区域

  区域长度32位,能够用10进制,也能够相似于IP地址的点分十进制,分3种通讯量

  1. Intra-Area Traffic:域内间通讯量

  2. Inter-Area Traffic:域间通讯量

  3. External Traffic:外部通讯量

  路由器类型

  1. Internal Router:内部路由器

  2. ABR(Area Border Router):区域边界路由器

  3. Backbone Router(BR):骨干路由器

  4. ASBR(Autonomous System Boundary Router):自治系统边界路由器.

  虚链路(Virtual Link)

  如下2中状况须要使用到虚链路:

  1. 经过一个非骨干区域链接到一个骨干区域.

  2. 经过一个非骨干区域链接一个分段的骨干区域两边的部分区域.

  虚连接是一个逻辑的隧道(Tunnel),配置虚连接的一些规则:

  1. 虚连接必须配置在2个ABR之间.

  2. 虚连接所通过的区域叫Transit Area,它必须拥有完整的路由信息.

  3. Transit Area不能是Stub Area.

  4. 尽量的避免使用虚连接,它增长了网络的复杂程度和加大了排错的难度.

  OSPF区域—OSPF的精华

  Link-state 路由在设计时要求须要一个层次性的网络结构.

  OSPF网络分为如下2个级别的层次:

  骨干区域 (backbone or area 0)

  非骨干区域 (nonbackbone areas)

  在一个OSPF区域中只能有一个骨干区域,能够有多个非骨干区域,骨干区域的区域号为0。

  为了不回环的产生,各非骨干区域间是不能够交换LSA信息的,他们只有与骨干区域相连,经过骨干区域相互交换信息。

  非骨干区域和骨干区域之间相连的路由叫边界路由(ABRs-Area Border Routers),只有ABRs记载了接入各区域的全部路由信息。各非骨干区域内的非ABRs只记载了本区域内的路由表,若要与外部区域中的路由相连,只能经过本区域的ABRs,由ABRs连到骨干区域的BR,再由骨干区域的BR连到要到达的区域。

  骨干区域和非骨干区域的划分,大大下降了区域内工做路由的负担。

  七.LSA类型

  1.类型1:Router LSA:每一个路由器都将产生Router LSA,这种LSA只在本区域内传播,描述了路由器全部的链路和接口,状态和开销.

  2.类型2:Network LSA:在每一个多路访问网络中,DR都会产生这种Network LSA,它只在产生这条Network LSA的区域泛洪描述了全部和它相连的路由器(包括DR自己)。

  3.类型3:Network Summary LSA :由ABR路由器始发,用于通告该区域外部的目的地址.当其余的路由器收到来自ABR的Network Summary LSA之后,它不会运行SPF算法,它只简单的加上到达那个ABR的开销和Network Summary LSA中包含的开销,经过ABR,到达目标地址的路由和开销一块儿被加进路由表里,这种依赖中间路由器来肯定到达目标地址的彻底路由(full route)其实是距离矢量路由协议的行为。

  4.类型4:ASBR Summary LSA:由ABR发出,ASBR汇总LSA除了所通告的目的地是一个ASBR而不是一个网络外,其余同Network Summary LSA.

  5.类型5:AS External LSA:发自ASBR路由器,用来通告到达OSPF自主系统外部的目的地,或者OSPF自主系统那个外部的缺省路由的LSA.这种LSA将在全AS内泛洪(4个特殊区域除外)

  6.类型6:Group Membership LSA

  7.类型7:NSSA External LSA:来自非彻底Stub区域(not-so-stubby area)内ASBR路由器始发的LSA通告它只在NSSA区域内泛洪,这是与LSA-Type5的区别.

  8.类型8:External Attributes LSA

  9.类型9:Opaque LSA(link-local scope,)

  10.类型10:Opaque LSA(area-local scope)

  11.类型11:Opaque LSA(AS scope)

  八.OSPF末梢区域

  因为并非每一个路由器都须要外部网络的信息,为了减小LSA泛洪量和路由表条目,就建立了末节区域,位于Stub边界的ABR将宣告一条默认路由到全部的Stub区域内的内部路由器.

  Stub区域限制:

  a) 全部位于stub area的路由器必须保持LSDB信息同步, 而且它们会在它的Hello包中设置一个值为0的E位(E-bit),所以这些路由器是不会接收E位为1的Hello包,也就是说在stub area里没有配置成stub router的路由器将不能和其余配置成stub router的路由器创建邻接关系.

  b) 不能在stub area中配置虚连接(virtual link),而且虚连接不能穿越stub area.

  c) stub area里的路由器不能够是ASBR.

  d) stub area能够有多个ABR,可是因为默认路由的缘故,内部路由器没法断定哪一个ABR才是到达ASBR的最佳选择.

  e)NSSA容许外部路由被宣告OSPF域中来,同时保留Stub Area的特征,所以NSSA里能够有ASBR,ASBR将使用type7-LSA来宣告外部路由,但通过ABR,Type7被转换为Type5.7类LSA经过OSPF报头的一个P-bit做Tag,若是NSSA里的ABR收到P位设置为1的NSSA External LSA,它将把LSA类型7转换为LSA类型5.并把它洪泛到其余区域中;若是收到的是P位设置为0的NSSAExternal LSA,它将不会转换成类型5的LSA,而且这个类型7的LSA里的目标地址也不会被宣告到NSSA的外部NSSA在IOS11.2后支持.

  f)totally stub area彻底的stub区域,连类型3的LSA也不接收。

  OSPF的包类型:

  类型号 包 做用 可靠性

  1 HELLO 一、用于发现邻居二、创建邻接关系三、维持邻接关系四、确保双向通讯 五、选举DR和BDR

  2 Database Description 数据库的描述 DBD 可靠

  3 Link-state Request 链路状态请求包 LSR 可靠

  4 Link-state Update 链路状态更新包 LSU 可靠

  5 Link-state Acknowledment 链路状态确认包 LSACK

  AS 自治系统(autonomous system):一组相互管理下的网络,它们共享同一个路由选择方法,自治系统由地区再划分并必须由IANA分配一个单独的16位数字。地区一般链接到其余地区,使用路由器建立一个自治系统。

  OSPF单区域及多区域的基本配置命令

  配置LOOPBACK接口地址

  ROUTER(config)#interface loopback 0

  ROUTER(config)#ip address IP地址 掩码

  1.ospf区域的配置

  router ospf 100

  network 192.168.1.0 0.0.0.255 area 0

  router-id 192.168.2.1 手动设置router-id

  area 1 default-cost 50 手动设置开销

  #clean ip ospf process

  2.配置ospf明文认证

  interface s0

  ip ospf authentication

  ip ospf authentication-key <密码>

  3.配置ospf密文认证

  interface s0

  ip ospf authentication

  ip ospf message-digest-key 1 md5 7 <密码>

  4.debug ip ospf adj 开启ospf调试

  show ip protocols

  show ip ospf interface s0

  5.手动配置接口花销,带宽,优先级

  inter s0

  ip ospf cost 200

  bandwidth 100

  ip ospf priority 0

  6.虚链路的配置

  router ospf 100

  area <area-id> virtual-link <router-id>

  show ip ospf virtual-links

  Show ip ospf border-routers

  Show ip ospf process-id

  Show ip ospf database

  show ip ospf database nssa-external

  7.OSPF路由概括

  Router ospf 1对ASBR外部的路由进行路由概括

  Summary-address 200.9.0.0 255.255.0.0

  Router ospf 1执行AREA1到AREA0的路由概括

  Area 1 range 192.168.16.0 255.255.252.0

  8.配置末节区域

  IR area <area-id> stub

  ABR area <area-id> stub

  9.配置彻底末节区域

  IR area <area-id> stub

  ABR area <area-id> stub no-summary

  10.配置NSSA

  ASBR router ospf 100

  area 1 nssa

  ABR router ospf 100

  area 1 nssa default-information-orrginate

  OSPF协议主要优势:

  一、OSPF是真正的LOOP- FREE(无路由自环)路由协议。源自其算法自己的优势。(链路状态及最短路径树算法)

  二、OSPF收敛速度快:可以在最短的时间内将路由变化传递到整个自治系统。

  三、提出区域(area)划分的概念,将自治系统划分为不一样区域后,经过区域之间的对路由信息的摘要,大大减小了需传递的路由信息数量。也使得路由信息不会随网络规模的扩大而急剧膨胀。

  四、将协议自身的开销控制到最小。见下:

  1)用于发现和维护邻居关系的是按期发送的是不含路由信息的hello报文,很是短小。包含路由信息的报文时是触发更新的机制。(有路由变化时才会发送)。但为了加强协议的健壮性,每1800秒所有重发一次。

  2)在广播网络中,使用组播地址(而非广播)发送报文,减小对其它不运行ospf 的网络设备的干扰。

  3)在各种能够多址访问的网络中(广播,NBMA),经过选举DR,使同网段的路由器之间的路由交换(同步)次数由 O(N*N)次减小为 O (N)次。

  4)提出STUB区域的概念,使得STUB区域内再也不传播引入的ASE路由。

  5)在ABR(区域边界路由器)上支持路由聚合,进一步减小区域间的路由信息传递。

  6)在点到点接口类型中,经过配置按需播号属性(OSPF over On Demand Circuits),使得ospf再也不定时发送hello报文及按期更新路由信息。只在网络拓扑真正变化时才发送更新信息。

  五、经过严格划分路由的级别(共分四极),提供更可信的路由选择。

  六、良好的安全性,ospf支持基于接口的明文及md5 验证。

  七、OSPF适应各类规模的网络,最多可达数千台。

相关文章
相关标签/搜索