纪晨
作者纪晨2019-11-19 17:59
研发工程师, LinuxONE

LinuxONE 下openstack provider network 网卡bridge_role配置

字数 1083阅读 620评论 0赞 1

本文假设读者了解基本的Openstack 网络概念

LinuxONE 基于Openstack的KVM实现(VLAN或者FLAT模式)中,计算节点的网络定义(neutron sub-net)为10.0.0.1/24,这样部署出来的虚拟机通过网桥br-ex 可以连接外网, 根据社区的配置推荐,br-ex会和物理网卡以及br-int连接,这样br-int里所有的虚拟机的流量都会从br-ex 被转发到网关。实际中发现内部虚拟机之间可以ping 通,但是却无法访问网关,作了一番调研,发现和LinuxONE OSA配置有关。

LinuxONE下Openstack 网卡 (OSA)默认只向OSA认知的目的地转发流量,针对每一个注册的设备,OSA卡都会在其转发数据库中维护MAC 地址, 而我们知道Openstack 内计算节点的虚拟机往往和计算节点不在一个网段,例如虚拟机的IP是10.0.0.2和10.0.0.3 (网关是10.0.0.1) , 而计算节点的IP是192.168.126.2,该OSA不能认知网关10.0.0.1的存在,这样网卡会默认过滤掉虚拟机的流量从而导致虚拟机无法访问外网。

这样就需要对OSA做一定的设置:

$ lsqeth

Device name : enccw0.0.1000

card_type : VSWITCH: SYSTEM VSC11590 (Type: QDIO)

cdev0 : 0.0.1000

cdev1 : 0.0.1001

cdev2 : 0.0.1002

chpid : 01

online : 1

portname : PORT1000

portno : 0

state : UP (LAN ONLINE)

priority_queueing : always queue 2

buffer_count : 64

layer2 : 1

isolation : none

bridge_role : none

bridge_state : inactive

bridge_hostnotify : 0

bridge_reflect_promisc : none

检查bridge_role这个选项,通过如下命令
$ echo "primary" > /sys/class/net/enccw0.0.1000/device/bridge_role

把网桥的模式改为primary,这样,这个接口将会转发任何流量,也包括没有在该OSA注册
的地址之上。

具体请参考
https://www.ibm.com/downloads/cas/ZVJGQX8E

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表