OSPF及实验

风格不统一 提交于 2019-12-05 11:31:26

OSPF:Open Shortest Path First,最短路径优先
1)基本概念:
标准的LS型协议--共享拓扑
组播更新:224.0.0.5/6
触发更新,存在周期更新  30min
OSPF是跨层封装协议,协议号89

OSPF需要结构化部署:1、区域划分   2、IP地址规划            
链路状态型路由协议的距离矢量特征:在OSPF中,区域之内传拓扑,区域之间传路由
管理距离110,使用COST值作为度量值,有计算公式 

2)OSPF数据包
hello:用于发现、建立和保活(10s)邻居关系。存在全网唯一的Router-ID,表示路由器建立邻居关系所用的身份标识,使用
  IP地址的方式表示
DbD:Database Description,携带着链路状态的目录
LSR:链路状态请求
LSU:链路状态更新--携带了真正的LSA
LSAck:确认         


LSA:链路状态通告,就是OSPF中不同的拓扑或者路由信息 
LSDB:链路状态数据库,是所有LSA的集合   
              
3)OSPF状态机:
down:未开启OSPF协议。一旦启动协议并宣告之后,接口发出hello包,立即切换到下一状态
Init:初始化状态,若接收到的hello包中存在自己的Router-ID,则和对方一起进入下一状态
2-way:此状态表明邻居关系建立完成。
条件匹配:关注网络类型,点到点网络类型直接将进入邻接关系的建立,MA网络类型需要DR/BDR的选举,选举时间40s
Exstart:预启动,双方使用类hello的DBD包,进行主从关系选举-比较RID,大者优先进入下一状态
Exchange:准交换,交互真正的DBD报文,需要使用ACK确认
Loading:加载,使用LSR/LSU/LSAck获取未知的LSA信息
Full:邻接关系建立完成

4)OSPF的工作过程           
 启动配置完成后,本地基于224.0.0.5组播收发hello包,建立邻居关系,生成邻居表;
再进行条件的匹配,匹配失败将停留于邻居关系,仅hello包周期保活即可;
匹配成功者间可以建立邻接(毗邻)关系,需要DBD共享数据库目录,LSR/LSU/LSack来获取未知的LSA信息,当收集完网络中所有的LSA后,生成数据表--LSDB
LSDB建立完成后,本地基于SPF选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中;完成收敛
收敛完成后--hello包周期保活  
-- 30min周期的DBD比对,若不一致将使用LSR/LSU/LSack重新获取
             
网络结构发生变化:
1、新增
2、断开
3、设备无法通信:hello 10s保活   dead time 40s,dead time 计时到后,邻居关系断开,删除所有从该邻接处学习到的所有LSA信息;


OSPF配置:
R1(config)#router ospf 1   //启动协议时需要配置进程号,进程号仅具有本地意义
R1(config-router)#router-id 1.1.1.1  //手工配置RID。不配置时,环回最大>物理接口最大
宣告:1、激活接口   2、发布拓扑或路由   3、区域划分
R1(config-router)#network 12.1.1.0 0.0.0.255 area 0
                                   反掩码
R1(config-router)#network 1.1.1.1 0.0.0.0 area 0
           
区域划分规则:
1、必须拥有骨干区域0,所有非骨干区域必须直连骨干区域              
2、必须拥有ABR--区域边界路由器              
              
反掩码:32位二进制,使用点分十进制的形式表示,由连续的0和连续的1构成;0表示固定位,1表示可变位              
              
              
使用ACK数据包直接确认称为显式确认            
R1#show ip route ospf
     2.0.0.0/32 is subnetted, 1 subnets
O       2.2.2.2 [110/2] via 12.1.1.2, 00:08:20, FastEthernet1/0
     3.0.0.0/32 is subnetted, 1 subnets
O IA    3.3.3.3 [110/66] via 12.1.1.2, 00:08:20, FastEthernet1/0
     23.0.0.0/24 is subnetted, 1 subnets
O IA    23.1.1.0 [110/65] via 12.1.1.2, 00:08:20, FastEthernet1/0              
              
字母问题:
O       本区域内通过LS计算所得的路径             
O IA    区域之间通过ABR引入的 
O E1/2  从其他路由协议或者其他OSPF进程通过重发布技术引入的路由
O N1/2 从其他路由协议或者其他OSPF进程通过重发布技术引入的路由同时本地是NSSA区域            
              
管理距离110,使用COST值作为度量值,有计算公式
COST=参考带宽÷接口带宽  默认参考带宽位100M  
当接口带宽大于参考带宽时,COST取1,会导致选路不佳
可以修改参考带宽--必须全网一致  

5)成为邻接关系的条件--关注网络类型
基于网络类型------点到点     MA多路访问
在点到点网络中,邻居关系必须成为邻接关系,否则无法正常收敛
在MA网络若全网均为邻接关系,那么将可能出现大量重复性的LSA洪泛;
为避免该现象,将进行DR/BDR的选举;所有的非DR/BDR间不得建立成为邻接关系;
选举规则:1、先比较接口优先级----- 默认1;大优;0标识不参选,点到点接口默认为0;
          2、优先级相同,比较设备的RID,数值大优;
   

角色关系:
DR与DROTHER之间是邻接关系
DR与BDR之间是邻接关系
DROTHER与DROTHER邻居关系(2WAY)
BDR与DROTHER之间是邻接关系


干涉选举的方法:
1、修改DR最大优先级,BDR次大
r1(config)#interface fastEthernet 0/0
r1(config-if)#ip ospf priority 3
注:DR选举非抢占,故修改优先级后必须重启设备的OSPF进程
r1#clear ip ospf process
Reset ALL OSPF processes? [no]: yes

2、修改DR最大优先级,BDR次大;剩余所有设备优先级修改为0;
   不需要重启设备的进程;切记不得将所有设备优先级修改为0,至少必须存在DR;

 

 

 

 

 

2、OSPF虚链路---非骨干区域间的ABR到骨干区域的ABR处授权--建立一条虚链路
r2(config)#router ospf 1
r2(config-router)#area 1 virtual-link 4.4.4.4
              中间的穿越区域   对端的ABR的RID
因为没有新的网段出现,故选路正常;为了避免周期的信息对中间区域的影响,故停止虚链路间的所有周期行为-----不可靠


3、多进程双向重发布
   一台设备上若同时运行多个进程,那么不同进程拥有不同的RID,生成各自的数据库,当数据库不共享;仅将各自计算所得路由加载于同一张路由表内;若多个进程工作于同一个接口上,仅最新启动的进程生效;

在解决不规则区域时,让连接两个非骨干区域的ABR设备,将不同区域宣告到本地的不同进程下,之后使用重发布技术,进行路由共享即可;
r4(config)#router ospf 1
r4(config-router)#redistribute ospf 2 subnets
r4(config-router)#exit
r4(config)#router ospf 2
r4(config-router)#redistribute ospf 1 subnets

一、OSPF的数据库表  
OSPF协议基于LSU来共享LSA信息;
LSA--链路状态通告----拓扑或者路由信息  
在不同的条件下发出不同类别的LSA;
详细查看某条LSA:
r1#show ip ospf database router 1.1.1.1
                      类别名  link-id/番号
无论哪种类别的LSA均存在以下参数:
  LS age: 142      老化时间,周期1800归0,也可触发归0;最大老化3609s
  Options: (No TOS-capability, DC)
  LS Type: Router Links        类别名,此处为1类
  Link State ID: 1.1.1.1        link-ID,在目录中的编号
  Advertising Router: 1.1.1.1    通告者的RID
  LS Seq Number: 80000004   
  Checksum: 0x65F9
  Length: 60
  Number of Links: 3


                    传播范围            通告者               携带信息
LSA1 router         本区域           本地区域所有设备       本地的直连拓扑
LSA2 network        本区域               DR                  MA网段部分的拓扑
LSA3 Summary        整个OSPF域           ABR                O IA 域间路由
LSA4 asbr-summary   除ASBR所在区域外     ABR                 ASBR位置
                    的整个OSPF域
LSA5 External       整个OSPF域           ASBR                 O E  域外路由
LSA7 nssa-external  NSSA区域内           ASBR                 O N  域外路由
                 离开该区域后转换回5类

                      Link-ID                       通告者
LSA1 router         通告者的RID                本地区域所有设备
LSA2 network        DR的接口IP地址                 DR
LSA3 Summary        O IA路由,目标网络号       ABR,在经过下一跳ABR时,修改为本地
LAS4 asbr-summary   ASBR的RID                  ABR,在经过下一跳ABR时,修改为本地
LSA5 External       O E 路由,目标网络号             ASBR(不修改)
LSA7 nssa-external  O N路由,目标网络号              ASBR(不修改)


二、减少LSA的更新量
【1】手工汇总 ----减少骨干区域LSA量
【2】特殊区域 ----针对非骨干区域

 

【1】手工汇总
1)域间路由汇总---只能在ABR上配置
r1(config)#router ospf 1
r1(config-router)#area 2 range 5.5.4.0 255.255.252.0
              通过该区域的1/2类LSA计算所得路由才能汇总成功


2)域外路由汇总---ASBR上配置
r4(config)#router ospf 1
r4(config-router)#summary-address 99.1.0.0 255.255.252.0

注:以上汇总均会自动生成空接口防环路由;

 

 

 

给各个路由器及接口配IP地址

 

R1路由器:


r2(config)#interface fastEthernet 0/0
r2(config-if)#ip address 172.16.1.1 255.255.255.0
r2(config-if)#no shutdown
r2(config-if)#exit
R2、R3...R12全部配完地址
注意:R4为ISP 使用公网地址


建立MGRE环境  在area0 里建立

注:点到点的工作方式,仅适用于一个网段两个节点的网络;
故在MGRE环境下若适用tunnel口默认的工作方式,那么一个网段内若存在两个以上节点将出现邻居关系翻滚;

解决:
1、所有节点修改 BROADCAST
r1(config)#interface tunnel 0
r1(config-if)#ip ospf network broadcast
注:若MGRE环境下,不同接口处于不同的网络类型;若hello time一致将建立邻居关系,当工作机制的不同导致LSA更新出现问题;必须所有节点处于相同的工作方式

注2:MGRE环境下,若构建的OSPF工作环境不是一个全连结构(网段内所有设备间均建立邻居关系),那么一旦使用broadcast工作方式,就必须将DR固定在中心站点位置,否则将出现DR位置混乱,导致网络无法正常收敛;
2、所有节点修改为点到多点模式;
点到多点为cisco为OSPF协议额外设置的工作方式
r1(config)#interface tunnel 0
r1(config-if)#ip ospf network point-to-multipoint

点到多点的工作:hello time30;无DR选举;生成访问各个节点的精确路由;


缺省条目:
R3(config)#ip route 0.0.0.0 0.0.0.0 172.16.3.2
R5(config)#ip route 0.0.0.0 0.0.0.0 172.16.4.2
R6(config)#ip route 0.0.0.0 0.0.0.0 172.16.5.2
R7(config)#ip route 0.0.0.0 0.0.0.0 172.16.6.2

R3:(中心站点)
R1(config)#int tun 1
R1(config-if)#ip address 10.1.1.1 255.255.255.0
R1(config-if)#tunnel source s2/0
R1(config-if)#tunnel mode gre multipoint
R1(config-if)#ip nhrp map multicast dynamic
R1(config-if)#ip nhrp network-id 100

R5:(分支站点)
R5(config)#int tun 1
R5(config-if)#ip address 10.1.1.2 255.255.255.0
R5(config-if)#tunnel source s2/1
R5(config-if)#tunnel mode gre multipoint
R5(config-if)#ip nhrp nhs 10.1.1.1 
R5(config-if)#ip nhrp map 10.1.1.1 172.16.3.1
R5(config-if)#ip nhrp network-id 100

R6:(分支站点)
R6(config)#int tun 1
R6(config-if)#ip address 10.1.1.2 255.255.255.0
R6(config-if)#tunnel source s2/2
R6(config-if)#tunnel mode gre multipoint
R6(config-if)#ip nhrp nhs 10.1.1.1 
R6(config-if)#ip nhrp map 10.1.1.1 172.16.3.1
R6(config-if)#ip nhrp network-id 100

R7:(分支站点)
R7(config)#int tun 1
R7(config-if)#ip address 10.1.1.2 255.255.255.0
R7(config-if)#tunnel source s2/3
R7(config-if)#tunnel mode gre multipoint
R7(config-if)#ip nhrp nhs 10.1.1.1 
R7(config-if)#ip nhrp map 10.1.1.1 172.16.3.1
R7(config-if)#ip nhrp network-id 100

分支站点R5,R6,R7开启伪广播

R5(config)#int tun 1
R5(config-if)#ip nhrp map multicast 172.16.3.1

R6(config)#int tun 1
R6(config-if)#ip nhrp map multicast 172.16.3.1

R7(config)#int tun 1
R7(config-if)#ip nhrp map multicast 172.16.3.1

 

全部启用OSPF协议(除了R4以外)


OSPF的接口网络类型----OSPF协议在不同网络类型下的接口上,不同的工作方式;


r1#show ip ospf interface lo0  查看OSPF协议在某个接口上的工作方式


OSPF接口工作方式:
网络类型               OSPF接口工作方式
环回接口               LOOPBACK            无hello,使用主机路由发送
点到点(HDLC/PPP)     POINT_TO_POINT      hello time 10s   不选DR   
BMA   (以太网)       BROADCAST           hello time 10s   选DR
NBMA  (MGRE)         POINT_TO_POINT      hello time 10s   不选DR


举例R3
R3(config)#router ospf 1
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 172.16.1.2 0.0.0.0 area 1
R3(config-router)#network 172.16.2.2 0.0.0.0 area 1
R3(config-router)#network 10.1.1.1 0.0.0.0 area 0(讲隧道口宣布到area 0区域内)
R3(config-router)#network 3.3.3.3 0.0.0.0 area 1(R3的环回依旧在area 1区域内)
R5、R6、R7的OSPF协议都得宣告隧道地址  不能宣告实际地址。

在R3---R7(除R4)的环境中 因为启用OSPF协议 所以需要把隧道接口改为’点到多点‘


举例R3
R3(config)#interface tunnel 0
R3(config-if)#ip ospf network point-to-multipoint

在R9 与 R12上启用重发布来连接不规则区域:


R12(config)#router ospf 1
R12(config-router)#router-id 12.12.12.12
R12(config-router)#network 172.16.8.2 255.255.255.0
R12(config)#router eigrp 90
R12(config-router)#no auto-summary
R12(config-router)#network 100.1.1.1 0.0.0.0
R12(config-router)#network 12.12.12.12
R12(config)#router ospf 1---(重发布)
R12(config-router)#redistribute eigrp 90 subnets---(重发布)

 

切记:OSPF协议中缺省路由的导入只能通过专用命令

r2(config-router)#default-information originate

注:默认进入路由为类型2,种子度量为1;

r2(config-router)#default-information originate  ?

  metric       OSPF default metric

  metric-type  OSPF metric type for default routes


R9(config)#router ospf 1
R9(config-router)#router-id 9.9.9.9
R9(config-router)#network 172.16.10.2 255.255.255.0
R9(config)#router ospf 2
R9(config-router)#network 172.16.11.1 0.0.0.0 area 4
R9(config-router)#network 9.9.9.9 0.0.0.0 area 4
R9(config)#router ospf 1---(重发布)
R9(config-router)#redistribute ospf 2 subnets---(重发布)
R9(config)#router ospf 2---(重发布)
R9(config-router)#redistribute ospf 1 subnets---(重发布)

配置NAT:


R3、R5-7均按如下方法配置:
R3(config)#access-list 1 permit 172.16.0.0 255.255.252.0(R1、R2汇总)
R3(config)#ip nat inside source list 1 int s2/0 overload
R3(config)#int s2/0
R3(config-if)#ip nat outside
R3(config-if)#int f0/0
R3(config-if)#ip nat inside
R3(config-if)#int f1/1
R3(config-if)#ip nat inside

骨干区域汇总------减少路由条目

OSPF的不规则区域
【1】远离骨干的非骨干区域 ----ABR必须同时工作于区域0,才能进行区域间的路由共享
【2】不连续骨干---从X区域获取到的路由信息不得发往编号为X的区域;即便X区域连接
了本区域不同的ABR;---水平分割

解决方案:
1、普通tunnel---在两台ABR上建立隧道,然后将其宣告于OSPF协议中
缺点:周期的保活和更新,触发的信息均需要通过中间的穿越区域,对中间区域影响较大;
      选路不佳;
      OSPF协议若通过不同的区域学习到的相同的路由,优选区域0;若均为非骨干,比较度量值;  


R3(config)#router ospf 1
R3(config-router)#area 1 range 172.16.0.0 255.255.252.0

R6(config)#router ospf 1
R6(config-router)#area 2 range 172.16.8.0 255.255.248.0

R7(config)#router ospf 1
R7(config-router)#area 3 range 172.16.16.0 255.255.252.0

域外(OE2)路由器
R12(config)#router ospf 1
R12(config-router)#summary-address 172.16.16.0 255.255.252.0

R9因为 我在图中配了 俩个环回 不能汇总  所以不需要减少

 

非骨干区域----减少LSA的更新量、
area 1区域内:没有ASBR区域边界路由器(所以需要totally-stub,完全末梢区域--仅保留一条3类的缺省)   

优化之后,3类只剩下一条缺省:

    
R3(config)#router ospf 1
R3(config-router)#area 1 stub no-summary
R1(config-router)#area 1 stub
R2(config-router)#area 1 stub

area 2区域内:有ASBR区域边界路由器(所以需要完全NSSA--在NSSA的基础上进一步拒绝3的LSA,自动产生3类缺省)
优化之后,它应该会删除3、4、5类LSA,然后只保留一条3类缺省,并多出一条7类LSA


R6(config)#router ospf 1
R6(config-router)#area 2 nssa no-summary
R11(config)#router ospf 1
R11(config-router)#area 2 nssa
R12(config)#router ospf 1
R12(config-router)#area 2 nssa

area 3区域内:有ASBR区域边界路由器(所以需要完全NSSA--在NSSA的基础上进一步拒绝3的LSA,自动产生3类缺省)
优化之后,它应该会删除3、4、5类LSA,然后只保留一条3类缺省,并多出一条7类LSA:


R7(config)#router ospf 1
R7(config-router)#area 3 nssa no-summary

R8(config)#router ospf 1
R8(config-router)#area 3 nssa

R9(config)#router ospf 1
R9(config-router)#area 3 nssa

此时area 3被设置为了NSSA区域,R9拥有了缺省路由,那么我们就可以在R9上的OSPF的进程2中下放缺省,这样才可以出去。


R9(config)#router ospf 2


R9(config-router)#default-information originate--强制下发缺省

此时R10就会有缺省

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!