diff --git a/doc/config-reference/block-storage/drivers/blockbridge-eps-driver.xml b/doc/config-reference/block-storage/drivers/blockbridge-eps-driver.xml
new file mode 100644
index 0000000000..b86a022df8
--- /dev/null
+++ b/doc/config-reference/block-storage/drivers/blockbridge-eps-driver.xml
@@ -0,0 +1,262 @@
+
+
+ Blockbridge EPS
+
+
+
+ Introduction
+ Blockbridge is software that transforms commodity infrastructure into
+ secure multi-tenant storage that operates as a programmable service. It
+ provides automatic encryption, secure deletion, quality of service,
+ replication, and programmable security capabilities on your choice of
+ hardware. Blockbridge uses micro-segmentation to provide isolation that
+ allows you to concurrently operate OpenStack, Docker, and bare-metal
+ workflows on shared resources. When used with OpenStack, isolated management
+ domains are dynamically created on a per-project basis. All volumes and
+ clones, within and between projects, are automatically cryptographically
+ isolated and implement secure deletion.
+
+
+
+
+ Architecture reference
+
+
+ Blockbridge architecture
+
+
+
+
+
+
+
+
+ Control paths
+ The Blockbridge driver is packaged with the core distribution of
+ OpenStack. Operationally, it executes in the context of the Block Storage
+ service. The driver communicates with an OpenStack-specific API provided
+ by the Blockbridge EPS platform. Blockbridge optionally communicates with
+ OpenStack Identity, Compute, and Block Storage services.
+
+
+
+
+ Block storage API
+ Blockbridge is API driven software-defined storage. The system
+ implements a native HTTP API that is tailored to the specific needs of
+ OpenStack. Each Block Storage service operation maps to a single back-end
+ API request that provides ACID semantics. The API is specifically designed
+ to reduce, if not eliminate, the possibility of inconsistencies between
+ the Block Storage service and external storage infrastructure in the event
+ of hardware, software or data center failure.
+
+
+
+
+ Extended management
+ OpenStack users may utilize Blockbridge interfaces to manage
+ replication, auditing, statistics, and performance information on a
+ per-project and per-volume basis. In addition, they can manage low-level
+ data security functions including verification of data authenticity and
+ encryption key delegation. Native integration with the Identity Service
+ allows tenants to use a single set of credentials. Integration with Block
+ storage and Compute services provides dynamic metadata mapping when using
+ Blockbridge management APIs and tools.
+
+
+
+
+ Attribute-based provisioning
+ Blockbridge organizes resources using descriptive identifiers called
+ attributes. Attributes are assigned by administrators
+ of the infrastructure. They are used to describe the characteristics of
+ storage in an application-friendly way. Applications construct queries
+ that describe storage provisioning constraints and the Blockbridge storage
+ stack assembles the resources as described.
+
+ Any given instance of a Blockbridge volume driver specifies a
+ query for resources. For example, a query could
+ specify '+ssd +10.0.0.0 +6nines -production iops.reserve=1000
+ capacity.reserve=30%'. This query is satisfied by selecting SSD
+ resources, accessible on the 10.0.0.0 network, with high resiliency, for
+ non-production workloads, with guaranteed IOPS of 1000 and a storage
+ reservation for 30% of the volume capacity specified at create
+ time. Queries and parameters are completely administrator defined: they
+ reflect the layout, resource, and organizational goals of a specific
+ deployment.
+
+
+
+
+
+ Supported operations
+
+
+ Create, delete, clone, attach, and detach volumes
+
+
+ Create and delete volume snapshots
+
+
+ Create a volume from a snapshot
+
+
+ Copy an image to a volume
+
+
+ Copy a volume to an image
+
+
+ Extend a volume
+
+
+ Get volume statistics
+
+
+
+
+
+ Supported protocols
+ Blockbridge provides iSCSI access to storage. A unique iSCSI data
+ fabric is programmatically assembled when a volume is attached to an
+ instance. A fabric is disassembled when a volume is detached from an
+ instance. Each volume is an isolated SCSI device that supports persistent
+ reservations.
+
+
+
+ Configuration steps
+
+ Create an authentication token
+ Whenever possible, avoid using password-based authentication. Even
+ if you have created a role-restricted administrative user via Blockbridge,
+ token-based authentication is preferred. You can generate persistent
+ authentication tokens using the Blockbridge command-line tool as follows:
+
+ $bb -H bb-mn authorization create --notes "OpenStack" --restrict none
+Authenticating to https://bb-mn/api
+
+Enter user or access token: system
+Password for system:
+Authenticated; token expires in 3599 seconds.
+
+== Authorization: ATH4762894C40626410
+notes OpenStack
+serial ATH4762894C40626410
+account system (ACT0762594C40626440)
+user system (USR1B62094C40626440)
+enabled yes
+created at 2015-10-24 22:08:48 +0000
+access type online
+token suffix xaKUy3gw
+restrict none
+
+== Access Token
+access token 1/elvMWilMvcLAajl...3ms3U1u2KzfaMw6W8xaKUy3gw
+
+*** Remember to record your access token!
+
+
+
+ Create volume type
+ Before configuring and enabling the Blockbridge volume driver,
+ register an OpenStack volume type and associate it with a
+ volume_backend_name. In this example, a volume type,
+ 'Production', is associated with the volume_backend_name
+ 'blockbridge_prod': $cinder type-create Production
+$cinder type-key Production volume_backend_name=blockbridge_prod
+
+
+
+
+ Specify volume driver
+ Configure the Blockbridge volume driver in
+ /etc/cinder/cinder.conf. Your
+ volume_backend_name must match the value specified in the
+ cinder type-key command in the previous step.
+ volume_driver = cinder.volume.drivers.blockbridge.BlockbridgeISCSIDriver
+volume_backend_name = blockbridge_prod
+
+
+
+
+ Specify API endpoint and authentication
+ Configure the API endpoint and authentication. The following
+ example uses an authentication token. You must create your own as
+ described above.
+ blockbridge_api_host = [ip or dns of management cluster]
+blockbridge_auth_token = 1/elvMWilMvcLAajl...3ms3U1u2KzfaMw6W8xaKUy3gw
+
+
+
+
+ Specify resource query
+ By default, a single pool is configured (implied) with a default
+ resource query of '+openstack'. Within Blockbridge,
+ datastore resources that advertise the 'openstack' attribute will be
+ selected to fulfill OpenStack provisioning requests. If you prefer a more
+ specific query, define a custom pool configuration.
+ blockbridge_pools = Production: +production +qos iops.reserve=5000
+
+ Pools support storage systems that offer multiple classes of
+ service. You may wish to configure multiple pools to implement more
+ sophisticated scheduling capabilities.
+
+
+
+
+
+ Configuration options
+
+
+
+
+ Configuration example
+ cinder.conf example file
+ [Default]
+enabled_backends = bb_devel bb_prod
+
+[bb_prod]
+volume_driver = cinder.volume.drivers.blockbridge.BlockbridgeISCSIDriver
+volume_backend_name = blockbridge_prod
+blockbridge_api_host = [ip or dns of management cluster]
+blockbridge_auth_token = 1/elvMWilMvcLAajl...3ms3U1u2KzfaMw6W8xaKUy3gw
+blockbridge_pools = Production: +production +qos iops.reserve=5000
+
+[bb_devel]
+volume_driver = cinder.volume.drivers.blockbridge.BlockbridgeISCSIDriver
+volume_backend_name = blockbridge_devel
+blockbridge_api_host = [ip or dns of management cluster]
+blockbridge_auth_token = 1/elvMWilMvcLAajl...3ms3U1u2KzfaMw6W8xaKUy3gw
+blockbridge_pools = Development: +development
+
+
+
+ Multiple volume types
+ Volume types are exposed to tenants,
+ pools are not. To offer multiple classes of storage to
+ OpenStack tenants, you should define multiple volume types. Simply repeat
+ the process above for each desired type. Be sure to specify a unique
+ volume_backend_name and pool configuration for each type. The
+
+ cinder.conf example included with this
+ documentation illustrates configuration of multiple types.
+
+
+
+
+ Testing resources
+ Blockbridge is freely available for testing purposes and deploys in
+ seconds as a Docker container. This is the same container used to run
+ continuous integration for OpenStack. For more information visit www.blockbridge.io.
+
+
+
+
diff --git a/doc/config-reference/block-storage/drivers/figures/blockbridge/bb-cinder-fig1.png b/doc/config-reference/block-storage/drivers/figures/blockbridge/bb-cinder-fig1.png
new file mode 100644
index 0000000000..022d3652a1
Binary files /dev/null and b/doc/config-reference/block-storage/drivers/figures/blockbridge/bb-cinder-fig1.png differ
diff --git a/doc/config-reference/block-storage/section_misc.xml b/doc/config-reference/block-storage/section_misc.xml
index 9cf99d0a0f..6dd7a61d0b 100644
--- a/doc/config-reference/block-storage/section_misc.xml
+++ b/doc/config-reference/block-storage/section_misc.xml
@@ -16,7 +16,6 @@
-
diff --git a/doc/config-reference/block-storage/section_volume-drivers.xml b/doc/config-reference/block-storage/section_volume-drivers.xml
index ca8e82a132..a149fb5ca4 100644
--- a/doc/config-reference/block-storage/section_volume-drivers.xml
+++ b/doc/config-reference/block-storage/section_volume-drivers.xml
@@ -15,6 +15,7 @@
The default is:
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
+