Neutron hierarchical port binding [1] allows software-defined networking (SDN) users to dynamically configure VLANs and VLAN tags for a physical BIG-IP® device or device service cluster connected to a ‘top of rack’ L3 switch (a network ‘segment’). Telling the F5® agent what physical switch and port the BIG-IPs are connected to allows the agent to configure the BIG-IPs to process traffic for networks that are dynamically created in that segment.
Because it is possible for LBaaSv2 objects to be provisioned on a Neutron network which has not yet been bound to a segment, the F5 agent can provision LBaaSv2 services in a disconnected state. When the agent discovers the intended network(s), these ‘disconnected services’ will be connected to the VLAN(s) and BIG-IP(s) as intended. You can customize how often the F5 agent will poll, and the maximum amount of time it should wait, for the network to be created before the request fails. This is, essentially, a fail-safe built into the F5 agent that allows for a certain degree of variation in the timing of the VLAN deployment and the request to create the LBaaS objects for it.
The most common use case for heirarchical port binding is an undercloud deployment of a physical BIG-IP device or device service cluster that processes traffic on networks dynamically created via SDN. When the F5 agent is configured with the name of a switch and the port(s) to which BIG-IP devices are connected, the LBaaSv2 driver discovers Neutron networks in that switch’s network segment. The driver provides the segmentation IDs of VLANs in the network segment to the F5 agent, which then dynamically creates the VLAN tags required to connect LBaaS services to the BIG-IPs.
VLAN
is the only supported ML2 network type when employing Hierarchical Port Binding.f5_network_segment_physical_network
setting. [2]$ sudo vi /etc/neutron/services/f5/f5-openstack-agent.ini
Setting | Description | Default Value |
---|---|---|
f5_network_segment_physical_network | The name of the network segment in which
the agent will manage BIG-IP(s).
|
None |
f5_network_segment_polling_interval | Seconds between polling Neutron for a
network_id to segmentation_id mapping.
|
10 |
f5_network_segment_gross_timeout | Maximum seconds to wait for a network to
be bound before the LBaaS request fails.
|
300 |
Important
If you are running in ‘traditional mode’, the f5_network_segment_physical_network
setting must be commented out. To use disconnected mode, the setting must be uncommented and configured with a valid network name.
Example
# Hierarchical Port Binding
#
# If hierarchical networking is not required, these settings must be commented
# out or set to None.
#
# Restrict discovery of network segmentation ID to a specific physical network
# name.
#
f5_network_segment_physical_network = edgeswitch002ports0305
#
# Periodically scan for disconected listeners (a.k.a virtual servers). The
# interval is number of seconds between attempts.
#
f5_network_segment_polling_interval = 10
#
# Maximum amount of time in seconds for wait for a network to become connected.
#
f5_network_segment_gross_timeout = 300
See also
[1] | Neutron Hierarchical Port Binding: What is it? And why you should deploy it - Presentation from the 2015 OpenStack Summit |
[2] | See Agent Redundancy and Scale Out |
[3] | See Differentiated Service Environments and Multi-tenancy |