Tags VLAN no OpenStack, Quantum e OVS

Construindo sua própria nuvem privada multi-host com o lançamento do OpenStack Essex? Fazer com que uma rede com ponte habilitada para vlan comece a funcionar pode ser uma dor, especialmente se você tiver uma infraestrutura de rede existente.

Nossa infraestrutura montou uma rede com VLAN tag 50. Não estamos preocupados em rodar VLANs paralelas e separadas, então seria mais fácil apenas rodar tudo no 50. (Acostumar-se com Quantum agora também é mais preparado para o futuro do que apenas rodar com um modelo FlatDHCP.)

Quando o OpenStack (por meio de seu serviço Quantum, rodando no Open vSwitch) cria uma instância virtual, o dispositivo tap dessa instância é inserido na rede OVS com uma tag vlan arbitrária (mas fixa), impedindo a comunicação. Que dor!

Existem duas etapas que você pode usar para recuperar o controle sobre suas tags Vlan. A primeira é simplesmente ajustar as tags nas portas controladas com Open vSwitch:

ovs-vsctl set Port br-int tag=50

Isso altera a tag vlan na porta br-int para 50. As portas (e tags) em um host físico específico podem ser inspecionadas com

ovs-vsctl show

Isso funciona muito bem com as portas existentes, mas não o ajuda com as novas. Para corrigir isso permanentemente, dê uma olhada rápida no banco de dados associado do plug-in Quantum Open vSwitch.

mysql> show tables;
+-----------------------+
| Tables_in_ovs_quantum |
+-----------------------+
| networks |
| ports |
| vlan_bindings |
+-----------------------+
3 rows in set (0.00 sec)

mysql
> select * from vlan_bindings;
+---------+--------------------------------------+
| vlan_id | network_id |
+---------+--------------------------------------+
| 2 | 1648b94e-78f4-42b9-a951-93d09b9371bb |
+---------+--------------------------------------+
1 row in set (0.00 sec)

Aha. Ajuste esse vlan_id e você está pronto para ir:

mysql> update vlan_bindings set vlan_id = 50;
Query OK, 1 rows affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0