目录

Bare-Metal networking in Neutron

Ironic use Neutron (the networking API of OpenStack) for configuring the network. “Bare-metal” deployment is little bit different than VM and Ironic had some extra requirement from the Neutron ml2 impelmation.

核心网络类型

Cleaning Network:network that is used to clean the bare-metal server - and make sure that the “bare metal”-node is ready for new workload. That network is recommended to be created as a provider-VLAN network for separation from the tenant VLAN ranges.

Provisioning Network:network that is used for regular management of the node (tear-down, reboot, pxe-boot etc…). Also that network is recommended to be created as a provider-VLAN network for the same reasons of cleaning networks. (The operator can use same network for Provisioning and Cleaning, but Ironic enable define those 2 types for enable the separation(分开)between the the new/clean-nodes that are waiting to deploy and the dirty-nodes, that are waiting for clean)

  • Created by administrator as a Neutron network
  • Ironic compute node is connected to this VLAN
  • Each baremetal node connects to this VLAN only when deployment

Tenant Network:networks that can be used for accessing to the “bare metal” for any other purpose - those networks should be managed like any network on the cloud. When “bare-metal” node is connected to tenant network , it’s should not be connected to the provision network for security reasons. (the same provision network is used for all bare-metal servers, and it breaks isolation requirements).

  • Created by a tenant user as a Neutron network
  • Baremetal nodes in a tenant connect to this type of VLAN after deployment

网络拓扑



  • Management Network:OpenStack 管理网络。
  • External Network:外部网络。
  • Data Network:业务网络,承载业务流量,其作为 OpenStack underlying 网络。
  • OOB (Out-of-Band) Network:带外网络,即 IPMI 网络。

抽象网络拓扑图

  • Tenant network - can be dynamically attached and detached from the “bare metal” node.
  • Provider networks - for cleaning and provisioning - and for any other needs.
  • Ironic conductor - the software component of Ironic that actually controls the “bare metal” server (that includes the TFTP server for the PXE boot).
  • DHCP server - for the assigning IP address to the “bare metal” server, and support PXE-BOOT param as well.
  • Top of rack switch - we assume that the bare-metal server is physically connected to along with all other components (compute-node, ironic conductor-node etc…).
  • The bare-metal server itself.

Neutron Implementation

Supporting port-groups:Bare-Metal often required to treat a group of physical ports - as logical port (e.g BOND/LAG). Those port-groups are required to be managed by Neutron.

Support PXE boot with DHCP:the most common way to boot a Bare-metal servers is by PXE boot. The PXE-boot procedure uses dhcp for retrieving the boot-file-name and tftp-server address. Ironic pass the value of those parameters to neutron (by using neutron extra_dhcp_opt ), and the dhcp-server implementation in neutron should use those parameters for answering pxe-dhcp-requests.

Neutron 了解裸金属节点网络拓扑的实现

neutron-port configurations: To notify neutron about “bare metal” ports, Ironic uses it’s own mechanisms to inspect the hardware , and forward that information as part of neutron-port configuration. For that 2 new fields introduced in neutron lport (spec) :

  • local_link_information - that field located in the lport binding-profile and used for inform neutron how the port is connected the TOR switch. it’s include 3 parameters:

    • switch_id - identifier of the switch that the port connected to. It’s can be switch MAC address OpenFlow based datapath_id.
    • port_id - a physical port-identifier in the switch.
    • switch_info - other information about the switch (optional param).
  • port-groups - a list of parameters for configuring the LAG/BOND on the TOR.

The neutron mechanism-drivers should use that information , while binding the lport.

DHCP configuration: Ironic uses the extra_dhcp_option attribute on neutron-port for configuring the the DHCP to support PXE boot (dhcp options: boot-file-name and tftp-server-address). Neutron ML2 driver should configure the DHCP server to answer these values upon request.

Control physical switches

  • Control switches by Neutron plugin, configure VLAN of a port.
  • Implement this plugin as a ML2 mechanism driver

裸金属节点的网络生命周期

  1. Cleaning:make the node ready for new a job (use the cleaning network).
  2. Provisioning:ironic-conductor uses IPMI on the provisioning network in order to start the machine - and use PXE for booting the machine with the desired image. The PXE boot process includes the following steps (all steps done on provisioning networks):
    • Use DHCP to obtain tftp-server addresses
    • Download boot-file from the tftp-server
    • Boot from the downloaded file
  3. Connect to tenant network:after the machine is up and running. It can be connected to tenant network and managed like any VM. At this phase traffic from “bare metal” server interacts with all other component in the deployment (e.g vm , SNAT, DNAT etc… ).
    • Ironic can change the physical-ports that were used for provisioning network to be bind to tenant network. In such case the “bare metal” server will lose the connectivity with Ironic-conductor, and with “bare metal” provisioning.
  4. Cleaning - back to step 1…

部署网络与租户网络的切换过程

  • A baremetal node is deployed by using the Provisioning VLAN Network

  • After deployment, Ironic changes the VLAN ID so that the baremetal node connects to the tenant VLAN

  • A baremetal node of another tenant also can be deployed by using the Provisioning VLAN Network

  • By switching VLANs, Ironic can manage all tenants

基于 SDN 的网络切换流程

NOTE:Tenant Port 的个数是由用户创建裸金属实例时指定的 Network 个数来决定的,而 Tenant Port 与 Ironic Port 的关联关系根据 Port Group 的个数以及每一个 Port Group 对应的优先级来决定。管理员在上架裸机时,会根据实际的连线情况将连接到同一个网络平面的两张网卡(Ironic Port),用一个 Port Group 关联。两个 Ironic Port 的 MAC 地址不同,但 Port Group 的 MAC 地址需要在 Ironic 和裸机操作系统层面保持一致,所以会选择一个 Ironic Port 作为主网卡,Port Group 的 MAC 地址继承主网卡的 MAC。Port Group 的优先级是用来保证当一个裸机有多个 Port Group,但用户值请求了一个 Network 来创建裸金属实例,此时仅关联至优先级大的 Port Group。

  1. nova-compute 调用 Ironic API 发起部署请求。
  2. 每一个裸机在 Provision 前,ironic-api 会根据 Ring HASH 方法从当前可用的 ironic-conductor 服务中选择一个来负责这个裸机的部署工作。而这个 ironic-conductor 服务配置的 Provision Network 就决定了裸机会加入到特定的 Provision Network。
  3. ironic-conductor 将裸机主网卡的 LLDP 信息更新到 Provision Port 中。这一步对于 SDN 来说,意味着需要下发转发规则到 LLDP 对应的交换机端口上,也就是将这个交换机端口加入到 Provision Network 中。
  4. 当部署完毕后,ironic-conductor 删除临时的 Provision Port。
  5. ironic-conductor 将属于同一个 Port Group 的两个 Ironic Port 的 LLDP 信息更新到 Tenant Port 中。这一步对于 SDN 来说,意味着需要下发转发规则到两条 LLDP 信息对应的两个交换机端口上。也就是将这两个交换机端口加入到 Tenant Network 中。

参考

http://www.dragonflow.net/2017/

https://www.fujitsu.com/jp/documents/products/software/os/linux/catalog/LinuxConJapan2015-Shiina.pdf

Ironic 裸金属管理服务的网络模型的更多相关文章

  1. 手动集成 Ironic 裸金属管理服务(Rocky)

    目录 文章目录 目录 前文列表 横向扩展裸金属管理服务节点 配置基础设施 安装 Ironic(BareMetal) 安装 Nova Compute(BareMetal) 配置 Neutron 提供 P ...

  2. Ironic 裸金属管理服务

    目录 文章目录 目录 Ironic 软件架构设计 资源模型设计 全生命周期的状态机设计 Inspection 裸金属上架自检阶段 Provision 裸金属部署阶段 Clean 裸金属回收阶段 快速体 ...

  3. Ironic 裸金属管理服务的底层技术支撑

    目录 文章目录 目录 底层技术支撑 DHCP NBP TFTP IPMI PXE & iPXE Cloud Init Linux 操作系统启动引导过程 底层技术支撑 PXE:预启动执行环境,支 ...

  4. 注册 Ironic 裸金属节点并部署裸金属实例

    目录 文章目录 目录 前文列表 注册(Enrollment)裸机 创建裸金属实例的 Flavor 部署裸金属实例 日志分析 问题:Failed to create neutron ports for ...

  5. Ironic 裸金属实例的部署流程

    目录 文章目录 目录 逻辑架构 部署架构 前提条件 部署流程 iSCSI Deploy UML PXE Deploy Driver Direct Deploy UML IPA Deploy Drive ...

  6. 使用disk-image-builder(DIB)制作Ironic 裸金属镜像

    export DIB_DEV_USER_USERNAME=centos export DIB_DEV_USER_PASSWORD= export DIB_DEV_USER_PWDLESS_SUDO=Y ...

  7. OpenStack-Ironic裸金属简介

    一,Ironic简述 简而言之,OpenStack Ironic就是一个进行裸机部署安装的项目.    所谓裸机,就是指没有配置操作系统的计算机.从裸机到应用还需要进行以下操作:  (1)硬盘RAID ...

  8. OpenStack Newton:集虚拟化,裸金属和容器部署的统一云平台(转载)

    2016-10-08木屐大数据在线 国庆长假第六天,OpenStack第十四版本Newton(牛顿?)发布,官方介绍中强调这是一个集虚拟化.裸金属和容器技术的一体化平台,可通过一套API来管理裸金属. ...

  9. ironic组件硬件自检服务——ironic-inspector

    介绍 ironic-inspector是一个用于硬件自检的辅助型服务,它可以对被ironic组件管理的裸金属节点进行硬件自检,通过在裸金属节点上运行内存系统,发现裸金属节点的硬件信息,例如CPU数量和 ...

随机推荐

  1. Summer training #6

    A:水.看0多还是1多就行 B:模拟二进制运算 ,,卡了好久 不应该 #include <bits/stdc++.h> #include <cstring> #include ...

  2. 第十一章 前端开发-bootstrap

    11.5.0 bootstrap 11.5.1 bootstrap的介绍和响应式 http://book.luffycity.com/python-book/95-bootstrap/951-boot ...

  3. Win7安装VS2019

    SP1 补丁 WIN7安装VS2019需要更新两个补丁才能顺利安装,否则会闪退. KB4474419 KB4490628 https://zhidao.baidu.com/question/18026 ...

  4. MySQL的btree索引和hash索引区别

     在使用MySQL索引的时候, 选择b-tree还是hash hash索引仅仅能满足"=","IN"和"<=>"查询,不能使用范 ...

  5. jsp+上传组件+文件夹+文件

    上次遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败. 一开始以为是session过期或者文件大小受系统限制,导致的错误.查看了系统的配置文件没有看到文件大小限制,web.xml中sees ...

  6. luoguP1739 表达式括号匹配 x

    P1739 表达式括号匹配 题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹 ...

  7. CUDA-F-1-1-异构计算-CUDA

    开篇废话 成熟与智慧其实和年龄相关,但绝不是完全由年龄决定,少年老成的人肯定是存在的,不是长得老,而是心态成熟,当然大多数老年人其实有些事情思考起来还是老原则,所以他们有时候做事没那么周到,所以一个人 ...

  8. Catch That Cow (POJ - 3278)(简单BFS)

    转载请注明出处:https://blog.csdn.net/Mercury_Lc/article/details/82693928作者:Mercury_Lc 题目链接 题解:给你x.y,x可以加1.减 ...

  9. 微信小程序简单的推送消息流程

    1.进入开发设置-消息推送,启用消息推送 url: 启用并设置消息推送配置后,用户发给小程序的消息以及开发者需要的事件推送,都将被微信转发至该服务器地址中. 2.创建消息模板. 3.WXML代码: 4 ...

  10. JavaWeb_(Struts2框架)拦截器interceptor

    此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...