使用BGP E***方式部署分布式网关VXLAN

BGP E***

VXLAN能够通过VETP隧道实现大二层MAC IN UDP,但是没有控制平面,虽然可以手动创建隧道,但是再面对大规模虚拟机场景下,基本不太现实,同时BUM报文泛滥,占用带宽
华为的VXLAN方案可以通过BGP E***方式来充当控制平面,解决相关问题。
E***(Ethernet Virtual Private Network)是一种用于二层网络互联的***技术。E***技术采用类似于BGP/MPLS IP ***的机制,在BGP协议的基础上定义了一种新的NLRI(Network Layer Reachability Information,网络层可达信息)即E*** NLRI,E*** NLRI定义了几种新的BGP E***路由类型,用于处在二层网络的不同站点之间的MAC地址学习和发布。

BGP E***路由

Type2路由,MAC/IP路由

报文格式

字段解释如下

主要实现的功能是:

  1. 主机MAC地址通告

要实现同子网主机的二层互访,两端VTEP需要相互学习主机MAC。作为BGP E***对等体的VTEP之间通过交换MAC/IP路由,可以相互通告已经获取到的主机MAC。其中,MAC Address Length和MAC Address字段为主机MAC地址。

  1. 主机ARP通告

MAC/IP路由可以同时携带主机MAC地址+主机IP地址,因此该路由可以用来在VTEP之间传递主机ARP表项,实现主机ARP通告。其中,MAC Address和MAC Address Length字段为主机MAC地址,IP Address和IP Address Length字段为主机IP地址。此时的MAC/IP路由也称为ARP类型路由。

Type3路由Inclusive Multicast路由

报文格式

字段解释如下:

该类型路由在VXLAN控制平面中主要用于VTEP的自动发现和VXLAN隧道的动态建立。作为BGP E***对等体的VTEP,通过Inclusive Multicast路由互相传递二层VNI和VTEP IP地址信息。其中,Originating Router‘s IP Address字段为本端VTEP IP地址,MPLS Label字段为二层VNI。如果对端VTEP IP地址是三层路由可达的,则建立一条到对端的VXLAN隧道。同时,如果对端VNI与本端相同,则创建一个头端复制表,用于后续BUM报文转发。

在vxlan跨子网通信的场景中,使用typ3路由

VXLAN分布式网关

VXLAN网关划分

和VLAN类似,不同VNI之间的VXLAN,及VXLAN和非VXLAN之间不能直接相互通信。为了使VXLAN之间,以及VXLAN和非VXLAN之间能够进行通信,VXLAN引入了VXLAN网关。

VXLAN网关分为:
二层网关:用于解决租户接入VXLAN虚拟网络的问题,也可用于同一VXLAN虚拟网络的子网通信。

三层网关:用于VXLAN虚拟网络的跨子网通信以及外部网络的访问。

根据三层网关部署方式的不同,VXLAN三层网关又可以分为集中式网关和分布式网关。

分布式网关

VXLAN分布式网关是指在典型的“Spine-Leaf”组网结构下,将Leaf节点作为VXLAN隧道端点VTEP,每个Leaf节点都可作为VXLAN三层网关,Spine节点不感知VXLAN隧道,只作为VXLAN报文的转发节点。如下所示,Server1和Server2不在同一个网段,但是都连接到一个Leaf节点。Server1和Server2通信时,流量只需要在Leaf1节点进行转发,不再需要经过Spine节点。

VXLAN分布式网关具有如下特点:
同一个Leaf节点既可以做VXLAN二层网关,也可以做VXLAN三层网关,部署灵活。
Leaf节点只需要学习自身连接服务器的ARP表项,而不必像集中三层网关一样,需要学习所有服务器的ARP表项,解决了集中式三层网关带来的ARP表项瓶颈问题,网络规模扩展能力强。

分布式网关模型

VXLAN大二层,VNI标记二层域,VXLAN隧道实现域内连通
分布式VXLAN网关,VNI标记三层VRF域,VXLAN隧道实现VRF连通

分布式网关实验

实验拓扑

组网说明:
1、三台CE交换机,按照spine-leaf组网,CE1属于spine,可以使用不具备VXLAN的功能交换机,CE2,CE2分别数据LEAF-1,LEAF-2,除了作为NVE接入点之外,充当分布式网关,即
leaf作为网关,两个网关是一样的
2、spine,leaf之间,underlay网络使用ospf协议组网,使用area0,实现vtep之间的互通,每个ce交换机使用loopback接口,充当ospf的router id和vtep地址
3、spine,leaf之间,配置bgp,使用loopback接口配置全互联邻居都属于一个AS 100,配置BGP E***协议来实现vxlan的控制层面,实现vxlan隧道的自动发现,配置
4、leaf交换机上,配置*** INSTANCE A,用来模拟区分不同租户,使他们路由信息隔离
5、POD1,POD2,模拟数据中心下同一个租户的不同网络,实现同子网,跨子网通信
6、在leaf上,配置VNI10,VNI20二层VNI,实现VXLAN标记,满足同一个VXLAN下同子网二层通信,同时在SPINE上配置VNI99三层VNI,满足不同VXLAN下跨子网三层通信

现在需要通过分布式网关,实现PC1->PC2的同子网和PC1->PC4的跨子网通信

POD网络配置

PC1 :192.168.1.1/24 ,GW192.168.1.254
PC2:192.168.2.1/24,GW192.168.1.254
PC3:192.168.1.2/24,GW192.168.1.254
PC4:192.168.2.2/24,GW192.168.1.254
交换机S1配置VLAN10,20,对应PC1,PC2,S1配置如下:

interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk allow-pass vlan 10 20
#
interface GigabitEthernet0/0/2
 port link-type access
 port default vlan 10
#
interface GigabitEthernet0/0/3
 port link-type access
 port default vlan 20

S2配置配置类似

UNDEYLAY配置

配置OSPF

CE1作为SPINE,配置如下

[HUAWEI]sysname CE1
[CE1-LoopBack0]ip address 1.1.1.1 32
[CE1-LoopBack0]q
[CE1]interface GE 1/0/1
[CE1-GE1/0/1]undo portswitch
[CE1-GE1/0/1]ip address 10.1.12.1 24
[CE1-GE1/0/1]q
[CE1]interface GE 1/0/2
[CE1-GE1/0/2]undo portswitch
[CE1-GE1/0/2]undo shutdown
[CE1-GE1/0/2]ip address 10.1.13.1 24
[CE1-GE1/0/2]q
[CE1]ospf 1 router-id 1.1.1.1
[CE1-ospf-1]are
[CE1-ospf-1]area 0
[CE1-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.255
[CE1-ospf-1-area-0.0.0.0]network 10.1.13.0 0.0.0.255
[CE1-ospf-1-area-0.0.0.0]network 1.1.1.1 255.255.255.0

CE2作为leaf,配置如下:

<HUAWEI>system-view immediately
[HUAWEI]sysname CE2
[CE2]interface LoopBack 0
[CE2-LoopBack0]ip address 2.2.2.2 32
[CE2-LoopBack0]q
[CE2]interface GE 1/0/1
[CE2-GE1/0/1]undo portswitch
[CE2-GE1/0/1]undo shutdown
[CE2-GE1/0/1]ip address 10.1.12.2 24
[CE2-GE1/0/1]q
[CE2]ospf 1 router-id 2.2.2.2
[CE2-ospf-1]area 0
[CE2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[CE2-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.255
[CE2-ospf-1-area-0.0.0.0]q

CE3配置类似

配置完成后,检查OSPF邻居建立和路由,以CE2为例

配置BGP和BGP E***对等体

配置BGP全互联,使用loopback接口,创建BGP E***对等体,同时使用发布irb类型的路由,可以实现跨子网互访

CE1配置如下:

[CE1]e***-overlay enable
[CE1]bgp  100
[CE1-bgp]peer 2.2.2.2 as-number 100
[CE1-bgp]peer 3.3.3.3 as-number 100
[CE1-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[CE1-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[CE1-bgp]l2***-family e***
[CE1-bgp-af-e***]
[CE1-bgp-af-e***]peer 2.2.2.2 enable
[CE1-bgp-af-e***] peer 2.2.2.2 advertise irb
[CE1-bgp-af-e***]peer 3.3.3.3 enable
[CE1-bgp-af-e***] peer 3.3.3.3  advertise irb   

CE2,CE3配置类似
配置完成后检查bgp邻居和BGP e***邻居建立情况,以CE1为例

LEAF的CE2,CE3的***实例和E***实例


在***实例中,除了配置本地***实例的ERT X和IRT X外,还需要配置带E***参数的ERT Y和IRT Y,用于和对端E***实例交叉,生成主机路由。
在E***实例中,除了针对不同的BD配置不同的ERT A、ERT B和IRT A、IRT B外,还必须配置用来和对端***实例交叉的ERT Y。一般情况下不需要配置IRT Y,否则会导致不同BD下的E***实例相互扩散MAC地址。

配置E***实例,以CE2为例

[CE2]bridge-domain 10
[CE2-bd10]vxlan vni 10
[CE2-bd10]e***
[CE2-bd10-e***]rou
[CE2-bd10-e***]route-distinguisher 100:1
[CE2-bd10-e***]***-target 100:1 both
 IVT Assignment result:
Info: ***-Target assignment is successful.
 EVT Assignment result:
Info: ***-Target assignment is successful.
[CE2-bd10-e***]q
[CE2-bd10]q
[CE2]bridge-domain 20
[CE2-bd20]vxlan vni 20
[CE2-bd20]e***
[CE2-bd20-e***]route-distinguisher 100:2
[CE2-bd20-e***]vp
[CE2-bd20-e***]***-target 100:2 b
[CE2-bd20-e***]***-target 100:2 both 

说明:
1、不同的BD域只能绑定一个vxlan vni
2、ERT和IRT即***-target ,注意配置正确,即CE2的bd10的***-target和CE3的bd10的***-target一致,不然无法正确传递和接受
3、E***的rd值和***的rd值可以配置一样,方便区分,但是两者不是一个概念

CE3的e***实例配置与CE2类似,不再重复

配置***实例,以CE2为例

创建***实例A,用于区别不同租户,配置RD值为100:1,同时配置***-target,同时绑定E***实例,注意,需要创建三层vni,同时为三层vni绑定E***实例

[CE2]ip ***-instance A
[CE2-***-instance-A]vxlan vni 99
[CE2-***-instance-A]route-distinguisher 100:1
[CE2-***-instance-A-af-ipv4]***-target 100:1 both
 IVT Assignment result:
Info: ***-Target assignment is successful.
 EVT Assignment result:
Info: ***-Target assignment is successful.
[CE2-***-instance-A-af-ipv4]***-target 100:1 both e***
 IVT Assignment result:
Info: ***-Target assignment is successful.
 EVT Assignment result:
Info: ***-Target assignment is successful.
[CE2-***-instance-A-af-ipv4]***-target 100:2 import-extcommunity e***
 EVT Assignment result:
Info: ***-Target assignment is successful.

说明:
1、相同的***实例RD值要一致
2、vxlan vni 99为三层vni,二层VNI用于同子网互访,三层VNI用于跨子网互访。bd域下绑定的就是二层vni
3、配置100:2的e***实例是为了将 三层vni 99发布,三层VNI可以随意指定,但是不能和二层vni相同

CE3配置与此一样

配置LEAF的CE2,CE3的BD接口作为分布式网关

CE2上配置vbdif10,vbdif20,分别作为分布式网关,对应各自的BD域
bdif接口绑定***实例,开启分布式网关功能

[CE2]interface Vbdif 10
[CE2-Vbdif10]ip binding ***-instance A
[CE2-Vbdif10]ip address 192.168.1.254 24
[CE2-Vbdif10]arp distribute-gateway enable
[CE2-Vbdif10]arp collect host enable
[CE2-Vbdif10]q
[CE2]interface Vbdif 20
[CE2-Vbdif20]ip binding ***-instance A
[CE2-Vbdif20]IP address 192.168.2.254 24
[CE2-Vbdif20]arp distribute-gateway enable
[CE2-Vbdif20]arp collect host enable

CE3的配置与此一致
关于arp collect host enable命令功能如下

配置完成了后,在POD1,POD2,因为租户都是***实例A,可以区分租户路由

配置LEAF的CE2,CE3的vxlan接入点

CE2配置BD10,BD20,分别绑定vni10,vni20,同时配置二层子接口,以DOT1Q方式终结VLAN

[CE2]interface GE 1/0/2
[CE2-GE1/0/2]undo shutdown
[CE2]bridge-domain 10
[CE2-bd10]vxlan vni  10
[CE2-bd10]q
[CE2]interface GE 1/0/2.1 mode l2
[CE2-GE1/0/2.1]bridge-domain 10
[CE2-GE1/0/2.1]encapsulation dot1q vid 10
[CE2]interface GE 1/0/2.2 mode l2
[CE2]bridge-domain 20
[CE2-bd20]vxlan vni 20
[CE2-bd20]q
[CE2]interface GE 1/0/2.2 mode l2
[CE2-GE1/0/2.2]bridge-domain 20
[CE2-GE1/0/2.2]encapsulation dot1q vid 20

CE3配置与之类似

配置完成后,测试pc1,PC2与leaf分布式网关的连通性

配置CE2,CE2的vxlan隧道自动发现

因为使用的bgp e***作为控制层面,所以不用再手动配置vxlan 隧道

CE2上的配置如下

[CE2]interface Nve 1
[CE2-Nve1]source 2.2.2.2
[CE2-Nve1]vni 10 head-end peer-list protocol bgp
[CE2-Nve1]vni 20 head-end peer-list protocol bgp 

CE3配置类似

配置完成,再CE2检查隧道配置

至此CE2,和CE3之间的vxlan隧道动态建立成功

测试分布式网关功能

同一个LEAF下不同子网

测试如下
流量走向


PC1 ping PC3 通

此时数据包没有经过vxlan隧道,就像三层转发一样

不同LEAF下同一个子网

流量走向

P1 ping PC2通

数据包经过了VXLAN 隧道,在CE2的ge1/01接口抓包

1.可以看到同一个子网,VXLAN VNI是一样的,都是VNI 10
2.可以看到VTEP信息,2.2.2.2->3.3.3.3

不通LEAF下的不同子网

流量走向,经过vxlan,同时经过不同网关

此时PC1 ping PC4

在CE2上抓包分析

可以看到,在跨子网通信时,经过三层VNI,vxlan的vni是99,并非二层VNI

irb 路由

在进行跨子网的通信时,E***邻居之间必须发布IRB路由,Type3路由——Inclusive Multicast路由。如果不配置或者发布路由类型错误,都无法满足
跨子网通信

在手动触发e***更新后,可以观察到irb路由信息

<CE2>refresh bgp e*** all ex
<CE2>refresh bgp e*** all export
<CE2>refresh bgp e*** all im
<CE2>refresh bgp e*** all import 

可以看到bgp邻居更新信息

查找irb路由更新

通过irb,将去往不同子网的主机路由注入到***实例的路由表中

完了完成irb路由正常发布和三层vni能够正常传递,需要在***实例中配置三层vni的e***实例绑定

这样,在LEAF上能够被注入主机路由,从而达到跨子网访问

好复杂额

原文地址:https://blog.51cto.com/11555417/2473116

时间: 2024-07-29 23:40:42

使用BGP E***方式部署分布式网关VXLAN的相关文章

使用packstack以answer-file的方式部署单节点openstack环境

原来是使用packstack --init-host=myip的方式部署,这样只能是单节点 http://blog.csdn.net/xiangpingli/article/details/51239832 为了使用packstack进行多节点的方式部署openstack,就需要先研究answer-file的方式来部署openstack环境 如下是使用packstack --answer-file的方式部署单节点openstack环境的过程: Packstack –answer-file方式部署

搭建部署 分布式ELK平台 (一)

搭建部署 分布式ELK平台 ELK 是什么 ? ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写 – Elasticsearch:负责日志检索和储存 – Logstash:负责日志的收集和分析.处理 – Kibana:负责日志的可视化 这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为 ELK ELK 能做什么? ? ELK组件在海量日志系统的运维中,可用于解决: – 分布式日志数据集中式查询和管理 – 系统监控,包含系统

Apache+Django++mod_wsgi(ubuntu下虚拟机方式部署过程)

前几天以源码的方式部署了Apache+mod_wsgi+django的项目,见我的另一个篇博客 这几天也用apt-get方式安装Apache的方式,安装了部署了一次,其中有一致的地方,也有差别的地方,再此记录一下 环境ubuntu 16.04 +apache2.4.25 +django1.8+mod_wsgi-4.5.15+python2.7 Apache.Python2.7都是以apt-get install的方式安装的 django1.8 是pip install django==1.8的方

基于php-fpm方式部署LAMP

前言 CentOS 7: httpd-2.4:rpm包默认编译支持了fcgi模块: php-fpm包:专用于将php运行于fpm模式: 当我们使用php-fpm方式部署LAMP时,需要使用三台服务器,一台服务器作为http服务器,一台当作php-fpm服务器,一台作为数据库服务器.当http服务器接收到客户端的请求时,会通过本地磁盘IO返回出请求中的静态请求资源,当http服务器匹配到请求数据中的动态资源后,通过fastcgi将动态资源请求转发给php-fpm服务器的9000端口,php-fpm

CentOS 6.4多配置文件方式部署mariadb多实例

什么是mariadb? MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险. MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB. MariaDB由MySQL的创始人Michael Widenius(英语

部署分布式文件系统(DFS)

部署分布式文件系统(DFS) 使用 DFS 命名空间,可以将位于不同服务器上的共享文件夹组合到一个或多个逻辑结构的命名空间.每个命名空间作为具有一系列子文件夹的单个共享文件夹显示给用户.但是,命名空间的基本结构可以包含位于不同服务器以及多个站点中的大量共享文件夹.此结构提高了可用性,并在可用时自动将用户连接到同一 AD DS 站点中的共享文件夹.大多数任务要求您成为 Active Directory 域服务 (AD DS) 中 Domain Admins 组的成员,除非您已被委派适当授权. "命

在CentOS6.6上以replSet方式部署MongoDB集群

部署方式在3台centos6.6系统上以Replica Set方式部署mongodb3.0.2集群. 官方参考资料: http://docs.mongodb.org/manual/tutorial/deploy-replica-set/ http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/ 集群的IP地址分配# node01: 192.168.35.173(PRIMARY node)# node02: 192.16

Centos7.5安装mysql5.7.24二进制包方式部署(keepalived+主从复制)

一.环境准备: 操作系统:CentOS Linux release 7.5.1804 (Core) mysql版本:mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz主库:172.16.8.247从库:172.16.8.249主机名:172.16.8.247 qas-zabbix-node01172.16.8.249 qas-zabbix-node02172.16.8.248 vip 二.mysql5.7安装及主从复制配置 主库:172.16.8.247从库:1

Centos7.5安装mysql5.7.24二进制包方式部署(主从复制)

一.环境准备: 操作系统:CentOS Linux release 7.5.1804 (Core) mysql版本:mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz主库:172.16.8.247从库:172.16.8.249主机名:172.16.8.247 qas-zabbix-node01172.16.8.249 qas-zabbix-node02 二.mysql5.7安装 主库:172.16.8.247从库:172.16.8.249数据安装参考:一.Cen