OSPF同步数据库
OSPF的工作原理:
1. 建立邻居表
2. 同步数据库,包含的是“链路状态信息”,称为:LSA;,自己设备的LSA以及别的设备产生的LSA。
3. 计算路由表
OSPF数据库:
*每个路由器的OSPF数据库,是按照“区域”进行组织的
*每个区域中的所有的路由器,他们的数据库,是完全相同的
所以,OSPF支持将网络划分成多个区域,可以带来很多好处。
1. 提高了OSPF网络的稳定性
2.不同的区域中的路由器的数量都会变少,从而每个路由器的OSPF数据库也会变小,路由表也会变小,从而节省系统资源。同时还提高了路由器转发数据包时的查表效率。
3.将网络分为两层,便于后期的网络管理,比如网络扩展以及网络定位故障排查。
ospf多区域设计原则:
*所有的非骨干区域,都必须和骨干区域直接相连,否则不能互通
OSPF路由器角色:
*骨干路由器:所有的链路都属于骨干区域
*非骨干路由器:所有的链路都属于非骨干区域
*区域边界路由器(ABR): area border router,同时连接着骨干区域和非骨干区域的路由器
实例:
配置:
1. 各接口的IP地址(忽略)
2. 配置ospf路由协议和R6的静态路由,R7配置默认路由
R1:
[Huawei]ospf 1
[Huawei-ospf-1]area 12
[Huawei-ospf-1-area-0.0.0.12]network 192.168.12.0 0.0.0.255
R2:
[Huawei]ospf 1
[Huawei-ospf-1]area 12
[Huawei-ospf-1-area-0.0.0.12]network 192.168.12.0 0.0.0.255
[Huawei-ospf-1-area-0.0.0.12]area 0
[Huawei-ospf-2-area-0.0.0.0]network 192.168.23.0 0.0.0.255
R3:
[Huawei]ospf 1
[Huawei-ospf-1]area 0
[Huawei-ospf-2-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[Huawei-ospf-2-area-0.0.0.0]network 192.168.34.0 0.0.0.255
R4:
[Huawei]ospf 1
[Huawei-ospf-1]area 0
[Huawei-ospf-2-area-0.0.0.0]network 192.168.45.0 0.0.0.255
[Huawei-ospf-2-area-0.0.0.0]network 192.168.34.0 0.0.0.255
R5:
[Huawei]ospf 1
[Huawei-ospf-1]area 56
[Huawei-ospf-1-area-0.0.0.56]network 192.168.56.0 0.0.0.255
[Huawei-ospf-1-area-0.0.0.56]area 0
[Huawei-ospf-2-area-0.0.0.0]network 192.168.45.0 0.0.0.255
R6:
[Huawei]ospf 1
[Huawei-ospf-1]area 56
[Huawei-ospf-1-area-0.0.0.56]network 192.168.56.0 0.0.0.255
quit
quit
ip route-static 192.168.1.0 255.255.255.0 192.168.67.7
R7:
ip route-static 0.0.0.0 0.0.0.0 192.168.67.76
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
在上述的案例中,R6-R7只见那没有运行ospf协议,但是R1想学习到PC1的路由
需要在R6上添加去往PC1的静态路由,并且通过import-route的方式引入到OSPF协议
*配置命令:
ospf 1
import-route static //将R6上路由表中的所有的静态路由,全部引入到OSPF协议到数据库中,并且以5类LSA形式表示
此时:
1.我们去其他的所有路由器上,都可以看到该路由时5类LSA形式出现的
2.我们查看R6的身份,已经变成了 ASBR----------display ospf brief ----> Border Router : AS
---------------------------------------------------------------------分割线---------------------------------------------------------------------------
ospf路由配置完成后可以通过命令:display ospf lsdb //查看ospf链路状态数据库
也可以通过命令查看ospf的BDR/DR,或者是不是区域边界路由器(AREA):display ospf br
字段解析:
*type,表示的是LSA的类型。在 OSPFv2中,一共包含了6中类型
*linkstate ID,表示的是LSA的名字;不同类型的LSA,它的名字是不相同的
*AdvRouter,通告路由器,表示的是产生这个LSA的路由器的router-id
*Age,年龄,表示的是LSA的存活时间。默认是0开始,正计时。最大值是3600s,到达最大值后,直接删除该LSA!
为了避免LSA正常老化时间,导致LSA数据库不稳定,所以OSPF引入了一个“数据库刷新”机制:即每个LSA的
产生路由器,一致监控这自己所产生的LSA的存活时间,一旦达到了1800S时,就会再次产生一个新的LSA.
如此一来,其他路由器再收到一个自己数据库中有的,但是更加新的LSA的时候,就会使用这个新的LSA刷新数据库。
*sequence,序列号。表示的是LSA的新旧程度。LSA每次重新产生一次,系列号都会加1,序列号越大表示LSA越新。
&OSPF收敛过程中,如何判断一个LSA的新旧程度:
1. 比较序列号
2. 比较LSA的存活时间。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LSA的类型:
1类LSA
Type-router
linkstate ID-每个路由器的router-id
AdvRouter(advertisement Router)(产生这个类型的lsa的是):每个路由器的router-id
包含的信息:其中描述的是每个OSPF路由器的每个链路的状态,相当于OSPF路由器的自我介绍
特点:
1. 每个路由器在自己所连接的每个区域都会产生
2. 该类型的LSA只能在区域内部传输
查看详细LSA的命令:display ospf lsdb router 1.1.1.1-->查看1.1.1.1这个1类LSA的详细信息;
2类LSA
*type-network
*linkstate ID :DR接口的IP地址
*AdvRouter:DR接口所在的那个设备的router-id,有几个网段在区域0中就会有几个2类LSA
包含信息:其中描述的是与DR建立邻接关系的那些路由器的名字;
特点:
1. 该类型的LSA只有DR可以产生,每个网段之间都会产生一个DR
2.该类型的LSA只能在区域内部传输
3.查看详细LSA命令:display ospf lsdb network 192.168.56.6-->查看192.168.56.6路由器的2类LSA的详细信息。
3类LSA
type-summary
linkstate ID:不同区域之间的网段
AdvRouter(advertisement Router):只能试ABR路由器才能产生3类LSA
包含的信息:不同区域之间路由条目信息以及掩码
特点:
1. 该类型的LSA只有ABR可以产生
2. 该类型的LSA只能在区域内部传输
3. 该类型的LSA在传输过程中,每经过1个ABR,AdvRouter都会变化一次
查看信息LSA的命令:display ospf lsdb sumary 192.168.56.0-->查看192.168.56.0这个3类LSA的详细信息;
4类LSA:
type:sum-asbr
linkstate ID :ASBR的router-id
AdvRouter :ABR的router-id
包含的信息:ASBR的router id ,目的就是为了配置5类LSA。一起计算OSPF外部路由
特点:
-该类的LSA,只在ABR可以产生(第一次产生是由与ASBR在同一个区域的ABR产生的)
-该类的LSA,只能在区域内部传输
-该类型的LSA,只能在传输过程中,每经过1个ABR,AdvRouter 都会变化一次,能够说明这个LSA只能在区域内部传输。
查看详细的LSA命令:display ospf lsdb asbr 6.6.6.6--->查看router-id为6.6.6.6 路由器4类LSA的详细信息;
5类LSA
Type-external
linkstate ID-外部路由的网段
AdvRouter - ASBR的router-id(自治系统边界路由器)
包含的信息:外部路由器的网段和掩码
特点:
*该类型的LSA。只有 ASBR 可以产生
*该类型的LS,可以传输到网络的任何地方,并且没有任何的变化【该LSA没有任何的区域概念】
查看详细LSA的命令:display ospf lsdb ase 192.168.1.0 -->查看192.168.1.0这个5类LSA的详细信息
OSPF协议中,宣告路由的方式,有两种:
*network ,该命令后面跟的网段,只能是“直连路由”;【通过该命令宣告的路由,都称之为OSPF内部路由】
该命令,具有三层功能(例如-在R1上配置下面的命令)
R1:
ospf 1
area 12
network 192.168.12.0 0.0.0.255
&R1上的所有接口上,凡是IP地址属于192.168.12.0/24的接口,全都启用OSPF协议
-该端口可以发送OSPF报文;
-该端口可以接收OSPF报文;
-该端口上的IP地址中的网段信息,可以通过宣告进入到OSPF数据库
所以:想要建立OSPF邻居关系的路由器之间的接口/网段,必须通过network的方式宣告
*import-route ,该命令后面跟的网段,可以是任何类型的路由:
该命令仅仅具备1个功能,即将该命令后面的网段信息,宣告进入到OSPF数据库;
--------------------------------------------------------------------------------------------------------------------------------------------
经过上面的学习我们知道,5类LSA可以传遍整个OSPF网。但是,5类LSA表示的是“外部路由”。
通常情况下,外部路由的稳定性非常差,因为该路由的稳定性不是由我们公司自己来确定的。
如果这种路由非常的不稳定,总是频繁的UP/down,那么ASBR就会频繁的产生/删除5类LSA。
那么这种影响就会传遍整个OSPF网络,导致每个OSPF路由器都不稳定。
所以,我们在企业网内部,为了保护某些重要的区域,不受这种“不稳定的外部链路的影响”,就得考虑使用:特殊区域!
特殊区域:指的是不要4/5类LSA的区域
-sub区域:末梢区域
*不允许LSA-4/5
*允许LSA-1/2/3【该区域的ABR会自动的产生1个3类LSA,表示默认路由】
配置:在该区域的所有路由器上配置(本案例指的是R1/R2)
命令:
ospf 1
area 12
stub --->将区域12配置为末梢区域
但是,在stub区域中,虽然没有了4/5类LSA,外部链路不会影响这个区域了。该区域中依然会有大量的表示其他区域的路由的3类LSA,如果其他区域
的链路不稳定的话,也会影响到该区域。
所以,为了解决这个问题,我们有了另外一种特殊区域:totally stub(完全末梢区域)
-totally stub区域:完全末梢区域
*不允许LSA-3/4/5
*允许LSA-1/2【该区域的ABR会自动的产生1个3类LSA,表示默认路由】
配置:先将区域配置为stub去,然后再次在该区域的ABR上配置以下命令
R1/R2:
OSPF 1
area 12
stub
R2(ABR):
ospf 1
area 12
stub no-summary--->将该区域配置为totally stub区域
-NSSA区域(not so stub area):不那么stub区域
如下案例:
AR14和AR10之间,AR12-AR13之间配置为静态路由
AR1-AR11为区域1,为了防止AR12和AR13之间的静态路由不稳定影响LSA数据库,将该区域配置为stub区域
PC2访问Server1的时候数据包返回时,AR12不知道去往192.168.60.1的路由,因为区域1被配置了stub区域,我们知道stub区域不会产生4/5类的LSA,
即使配置了import-router static,区域1依然不会存在192.168.60.1的路由,更不会同步给区域0,这个时候就需要将区域1配置为NSSA区域,将外部区域引入到ospf中。
这个NSSA区域所产生的LSA被称为7类LSA。
*不允许LSA-4/5
*允许LSA-1/2/3【该区域的ABR会自动的产生1个7类LSA,表示默认路由】
配置:在该区域中的所有路由器上配置
命令:R10/R11
OSPF 1
area 1
undo stub-->取消原来配置的stub区域,配置stub区域不能再配置为NSSA区域
nssa --->将区域1配置为nssa区域
该区域不会受到其他普通区域引入的外部路由的影响,但是自己区域中的路由器,能够自由的引入外部路由。
7类LSA:
Type-NSSA
linkstate ID-外部路由的网段
Advrouter -ASBR的router-id
包含的信息:外部路由的网段和掩码
特点:
1. 该类型的LSA,只有NSSA区域的ASBR可以产生
2.该类型的LSA,只能在NSSA区域内部传输;
3.该区域的ABR,会自动的将7类LSA,转化成5类LSA(AR11会将NSSA区域的7类转换成5类LSA同步给AR12),如果该区域有多个ABR,只有router-id大的ABR,才有资格进行转换!
也可以通过display ospf brief信息里的“NSSA Translator state:“参数可以看出Elected表示转换者,“disabled”表示不转换。
在nssa区域中,虽然没有了4/5类的LSA,普通区域引入外部链路不会影响这个区域了。但是该区域中依然有大量的表示其他区域的路由的3类LSA,如果其他区域
的链路不稳定的话,也会影响到该区域。
所以为了解决这个问题,我们有了另外一种特殊区域:totally nssa(完全nssa区域)
-totally NSSA区域(完全stub区域):
不允许LSA-3/4/5
允许LSA-1/2/7/3*【该区域的ABR会自动产生1个3类LSA,表示默认路由】
配置:先将区域配置为NSSA区域,然后再次在该区域的ABR上配置下面的命令:
命令:
R10
OSPF 1
area 1
nssa --->将该区域1配置为nssa区域
R11(ABR)
OSPF 1
area 1
nssa no-summary-->将区域1配置为totally stub区域
--------------------------------------------OSPF的路由表-------------------------------------------
*其中包含的是所有“使用LSA计算出来”最好的路由:
*路由的类型:
1. OSPF内部路由【通过network命令宣告的路由】
&区域内部路由,通过1类和2类LSA表示
&区域间的路由,通过3类LSA表示,由ABR路由器产生
&路由类型的代码:OSPF
2. OSPF外部路由【通过import-router命令宣告的路由】
&通过4/5类的LSA计算出来的
&在OSPF路由表中3类LSA优先于7类LSA,当LSA中同时存在3类LSA默认路由和7类LSA默认路由时,3类预先与7类。
查看命令:display ip routing-table protocol ospf
&路由类型的代码:O_ASE / 0_NSSA
prefix/mask protocol preference cost next-hop interface
*prefix,前缀,也叫路由的网段:
*mask,与prefix一起,称之为:路由!
*protocol,表示的是该路由器学习这个路由条目的方式(直连/静态/RIP/OSPF/ISIS/BGP)
*preference,表示的是路由条目的稳定性,数值越小越稳定,取值范围是0-255.(每种类型的路由都有一个默认的“优先级”,但是可以基于需要进行人为修改)
-ospf内部路由,优先级:10
-ospf外部路由,优先级:150
-如果想要修改OSPF路由的优先级,可以通过下面的命令:
ospf 1
preference 9--->将所有的OSPF内部路由修改为9;
preference ase 149 -->将所有ospf外部路由修改为149;
*cost,表示的是该路由器去往这个路由条目所表示的网段的“距离”,这个是“计算”出来的;
计算方法:
沿着路由的传递方向,所有入接口的cost值的,累加和。
【路由的传递方向和数据包的传递方向,是完全相反的!】
沿着数据的传递方向,所有出接口的cost值,累计和。
查看接口的cost的命令:display ospf interface gi0/0/X
修改接口的cost的命令:interface gi0/0/x -->ospf cost *** -->取值范围是:1-65535
默认情况下,每个接口的ospf cost 都是1;
这个默认值是通过下面的公式计算出来的:cost =100Mbit/接口的实际带宽!
*因为当前我们在设备上的,每个接口的实际带宽,都几乎是大于100Mbit,
*所以通过上面的公式计算出来的数值通常都是0<cost<1,
*所以我们在ospf协议中表示的时候,就取值为整数1。
如果我们希望每个接口的cost值按照上述的公式计算出来的是不相同的,
我们可以修改公式中的参数-“100Mbit”。这个参数称之为:参考带宽!
如果想要修改的话,就必须在整个OSPF网络的所有路由器上都得修改,
必须确保是完全相同的,否则出现路由环路或者次优路径。
修改命令如下:
*ospf 1
bandwidth-reference 10000 --->单位为兆
*next-hop ,表示的是按照这个路由条目转发的数据包,接下来应该去找的那个IP地址
*interface,表示的是按照这个路由条目转发的数据包的“出接口”。
什么时候改参考带宽?
路由过滤:
1. 抓取路由(ACL/prefix-list)
2.通过专门的工具,干掉路由
情况1:支队路由表进行过滤(LSA依然存在于数据库中)
*当我们配置了同网段的交换机技术和不同网段之间的路由技术,我们就可以确保任何连个设备之间,都是可以互通的。
*但是,为了限制某些业务不被访问,我们可以通过设置“过滤”策略的方法来实现“流量的控制”
*那么这个所谓的“策略”,其实是ACL(access control list:访问 控制 列表)
-ACL结构
*条件:基于该条件去抓取/匹配感兴趣的数据包
*动作:包含了permit/deny两种动作
-ACL的类型:
*基本ACL,匹配数据时使用的条件,非常的少,仅仅匹配源IP地址
*高级ACL,匹配数据时使用的条件,非常的多,匹配数据包的源,目标 ,协议号 ,源端口号 ,目标端口号
-ACL的表示:
*基本ACL:取值范围是:2000----2999
*高级ACL:取值范围是:3000-3999
-ACL的组成/原理
1.由很多的“acl条目/条件”组成
2.每个条目都有自己的“序列号”,也称之为‘规则号’,英文名字是“rule;
3. 数据包来了以后,去检查ACL的时候,过程如下:
-首先,会减ACL 中“规则号”最小的哪个条目:如果匹配了,则执行动作;后续条目就不检查了
如果不匹配,则继续检查第二个条目
-如果后续的条目依然不匹配,则继续向后检查,如果一直不匹配,则一直检查到最后一个条目;如果最后一个条目依然没有匹配,则执行ACL的“默认的隐含条目”
即,拒绝所有。但是,有一个例外,就是acl和traffic-filter结合使用的时候是“允许所有”。
举例:
acl 2000 --->基本ACL
rule 10 permit source 192.168.1.0 0.0.0.255 ---->这里的0.0.0.255表示的是通配符而不是反掩码
0.0.0.255表示只检查前3个为0的三个字节,也就是只检查源IP地址中前3个字节,也就是只要前三个字节是192.168.1的就匹配住了,
-掩码:
*区分IP地址的网络位和主机位
*掩码的结构:网络位全为1,主机位全为0
*1 和 0 永远不会交叉出现;
*通常仅仅关注1
-反掩码:
*就是将掩码中的网络位和主机位完全反过来
*左边全为0,右边全为1
*永远不会交叉出现
*通常仅仅关注的是0;
-通配符:wildcard bits
*通常仅仅关注的是0;
*0和1的位置,没有任何要求
*所以可以长的像掩码,也可以像反掩码,也可以两者都不像,【如:rule 5 permit source 192.168.0.0 0.0.6.0】也是可以的。
注意:
*ACL不能对设备自己产生的流量起作用,只对经过这个启用ACL规则的接口的数据包起作用。
* 当我们发送一个数据包的时候,如果没有指定源IP地址,那么数据包的源IP地址是:数据包的出接口的IP地址
*如果我们希望OSPF的邻居能够建立,但是设备之间不能ping通,这时,我们需要启用高级ACL
. 配置:acl 3000
rule 10 deny icmp source 192.168.1.1 0.0.0.0 destination 192.168.2.1 0.0.0.0
interface gi0/0/1
traffic-filter inbound acl 3000
OSPF路由过滤:
*通过ACL抓取路由,进行允许和拒绝的动作【此时我们只能使用“基本ACL ”,抓取路由:只能抓取网段,不能抓掩码】
配置命令:
acl 2001
rule 10 deny source 192.168.1.1 0.0.0.0
rule 20 permit source any --->此时ACL 与fiter-policy结合使用时,默认是拒绝所有,所以要注意添加一条允许 策略,否则会过滤掉整个入方向的路由。
quit
ospf 1
filter-policy 2001 import --->去掉ospf路由表中 192.168.1.1的路由,import表示入方向过滤。
*但是,上面用基本ACL匹配路由条目,非常的不精准,因为只能匹配路由的网段,不能匹配掩码;
当遇上如下这种情况的时候,我们只想过滤掉192.168.1.0/24,但是如果使用下面的命令,
就会将192.168.1.0/24和192.168.1.0/25都会过滤掉,所以不精准。
*如果想要精准的过滤OSPF路由,我们可以使用:“前缀列表”(ip-prefix)
例如:路由表里有192.168.1.0/24 和 192.168.1.0/25的路由,我们使用下面的命令:
acl 2000
rule 10 deny source 192.168.1.0 0.0.0.255
ospf 1
filter-policy 2000 import
*前缀列表用法:
如上面给出的例子:想要过滤掉192.168.1.0/24的路由,保留192.168.1.0/25;
命令:
ip ip-prefix A deny 192.168.1.0 24----->A表示定义的名字
ip ip-prefix A permit 0.0.0.0 0 greater-equal 0 less-equal 32
ospf 1
filter-policy ip-prefix A import---->把这个名字为A的前缀列表应用到OSPF引入的路由上,也就是外部进入的路由(5/7类路由)
注意:
1.前缀列表的名字,是一个字符串,可以随意写
2.前缀列表中,可以同时包含多个“条目信息”,不同的条目是通过index区分开,就索引号;作用于rule 号相同
3.前缀列表中的多个条目之间的查找顺序,与ACL中的完全相同,从index号码从小到大开始查询,如果有匹配的
则执行动作,后面的条目就不再查看了。如果没有匹配的条目,则继续查看后面的index条目;
4.前缀列表最后有一个隐含的拒绝所有
5.前缀列表,能够同时匹配路由的网段和掩码
* 结构如下:
ip ip-prefix {名字} {动作} {网段} {掩码的范围}
-动作:包含了permit和deny
-网段:此时的网段,其实表示的是“前缀列表”想要匹配的多个路由条目的“公共部分”,以及公共部分的长度
例如:10.10.0.0 16,表示该前缀列表仅仅匹配前面16bit为10.10的路由条目
-掩码:表示的是匹配的那些路由的掩码的范围,比如我们想匹配4个路由条目,如下:
*10.10.1.0/24
*10.10.2.0/25
*10.10.3.0/26
所以,我们想要匹配的哪些明细路由的掩码的范围应该是“24≤*≤26,”
即greater-equal 24 less-equal 26
如果想要精确的匹配一个路由条目,比如如192.168.1.0/24可以直接写成:
ip ip-prefix A permit 192.168.1.0 24
另外,我们需要记住:在前缀列表中是如何表示所有路由的:
ip ip-prefix A permit 0.0.0.0 0 greater-equal 0 less-equal 32
如果想通过前缀列表仅仅表示一个默认路由?
ip ip-prefix A permit 0.0.0.0 0
如果想实现“仅仅接收出了默认路由以外的其他所有路由”,怎么配置?
ip ip-prefix A deny 0.0.0.0 0
ip ip-prefix A permit 0.0.0.0 0 greater-equal 0 less-equal 32
或还有一个更加简单的方法:
ip ip-prefix A permit 0.0.0.0 0 greater-equal 1 less-equal 32
如何过滤如下这样的路由条目:
192.168.1.0/24
192.168.1.0/25
192.168.1.0/26
192.168.1.0/27
-通过ACL 进行匹配过滤:
acl 2000
rule 10 permit source 192.168.1.0 0.0.0.255
192.168.1.0:路由的公共部分
0.0.0.255:与公共部分对应的通配符
*路由的公共部分如何确定?
#多个路由条目的网段中的相同的位,不变化,直接写到“公共部分”中
#多个路由条目的网段中的不同部位,变成0,写到“公共部分”中;
上面的ACL匹配的仅仅是路由的网段中的前面24bit,必须是192.168.1.,具体的掩码是多少根本无法匹配。
--通过前缀列表匹配:
ip ip-prefix A permit {路由的公共部分} {匹配的所有明细路由的掩码的范围}
路由的公共部分:192.168.1.0 24
匹配的所有明细路由的掩码的范围:greater-equal 24 less-equal 27
因此命令应该是:
ip ip-prefix A permit 192.168.1.0 24 greater-equal 24 less-equal 27
具体匹配的路由是哪些?
192.168.1.0/24
192.168.1.0000 0000/25
192.168.1.1000 0000/25
192.168.1.0000 0000/26
192.168.1.0100 0000/26
192.168.1.1000 0000/26
192.168.1.1100 0000/26
192.168.1.0000 0000/27
192.168.1.0010 0000/27
192.168.1.0100 0000/27
192.168.1.0110 0000/27
192.168.1.1000 0000/27
192.168.1.1010 0000/27
192.168.1.1100 0000/27
192.168.1.1110 0000/27
OSPF路由过滤总结:
*OSPF的入向过滤(import)
命令:filter-policy {acl/ip-prefix} {名字} import
特点:
1. 该工具仅仅是针对OSPF的路由表,进行操作:不影响数据库;
2. 该工具对OSPF路由表中的各种路由,都可以实现效果;
*OSPF的出向路由过滤(export):
命令: filter-policy {acl/ip-prefix} (名字) export ------------->OSPF出向过滤
特点:
1. 该工具其实是针对的OSPF的数据库进行过滤
2. 并且过滤对象时OSPF的5/7类LSA;一旦过滤了,那么这个ASBR就不会产生这个LSA
*OSPF的类型:
1. 5/7类LSA过滤
-在ASBR上配置
-命令如下:
ospf 1
filter-policy ip-preifx {名字} export
2.3类LSA过滤
-在ABR上配置
-命令如下:
ospf 1
area {区域号}
filter {acl} import或export
举例:
R2是连接area 0和area 2的ABR路由器,area 0区域是10.10.3.0/24,area 2区域是10.10.1.0/24
现在,在ABR(R2)上过滤3类LSA,干掉10.10.1.0/24以及10.10.3.0/24的3类LSA;
分析:
*不让area0区域中的路由从R2出去,方法1
*不让area 2区域中的路由从R2进入,方法2
方法1:
R2:
acl 2001
rule 10 deny source 10.10.3.0 0.0.0.0
rule 20 permit source any
quit
ospf 1
area 2
filter 2003 export
quit
方法2:
acl 2001
rule 10 deny source 10.10.1.0 0.0.0.0
rule 20 permit source any
quit
ospf 1
area 0
filter 2001 import
quit
*路由表组成:
1. 内部路由1类、2类,3类
2.外部路由4类,5类,7类
*管理路由表:
-修改参数
-特殊路由
-过滤路由
-路由汇总:当路由器之间发送大量路由信息的时候,为了节省链路资源以及对方的设备系统资源。也就是将大量的路由“汇总”成少量的路由条目。
但是,上述的这种描述方法,对于OSPF/ISIS而言,是不精准的。
因为,OSPF/ISIS 属于 IGP协议中的“链路状态路由协议”,
即,OSPF/ISIS路由器之间互相发送和传输的,根部不是路由,是链路状态信息(LSA/LSP)
OSPF路由汇总(OSPF LSA汇总)
-概述:指的是将数据库中的链路状态信息,向外发送的时候,由很多条目变成很少的条目信息;
-作用:
1. 可以节省设备之间的链路资源,并且能够节省对端设备资源,同时简化了路由表的大小。从而提高了路由器转发数据包的效率
2. 提高ospf网络的稳定性。因为链路状态信息经过汇总后,路由器之间仅仅发送汇总后的路由,之前那些明细路由就不再发送了。所以
明细路由即使非常不稳定,也不会发送到其他路由器上去了。
@LSA汇总类型:
-3类LSA汇总
*配置的设备:产生那些被汇总的LSA的ABR
*配置命令:R2(ABR路由器)
ospf 1
area 2 -->被汇总的路由所在的区域(这里就是R2)
abr-summary 10.10.0.0 255.255.0.0-->被汇总的路由是10.10.0.0/16,汇总后产生一个10.10.0.0/16的路由条目
-5类/7类LSA汇总
配置设备:被汇总的路由所在的ASBR
配置命令:
R5(ASBR)
ospf 1
adbr-summary 10.10.0.0.0 255.255.0.0-->汇总之后产生的路由
-明细路由:
10.20.1.0 -- 0000 0001
10.20.2.0 -- 0000 0010
10.20.3.0 -- 0000 0100
10.20.4.0 -- 0000 1000
汇总路由:网段/掩码
#汇总路由的“网段”
1.所有明细路由,从左向右看,
-相同的bit,不变,直接写到“汇总路由中”
-不同的bit,变化,变成0,写到“汇总路由中”;
10.20.0000
------------------------------------------------ospf引入默认路由------------------------------------------------------------
路由配置:
*SW1中的三个接口都加入area0
*R1配置默认路由:ip router-static 0.0.0.0 0.0.0.0 192.168.13.3
*R2配置默认路由:ip router-static 0.0.0.0 0.0.0.0 192.168.23.3
*R3配置静态路由:ip router-static 192.168.6.0 24 192.168.13.1(主链路)
ip router-static 192.168.6.0 24 192.168.23.2 preference 100 (备用链路)
因为R1和R2上是默认路由,所以要使用default-route-advertise来将路由引入到ospf。
此时pc1去PC2有两条路,为了保证来回路径一致并且是最优的,若配置R1优先于R2,可以配置下面的命令。
命令:
ospf 1
default-route-advertise type 1 //设置type类型为1
注意:
1. ospf产生的默认路由是5类LSA
2.默认情况下是type2,默认的cost为1
3.type1的优先级高于type2
无论是7类LSA,还是5类LSA,都细分为type1和type2两种类型:(默认为type2)
当area 中type为1时:那么使用该LSA计算路由的时候,路由表中的条目的cost等于该LSA中所携带的metric/cost,
然后加上LSA在传递过程中所经过的每一个入接口的cost的累加和。
* 应用场景:
让企业内网的每个设备选择一个主/备出口设备:
当area中type为2时:那么使用该LSA计算路由的时候,路由表中的条目的cost等于该LSA中所携带的metric/cost(默认是1)。
*应用场景:
让企业内网的每个设备选举一个距离自己最近的设备作为出口设备:
在上面的案例中,我们也了解到了OSPF产生默认路由的方式!
-作用:通过一个路由条目,可以表示网络的所有网段/所有的目的地;
第一种方式:有条件产生默认路由
*自己手动配置的默认路由
*然后再使用下面的命令:ospf 1--->default-route-advertise //引入默认路由
第二种方式:无条件产生默认路由
*不管自己本地是否有默认路由,直接使用下面的命令,永远产生默认路由
#建议:如果公司边界有多个出口设备的时候,使用该方式产生默认路由。实现出口之间的备份。
ospf 1--->default-route-advertise always
#建议:如果公司边界只有一个出口设备,使用该方式产生默认路由。这样的话可以保证内网的稳定性
思考:
什么情况下,我们建议在网络中配置OSPF默认路由的时候,不要使用always?
答案:
当一个网络中存在多个出口设备的时候,并且他们之间是备份的关系的。
所以我们建议不要使用always。
并且。主出口设备产生的默认路由,要比备份出口设备产生的默认路由,要好!
实现方法:
1. 将主出口设备的OSPF的默认路由的5类LSA的type 修改为1;备份出口是type 2;
2. 如果主/备出口默认路由的5类LSA的type都是默认的2,那可以调整备份出口的cost变大。
Forwarding Address : 0.0.0.0的作用:
<Huawei>display ospf lsdb ase 0.0.0.0
OSPF Process 1 with Router ID 192.168.10.1
Link State Database
Type : External
Ls id : 0.0.0.0
Adv rtr : 2.2.2.2
Ls age : 611
Len : 36
Options : E
seq# : 80000006
chksum : 0x9ac5
Net mask : 0.0.0.0
TOS 0 Metric: 100
E type : 2
Forwarding Address : 0.0.0.0 -->转发地址。通常情况下该参数为0.0.0.0;表示该路由的下一跳IP地址为:发送该LSA的设备
Tag : 1
Priority : Low
详细说明:
配置说明:
1. 各接口的IP地址,SW1无需配置
路由配置:
1. 黄色部分的接口使用ospf 协议,都在区域0
2. AR1配置静态路由:192.168.1.0 24 192.168.100.1
将静态路由引入到ospf中:ospf 1
import-route static
*此时192.168.1.0的路由信息已经在AR1-AR4中以5类LSA存在,但是,AR4上查看去192.168.1.0的外部路由时如下图:
可以看到去往192.168.1.0网段的下一跳地址是192.168.34.2,而R4去往192.168.1.0网段还有一条最优的路径就是192.168.100.1,并非最优的。
*说明R1并未把去往192.168.1.0的真实下一跳地址同步给区域中的其他路由器,若要实现这一点,可以使用下面的方法:
1. 在R1的出接口G0/0/2上启用ospf ,区域可以随意
2.在AR4的出接口G0/0/2也启用ospf,区域也可以随意,也可以与R1不同。
命令:
R1:
OSPF 1
area 1
network 192.168.100.0 0.0.0.255
R4:
ospf 1
area 4
network 192.168.100.0 0.0.0.255
*再一次在R4上查看外部路由表可以看到去往192.168.1.0网段的路由的下一跳是192.168.100.1
*并且AR1和AR4链路数据库中的5类LSA 的Forwarding Address:从0.0.0.0变为192.168.100.2.
也就是去往192.168.1.0网段的下一跳都会选择是192.168.100.2。
总结如下:
-5类lsa中,Forwarding-adress(FA)参数的主要作用:
*是在广播网络环境中,存在多个出口设备的情况下,解决数据转发的次优路径的问题
*如果外部路由的下一跳IP地址的出接口,没有启用OSPF,或者启用了OSPF,但是接口的网络类型是P2P或者P2MP那么该外部路由的FA地址是:0.0.0.0
那么其他路由器在计算外部路由的时候,路由条目的下一跳IP地址应该是ASBR,此时需要借助于4类LSA来确定下一跳IP。
*如果外部路由的下一跳IP地址的出接口启用了OSPF并且是广播和非广播的网络类型,那么FA地址就是ASBR上的外部路由的下一跳地址,就会携带进入LSA
*同时,如果想让R4真正的能够使用FA作为下一跳IP地址的话,那么R4所连接的SW的端口,也要启用OSPF,该端口是什么网络类型以及属于什么区域都可以。
--------------------------------------------OSPF认证--------------------------------------------------
-作用:为了确保路由器之间建立邻居关系更加安全可靠
-类型:
如何区分认证的类型(认证的配置位置)
*链路认证:在某个接口上启用认证+配置密码:仅仅在某一个接口/链路上配置就可以了
*区域认证:在某个区域中启用认证+配置密码:需要在这个区域的所有路由器上配置
因为一旦在某个路由器上配置了区域认证,那么这个设备上的所有属于该区域的链路,都会在发送和接收
报文,进行认证方式和认证密码检查;
-密码的认真方式:
*明文:密码在“传输过程中”,不加密:只要抓取报文,就能看到密码
*密文:密码在“传输过程中”,加密,即使抓取报文,也不能解读密码
-案例:
------------------------------------------OSPF虚链路---------------------------------------------------
-背景介绍
OSPF中的所有非骨干区域必须与骨干区域相连,如果非骨干区域没有与骨干区域相连,会导致不同区域之间的链路无法互通。
那么当出现一个区域没有和骨干区域相连,又需要OSPF链路之间互通,我们就需要建立“OSPF虚连路”
-OSPF虚链路:
说明:就是穿越一个与骨干相连的区域,形成一个虚链路
1. OSPF虚链路,永远属于区域0
2. 虚链路的建立是通过“1类LSA”
3.必须确保底层的“穿越区域”邻居完好
4.“穿越区域”不能是特殊区域
-案例
方法1:OSPF虚拟链路
-配置命令:
R2:
OSPF 1
area 234
vlink-peer 4.4.4.4
R4:
OSPF 1
area 234
vlink-peer 2.2.2.2
方法2:import引入ospf 路由,使用的是5类LSA
* 在R2建立一个OSPF进程2
*然后在R2的ospf 1进程中使用import 将ospf2 导入,在ospf 2进程中使用import 将ospf 1导入
命令:
R2:
注意清除R2原ospf1 area 234中宣告的192.168.23.0
ospf 2 route-id 2.2.2.2
area 234
network 192.168.23.0 0.0.0.255
quit
ospf 1
import-route ospf 2
quit
ospf 2
import-route ospf 1
方法3:GRE隧道
*在R2上创建一个loopback 24接口 IP:10.10.1.1 32
*在R4上创建一个loopback 24接口 IP:10.10.1.2 32
*在R4的进程OSPF 1 区域234中宣告 10.10.1.0
*在R2的进程OSPF 1 区域234中宣告10.10.1.0【注意:做完方法2后,需要将R2的ospf 2 删除,然后在ospf 1里面宣告各区域的地址段】
*在R2中创建隧道:
命令:
[R2]interface Tunnel 0/0/24
tunnel-protocol gre
source loopback 24
description 10.10.1.2 ---->描述信息
ip add 192.168.24.1
*在R4中创建隧道:
命令:
[R4]interface Tunnel 0/0/24
tunnel-protocol gre
source loopback 24
destination 10.10.1.1
ip add 192.168.24.2
*最后还要将192.168.24.0分别在R2和R4上宣告,宣告区域都是区域0
命令:
R2:
ospf 1
area 0
network 192.168.24.0 0.0.0.255
R4:
ospf 1
area 0
network 192.168.24.0 0.0.0.255