OpenStack Neutron新功能VLAN-aware-VMs介绍

本文由赵怡撰写,介绍了OpenStack Neutron的新特性——VLAN aware VMs(VM trunk ports),用于处理VLAN tagged报文。该功能适用于需要连接多个网络的应用场景,简化了网络接口的管理和动态调整。配置包括在neutron.conf中设置service_plugins为"trunk",并详细说明了如何创建和使用VLAN aware VMs,包括创建网络、配置trunk和subports、设置VLAN接口等步骤。同时,文章探讨了VLAN aware VMs的底层原理,涉及OVS和Linux Bridge的驱动实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者: 赵怡


一、VLAN aware VMs简介

"VLAN aware VMs"有时也叫做"VM trunk ports", 主要是让虚拟机收发的vlan tagged报文, 能够被虚拟网络所识别和处理。

  

二、VLAN aware VMs应用场景

该功能的主要使用场景有:

1. 有些应用程序, 需要连接很多neutron网络。传统的方法是虚拟机上连接很多neutron网络, 但是这样做显然不好维护, 并不实用。比较好的办法是在虚拟机上使用1个VIF网卡接口,创建多个VLAN接口, 并通过收发不同VLAN报文来区分不同网络。

2. 云计算网络中的负载较为动态, 有时需要动态的增删虚拟机上的网络接口。通过增删vlan相对来说更加简单和快捷。

3. 通过配置VLAN, 可以不用增删VIF, 把VM从一个网络挪到另一个网络

4. 一个VM可能跑多个容器, 通过给容器分配VLAN来连接到不同的neutron网络, 比给每个容器分配一个VM的VIF, 更加有效和更好的可扩展性。

5. 有些老的应用程序以及部分NFV, 要求能够通过VLAN来连接网络, 本功能能够满足这个需求。

  

三、VLAN aware VMs配置和使用方法

配置

需要在网络节点的neutron.conf里配置service_plugins为: "trunk"。

service_plugins=...., trunk

 

使用

例如, 我们将要创建一个虚拟机trunk-vm1, 虚拟机上希望有3个网络接口: eth0, VLAN接口: eth0.1, VLAN接口: eth0.2。 其中:

nova创建虚拟机时创建的eth0, 主要用来收发VLANuntagged报文, 所属net0网络(子网为:10.0.4.0/24)。 对应的neutron port被称为parent_port, 取名为: trunkparent。

手动在VM里创建的VLAN接口: eth0.1, 用来收发VLAN tag=1的报文, 所属net1网络(子网为: 10.0.5.0/24)。对应的neutron port被称为subport, 取名为: subport1。

手动在VM里创建的VLAN接口: eth0.2, 用来收发VLAN tag=2的报文, 所属net2网络(子网为: 10.0.6.0/24)。对应的neutron port被称为subport, 取名为: subport2。

 

1. 创建网络net0, net1, net2, 以及对应的子网: subnet0 (10.0.4.0/24),subnet1 (10.0.5.0/24), subnet2 (10.0.6.0/24)

# openstack network create net0

# openstack network create net1

# openstack network create net2

# openstack subnet create --network net0 --subnet-range 10.0.4.0/24 subnet0

# openstack subnet create --network net1 --subnet-range 10.0.5.0/24 subnet1

# openstack subnet create --network net2 --subnet-range 10.0.6.0/24 subnet2

 

2. 在net0上创建trunkparentport, 在net1上创建subport1, 在net2上创建subport2

# openstack port create --network net0 trunkparent

# openstack port create --network net1 subport1

# openstack port create --network net2 subport2

  

3. 创建mytrunk, 并设置parent-port为: trunkparent。subport 1的vlan_id=1 subport2的vlan_id=2。

# openstack network trunk create --parent-port trunkparent \

 --subport port=subport1,segmentation-type=vlan,segmentation-id=1 \

 --subport port=subport2,segmentation-type=vlan,segmentation-id=2 mytrunk

 

+-----------------+-----------------------------------------------------------------------------------------------+

| Field           | Value                                                                                         |

+-----------------+-----------------------------------------------------------------------------------------------+

| admin_state_up  | UP                                                                                            |

| created_at      | 2016-11-15T01:58:13Z                                                                          |

| description     |                                                                                               |

| id              | a5f0be95-67bd-4dea-b321-b4cad753b91d                                                       &n

### 解决 `yum install` 命令报错的方法 当执行命令 `yum install openstack-neutron ml2 linuxbridge ebtables` 出现错误时,可能的原因有多种。以下是几种常见的原因以及相应的解决方案。 #### 1. 检查仓库配置 确保 YUM 仓库已正确配置并可用。如果缺少必要的 OpenStack 或 EPEL (Extra Packages for Enterprise Linux) 仓库,则可能导致依赖项无法解析或下载失败。可以尝试添加这些仓库: 对于 CentOS/RHEL 用户来说,可以通过以下方式启用额外的软件源: ```bash sudo yum install centos-release-openstack-yoga epel-release -y ``` #### 2. 清理缓存重新同步数据 有时本地元数据可能会损坏或者过期,这也会引起安装过程中的问题。清理现有缓存再重试有助于解决问题: ```bash sudo yum clean all && sudo yum makecache fast ``` #### 3. 使用完整的包名进行安装 根据提供的信息,在实际操作过程中应当使用更具体的名称来代替缩写的参数[^1]。因此建议按照官方文档推荐的方式输入完整指令如下所示: ```bash sudo yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables conntrack-tools ``` #### 4. 修改内核参数支持桥接防火墙过滤功能 为了使Linux Bridge能够正常工作于Neutron环境中,还需要调整一些内核级别的设置以允许网桥上的流量被iptables规则所影响[^4]: ```bash echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf echo 'net.bridge.bridge-nf-call-ip6tables=1' >> /etc/sysctl.conf sysctl -p modprobe br_netfilter ``` 通过以上措施应该能有效减少因环境差异而导致的各种潜在错误情况的发生概率。当然具体到每一个特定场景下还可能存在其他因素干扰成功部署流程,这时就需要结合日志文件进一步排查分析了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值