Search
  • Software
    • Overview
    • OpenStack Components
    • SDKs
    • Deployment Tools
    • OpenStack Map
    • Sample Configs
  • Use Cases
    • Users in Production

    • Ironic Bare Metal
    • Edge Computing
    • Telecom & NFV
    • Science and HPC
    • Containers
    • Enterprise
    • User Survey
  • Events
    • OpenInfra Summit
    • Project Teams Gathering
    • OpenDev
    • Community Events
    • OpenStack & OpenInfra Days
    • Summit Videos
  • Community
    • Welcome! Start Here
    • OpenStack Technical Committee
    • Speakers Bureau
    • OpenStack Wiki
    • Get Certified (COA)
    • Jobs
    • Marketing Resources
    • Community News
    • Superuser Magazine

    • OpenInfra Foundation Supporting Organizations
    • OpenInfra Foundation
  • Marketplace
    • Training
    • Distros & Appliances
    • Public Clouds
    • Hosted Private Clouds
    • Remotely Managed Private Clouds
    • Consulting & Integrators
    • Drivers
  • Blog
  • Docs
  • Join
    • Sign up for Foundation Membership
    • Sponsor the Foundation
    • More about the Foundation
  • Log In

Configure Trait Based Networking to Plan Networking Related Operations at vif Attach

Configure Trait Based Networking to Plan Networking Related Operations at vif Attach¶

Ironic has a feature called Trait Based Networking (or TBN) that allows operators to configure how a node’s network will be built and attached.

TBN applies to OpenStack installations utilizing Ironic, Neutron, and Nova that want dynamic port scheduling based on networks and flavors chosen by the instance creator.

In order to use this feature, a few steps must be completed.

  1. Enable Trait Based Networking in the ironic-conductor service configuration:

    [conductor]
    
    # Enables Trait Based Networking, defaults to False
    enable_trait_based_networking=True
    
  2. Place a TBN configuration file in the configured location. The default location is: /etc/ironic/trait_based_networking.yaml.

    For discussion of the syntax and format of the configuration file refer to Trait Based Networking Configuration File Reference.

    The default configuration which ships with Ironic is reproduced below:

    CUSTOM_TRAIT_NAME:
      order: 1
      actions:
        - action: bond_ports
          filter: port.vendor == 'vendor_string'
          min_count: 2
    CUSTOM_DIRECT_ATTACH_A_PURPLE_TO_STORAGE:
      actions:
        - action: attach_port
          filter: port.vendor == 'purple' && network.name == 'storage'
    CUSTOM_BOND_PURPLE_BY_2:
      actions:
        - action: group_and_attach_ports
          filter: port.vendor == 'purple'
          max_count: 2
    CUSTOM_BOND_GREEN_STORAGE_TO_STORAGE_BY_2:
      actions:
        - action: group_and_attach_ports
          filter: port.vendor == 'green' && port.category == 'storage' && ( network.name =~ 'storage' || network.tags =~ 'storage' )
          max_count: 2
          min_count: 2
    CUSTOM_USE_PHYSNET_A_OR_B:
      actions:
        - action: attach_port
          filter: port.physical_network == 'fabric_a' && network.tags == 'a'
        - action: attach_port
          filter: port.physical_network == 'fabric_b' && network.tags == 'b'
    
  3. Set desired TBN traits on a node’s instance_info.traits. Trait names must match exactly for a TBN trait to be applied.

Then, when vif_attach is called, TBN will plan networking operations based on the node’s instance_info.traits and supplied configured traits. If planning succeeds, then each network operation will be applied.

this page last updated: 2026-02-04 12:21:40
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

  • Guides
  • Install Guides
  • User Guides
  • Configuration Guides
  • Operations and Administration Guides
  • API Guides
  • Contributor Guides
  • Languages
  • Deutsch (German)
  • Français (French)
  • Bahasa Indonesia (Indonesian)
  • Italiano (Italian)
  • 日本語 (Japanese)
  • 한국어 (Korean)
  • Português (Portuguese)
  • Türkçe (Türkiye)
  • 简体中文 (Simplified Chinese)

ironic 34.0.1.dev159

  • Installing Ironic Bare Metal Service
    • Overview of Ironic
    • Reference Deploy Architectures
    • Install and configure the Bare Metal service
    • Building or downloading a deploy ramdisk image
    • Integration with other OpenStack services
    • Set up the drivers for the Bare Metal service
    • Enrolling hardware with Ironic
    • Using Bare Metal service as a standalone service
    • Enabling the configuration drive (configdrive)
    • Graphical console support
    • Advanced features
    • Troubleshooting
    • Next steps
  • Using Bare Metal service as a standalone service
  • Bare Metal Service Upgrade Guide
  • Bare Metal Service User Guide
  • API Concept Guide
  • API Reference for Ironic
  • API Version History
  • Drivers, Hardware Types, and Hardware Interfaces for Ironic
  • Bare Metal Service Features
  • Configuration and Operation
  • Administrator Command References
  • Configuration Reference for Ironic
  • Architecture and Implementation Details
  • Developer’s Guide
  • Contributing to Ironic Docs
  • Support Resources
  • References

OpenStack

  • Projects
  • OpenStack Security
  • Blog
  • News

Community

  • User Groups
  • Events
  • Jobs
  • Companies
  • Contribute

Documentation

  • OpenStack Manuals
  • Getting Started
  • API Documentation
  • Wiki

Branding & Legal

  • Legal Docs
  • Logos & Guidelines
  • Trademark Policy
  • Privacy Policy
  • OpenInfra CLA

Stay In Touch

The OpenStack project is provided under the Apache 2.0 license. Docs.openstack.org is powered by Rackspace Cloud Computing.