动态 VxLAN 浅析及配置示例

2024-06-10 02:20

本文主要是介绍动态 VxLAN 浅析及配置示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:  

        为了解决静态 VxLAN的配置量大、mac表项学习仅能通过泛洪学习的这种低端方式的缺点,我们引入了控制层面,通过bgp evpn来构建VxLAN,起到自动建立隧道 (type 3) 、自动构建BUM转发层面 (type 3) 、自动学习mac路由(type2)的效果

一、拓朴图如下:

        要求:AR1 能通过 ISP 对 AR2 进行动态方式的大二层互访;AR3 和 AR4 同样

二、配置过程:
运营商内部侧:
1、配网络侧底层互通(underlayer)

leaf之间loopback接口互访(以后的VTEP地址:VxLAN隧道IP地址)

2、配置运营商网络侧 overlayer:

  a、在PE之间建立mp-bgp evpn peer邻居关系,并全局下使能 evpn
   evpn-overlay enable
   bgp 234
     undo default ipv4-unicast
     peer x.x.x.x as-number 123
     peer x.x.x.x connect loopback 0
     l2vpn-family evpn
       peer x.x.x.x enable
  b、创建nve接口,绑定二层vni,配置控制层面使用evpn bgp协议、学习方式
    int nve1
      source 10.1.2.2
      vni 5010 head-end peer-list protocol bgp
        这一步,将产生3类bgp evpn路由,自动产生vxlan tunnel,自动产生bum头端复制的转发表项,2类路由模拟器里看不到表项

3、配置运营商用户侧 overlayer

  a、创建BD,关联 vni,将 BD 引入到 evpn,配置RD、RT,用于evpn的区分:
    bridge-domain 10
      vxlan vni 5010    #针对 vlan10关联二层vni(1:1绑定,只能关联一个VNI)
      evpn
        route-distinguisher 5010:1
        vpn-target 5010:1
  b、配置VAP,关联BD
    int G1/0/0.10 mode l2    #只有CE系列有此命令,S系列没有此条命令
      encapsulation dot1q vid 10    #
      bridge-doain 10

4、真正用户侧:

  a、AR1和AR2向交换机接口侧配置IP
  b、S1和S2交换机起vlan10,向运营商侧配置trunk,允许vlan10通过

三、名词解释:

PMSI:Provider Multicast Service ID 运营商组播服务ID,包括二层vni(wireshark显示为MPLS Label,实则为 vni 值)、tunnel-id end point(出口)
NVE:Network Virtualization Edge(接口,用于连接网络侧,转发VxLAN的封装)
VTEP:Virtual Tunnel EndPoint    #虚拟隧道终节点Leap loopback地址

四、常用命令:

dis port vlan 10 G1/0/1 active    #展示完整的该端口的vlan 列表
dis bridge-domain 10 verbose     #查看BD10的详细信息
dis bgp evpn all routing-table mac-route | inclusive-route 0:32:10.1.3.3     #显示bgp evpn 的mac、arp路由
evpn-overlayer enable    #全局使能evpn
l2vpn-family evpn    #bgp下,起二层vpn地址簇
dis bgp evpn peer    #查看bgp evpn 邻居是否建立 
dis bgp evpn all routing-table peer 10.1.1.1 advertised #查看向peer发送的路由列表
dis bgp evpn all routing-table inclusive-route 0:32:10.1.3.3    #查看bgp evpn的inclusive-multist-route,用于构建
refresh bgp evpn all export | import    #软清一下bgp evpn发送|收取的路由
reset bgp all    #重置一下bgp进程
dis vxlan peer    #查看VxLAN对端列表
dis vxlan tunnel | verbose   #查看VxLAN隧道
dis vxlan vni    #查看 VxLAN 的vni列表
dis bridge-domain  x |verbose  #查看BD
dis mac-address bridge-domain 10 | verbose    #查看BD10的MAC表
dis port vlan 10 G0/0/1    #查看某个端口属于哪个vlan
dis interface nve | main | 1-2    #查看nve接口信息

[leaf1]:
evpn-overlay enable
#
bridge-domain 10vxlan vni 5010evpnroute-distinguisher 5010:1vpn-target 5010:1 export-extcommunityvpn-target 5010:1 import-extcommunity
#
bridge-domain 20vxlan vni 5020evpnroute-distinguisher 5020:1vpn-target 5020:1 export-extcommunityvpn-target 5020:1 import-extcommunity
#
interface GE1/0/0.10 mode l2encapsulation dot1q vid 10bridge-domain 10
#
interface GE1/0/0.20 mode l2encapsulation dot1q vid 20bridge-domain 20
#
interface GE1/0/1undo portswitchundo shutdownip address 10.1.12.1 255.255.255.0
#
interface LoopBack0ip address 10.1.1.1 255.255.255.255
#
interface Nve1source 10.1.1.1vni 5010 head-end peer-list protocol bgpvni 5020 head-end peer-list protocol bgp
#
bgp 123router-id 1.1.1.1undo default ipv4-unicastpeer 10.1.3.3 as-number 123peer 10.1.3.3 connect-interface LoopBack0#ipv4-family unicastundo peer 10.1.3.3 enable#l2vpn-family evpnpolicy vpn-targetpeer 10.1.3.3 enable
五、验证:
        ping包过去,有回应:

        抓包看包结构:

        看一下  bgp evpn 的包结构:
        看动态学习到的 BD 10 mac表:

        看下evpn路由表:

这篇关于动态 VxLAN 浅析及配置示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1046970

相关文章

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中

springboot中配置logback-spring.xml的方法

《springboot中配置logback-spring.xml的方法》文章介绍了如何在SpringBoot项目中配置logback-spring.xml文件来进行日志管理,包括如何定义日志输出方式、... 目录一、在src/main/resources目录下,也就是在classpath路径下创建logba

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

SpringBoot实现图形验证码的示例代码

《SpringBoot实现图形验证码的示例代码》验证码的实现方式有很多,可以由前端实现,也可以由后端进行实现,也有很多的插件和工具包可以使用,在这里,我们使用Hutool提供的小工具实现,本文介绍Sp... 目录项目创建前端代码实现约定前后端交互接口需求分析接口定义Hutool工具实现服务器端代码引入依赖获