sapcc / octavia-f5-provider-driver

Apache License 2.0
15 stars 2 forks source link

Octavia Provider Driver for F5 BigIP devices

This is the Octavia provider driver for F5 BigIP appliances. It communicates with BigIP devices via the declarative AS3 API. The worker uses the driver-agent API, but it hooks more deeply into Octavia (similar to the Octavia Amphora driver) than the Provider Agents concept permits, e. g. by accessing the database directly.

F5-specific configuration

F5-specific config options

There are lots of F5-specific configuration options. They can be found in octavia_f5/common/config.py.

Listener type to AS3 service class mapping

Mapping happens in octavia_f5/restclient/as3objects/service.py. Openstack listener type AS3 service class Notes
TCP Service_L4 Uses L4 acceleration
UDP Service_UDP
HTTP Service_HTTP
HTTPS Service_L4 Uses L4 acceleration, since HTTPS simply gets passed through without decryption
PROXY Service_TCP Does not use L4 acceleration, since it's incompatible with the Proxy Protocol iRule
TERMINATED_HTTPS Service_HTTPS

Health monitor configuration mapping

Since health monitors have different semantics in Octavia than on the BigIP (and inconsistent naming across API and database), we have to map Octavia health monitor parameters to AS3/BigIP parameters in a specific way. We try to name the parameters on the Elektra web GUI in an explanatory way. Elektra web GUI CLI/API database AS3/BigIP
max_retries rise_threshold
Max Retries[1] max_retries_down fall_threshold timeout[2]
Probe Timeout timeout timeout
Interval delay delay interval

[1] Original Elektra PR superseeded by new Elektra PR which has been merged

[2] Calculated from database parameters like this: fall_threshold * delay + 1 (see code)

Special database handling

This provider driver uses Octavias mariadb database to store some data, but doesn't define any new tables. Instead, otherwise unused tables/columns are used in a specific way:

Python modules