第四天
MGRE的非shortcu配置:
中心(Hub)的配置:
ip都配置好后,中心要配置一条缺省指向下一跳接口
[r1]ip router-static 0.0.0.0 0 15.0.0.2
分支(Spoke)的配置
NHRP映射表
NHRP映射表建立过程
静态路由协议下的MGRE环境:
配置
动态路由协议下的MGRE环境---RIP
DSVPN --- 华为
DSVPN专门为了Hub-Spoke架构诞生服务
通过总部中转流量会导致:
1、总部在中转分支之间的数据流量时,会消耗总部hub设备的cpu内存资源,造成资源紧张
2、总部需要对分支之间的数据流量进行封装和解封装,造成额外的网络延时
3、IPSec协议不支持广播和组播报文。
DSVPN通过NHRP协议动态收集,维护和发布各节点的公网地址等信息,解决了源分支无法获取目的分支的公网IP地址的问题。从而可以在分支和分支之间直接建立一条动态的VPN隧道,实现分支和分支之间的直接通讯,减轻总部的设备负担。
DSVPN借助MGRE技术,使VPN隧道能够传输组播报文和广播报文,并且一个tunnel接口可以和多个对端建立VPN隧道,减少网络管理员配置量,并且在新增分支或者分支地址变化的情况下,能够自动维护总部和分支之间的隧道关系而不需要调整任何配置。
DSVPN 概念
当源spoke需要向目的spoke发送数据报文时,源spoke通过与hub节点的静态mgre隧道交互NHRP协议报文获取目的spoke节点的公网地址,并且与目的Spoke节点建立动态mgre隧道
OSPF----开放式最短路径优先协议
RIPV2和OSPFV2的相同点:
RIPV2和OSPFV2的不同点
OSPF区域划分----结构化部署
区域划分的要求:
OSPF区域结构部署规则的必要性
1、至少连接两个区域2、连接的区域中至少有一个区域03、在区域0中至少有一个活跃的邻居作用:用于传递区域间路由
1、对于ABR设备不允许转发区域间路由信息2、对于真实ABR而言 --- 能够将自己直连的非骨干区域的区域路由信息传递给骨干区域能够将自己直连的非骨干区域的区域路由信息传递给非骨干区域能够将自己从骨干区域学习到的区域路由信息传递给非骨干区域
OSPF路由器角色
OSPF数据包
Hello
用来周期发现、建立、保活 OSPF 邻居关系 ,通过组播 224.0.0.5 发送。10S 发送一次来确认邻居的存在hold-time(死亡时间)---- 四倍的 hello 时间Router-ID ( RID )全域唯一,标识路由器身份用IP 地址形式表示( 32bit ,点分十进制)配置方法:手工配置自动配置默认最大环回 IP 地址,若没有最大环回则选择最大物理 IP 地址(路由器的 RID选择)。[r1]display router id --- 查看路由器全局 ID 值
注意:启动 OSPF 进程前,必须要有接口 IP 地址,若存在 IP 地址,则在第一次启动 OSPF 进程时,会选取第一个配置的 IP 地址为 RID 。 --- 如环回为1.1.1.1,接口ip为12.0.0.1,先配置了12.0.0.1,则RID为12.0.0.1但是,若删除第一个配置的 IP 地址后,则恢复为自动配置规则。在华为设备中,若没有接口 IP 地址,则 OSPF 启动后, RID 为 0.0.0.0在思科设备中,若没有接口 IP 地址,则 OSPF 启动失败无论采用手工配置还是自动选择,一旦 OSPF 进程启动, RID 被确定,则无法变化,必须重启进程才能生效。
DBD --- 数据库描述报文
LSR ---链路状态请求报文
LSU --- 链路状态更新报文
LSAck --- 链路状态确认报文
OSPF七种状态机
条件匹配
DR--- 指定路由器BDR--- 备份指定路由器DRother---- 其他路由器
点到点 ---- 不用选举 DR 和 BDR ---- 直接开始建立邻接关系(加快收敛的方法)MA 网络 ---- 在一个网络中,不限制节点数(会选举 DR 和 BDR )
接口优先级 ----->0-255----> 优先级越大,为 DR ,次一级为 BDR (华为默认为 1 )RID---- 越大越优先
DR 和 DRother ----> 邻接关系DR 和 BDR ----> 邻接关系BDR 和 DRother ----> 邻接关系DRother 和 DRother ----> 邻居关系
选举过程
DR 设备使用组播 224.0.0.5 向该 MA 网络发送消息。而 DR 和 BDR 使用 224.0.0.6 监听该 MA 网络的消息。DROther 使用 224.0.06 发送自己的 LSU 报文
NBMA 网络类型中存在Attempt。在 NBMA 网络类型下,如果需要启动 OSPF 协议,需要手工指定邻居,否则不会发送 hello 报文。若不发送 hello 报文,则邻居状态处于 attempt 状态。
OSPF工作状态
启动 OSFP 配置完成后, OSPF 将向本地所有运行 OSPF 协议的接口组播 224.0.0.5 发送 hello 报文;hello 报文中携带有本地的 RID 以及本地已知的邻居 RID ;之后生成 邻居表 。邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系;仅 hello 报文保活匹配成功的邻居将 开始建立邻接关系 。首先使用未携带数据的 DBD 报文来进行主从关系选举;之后使用携带数据的 DBD 报文来共享数据库目录;之后本地使用 LSR/LSU/LSACK 报文来获取未知的 LSA 信息;完成本地数据库的建立 --- 生成 数据库表 。之后本地基于数据库生成有向图和最短路径树,之后计算本地到达拓扑中所有未知网段的最短路 径,并将其添加到 路由表 中。收敛完成, hello 报文周期保活。每 30min 进行一次周期更新。
结构突变的场景:
OSPF的基本配置
r1上
[r1]ospf 1 router-id 192.168.1.33
[r1-ospf-1]a 0
[r1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255[r1-GigabitEthernet0/0/0]ospf dr-priority 10
r2上
[r2]ospf 1 router-id 10.1.1.1
[r2-ospf-1]a 0
[r2-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255[r2-GigabitEthernet0/0/0]ospf dr-priority 5
r3上
[r3]ospf 1 router-id 1.1.1.1
[r3-ospf-1]a 0
[r3-ospf-1-area-0.0.0.0]network 192.168.1.3 0.0.0.0[r3]ospf 1 router-id 1.1.1.1
[r3-ospf-1]a 1
[r3-ospf-1-area-0.0.0.1]network 192.168.1.129 0.0.0.0
OSPF报文格式
OSPF报文头部
版本(Version) --- 对于OSPFv2而言,该字段值恒为2
类型(Type)--- 描述OSPF数据包的类型
Hello------1DBD-------2LSR--------3LSU--------4LSACK----5
报文长度(Packet Length)--- 整个OSPF报文的长度-----字节
路由器ID --- 发出该报文的路由器的RID值
区域ID --- 发出该报文的接口所属于的区域的ID值
校验和 --- 验证OSPF整体数据报文的有效性
验证类型 --- 指示该报文使用的认证类型
不认证 ---0简单认证 ----1MD5 认证 ----2 ;
认证数据 --- 用于报文认证所对比的内容 --- 若认证类型为不认证,则该字段全部用0填充
OSPF 的认证功能存在于所有的数据交互过程中,对于任何一种数据报文,都需要进行认证。在认证的过程中,需要对比两个字段,首先对比认证类型字段。若相同,才会对比认证数据字段。
Hello包
网络掩码(Network Mask)
该字段填充的是发送该报文的网络掩码两台 OSPF 路由器如果通过 以太网接口 直连,那么双方的直连接口必须配置相同的网络掩码。 (点到点网络不需要对比该参数)注意:OSPF建立邻居关系需要对比子网掩码信息是华为独有,别的厂商没有这个要求
Hello间隔
两台直连路由器需要确保直连接口的 Hello 时间间隔相同,否则邻居关系无法建立 。缺省情况中, P2P 和 BMA 类型的下,为 10S ; P2MP 和 NBMA 为 30S 。
该字段一共 8bit ,每个比特位都用于指示该路由器的某个特定的 OSPF 特性。而 OSPF 邻居关系建立过程中,该字段中的某些比特位将会被检查,可能影响 OSPF 邻居关系建立。(特殊区域的标记)
[r2-GigabitEthernet0/0/0]ospf dr-priority ? --- 修改 OSPF 接口的 DR 优先级 --- 只是接口的特性INTEGER<0-255> Router priority value
两台直连路由器要建立 OSPF 邻居关系,需要保证双方接口的 dead time 时间相同,否则邻居关系无法正常建立。缺省时间为 hello 的 4 倍
网络中 DR 设备的接口 IP 地址。若没有 DR 或 DR 没有选举出来,则填充 0.0.0.0
网络 BDR 设备的接口 IP 地址若没有 BDR 或未选举结束,则填充 0.0.0.0
在直连链路上发现的有效邻居,此处填充的是邻居的 RID 值,如果发现多个邻居,则包含多个邻居字段。
限制邻居关系建立的参数
在 R2 上修改网络掩码后,R2 会将与 R3 的状态立即修改为 Down 状态。而 R3 会在 40S 死亡时间之后进行状态切换。原因在于, R2 在修改 IP 地址的掩码后,会认为之前的连接中断,需要重新建立连接,所以重置状态机。而 R3 则认为是无法沟通。故会等待死亡时间超时后才切换状态。并且,该情况,在 R3 等待 40S 周期内,还是可以向 R2 转发数据, R2 可以接收到该数据包,但无法回复。
Hello时间
[r1-GigabitEthernet0/0/0]ospf timer hello 20
Dead时间
[r1-GigabitEthernet0/0/0]ospf timer dead 120
注:修改hello时间,则死亡时间随之改变,但如果仅修改死亡时间,hello间隔时间不变
OSPF特殊区域标记
[r1-ospf-1-area-0.0.0.0]nssa --- 和修改掩码效果相同
认证字段
[r1-ospf-1-area-0.0.0.0]authentication-mode simple cipher 123 --- 简单认证
两者均需要等待死亡时间超时,才会从full状态切换到down状态
DBD包
使用未携带数据的DBD报文进行主从关系选举
使用携带数据的DBD报文进行目录共享
使用未携带数据的DBD报文进行确认
接口最大传输单元(接口MTU)
华为将该值设置为0 --- 华为默认不对MTU值进行认证
[r1-GigabitEthernet0/0/0]ospf mtu-enable --- 开启MTU的检测 --- 注:如果开启此功能,两端都要开启
如果两边均开启该功能,则会进行MTU检测,并且进行检测时,若两边MTU不同,则状态会卡在exstart状态
I位 --- 主从关系选举 --- 如果该位置为1,则不会携带LSA头部
M --- 代表后续是否有多个DD报文 --- 该位为1则代表后续还有DD报文。若为0,则代表该报文为最后一个DD报文
MS --- 代表主设备 --- 该比特位为1,则代表Master --- 在主从关系选举完成之前,各个设备都会认为自己是Master
DD序列号
用于确保DD报文传输的有序和可靠性 --- DD序列号逐次加1
DD序列号必须由Master路由器决定,而从设备只能使用Master设备发送来的DD序列号来发送自己的DD报文。(隐形确认机制)
LSA头部
当路由器使用DD报文来描述自己的LSDB时,LSA的头部信息被包含在内
一个DD报文可以包含一个或多个LSA头部信息
LSR包
基于DBD报文请求本地未知LSA信息
链路状态类型、链路状态ID、通告路由器 --- LSA三原则。通过三原则
LSU包
LSAck包
OSPF的接口网络类型
网络类型 | OSPF接口的工作方式 |
BMA |
Broadcast
,可以建立多个邻居关系。需要进行
DR
和
BDR
的选举。
hello 10S
;
dead 40S
|
P2P |
P2P
,只能建立一个邻居关系。不需要进行
DR
和
BDR
的选举,
hello 10S
;
dead
40S
|
环回接口(虚拟接口) |
P2P
,华为设备定义为
P2P
类型,但实际上该接口无数据收发。环回接口默认学
习
32
位主机路由。
hello 10S
;
dead 40S
|
P2MP | P2MP,可以建立多个邻居关系,不需要进行DR和BDR的选举;hello 30s Dead 120s。会学习邻居接口IP地址所对应的主机路由 |
NBMA | NBMA,可以建立多个邻居关系。需要进行DR和BDR选举,Hello 30s Dead 120s。无法自动建立邻居关系 |
Vlink | Vlink,以单播形式发送hello包,hello 10s,dead 40s;不需要进行DR和BDR选举 |
广播型多路访问类型(BMA)
OSPF在BMA网络类型的接口上通常以组播的方式发送hello报文、LSU报文和LSACK报文。以单播的形式发送DD报文和LSR报文。
点到点类型(P2P)
OSPF在网络类型为P2P的接口上以组播的方式(224.0.0.5)发送所有的协议报文。并且OSPF在P2P类型的网络中不会选举DR和BDR
环回接口(虚拟接口)
Type --- P2P --- 在思科中有专门定义的Loopback类型作为环回接口的类型,而华为中没有定义,使用P2P来填充(没有意义)。
所有通过OSPF学习到的环回接口的路由掩码信息都是32位,这是因为环回接口是一个模拟的接口,它实际上并没有连接用户,所以没有其余的IP地址存在于环回接口之下,只有一个可用的IP地址,故使用32位掩码来直接标识环回接口。保证路由信息的精确性 --- 避免产生环路或者路由黑洞
[r1-LoopBack0]ospf network-type broadcast --- 修改环回网络类型为BMA
State:Waiting
原因在于环回接口此时并没有邻居,也就无法进行正常的DR和BDR选举,当时间超时后,环回接口会认为自己就是DR,并将相应信息填充到该接口信息中。
P2MP接口类型
[r7-Tunnel0/0/0]ospf network-type p2mp --- 修改网络类型为p2mp
OSPF在p2mp类型接口上,通常以组播的方式发送hello包,以单播的方式发送其他报文
o2mp类型无法由设备自动生成,必须由管理员手工更改。
p2mp类型网络不需要
非广播型多路访问(NBMA)
在NBMA场景中,为了让OSPF路由器之间能够正确建立邻居关系,需要使用单播邻居的方式来发送OSPF报文。
双向配置
[r2-ospf-1]peer ?
IP_ADDR<X.X.X.X> IP address
OSPF的不规则区域
远离骨干的非骨干区域
使用tunnel隧道
在R2和R3之间构建一条隧道,之后,将这个隧道宣告到Area0,相当于将R3这个非法的ABR设备合法化
使用VPN隧道解决不规则区域的问题
1、可能产生选路不佳
2、可能造成重复更新
3、因为虚拟链路的存在,R2和R3之间也需要建立邻居。导致他们之间维护的周期性数据将穿越Area1,导致中间区域的资源消耗过大。
虚链路 --- Vlink
专门为了解决OSPF不规则区域所产生的技术。是一种虚拟的、逻辑的链路
[r1]display ospf vlink --- 查看vlink表
[r2-ospf-1-area-0.0.0.0]vlink-peer 3.3.3.3
[r3-ospf-1-area-0.0.0.0]vlink-peer 2.2.2.2
虚链路的配置条件:只能穿越一个区域
Vlink链路实际上全部使用单播报文描述信息
Vlink被视为骨干区域的一段延伸 --- Vlink永远属于Area0 --- 只能在非骨干区域上配置
使用Vlink隧道解决不规则区域的问题
1、因为虚拟链路的存在,R2和R3之间也需要建立邻居。导致他们之间维护的周期性数据将穿越Area1,导致中间区域的资源消耗过大。
2、只能穿越一个区域
Vlink能解决没有骨干区域的场景。
Vlink环路问题
场景一
场景二
解决方法: OSPF规定,vlink所在区域不允许传递聚合路由
使用多进程双向重发布
重发布
把一种路由信息以另一种路由协议的方式发布出去
如果一个域中,两台路由器的RID相同,在更新报文的时候会出现链路震荡的问题,抓包会发现大量的LSA,LSU报文,在华为中,一旦出现这种问题,相同RID的其中一台或全部的路由器会改变自己的RID
重发布是双向的,所以要在asbr(自治系统边界路由器 --- 两个区域之间的路由器)上将区域1的路由导入到区域2,将区域2的路由导入到区域1