Openstack组件实现原理 — OpenVswitch/Gre/vlan

目录

  • 目录
  • 前文提要
  • Neutron 管理的网络相关实体
  • OpenVswitchOVS
    • OVS 的架构
  • VLan
  • GRE 隧道
  • Compute Node 中的 Instance 通过 GRE 访问 Public Network
    • 涉及的 Linux 网络技术

前文提要

Openstack组件部署 — Overview和前期环境准备
Openstack组建部署 — Environment of Controller Node
Openstack组件部署 — Keystone功能介绍与认证实现流程
Openstack组件部署 — Keystone Install & Create service entity and API endpoints
Openstack组件部署 — keystone(domain, projects, users, and roles)
Openstack组件实现原理 — Keystone认证功能
Openstack组建部署 — Glance Install
Openstack组件实现原理 — Glance架构(V1/V2)
Openstack组件部署 — Nova overview
Openstack组件部署 — Nova_安装和配置Controller Node
Openstack组件部署 — Nova_Install and configure a compute node
Openstack组件实现原理 — Nova 体系结构
Openstack组件部署 — Netwotking service组件介绍与网络基本概念
Openstack组件部署 — Networking service_安装并配置Controller Node
Openstack组件部署 — Networking service_Compute Node

Neutron 管理的网络相关实体

  • network 网络:为每个用户提供独立的网络环境,用户可以定义多个 network,彼此之间都独立隔离。network 可以拥有无数个动态可创建和销毁的 ports。而这些端点都会连接到 network 中的 subnets。network 是最基础的实体,subnets 和 ports 都需要关联到 network 上才能生效。每个 network 相当于一个虚拟交换机,同一个 subnet 上的 Instance 可以通过这个 “交换机” 来通信。
  • subnet 子网:不同的 subnet 拥有不同的网段,其中的每一个 Instances 都有一个 IP,不同 subnet 的 Instance 在 L3 域上彼此不可见,因为路由会阻断广播。所以不同的 subnet 之间的 Instances 需要三层网络设备(网关、DNS、路由)来支持通信。每个 subnet 都必须有一个 CIDR 和关联到一个 network。Instance 的 IP 可以从 CIDR 或者用户指定的地址池中选取。
  • port 端口:可以进出流量的接口,往往绑定上若干的 MAC 地址和 IP 地址,来进行寻址。一般为虚拟交换机上的虚拟接口。 Instance 将虚拟网卡挂载到 port 上,通过 port 来访问 network 。当 port 有 IP 时,说明它属于某个 subnet 。

OpenVswitch(OVS)

OpenVswitch 虚拟交换机,网络2层(L2)设备,可以创建多个 vSwitch 分配给不同的 network,使 network 中同一个 subnet 的 Instance 能够通信。在同一个 sunbet 中的两个 Instance 之间通信的过程:
Instacne_A
⇒ vNIC(port)
⇒ Virtual Switch
⇒ Physical Switch
⇒ Virtual Switch
⇒ vNIC
⇒ Instance_B

Virtual Switch 作为 Physical Switch 和 Instance 之间的桥梁。

OVS 的架构

  • ovsdb-sever:OVS 的数据库服务器,用来存储虚拟交换机的配置信息。它使用 OVSDB(JSON-RPC) 的方式来与 manager 和 ovs-vswitchd 交换信息。
  • ovs-vswitchd:OVS 的核心部件,它和上层 Controller 通信遵从 OPENFLOW 协议,它与 ovsdb-server 通信使用 OVSDB 协议,它和 ovs kernel module 通过 netlink 通信,它支持多个独立的 datapath(网桥),它通过更改 flow table 实现了绑定,和 VLAN 等功能。
  • ovs kernel module:OVS 的内核模块,处理包交换隧道,缓存 flow,如果在内核的缓存中找到了转发规则,则转发,否则发向用户空间去处理。

VLan

VLan 虚拟局域网,在 L2 上应用。对网包打上 tag 标签。拥有同一个 tag 标签的网包就属于同一个 VLan,VLan 能够将存在于同一个 subnet 的 Instance 隔离成若干个 subnet 。

GRE 隧道

如果希望运行在 Compute Node 上的 Instance 能够通过 Neutron Node 去访问 Pubilc Network,这就表示同一个数据包需要在不同的协议之间(L2的数据帧和L3的报文包之间)被传输,这样的话就需要使用隧道技术来实现这个需求。使用隧道传递的数据可以是不同协议的数据帧或包,隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。

Compute Node 中的 Instance 通过 GRE 访问 Public Network

涉及的 Linux 网络技术

  • bridge(网桥):Linux 中用于表示一个能连接不同网络设备的虚拟设备,Linux 中传统实现的网桥类似于一个 Hub 设备,而 OVS 管理的网桥一般类似交换机。
  • br-int(bridge-integration):综合网桥,常用于表示实现主要内部网络功能的网桥。
  • br-ex(brifge-external):外部网桥,负责跟外部网络通信的网桥。
  • GRE(General Routing Encapsulation):一种通过封装来实现隧道的方式,在 Openstack 中一般是基于 L3 的 GRE。
  • VETH(虚拟 Ethernet接口):通常以 Pair 对的方式出现,一端发出网包,会被对应的另一端接收,可以形成两个网桥之前的通道。
  • qvb(虚拟接口):neutron veth,Linux Bridge-side
  • qvo(虚拟接口):OVS-Side
  • TAP设备:模拟一个 L2 的网络设备,用于接收和发送 L2 网包。
  • TUN设备:模拟一个 L3 的网络设备,可以接受和发送 L3 网包。
  • iptables:Linux 安全策略防火墙。
  • Vlan:虚拟 Lan,同一个物理 Lan 下用标签来实现隔离,可用标号为1-4094.
  • VXLAN:一套利用 UDP 协议作为底层传输协议的 Overlay 实现。被认为是 VLan 技术的延伸和替代者。
  • namespace:命名空间,是一套用于资料隔离的机制,不同 namespace 中的资源之间彼此不可见。
  • qbr(Linux 传统网桥):为了让 Instance 能够连接到 br-int (综合网桥上)。因为 br-int 只能对 L3 做防火墙限制,不能针对一个 Instance 做防火墙设置。所以需要 qbr 来完成对一个 Instance 做安全策略。

  • [A, B] (VM1 ⇒ qbr-1 ) : 被应用在 L2 中,将 VM1 的网包传输到 qbr-1 ,为什么不直接传输到 br-int 呢?因为这之中会涉及到一个 SecurityGroup 的问题。 br-int 综合网桥只能对 L3 层做安全策略,即只能对同一个 subnet 内所有的 Instance 做一个统一的安全策略。这样的话就无法防止同一个 subnet 内的 Instance 去攻击另外一个 Instance 。所以还需要针对单个 Instance 做安全策略,来防止同网段中的 Instance 攻击,而这个针对单个 Instance 的安全策略由 qbr-1(传统 Linux 网桥)来提供。
  • [C,D] (qbr-1 ⇒ br-int) : qvb 和 qvo 分别作为 Bridge-side 和 OVS-side 的虚拟接口。如果 qbr-1 要跟 br-int 传输数据,就需要将这两个虚拟接口对接。在 br-int 中会对整个 Subnet 中的 Instance 做统一的安全策略。而且 br-int 还能提供 VLan 的功能,br-int 对同一个 subnet 上传输来的网包打上相同的 tag 标记,就是说拥有不同的 tag 的响应数据包会被转发到不同的 VLan 。 br-int 提供的 VLan 功能,将不同的 subnet 隔开,实现了 L3 的隔离(L3 的广播阻断)。br-int 和 qbr-1 完成了 OVS 的功能。
  • [E,F] ( br-int ⇒ br-tun) : 将网包传输给 br-tun 之后会为每个网包做流表限制,保证了网包响应时,能够根据流表找到对应的 VLan ,而不会胡乱的将响应网包分发给错误的 VLan 中。
  • [G,H] (br-tun ⇒ br-tun) : 直连的GRE隧道传输,即跨协议传输,拥有相同流表的网包会在同一个隧道中被传输,可以同时拥有多条隔离的隧道。
  • [I,J] (br-tun ⇒ br-int) : 与 [E,F] 类似,主要完成将隧道号(流表号)和 VLan 号对应转换,保证数据的完整传输和独立性。
  • [O,P] (br-int ⇒ DHCP):在创建 Instacne 的过程中,会向 DHCP 申请分配 IP。
  • [M,N] ( br-int ⇒ Route):将内网 Instance 网包的 IP 转换为 Public Network IP
  • [K,L] (Route ⇒ br-ex) : 最后再通过 br-ex 将网包转发到物理网卡。
时间: 2024-11-05 14:37:42

Openstack组件实现原理 — OpenVswitch/Gre/vlan的相关文章

Openstack组件实现原理 — Nova 体系结构

目录 目录 前文列表 Nova体系结构 虚拟机实例化流程 前文列表 Openstack组件部署 - Overview和前期环境准备 Openstack组建部署 - Environment of Controller Node Openstack组件部署 - Keystone功能介绍与认证实现流程 Openstack组件部署 - Keystone Install & Create service entity and API endpoints Openstack组件部署 - keystone(d

Openstack组件实现原理 — Keystone认证功能

目录 目录 前言 Keystone安装列表 Keystone架构 Keystone的管理对象 一个理解Keystone管理对象功能的例子 Keystone管理对象之间的关系 Keystone V3的新特性 V3的改进 Authorization授权功能的应用 Authentication认证功能的应用过程 前言 Keystone实现始终围绕着Keystone所实现的功能来展开,所以在理解其实现之前,建议大家尝试通过安装Keystone这一个过程来感受Keystone在Openstack架构中所充

Openstack组件实现原理 — Glance架构(V1/V2)

目录 目录 Glance 安装列表 Glance Image service Image service 的组件 Glance-Api Glance-Registry Glance-db Image StoreStore Backend Image Glance 架构 Glance Restful API V1 Glance Restful API V2 Glance 安装列表 Openstack组建部署 - Glance Install Glance Image service Image s

Openstack组件部署 — Networking service_安装并配置Controller Node

目录 目录 前文列表 前提条件 网络环境 完成下面的步骤以创建数据库 创建service credentials服务凭证 创建Neutron的API Endpoints 配置自服务网络 安装网络组件 配置服务组件 配置 Modular Layer 2 ML2 插件 配置Linux 桥接代理 配置layer-3代理 配置DHCP代理 配置元数据代理 配置计算使用网络 完成安装 前文列表 Openstack组件部署 - Overview和前期环境准备 Openstack组建部署 - Environm

Openstack组件部署 — Netwotking service组件介绍与网络基本概念

目录 目录 前文列表 Openstack Networking serivce 基本的Neutron概念 Neutron的抽象对象 网络networks 子网subnets 路由器routers 端口 Neutron的Public外部网络和Private内部网络 Neutron的security groups安全组 虚拟机如何连接到Internet外网 前文列表 Openstack组件部署 - Overview和前期环境准备 Openstack组建部署 - Environment of Cont

Openstack组件部署 — Nova_安装和配置Controller Node

目录 目录 前文列表 Prerequisites 先决条件 To create the databases To create the service credentials Create the Compute service API endpoints Install and configure components Install the packages Edit the etcnovanovaconf file Populate the Compute databases Finali

Openstack组件部署 — Nova overview

目录 目录 前文列表 前言 Compute service overview Nova 的组件 nova-api service nova-api-metadata service nova-compute service nova-scheduler service nova-conductor module nova-cert module nova-network worker daemon nova-consoleauth daemon nova-novncproxy daemon no

开启云之旅:OpenStack组件简介

随着越来越多的企业考虑选择不同的私有云平台,组织了解开源的OpenStack与市场上其他流行的云计算软件之间的区别是很重要的.本文我将介绍OpenStack和一些必备的OpenStack组件. OpenStack生态系统 OpenStack和Amazon EC2非常类似,两大平台都允许用户使用仪表盘或者API部署虚拟机.除OpenStack免费之外,两大产品的重大差别是Amazon EC2是一个公有云服务,而OpenStack允许你构建自己的私有云或者订阅OpenStack公有云厂商的服务. O

《OpenStack实战》——1.4 OpenStack组件介绍

1.4 OpenStack组件介绍 1.1节介绍了OpenStack基本的功能,本节我们将会分析组成OpenStack框架的基本组件. 表1-1列举了多个OpenStack组件或核心项目.虽然还有更多现处在不同开发阶段的项目,但表1-1中所列的是OpenStack的基本组件.最新的OpenStack服务路线图可以在OpenStack路线图网页(www.openstack.org/software/roadmap/)中找到. 表1-1 核心项目 现在你应该了解了OpenStack及其作用,让我们快