Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VLAN trunking and QinQ support for Linux Bridges #6669

Closed
3 tasks
rsmontero opened this issue Jul 26, 2024 · 3 comments
Closed
3 tasks

VLAN trunking and QinQ support for Linux Bridges #6669

rsmontero opened this issue Jul 26, 2024 · 3 comments

Comments

@rsmontero
Copy link
Member

Description
This issue it to implement VLAN trunking support in Linux bridging. As the implementation of QinQ uses this bridge functionality we will implement support for it in this issue.

Use case
This will allow to restrict the VLANs that a VM can access to and use trunking mode in a secure way, as we'll as easily define QinQ networks.

Interface Changes
The implementation should use the attributes already present in OpenvSwitch

  • VLAN trunking, uses VLAN_TAGGED_ID to specify a range of VLANs to tag, for example: 1,10,30,32,100-200.
  • QinQ uses 2 different attributes to set the customer and service vlan ids:
    • CVLANS Customer VLAN IDs, as a comma separated list
    • VLAN_ID Service 802.1Q VLAN ID. (current setting)

Additional Context
A different feature will address access control to the VLAN sets

Progress Status

  • Code committed
  • Testing - QA
  • Documentation (Release notes - resolved issues, compatibility, known issues)
@cliffalbert
Copy link

Looking forward to this feature, it would make my life a lot easier! :)

rsmontero added a commit that referenced this issue Dec 11, 2024
This commit adds the following features using the vlan_filter
capabilities of the Linux Bridge:

* 802.1Q driver, support for QinQ. This is not a full implementation
  compared to the vSwitch as there is no native support in the linux
  bridge:
    - VLAN_ID is the (outer/C-VLAN) tag implemented by tagging the
      PHY_DEV interface
    - CVLANS are the customer tags, any other VLAN is filtered out in
      the bridge

* bridge driver, support for vlan filtering (VLAN_TAGGED_ID) only the
  specified tags are allowed in the trunk.

Additionally this commits includes linting of some files.

(cherry picked from commit e379bd6)
rsmontero added a commit that referenced this issue Dec 13, 2024
(cherry picked from commit c395b00)
rsmontero added a commit that referenced this issue Dec 13, 2024
Current version of the drivers does not check for user input to have the right format
rsmontero added a commit to OpenNebula/docs that referenced this issue Dec 16, 2024
rsmontero added a commit to OpenNebula/docs that referenced this issue Dec 16, 2024
- VLAN_TAGGED_ID
- CVLANS

(cherry picked from commit cff57aa)
rsmontero added a commit to OpenNebula/docs that referenced this issue Dec 16, 2024
@rsmontero
Copy link
Member Author

This is now implemented and will be released in the next maintenance versions, more details in:

@Franco-Sparrow
Copy link

Thanks for this new feature. Feliz Navidad!

rsmontero added a commit that referenced this issue Jan 13, 2025
This commit adds the following features using the vlan_filter
capabilities of the Linux Bridge:

* 802.1Q driver, support for QinQ. This is not a full implementation
  compared to the vSwitch as there is no native support in the linux
  bridge:
    - VLAN_ID is the (outer/C-VLAN) tag implemented by tagging the
      PHY_DEV interface
    - CVLANS are the customer tags, any other VLAN is filtered out in
      the bridge

* bridge driver, support for vlan filtering (VLAN_TAGGED_ID) only the
  specified tags are allowed in the trunk.

Additionally this commits includes linting of some files.
rsmontero added a commit that referenced this issue Jan 13, 2025
rsmontero added a commit that referenced this issue Jan 13, 2025
Current version of the drivers does not check for user input to have the right format

(cherry picked from commit 8ff4b90)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment