When you issue neutron lbaas commands on your OpenStack Neutron controller or host, the F5® LBaaSv2 driver and F5 agent configure objects on your BIG-IP® device(s). Here, we’ve provided some insight into what exactly happens behind the scenes to configure BIG-IP objects. You can also view the actual calls made by setting the F5 agent’s DEBUG level to ‘True’ in the Agent Configuration File and viewing the logs (/var/log/neutron/f5-openstack-agent.log).
F5 LBaaSv2 uses the f5-sdk to communicate with BIG-IP via the iControl® REST API. The table below shows the corresponding iControl endpoint and BIG-IP object for each neutron lbaas- ‘create’ command.
| Command | URI | BIG-IP Configurations Applied | 
|---|---|---|
neutron lbaas-loadbalancer-create | 
https://<icontrol_endpoint>:443/mgmt/tm/sys/folder/~Project_<os_tenant_id> | new partition created using the uuid prefix and tenant ID | 
neutron lbaas-listener-create | 
https://<icontrol_endpoint>:443/mgmt/tm/ltm/virtual/ | new virtual server created in the tenant partition | 
neutron lbaas-pool-create | 
https://<icontrol_endpoint>:443/mgmt/tm/ltm/pool/ | new pool created on the virtual server | 
neutron lbaas-member-create | 
https://<icontrol_endpoint>:443/mgmt/tm/ltm/pool/~Project_<os_tenant_id>~pool1/members/ | new member created in the pool | 
neutron lbaas-healthmonitor-create | 
https://<icontrol_endpoint>:443/mgmt/tm/ltm/monitor/http/ | new health monitor created for the pool | 
The configurations applied when you issue neutron lbaas commands depend on how your BIG-IP is deployed and your network architecture. Far fewer configurations are made for an overcloud, standalone BIG-IP deployment than for an undercloud active-standby pair or device service cluster.
The table below shows what happens on the BIG-IP when various commands are issued in Neutron to the F5 agent for a standalone, overcloud BIG-IP.
| Command | Action | 
|---|---|
systemctl start f5-openstack agent | 
1. Agent reads the vtep self IP defined in the agent config file. 
2. BIG-IP advertises the vtep’s IP address. 
3. The self IP address is advertised to Neutron as the agent’s 
tunneling_ip.4. A new port for the vtep is added to the OVS switch. 
5. Profiles for all tunnel types are created on the BIG-IP. [1] 
 | 
neutron lbaas-loadbalancer-create | 
2. New fdb records are added for all peers in the network. 
3. A new route domain is created. 
4. A new self IP where the BIG-IP can receive traffic is created on the 
specified subnet. 
5. A new tunnel is created, using the vtep as the local address (uses the 
vxlan profile created when the agent was first started). [4] 
6. A SNAT pool list / SNAT translation list is created on the BIG-IP. 
- The number of SNAT addresses that will be created is defined in the agent 
config file. [5] 
7. A neutron port is created for each SNAT address. 
- If SNAT mode is turned off and SNAT addresses is set to  
0, the BIG-IPwill act as a gateway so return traffic from members is always routed 
through it. 
- If SNAT mode is turned on & SNAT addresses is set to  
0, SNAT automapwill be used. 
 | 
neutron lbaas-listener-create | 
1. A new virtual server is created in the tenant partition on the BIG-IP. 
- Attempts to use Fast L4 by default. 
- If persistence is configured, Standard is used. 
- Uses the IP address assigned to the load balancer by Neutron. 
- Uses the route domain that was created for the new partition when the 
load balancer was created. 
- Traffic is restricted to the tunnel assigned to the load balancer. 
- The certificate/key container is fetched from Barbican using the URI 
defined by the  
default_tls_container_ref config option.- The key and certificate are imported to the BIG-IP. 
- A custom SSL profile is created using  
clientssl as the parent profile.- The SSL profile is added to the virtual server. 
 | 
neutron lbaas-pool-create | 
1. A new pool is created in the tenant partition on the BIG-IP. 
- It is assigned to the virtual server (or, listener) specified in the 
command. 
 | 
neutron lbaas-member-create | 
1. A new member is created in the specified pool using the IP address and port 
supplied in the command. 
- If the member is the first created for the specified pool, the pool 
status will change on the BIG-IP. 
- If the member is the first created with the supplied IP address, a new 
node is also created. 
 | 
neutron lbaas-healthmonitor-create | 
1. A new health monitor is created on the BIG-IP for the specified pool. 
- If the health monitor is the first created for the specified pool, the 
pool status will change on the BIG-IP. 
- Health monitors directly affect the status and availability of pools and 
members on the BIG-IP. Any additions or changes may result in a status 
change for the specified pool. 
 | 
Footnotes:
| [1] | This is done for all tunnel types, not just those configured as the advertised_tunnel_types in the L2 Segmentation Mode Settings. | 
| [2] | Configured in Environment Settings --> environment_prefix. The default prefix is Project. | 
| [3] | Run openstack project list to get a list of configured tenant names and IDs. | 
| [4] | If using Global Routed Mode, all traffic is directed to the self IP (no tunnel is created). | 
| [5] | Configured in L3 Segmentation Mode Settings –> f5_snat_addresses_per_subnet. | 
| [6] | See Certificate Manager / SSL Offloading. |