OSPF,开放式最段路径优先(Open Shortest Patch First,OSPF
)是由
Internet
工程组(
IETF
)开发的路由选择协议,使用的是
SPF
算法。作为链路状态路由协议,启用
OSPF
的路由器发送的是
LSA
而不是具体的路由信息。宣告
OSPF
的路由器从所有启动
OSPF
协议的接口上发出
HELLO
报文,如果两台路由器能够相互协商它们各自的
HELLO
报文中所指定的某些参数,那么他们就可以成为邻居。建立邻居的路由器有可能建立邻接关系,建立邻接关系的路由器之间会发送链路状态通告(
LSA
)。
OSPF
是靠
HELLO
报文来发现邻居的,同样也是靠
HELLO
报文来保持邻居,邻居之间交换的
HELLO
报文叫做
keepalive
报文,每隔
30
分钟发送一次更新。一台
OSPF
路由器使用一个路由器的
ID
号作为
OSPF
的标识,
router Id
一般使用所有回环口中数值最高的
IP
地址作为
ID
号,如果路由器上没有配置回环口的话就会使用物理接口中最高的
IP
地址作为路由器的
ID
。同样也可以手工指定
ROUTER ID
。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
HELLO
报文不匹配的情况下,
OSPF
是建立不起来邻居的,在
CISCO
路由器中,缺省的
HELLO
报文的时间是
10S
一次,在
NBMA
的情况下是
30
秒一次,注意跟
EIGRP
不同的是,
OSPF
在小于
T1
的链路上同样是
10
秒发送一次更新,如果在无效时间间隔内还没收到来自邻居的
HELLO
报文,那么邻居将会被宣告无效,
CISCO
路由器中,缺省的无效时间是
HELLO
时间的
4
倍。
OSPF定义了以下5种网络类型:
点到点网络,广播网络,非广播多路访问网络(
NBMA
),点到多点广播,虚电路,点到多点非广播。在点到点的网络中,有效邻居总是可以形成邻接关系。点到点的网络,网络上的有效邻居总是形成邻接关系的。在这些网络上的
OSPF
报文的目的地址也总是保留的
D
类地址
224.0.0.5
。广播型网络,会选举出一个
DR
和一个
BDR
,所有的路由器会跟
DR
和
BDR
建立邻接关系,相互之间并不建立邻接关系,
DR
和
BDR
使用组播地址
224.0.0.5
来发送
HELLO
报文,其他路由器将使用
224.0.0.6
来发送
HELLO
报文。非广播多路访问(
NBMA
)同样会选举
DR
和
BDR
,不同的是,
NBMA
是不支持广播的,所以是使用单播地址发送更新。点到多点的网络,可以看作一个点到点的网络的集合,使用组播地址发送更新。另外,除了以上的
5
种网络类型外,应该注意的是,所有的网络也都可以归纳到下面两种更普通的网络类型之:传送网络和末节网络。
传送网络:和两台或两台以上的路由器相连;
末梢网络:仅仅和一台路由器相连。
指定路由器和备份指定路由器(
DR
和
BDR
),在多路访问的网络上,为了避免网络上
LSA
泛洪的混乱,
OSPF
会在多路访问的网络上选举一个
DR
和
BDR
,所有的路由器将会与
DR
和
BDR
建立邻接关系。
DR
和
BDR
将会收集所有的
LSA
然后将
LSA
发送到网络中其余的路由器。而非
DR
和
BDR
的路由器相互是不会发送
LSA
的。如果一个
DR
失效了
BDR
会成为
DR
,然后从新选出一个
BDR
,所以
DR
和
BDR
之间也将相互形成邻接关系。
DR
的选举是通过接口上的优先级决定的,默认的情况下为
1
,为
0
的时候代表不参与选举。如果一个网络上只有一台路由器成为了
DR
而没有
BDR
路由器的话,其他所有路由器只和这个
DR
路由器建立邻接关系。
在一个邻接关系的创建中,
OSPF
将使用以下三种报文类型:
数据描述报文(
DD
报文):数据库描述报文对于邻接关系的建立过程来说非常重要。正如它的名字所暗示的,该报文里面携带了始发路由器的链路状态数据库中的每一个
LSA
通告的一个简要描述。也就是里面包含了所有
LSA
的头部信息。
链路状态请求信息:如果本地路由器收到
DD
报文中发现有
LSA
通告不在它自己的链路状态数据库当中,或者邻居路由器有比已知
LSA
通告更新的拷贝,那么本地路由器将把这条
LSA
放入它的链路状态请求列表中去,随后路由器会发送一个链路状态请求报文去请求一个这些
LSA
的完成拷贝。
链路状态更新信息:回应请求信息,更新
LSA
,在更新报文中传送的
LSA
必须单独进行确认。路由器有显式确认和隐式确认两种确认方式。
OSPF
使用多个数据库和复杂的算法,所以它将耗费路由器更多的内存和更多的
CPU
处理。
OSPF
协议可以使用区域的概念来缩小这些不利的影响。路由器仅仅需要和它所在区域的其他路由器具有相同的链路状态数据库,而没有必要和整个互联网内的所有路由器共享相同的链路状态数据库。由于链路状态数据库只需要在一个区域内进行维护,大量的
LSA
泛洪也就被限制在一个区域里面了。主义由于骨干区域的任务就是汇总每个区域的网络拓扑陆游到其他所有区域。正是这个原因,所有的域间通信都必须通过骨干区域,非骨干区域不能直接交换数据包,所以所有的区域必须跟骨干区域连接。虚电路的存在就是为了解决临时的非层次化的设计把没跟骨干区域连接的区域虚拟的跟骨干区域连接。
OSPF认为路由器有下面几种类型:
内部路由器:所有接口都属于同一个区域的路由器;
区域边界路由器(
ABR
):连接一个或者多个区域到骨干区域的路由器;
骨干路由器:至少有一个接口和骨干区域相连的路由器;
自主系统边界路由器:把
OSPF
外部的路由信息进入
OSPF
区域的网关路由器,引进重发布的路由条目。
OSPF
的几种
LSA
:
类型
1
:路由器
LSA
,每台路由器都会产生的
LSA
,列出了通告
LSA
的路由器所有的链路或者接口。
类型
2
:网络
LSA
,每一个多路访问的网络中
DR
将会产生网络
LSA
的通告,网络
LSA
跟路由器
LSA
只在区域内泛洪。
类型
3
:网络汇总
LSA
,由
ABR
始发,
ABR
发送网络
LSA
到一个区域,用来通告该区域外部的目的地址。
类型
4
:
ASBR
汇总
LSA
,也就是由
ASBR
始发出的,
ASBR
汇总
LSA
除了所通告的目的地址是一个
ASBR
路由器而不是一个网络外,其他的和网络汇总
LSA
都是一样的。
类型
5
:
AS
外部
LSA
,重发布到
OSPF
区域的
LSA
。
类型
6
:组成员
LSA
。使用在组播
OSPF
协议中,
CISCO
路由器不支持。
类型
7
:
NSSA
外部
LSA
,是在非纯末节区域内始发与
ASBR
路由器的
LSA
通告。
类型
8
:外部属性
LSA
。
CISCO
路由器不支持。
类型
9
,
10
,
11
:
OpaqueLSA
是一个被提议的
LSA
类别,由标准的
LSA
头部后面跟随特殊应用的信息组成。还没有发出出来。
OSPF的几种区域:
末节区域:一个学习到外部路由器信息的
ASBR
路由器将通过在整个
OSPF
自主系统中泛洪自主系统外部
LSA
来通告那些外部的目的路由信息。末节网络是一个不允许
AS
外部
LSA
通告在其内部进行泛洪的区域。也就是说阻止了类型
5
的
LSA
。
完全末节区域:具有末节区域的特性,另外还阻止了类型
3
和类型
4
的
LSA
,在完全末节区域的路由器将使用一条缺省路由到达这个区域的外部。
NSSA
区域:具有末节区域的特性,不同的是在
NSSA
内部允许类型
7
的
LSA
泛洪,从
NSSA
区域通过
ABR
看到的路由都会标记为
N2
的路由。
OSPF
是支持验证的,可以在
OSPF
中配置区域验证和接口验证,区域验证就是在每个接口上开启了验证,但是必须在接口上配置验证的关键字,否则就会是空验证,
OSPF
验证支持
MD5
验证
OSPF的部分心得:
1 NSSA
区域的心得体会:
No-summary
参数:在
NSSA
区域中所有的区域间路由都被消除了,另外增加了一条标记为
IA
的缺省路由,使用了这个参数以后,这个
NSSA
区域就具有了与完全末节区域一样的特性,阻止了类型三和类型四的
LSA
,但是同时具有
NSSA
的特性,允许类型
7
的
LSA
在
NSSA
区域内泛洪。
No-redistribution
参数:阻止了类型
7
的
LSA
,跟
no-summary
一样,通告一条标记为
IA
的类型三的缺省路由。
Default-information-originate
参数:使得
ABR
通告一条缺省路由到
NSSA
区域,不同的是,使用的是类型七的
LSA
通告这条缺省路由。
2OSPF OVER NBMA
体会:
OSPF OVER NBMA
实验:
TOP
:
R2
为
HUB
路由器,
R1
,
R3
为
SPORK
路由器,
R2
的
S0
口与
S1
,
S3
的
S0
之间都有一条
PVC
部分互联
PVC
支持广播:
方法一:
将
OSPF
启用后,在
S0
口上面用
ip ospf network
命令来让
OSPF
认为这个接口是一个点到多点的接口,在
R1,R2,R3
上面都这样配置,不用注意什么,这个是最简单的
OSPF OVER NBMA
的方法
方法二
在接口上配置
OSPF
认为的网络类型是广播,这样就要选
DR/BDR
,所以在
R2(HUB)
上面配置
OSPF
优先级为
10
,然后在
R1,R3
上面配置优先级为
0
,这样
R1,R3
就不会参与
DR/BDR
的选举,注意,选了
DR
后
DR
会默认认为网络是全互连的,也就是说在
R1
上到
R3
回环口的路由的下一跳是
R3
的
S0
口,而
R1
并没有到
R3
的
PVC
,所以在
R1
和
R3
的
S0
口上必须要做一个
MAP
,地址是
R1,R3
对方
S0
口的地址,但是
DLCI
号还是到
R2
的
DLCI
号,这样
R1
和
R3
下面所连接的网络就可以相互访问了。
方法三
在接口上配置
OSPF
认为的网络类型是
NBMA
,这样的话也要选
DR
,所以关于配置还是跟方法二的一样,只是
NBMA
是不支持广播的,所以在网络中必须要指定邻居来用单播发送更新,所以在
OSPF
进程中需要用
neighbor
命令来指定邻居也就是单播地址,注意在
OSPF
中只需要在一边指定就可以了,也就是说,在这个题目里面,在
R2(HUB)
上面配置
neighbor
就可以了,目的地址指
R1,R3
的
S0
口的地址。
方法四:
在
R2
上面做两个点到点的子接口,然后在
R1
和
R3
上面让
OSPF
认为网络类型是点到点的,这样也就可以正常学习到路由了。
部分互连
PVC
不支持广播:
方法一:
在接口上配置
OSPF
认为的网络类型为
NBMA
,然后做的方法就跟支持广播的方法二是一样的。
方法二:
在接口上配置
OSPF
认为的网络类型是点到多点非广播,这样的话就需要在
R2
上面做两个子接口,然后在
R2
上面指
neighbor
对方地址为
R1,R3
的
SO
口地址,但是不需要在接口上配置优先级,因为点到多点的情况下是不选
DR
和
BDR
的。
全互连
PVC
支持广播:
TOP
:全互联:
R1
,
R2
,
R3
都是用
S0
口全互联的
PVC
。
方法一:
跟部分互连方法一一样,只是配置上面
PVC
做全互联的。
方法二:
跟部分互连方法二基本一样,只是配置上面不需要
DLCI
号到
R2
,目的地址为
R3S0
口的
PVC
了,只需要做全互联的
PVC
就可以了,自然因为全互连,可以选
DR
和
BDR
,所以就不用在接口上设置优先级。
方法三:
跟部分互联配置方法基本一样,需要注意的也就是
PVC
做成全互联,这里也不用配优先级别,因为全互连可以选出
BDR
出来。注意指定邻居的时候这里就需要相互指定而不能只在
R2
上面指定了,因为是全互联的网络,
方法四
在每个路由器上做两个点到点的子接口,相互连接对方,然后启用
OSPF
,
OSPF
会认为这个网络是一个点到点的网络类型,这样就从逻辑上把网络成了三段,并且路由器相互都可以转发数据。
全互联
PVC
不支持广播:
方法一:
让
OSPF
认为网络类型是
NBMA
的网络,然后指定邻居。
方法二:
让
OSPF
认为网络是点到多点非广播的网络,同样指定单播地址也就是指定邻居。方法一和方法二都不用注意什么,也不用设置优先级,因为网络是全互联的,相互都有可能形成邻接关系
方法三:
在每个路由器上面配置两个点到点的子接口,跟上面
PVC
支持广播的配置基本一样,不同的是这里需要指定单播地址,因为
PVC
是不支持广播的。
关于
OSPF
的配制命令参考
CISCO
文档
OSPF
部分
:
网页地址
:[url]http://www.cisco.com/univercd/cc/td/doc/product/software/ios122/122cgcr/fipr_c/ipcprt2/1cfospf.htm[/url]
转载于:https://blog.51cto.com/gluttony/44852