首页 > 代码库 > CCNP--Router-1 OSPF

CCNP--Router-1 OSPF

OSPF网络中,任何一台设备产生的链路状态通告,往全网发送的过程中,中间的任何其它设备都只负责两件事:学习记录 和 不做任何修改地继续转发 (LSA:链路状态通告)

 

OSPF的路由表产生过程:

qq截图20130105091243

设备之间交换链路状态通告

各设备通过链路状态通告收集其它设备的链路状态,来建立自己的链路状态数据库

配合相应的算法和最短路径树的要求,求出各设备到达网络各节点的最佳路径

 

OSPF的三张表:

邻居表

拓扑表(链路状态数据库LSDB)

最佳路由选择表

 

为了消除不必要的流量,在一个OSPF的广播域内会选出一个DR,其它路由器要发送LSA都要通过DR转发。

在这个广播域内,DR与普通路由器的关系为邻接,普通路由器和普通路由器的关系为邻居。

 

OSPF的cost值默认情况为:cost=10000000/bandwidth

 

TCP/IP路由技术 卷1 版本2 ie1919

 

OSPF通过接口信息来了解链路信息

 

邻居关系为双方只交互HELLO报文,不交互链路状态数据库,而邻接关系就要交互所有的信息。邻居和邻接的区分主要是用在以太网(广播型)网络中,需要选举一个中心节点,叫做DR,即这个以太网所有设备都要和DR交互所有信息,而彼此之间至少交互HELLO报文,数据库的同步由DR定时广播链路状态数据库,这么做的目的主要是减少以太网中需要交互的链路状态数据库的数量。

 

邻居关系状态是 2WAY/DROTHER,邻接关系状态是 FULL/DR 或 FULL/BDR

 

OSPF只跟直连的路由器建立邻居关系,邻接不一定。

邻接最多只有两个,邻居可以有一堆。

 

qq截图20130104185618qq截图20130104185510qq截图20130104185421

HELLO包用于建立和维持邻居关系,以太环境下,10s发送一次,若40s对方无应答则认为挂掉。

DBD的两个作用:一是确保谁先发包,二是互相交换目录信息。

LSR用于请求目录中自己没有的条目,LSU是回应的数据包,是链路的核心更新数据包,LSAck用于确认。

 

LSU 即 LSA

 

OSPF的状态机

qq截图20130104190646

 

OSPF稳定状态下30分钟交换一次LSA,同时支持触发更新。

 

当设备收到一个LSA的处理流程:

qq截图20130104200631

network命令的作用是宣告网络。后面接的是反掩码,0表示检测,255表示忽略不检测,0对应的部分必须相同。符合要求的网段将同自己的掩码传递出去。

 

通过OSPF接收到的loopback路由默认是主机地址,而不是网段,所以在lo下要输入 ip ospf network point-to-point ,不然其它设备接收的的这个环回地址都认为是主机(/32)。

 

show ip ospf neighbor    显示邻居表

show ip ospf database    显示链路状态数据库

show ip route ospf    显示ospf最佳路径表,即OSPF计算出的路由条目

show ip protocols    显示路由协议

show ip ospf interface brief    查看当前设备哪些接口参加了ospf

show ip ospf interface f0/0    了解指定接口参与ospf的状态

show ip ospf interface    了解所有参与ospf的接口状态

show ip ospf database database-summary    显示一个链路状态数据库当中基于区域和LSA类型分类的LSA通告的数量

 

OSPF具有链路状态数据库同步行为,每个设备的数据库是一样一样的。

 

ospf的区域只将端口划分进来,而非将整个路由器划分进来。

 

ospf的router id是设备的某个端口地址,选择跟端口是否参与ospf进程无关,只要这个ip地址的活跃状况(up)。可以手动更改。

选举规则:1.逻辑端口优先(因为一般不会down,更适合作为一个设备的标识)    2.有多个逻辑端口或没有一个逻辑端口则比较ip地址的大小,大的优先。

 

在ospf网络中,设备用router id标识自己。

 

DR和BDR的选举规则:1.优先级(最高)     2.router id的大小(最高)

优先级:可通过 neighbor 192.168.1.2 priority 0 命令来改变优先级。0代表不参与,255代表最高优先级。

优先级可以影响一个选取过程,但不能强制更换已经有效的DR或BDR路由器。

 

DR没有抢占,当一个网络中已经有了DR,即使条件更好的设备参与进来也直接从属。因此,在一个多访问网络上,最先初始化启动的两台具有DR选取资格的路由器将成为DR和BDR路由器。

 

指定路由器是路由器接口的特性,而不是整台路由器的特性。

 

为了避免当DR挂掉之后网络无法有效传送数据包,除了选取指定路由器,还再选取一台备份指定路由器(BDR)。这样,网络上所有的路由器将和指定路由器(DR)与备份指定路由器(BDR)同时形成邻接关系。DR和BDR之间也将互相形成邻接关系。这样,当DR失效了,BDR将成为新的DR。

 

一般认为在一个刚初始化的广播型OSPF网络中,先选举个BDR,然后将选举出来的BDR升级为DR,最后再选个BDR。

 

有几个广播域就有几个DR,基于端口选择。

 

所有的路由器以组播方式发送Hello数据包到AllSPFRouters(目的IP-224.0.0.5,MAC-0100.5E00.0005)

除了DR、BDR其它所有的路由器都将以组播方式发送链路状态更新数据包和链路状态确认数据包到224.0.0.6(MAC-0100.5E00.0006),这个组播地址称为AllDRouters。只有DR和BDR路由器去侦听这个地址,反过来,DR路由器将使用组播地址224.0.0.5泛洪扩散更新数据包到BDR和DRothers。

qq截图20130105210549

如果R1增加一个环回地址,会用目的地址为224.0.0.6的组播包通知 DR 和 BDR ,然后 DR 用目的地址为224.0.0.5的组播包通知除了自己所有的设备,包括R1。


OSPF中,区域间的路由交换都要通过Area 0

 

ospf的网络类型

qq截图20130105201849

 

qq截图20130105203853

Point-to-Point情况下基本上用的是组播地址(包括hello包和更新包)

当两个路由器之间跑的是串行链路,自动识别为点到点

 

qq截图20130105210907

 

帧中继环境:

qq截图20130310074809

1.配置帧中继交换机(FR),指定端口到端口的DLCI号84024521e20247dfa5c9732922949785

2.配置路由器,配置完端口地址后,在端口下配置封装形式(encapsulation frame-relay)

3.FR会将DLCI号推送给 配置了DLCI的端口 的路由器(show frame-relay pvc可查看)

4.路由器利用DLCI号进行逆向ARP,解析出其它路由器的IP地址(show frame-relay map可查看)

 

关闭帧中继中的逆向ARP解析(端口模式下):

no arp frame-relay

no frame-relay inverse-arp

关闭了逆向地址解析之后,路由器就没有映射,ping不通其它路由器。

这时可以手写映射(如R1->s0/0:frame-relay map ip 123.0.0.2 102        frame-relay map ip 123.0.0.3 103)

 

帧中继的物理结构是固定的,逻辑结构是看链路是否指定DLCI来确定的。

 

通过帧中继可以实现一对一、一对多的连接。物理接口可以划分子接口,子接口可以一对一,也可以一对多,接入能力很强。

 

在帧中继环境中,数据传输完全依赖于映射。有DLCI就可以发送数据,没有则不能。所以会造成ping不通自己,且不支持广播和组播。

 

在没有广播能力的网络中(如帧中继、ATM、X.25中),OSPF因为发包依赖于网络的广播能力,所以无法正常运行。解决方案是NBMA。

OSPF_NBMA.doc

 

NBMA(non-broadcast multiple access 非广播多路访问)网络的五种类型:

qq截图20130105221348

 

show ip ospf int s0/0    可查看OSPF的网络类型,默认是NBMA

 

Broadcast(伪广播,适合全互联结构):

1.在接口下改变OSPF网络类型:ip ospf network broadcast

2.若开启了逆向ARP解析(默认是开启的),则不需要再做配置(逆向ARP可解析广播地址,跟在静态映射后加broadcast关键字效果一样);若关闭了,则在配置每条静态映射后加broadcast关键字

当关闭逆向ARP解析,只在一个路由器配置静态映射后加broadcast关键字,会出现这个映射的邻居关系FULL,过一段时间又DOWN的情况。    FULL的原因是Hello包能发过去,从邻居往回发都是用的单播地址。DOWN的原因是邻居无法往回发Hello包。

 

NBMA(适合全互联结构):

Hello间隔变为30s(低速链路中)。不需要伪广播,单播通信。

1.指定DR。通过将指定路由器的优先级改为最大255,其它改为0指定。(ip ospf priority 255)

2.在DR设备上静态指定邻居。(router ospf 1    neighbor 123.0.0.2    ...)

3.配置静态映射(若没有关闭逆向ARP解析则不用配置这条)

若不是全互联,如没有R2到R3的DLCI,则R2与R3无法互ping。

这时需设置转发策略:R2<->R1<->R3,R2和R3通过R1转发数据包(R2-s0/0: frame-relay map ip 123.0.0.3 201    R3-s0/0: frame-relay map ip 123.0.0.2 301)

ebe5bd2879224d24828031ae211e3546bc337bd07d67479fb09f76f1c9b32819

 

Point-to-point(在一个网络中,不是所有设备都参与OSPF,参与的比较少,则可考虑点到点模式,如R1、R2参与,R3不参与):

等同于标准的点到点,需要伪广播支持。

1.改变OSPF网络类型(s0/0: ip ospf network point-to-point)

2.在配置指定静态映射后加broadcast关键字(若没有关闭逆向ARP解析则不用配置这条)

 

Point-to-Multipoint(用在星型结构(主要)或部分互联结构中):

点到多点就是多个点到点的复用,从某一个设备上同时向多个其它设备建立点到点隧道。需要伪广播支持。

1.改变星型的每个节点的OSPF网络类型(s0/0: ip ospf network point-to-multipoint)

2.在配置指定静态映射后加broadcast关键字(若没有关闭逆向ARP解析则不用配置这条)

 

Point-to-Multipoint Nonbroadcast(当环境不支持伪广播):

与点到多点类似,但是这个网络环境不支持伪广播。

1.改变主控端(即point端)的OSPF网络类型(s0/0: ip ospf network point-to-multipoint non-broadcast)

2.配置静态映射(若没有关闭逆向ARP解析则不用配置这条)

3.静态指定邻居。(router ospf 1    neighbor 123.0.0.2    ...)

b3961d5e3efb4230905132bb7fcb1100

 

帧中继网络中

点到点子接口

相当于点到点模式,不需要DR,不需要指定邻居,需要伪广播支持。

1.在要划分子接口的路由器上(如R1)做如下配置:

    int s0/0

        no ip address

        encapsulation frame-relay

    int s0/0.12 point-to-point

        ip address 12.0.0.12 255.255.255.0

        frame-relay interface-dlci 102

    int s0/0.13 point-to-point

        ip address 12.0.0.13 255.255.255.0

        frame-relay interface-dlci 103

2.在不划分子接口的路由器上(如R2、R3)改变网络类型(ip ospf network point-to-point),划分子接口的路由器自动缺省为point-to-point

3.在配置指定静态映射后加broadcast关键字(若没有关闭逆向ARP解析则不用配置这条)

06068c5501cd434da5b021b3dae67be1

 

多点子接口

采用子接口的方式同时与多个设备互联,类似于NBMA的运作,需要DR,需要手动指定邻居。

1.在要划分子接口的路由器上(如R1)做如下配置:

    int s0/0

        no ip address

        encapsulation frame-relay

    int s0/0.123 multipoint

        ip address 123.0.0.1 255.255.255.0

        frame-relay map ip 123.0.0.2 102    ;这里必须要静态映射

        frame-relay map ip 123.0.0.3 103

    静态指定邻居:

        neighbor 123.0.0.2

        neighbor 123.0.0.3

2.在不划分子接口的路由器上(如R2、R3)降低接口优先级,达到指定DR的效果

3.在不划分子接口的路由器上(如R2、R3)配置静态映射(若没有关闭逆向ARP解析则不用配置)

 

另一种配置OSPF的方法(IPv6中采用这种):

1.开启OSPF进程,然后退出(router ospf 1        exit)

2.进入要参与OSPF进程的接口下,ip ospf 1 area 0(省去用network宣告网络)

 

LSA的类型:

f8500115afa84981bc6ea66e29aeb758

Type 1(Router LSAs):所有开启OSPF进程的路由器都会产生该类LSA,只在区域内传播,包括路由器自身的接口信息。是每个路由器自己产生的关于自己链路状态的LSA,所以叫Router LSA。

Type 2(Network LSAs):由DR产生,包括DR相连的所有网络的信息,只在区域内传播。是 DR 通告其它路由器使用的LSA。

Type 3(ABR Summary LSAs):由ABR产生,告知区域内路由器区域外的路由条目。当有多个ABR时使用cost来确定,这个cost是由区域内路由器将外部路由cost和内部cost简单相加所得,而不是运行SPF算法。因此,可以说在区域内OSPF是一种链路状态协议,而在区域间是一种距离矢量协议

Type 4(ASBR Summary LSAs):由ASBR产生,是一条主机路由,指向ASBR路由器地址的路由,告诉相同自治区的路由器通往外部自治区的路径,用来广播ASBR的位置。

Type 5(external LSAs): 由ASBR产生,宣告外部路由。自制系统外部LSA是唯一不和具体的区域相关联的LSA通告,将在整个自制系统中进行泛洪。通常在一个大型网络中,路由器的数据库中会存在大量的此类LSA,给路由器形成较重的负荷。因此我们可以用stub area来限制此类LSA的传播。

Type 7(NSSA External LSA):由ASBR产生,几乎和LSA 5通告是相同的,但NSSA外部LSA通告仅仅在始发这个NSSA外部LSA通告的非纯末梢区域内部进行泛洪。在NSSA区域中,当有一个路由器是ASBR时,不得不产生LSA 5报文,但是NSSA中不能有LSA 5报文,所有ASBR产生的LSA 7报文,发给本区域的路由器。

 

一个区域(Area)内的每个DR向外发送的LSA,这个区域(Area)内的每个设备都会接收到,不止是那个DR所在的广播域。

 

O    相同Area的路由

O IA    相同OSPF网络中其它Area的路由

O E1    来自外部网络的路由

O E2    来自外部网络的路由

 

O E1和O E2的区别(默认是O E2):

qq截图20130310234744

O E1累加中间经过的设备(结果准确),O E2不累加(省资源)。

在OSPF进程下通过 redistribute rip subnets metric-type 1 修改成O E1(假设外部网络跑的是RIP)。

在网络最近的出口地点把到外部目的地址的数据包转发出该网络,使用E1度量;如果希望将数据包从到达它们的外部目的地址最近的地点转发出去,就使用E2度量。

 

 

--------------------------OSPF的优化----------------------------

链路状态数据库的过载保护:max-lsa 12000

限制设备能从其它设备学到的最大LSA数量,不包括自身产生的LSA。防止攻击者发大量LSA致使设备耗费大量资源进行计算而影响设备正常工作。

如果后面不接参数,则默认为 当超过指定数量,则断开邻居关系。过一段时间会自动恢复。

后面的参数可以设置:

<1-100>:超过设定数量的某个百分比报警

ignore-time:断开邻居关系后自动恢复的时间

ignore-count:断开邻居关系次数的计数器,满了就永久断开邻居关系,等管理员来恢复

reset-time:计数器的计数周期,过一个周期则计数器清零

warning-only:超过设定数量不断开邻居关系,只报警

 

Passive Interface:

宣告了某些接口连接的网段,但不往这些接口发送Hello包,也不接收从这些网段发送过来的Hello包。一般对端是主机时这样处理。

ebc7ef6562c447f49da51f0099f73326

RIP、OSPF、EIGRP都有Passive Interface功能,其中RIP不发但收,OSPF和EIGRP既不发也不收。(收发指的是路由更新信息,不是正常数据)

两种配置方法(在路由进程下):

1.passive-interface Ethernet 0    单个指定某个接口为passive-interface

2.passive-interface default    将所有接口都指定为passive-interface,然后取消某些不想设定为passive-interface的接口

   no passive-interface Ethernet 0

 

Virtual Link(失败网络的标识):

最多跨一个Area,且跨的Area不能为特殊功能区

通过Virtual Link传递过来的路由不受老化时间的影响。Virtual Link存在则传递过来的路由存在。(LSDB中有DNA关键字)

可解决两种问题:

1.一个非骨干Area跨区与Area 0相连

配置:在要穿越的Area的进出ABR的路由进程配置(按图:ABR1--area 10 virtual-link 2.2.2.2    ABR2--area 10 virtual-link 1.1.1.1    IP为router id)

参与Virtual Link的设备也属于Area 0(如图,ABR1属于Area 0,LSDB中可查看)

5cc5b21905ba414d843ac6f81ff27349

2.不连续的Area 0

83fc7da8904945efb32754dceb8bd42b

查看命令:show ip ospf virtual-links

virtual link 的接口都属于area 0

 

修改OSPF的cost值(cost=100000000/bandwidth):

1.改bandwidth。修改带宽,影响了实际传输能力

2.直接改cost。当需要大批量修改时工作量太大(接口模式下:ip ospf cost 10)

3.改除数,即将100000000改成更大的数(路由进程下:auto-cost reference-bandwidth 100    单位为Mb,100则为默认值)

 

OSPF没有自动汇总能力,但是可以手动汇总。OSPF的汇总只发生在两个地方:

9f5aeaca8213486f8a93d249f9f15019

汇总的好处:

1.减少路由条目数

2.减少网络变化对路由器的影响,可以保护CPU资源

配置:

LSA 3:在路由进程下 area 0 range 4.4.4.0 255.255.252.0

LSA 5:在路由进程下 summary-address 172.16.32.0 255.255.225.0

汇总后路由表里会出现汇总条目指向Null 0接口,目的是防止汇总后漏掉的路由条目形成三层环路

Null 0接口的作用:1.防环    2.安全策略    功能:丢弃数据包

 

default-information originate    在ASBR上配置,通知OSPF网络中其它设备默认路由,作为Type 5的LSA传递给后面的设备(前提条件:ASBR上必须已经有默认路由,要是ASBR为拨号上网,上面没有默认路由,则要在后面加上always关键字)

企业连了两个ISP:

1.做主备路由

在R1上的路由进程下 default-information originate metric 10

在R2上的路由进程下 default-information originate metric 20

通过在两台边界路由器推送的默认路由设定不同的metric值,来实现主备路由(默认是1)

f4694132e28143319be21e00f25b751e

2.PBR    策略路由

 

如果在最后的路由子集中还有多条等代价、等价路径类型的路由存在,那么OSPF协议将会利用它们。缺省条件下,Cisco路由器可以在最多16条等代价的路径上实现负载均衡,这个数值可以通过命令maximum-paths来改变。

 

OSPF的区域类型

骨干区域(Area 0)

普通区域

Stub

Totally Stub

NSSA

Totally NSSA

 

800652e84ecc4b8c93e112686751e30f

区域内所有的路由器要访问本区域以外的网络必须要通过Area 0

 

Stub:

有多个ABR

只保留了Type 1、2、3的LSA,有多条Type 3的默认路由,b9d9ed0c3b6f49fbbaa4de8c0c4c9a2e

配置:在指定的Stub区域内的每台路由器的路由进程下敲上: area * stub

 

Totally Stub:

只有一个ABR

只保留了Type1、2的LSA,有一条Type 3的默认路由

配置:在指定的Totally Stub区域内除了ABR的每台路由器的路由进程下敲上: area * stub ,然后在ABR的路由进程下敲上: area * stub no-summary

 

NSSA:

比Stub多了个ASBR,有多个ABR

NSSA区里的ASBR从外部引进的路由以Type 7的LSA传到ABR,ABR将其转化为Type 5的LSA传递给内部的其它路由器

配置:在指定的NSSA区域内的每台路由器的路由进程下敲上: area * nssa,再在离ISP更近的路由器上(ABR或ASBR)敲上: area * nssa default-information-originate,这样NSSA区里其它的路由器就会有一条默认路由指向这台路由器。

843cd47fec9e4053bc32ed2bdb136ce8

 

Totally NSSA:

比Totally Stub多了个ASBR,只有一个ABR

NSSA区里的ASBR从外部引进的路由以Type 7的LSA传到ABR,ABR将其转化为Type 5的LSA传递给内部的其它路由器

配置:  在指定的Totally Stub区域内除了ABR的每台路由器的路由进程下敲上 : area * nssa,然后在ABR的路由进程下敲上: area * nssa no-summary。不用再敲default-information-originate,会自动推送一条默认路由(因为只有一个ABR)。

7928eccd9e1b4bc5af7cd09b59c708b8

d510cef0327044dc9a3869a7e3d9d0d3

OSPF的认证功能(认证要先开启再设置):

1.明文认证

2.MD5认证

两种开启认证的方式:

1.在接口下敲: ip ospf authentication [message-digest]    表示开启这个接口的认证功能

2.在路由进程下敲: area 0 authentication [message-digest]    表示参与area 0的所有接口都开启认证功能,包括virtual-link

virtual-link认证方法:在路由进程下敲 area * virtual-link 3.3.3.3 authentication-key mykey

明文认证配置:

1.打开认证

2.配置密码: 接口模式下 ip ospf authentication-key mykey

MD5认证配置:

1.打开认证

2.配置密码: 接口模式下 ip ospf message-digest-key 1 md5 mykey    1是key ID,mykey是密码,要完成认证得两部分都一样

CCNP--Router-1 OSPF