Jump to: navigation, search


< Neutron‎ | LBaaS
Revision as of 13:20, 26 October 2012 by Ilya (talk)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


This document describes the architecture of LBaaS and introduces internal APIs

High-level Decomposition

LBaaS architecture is based on advanced services introduced into Quantum. The structure is following:

  • LBaaS Quantum Extension - is responsible for handling REST API calls
  • LBaaS Quantum AdvSvc Plugin - is a core of service, it is responsible for:
    • DB storage
    • Request validation
    • Scheduling of load balancing services (deployment to LB devices)
  • LBaaS Agent - is stand-alone service that provides API for driver developers
  • Driver - is a module that transforms LBaaS object model into vendor-specific model and deploys configuration onto load-balancing device

LBaaS management is performed via REST API. Calls that perform read operations (involving DB only) are done in synchronous manner, all other calls (status retrieval, write operations) are done asynchronously. See Quantum/LBaaS/REST API for more details.

Communicaion between AdvSvc Plugin and Agent is done via AMQP.

The diagram (#1) for update operation is following:


Diagram #1 is created using [1], source code:

title Update Request

User -> +Extension: REST API Request 
activate User
Extension --> +Plugin: Core API Request

alt Valid
    Plugin --> Extension: Accepted
    Extension -> User: HTTP 202
else Error
    Plugin --> Extension: Error Message
    Extension -> -User: HTTP 40x

deactivate User

Plugin --> +DB: Set W-Lock
Plugin -> +Agent: AMQP Request
Agent --> +Driver: Driver API call
Driver -> +Device: Apply Change
Device -> -Driver: Status
Driver --> -Agent: Status
Agent -> -Plugin: AMQP Response 
Plugin --> DB: Update DB
Plugin --> DB: Clear W-Lock
deactivate Plugin
deactivate DB