再谈openstack中的self-service和provider网络

之前发过一篇文章https://blog.csdn.net/qhqh310/article/details/133834236?spm=1001.2014.3001.5502谈了openstack中的self-service和provider网络。这段时间有了些新的理解,就再补充说一下。

一、前面提到过self-service网络是完全虚拟的网络,这个说法不完全准确。默认情况下self-service自服务网络也叫租户网络,默认是使用VXLAN技术实现的。但也可以使用VLAN实现,这时self-service就不是一个虚拟网络了,而是一个实打实的物理网络。实现方法如下:

在控制节点:/etc/neutron/plugins/ml2/ml2_conf.ini

ml2

type_drivers = vlan

tenant_network_types = vlan

ml2_type_vlan

指定可用于租户网络创建的物理网络及其 VLAN 范围

network_vlan_ranges = physnet1:100:400

在计算节点和网络节点上配置映射

/etc/neutron/plugins/ml2/openvswitch_agent.ini

ovs

映射到物理网络的桥

bridge_mappings = physnet1:br-eth1

其中br-eth1是一个ovs网桥,这个网桥连接到物理网口eth1上。eth1是用来连接内网的。

此时如果租户再创建一个自服务网络,则是使用了VLAN技术,这个网络就是一个实打实的物理网络。每个租户网络都有一个唯一的VLAN ID。由控制节点在100:400之间分配。当然创建的租户网络受限于物理网络的VLAN范围。这个实验受条件所限,我没有做,但应该是可以的。

二、说到这里,我们可不可以让默认的租户网络保持原来的VXLAN,但同时又为租户提供一个VLAN或flat类型的网络呢?答案是肯定的。

先来看看平坦类型的网络,即flat network。这种网络我们可以简单理解为计算节点有额外的一张物理网卡直接接到一台交换机上,而这台交换机没有配置VLAN。在本实验中每台计算节点的ens36网卡是连接到VMWARE workstation的vnet3这个仅主机网络中的。这里我们保持tenant_network_types = vxlan 不变。

1、在控制节点:/etc/neutron/plugins/ml2/ml2_conf.ini 文件里面新增加一个flat类型的网络

flat_networks=physnet1,localnet #注意physnet1是原来的一个平坦网络,用于外部网络,localnet是新增加的一个平坦网络,主要用于用户内部网络

重启服务

systemctl restart neutron-server.service

systemctl restart neutron-metadata-agent.service

2、在计算节点上配置映射

/etc/neutron/plugins/ml2/openvswitch_agent.ini

在ovs小节增加

bridge_mappings = localnet:br-local

3、在计算节点修改网卡和ovs网桥配置

vim /etc/sysconfig/network-scripts/ifcfg-ens36

TYPE="OVSPort"

DEVICETYPE="ovs"

OVS_BRIDGE="br-local"

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

NAME=ens36

DEVICE=ens36

ONBOOT=yes

vim /etc/sysconfig/network-scripts/ifcfg-br-local

TYPE=OVSBridge

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

NAME=br-local

DEVICE=br-local

DEVICETYPE=ovs

ONBOOT=yes

并重启相关服务

systemctl restart network

systemctl restart neutron-openvswitch-agent.service

4、测试步骤

使用管理员创建一个flat网络,物理网络: localnet

创建一个实例,接入该网络。测试能否ping通外网。再创建一个实例看看能否互通。在我这里都是可以正常的。

这里有个问题,我们在创建实例时可以直接把外部网络就是physnet1,分配给租户吗?答案是否定的。因为physnet1关联到了br-ex这个ovs网桥,而br-ex在计算节点并不存在。它只存在于网络节点。所以创建实例的时候会失败,卡在网络分配这个环节。从这里面我们出可以看出外部网络是跟计算节点无关的。创建提供商网络时,如果勾选外部网络则就是在网络节点创建物理网络,否则就是在计算节点创建物理网络。

三、再来看看vlan类型提供商网络provider network实验

在本实验中每台计算节点的ens37网卡是连接到VMWARE workstation的vnet4这个仅主机网络中的。

1、在主控节点

vim ml2_conf.ini

ml2

type_drivers=vxlan,flat,vlan

ml2_type_vlan

network_vlan_ranges =vlan_net:100:3000

2、在计算节点

vim /etc/neutron/plugins/ml2/openvswitch_agent.ini

在ovs小节增加

bridge_mappings = localnet:br-local,vlan_net:br-vlan

3、在所有计算节点

增加桥配置

vim /etc/sysconfig/network-scripts/ifcfg-ens37

TYPE="OVSPort"

DEVICETYPE="ovs"

OVS_BRIDGE="br-vlan"

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

NAME=ens37

DEVICE=ens37

ONBOOT=yes

vim /etc/sysconfig/network-scripts/ifcfg-br-vlan

TYPE=OVSBridge

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

NAME=br-vlan

DEVICE=br-vlan

DEVICETYPE=ovs

ONBOOT=yes

重启相关服务

systemctl restart network

设置为trunk模式

ovs-vsctl set port ens37 vlan-mode=trunk

systemctl restart openvswitch.service

systemctl restart neutron-openvswitch-agent.service

4、测试步骤

创建一个vlan类型的提供商网络,物理网络: vlan_net VLAN为100,同时创建子网:172.16.100.0/24。禁用网关,也不启用dhcp,因为这些实际上都由物理网络提供。

创建两个实例,分别接入该网络。两个实例分别位于computer01和computer02上。

测试能否ping通网关,及彼此能否ping通

手工配置同网段IP之后互PING,测试结果,无法彼此PING通:原因是我们的物理网卡实际上是使用vmware workstation模拟的,不支持vlan。可以通过抓包来进行证实

在computer01上的虚拟机执行PING另一台虚拟机的操作,同时执行tcpdump -i ens37 查看抓包情况,发现发出的ARP报文确实带有VLAN ID 100是符合预期的。同时在computer02上抓包,发现也收到了报文,但报文格式是异常的,勉强可以看到部分,但跟原始报文有错位。如果有条件接入真实的物理网络,并且交换机正确配置了VLAN透传,即配置为trunk模式,应该是可以正确互联的。

相关推荐
星陨773 天前
OpenStack私有云平台API接口练习
linux·运维·网络·openstack
huhy~5 天前
基于OpenEuler2209搭建OpenStack-Yoga
openstack
oMcLin11 天前
如何在 Ubuntu 22.04 LTS 上部署并优化 OpenStack 云计算平台,实现多租户虚拟化与弹性伸缩?
ubuntu·云计算·openstack
last demo13 天前
openstack基础
linux·运维·openstack
Font Tian19 天前
【云计算2025年度总结】汇总和反思
容器·云计算·k8s·openstack·虚拟化
G_H_S_3_22 天前
【网络运维】OpenStack镜像管理:Glance篇
linux·运维·openstack
无泪无花月隐星沉23 天前
续写云计算的前世今生
kubernetes·云计算·openstack
iconball25 天前
个人用云计算学习笔记 --26 OpenStack 核心服务
运维·笔记·学习·云计算·openstack
神秘面具男031 个月前
OpenStack 核心组件管理
openstack