目录

前文提要

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 将网包转发到物理网卡。

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

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

    目录 目录 前文列表 Nova体系结构 虚拟机实例化流程 前文列表 Openstack组件部署 - Overview和前期环境准备 Openstack组建部署 - Environment of Con ...

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

    目录 目录 前言 Keystone安装列表 Keystone架构 Keystone的管理对象 一个理解Keystone管理对象功能的例子 Keystone管理对象之间的关系 Keystone V3的新 ...

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

    目录 目录 Glance 安装列表 Glance Image service Image service 的组件 Glance-Api Glance-Registry Glance-db Image ...

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

    目录 目录 前文列表 前提条件 网络环境 完成下面的步骤以创建数据库 创建service credentials服务凭证 创建Neutron的API Endpoints 配置自服务网络 安装网络组件 ...

  5. Openstack组件部署 — Networking service_Compute Node

    目录 目录 前文列表 安装组件 配置通用组件 配置自服务网络选项 配置Linux 桥接代理 配置Nova使用网络 完成安装 验证操作Execute following commands on Cont ...

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

    目录 目录 前文列表 Openstack Networking serivce 基本的Neutron概念 Neutron的抽象对象 网络networks 子网subnets 路由器routers 端口 ...

  7. Openstack组件部署 — Nova_Install and configure a compute node

    目录 目录 前文列表 Prerequisites 先决条件 Install and configure a compute node Install the packages Edit the etc ...

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

    目录 目录 前文列表 Prerequisites 先决条件 To create the databases To create the service credentials Create the C ...

  9. openstack项目【day23】:openstack组件介绍

    本节内容 openstack介绍 openstack项目(服务名是项目名的别名) openstack运行流程 openstack各组件详解 一:openstack介绍             open ...

随机推荐

  1. d3js 折线图+柱图

    <!DOCTYPE html> <html> <body> <div id="vis"><svg></svg> ...

  2. SQL 空值

    SQL NULL Values(空值) 什么是SQL NULL值? SQL 中, NULL 用于表示缺失的值.数据表中的 NULL 值表示该值所处的字段为空. 具有NULL值的字段是没有值的字段. 如 ...

  3. (转)OpenFire源码学习之五:用户登录

    转:http://blog.csdn.net/huwenfeng_2011/article/details/43413377 登陆 登陆认证,客户端发送认SASL证消息: <auth mecha ...

  4. I. Five Day Couple--“今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)

    题目描述:链接点此 这套题的github地址(里面包含了数据,题解,现场排名):点此 链接:https://www.nowcoder.com/acm/contest/104/H来源:牛客网 题目描述 ...

  5. Qt 线程基础(QThread、QtConcurrent、QThreadPool等)

      使用线程 基本上有种使用线程的场合: 通过利用处理器的多个核使处理速度更快. 为保持GUI线程或其他高实时性线程的响应,将耗时的操作或阻塞的调用移到其他线程. 何时使用其他技术替代线程 开发人员使 ...

  6. 校验文件是否是同一个文件,以及mac中使用MD5命令

    背景 sz了war包,因为查看不到里面的内容,并不确定是否是同一个文件. 解决 通过MD5校验 md5sum xxxx 但是在mac中是没有这个命令的下载半天没下载下来,下面是快捷操作. 1.打开终端 ...

  7. c#网络通信框架networkcomms内核解析之三 消息同步调用

    networkcomms.net 来自英国的网络通信框架 官方网址 www.networkcomms.net 中文网址www.networkcomms.cn 客户端发送消息给服务器,服务器计算结果返回 ...

  8. vbs 之 wscript

    https://www.jb51.net/article/20919.htm '''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ...

  9. 什么是NVMe硬盘?

    本文摘自:https://zhidao.baidu.com/question/590890784.html NVMe硬盘指的是非易失性内存主机控制器接口规范(Non-Volatile Memory e ...

  10. Jmeter+ant

    1.下载 ant,解压到非中文目录,并配置环境变量,不会的自行 google 2.将 jmeter 中 extras 子目录里的 ant-jmeter-1.1.1.jar 复制到 ant 中的 lib ...