Hub and Spoke组网是基本的MP-BGP ***网络的一种,通过在***中设置中心站点,要求其他站点的互访都必须通过中心站点来进行,以实现对站点间通信的集中控制;在银行网络、物流网络中应用广泛。
本实验是根据HCIE-RS认证LAB实验中的一个小节修改过来的,其需求如下:
合理设置***参数,使得Spoke站点互访的流量必须经过Hub-CE设备。当HUBCE-HUB PE链路断开的情况下,HUB PE仍然可以学习到HUB CE的业务路由。
我们先搭建一个如下图所示的网络拓扑,图中路由器角色已经标识:
第一步:搭建骨干MPLS ***网络1.1.1、 配置接口IP地址,运行ISIS路由协议,实现骨干网络内路由互通
[HUB PE1] int g0/0/0
[HUB PE1-GigabitEthernet0/0/0]ip address10.0.13.1 255.255.255.0
[HUB PE1-GigabitEthernet0/0/0]int g0/0/2
[HUB PE1-GigabitEthernet0/0/2] ip address10.0.12.1 255.255.255.0
[HUB PE1-GigabitEthernet0/0/2]int l0
[HUB PE1-LoopBack0] ip address 1.1.1.1255.255.255.255
[HUB PE1]isis
[HUB PE1-isis-1] is-levellevel-2
[HUB PE1-isis-1]network-entity 49.0010.0100.1001.00
[HUB PE1-GigabitEthernet0/0/0] isis enable1
[HUB PE1-GigabitEthernet0/0/2] isis enable1
[HUB PE1-LoopBack0] isis enable 1
其他路由器的配置与HUB PE1的配置相似,接口IP均为10.0.XY.X/Y(X、Y为路由器loopback地址的首数字)
1.1.2、 配置MPLS及LDP协议
[HUB PE1] mpls lsr-id 1.1.1.1
[HUB PE1]mpls
[HUB PE1-mpls]mpls ldp
[HUB PE1]int g0/0/0
[HUB PE1-GigabitEthernet0/0/0] mpls
[HUB PE1-GigabitEthernet0/0/0] mpls ldp
[HUB PE1-GigabitEthernet0/0/2] mpls
[HUB PE1-GigabitEthernet0/0/2] mpls ldp
其他路由器如法炮制。
1.1.3、 配置BGP,在骨干路由器之间建立IBGP连接,构建MP-BGP ***网络
如图所示,路由器1、2、4、5均为PE设备,3为网络中的反射器,所有PE设备均与RR建立BGP对等体。
[HUB PE1]bgp 100
[HUB PE1-bgp] peer 3.3.3.3 as-number 100
[HUB PE1-bgp] peer 3.3.3.3connect-interface LoopBack0
[HUB PE1-bgp] peer 3.3.3.3 next-hop-local
[HUB PE1-bgp]ipv4-family ***v4
[HUB PE1-bgp-af-***v4] peer 3.3.3.3 enable
[RR]bgp 100
[RR-bgp] peer 1.1.1.1 as-number 100
[RR-bgp] peer 1.1.1.1 connect-interface LoopBack0
[RR-bgp] peer 2.2.2.2 as-number 100
[RR-bgp] peer 2.2.2.2 connect-interface LoopBack0
[RR-bgp] peer 4.4.4.4 as-number 100
[RR-bgp] peer 4.4.4.4 connect-interface LoopBack0
[RR-bgp] peer 5.5.5.5 as-number 100
[RR-bgp] peer 5.5.5.5 connect-interface LoopBack0
[RR-bgp]ipv4-family ***v4
[RR-bgp-af-***v4] undo policy ***-target
[RR-bgp-af-***v4] peer 1.1.1.1 enable
[RR-bgp-af-***v4] peer 1.1.1.1 reflect-client
[RR-bgp-af-***v4] peer 2.2.2.2 enable
[RR-bgp-af-***v4] peer 2.2.2.2 reflect-client
[RR-bgp-af-***v4] peer 4.4.4.4 enable
[RR-bgp-af-***v4] peer 4.4.4.4 reflect-client
[RR-bgp-af-***v4] peer 5.5.5.5 enable
[RR-bgp-af-***v4] peer 5.5.5.5 reflect-client
至此,骨干网络全部配置完成,可在RR上查看BGP对等体是否建立成功。
[RR]dis bgp peer
可以观察到所有邻居关系均以达到established的关系,说明邻居关系建立成功。
第二步:在PE上创建***-instance,并与相应的接口绑定
2.1、在SPOKE PE1上配置***实例并绑定到接口
[SPOKE PE1]ip ***-instance spoke1
[SPOKE PE1-***-instance-spoke1]ipv4-family
[SPOKE PE1-***-instance-spoke1-af-ipv4]route-distinguisher100:4
[SPOKEPE1-***-instance-spoke1-af-ipv4]***-target 100:4 export-extcommunity #配置为spoke的出方向RT
[SPOKEPE1-***-instance-spoke1-af-ipv4]***-target 100:1 100:2 import-extcommunity #配置为hub的出方向RT
[SPOKE PE1]int g0/0/1
[SPOKE PE1-GigabitEthernet0/0/1] ip binding***-instance spoke1
[SPOKE PE1-GigabitEthernet0/0/1] ip address10.0.48.4 255.255.255.0
2.2、在SPOKE PE2上配置***实例并绑定到接口
[SPOKE PE2]ip ***-instance spoke2
[SPOKE PE2-***-instance-spoke2]ipv4-family
[SPOKEPE2-***-instance-spoke2-af-ipv4]route-distinguisher 100:5
[SPOKEPE2-***-instance-spoke2-af-ipv4]***-target 100:5 export-extcommunity
[SPOKEPE2-***-instance-spoke2-af-ipv4]***-target 100:1 100:2 import-extcommunity
[SPOKE PE2]int g0/0/1
[SPOKE PE2-GigabitEthernet0/0/1] ip binding***-instance spoke2
[SPOKE PE2-GigabitEthernet0/0/1] ip address10.0.59.5 255.255.255.0
2.3、在HUB PE1上配置***实例并绑定到接口按照hub and spoke的建立方式,需要在PE和CE之间分别进行收发***路由,因此将在PE的GE0/0/1接口上建立两个子接口,分别绑定两个的***实例。另外,由于在HUB-PE和HUB-CE之间运行的是BGP协议,根据BGP的防环规则,当AS-path中已经含有当前区域的AS号时,将步接收该路由,因此在PE的BGP实例视图下,需要配置allow-as-loop命令,防止经CE发出的路由被丢弃。
[HUB PE1]ip ***-instance hubin
[HUB PE1-***-instance-hubin]ipv4-family
[HUB PE1-***-instance-hubin-af-ipv4]route-distinguisher 100:1
[HUB PE1-***-instance-hubin-af-ipv4]***-target100:4 100:5 import-extcommunity
[HUB PE1]ip ***-instance hubout
[HUB PE1-***-instance-hubout]ipv4-family
[HUBPE1-***-instance-hubout-af-ipv4]route-distinguisher 100:11
[HUBPE1-***-instance-hubout-af-ipv4]***-target 100:1 export-extcommunity
[HUB PE1]int g0/0/1.1
[HUBPE1-GigabitEthernet0/0/1.1] ip binding ***-instance hubin
[HUBPE1-GigabitEthernet0/0/1.1] dot1q termination vid 1
[HUBPE1-GigabitEthernet0/0/1.1] arp broadcast enable
[HUBPE1-GigabitEthernet0/0/1.1] ip address 10.1.6.1 255.255.255.0
[HUBPE1-GigabitEthernet0/0/1.1]int g0/0/1.2
[HUBPE1-GigabitEthernet0/0/1.2] ip binding ***-instance hubout
[HUBPE1-GigabitEthernet0/0/1.2] ip address 10.6.1.1 255.255.255.0
[HUBPE1-GigabitEthernet0/0/1.2] dot1q termination vid 2
[HUBPE1-GigabitEthernet0/0/1.2] arp broadcast enable
[HUB PE2]ip ***-instancehubin
[HUBPE2-***-instance-hubin]ipv4-family
[HUBPE2-***-instance-hubin-af-ipv4]route-distinguisher 100:2
[HUBPE2-***-instance-hubin-af-ipv4]***-target 100:4 100:5 import-extcommunity
[HUB PE2]ip ***-instance hubout
[HUBPE2-***-instance-hubout]ipv4-family
[HUBPE2-***-instance-hubout-af-ipv4]route-distinguisher 100:22
[HUBPE2-***-instance-hubout-af-ipv4]***-target 100:2 export-extcommunity
[HUB PE2]int g0/0/1.1
[HUBPE2-GigabitEthernet0/0/1.1] ip binding ***-instance hubin
[HUBPE2-GigabitEthernet0/0/1.1] ip address 10.2.7.2 255.255.255.0
[HUBPE2-GigabitEthernet0/0/1.1] dot1q termination vid 1
[HUBPE2-GigabitEthernet0/0/1.1]int g0/0/1.2
[HUB PE2-GigabitEthernet0/0/1.2]ip binding ***-instance hubout
[HUBPE2-GigabitEthernet0/0/1.2] ip address 10.7.2.2 255.255.255.0
[HUBPE2-GigabitEthernet0/0/1.2] dot1q termination vid 2
[HUBPE2-GigabitEthernet0/0/1.2] arp broadcast enable
至此hub and spoke模型已经配置完成,但是在实验需求中提到:当HUB CE-HUB PE链路断开的情况下,HUB PE仍然可以学习到HUB CE的业务路由。根据***实例接收***路由的思路,我们很容易想到,在两台HUB PE上的hubin实例里的入方向RT里配置对方的出方向RT即可,因此,可在HUB PE1和HUB PE2的***实例中增加如下配置:
[HUB PE2-***-instance-hubin]***-target100:1 import-extcommunity
[HUB PE1-***-instance-hubin]***-target100:2 import-extcommunity
第三步:配置PE与CE之间的路由协议,并将私有网段引入到bgp中;在本实验中,SPOKE PE和CE之间采用OSPF,HUB PE和CE之间采用bgp的方式
[SPOKE PE1]ospf 1***-instance spoke1
[SPOKE PE1-ospf-1] area 0
[SPOKEPE1-ospf-1-area-0.0.0.0] network 10.0.48.0 0.0.0.25
在BGP ***实例中引入客户路由
[SPOKE PE1]bgp 100
[SPOKE PE1-bgp]ipv4-family***-instance spoke1
[SPOKEPE1-bgp-spoke1]import-route ospf 1
将BGP路由引入VRF,在此不再进行路由过滤的动作了
[SPOKE PE2]ospf
[SPOKEPE2-ospf-1]import-route bgp
[SPOKE CE1]ospf 1
[SPOKE CE1-ospf-1]area 0
[SPOKE CE1-ospf-1-area-0.0.0.0]network 10.0.48.0 0.0.0.255
[SPOKECE1-ospf-1-area-0.0.0.0] network 8.8.8.8 0.0.0.0
同理,SPOKE站点2也进行同样的配置:
[SPOKE PE2]ospf 1***-instance spoke2
[SPOKEPE2-ospf-1]area 0
[SPOKEPE2-ospf-1-area-0.0.0.0]network 10.0.59.0 0.0.0.255
[SPOKE PE2]bgp 100
[SPOKE PE2-bgp]ipv4-family***-instance spoke2
[SPOKEPE2-bgp-spoke2]import-route ospf 1
[SPOKE PE2]ospf
[SPOKEPE2-ospf-1]import-route bgp
[SPOKE CE2]ospf
[SPOKE CE2-ospf-1]area 0
[SPOKECE2-ospf-1-area-0.0.0.0]network 10.0.59.0 0.0.0.255
[SPOKECE2-ospf-1-area-0.0.0.0]network 9.9.9.9 0.0.0.0
在HUB PE和HUB CE之间配置BGP,之前在第二步时已经将接口与***进行了绑定,因此第三步在PE上的配置只需要指定对等体即可
[HUB PE1]bgp 100
[HUB PE1-bgp] ipv4-family***-instance hubin
[HUB PE1-bgp-hubin] peer 10.1.6.6 as-number 65535
在CE上配置子接口并配置IP地址,运行BGP协议,AS号为655535
[HUB CE1]int g0/0/0.1
[HUB CE1-GigabitEthernet0/0/0.1]ip address 10.1.6.6 255.255.255.0
[HUB CE1-GigabitEthernet0/0/0.1]dot1q termination vid 1
[HUB CE1-GigabitEthernet0/0/0.1]arp broadcast enable
[HUB CE1-GigabitEthernet0/0/0.2]ipaddress 10.6.1.6 255.255.255.0
[HUB CE1-GigabitEthernet0/0/0.2]dot1q termination vid 2
[HUB CE1-GigabitEthernet0/0/0.2]arp broadcast enable
[HUB CE1]bgp 65535
[HUB CE1-bgp]peer 10.1.6.1as-number 100
[HUB CE1-bgp] peer 10.6.1.1as-number 100
HUB PE2与HUB CE2的配置与此相同,在此不在详述。
在HUB PE上查看***实例路由是否传递正常:
可以看到,分部的路由已经全部进入到总部的***实例中
第四步,在总部配置OSPF,实现总部内路由互通
[HUB CE1]ospf
[HUB CE1-ospf-1]ar 0
[HUB CE1-ospf-1-area-0.0.0.0] network 6.6.6.60.0.0.0
[HUBCE1-ospf-1-area-0.0.0.0] network10.0.67.0 0.0.0.255
[HUB CE2]ospf
[HUB CE2-ospf-1]area 0
[HUB CE2-ospf-1-area-0.0.0.0]network 7.7.7.7 0.0.0.0
[HUB CE2-ospf-1-area-0.0.0.0]network 10.0.67.0 0.0.0.255
总部路由协议配置完成,查看邻居建立情况及路由表信息,确认配置正确可以看到邻居关系已经FULL以及对方环回口IP,因此配置正确此时,在HUB CE1和HUB CE2上需要进行双点双向的路由引入,及将总部的私网路由引入到BGP中,将BGP中的分部私网路由引入总部
[HUB CE1]ospf
[HUB CE1-ospf-1]import-routebgp
[HUB CE1]bgp 65535
[HUB CE1-bgp]import-routeospf 1
[HUB CE2]ospf
[HUB CE2-ospf-1]import-routebgp
[HUB CE2]bgp 65535
[HUB CE2-bgp]import-routeospf 1
查看CE上的路由信息:
可以在CE2上看到路由是存在次优路径的,这是因为EBGP路由的优先级为255,而OSPF外部路由的优先级为150,因此路由器会选择优先级值小的,从而出现次优路径。
我们可以通过修改CE上BGP路由的优先级来消除次优路径问题:
[HUB CE2]bgp 65535
[HUB CE2-bgp]preference 149255 255
同时,CE1上也需要修改
[HUB CE1]bgp 65535
[HUB CE1-bgp]preference 149255 255
再次查看路由表可以看到,路由环路已经消除 然后,我们来验证一下实验的效果首先验证HUB and SPOKE的模型是否建立成功,验证方式为:在SPOKE-CE1上ping测SPOKE CE2的环回口,在HUB CE1的GE0/0/0接口抓包,看数据是否经过了总部转发
可以看到,从8.8.8.8可以ping通9.9.9.9,再跟踪一下数据包的转发路径
可以看到,路由经过了HUB PE1到HUB CE1,再从HUB CE1绕回到HUB PE1,最后在在HUB CE1的GE0/0/0接口抓包:
可以看到,所有的请求和回复报文均已经经过了总部节点,说明模型建立成功。
我们在验证一下实验的要求,也就是当HUB CE-HUB PE链路断开的情况下,HUB PE仍然可以学习到HUB CE的业务路由。我先将HUB CE1的GE0/0/0接口shutdown,在HUB PE1上查看***路由是否还存在HUB CE的路由
同理,我们如果将HUB CE2的GE0/0/0接口shutdown,也可以在HUB PE2上看到同样的现象,说明这个要求达到了 碎碎念:最后一步我们也可以直接做默认路由来访问分部,只需将总部路由引入到BGP即可,但本人在实验的时候突然向到了前一次的双点双向引入,就想何不再试一次双点向~~ 最后,回答一下上期中评论区里的问题:
1、对于AR3上路由策略调用IP前缀列表时出现的错误,原因是本来之前在AR6上配置的环回口IP为6.6.6.x/32的网段,后来一想,这样挺没难度的,就改为了1.1.1.3和1.1.1.4,因此之前配置的2号IP前缀列表就这样做进word了,这是没有修改彻底的原因,对实验结果没有影响2、用的什么模拟器???这还用说吗??好吧~eNSP3、除了打tag,其他的方法比较麻烦,不推荐,这是路由极少的情况,如果逐条其匹配路由,那工作量反而极大4、双点双向什么时候能用到?所有需要保证物理网络可靠性的地方都能用。