OSPF相关知识与实例配置【基本知识及多区域配置】
OSPF(开放式最短路径优先协议)是一个基于链路状态的IGP,相比于RIP有无环路;收敛快;扩展性好等优点,也是现在用的最多的;所以这次实验就针对于OSPF(HCNA)内容进行一个探究:
type1 LSA:每个ospf路由器都会产生type1 LSA;描述了对应设备接口的物理接口所连接的链路或接口,并且表明了个链路的状态、开销等参数;(只在区域内泛洪)
Type2 LSA:网络LSA由DR或者BDR产生;描述了DR和BDR所在网段的链路状态,也仅在所属的区域内传播。因为DR和BDR仅在广播类型网络中存在,所以type2 LSA也仅在广播类型网络中存在;(只在区域内泛洪)
Type3 LSA:网络汇总LSA由ABR产生,描述所连接的某个区域内某个网段的路由聚合路由(包括缺省路由),并通过Totally Stub 或NSSA区域。这样区域通信在到达区域边界ABR后都是采用聚合路由进行的,可以大大减少区域内部路由器的路由表项的数量;(在整个AS区域内泛洪)
Type4 LSA:ASBR聚合LSA也由ABR产生,描述从该ABR到达OSPF路由域中各个ASBR的路由,通告给整个路由域,但仅可向普通区域泛洪,不能进入Stub区域、Totally Stub区域、NSSA区域、Totally NSSA区域;(整个AS区域泛洪)
Type5 LSA:自治系统外部LSA由ASBR产生:描述到达AS外部的路由,也仅可向普通区域中泛洪,不能进入Stub区域、Totally Stub区域、NSSA区域、Totally NSSA区域;
Type7 LSA:NSSA外部LSA也由ASBR产生,也是描述到达AS外部的路由,但是专用于NSSA区域和Totally NSSA区域连接的ASBR向NSSA区域内泛洪的AS的路由,然后经过NSSA区域ABR上转换成type5 LSA向ospf路由域内其他区域中传播;
这个是我的实验图解:
我们先按照图中所标志的IP配置好;实验大致的方向为:ospf多区域配置(area1和area2为非骨干区域,area0为骨干区域),在area1中设置区域认证,在AR1和AR3直接设置端口认证;(如果端口认证和区域哪个优先级高?);然后在路由器和主机的接口上配置抑制端口(和rip的被动接口作用很像;)在area 0区域中,理解router-id并且弄清DR和BDR的选举;最后可以修改下一些常用的参数(协议优先级,ospf开销值)来改变路由状态;
[R1,2,3,4]ospf 1 router-id 1.1.1.1[R1,2,3,4-ospf-1]area 0[R1,2,3,4-ospf-1-area-0.0.0.0]network 192.168.13.0 0.0.0.255[R1,2,3,4-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255[R3-ospf-1-area-0.0.0.0]network 192.168.3.0 0.0.0.255
Rip中:通告的网段只能是自然网段的路由,通告网段路由是不带子网掩码的,因为是直接采用对应IP地址所在的自然网段的子网掩码;
Ospf中:通告的路由可以是对应的自然网段,也可以是超网路由:
使用network通告时:需要指出ip地址和反码(通配符掩码)
那么什么是通配符掩码呢?
当成功建立了邻接关系,会弹出以下的命令:
这个和ospf状态机有关:
--------------------------------------------------华丽的分割线--------------------------------------------------------
当OSPF邻居建立的过程之中,路由器在和邻居达到完全邻接关系之前,要经过几个状态。这些状态在OSPF RFC 2328有相关的定义,这些状态分别是Down, Attempt, Init, 2-Way, Exstart, Exchange, Loading和Full。本文将介绍一下各种状态的详细工作内容
这是第一个OSPF邻居状态,在这个状态下路由器没有从邻居那收到任何信息(包括hello包),不过在这个状态下,路由器可以主动发出hello包给自己的邻居。
当路由器之间是Full状态的时候,如果在RouterDeadInterval时间段内(4倍的默认HelloInterval)没有从邻居收到任何hello包,或者手工配置的邻居信息被移除,那么邻居状态会从Full变为Down.
Attempt状态仅仅存在与NBMA网络中手工配置邻居的情况下。表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
2-Way状态说明了两台路由器之间已经建立了双向的链接,每一个路由器都已经收到了对方的hello包。这个状态发生在路由器收到了一个包含自己Router ID的hello包。在这个状态下,路由器决定是否要去跟邻居建立临接关系。(这是建立邻接关系以前最高级的状态)
在广播和NBMA网络类型中,一个路由器仅与designated router (DR) 和 backup designated router (BDR)建立Full状态关系,而其他路由器最终停留在2-way状态。在点对点和电对多点网络类型中,路由器和所有相连接的路由器最终都达到Full状态。
在2-Way状态的结束之前,广播网络和NBMA网络类型中的DR和BDR选举出来。
注意:在init状态下接受到邻居发来的Database Descriptor (DBD)包也会导致路由器转变成2-way状态。
这是形成邻接关系的第一个步骤,一旦DR和BDR选举出来,真正的链路状态信息交换才会发生在路由器和DR,BDR之间。邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的,初始DD序列号也是在此状态下决定的
在Exstart状态下,路由器和它的DR, BDR建立了一种master-slave的关系并且选择一个初始的sequence number来形成临接。拥有更高的Router ID的路由器将会成为master并且开始交换信息,同时master也是唯一一个可以增加sequence number的路由器。需要注意的是,逻辑上可以认为DR/BDR中拥有更高的Router ID的一个可以成为master。但是请记住,DR/BDR的选举可能会因为手工配置了priority而不一样,不仅仅依赖与Router ID。因此有可能DR会在这个状态下充当slave状态。
在Exchange状态下,OSPF路由器交换database descriptor (DBD)包。DBD包含了链路状态通告(LSA)头部文件,并且描述了整个链路状态数据库的内容。每一个DBD报文都含有一个sequence number,并且这个号码会每一次被master增加。在Exchange状态下,路由器同时会发送链路状态请求报文(LSR)和链路状态更新报文(LSU)。接收到的DBD报文会和路由器链路状态数据库进行比较以确保是否有任何新的或者更多的链路状态信息是可用的。
在Loading状态下,发生的是真正的链路状态信息交换。基于DBD报文所提供的信息,路由器会发送链路状态请求报文。邻居会在链路状态更新报文中提供相应的链路状态信息。在临接关系下,如果一个路由器收到了一个过期或者丢失了LSA,它会发送一个LSR请求相应的LSA。所有链路状态更新数据包都会在这个状态下达到同步。
在Full状态下,路由器和其邻居会达到完全临接状态。所有路由器和网络LSA都会交换并且路由器数据库达到同步。
Full状态是OSPF路由器的一个最常见的状态。如果一个路由器停留在另外一个状态,那么就说明了在路由器建立临接关系的过程中是存在问题的。唯一的例外是2-way状态,是在广播网络中常见的。在广播网络中,邻居之间(除了和DR,BDR之外)会最终处于2-way状态。
--------------------------------------------------华丽的分割线--------------------------------------------------------
配置好之后,我们来查看下路由信息:
对于R1路由器来说,通过ospf协议已经获取到非直连网段的路由信息;并且从中可以看到优先级以及开销值,下一跳地址等信息;但是现在并没有能够到达主机的路由信息,因为还没有进行配置;
[R5]ospf router-id 5.5.5.5[R5-ospf-1]area 1[R5-ospf-1-area-0.0.0.1]network 192.168.15.0 0.0.0.255[R5-ospf-1-area-0.0.0.1]network 192.168.25.0 0.0.0.255
但是我们发现现在并没有建立任何邻居关系,这是为什么呢?
因为我们没有对AR1和AR2进行area1 的配置,因为在这个拓扑图中,R1和R2充当了ABR(区域边界路由器);所以在AR1和AR2上需要配置区域area1,不然只配置了area0是不能进行通行的:
在R1,R2上进行了area1相应的配置,在R3,和R4上进行了area2相应的配置:
[R1-ospf-1]area 1[R1-ospf-1-area-0.0.0.1]network 192.168.15.0 0.0.0.255[R2-ospf-1]area 1[R2-ospf-1-area-0.0.0.1]network 192.168.25.0 0.0.0.255[R3-ospf-1]area 2[R3-ospf-1-area-0.0.0.2]network 192.168.36.0 0.0.0.255[R4-ospf-1]area 2[R4-ospf-1-area-0.0.0.2]network 192.168.46.0 0.0.0.255
在之前的流程里面,我故意没有通告area0下路由器连接主机的网段,因为我想要对network做一个无聊的测试:希望能够从中发现一些有趣的问题:
【1】通过抓包,我们可以发现:在经历过从邻居发现到邻接关系的建立再到稳定状态,(对这建立状态的抓包详细过程在另一个文章中可以找到;)目前处于稳定状态,现在两个路由器之间都是在互相发送hello报文;
【2】当我们使用network通过一条新的路由时:
会出现一个更新报文(由通告了新的路由的路由器发出)和一个应答报文(由另一端的路由器发出);会将新的路由通告出来;
【3】此时通过查看非直连路由器上的路由表,可以发现:
已经出现了到达192.168.3.0网段的路由;
【4】尝试使用pc1ping通PC3
成功连接;
会看到更新报文,但是这些更新包文中并没有通告我使用network所通告的路由;
自然也不能够ping通:
这是为什么呢?
有可能是因为路由器型号的问题;
可以这样说:
AR4的G0/0/1接口以及对应的链路是属于area0;
AR4的G1/0/0接口以及对应的链路是属于area2;
但是当我在area1里面通告这个路由的时候,同时抓包两条链路(属于area0的链路和属于area1的链路,观察他们通告的时间是否有延迟)
尝试抓包:
两边路由器在没有进行新的路由通告下,都是正常的;
当我们添加了这条路由,(这个更新报文真的复杂)
这个是area0的报文:
这个是area2的报文:
理解:我们可以发现:因为是在area2(非骨干区域)里面通告的这条路径,所以area2区域里面的type1和type2就能够马上反应,但是对于area0来说,就相对于area0要慢一点,大概是30-40S之间;这个应该是路由拓扑发生了变化,type3不能马上做出反应,要等从DR发出来type2收到之后,ABR才能产生type3;
在对于一些安全性方面的问题,可以通过配置被动接口来完成:配置被动接口来优化连接终端的网络,使终端不再收到以及发送任何ospf报文;
[R5]ospf 1 进入到ospf界面
[R5-ospf-1]silent-interface g1/0/0 配置抑制接口
[R1-ospf-1]silent-interface all 将所有的接口配置为被动接口
通过配置被动端口:主机和交换机相连接的端口的链路上已经没有任何ospf报文,
防止了路由欺骗。这个原理和rip很像;
但是我们通过查看R1上路由器的路由表的时候:
发现仍然存在着到达已经被设置为被动端口的出接口的网段的路由;
这是由于:被动接口的特性只是不在收发任何ospf协议报文,但是被动接口所在网段的直连路由条目如果已经在ospf通告中,那么也会被其他ospf邻居路由器接收到;
为了保证骨干区域的安全,需要骨干区域(area 0)配置区域认证,认证不通过的是不能够在建立邻接关系的;
[R1]ospf 1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]authentication-mode simple plain 123456
【在这里,plain这个是明文密码,cipher:指定为密文密码】
[R2-ospf-1-area-0.0.0.0]authentication-mode simple plain 123456
[R3-ospf-1-area-0.0.0.0]authentication-mode simple plain 123456
[R4-ospf-1-area-0.0.0.0]authentication-mode simple plain 123456
再次之后,又有一种优先级比区域认证更高的认证:接口认证:
[R3-GigabitEthernet1/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]ospf authentication-mode simple plain 12345678
----------------------------终止线------------------------------------
写到这里就先不写了。功力不深,现在的情况也并没有做出发散型的方式去完成,都比较按部就班的照实验书上的步骤去完成,这是没有什么好的效果的,先停一下吧;
后面是以前做的试验记录
2017/3.29 By tea
实验记录:
OSPF优点:无环路;收敛快;扩展性好;
ospf支持区域的划分,一个网段(链路)只能属于一个区域,或者说每个运行ospf的接口必须指明属于哪个区域;
区域0为骨干区域,骨干区域负责在非骨干区域之间发布区域间的路由信息,在一个ospf区域中有且只有一个骨干区域
1、配置好ip
2、部署单区域ospf
[S1]ospf 1 1代表的是进程号
[S1-ospf-1]area 0 区域0是骨干区域;
[S1-ospf-1-area-0.0.0.0]network 172.16.1.0 0.255.255.255
[S1-ospf-1-area-0.0.0.0]network 172.16.10.0 0.255.255.255
[S1-ospf-1-area-0.0.0.0]network 172.16.20.0 0.255.255.255
[S2]display ospf 1 peer 查看路由
[S1]display ip routing-table protocol ospf 查看ospf路由
OSPF协议可以将整个自治系统分为不同的区域
链路状态只在区域内泛洪。
区域边界路由器ABR:负责传递区域间路由信息;(但至少一个端口是在骨干区域,可以是物理连接也可以是非物理连接)
所有的非骨干路由区域之间传递信息必须经过骨干区域;
骨干区域必须和非骨干区域相连接,且非骨干区域之间不能直接进行路由交换;
1、配置好IP(真特么难配置)
2、配置骨干路由器;
在1.2.3.4创建ospf进程,在骨干区域0告知总部各网段;
[R1]ospf 1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 10.0.12.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 10.0.13.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 10.0.3.0 0.0.0.255
给1.2.3.4配置好之后检测其连通性;
3、配置非骨干区域路由器;
在R5上创建ospf进程1,并进入区域1;
[R5]ospf 1
[R5-ospf-1]area 1
[R5-ospf-1-area-0.0.0.1]network 10.0.15.0 0.0.0.255
[R5-ospf-1-area-0.0.0.1]network 10.0.35.0 0.0.0.255
[R5-ospf-1-area-0.0.0.1]network 10.0.1.0 0.0.0.255
在R1和R3进入区域1,与R5相连接的接口进行通告
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]network 10.0.15.0 0.0.0.255
[R3-ospf-1-area-0.0.0.1]display ospf interface 查看ospf的接口状态;
现在pc1.和pc3,4能ping同了。
[R5]display ospf lsdb 查看ospf链路状态数据库信息;
4、给R6配置和R5相同的配置、让所有的路由器都能够互相ping通
1、配置好ip地址然后搭建ospf网络;
3、配置公司分部的ospf区域的明文认证;
[R1-ospf-1-area-0.0.0.1]authentication-mode simple plain huawei 配置简单认证模式 配置参数plain;
[R1-ospf-1-area-0.0.0.1]authentication-mode simple huawei 不配置参数plain
[R1-ospf-1-area-0.0.0.1]display this 查看现在的文件(在这里就是查看配置的密码)
只要都是simple和一样的密码,参数plain不会影响;
4、配置公司总部的OSPF区域密码认证;
[R3-ospf-1-area-0.0.0.0]authentication-mode md5 1 huawei1
验证字标字符必须相同;
5、配置OSPF链路验证;
[R2-GigabitEthernet0/0/2]ospf authentication-mode md5 1 huawei5
ospf协议支持两种认证方式:区域认证和链路认证;(接口认证优先级高)
区域认证:一个区域中所有的路由器在该区域下的认证模式和口令必须一致;
链路认证:可以专门针对某个邻居设置单独的认证模式和密码;
认证方式分为:简单验证模式和md5和key chain;(key chain验证模式可以同时配置
多个秘钥,不同秘钥可以单独设置生效周期)
在简单认证模式下,配置plain后,在查看配置文件,会议明文方式显示口令 ;
1、还是用这个图,已经配置好ip也搭建了ospf网络;
2、配置被动接口;
为什么要配置被动端口;被动端口一般都是配置在网络末端;防止路由器发送hello报文到pc机上,泄露信息;
[R1-ospf-1]silent-interface g0/0/1 配置被动接口;
[R1-ospf-1]silent-interface all 将所有的接口配置为被动接口;
配置了被动接口,抓包g0/0/1,可以看到:不在有信息会发到主机上去;防止了路由欺骗;
4、验证被动端口;
配置了被动端口之后,ospf报文不在转发,包括建立邻居和维护邻居的hello报文;
被动接口的特性只是不在收发任何ospf协议报文,但是被动接口所在网段的直连路由条目如果已经在ospf通告中,
那么也会被其他ospf邻居路由器接收到;(比如上面的防止路由欺骗)
OSPF接口也被称作被动接口:不会接受和发送ospf报文
作用;在运行了ospf协议中,接口不与本链路上的其他路由器建立邻居关系,
ospf信息不被某一网络中的路由器获得且使用、本地路由器不接受网络
中其他路由发布的路由信息
配置被动接口来优化连接终端的网络,使终端不再收到任何ospf报文;
1、还是用这个图,已经配置好ip也搭建了ospf网络;
2、配置被动接口;
为什么要配置被动端口;被动端口一般都是配置在网络末端;防止路由器发送hello报文到pc机上,泄露信息;
[R1-ospf-1]silent-interface g0/0/1 配置被动接口;
[R1-ospf-1]silent-interface all 将所有的接口配置为被动接口;
配置了被动接口,抓包g0/0/1,可以看到:不在有信息会发到主机上去;防止了路由欺骗;
4、验证被动端口;
配置了被动端口之后,ospf报文不在转发,包括建立邻居和维护邻居的hello报文;
被动接口的特性只是不在收发任何ospf协议报文,但是被动接口所在网段的直连路由条目如果已经在ospf通告中,
那么也会被其他ospf邻居路由器接收到;(比如上面的防止路由欺骗)
默认使用路由器全局下的路由管理router-ID
选举规则为:如果通过router-id配置了router-id,则按照配置来设置;
如果没有通过router-id配置了router-id,则选择配置了ip的loopback,次之选择ip地址最大的座位router-id;
如果已经选择选举出了router-id的接口ip地址被删除修改,才触发重新选择‘的过程。
router-id改变之后,必须通过手工执行reset命令才能 重新选择新的router-id
(发现在ospf router-id选举中:感觉物理接口的ip比还回接口的优先级大默认路由全局router-id建议使用还回接口(逻辑接口)而不是物理接口地址)
1、配置好ip
2、验证router-id选举规则
[R1]display ospf routing 查看router-id
在没有进行任何配置之前(只是启动并且打开ospf)则router-id为0.0.0.0
接口配置的顺序会影响router-id的选举;如果先配置了物理接口之后,会触发router-id
的选举,选举出来之后就算在配置了优先级更高的换回接口也不会去重新选举了;
[R1]ospf 1 router-id 0.0.0.1 手工配置router-id
3、理解ospf的router-id
记住一句话:ospf协议的router-id必须在整个路由选择区域内保持唯一!
DR,所有路由器将各自的链路状态信息发给DR,再有DR以组播的方式发送至所有的路由器。
BDR,代替出了问题的DR;
广播类型的网络或NBMA类型的网络都会选举一个DR和一个BDR(针对接口);
比较方式:1、DR优先级;*优先级为0的不参与选举;
2、优先级相等,比较router-id(大的为dr):
1、用之前的图,ip都已经配置好;ospf网路也搭建完成;
2、查看默认情况下的DR和BDR状态;
[R2]display ospf interface
[R2]display ospf peer 两种方式都能查看dr和bdr
[R3-GigabitEthernet0/0/0]ospf p2mp-mask-ignore 使用命令将网络类型为点到点
不过在使用这个命令,好像要将所有的路由器端口都设置为点到点
然后再reboot路由器才有用,如果只改两个路由器的对端是没用的
[R2]display ospf peer 然后再用这个查看dr和bdr的情况;
4根据现网需求影响dr和bdr的选举;
(将性能好的成为dr,性能次之的成为bdr,然后性能不好的则不能参加选举)
[R2-GigabitEthernet0/0/0]undo ospf p2mp-mask-ignore 讲端口类型改(*为广播类型;
[R1-GigabitEthernet0/0/0]ospf dr-priority 100 修改dr的优先级(默认为1)
必须全部路由器reboot之后才能重新选举;
开销值=带宽参考值/接口带宽;
hello timer:发送hello报文时间的间隔和保持邻居关系的计时器;
dead timer:失效时间;
P2P和Broadcast类型接口发送的hello报文时间间隔为10 。邻居失效时间为40
P2MP和NBMA类型接口的发送的hello报文时间间隔为30 失效时间为120 4倍关系
为什么是4倍关系:防止用户Hello时间调太大,邻居翻动,所以会自动保持,但是并不是说一定要4倍,邻居之间一样就可以。数值上通常要比Hello大,而且要留好余量,
一般都会用2到3倍以上(因为网络可能会有延迟)。
1、基本配置使用了之前的网络;
2、配置协议优先级;
rip和ospf两个协议:如果同时存在,则优先使用ospf协议***ospf协议优先级为10
而rip协议的优先级为100,如果想要使用rip协议获得路由,则需要:
[R2-ospf-1]preference 110 修改协议的优先级;
3、配置ospf的开销值
[R2-GigabitEthernet0/0/1]ospf cost 1000 修改ospf链路的开销值
[R2-GigabitEthernet0/0/1]display ospf interface 查看开销值;
<R2>display ip routing-table protocol ospf 发现路由表里面只有一条路能到到达.3
注意:ospf链路的开销值是给予接口修改的,一定要在路由更新的入接口修改才生效;
就是说,如果修改了AR2的g0/0/2的接口的cost,则pc1ping包不会从g0/0/2发送,但是pc3收到之后返回可以从两条路转发,但是不会影响对面的g0/0/0的开销值
如果只修改了AR4的g0/0/0的接口cost,则pcping包会从两条链路同时转发,但是pc3收到之后返回一个ping包则只会选择走g0/0/2; 不会影响对面g0/0/2的cost
4、配置ospf[R1-GigabitEthernet0/0/1]ospf timer hello 15的计时器;
[R1-GigabitEthernet0/0/1]ospf timer hello 15
[R1-GigabitEthernet0/0/1]ospf timer dead 60 如果只配置一个路由器,因为面不匹配,则不会发现令居;所以要把端口的这两个值修改成一致的就能通、
防止用户Hello时间调太大,邻居翻动,所以会自动保持,但是并不是说一定要4倍,邻居之间一样就可以。数值上通常要比Hello大,而且要留好余量,
一般都会用2到3倍以上(因为网络可能会有延迟)。
不同的路由协议之间不能直接共享各自的路由信息。需要依靠配置路由的引入的来实现、通过配置引入。一种路由协议可以自动获得所有来自另一种协议的所有路由信息;
1、基本配置
2、搭建RIP和OSPF网络
[R1-rip-1]undo summary
[R1-rip-1]network 172.16.0.0
[R2-rip-1]network 172.16.0.0
[R1-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255
3、配置双向路由引入
[R1-ospf-1]import-route rip 1 在ospf进程中使用这个命令引入rip
[R1-rip-1]import-route ospf 1 在rip进程中使用这个命令引入ospf
4、手工配置引入时的开销值
[R1-rip-1]import-route ospf 1 cost 3
修改了这个值。在ospf引入rip时候时手工配置了路由开销值;
怎么解释呢,我觉得是引入了ospf1之后再把自己rip的cost修改为3,
所以查看R2的时候:rip的开销值为4、(因为到192那边还要经过一跳)
本文出自 “12630368” 博客,请务必保留此出处http://12640368.blog.51cto.com/12630368/1911437
原文地址:http://12640368.blog.51cto.com/12630368/1911437