热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OpenStackNeutron插件、LinuxBridge代理、OpenVSwitch代理的理论知识

文章目录一、ML2插件(coreplugin)1.1、前言1.2、ML2插件的出现1.3、ML2的实现架构图1.4、类型驱动和机制驱动1.5、扩展资源二


文章目录

    • 一、ML2插件(core plugin)
      • 1.1、前言
      • 1.2、ML2插件的出现
      • 1.3、ML2的实现架构图
      • 1.4、类型驱动和机制驱动
      • 1.5、扩展资源
    • 二、Linux Bridge代理
      • 2.1、Linux Bridge代理过程
      • 2.2、Linux Bridge代理网络结构图
    • 三、Open vSwitch代理
      • 3.1、Open vswitch 的设备类型
      • 3.2、Open vSwitch数据包流程
      • 3.3、open vSwitch网络的逻辑结构


一、ML2插件(core plugin)


1.1、前言

Neutron可以通过开发不同的插件和代理来支持不同的网络技术、这是一种相当开发的架构。
不过随着所支持的网络提供者种类的增加,开发人员发现两个突出的问题。


  • 一个问题是多种网络提供者无法共存。Core Plugin负责管理和维护Neutron二层的虚拟网络的状态信息,一个Neutron网络只能由一个插件管理,而Core Plugin插件与相应的代理是一 一对应的,如果Linux Bridge插件,则只能选择Linux Bridge代理,必须在OpenStack的所有节点上使用Linux Bridge作为虚拟交换机。

  • 另外一个问题是开发插件的工作量太大,所有传统的Core Plugin之间存在大量重复的代码(如数据库访问代码)


1.2、ML2插件的出现


  • 为了解决这二个问题,从OpenStack的Havana版本开始,Neutron 实现一个插件 ML2(Moduler Layer2)。

  • ML2插件为了取代所有Core Plugin,允许在OpenStack网络中同时使用多种二层的网络技术,不同的节点可以使用不同的网络实现机制,ML2能够与现在所有的代理无缝集成,以前使用的代理无需变更,只要将传统的Core Plugin替换ML2插件。

  • ML2使得对新的网络技术支持更为简单,无须从新开发新的Core Plugin,只需要开发相应的机制驱动(Mechansion Driver) ,大大减少要编写和维护的代码。


1.3、ML2的实现架构图

在这里插入图片描述


  • ML2对二层的网络进行抽象,解锁了Neutron所支持的网络类型(Type)与访问这些网络类型的虚拟网络实现机制(Mechansim),并通过驱动的形式进行扩展。

  • 不同的网络类型对应不同的类型的驱动(Type Driver) ,由类型管理器(Typer Manager)进行管理。不同的网络实现机制对应不同的机制驱动(Mechansiom Driver),由机制管理器(Mechansim Manager)进行管理。

  • 这种实现框架ML2具有弹性,易于扩展,能够支持多种网络类型和实现机制。


1.4、类型驱动和机制驱动

1、类型驱动 (Type Driver)

Neutron支持的每一种网络类型都有一个对应的ML2类型驱动,类型驱动负责维护网络类型的状态,执行验证、创建网络等工作。目前Neutron己经实现的网络类型包括Flat、Local、VLAN、VXLAN、GRE

2、机制驱动 (Mechansim Driver)

Neutron支持的每一种网络机制都有一个对应的ML2机制驱动。机制驱动负责获取类型驱动维护的网络状态,并确保在相应的网络设备 (物理或虚拟的)上正确实现这些状态。
在这里插入图片描述
举列:类型驱动VLAN,机制驱动为Linux Bridge,如果创建VLAN10,那么VLAN的类型驱动会确保将VLAN 10的信息保存到Neutron数据库中,包括网络的名称、VLAN ID等, 而Linux Bridge机制驱动会确保各个节点上的Linux Bridge代理在物理网卡上创建ID为10 的VLAN设备和Bridge设备,并将二者进行桥接。


  • 目前Neutron已经实现的网络机制有3种类型。

    • 基于代理 (Agent-based) :包括Linux bridge、Open vSwitch
    • 基于控制器 (controller Based):包括OpenStacDaylight、VMWavre NSX等
    • 基于物理交换的:包括Cisco Nexus、Arista、 Mellanox 等

1.5、扩展资源


  • ML2作为一个Core Plugin,在实现网络、子网和端口核心资源的同时,也实现了包括端口绑定(Port Bindings)、安全组(Security Group)等部分扩展资源

二、Linux Bridge代理

Linux Bridge是成熟可靠的Neutron二层网络虚拟化技术,支持Local、Flat、VLAN、VXLAN这四种网络类型,目前不支持GRE。


  • Linux Bridge可以将一台主机上的多个网卡桥接起来,充当一台交换机,它可以桥接物理网卡,又可以是虚拟网卡,用于桥接虚拟机网卡的是Tap接口,这是一个虚拟机出来的网络设备,称为Tap设备,作为网桥的一个端口,Tap 接口在逻辑上与物理接口具有相同的功能,可以接收和发送数据包。

2.1、Linux Bridge代理过程

如果选择Linux Bridge代理,在计算机节点上数据包从虚拟机发送到物理网卡需要经过以下设备。


  • Tap接口(Tap interface):用于网桥虚拟机的网卡,命令为tapXXX
  • Linux网桥(Linux Bridge) :作为二层交换机,命令为brgxxx
  • VIAN接口(VLANInterface) :在VLAN网络中用于连接网桥,命名为ethx:y(ethx为物理网卡名称,y为VLAN ID) .
  • VXLAN接口(VXLAN Interface) :在VXLAN网络中用于连接网桥,命名为vyxlan-z(z是VNID)
  • 物理网络接口:用于连接到物理网络。

2.2、Linux Bridge代理网络结构图

计算节点上的Linux Bridge环境下的Flat网络和VLAN网络,下面2个图中网桥是核心。


  • VLAN网络有2个VLAN接口,分别有自己的网桥,实现了基于VLAN的隔离,VLAN网络的缺点:支持用户少,安全性不好。
  • 基于Linux Bridge 的 flat 网络
    在这里插入图片描述
  • 基于Linux Bridge的VLAN网络
    在这里插入图片描述

三、Open vSwitch代理

与linux Bridge相比,Open vSwitch (可简称ovs)具有几种管控功能,而且性能更加优化,支持更多的功能,目前在OpenStack领域称为主流。它支持Local、 Flat、 VLAN、VXLAN、GRE和GENEVE等所有网络类型。


3.1、Open vswitch 的设备类型

(1)、Tap设备:用于网桥连接虚拟机网卡

(2)、Linux网桥:桥接网络接口(包括虚拟接口)

(3)、VETH对(VETH Pair) :直接相连的一对虚拟机网络接口,发送VETH对一段的数据包由另一端接收。在OpenStack中,它用来连接两个虚拟网桥。

(4)、OVS网桥: Open Vswitch的核心设备,包括一个OVS集成网桥( Integration Bridge )和一个OVS物理连接网桥。所有在计算节点上运行的虚拟机连接到集成网桥,Neutron 通过配置集成网桥上的端口来实现虛拟机网络隔离。物理连接网络直接连接到物理网卡。这两个OVS网络通过一个VETH对连接,Open Vswitch的每个网桥都可以看做是一个真正的交换机,可以支持VLAN。


3.2、Open vSwitch数据包流程

如果选择Open Vswitch代理,在计算节点上的数据包从虚拟机发送到物理网卡需要依次经过一下设备。


  • Tap接口(Tap interface) :用于网桥虚拟机的网卡,命令为tapxxx
  • Linux网桥(Linux Bridge):与Linux Bridge不用,命名为gbrxxx (其中编号xxx与tapxxx中的x相同)
  • VETH对:两端分别命名为qvbxxx和gvoxxx(其中编号xxx与tapxxx中的xxx保持一致)
  • OVS集成网桥:命名为br-int
  • OVS PATCH端口:两端分别命名为int-br-ethx和phy-br-ethx(x为物理网卡名称的编号)
  • OVS物理连接网桥:分为两种类型,在Flat和VLAN网络中使用OVS提供者网桥(Provider Bridge),命名为Br-ethx(x为物理网卡名称的编号),在VXLAN、GRE和GENEVE叠加网络中使用OVS隧道网桥(Tunnel Bridge),命名为Br-tun,另外在Local 网络中不需要任何OVS物理连接网桥
  • 物理网络接口:用于连接到物理网络,命名为ethx(x为物理网卡的名称中的编号)

3.3、open vSwitch网络的逻辑结构


  • 与Linux Bridge代理不同,Open vSwitch代理不通过Eth1.101、Eth1.102 等VLAN接口隔离不同的VLAN网络。

  • 所有的虛拟机都连接到同一个网桥br-int,Open vSwitch通过配置br-int 和br-ethx上的流规则(Flow rule)来进行VLAN转换,进而实现VLAN之间的隔离。

  • 例如:内部标签分别为1和2,而物理网络的VLAN标签是101和102,当br-eth1网桥上的phy-br-eth1端口收到一个VLAN 1标记的数据包时,会将其中的VLAN 1转让为VLAN 101,当br-int网桥上的int-br-eth1端口收到一个VLAN 101标记的数据包时。会将其中的VLAN101转让为VLAN 1。

  • 下面是VLAN网络为例的Open vSwitch网络逻辑结构:

    • 基于Open vSwitch的VLAN网络
      br-eth1是桥接在物理网卡上的,也就是br-eth1是公网,那内部的br-int就相当于是内网交换机
      在这里插入图片描述

推荐阅读
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
可爱的伊比2324767445hMkK
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有