Fix sphinx warnings (and some formatting) 04/45904/2
authorColin Dixon <colin@colindixon.com>
Tue, 20 Sep 2016 15:31:10 +0000 (11:31 -0400)
committerColin Dixon <colin@colindixon.com>
Tue, 20 Sep 2016 15:49:12 +0000 (11:49 -0400)
The only warnings we have left are:
* No Pygments for formatting yang source
* Some things about strings in python autodoc
* A few missing inclules/unincluded rst files

Change-Id: Iea159215bf14b992bcc1bafc94f8800e4c16f2d0
Signed-off-by: Colin Dixon <colin@colindixon.com>
15 files changed:
docs/developer-guide/didm-developer-guide.rst
docs/developer-guide/openflow-plugin-project-developer-guide.rst
docs/developer-guide/openflow-protocol-library-developer-guide.rst
docs/developer-guide/ovsdb-netvirt.rst
docs/developer-guide/uni-manager-plug-in-developer-guide.rst
docs/developer-guide/virtual-tenant-network-(vtn).rst
docs/opendaylight-with-openstack/openstack-with-gbp-vpp.rst
docs/user-guide/bgp-user-guide.rst
docs/user-guide/didm-user-guide.rst
docs/user-guide/group-based-policy-user-guide.rst
docs/user-guide/images/snbi/snbi_arch.png [moved from docs/user-guide/snbi/snbi_arch.png with 100% similarity]
docs/user-guide/openflow-plugin-project-user-guide.rst
docs/user-guide/snbi-user-guide.rst
docs/user-guide/using-the-opendaylight-user-interface-(dlux).rst
docs/user-guide/virtual-tenant-network-(vtn).rst

index 0a285c620ba89722444b0d4deae84d301d0cddaf..1d158f8caf8b0add192f0c3c8eb8d8db20c3294d 100644 (file)
@@ -59,18 +59,15 @@ Currently these APIs are getting consumed by Atrium project.
 
 Install the Forwarding Objective:
 
-`http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:forward <http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:forward>`__
----
+``http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:forward``
 
 Install the Filter Objective
 
-`http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:filter <http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:filter>`__
----
+``http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:filter``
 
 Install the Next Objective:
 
-`http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:next <http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:next>`__
----
+``http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:next``
 
 Flow mod driver API
 ~~~~~~~~~~~~~~~~~~~
@@ -217,7 +214,7 @@ API Reference Documentation
 ---------------------------
 
 Go to
-`http://${controller-ip}:8181/apidoc/explorer/index.html <http://${controller-ip}:8181/apidoc/explorer/index.html>`__,
+http://${controller-ip}:8181/apidoc/explorer/index.html,
 and look under DIDM section to see all the available REST calls and
 tables
 
index fd89f2e53f7a2ebe68bcd67927ff1042dc20909c..9b2b136a2d9cc1ad8cfc4bddf61715d35c5a3ec2 100644 (file)
@@ -14,8 +14,8 @@ Event Sequences
 Session Establishment
 ~~~~~~~~~~~~~~~~~~~~~
 
-The `OpenFlow Protocol
-Library <#_openflow_protocol_library_developer_guide>`__ provides
+The :ref:`OpenFlow Protocol
+Library <openflow-protocol-library>` provides
 interface **SwitchConnectionHandler** which contains method
 *onSwitchConnected* (step 1). This event is raised in the OpenFlow
 Protocol Library when an OpenFlow device connects to OpenDaylight and
@@ -941,7 +941,7 @@ Yang models and API
 +--------------------------------------------------------+-------------------+
 | Model                                                  | DOC               |
 +========================================================+===================+
-| ***Openflow basic types***                             |
+| ***Openflow basic types***                             |                   |
 +--------------------------------------------------------+-------------------+
 | `opendaylight-table-types.yang <https://git.opendaylig | `YangDOC <https:/ |
 | ht.org/gerrit/gitweb?p=openflowplugin.git;f=model/mode | /jenkins.opendayl |
@@ -968,12 +968,11 @@ Yang models and API
 |                                                        | arget/site/models |
 |                                                        | /opendaylight-act |
 |                                                        | ion-types.html>`_ |
-|                                                        | _                 |
 +--------------------------------------------------------+-------------------+
-| `opendaylight-flow-types.yan <https://git.opendaylight | `YangDOC <https:/ |
-| .org/gerrit/gitweb?p=openflowplugin.git;f=model/model- | /jenkins.opendayl |
-| flow-base/src/main/yang/opendaylight-flow-types.yang;a | ight.org/releng/v |
-| =blob;hb=refs/heads/stable/boron>`__                   | iew/openflowplugi |
+| `opendaylight-flow-types.yang <https://git.opendayligh | `YangDOC <https:/ |
+| t.org/gerrit/gitweb?p=openflowplugin.git;f=model/model | /jenkins.opendayl |
+| -flow-base/src/main/yang/opendaylight-flow-types.yang; | ight.org/releng/v |
+| a=blob;hb=refs/heads/stable/boron>`__                  | iew/openflowplugi |
 |                                                        | n/job/openflowplu |
 |                                                        | gin-merge-boron/l |
 |                                                        | astSuccessfulBuil |
@@ -1048,7 +1047,7 @@ Yang models and API
 |                                                        | /opendaylight-que |
 |                                                        | ue-types.html>`__ |
 +--------------------------------------------------------+-------------------+
-| ***Openflow services***                                |
+| ***Openflow services***                                |                   |
 +--------------------------------------------------------+-------------------+
 | `sal-table.yang <https://git.opendaylight.org/gerrit/g | `YangDOC <https:/ |
 | itweb?p=openflowplugin.git;f=model/model-flow-service/ | /jenkins.opendayl |
@@ -1113,8 +1112,8 @@ Yang models and API
 |                                                        | model-flow-servic |
 |                                                        | e/target/site/mod |
 |                                                        | els/flow-capable- |
-|                                                        | transaction.html> |
-|                                                        | `__               |
+|                                                        | transaction.htm   |
+|                                                        | l>`__             |
 +--------------------------------------------------------+-------------------+
 | `sal-flow.yang <https://git.opendaylight.org/gerrit/gi | `YangDOC <https:/ |
 | tweb?p=openflowplugin.git;f=model/model-flow-service/s | /jenkins.opendayl |
@@ -1126,8 +1125,8 @@ Yang models and API
 |                                                        | d/artifact/model/ |
 |                                                        | model-flow-servic |
 |                                                        | e/target/site/mod |
-|                                                        | els/sal-flow.html |
-|                                                        | >`__              |
+|                                                        | els/sal-flow.htm  |
+|                                                        | l>`__             |
 +--------------------------------------------------------+-------------------+
 | `sal-meter.yang <https://git.opendaylight.org/gerrit/g | `YangDOC <https:/ |
 | itweb?p=openflowplugin.git;f=model/model-flow-service/ | /jenkins.opendayl |
@@ -1153,8 +1152,8 @@ Yang models and API
 |                                                        | model-flow-servic |
 |                                                        | e/target/site/mod |
 |                                                        | els/flow-topology |
-|                                                        | -discovery.html>` |
-|                                                        | __                |
+|                                                        | -discovery.htm    |
+|                                                        | l>`__             |
 +--------------------------------------------------------+-------------------+
 | `node-errors.yang <https://git.opendaylight.org/gerrit | `YangDOC <https:/ |
 | /gitweb?p=openflowplugin.git;f=model/model-flow-servic | /jenkins.opendayl |
@@ -1192,8 +1191,8 @@ Yang models and API
 |                                                        | d/artifact/model/ |
 |                                                        | model-flow-servic |
 |                                                        | e/target/site/mod |
-|                                                        | els/sal-echo.html |
-|                                                        | >`__              |
+|                                                        | els/sal-echo.htm  |
+|                                                        | l>`__             |
 +--------------------------------------------------------+-------------------+
 | `sal-port.yang <https://git.opendaylight.org/gerrit/gi | `YangDOC <https:/ |
 | tweb?p=openflowplugin.git;f=model/model-flow-service/s | /jenkins.opendayl |
@@ -1205,8 +1204,8 @@ Yang models and API
 |                                                        | d/artifact/model/ |
 |                                                        | model-flow-servic |
 |                                                        | e/target/site/mod |
-|                                                        | els/sal-port.html |
-|                                                        | >`__              |
+|                                                        | els/sal-port.htm  |
+|                                                        | l>`__             |
 +--------------------------------------------------------+-------------------+
 | `packet-processing.yang <https://git.opendaylight.org/ | `YangDOC <https:/ |
 | gerrit/gitweb?p=openflowplugin.git;f=model/model-flow- | /jenkins.opendayl |
@@ -1234,7 +1233,7 @@ Yang models and API
 |                                                        | els/flow-node-inv |
 |                                                        | entory.html>`__   |
 +--------------------------------------------------------+-------------------+
-| ***Openflow statistics***                              |
+| ***Openflow statistics***                              |                   |
 +--------------------------------------------------------+-------------------+
 | `opendaylight-queue-statistics.yang <https://git.opend | `YangDOC <https:/ |
 | aylight.org/gerrit/gitweb?p=openflowplugin.git;f=model | /jenkins.opendayl |
@@ -1353,8 +1352,8 @@ Wiring up notifications
 Introduction
 ~~~~~~~~~~~~
 
-We need to translate OpenFlow messages coming up from the `OpenFlow
-Protocol Library <#_openflow_protocol_library_developer_guide>`__ into
+We need to translate OpenFlow messages coming up from the :ref:`OpenFlow
+Protocol Library <openflow-protocol-library>` into
 MD-SAL Notification objects and then publish them to the MD-SAL.
 
 Mechanics
index 62e193db1c99a28df9ae1967eaebef28d302ed87..d12d4d4e500ccaa0e2d202d5b4ca06a6309c36b6 100644 (file)
@@ -1,3 +1,5 @@
+.. _openflow-protocol-library:
+
 OpenFlow Protocol Library Developer Guide
 =========================================
 
index ffc4162aacb6b2a5596a21f6248d46152302b544..b2bb42311c2eb5bb9e3bf481cfbc77855652b1d2 100644 (file)
@@ -14,7 +14,7 @@ OVSDB. Many vendors support OVSDB on various hardware platforms. The
 OpenDaylight controller uses the library project to interact with an OVS
 instance.
 
-    **Note**
+.. note::
 
     Read the OVSDB User Guide before you begin development.
 
@@ -165,17 +165,17 @@ Running Karaf feature from OVSDB’s Karaf distribution
 
 1. Start ODL, from the unzipped directory
 
-::
+   ::
 
-    bin/karaf
+      bin/karaf
 
-1. Once karaf has started, and you see the OpenDaylight ascii art in the
+2. Once karaf has started, and you see the OpenDaylight ascii art in the
    console, the last step is to start the OVSDB plugin framework with
    the following command in the karaf console:
 
-::
+   ::
 
-    feature:install odl-ovsdb-openstack
+      feature:install odl-ovsdb-openstack
 
 Sample output from the Karaf console
 ''''''''''''''''''''''''''''''''''''
@@ -233,33 +233,33 @@ way to create VMs for tests.
 
 1. Start the controller.
 
-::
-
-    vagrant up devstack-control
-    vagrant ssh devstack-control
-    cd devstack
-    ./stack.sh
+   ::
 
-1. Run the following:
+       vagrant up devstack-control
+       vagrant ssh devstack-control
+       cd devstack
+       ./stack.sh
 
-::
+2. Run the following:
 
-    vagrant up devstack-compute-1
-    vagrant ssh devstack-compute-1
-    cd devstack
-    ./stack.sh
+   ::
 
-1. To start testing, create a new VM.
+       vagrant up devstack-compute-1
+       vagrant ssh devstack-compute-1
+       cd devstack
+       ./stack.sh
 
-::
+3. To start testing, create a new VM.
 
-    nova boot --flavor m1.tiny --image $(nova image-list | grep 'cirros-0.3.1-x86_64-uec\s' | awk '{print $2}') --nic net-id=$(neutron net-list | grep private | awk '{print $2}') test
+   ::
 
-To create three, use the following:
+       nova boot --flavor m1.tiny --image $(nova image-list | grep 'cirros-0.3.1-x86_64-uec\s' | awk '{print $2}') --nic net-id=$(neutron net-list | grep private | awk '{print $2}') test
+   
+   To create three, use the following:
 
-::
+   ::
 
-    nova boot --flavor m1.tiny --image $(nova image-list | grep 'cirros-0.3.1-x86_64-uec\s' | awk '{print $2}') --nic net-id=$(neutron net-list | grep private | awk '{print $2}') --num-instances 3 test
+       nova boot --flavor m1.tiny --image $(nova image-list | grep 'cirros-0.3.1-x86_64-uec\s' | awk '{print $2}') --nic net-id=$(neutron net-list | grep private | awk '{print $2}') --num-instances 3 test
 
 **To get a mininet installation for testing:.**
 
@@ -594,25 +594,25 @@ OpenStack workflow
 
 3. Add the Security Group and Rules.
 
-    **Note**
+   .. note::
 
-    This is no different than what users normally do in regular
-    openstack deployments.
+      This is no different than what users normally do in regular
+      OpenStack deployments.
 
-::
+   ::
 
-    neutron security-group-create group1 --description "Group 1"
-    neutron security-group-list
-    neutron security-group-rule-create --direction ingress --protocol tcp group1
+      neutron security-group-create group1 --description "Group 1"
+      neutron security-group-list
+      neutron security-group-rule-create --direction ingress --protocol tcp group1
 
-1. Start the tenant, specifying the security-group.
+4. Start the tenant, specifying the security-group.
 
-::
+   ::
 
-    nova boot --flavor m1.tiny \
-    --image $(nova image-list | grep 'cirros-0.3.1-x86_64-uec\s' | awk '{print $2}') \
-    --nic net-id=$(neutron net-list | grep 'vxlan2' | awk '{print $2}') vxlan2 \
-    --security-groups group1
+      nova boot --flavor m1.tiny \
+      --image $(nova image-list | grep 'cirros-0.3.1-x86_64-uec\s' | awk '{print $2}') \
+      --nic net-id=$(neutron net-list | grep 'vxlan2' | awk '{print $2}') vxlan2 \
+      --security-groups group1
 
 Examples: Rules supported
 '''''''''''''''''''''''''
@@ -655,12 +655,12 @@ Examples: Rules supported
     neutron security-group-rule-create --direction egress --protocol tcp --port-range-min 443 --remote-ip-prefix 172.16.240.128/25 group7
 
 **Reference
-gist**:https://gist.github.com/anonymous/1543a410d57f491352c8[Gist]
+gist**: `Gist <https://gist.github.com/anonymous/1543a410d57f491352c8>`__
 
 Security group rules supported in ODL
 '''''''''''''''''''''''''''''''''''''
 
-The following rules formata are supported in the current implementation.
+The following rules formats are supported in the current implementation.
 The direction (ingress/egress) is always expected. Rules are implemented
 such that tcp-syn packets that do not satisfy the rules are dropped.
 
@@ -708,56 +708,56 @@ Starting OVSDB and OpenStack
 2. `Install
    Vagrant <http://docs.vagrantup.com/v2/installation/index.html>`__.
 
-1. Enable the L3 Forwarding feature:
+3. Enable the L3 Forwarding feature:
 
-::
+   ::
 
-    echo 'ovsdb.l3.fwd.enabled=yes' >> ./opendaylight/configuration/config.ini
-    echo 'ovsdb.l3gateway.mac=${GATEWAY_MAC}' >> ./configuration/config.ini
+      echo 'ovsdb.l3.fwd.enabled=yes' >> ./opendaylight/configuration/config.ini
+      echo 'ovsdb.l3gateway.mac=${GATEWAY_MAC}' >> ./configuration/config.ini
 
-1. Run the following commands to get the odl neutron drivers:
+4. Run the following commands to get the odl neutron drivers:
 
-::
+   ::
 
-    git clone https://github.com/dave-tucker/odl-neutron-drivers.git
-    cd odl-neutron-drivers
-    vagrant up devstack-control devstack-compute-1
+      git clone https://github.com/dave-tucker/odl-neutron-drivers.git
+      cd odl-neutron-drivers
+      vagrant up devstack-control devstack-compute-1
 
-1. Use ssh to go to the control node, and clone odl-neutron-drivers
+5. Use ssh to go to the control node, and clone odl-neutron-drivers
    again:
 
-::
+   ::
 
-    vagrant ssh devstack-control
-    git clone https://github.com/dave-tucker/odl-neutron-drivers.git
-    cd odl-neutron-drivers
-    sudo python setup.py install
-    *leave this shell open*
+      vagrant ssh devstack-control
+      git clone https://github.com/dave-tucker/odl-neutron-drivers.git
+      cd odl-neutron-drivers
+      sudo python setup.py install
+      *leave this shell open*
 
-1. Start odl, as mentioned in `running Karaf feature
+6. Start odl, as mentioned in `running Karaf feature
    section <#ovsdbStartingOdl>`__.
 
-2. To see processing of neutron event related to L3, do this from
+7. To see processing of neutron event related to L3, do this from
    prompt:
 
-::
+   ::
 
-    log:set debug org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter
+      log:set debug org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter
 
-1. From shell, do one of the following: open on ssh into control node or
+8. From shell, do one of the following: open on ssh into control node or
    vagrant ssh devstack-control.
 
-::
+   ::
 
-    cd ~/devstack && ./stack.sh
+      cd ~/devstack && ./stack.sh
 
-1. From a new shell in the host system, run the following:
+9. From a new shell in the host system, run the following:
 
-::
+   ::
 
-    cd odl-neutron-drivers
-    vagrant ssh devstack-compute-1
-    cd ~/devstack && ./stack.sh
+      cd odl-neutron-drivers
+      vagrant ssh devstack-compute-1
+      cd ~/devstack && ./stack.sh
 
 OpenStack workflow
 ''''''''''''''''''
@@ -773,62 +773,52 @@ figure above.
 1. Set up authentication. From shell on stack control or vagrant ssh
    devstack-control:
 
-::
+   ::
 
-    source openrc admin admin
+      source openrc admin admin
 
-::
+      rm -f id_rsa_demo* ; ssh-keygen -t rsa -b 2048 -N  -f id_rsa_demo
+      nova keypair-add --pub-key  id_rsa_demo.pub  demo_key
+      # nova keypair-list
 
-    rm -f id_rsa_demo* ; ssh-keygen -t rsa -b 2048 -N  -f id_rsa_demo
-     nova keypair-add --pub-key  id_rsa_demo.pub  demo_key
-     # nova keypair-list
+2. Create two networks and two subnets.
 
-1. Create two networks and two subnets.
+   ::
 
-::
+      neutron net-create net1 --tenant-id $(keystone tenant-list | grep '\s'admin | awk '{print $2}') \
+      --provider:network_type gre --provider:segmentation_id 555
 
-    neutron net-create net1 --tenant-id $(keystone tenant-list | grep '\s'admin | awk '{print $2}') \
-     --provider:network_type gre --provider:segmentation_id 555
+      neutron subnet-create --tenant-id $(keystone tenant-list | grep '\s'admin | awk '{print $2}') \
+      net1 10.0.0.0/16 --name subnet1 --dns-nameserver 8.8.8.8
 
-::
-
-    neutron subnet-create --tenant-id $(keystone tenant-list | grep '\s'admin | awk '{print $2}') \
-    net1 10.0.0.0/16 --name subnet1 --dns-nameserver 8.8.8.8
+      neutron net-create net2 --tenant-id $(keystone tenant-list | grep '\s'admin | awk '{print $2}') \
+      --provider:network_type gre --provider:segmentation_id 556
 
-::
+      neutron subnet-create --tenant-id $(keystone tenant-list | grep '\s'admin | awk '{print $2}') \
+      net2 20.0.0.0/16 --name subnet2 --dns-nameserver 8.8.8.8
 
-    neutron net-create net2 --tenant-id $(keystone tenant-list | grep '\s'admin | awk '{print $2}') \
-     --provider:network_type gre --provider:segmentation_id 556
-
-::
+3. Create a router, and add an interface to each of the two subnets.
 
-    neutron subnet-create --tenant-id $(keystone tenant-list | grep '\s'admin | awk '{print $2}') \
-     net2 20.0.0.0/16 --name subnet2 --dns-nameserver 8.8.8.8
+   ::
 
-1. Create a router, and add an interface to each of the two subnets.
-
-::
-
-    neutron router-create demorouter --tenant-id $(keystone tenant-list | grep '\s'admin | awk '{print $2}')
-     neutron router-interface-add demorouter subnet1
-     neutron router-interface-add demorouter subnet2
+      neutron router-create demorouter --tenant-id $(keystone tenant-list | grep '\s'admin | awk '{print $2}')
+      neutron router-interface-add demorouter subnet1
+      neutron router-interface-add demorouter subnet2
      # neutron router-port-list demorouter
 
-1. Create two tenant instances.
+4. Create two tenant instances.
 
-::
-
-    nova boot --poll --flavor m1.nano --image $(nova image-list | grep 'cirros-0.3.2-x86_64-uec\s' | awk '{print $2}') \
-     --nic net-id=$(neutron net-list | grep -w net1 | awk '{print $2}'),v4-fixed-ip=10.0.0.10 \
-     --availability-zone nova:devstack-control \
-     --key-name demo_key host10
+   ::
 
-::
+      nova boot --poll --flavor m1.nano --image $(nova image-list | grep 'cirros-0.3.2-x86_64-uec\s' | awk '{print $2}') \
+      --nic net-id=$(neutron net-list | grep -w net1 | awk '{print $2}'),v4-fixed-ip=10.0.0.10 \
+      --availability-zone nova:devstack-control \
+      --key-name demo_key host10
 
-    nova boot --poll --flavor m1.nano --image $(nova image-list | grep 'cirros-0.3.2-x86_64-uec\s' | awk '{print $2}') \
-     --nic net-id=$(neutron net-list | grep -w net2 | awk '{print $2}'),v4-fixed-ip=20.0.0.20 \
-     --availability-zone nova:devstack-compute-1 \
-     --key-name demo_key host20
+      nova boot --poll --flavor m1.nano --image $(nova image-list | grep 'cirros-0.3.2-x86_64-uec\s' | awk '{print $2}') \
+      --nic net-id=$(neutron net-list | grep -w net2 | awk '{print $2}'),v4-fixed-ip=20.0.0.20 \
+      --availability-zone nova:devstack-compute-1 \
+      --key-name demo_key host20
 
 Limitations
 '''''''''''
@@ -882,25 +872,25 @@ Creating an OpenStack workflow
 
 3. Create a Loadbalancer pool *X*.
 
-::
+   ::
 
-    neutron lb-pool-create --name http-pool --lb-method ROUND_ROBIN --protocol HTTP --subnet-id XYZ
+      neutron lb-pool-create --name http-pool --lb-method ROUND_ROBIN --protocol HTTP --subnet-id XYZ
 
-1. Create a Loadbalancer pool member *Y* and associate with pool *X*.
+4. Create a Loadbalancer pool member *Y* and associate with pool *X*.
 
-::
+   ::
 
-    neutron lb-member-create --address 10.0.0.10 --protocol-port 80 http-pool
-    neutron lb-member-create --address 10.0.0.11 --protocol-port 80 http-pool
-    neutron lb-member-create --address 10.0.0.12 --protocol-port 80 http-pool
-    neutron lb-member-create --address 10.0.0.13 --protocol-port 80 http-pool
+      neutron lb-member-create --address 10.0.0.10 --protocol-port 80 http-pool
+      neutron lb-member-create --address 10.0.0.11 --protocol-port 80 http-pool
+      neutron lb-member-create --address 10.0.0.12 --protocol-port 80 http-pool
+      neutron lb-member-create --address 10.0.0.13 --protocol-port 80 http-pool
 
-1. Create a Loadbalancer instance *Z*, and associate pool *X* and VIP
+5. Create a Loadbalancer instance *Z*, and associate pool *X* and VIP
    *B* with it.
 
-::
+   ::
 
-    neutron lb-vip-create --name http-vip --protocol-port 80 --protocol HTTP --subnet-id XYZ http-pool
+      neutron lb-vip-create --name http-vip --protocol-port 80 --protocol HTTP --subnet-id XYZ http-pool
 
 Implementation
 ''''''''''''''
@@ -923,19 +913,19 @@ member for every session.
 
 -  Proactive forward rules:
 
-::
+   ::
 
-    sudo ovs-ofctl -O OpenFlow13 add-flow s1 "table=10,reg0=0,ip,nw_dst=10.0.0.5,actions=load:0x1->NXM_NX_REG0[[]],multipath(symmetric_l4, 1024, modulo_n, 4, 0, NXM_NX_REG1[0..12]),resubmit(,10)"
-    sudo ovs-ofctl -O OpenFlow13 add-flow s1 table=10,reg0=1,nw_dst=10.0.0.5,ip,reg1=0,actions=mod_dl_dst:00:00:00:00:00:10,mod_nw_dst:10.0.0.10,goto_table:20
-    sudo ovs-ofctl -O OpenFlow13 add-flow s1 table=10,reg0=1,nw_dst=10.0.0.5,ip,reg1=1,actions=mod_dl_dst:00:00:00:00:00:11,mod_nw_dst:10.0.0.11,goto_table:20
-    sudo ovs-ofctl -O OpenFlow13 add-flow s1 table=10,reg0=1,nw_dst=10.0.0.5,ip,reg1=2,actions=mod_dl_dst:00:00:00:00:00:12,mod_nw_dst:10.0.0.12,goto_table:20
-    sudo ovs-ofctl -O OpenFlow13 add-flow s1 table=10,reg0=1,nw_dst=10.0.0.5,ip,reg1=3,actions=mod_dl_dst:00:00:00:00:00:13,mod_nw_dst:10.0.0.13,goto_table:20
+      sudo ovs-ofctl -O OpenFlow13 add-flow s1 "table=10,reg0=0,ip,nw_dst=10.0.0.5,actions=load:0x1->NXM_NX_REG0[[]],multipath(symmetric_l4, 1024, modulo_n, 4, 0, NXM_NX_REG1[0..12]),resubmit(,10)"
+      sudo ovs-ofctl -O OpenFlow13 add-flow s1 table=10,reg0=1,nw_dst=10.0.0.5,ip,reg1=0,actions=mod_dl_dst:00:00:00:00:00:10,mod_nw_dst:10.0.0.10,goto_table:20
+      sudo ovs-ofctl -O OpenFlow13 add-flow s1 table=10,reg0=1,nw_dst=10.0.0.5,ip,reg1=1,actions=mod_dl_dst:00:00:00:00:00:11,mod_nw_dst:10.0.0.11,goto_table:20
+      sudo ovs-ofctl -O OpenFlow13 add-flow s1 table=10,reg0=1,nw_dst=10.0.0.5,ip,reg1=2,actions=mod_dl_dst:00:00:00:00:00:12,mod_nw_dst:10.0.0.12,goto_table:20
+      sudo ovs-ofctl -O OpenFlow13 add-flow s1 table=10,reg0=1,nw_dst=10.0.0.5,ip,reg1=3,actions=mod_dl_dst:00:00:00:00:00:13,mod_nw_dst:10.0.0.13,goto_table:20
 
 -  Proactive reverse rules:
 
-::
+   ::
 
-    sudo ovs-ofctl -O OpenFlow13 add-flow s1 table=10,ip,tcp,tp_src=80,actions=mod_dl_src:00:00:00:00:00:05,mod_nw_src:10.0.0.5,goto_table:20
+      sudo ovs-ofctl -O OpenFlow13 add-flow s1 table=10,ip,tcp,tp_src=80,actions=mod_dl_src:00:00:00:00:00:05,mod_nw_src:10.0.0.5,goto_table:20
 
 OVSDB project code
 ''''''''''''''''''
@@ -1159,7 +1149,7 @@ modify OVSDB tables on a peer, it can take the following steps:
 
    ``operationResults = transactionBuilder.execute().get();``
 
-       **Note**
+   .. note::
 
        Although the "select" operation is supported in the OVSDB
        library, the library implementation is a little different from
@@ -1631,7 +1621,9 @@ The OpenStack integration architecture uses the following technologies:
 -  `OpenStack Neutron ML2
    Plugin <https://wiki.openstack.org/wiki/Neutron/ML2>`__
 
-|Openstack Integration|
+.. figure:: images/openstack_integration.png
+
+   OpenStack Integration
 
 OVSDB Service Function Chaining Developer Guide
 -----------------------------------------------
@@ -1651,80 +1643,41 @@ Install the odl-ovsdb-sfc feature. The feature will also ensure that the
 odl-ovsdb-openstack feature as well as the openflowplugin, neutron and
 sfc features are installed.
 
-feature:install odl-ovsdb-sfc-ui ---
+``feature:install odl-ovsdb-sfc-ui``
 
 Verify the required features are installed:
 
-opendaylight-user@root>feature:list -i \| grep ovsdb
-
-odl-ovsdb-southbound-api \| 1.2.1-SNAPSHOT \| x \|
-odl-ovsdb-southbound-1.2.1-SNAPSHOT \| OpenDaylight
-    southbound :: api
-
-odl-ovsdb-southbound-impl \| 1.2.1-SNAPSHOT \| x \|
-odl-ovsdb-southbound-1.2.1-SNAPSHOT \| OpenDaylight :: southbound
-    impl
-
-odl-ovsdb-southbound-impl-rest \| 1.2.1-SNAPSHOT \| x \|
-odl-ovsdb-southbound-1.2.1-SNAPSHOT \| OpenDaylight :: southbound ::
-impl
-    REST
-
-odl-ovsdb-southbound-impl-ui \| 1.2.1-SNAPSHOT \| x \|
-odl-ovsdb-southbound-1.2.1-SNAPSHOT \| OpenDaylight :: southbound ::
-impl
-    UI
-
-odl-ovsdb-library \| 1.2.1-SNAPSHOT \| x \|
-odl-ovsdb-library-1.2.1-SNAPSHOT \| OpenDaylight
-    library
-
-odl-ovsdb-openstack \| 1.2.1-SNAPSHOT \| x \| ovsdb-1.2.1-SNAPSHOT \|
-OpenDaylight :: OVSDB
-    OpenStack Network Virtual
-
-odl-ovsdb-sfc-api \| 1.2.1-SNAPSHOT \| x \| odl-ovsdb-sfc-1.2.1-SNAPSHOT
-\| OpenDaylight :: ovsdb-sfc
-    api
-
-odl-ovsdb-sfc \| 1.2.1-SNAPSHOT \| x \| odl-ovsdb-sfc-1.2.1-SNAPSHOT \|
-OpenDaylight
-    ovsdb-sfc
-
-odl-ovsdb-sfc-rest \| 1.2.1-SNAPSHOT \| x \|
-odl-ovsdb-sfc-1.2.1-SNAPSHOT \| OpenDaylight :: ovsdb-sfc
-    REST
-
-odl-ovsdb-sfc-ui \| 1.2.1-SNAPSHOT \| x \| odl-ovsdb-sfc-1.2.1-SNAPSHOT
-\| OpenDaylight :: ovsdb-sfc
-    UI
-
-opendaylight-user@root>feature:list -i \| grep sfc odl-sfc-model \|
-0.2.0-SNAPSHOT \| x \| odl-sfc-0.2.0-SNAPSHOT \| OpenDaylight :: sfc ::
-Model odl-sfc-provider \| 0.2.0-SNAPSHOT \| x \| odl-sfc-0.2.0-SNAPSHOT
-\| OpenDaylight :: sfc :: Provider odl-sfc-provider-rest \|
-0.2.0-SNAPSHOT \| x \| odl-sfc-0.2.0-SNAPSHOT \| OpenDaylight :: sfc ::
-Provider odl-sfc-ovs \| 0.2.0-SNAPSHOT \| x \| odl-sfc-0.2.0-SNAPSHOT \|
-OpenDaylight :: OpenvSwitch odl-sfcofl2 \| 0.2.0-SNAPSHOT \| x \|
-odl-sfc-0.2.0-SNAPSHOT \| OpenDaylight :: sfcofl2 odl-ovsdb-sfc-test \|
-1.2.1-SNAPSHOT \| x \| odl-ovsdb-sfc-test1.2.1-SNAPSHOT \| OpenDaylight
-:: ovsdb-sfc-test odl-ovsdb-sfc-api \| 1.2.1-SNAPSHOT \| x \|
-odl-ovsdb-sfc-1.2.1-SNAPSHOT \| OpenDaylight :: ovsdb-sfc :: api
-odl-ovsdb-sfc \| 1.2.1-SNAPSHOT \| x \| odl-ovsdb-sfc-1.2.1-SNAPSHOT \|
-OpenDaylight :: ovsdb-sfc odl-ovsdb-sfc-rest \| 1.2.1-SNAPSHOT \| x \|
-odl-ovsdb-sfc-1.2.1-SNAPSHOT \| OpenDaylight :: ovsdb-sfc :: REST
-odl-ovsdb-sfc-ui \| 1.2.1-SNAPSHOT \| x \| odl-ovsdb-sfc-1.2.1-SNAPSHOT
-\| OpenDaylight :: ovsdb-sfc :: UI
-
-opendaylight-user@root>feature:list -i \| grep neutron
-odl-neutron-service \| 0.6.0-SNAPSHOT \| x \| odl-neutron-0.6.0-SNAPSHOT
-\| OpenDaylight :: Neutron :: API odl-neutron-northbound-api \|
-0.6.0-SNAPSHOT \| x \| odl-neutron-0.6.0-SNAPSHOT \| OpenDaylight ::
-Neutron :: Northbound odl-neutron-spi \| 0.6.0-SNAPSHOT \| x \|
-odl-neutron-0.6.0-SNAPSHOT \| OpenDaylight :: Neutron :: API
-odl-neutron-transcriber \| 0.6.0-SNAPSHOT \| x \|
-odl-neutron-0.6.0-SNAPSHOT \| OpenDaylight :: Neutron :: Implementation
----
+::
+
+   opendaylight-user@root>feature:list -i | grep ovsdb
+   odl-ovsdb-southbound-api | 1.2.1-SNAPSHOT | x | odl-ovsdb-southbound-1.2.1-SNAPSHOT | OpenDaylight southbound :: api
+   odl-ovsdb-southbound-impl | 1.2.1-SNAPSHOT | x | odl-ovsdb-southbound-1.2.1-SNAPSHOT | OpenDaylight :: southbound impl
+   odl-ovsdb-southbound-impl-rest | 1.2.1-SNAPSHOT | x | odl-ovsdb-southbound-1.2.1-SNAPSHOT | OpenDaylight :: southbound :: impl REST
+   odl-ovsdb-southbound-impl-ui | 1.2.1-SNAPSHOT | x | odl-ovsdb-southbound-1.2.1-SNAPSHOT | OpenDaylight :: southbound :: impl UI
+   odl-ovsdb-library | 1.2.1-SNAPSHOT | x | odl-ovsdb-library-1.2.1-SNAPSHOT | OpenDaylight library
+   odl-ovsdb-openstack | 1.2.1-SNAPSHOT | x | ovsdb-1.2.1-SNAPSHOT | OpenDaylight :: OVSDB OpenStack Network Virtual
+   odl-ovsdb-sfc-api | 1.2.1-SNAPSHOT | x | odl-ovsdb-sfc-1.2.1-SNAPSHOT | OpenDaylight :: ovsdb-sfc api
+   odl-ovsdb-sfc | 1.2.1-SNAPSHOT | x | odl-ovsdb-sfc-1.2.1-SNAPSHOT | OpenDaylight ovsdb-sfc
+   odl-ovsdb-sfc-rest | 1.2.1-SNAPSHOT | x | odl-ovsdb-sfc-1.2.1-SNAPSHOT | OpenDaylight :: ovsdb-sfc REST
+   odl-ovsdb-sfc-ui | 1.2.1-SNAPSHOT | x | odl-ovsdb-sfc-1.2.1-SNAPSHOT | OpenDaylight :: ovsdb-sfc UI
+
+   opendaylight-user@root>feature:list -i | grep sfc
+   odl-sfc-model | 0.2.0-SNAPSHOT | x | odl-sfc-0.2.0-SNAPSHOT | OpenDaylight :: sfc :: Model
+   odl-sfc-provider | 0.2.0-SNAPSHOT | x | odl-sfc-0.2.0-SNAPSHOT | OpenDaylight :: sfc :: Provider
+   odl-sfc-provider-rest | 0.2.0-SNAPSHOT | x | odl-sfc-0.2.0-SNAPSHOT | OpenDaylight :: sfc :: Provider
+   odl-sfc-ovs | 0.2.0-SNAPSHOT | x | odl-sfc-0.2.0-SNAPSHOT | OpenDaylight :: OpenvSwitch
+   odl-sfcofl2 | 0.2.0-SNAPSHOT | x | odl-sfc-0.2.0-SNAPSHOT | OpenDaylight :: sfcofl2
+   odl-ovsdb-sfc-test | 1.2.1-SNAPSHOT | x | odl-ovsdb-sfc-test1.2.1-SNAPSHOT | OpenDaylight :: ovsdb-sfc-test
+   odl-ovsdb-sfc-api | 1.2.1-SNAPSHOT | x | odl-ovsdb-sfc-1.2.1-SNAPSHOT | OpenDaylight :: ovsdb-sfc :: api
+   odl-ovsdb-sfc | 1.2.1-SNAPSHOT | x | odl-ovsdb-sfc-1.2.1-SNAPSHOT | OpenDaylight :: ovsdb-sfc
+   odl-ovsdb-sfc-rest | 1.2.1-SNAPSHOT | x | odl-ovsdb-sfc-1.2.1-SNAPSHOT | OpenDaylight :: ovsdb-sfc :: REST
+   odl-ovsdb-sfc-ui | 1.2.1-SNAPSHOT | x | odl-ovsdb-sfc-1.2.1-SNAPSHOT | OpenDaylight :: ovsdb-sfc :: UI
+
+   opendaylight-user@root>feature:list -i | grep neutron
+   odl-neutron-service | 0.6.0-SNAPSHOT | x | odl-neutron-0.6.0-SNAPSHOT | OpenDaylight :: Neutron :: API
+   odl-neutron-northbound-api | 0.6.0-SNAPSHOT | x | odl-neutron-0.6.0-SNAPSHOT | OpenDaylight :: Neutron :: Northbound
+   odl-neutron-spi | 0.6.0-SNAPSHOT | x | odl-neutron-0.6.0-SNAPSHOT | OpenDaylight :: Neutron :: API
+   odl-neutron-transcriber | 0.6.0-SNAPSHOT | x | odl-neutron-0.6.0-SNAPSHOT | OpenDaylight :: Neutron :: Implementation
 
 OVSDB NetVirt Service Function Chaining Example
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1758,11 +1711,38 @@ Service Functions and Service Function Forwarders for the chain.
 
 http://localhost:8181/restconf/config/ietf-access-control-list:access-lists
 
-{ "access-lists": { "acl": [ { "acl-name": "http-acl",
-"access-list-entries": { "ace": [ { "rule-name": "http-rule", "matches":
-{ "source-port-range": { "lower-port": 0, "upper-port": 0 }, "protocol":
-6, "destination-port-range": { "lower-port": 80, "upper-port": 80 } },
-"actions": { "netvirt-sfc-acl:sfc-name": "http-sfc" } } ] } } ] } } ---
+::
+
+   {
+     "access-lists": {
+       "acl": [
+         {
+           "acl-name": "http-acl",
+           "access-list-entries": {
+             "ace": [
+               {
+                 "rule-name": "http-rule",
+                 "matches": {
+                   "source-port-range": {
+                     "lower-port": 0,
+                     "upper-port": 0
+                   },
+                   "protocol": 6,
+                   "destination-port-range": {
+                     "lower-port": 80,
+                     "upper-port": 80
+                   }
+                 },
+                 "actions": {
+                   "netvirt-sfc-acl:sfc-name": "http-sfc"
+                 }
+               }
+             ]
+           }
+         }
+       ]
+     }
+   }
 
 When the chain is rendered using the Rendered Service Path RPC,
 NetvirtSfc will add the classification flows. The classification flows
@@ -1774,69 +1754,41 @@ the first four digits indicating the NSH NSP and the last four digits
 identifying the NSH NSI. In this case the chain is identified with an
 NSP of 4 and the NSI is 255 to indicate the beginning of the chain.
 
-sudo ovs-ofctl --protocol=OpenFlow13 dump-flows br-int OFPST\_FLOW reply
-(OF1.3) (xid=0x2): cookie=0x0, duration=17.157s, table=0, n\_packets=0,
-n\_bytes=0, priority=6 actions=goto\_table:1 cookie=0x14,
-duration=10.692s, table=0, n\_packets=0, n\_bytes=0,
-priority=400,udp,in\_port=4,tp\_dst=6633 actions=LOCAL cookie=0x0,
-duration=17.134s, table=0, n\_packets=0, n\_bytes=0, dl\_type=0x88cc
-actions=CONTROLLER:65535 cookie=0x14, duration=10.717s, table=0,
-n\_packets=0, n\_bytes=0, priority=350,nsp=4 actions=goto\_table:152
-cookie=0x14, duration=10.688s, table=0, n\_packets=0, n\_bytes=0,
-priority=400,udp,nw\_dst=10.2.1.1,tp\_dst=6633 actions=output:4
-cookie=0x0, duration=17.157s, table=1, n\_packets=0, n\_bytes=0,
-priority=0 actions=goto\_table:11 cookie=0x1110070000040254,
-duration=10.608s, table=1, n\_packets=0, n\_bytes=0,
-priority=40000,reg0=0x1,nsp=4,nsi=254,in\_port=1 actions=goto\_table:21
-cookie=0x0, duration=17.157s, table=11, n\_packets=0, n\_bytes=0,
-priority=0 actions=goto\_table:21 cookie=0x1110060000040254,
-duration=10.625s, table=11, n\_packets=0, n\_bytes=0,
-nsp=4,nsi=254,in\_port=4
-actions=load:0x1→NXM\_NX\_REG0[],move:NXM\_NX\_NSH\_C2[]→NXM\_NX\_TUN\_ID[0..31],resubmit(1,1)
-cookie=0x1110010000040255, duration=10.615s, table=11, n\_packets=0,
-n\_bytes=0, tcp,reg0=0x1,tp\_dst=80
-actions=move:NXM\_NX\_TUN\_ID[0..31]→NXM\_NX\_NSH\_C2[],set\_nshc1:0xc0a83246,set\_nsp:0x4,set\_nsi:255,load:0xa020101→NXM\_NX\_TUN\_IPV4\_DST[],load:0x4→NXM\_NX\_TUN\_ID[0..31],resubmit(,0)
-cookie=0x0, duration=17.157s, table=21, n\_packets=0, n\_bytes=0,
-priority=0 actions=goto\_table:31 cookie=0x1110040000000000,
-duration=10.765s, table=21, n\_packets=0, n\_bytes=0,
-priority=1024,arp,in\_port=LOCAL,arp\_tpa=10.2.1.1,arp\_op=1
-actions=move:NXM\_OF\_ETH\_SRC[]→NXM\_OF\_ETH\_DST[],set\_field:f6:00:00:0f:00:01→eth\_src,load:0x2→NXM\_OF\_ARP\_OP[],move:NXM\_NX\_ARP\_SHA[]→NXM\_NX\_ARP\_THA[],move:NXM\_OF\_ARP\_SPA[]→NXM\_OF\_ARP\_TPA[],load:0xf600000f0001→NXM\_NX\_ARP\_SHA[],load:0xa020101→NXM\_OF\_ARP\_SPA[],IN\_PORT
-cookie=0x0, duration=17.157s, table=31, n\_packets=0, n\_bytes=0,
-priority=0 actions=goto\_table:41 cookie=0x0, duration=17.157s,
-table=41, n\_packets=0, n\_bytes=0, priority=0 actions=goto\_table:51
-cookie=0x0, duration=17.157s, table=51, n\_packets=0, n\_bytes=0,
-priority=0 actions=goto\_table:61 cookie=0x0, duration=17.142s,
-table=61, n\_packets=0, n\_bytes=0, priority=0 actions=goto\_table:71
-cookie=0x0, duration=17.140s, table=71, n\_packets=0, n\_bytes=0,
-priority=0 actions=goto\_table:81 cookie=0x0, duration=17.116s,
-table=81, n\_packets=0, n\_bytes=0, priority=0 actions=goto\_table:91
-cookie=0x0, duration=17.116s, table=91, n\_packets=0, n\_bytes=0,
-priority=0 actions=goto\_table:101 cookie=0x0, duration=17.107s,
-table=101, n\_packets=0, n\_bytes=0, priority=0 actions=goto\_table:111
-cookie=0x0, duration=17.083s, table=111, n\_packets=0, n\_bytes=0,
-priority=0 actions=drop cookie=0x14, duration=11.042s, table=150,
-n\_packets=0, n\_bytes=0, priority=5 actions=goto\_table:151
-cookie=0x14, duration=11.027s, table=151, n\_packets=0, n\_bytes=0,
-priority=5 actions=goto\_table:152 cookie=0x14, duration=11.010s,
-table=152, n\_packets=0, n\_bytes=0, priority=5 actions=goto\_table:158
-cookie=0x14, duration=10.668s, table=152, n\_packets=0, n\_bytes=0,
-priority=650,nsp=4,nsi=255
-actions=load:0xa020101→NXM\_NX\_TUN\_IPV4\_DST[],goto\_table:158
-cookie=0x14, duration=10.995s, table=158, n\_packets=0, n\_bytes=0,
-priority=5 actions=drop cookie=0xba5eba11ba5eba11, duration=10.645s,
-table=158, n\_packets=0, n\_bytes=0,
-priority=751,nsp=4,nsi=255,in\_port=4
-actions=move:NXM\_NX\_NSH\_C1[]→NXM\_NX\_NSH\_C1[],move:NXM\_NX\_NSH\_C2[]→NXM\_NX\_NSH\_C2[],move:NXM\_NX\_TUN\_ID[0..31]→NXM\_NX\_TUN\_ID[0..31],IN\_PORT
-cookie=0xba5eba11ba5eba11, duration=10.590s, table=158, n\_packets=0,
-n\_bytes=0, priority=751,nsp=4,nsi=254,in\_port=4
-actions=move:NXM\_NX\_NSI[]→NXM\_NX\_NSI[],move:NXM\_NX\_NSP[]→NXM\_NX\_NSP[],move:NXM\_NX\_NSH\_C1[]→NXM\_NX\_TUN\_IPV4\_DST[],move:NXM\_NX\_NSH\_C2[]→NXM\_NX\_TUN\_ID[0..31],IN\_PORT
-cookie=0xba5eba11ba5eba11, duration=10.640s, table=158, n\_packets=0,
-n\_bytes=0, priority=750,nsp=4,nsi=255
-actions=move:NXM\_NX\_NSH\_C1[]→NXM\_NX\_NSH\_C1[],move:NXM\_NX\_NSH\_C2[]→NXM\_NX\_NSH\_C2[],move:NXM\_NX\_TUN\_ID[0..31]→NXM\_NX\_TUN\_ID[0..31],output:4
-cookie=0xba5eba11ba5eba11, duration=10.571s, table=158, n\_packets=0,
-n\_bytes=0, priority=761,nsp=4,nsi=254,nshc1=3232248390,in\_port=4
-actions=move:NXM\_NX\_NSI[]→NXM\_NX\_NSI[],move:NXM\_NX\_NSP[]→NXM\_NX\_NSP[],move:NXM\_NX\_NSH\_C1[]→NXM\_NX\_TUN\_IPV4\_DST[],move:NXM\_NX\_NSH\_C2[]→NXM\_NX\_TUN\_ID[0..31],set\_nshc1:0,resubmit(,11)
----
+::
+
+   sudo ovs-ofctl --protocol=OpenFlow13 dump-flows br-int
+   OFPST_FLOW reply (OF1.3) (xid=0x2):
+    cookie=0x0, duration=17.157s, table=0, n_packets=0, n_bytes=0, priority=6 actions=goto_table:1
+    cookie=0x14, duration=10.692s, table=0, n_packets=0, n_bytes=0, priority=400,udp,in_port=4,tp_dst=6633 actions=LOCAL
+    cookie=0x0, duration=17.134s, table=0, n_packets=0, n_bytes=0, dl_type=0x88cc actions=CONTROLLER:65535
+    cookie=0x14, duration=10.717s, table=0, n_packets=0, n_bytes=0, priority=350,nsp=4 actions=goto_table:152
+    cookie=0x14, duration=10.688s, table=0, n_packets=0, n_bytes=0, priority=400,udp,nw_dst=10.2.1.1,tp_dst=6633 actions=output:4
+    cookie=0x0, duration=17.157s, table=1, n_packets=0, n_bytes=0, priority=0 actions=goto_table:11
+    cookie=0x1110070000040254, duration=10.608s, table=1, n_packets=0, n_bytes=0, priority=40000,reg0=0x1,nsp=4,nsi=254,in_port=1 actions=goto_table:21
+    cookie=0x0, duration=17.157s, table=11, n_packets=0, n_bytes=0, priority=0 actions=goto_table:21
+    cookie=0x1110060000040254, duration=10.625s, table=11, n_packets=0, n_bytes=0, nsp=4,nsi=254,in_port=4 actions=load:0x1->NXM_NX_REG0[],move:NXM_NX_NSH_C2[]->NXM_NX_TUN_ID[0..31],resubmit(1,1)
+    cookie=0x1110010000040255, duration=10.615s, table=11, n_packets=0, n_bytes=0, tcp,reg0=0x1,tp_dst=80 actions=move:NXM_NX_TUN_ID[0..31]->NXM_NX_NSH_C2[],set_nshc1:0xc0a83246,set_nsp:0x4,set_nsi:255,load:0xa020101->NXM_NX_TUN_IPV4_DST[],load:0x4->NXM_NX_TUN_ID[0..31],resubmit(,0)
+    cookie=0x0, duration=17.157s, table=21, n_packets=0, n_bytes=0, priority=0 actions=goto_table:31
+    cookie=0x1110040000000000, duration=10.765s, table=21, n_packets=0, n_bytes=0, priority=1024,arp,in_port=LOCAL,arp_tpa=10.2.1.1,arp_op=1 actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],set_field:f6:00:00:0f:00:01->eth_src,load:0x2->NXM_OF_ARP_OP[],move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],load:0xf600000f0001->NXM_NX_ARP_SHA[],load:0xa020101->NXM_OF_ARP_SPA[],IN_PORT
+    cookie=0x0, duration=17.157s, table=31, n_packets=0, n_bytes=0, priority=0 actions=goto_table:41
+    cookie=0x0, duration=17.157s, table=41, n_packets=0, n_bytes=0, priority=0 actions=goto_table:51
+    cookie=0x0, duration=17.157s, table=51, n_packets=0, n_bytes=0, priority=0 actions=goto_table:61
+    cookie=0x0, duration=17.142s, table=61, n_packets=0, n_bytes=0, priority=0 actions=goto_table:71
+    cookie=0x0, duration=17.140s, table=71, n_packets=0, n_bytes=0, priority=0 actions=goto_table:81
+    cookie=0x0, duration=17.116s, table=81, n_packets=0, n_bytes=0, priority=0 actions=goto_table:91
+    cookie=0x0, duration=17.116s, table=91, n_packets=0, n_bytes=0, priority=0 actions=goto_table:101
+    cookie=0x0, duration=17.107s, table=101, n_packets=0, n_bytes=0, priority=0 actions=goto_table:111
+    cookie=0x0, duration=17.083s, table=111, n_packets=0, n_bytes=0, priority=0 actions=drop
+    cookie=0x14, duration=11.042s, table=150, n_packets=0, n_bytes=0, priority=5 actions=goto_table:151
+    cookie=0x14, duration=11.027s, table=151, n_packets=0, n_bytes=0, priority=5 actions=goto_table:152
+    cookie=0x14, duration=11.010s, table=152, n_packets=0, n_bytes=0, priority=5 actions=goto_table:158
+    cookie=0x14, duration=10.668s, table=152, n_packets=0, n_bytes=0, priority=650,nsp=4,nsi=255 actions=load:0xa020101->NXM_NX_TUN_IPV4_DST[],goto_table:158
+    cookie=0x14, duration=10.995s, table=158, n_packets=0, n_bytes=0, priority=5 actions=drop
+    cookie=0xba5eba11ba5eba11, duration=10.645s, table=158, n_packets=0, n_bytes=0, priority=751,nsp=4,nsi=255,in_port=4 actions=move:NXM_NX_NSH_C1[]->NXM_NX_NSH_C1[],move:NXM_NX_NSH_C2[]->NXM_NX_NSH_C2[],move:NXM_NX_TUN_ID[0..31]->NXM_NX_TUN_ID[0..31],IN_PORT
+    cookie=0xba5eba11ba5eba11, duration=10.590s, table=158, n_packets=0, n_bytes=0, priority=751,nsp=4,nsi=254,in_port=4 actions=move:NXM_NX_NSI[]->NXM_NX_NSI[],move:NXM_NX_NSP[]->NXM_NX_NSP[],move:NXM_NX_NSH_C1[]->NXM_NX_TUN_IPV4_DST[],move:NXM_NX_NSH_C2[]->NXM_NX_TUN_ID[0..31],IN_PORT
+    cookie=0xba5eba11ba5eba11, duration=10.640s, table=158, n_packets=0, n_bytes=0, priority=750,nsp=4,nsi=255 actions=move:NXM_NX_NSH_C1[]->NXM_NX_NSH_C1[],move:NXM_NX_NSH_C2[]->NXM_NX_NSH_C2[],move:NXM_NX_TUN_ID[0..31]->NXM_NX_TUN_ID[0..31],output:4
+    cookie=0xba5eba11ba5eba11, duration=10.571s, table=158, n_packets=0, n_bytes=0, priority=761,nsp=4,nsi=254,nshc1=3232248390,in_port=4 actions=move:NXM_NX_NSI[]->NXM_NX_NSI[],move:NXM_NX_NSP[]->NXM_NX_NSP[],move:NXM_NX_NSH_C1[]->NXM_NX_TUN_IPV4_DST[],move:NXM_NX_NSH_C2[]->NXM_NX_TUN_ID[0..31],set_nshc1:0,resubmit(,11)
+
 
 Configuration
 ~~~~~~~~~~~~~
@@ -1851,7 +1803,7 @@ First configure NetVirt to use table 1 as it’s starting table:
 
 http://localhost:8181/restconf/config/netvirt-providers-config:netvirt-providers-config
 
-{ "netvirt-providers-config": { "table-offset": 1 } } ---
+``{ "netvirt-providers-config": { "table-offset": 1 } }``
 
 Next configure SFC to start at table 150 and configure the table
 handoff. The configuration starts SFC at table 150 and sets the handoff
@@ -1859,8 +1811,7 @@ to table 11 which is the NetVirt SFC classification table.
 
 http://localhost:8181/restconf/config/sfc-of-renderer:sfc-of-renderer-config
 
-{ "sfc-of-renderer-config": { "sfc-of-app-egress-table-offset": 11,
-"sfc-of-table-offset": 150 } } ---
+``{ "sfc-of-renderer-config": { "sfc-of-app-egress-table-offset": 11, "sfc-of-table-offset": 150 } }``
 
 OVSDB Hardware VTEP Developer Guide
 -----------------------------------
index 8d6718c3265015edfed17afcd45aeeeca706592b..5d0af69e491b037cd82d9ab531f195a462054b26 100644 (file)
@@ -189,7 +189,7 @@ RETRIEVE UNI
 ~~~~~~~~~~~~
 
 GET
-`http://<host-ip>:8181/restconf/operational/network-topology:network-topology/topology/unimgr:uni/node/<uni-id> <http://<host-ip>:8181/restconf/operational/network-topology:network-topology/topology/unimgr:uni/node/<uni-id>>`__
+http://<host-ip>:8181/restconf/operational/network-topology:network-topology/topology/unimgr:uni/node/<uni-id>
 
 Response : 200
 
index 57765755d4f9a37c3dfa091e427b953c4259a7d2..e6e0c99d1ff87a792ec8fdff97a5c92c067103a6 100644 (file)
@@ -38,9 +38,11 @@ virtual network irrespective of the physical network.
 
 It is implemented as two major components
 
--  `VTN Manager <#_vtn_manager>`__
+-  :ref:`vtn-manager`
 
--  `VTN Coordinator <#_vtn_coordinator>`__
+-  :ref:`vtn-coordinator`
+
+.. _vtn-manager:
 
 VTN Manager
 ~~~~~~~~~~~
@@ -91,7 +93,7 @@ Components:
 |                          |                          | rdinator:RestApi:L2_Netw |
 |                          |                          | ork_Example_Using_VTN_Vi |
 |                          |                          | rtualization>`__         |
-|                          |                          |   for usage.             |
+|                          |                          | for usage.               |
 +--------------------------+--------------------------+--------------------------+
 
 Feature Overview
@@ -125,7 +127,7 @@ Logging In
 To Log in to DLUX, after installing the application:
 
 -  Open a browser and enter the login URL as
-   `http://<OpenDaylight-IP>:8181/index.html <http://<OpenDaylight-IP>:8181/index.html>`__.
+   http://<OpenDaylight-IP>:8181/index.html
 
 .. note::
 
@@ -144,6 +146,8 @@ To Log in to DLUX, after installing the application:
 YANG documentation for VTN Manager, please refer to:
 https://nexus.opendaylight.org/content/sites/site/org.opendaylight.vtn/boron/manager.model/apidocs/index.html
 
+.. _vtn-coordinator:
+
 VTN Coordinator
 ~~~~~~~~~~~~~~~
 
index 0c77959b04040e5a16ec911bb6a61c995b78fe09..697a434650d5c0db04b0c76a4065d32e4c66f87d 100755 (executable)
@@ -67,7 +67,7 @@ In case of ``"vlan-network"``, the ``vlan`` field contains the same value as ``n
 In case of ``"flat"``, the VLAN specific parameters are not filled out.
 
 .. note:: In case of VXLAN network (i.e. ``network-type`` is ``"vxlan-network"``), no information is actually written
-into VPP Renderer datastore, as VXLAN is used for tenant-network (so no packets are going outside). Instead, VPP Renderer looks up GBP flood domains corresponding to existing VPP bridge domains trying to establish a VXLAN tunnel between them.
+   into VPP Renderer datastore, as VXLAN is used for tenant-network (so no packets are going outside). Instead, VPP Renderer looks up GBP flood domains corresponding to existing VPP bridge domains trying to establish a VXLAN tunnel between them.
 
 For a ``port`` entity it is checked that ``vif-type`` contains ``"vhostuser"`` substring, and that ``device-owner`` contains a specific substring, namely ``"compute"``, ``"router"`` or ``"dhcp"``.
 
index e27ce414111c2a6f0a8d8fcf8820c8202d8515ce..c3a829f0bc860b3df2a2a3dbbbdd71390eeae5f2 100644 (file)
@@ -680,7 +680,7 @@ The request results in **204 No content**. This is expected.
 **Delete route:**
 
 **URL:**
-`http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv4-address-family/bgp-types:unicast-subsequent-address-family/bgp-inet:ipv4-routes/bgp-inet:ipv4-route/<route-id> <http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv4-address-family/bgp-types:unicast-subsequent-address-family/bgp-inet:ipv4-routes/bgp-inet:ipv4-route/<route-id>>`__
+http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv4-address-family/bgp-types:unicast-subsequent-address-family/bgp-inet:ipv4-routes/bgp-inet:ipv4-route/<route-id>
 
 **Method:** DELETE
 
@@ -716,7 +716,7 @@ The request results in **204 No content**. This is expected.
 **Delete route:**
 
 **URL:**
-`http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv6-address-family/bgp-types:unicast-subsequent-address-family/bgp-inet:ipv6-routes/bgp-inet:ipv6-route/<route-id> <http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv6-address-family/bgp-types:unicast-subsequent-address-family/bgp-inet:ipv6-routes/bgp-inet:ipv6-route/<route-id>>`__
+http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv6-address-family/bgp-types:unicast-subsequent-address-family/bgp-inet:ipv6-routes/bgp-inet:ipv6-route/<route-id>
 
 **Method:** DELETE
 
@@ -765,7 +765,7 @@ The request results in **204 No content**. This is expected.
 **Delete route:**
 
 **URL:**
-`http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv4-address-family/bgp-labeled-unicast:labeled-unicast-subsequent-address-family/bgp-labeled-unicast:labeled-unicast-routes/bgp-labeled-unicast:labeled-unicast-route/<route-id> <http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv4-address-family/bgp-labeled-unicast:labeled-unicast-subsequent-address-family/bgp-labeled-unicast:labeled-unicast-routes/bgp-labeled-unicast:labeled-unicast-route/<route-id>>`__
+http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv4-address-family/bgp-labeled-unicast:labeled-unicast-subsequent-address-family/bgp-labeled-unicast:labeled-unicast-routes/bgp-labeled-unicast:labeled-unicast-route/<route-id>
 
 **Method:** DELETE
 
@@ -936,7 +936,7 @@ The request results in **204 No content**. This is expected.
 **Delete route:**
 
 **URL:**
-`http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv4-address-family/bgp-flowspec:flowspec-subsequent-address-family/bgp-flowspec:flowspec-routes/bgp-flowspec:flowspec-route/<route-id> <http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv4-address-family/bgp-flowspec:flowspec-subsequent-address-family/bgp-flowspec:flowspec-routes/bgp-flowspec:flowspec-route/<route-id>>`__
+http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv4-address-family/bgp-flowspec:flowspec-subsequent-address-family/bgp-flowspec:flowspec-routes/bgp-flowspec:flowspec-route/<route-id>
 
 **Method:** DELETE
 
@@ -990,7 +990,7 @@ The request results in **204 No content**. This is expected.
 **Delete route:**
 
 **URL:**
-`http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv6-address-family/bgp-flowspec:flowspec-subsequent-address-family/bgp-flowspec:flowspec-ipv6-routes/bgp-flowspec:flowspec-route/<route-id> <http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv6-address-family/bgp-flowspec:flowspec-subsequent-address-family/bgp-flowspec:flowspec-ipv6-routes/bgp-flowspec:flowspec-route/<route-id>>`__
+http://localhost:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/bgp-types:ipv6-address-family/bgp-flowspec:flowspec-subsequent-address-family/bgp-flowspec:flowspec-ipv6-routes/bgp-flowspec:flowspec-route/<route-id>
 
 **Method:** DELETE
 
index 9dc30306d7ae5aa709a2e299a39627061112ab26..a33e5f38c6746eb0e827ef1376ed3d4f0588dd1a 100644 (file)
@@ -154,7 +154,7 @@ CLI.
 Run REST GET command to verify the device details:
 --------------------------------------------------
 
-`http://<CONTROLLER-IP:8181>/restconf/operational/opendaylight-inventory:nodes <http://<CONTROLLER-IP:8181>/restconf/operational/opendaylight-inventory:nodes>`__
+http://<CONTROLLER-IP:8181>/restconf/operational/opendaylight-inventory:nodes
 
 Run REST adjust-flow command to adjust flows and push to the device
 -------------------------------------------------------------------
@@ -166,7 +166,7 @@ takes the flow to be adjusted as input and displays the adjusted flow as
 output in the REST output container. Here is the REST API to adjust and
 push flows to HP 3800 device:
 
-`http://<CONTROLLER-IP:8181>/restconf/operations/openflow-feature:adjust-flow <http://<CONTROLLER-IP:8181>/restconf/operations/openflow-feature:adjust-flow>`__
+http://<CONTROLLER-IP:8181>/restconf/operations/openflow-feature:adjust-flow
 
 FlowObjectives API
 ------------------
@@ -180,15 +180,15 @@ install the flows to the device.
 Filter Objective
 ~~~~~~~~~~~~~~~~
 
-`http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:filter <http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:filter>`__
+http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:filter
 
 Next Objective
 ~~~~~~~~~~~~~~
 
-`http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:next <http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:next>`__
+http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:next
 
 Forward Objective
 ~~~~~~~~~~~~~~~~~
 
-`http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:forward <http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:forward>`__
+http://<CONTROLLER-IP>:8181/restconf/operations/atrium-flow-objective:forward
 
index 154f75cad934e09b0ad22d7fc2e670f08fbb7bd8..d730db164f6ec8f3a7b6b70741b3d1690b261f9e 100644 (file)
@@ -101,8 +101,7 @@ The Access Model is the core of the **GBP** Intent System policy
 resolution process.
 
 .. figure:: ./images/groupbasedpolicy/GBPTerminology1.png
-   :alt: GBP Access Model Terminology - Endpoints, EndpointGroups,
-   Contract
+   :alt: GBP Access Model Terminology - Endpoints, EndpointGroups, Contract
 
    GBP Access Model Terminology - Endpoints, EndpointGroups, Contract
 
@@ -112,8 +111,7 @@ resolution process.
    GBP Access Model Terminology - Subject, Classifier, Action
 
 .. figure:: ./images/groupbasedpolicy/GBPTerminology3.png
-   :alt: GBP Forwarding Model Terminology - L3 Context, L2 Bridge
-   Context, L2 Flood Context/Domain, Subnet
+   :alt: GBP Forwarding Model Terminology - L3 Context, L2 Bridge Context, L2 Flood Context/Domain, Subnet
 
    GBP Forwarding Model Terminology - L3 Context, L2 Bridge Context, L2
    Flood Context/Domain, Subnet
@@ -167,9 +165,9 @@ resolution process.
 Architecture and Value Proposition
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-**GBP** offers an intent based interface, accessed via the `UX <#UX>`__,
+**GBP** offers an intent based interface, accessed via the :ref:`UX <gbp-ux>`,
 via the `REST API <#REST>`__ or directly from a domain-specific-language
-such as `Neutron <#Neutron>`__ through a mapping interface.
+such as :ref:`Neutron <gbp-neutron>` through a mapping interface.
 
 There are two models in **GBP**:
 
@@ -185,7 +183,7 @@ There are two models in **GBP**:
 The *classifier* and *action* portions of the model can be thought of as
 hooks, with their definition provided by each *renderer* about its
 domain specific capabilities. In **GBP** for this release, there is one
-renderer, the *`OpenFlow Overlay renderer (OfOverlay). <#OfOverlay>`__*
+renderer, the :ref:`OpenFlow Overlay renderer (OfOverlay). <gbp-of-overlay>`
 
 These hooks are filled with *definitions* of the types of *features* the
 renderer can provide the *subject*, and are called
@@ -285,8 +283,8 @@ impact to the **Intent** of the contract.
 High-level implementation Architecture
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-The overall architecture, including *`Neutron <#Neutron>`__* domain
-specific mapping, and the `OpenFlow Overlay renderer <#OfOverlay>`__
+The overall architecture, including :ref:`Neutron <gbp-neutron>` domain
+specific mapping, and the :ref:`OpenFlow Overlay renderer <gbp-of-overlay>`
 looks as so:
 
 .. figure:: ./images/groupbasedpolicy/GBP_High-levelBerylliumArchitecture.png
@@ -298,10 +296,10 @@ The major benefit of this architecture is that the mapping of the
 domain-specific-language is completely separate and independent of the
 underlying renderer implementation.
 
-For instance, using the `Neutron Mapper <#Neutron>`__, which maps the
+For instance, using the :ref:`Neutron Mapper <gbp-neutron>`, which maps the
 Neutron API to the **GBP** core model, any contract automatically
-generated from this mapping can be augmented via the `UX <#UX>`__ to use
-`Service Function Chaining <#SFC>`__, a capability not currently
+generated from this mapping can be augmented via the :ref:`UX <gbp-ux>` to use
+:ref:`Service Function Chaining <gbp-sfc>`, a capability not currently
 available in OpenStack Neutron.
 
 When another renderer is added, for instance, NetConf, the same policy
@@ -538,7 +536,7 @@ port 80, or one that matches against HTTP traffic containing a
 particular cookie. Actions are specific actions that need to be taken on
 the traffic before it reaches its destination. Actions could include
 tagging or encapsulating the traffic in some way, redirecting the
-traffic, or applying a `service function chain <#SFC>`__.
+traffic, or applying a :ref:`service function chain <gbp-sfc>`.
 
 Rules, subjects, and actions have an *order* parameter, where a lower
 order value means that a particular item will be applied first. All
@@ -694,6 +692,8 @@ to "exclude." In this case, then the label should be ignored for the
 purpose of matching. Otherwise, the label with the same name will
 completely override the label from the parent.
 
+.. _gbp-ux:
+
 Using the GBP UX interface
 --------------------------
 
@@ -764,7 +764,7 @@ operate and display data with actual selected tenant.
 Below the select box are buttons which display Expressed or Delivered
 policy of Governance section. In the bottom half of this section is
 select box with list of renderers for select. There is currently only
-`OfOverlay <#OfOverlay>`__ renderer available.
+:ref:`OfOverlay <gbp-of-overlay>` renderer available.
 
 Below the select box is Renderer configuration button, which switch the
 app into the Policy expression view with Renderers section expanded for
@@ -805,7 +805,7 @@ box in the upper left corner.
 By single-clicking on any contract or EPG, the data of actual selected
 element will be shown in the right column below the menu. A Manage
 button launches a display wizard window for managing configuration of
-items such as `Service Function Chaining <#SFC>`__.
+items such as :ref:`Service Function Chaining <gbp-sfc>`.
 
 .. figure:: ./images/groupbasedpolicy/ui-3-governanceview-expressed.png
    :alt: Expressed policy
@@ -1208,9 +1208,9 @@ Using the GBP API
 
 Please see:
 
--  `Using the GBP OpenFlow Overlay (OfOverlay) renderer <#OfOverlay>`__
+-  :ref:`gbp-of-overlay`
 
--  `Policy Resolution <#policyresolution>`__
+-  `Policy Resolution`_
 
 -  `Forwarding Model <#forwarding>`__
 
@@ -1218,9 +1218,9 @@ Please see:
 
 It is recommended to use either:
 
--  `Neutron mapper <#Neutron>`__
+-  `Neutron mapper <gbp-neutron>`
 
--  `the UX <#UX>`__
+-  :ref:`the UX <gbp-ux>`
 
 If the REST API must be used, and the above resources are not
 sufficient:
@@ -1228,11 +1228,13 @@ sufficient:
 -  feature:install odl-dlux-yangui
 
 -  browse to:
-   `http://<odl-controller>:8181/index.html <http://<odl-controller>:8181/index.html>`__
+   ``http://<odl-controller>:8181/index.html``
    and select YangUI from the left menu.
 
 to explore the various **GBP** REST options
 
+.. _gbp-neutron:
+
 Using OpenStack with GBP
 ------------------------
 
@@ -1270,7 +1272,7 @@ Base **GBP** feature set, such as policy resolution, data model etc.
 REST calls from OpenStack Neutron are by the Neutron NorthBound project.
 
 **GBP** provides the implementation of the `Neutron V2.0
-API <http://developer.openstack.org/api-ref-networking-v2.html>`__.
+API <http://developer.openstack.org/api-ref-networking-v2.html>`_.
 
 Features
 ~~~~~~~~
@@ -1419,7 +1421,7 @@ seamlessly added to the namespace.
 **Neutron FloatingIP**
 
 When associated with a Neutron Port, this leverages the
-`OfOverlay <#OfOverlay>`__ renderer’s NAT capabilities.
+:ref:`OfOverlay <gbp-of-overlay>` renderer’s NAT capabilities.
 
 A dedicated *external* interface on each Nova compute host allows for
 disitributed external access. Each Nova instance associated with a
@@ -1429,7 +1431,7 @@ of Neutron distributed routing functionality.
 
 Assuming the gateway provisioned in the Neutron Subnet command for the
 external network is reachable, the combination of **GBP** Neutron Mapper
-and `OfOverlay renderer <#OfOverlay>`__ will automatically ARP for this
+and :ref:`OfOverlay renderer <gbp-of-overlay>` will automatically ARP for this
 default gateway, requiring no user intervention.
 
 **Troubleshooting within GBP**
@@ -1477,8 +1479,8 @@ Configuring GBP Neutron
 No intervention passed initial OpenStack setup is required by the user.
 
 More information about configuration can be found in our DevStack demo
-environment on the `**GBP**
-wiki <https://wiki.opendaylight.org/view/Group_Based_Policy_(GBP)>`__.
+environment on the `GBP
+wiki <https://wiki.opendaylight.org/view/Group_Based_Policy_(GBP)>`_.
 
 Administering or Managing GBP Neutron
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1486,9 +1488,9 @@ Administering or Managing GBP Neutron
 For consistencies sake, all provisioning should be performed via the
 Neutron API. (CLI or Horizon).
 
-The mapped policies can be augmented via the **GBP** `UX <#UX>`__, to:
+The mapped policies can be augmented via the **GBP** :ref:`UX <gbp-ux>`, to:
 
--  Enable `Service Function Chaining <#SFC>`__
+-  Enable :ref:`Service Function Chaining <gbp-sfc>`
 
 -  Add endpoints from outside of Neutron i.e. VMs/containers not
    provisioned in OpenStack
@@ -1500,8 +1502,8 @@ The mapped policies can be augmented via the **GBP** `UX <#UX>`__, to:
 Tutorials
 ~~~~~~~~~
 
-A DevStack demo environment can be found on the `**GBP**
-wiki <https://wiki.opendaylight.org/view/Group_Based_Policy_(GBP)>`__.
+A DevStack demo environment can be found on the `GBP
+wiki <https://wiki.opendaylight.org/view/Group_Based_Policy_(GBP)>`_.
 
 GBP Renderer manager
 --------------------
@@ -1582,6 +1584,8 @@ then those are put to OPER data store.
 Similarly, when a Location provider is deleted, information of its locations
 is removed from the OPER data store.
 
+.. _gbp-of-overlay:
+
 Using the GBP OpenFlow Overlay (OfOverlay) renderer
 ---------------------------------------------------
 
@@ -1604,7 +1608,7 @@ From the Karaf console in OpenDaylight:
 This renderer is designed to work with OpenVSwitch (OVS) 2.1+ (although
 2.3 is strongly recommended) and OpenFlow 1.3.
 
-When used in conjunction with the `Neutron Mapper feature <#Neutron>`__
+When used in conjunction with the :ref:`Neutron Mapper feature <gbp-neutron>`
 no extra OfOverlay specific setup is required.
 
 When this feature is loaded "standalone", the user is required to
@@ -1616,6 +1620,8 @@ configure infrastructure, such as
 
 -  and creating the VXLAN/VXLAN-GPE tunnel ports on the bridges.
 
+.. _gbp-offset:
+
 The **GBP** OfOverlay renderer also supports a table offset option, to
 offset the pipeline post-table 0. The value of table offset is stored in
 the config datastore and it may be rewritten at runtime.
@@ -1665,7 +1671,7 @@ Launches components below:
 
 Policy resolution is completely domain independent, and the OfOverlay
 leverages process policy information internally. See `Policy Resolution
-process <#policyresolution>`__.
+process <Policy Resolution>`_.
 
 It listens to inputs to the *Tenants* configuration datastore, validates
 tenant input, then writes this to the Tenants operational datastore.
@@ -1680,13 +1686,13 @@ location.
 The endpoint repository operates in **orchestrated** mode. This means
 the user is responsible for the provisioning of endpoints via:
 
--  `UX/GUI <#UX>`__
+-  :ref:`UX/GUI <gbp-ux>`
 
 -  REST API
 
     **Note**
 
-    When using the `Neutron mapper <#Neutron>`__ feature, everything is
+    When using the :ref:`Neutron mapper <gbp-neutron>` feature, everything is
     managed transparently via Neutron.
 
 The Endpoint Manager is responsible for listening to Endpoint repository
@@ -1813,7 +1819,7 @@ Drop Flow:
 
 **Ingress NAT Mapper**
 
-Table `*offset* <#offset>`__\ +1.
+Table :ref:`offset <gbp-offset>` +1.
 
 ARP responder for external NAT address:
 
@@ -1830,7 +1836,7 @@ SourceMapper.
 
 **Source Mapper**
 
-Table `*offset* <#offset>`__\ +2.
+Table :ref:`offset <gbp-offset>` +2.
 
 Determines based on characteristics from the ingress port, which:
 
@@ -1864,7 +1870,7 @@ Generic drop:
 
 **Destination Mapper**
 
-Table `*offset* <#offset>`__\ +3.
+Table :ref:`offset <gbp-offset>` +3.
 
 Determines based on characteristics of the endpoint:
 
@@ -1908,12 +1914,12 @@ n\_bytes=588, priority=1 actions=drop
 
 **Policy Enforcer**
 
-Table `*offset* <#offset>`__\ +4.
+Table :ref:`offset <gbp-offset>` +4.
 
 Once the Source and Destination EndpointGroups are assigned, policy is
 enforced based on resolved rules.
 
-In the case of `Service Function Chaining <#SFC>`__, the encapsulation
+In the case of :ref:`Service Function Chaining <gbp-sfc>`, the encapsulation
 and destination for traffic destined to a chain, is discovered and
 enforced.
 
@@ -1925,7 +1931,7 @@ Policy flow, allowing IP traffic between EndpointGroups:
 
 **Egress NAT Mapper**
 
-Table `*offset* <#offset>`__\ +5.
+Table :ref:`offset <gbp-offset>` +5.
 
 Performs NAT function before Egressing OVS instance to the underlay
 network.
@@ -1938,10 +1944,10 @@ Inside to Outside NAT translation before sending to underlay:
 
 **External Mapper**
 
-Table `*offset* <#offset>`__\ +6.
+Table :ref:`offset <gbp-offset>` +6.
 
 Manages post-policy enforcement for endpoint specific destination
-effects. Specifically for `Service Function Chaining <#SFC>`__, which is
+effects. Specifically for :ref:`Service Function Chaining <gbp-sfc>`, which is
 why we can support both symmetric and asymmetric chains and distributed
 ingress/egress classification.
 
@@ -1956,7 +1962,7 @@ Configuring OpenFlow Overlay via REST
 
     **Note**
 
-    Please see the `UX <#UX>`__ section on how to configure **GBP** via
+    Please see the :ref:`UX <gbp-ux>` section on how to configure **GBP** via
     the GUI.
 
 **Endpoint**
@@ -2023,7 +2029,7 @@ Configuring OpenFlow Overlay via REST
         }
     }
 
-**Tenants** see `Policy Resolution <#policyresolution>`__ and
+**Tenants** see `Policy Resolution`_ and
 `Forwarding Model <#forwarding>`__ for details:
 
 ::
@@ -2207,7 +2213,7 @@ Tutorials
 ~~~~~~~~~
 
 Comprehensive tutorials, along with a demonstration environment
-leveraging Vagrant can be found on the `**GBP**
+leveraging Vagrant can be found on the `GBP
 wiki <https://wiki.opendaylight.org/view/Group_Based_Policy_(GBP)>`__
 
 Using the GBP eBPF IO Visor Agent renderer
@@ -2232,8 +2238,8 @@ From the Karaf console in OpenDaylight:
     feature:install odl-groupbasedpolicy-iovisor odl-restconf
 
 Installation details, usage, and other information for the IO Visor GBP
-module can be found here: `**IO Visor** github repo for IO
-Modules <https://github.com/iovisor/iomodules>`__
+module can be found here: `IO Visor github repo for IO
+Modules <https://github.com/iovisor/iomodules>`_
 
 Using the GBP FaaS renderer
 ---------------------------
@@ -2256,6 +2262,8 @@ From the Karaf console in OpenDaylight:
 More information about FaaS can be found here:
 https://wiki.opendaylight.org/view/FaaS:GBPIntegration
 
+.. _gbp-sfc:
+
 Using Service Function Chaining (SFC) with GBP Neutron Mapper and OfOverlay
 ---------------------------------------------------------------------------
 
@@ -2269,7 +2277,7 @@ SFC provisioning and theory.
 
 This takes the form of an *action* in **GBP**.
 
-Using the `**GBP** demo and development environment <#demo>`__ as an
+Using the `GBP demo and development environment <#demo>`__ as an
 example:
 
 .. figure:: ./images/groupbasedpolicy/sfc-1-topology.png
@@ -2474,5 +2482,5 @@ The **GBP** project for this release has two demo/development environments.
 -  DevStack based GBP+Neutron integration Vagrant environment
 
 `Demo @ GBP
-wiki <https://wiki.opendaylight.org/view/Group_Based_Policy_(GBP)/Consumability/Demo>`__
+wiki <https://wiki.opendaylight.org/view/Group_Based_Policy_(GBP)/Consumability/Demo>`_
 
index 93a9b862d25d6ad499e2c67230b2100d8840bfa7..bdee2928a24e2e52b8a5ad514d77611fc3616699 100644 (file)
@@ -100,7 +100,7 @@ Coverage
 ^^^^^^^^
 
 Coverage has been moved to a `GoogleDoc
-Spreadshee <https://docs.google.com/spreadsheet/ccc?key=0AtpUuSEP8OyMdHNTZjBoM0VjOE9BcGhHMzk3N19uamc&usp=sharing%23gid=2#gid=0>`__
+Spreadsheet <https://docs.google.com/spreadsheet/ccc?key=0AtpUuSEP8OyMdHNTZjBoM0VjOE9BcGhHMzk3N19uamc&usp=sharing%23gid=2#gid=0>`__
 
 OF 1.3 Considerations
 ^^^^^^^^^^^^^^^^^^^^^
@@ -119,6 +119,8 @@ matches and actions.
 Tutorial / How-To
 -----------------
 
+.. _ofp-running-new-plugin:
+
 Running the controller with the new OpenFlow Plugin
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -334,6 +336,8 @@ available directly in controller project.
 
 **Give it a minute to come up :)**
 
+.. _ofp-test-environment:
+
 OpenFlow 1.3 Enabled Software Switches / Environment
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -407,7 +411,7 @@ features.
 -  You can setup the switch as per the instructions given on the
    following URL
 
-```https://github.com/CPqD/ofsoftswitch13`` <https://github.com/CPqD/ofsoftswitch13>`__
+`https://github.com/CPqD/ofsoftswitch13 <https://github.com/CPqD/ofsoftswitch13>`__
 
 -  Fire following command to start the switch
 
@@ -519,6 +523,8 @@ From within the Mininet VM, run:
 
      sudo mn --topo single,3  --controller 'remote,ip=<your controller ip>,port=6653' --switch ovsk,protocols=OpenFlow13
 
+.. _ofp-e2e-inv:
+
 End to End Inventory
 ~~~~~~~~~~~~~~~~~~~~
 
@@ -606,18 +612,14 @@ Instructions
 Learn End to End for Inventory
 ''''''''''''''''''''''''''''''
 
-`End to End
-Inventory <#odl-ofp-end-to-end-inventory_introduction-introduction>`__
+See :ref:`ofp-e2e-inv`
 
 Check inventory
 '''''''''''''''
 
--  Run mininet with support for OF 1.3 as described in `End to End
-   Inventory <#odl-ofp-end-to-end-inventory_introduction-introduction>`__
+-  Run mininet with support for OF 1.3 as described in :ref:`ofp-e2e-inv`
 
--  Make sure you see the openflow:1 node come up as described in `End to
-   End
-   Inventory <#odl-ofp-end-to-end-inventory_introduction-introduction>`__
+-  Make sure you see the openflow:1 node come up as described in :ref:`ofp-e2e-inv`
 
 Flow Strategy
 '''''''''''''
@@ -725,8 +727,7 @@ Check for your flow in the controller config via RESTCONF
 
 -  See your configured flow in POSTMAN with
 
-   -  URL `http://<controller <http://<controller>`__
-      IP>:8181/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/table/0/
+   -  URL http://<controller IP>:8181/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/table/0/
 
    -  GET
 
@@ -1444,7 +1445,7 @@ Example Flows
 ^^^^^^^^^^^^^
 
 Examples for XML for various flow matches, instructions & actions can be
-found in following section `here <#odl-ofp-example-flows_overview>`__
+found in following section :ref:`here <ofp-example-flows>`.
 
 End to End Topology
 ~~~~~~~~~~~~~~~~~~~
@@ -1458,11 +1459,11 @@ Manager working end to end with the openflowplugin using OpenFlow 1.3.
 Basically, you will learn how to:
 
 1. Run the Base/Virtualization/Service provider Edition with the new
-   openflowplugin: `Running the controller with the new OpenFlow
-   Plugin <#odl-ofp-running-controller-with-the-new-of-plugin_top>`__
+   openflowplugin: :ref:`Running the controller with the new OpenFlow
+   Plugin <ofp-running-new-plugin>`
 
-2. Start mininet to use OF 1.3: `OpenFlow 1.3 Enabled Software Switches
-   / Environment <#odl-ofp-test-environment_top>`__
+2. Start mininet to use OF 1.3: :ref:`OpenFlow 1.3 Enabled Software Switches
+   / Environment <ofp-test-environment>`
 
 3. Use RESTCONF to see the topology information.
 
@@ -1529,8 +1530,7 @@ Groups are NOT SUPPORTED in current (2.0.0) version of
 -  http://comments.gmane.org/gmane.linux.network.openvswitch.general/3251
 
 For testing group feature please use for example
-`CPQD <#odl-ofp-end-to-end-inventory_introduction-introduction>`__
-virtual switch.
+CPQD virtual switch in the :ref:`ofp-e2e-inv` section.
 
 Instructions
 ^^^^^^^^^^^^
@@ -1538,18 +1538,14 @@ Instructions
 Learn End to End for Inventory
 ''''''''''''''''''''''''''''''
 
-`End to End
-Inventory <#odl-ofp-end-to-end-inventory_introduction-introduction>`__
+:ref:`ofp-e2e-inv`
 
 Check inventory
 '''''''''''''''
 
-Run CPqD with support for OF 1.3 as described in `End to End
-Inventory <#odl-ofp-end-to-end-inventory_introduction-introduction>`__
+Run CPqD with support for OF 1.3 as described in :ref:`ofp-e2e-inv`
 
-Make sure you see the openflow:1 node come up as described in `End to
-End
-Inventory <#odl-ofp-end-to-end-inventory_introduction-introduction>`__
+Make sure you see the openflow:1 node come up as described in :ref:`ofp-e2e-inv`
 
 Group Strategy
 ''''''''''''''
@@ -1666,7 +1662,7 @@ Check for your group in the controller config via RESTCONF
 -  See your configured group in POSTMAN with
 
    -  URL
-      `http://<ip-address>:8080/restconf/config/opendaylight-inventory:nodes/node/openflow:1/group/1 <http://<ip-address>:8080/restconf/config/opendaylight-inventory:nodes/node/openflow:1/group/1>`__
+      http://<ip-address>:8080/restconf/config/opendaylight-inventory:nodes/node/openflow:1/group/1
 
    -  GET
 
@@ -1681,7 +1677,7 @@ Look for your group stats in the controller operational data via RESTCONF
 -  See your operational group stats in POSTMAN with
 
    -  URL
-      `http://<ip-address>:8080/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/group/1 <http://<ip-address>:8080/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/group/1>`__
+      http://<ip-address>:8080/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/group/1
 
    -  GET
 
@@ -1759,18 +1755,14 @@ Instructions
 Learn End to End for Inventory
 ''''''''''''''''''''''''''''''
 
--  `End to End
-   Inventory <#odl-ofp-end-to-end-inventory_introduction-introduction>`__
+-  :ref:`ofp-e2e-inv`
 
 Check inventory
 '''''''''''''''
 
--  Run mininet with support for OF 1.3 as described in `End to End
-   Inventory <#odl-ofp-end-to-end-inventory_introduction-introduction>`__
+-  Run mininet with support for OF 1.3 as described in :ref:`ofp-e2e-inv`
 
--  Make sure you see the openflow:1 node come up as described in `End to
-   End
-   Inventory <#odl-ofp-end-to-end-inventory_introduction-introduction>`__
+-  Make sure you see the openflow:1 node come up as described in :ref:`ofp-e2e-inv`
 
 Meter Strategy
 ''''''''''''''
@@ -2125,17 +2117,19 @@ The following is not exactly CLI - just a set of test commands which can
 be executed on the OSGI console testing various features in OpenFlow 1.3
 spec.
 
--  `OSGI Console Test Provider Commands:
-   Flows <#odl-ofp-test-provider-flows_test-provider>`__
+-  :ref:`OSGI Console Test Provider Commands:
+   Flows <ofp-test-provider-flows>`
+
+-  :ref:`OSGI Console Test Provider Commands:
+   Groups <ofp-test-provider-groups>`
 
--  `OSGI Console Test Provider Commands:
-   Groups <#odl-ofp-test-provider-groups_test-provider>`__
+-  :ref:`OSGI Console Test Provider Commands:
+   Meters <ofp-test-provider-meters>`
 
--  `OSGI Console Test Provider Commands:
-   Meters <#odl-ofp-test-provider-meters_test-provider>`__
+-  :ref:`OSGI Console Test Provider Commands: Topology
+   Events <ofp-test-provider-topology>`
 
--  `OSGI Console Test Provider Commands: Topology
-   Events <#odl-ofp-test-provider-topoogy_test-provider>`__
+.. _ofp-test-provider-flows:
 
 Flows : Test Provider
 ~~~~~~~~~~~~~~~~~~~~~
@@ -2198,6 +2192,8 @@ where # is a number between 1 and 80 and openflow:1 is the of the
 switch. The flow to be deleted should have same flowid and Nodeid as
 used for flow add.
 
+.. _ofp-test-provider-groups:
+
 Group : Test Provider
 ~~~~~~~~~~~~~~~~~~~~~
 
@@ -2276,6 +2272,8 @@ Where # is a number between 1 and 4 for grouptype(g#) and 1 and 28 for
 actiontype(a#). GroupId should be same as that used for adding the flow.
 You can confirm that it was modified on the switch.
 
+.. _ofp-test-provider-meters:
+
 Meters : Test Provider
 ~~~~~~~~~~~~~~~~~~~~~~
 
@@ -2353,6 +2351,8 @@ along) in the inventory, at the OSGI command line try running:
 The CLI takes care of using the same meterId and nodeId as used for
 meter add. You can confirm that it was modified on the switch.
 
+.. _ofp-test-provider-topology:
+
 Topology : Notification
 ~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -2416,6 +2416,8 @@ OpenFlow Services at:
 -  `Models Documentation (OpenFlow Services
    Section) <https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Model_Reference>`__
 
+.. _ofp-example-flows:
+
 Example flows
 -------------
 
index b838e37792ba74f024503eb2db2aa6e1ac107bf0..583c4128f797392792ed4ecaa3f83fd48c94b519 100644 (file)
@@ -29,7 +29,7 @@ At a high level, SNBI architecture consists of the following components:
 
 -  SNBI Forwarding Element (FE)
 
-.. figure:: ./images/snbi/snbi_arch.png
+.. figure:: images/snbi/snbi_arch.png
    :alt: SNBI Architecture Diagram
 
    SNBI Architecture Diagram
index 70b0332c9147c499e5289cf137b7b6d1efdc051f..34e8fa704abe0e5bb675421788e1367dbb1a92e5 100644 (file)
@@ -17,7 +17,7 @@ Logging In
 To log in to DLUX, after installing the application:
 
 1. Open a browser and enter the login URL
-   `http://<your-karaf-ip>:8181/index.html <http://<your-karaf-ip>:8181/index.html>`__
+   http://<your-karaf-ip>:8181/index.htm
    in your browser (Chrome is recommended).
 
 2. Login to the application with your username and password credentials.
index 7e198cf1934e185184d2fb9ed44fe8a7b0eb9f4e..47d83e3e91ed0b8b99e6a4272a546c9e939f192b 100644 (file)
@@ -34,9 +34,9 @@ and minimizing network configuration errors.
 
 It is implemented as two major components
 
--  `VTN Manager <#_vtn_manager>`__
+-  `VTN Manager`
 
--  `VTN Coordinator <#_vtn_coordinator>`__
+-  `VTN Coordinator`
 
 VTN Manager
 ~~~~~~~~~~~
@@ -752,7 +752,7 @@ Verify Control Node stacking
 ''''''''''''''''''''''''''''
 
 -  stack.sh prints out Horizon is now available at
-   `http://<CONTROL\_NODE\_IP\_ADDRESS>:8080/ <http://<CONTROL_NODE_IP_ADDRESS>:8080/>`__
+   http://<CONTROL\_NODE\_IP\_ADDRESS>:8080/
 
 -  Execute the command *sudo ovs-vsctl show* in the control node
    terminal and verify if the bridge *br-int* is created.
@@ -812,7 +812,7 @@ Additional Verifications
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
 -  Please visit the OpenDaylight DLUX GUI after stacking all the nodes,
-   `http://<ODL\_IP\_ADDRESS>:8181/index.html <http://<ODL_IP_ADDRESS>:8181/index.html>`__.
+   http://<ODL\_IP\_ADDRESS>:8181/index.html.
    The switches, topology and the ports that are currently read can be
    validated.
 
@@ -837,7 +837,7 @@ Create VM from Devstack Horizon GUI
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 -  Login to
-   `http://<CONTROL\_NODE\_IP>:8080/ <http://<CONTROL_NODE_IP>:8080/>`__
+   http://<CONTROL\_NODE\_IP>:8080/
    to check the horizon GUI.
 
 .. figure:: ./images/vtn/OpenStackGui.png
@@ -968,7 +968,7 @@ To log in to DLUX, after installing the application: \* Open a browser
 and enter the login URL. If you have installed DLUX as a stand-alone,
 then the login URL is http://localhost:9000/DLUX/index.html. However if
 you have deployed DLUX with Karaf, then the login URL is
-`http://\\<your <http://\<your>`__ IP\\>:8181/dlux/index.html. \* Login
+http://<your IP>:8181/dlux/index.html. \* Login
 to the application with user ID and password credentials as admin.
 NOTE:admin is the only user type available for DLUX in this release.
 
@@ -1271,8 +1271,7 @@ mininet. This page targets Boron release, so the procedure described
 here does not work in other releases.
 
 .. figure:: ./images/vtn/vlanmap_using_mininet.png
-   :alt: Example that demonstrates vlanmap testing in Mininet
-   Environment
+   :alt: Example that demonstrates vlanmap testing in Mininet Environment
 
    Example that demonstrates vlanmap testing in Mininet Environment
 
@@ -3568,8 +3567,7 @@ Overview
 This example explains how to test vlan-map in a multi host scenario.
 
 .. figure:: ./images/vtn/vlanmap_using_mininet.png
-   :alt: Example that demonstrates vlanmap testing in Mininet
-   Environment
+   :alt: Example that demonstrates vlanmap testing in Mininet Environment
 
    Example that demonstrates vlanmap testing in Mininet Environment