OSPF(Open Shortest Path First ,开放最短路径优先)是IEEE开发的一个基于链路状态的内部网关协议,目前在互联网上大量的使用。
[H3C]ospf [process-id] #启动ospf进程,并指定进程ID,默认为1
[H3C-ospf-1]area [area-id] #配置OSPF区域,单区域可不配骨干区域Area0 ;多区域必须配骨干区域Area 0
[H3C-ospf-1-area-0.0.0.0]network [address] [mask] #宣告网段,使用精确的反掩码
[H3C]router id 1.1.1.1 #配置设备的Router ID
【可选】[H3C]ospf 1 router-id 1.1.1.1 #只配置OSPF协议的Router ID
[H3C]dis ospf peer #显示OSPF邻居信息
[H3C]dis ospf interface #显示OSPF接口信息
[H3C]dis ospf routing #显示OSPF路由信息
[H3C]dis ospf verbose #显示OSPF进程详细信息
[H3C]dis ospf statistics #显示OSPF统计信息
[H3C]dis ospf lsdb #显示OSPF的LSDB信息
[RTA]int loopback 0
[RTA-GigabitEthernet0/0]ip add 10.0.0.1 24
[RTA]ospf 1 router-id 1.1.1.1
[RTA-ospf-1]area 0
[RTA-ospf-1-area-0.0.0.0]network 10.0.0.0 0.0.0.255
[RTA-ospf-1-area-0.0.0.0]network 192.168.100.0 0.0.0.255
[RTB]int loopback 0
[RTB-LoopBack0]ip add 2.2.2.2 255.255.255.255
[RTB]ospf 1 router-id 2.2.2.2
[RTB-ospf-1]area 0
[RTB-ospf-1-area-0.0.0.0]network 10.0.0.0 0.0.0.255
[RTB-ospf-1-area-0.0.0.0]qu
[RTB-ospf-1]area 1
[RTB-ospf-1-area-0.0.0.1]network 20.0.0.0 0.0.0.255
[RTC]int loopback 0
[RTC-LoopBack0]ip add 3.3.3.3 255.255.255.255
[RTC]ospf 1 router-id 3.3.3.3
[RTC-ospf-1]area 1
[RTC-ospf-1-area-0.0.0.1]network 20.0.0.0 0.0.0.255
[RTC-ospf-1-area-0.0.0.1]network 192.168.200.0 0.0.0.255
配置OSPF接口的网络类型
[H3C-GigabitEthernet0/0]ospf network-type {broadcast | nbma | p2mp[unicast] | p2p[peer-addrss-check]}
配置OSPF接口的路由器优先级,默认为1。
[RTB-GigabitEthernet0/0]ospf dr-priority [priority]
配置OSPF接口开销
第一种方式,在接口视图下配置OSPF接口的开销值。
[H3C-GigabitEthernet0/0]ospf cost [value] #仅对当前接口开销值进行了修改
第二种方式,在OSPF视图下配置OSPF接口参考带宽。
[H3C-ospf-1]bandwidth-reference [value] #默认参考值为100M。
可以根据网络情况将参考带宽修改为1000M或者更大,推荐配置带宽参考值为网络中所有链路带宽中的最大值。
配置OSPF报文定时器,在接口视图下
操作 | 命令 | 默认值 |
---|---|---|
配置Hello定时器 | ospf timer hello [值] | 10 |
配置邻居失效时间 | ospf timer dead [值] | 40 |
在OSPF中引入缺省路由使用以下命令
[RTB-ospf-1]default-route-advertise {
always #若当前路由表中没有缺省路由,使用此参数可产生一个描述缺省缺省路由的Type-5 LSA发布出去
permit-calculate-other #
cost #该缺省路由的度量值,取值范围0~16777214,如果没有指定将取default cost
route-policy #
summary cost #发布指定缺省路由的Type-3LSA,必须首先使能VPN,否则路由不能发布
type #该Type-5 LSA的类型,取值范围1~2,若没有指定缺省类型将取default type命令配置的值
}
RTA作为ASBR希望可以引入缺省路由,由于在RTA手动添加了静态路由 0.0.0.0 0.0.0.0 192.168.0.1 ,所以在OSPF协协议中引入缺省路由的时候不需要always参数。
RTA需要引入缺省路由并在自治系统发布,由于没有手动在RTA配置静态路由,配置时需要使用always参数来使OSPF强制生成缺省路由。
在OSPF区域划分时,为了保证路由学习正常需注意两个规则:
如果出现 骨干区域被分割 或 者非骨干区域无法和骨干区域保持连通 情况时,可以通过OSPF虚连接(Virtual Link)予以解决。
虚连接是指在两台ABR之间通过一个非骨干区域而建立一条逻辑连接通道。它的两端必须是ABR,而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区域(Transit Area)。 虚连接相当于在两个ABR之间形成了一个点到点的逻辑连接。在这个连接上和物理接口一样可以配置接口个各个参数, 如发送Hello报文间隔等。 虚连接建立后,两台ABR间通过单播方式直接传递OSPF协议报文。对于传输区域的路由器来说,虚连接所传输的协议报文时透明的,只是当做普通的IP报文来转发。
虚连接的另外一个作用是提供冗余的备份链路。当骨干区域因链路故障不能保持连通时,通过虚连接仍然可以保证骨干区域在逻辑上的连通性。
dis ospf vlink #显示OSPF虚连接信息
LSA Type | LSA名称 | Advertising Router | 说明 |
---|---|---|---|
1 | Router LSA | All Router | Intra-Area Link |
2 | Network LSA | DR | Network Link |
3 | Network Summary LSA | ABR | Inter-Area Link |
4 | ASBR Summary LSA | ABR | ASBR Summary Link |
5 | AS External LSA | ASBR | AS External Link |
6 | ALL Routers | Group Membership Link | |
7 | NSSA External LSA | ASBR | NSSA AS External Link |
8 | External Attributes LSA | ||
9 | Opaque LSA(Link-local) | ||
10 | Opaque LSA(Area-local) | ||
11 | Opaque LSA(AS-Local) |
序号 | 说明 |
---|---|
1类LSA | Router |
2类LSA | Network |
3类LSA | Sun-net |
4类LSA | Sum-Asbr |
5类LSA | External |
当存在多个路由信息源时,具有较高优先级的路由协议发现的路由成为当前路由,其中OSPF内部路由的协议优先级为10,外部路由协议优先级为150。
如果都是OSPF路由,那么将按照以下原则进行选路:
OSPF中,除了常见的骨干区域和非骨干区域之外,还定义了如下的常见区域:
如果使用Stub区域,区域内部的所有路由器都必须同时配置为Stub区域。在路由器交换Hello报文时,会检查Stub属性是否设置,如果有部分路由器没有配置Stub属性,就将无法和其他路由器建立邻居。
为了进一步减少Stub区域中路由器的路由表规模以及路由信息传递的数量,可以将该区域配置为Totally Stub(完全Stub)区域。
从下方链路状态数据库可以观察到,第三类、第四类、和第五类LSA已经不存在,取而代之的是新增一条ABR产生的第三类LSA,LS ID是0.0.0.0,用来将数据转发到其他区域和自治系统之外的外部网络。
NSSA(Not-So-Stubby Area)区域是Stub区域的变形,也不允许Type5 LSA类型注入,但是可以允许Type7 LSA注入。
NSSA区域产生的背景:
要满足第一个条件,标准区域即可,但此时第二个条件不满足;要满足第二个条件,区域必须为Stub,但此时第一个条件又不满足;为了同时满足两个条件,OSPF设计了NSSA这个区域。
ABR会产生一条0.0.0.0/0的第七类LSA,在NSSA区域内传播。与Stub区域一样,虚连接也不能穿过NSSA区域。
从链路状态数据库中可以观察到,第四类和第五类LSA已经不存在,取而代之的是新增加了一条ABR产生的第七类LSA ,LS ID是0.0.0.0用来将数据转发到其他区域和自治系统之外的外部网络。
如上图,Area 1内有4条区域内路由192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24,如果此时在RTB配置路由聚合,将4条路由聚合成一条192.168.0.0/22,则RTB就只生成一条聚合后的LSA,并发布给Area 0中的其他路由器。 RTC作为ASBR,也可以配置聚合路由,将注入OSPF域内的4条外部路由进行聚合成192.168.4.0/22,并发布给Area 0 的其他路由器。
路由聚合是指ABR或ASBR将具有相同前缀的路由信息聚合,只发布聚合后路由到其他区域。AS被划分成不同区域后,区域间可以通过路由聚合来减少路由信息,减少路由表的规模,提高路由器的运算速度。
OSPF的聚合有两种:
abr-summary [ip地址] [掩码] {advertise | not-advertise} [cost cost]
#用于在ABR上配置一条聚合路由,在OSPF视图下使用
#{advertise | not-advertise} 是否发布这条聚合路由,默认发布
#cost :该缺省路由的度量值
如上图所示Area1内有两条192路由,在RTB配置了路由聚合,则RTB只生成一条聚合后的LSA并发布给Area 0中的其他路由器。
asbr-summary [ip地址] [掩码] {not-advertise | nssa-only | tag | cost}
#在ospf视图下配置,在ASBR上配置一条聚合路由
#not-advertise:不发布这条静态路由
#nssa-only:设置Type-7 LSA的P比特位不置位
#cost :该缺省路由的度量值
OSPF作为路由协议,他并不保护通过网络的数据报文,仅仅对OSPF本身进行保护,以及对OSPF路由进行过滤。
常见的OSPF安全特性主要有以下几方面:
ospf authentication-mode simple {cipher [密码] | plain [密码]}
#cipher:表示输入的密码为密文
#plain :表示输入的密码为明文
为了使OSPF路由信息不被其他路由器获得,可以禁止接口发送OSPF报文。
silent-interface {接口 | all}
#在OSPF视图下配置禁止发送OSPF报文
#all只所有接口
RTB收到了LSA更新报文,3条新增的网段0.0、1.0、2.0被包含在LSA更新报文内。RTB更新LSDB将3条路由加入,经SPF计算准备加入时被定义的过滤规则过滤后仅加入192.168.0.0/24。
配置OSPF对于计算出的路由进行过滤:
filter-policy {
acl-number [gateway prefix-list-name]
gateway prefix-list-name
prefix-list prefix-list-name [gateway prefix-list-name]
route-policy route-policy-name} import
如上图,RTA向RTB发送了3条LSA,处于安全考虑RTB路由表中只能存在192.168.0.0/24这条路由。
配置Type3 LSA进行过滤规则
filter {acl-number
prefix-list prefix-list-name
route-policy router-policy-name
{export | import}
}
如上图所示,RTA向RTB发送 3条路由,出于安全考虑,RTB只能向RTC发送1条192.168.0.0/24的LSA。