MGRE环境下的OSPF
实验环境:
实验要求:
r1,r2,r3为私网内部环境:分别为:192.168.1.1/2.1/3.1 24
隧道接口配置192.168.4.0 24网段
实验步骤:
1,配置IP按照要求
配置指向公网的一条静态缺省
[R1]ip route-static 0.0.0.0 0 14.0.0.2
[R2]ip route-static 0.0.0.0 0 24.0.0.2
[R3]ip route-static 0.0.0.0 0 34.0.0.2
2,搭建VPN(MGRE)
[R1]int t 0/0/0
[R1-Tunnel0/0/0]ip add 192.168.4.1 24
[R1-Tunnel0/0/0]tunnel-protocol gre p2mp
[R1-Tunnel0/0/0]source 14.0.0.1
[R1-Tunnel0/0/0]nhrp network-id 100
R2注册
[R2]int t 0/0/0
[R2-Tunnel0/0/0]ip add 192.168.4.2 24
[R2-Tunnel0/0/0]tunnel-protocol gre p2mp
[R2-Tunnel0/0/0]source GigabitEthernet 0/0/0
[R2-Tunnel0/0/0]nhrp network-id 100
[R2-Tunnel0/0/0]nhrp entry 192.168.4.1 14.0.0.1 register
看一下nhrp的注册情况
[R1-Tunnel0/0/0]display nhrp peer
R3:
一样的操作,做完看下nhrp表
3,运行ospf协议
R1,R2,R3同理
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]a 0
[R1-ospf-1-area-0.0.0.0]network 192.168.4.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
因为OSPF是以组播的形式去发送信息的,所以我们需要开启伪广播
[R1-Tunnel0/0/0]nhrp entry multicast dynamic
看下接口,看建邻的条件
R1
R2:
R3:
发现都只跟我中心R1建邻了
那再看下邻居的状态呢
问题1:接口类型:brodcast
R1,R2之间建立邻居了,并且full了,但是我的R3只是一个init状态,连邻居关系都没有起,init状态就是连rid都还没有传,不认识RID
cost=1562的原因:因为隧道接口要进行封装,然后再走物理接口,封装和解封装都会浪费资源,隧道接口定义为传输速率为64k,实际无数据收发,数据尽量不走这个链路,所以这么大
解决:
因为我们前面提到了这个是P2P的接口类型,只能建立一个邻居关系,我们将他改为broadcast类型,就可以建立多个邻居关系了
[R1-Tunnel0/0/0]ospf network-type broadcast
再次查看建立邻居的状态:
R1跟R2的状态为two-way,r2跟r1为exstart,并且分支之间没有建立邻居关系,
并且当我查看ospf的路由表信息时:
R3]dis ip routing-table protocol ospf
发现为空,没有路由器表的信息
一个为exstart ,一个是two-way状态的原因:
two-way是在进行dr和bdr的选举,如果一个接口,已经确定自己不可能当上DR或者BDR了,这个接口可以优先进入下一个状态,可以去等,我的DR和BDR的选举状态完成之后再进入到下一个状态
卡在DR与BDR的选举状态了
我们知道broadcast状态,会进行DR/BDR的选举,但是P2P类型根本不需要进行选举,也就是说,R1和R2,R3闹矛盾了,一些认为可以,一些不可以,所以选举混乱了
解决方案1.1:全部改为broadcast
[R2-Tunnel0/0/0]ospf network-type broadcast
[R3-Tunnel0/0/0]ospf network-type broadcast
查看R1,R2,R3的邻居表
看下路由信息:
[R3]display ip routing-table protocol ospf
R1上面只有到R3的路由信息,R3上面也有R1的信息,但是我的R2上面却一条路由信息都没有
在R2上看下R1认为谁说DR,谁是BDR,显然他认为4.3是DR,自己是BDR,再看下其他的,发现他们认为的DR和BDR不一样,造成了DR/BDR的选举混乱
解决方案2:提高R1的接口优先级或者降低分支的接口为0
接口优先级为0表示放弃DR/BDR的选举:
修改接口优先级的方法:
[R3-Tunnel0/0/0]ospf dr-priority 0
再次看路由表:
r3
有信息了
P2MP
对于以上问题其实可以把接口类型全部改为P2MP的类型
查看接口:
[R1-Tunnel0/0/0]display ospf interface Tunnel 0/0/0
state:p-2-p 这个不需要进行DR/BDR的选举,并且可以建立多个邻居关系,还可以学习到邻居接口的主机路由
但是我一个修改了过后,因为HEllo和dead time的时间对不上,无法建立邻居关系,所以其他口都需要修改为P2MP的类型:
查看路由表(仅仅展示R1的):
mesh---全连的MGRE--OSPF
说明:
在MGRE环境中,还存在一种全连的MGRE环境(MESH),这种环境下,所有节点既是中心,也是分支,所有节点都将开启伪广播。这样将所有节点接口的网络类型改为Broadcast之后,所有节点在进行DR和BDR选举是,将共同进行,则不会出现DR和BDR认知不统一的情况。
NBMA---OSPF
[Huawei-GigabitEthernet0/0/0]ospf network-type nbma
改为nbma过后,需要手动指定邻居
[Huawei-ospf-1]peer 192.168.1.2---注意:当对端指定完成过后,才开始重新建立邻居(双方都需要指定)
总结: