diff --git a/configuration/aaa.rst b/configuration/aaa.rst
index a2da53d..8d839f2 100644
--- a/configuration/aaa.rst
+++ b/configuration/aaa.rst
@@ -3,8 +3,9 @@
 
 Introduction
 ------------
-In this section, we will explain how to use Trellis with AAA service, which can be used to authenticate a client host.
-We will explain how this works with a simple **single switch** topology.
+In this section, we will explain how to use Trellis with AAA service, which can
+be used to authenticate a client host.  We will explain how this works with a
+simple **single switch** topology.
 
 .. image:: ../images/config-aaa.png
 
@@ -13,8 +14,9 @@
 
 Activate AAA app
 ^^^^^^^^^^^^^^^^
-We need to install and activate AAA app separately since it is located in a separate (CORD) repository.
-There are multiple methods to install and activate a pre-compiled app. Let's use CLI now.
+We need to install and activate AAA app separately since it is located in a
+separate (CORD) repository.  There are multiple methods to install and activate
+a pre-compiled app. Let's use CLI now.
 
 .. code-block::console
 
@@ -23,10 +25,10 @@
 
 Provide network configuration
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-We need to provide AAA configuration in the apps section of network configuration.
+We need to provide AAA configuration in the apps section of network
+configuration.
 
 .. code-block:: json
-    :linenos:
 
     {
       "apps": {
@@ -42,8 +44,12 @@
 
 
 - ``radiusIp``: The IP address of the Radius server
-- ``radiusServerPort``: The UDP port of the Radius server. (Optional -- ONOS will use port 1812 by default).
-- ``radiusSecret``: The Radius secret. This needs to be consistent with the Radius server configuration
+
+- ``radiusServerPort``: The UDP port of the Radius server. (Optional -- ONOS
+  will use port 1812 by default).
+
+- ``radiusSecret``: The Radius secret. This needs to be consistent with the
+  Radius server configuration
 
 Then push the JSON to ONOS:
 
@@ -57,10 +63,10 @@
 
 Install FreeRadius
 ^^^^^^^^^^^^^^^^^^
-Technically all Radius server should work.
-However, the way to configure them are probably different case to case.
-Here we use FreeRadius on Ubuntu as an example.
-To install the Radius server, simply run:
+
+Technically, any Radius server should work.  However, the way to configure them
+are probably different case to case.  Here we use FreeRadius on Ubuntu as an
+example.  To install the Radius server, simply run:
 
 .. code-block:: console
 
@@ -71,9 +77,11 @@
 
 Add a user
 """"""""""
-We usually connect Radius server to a database where we store the user information.
-In this section, we statically configure a user to simplify the setup.
-To add a user ``admin`` with password ``cord_test``, edit ``/etc/freeradius/users`` and add following lines:
+
+We usually connect Radius server to a database where we store the user
+information.  In this section, we statically configure a user to simplify the
+setup.  To add a user ``admin`` with password ``cord_test``, edit
+``/etc/freeradius/users`` and add following lines:
 
 .. code-block:: text
 
@@ -109,14 +117,16 @@
     +                       private_key_password = onos_test
 
 .. note::
-    The key and certificates required by TLS will locate under ``/etc/freeradius/certs`` by default.
-    There will be three symbolic links link to ``ca.pem``, ``server.key``, ``server.pem``.
-    We only need to change the symbolic links after we generates the keys and certificates.
+    The key and certificates required by TLS will locate under
+    ``/etc/freeradius/certs`` by default.  There will be three symbolic links
+    link to ``ca.pem``, ``server.key``, ``server.pem``.  We only need to change
+    the symbolic links after we generates the keys and certificates.
     Therefore, we don't need to change the path in ``/etc/freeradius/eap.conf``
 
 .. note::
-    Both server certificate and client certificate need to be signed by the same CA certificate.
-    Also note that each key we generate below needs a unique Common Name.
+    Both server certificate and client certificate need to be signed by the
+    same CA certificate.  Also note that each key we generate below needs a
+    unique Common Name.
 
 Generate CA certificate (ca.pem) and private key (privkey.pem)
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@@ -146,14 +156,17 @@
 
 Deploy keys and certificates
 """"""""""""""""""""""""""""
-On the server side, please link **/etc/freeradius/{ca.pem, server.key, server.pem}** to the files we just generated.
-Also copy **ca.pem, client.key, client.pem** to the client side through a secured channel.
-They will later be used when testing the Radius authentication.
+On the server side, please link **/etc/freeradius/{ca.pem, server.key,
+server.pem}** to the files we just generated.  Also copy **ca.pem, client.key,
+client.pem** to the client side through a secured channel.  They will later be
+used when testing the Radius authentication.
 
 
 Testing
 -------
-We can use the ``wpa_supplicant`` as the test client. In case ``wpa_supplicant`` has not been installed, you can run ``sudo apt-get install wpasupplicant``
+We can use the ``wpa_supplicant`` as the test client. In case
+``wpa_supplicant`` has not been installed, you can run ``sudo apt-get install
+wpasupplicant``
 
 Compose wpa_supplicant.conf
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -178,8 +191,10 @@
 
 Run the test client
 ^^^^^^^^^^^^^^^^^^^
+
 .. tip::
-    If you are using a Linux VM behind a bridge to send out this authentication message, make sure the Linux kernel of your host machine is 3.2 or above.
+    If you are using a Linux VM behind a bridge to send out this authentication
+    message, make sure the Linux kernel of your host machine is 3.2 or above.
     Otherwise the EAPOL messages won't go through the bridge.
 
 .. code-block:: console
diff --git a/configuration/bridging-unicast.rst b/configuration/bridging-unicast.rst
index 2dc8c92..7a590f9 100644
--- a/configuration/bridging-unicast.rst
+++ b/configuration/bridging-unicast.rst
@@ -7,10 +7,10 @@
 
 Access Ports
 ------------
+
 The necessary but minimum configuration for an access port is simply a VLAN.
 
 .. code-block:: json
-    :linenos:
 
     {
       "ports" : {
@@ -29,17 +29,23 @@
       }
     }
 
-The example above shows two ports (12 and 16) on switch of:204 that have been assigned to VLAN 10 using the ``vlan-untagged`` keyword.
+The example above shows two ports (12 and 16) on switch ``of:204`` that have
+been assigned to VLAN 10 using the ``vlan-untagged`` keyword.
+
 It simply means that packets come in and leave out of these switches untagged,
-but internally they are assigned VLAN 10 and they belong to the bridging domain defined for VLAN 10.
+but internally they are assigned VLAN 10 and they belong to the bridging domain
+defined for VLAN 10.
 
-``name`` is used to associate the interface with a globally unique, user friendly name. It can be omitted.
+``name`` is used to associate the interface with a globally unique, user
+friendly name. It can be omitted.
 
-With the configuration shown above, the packets will always be bridged, but they cannot be routed out of the VLAN (e.g. to other subnets).
-To add the capability to route out of VLAN 10, we need to add a subnet/gateway IP (similar to `interface-vlans or SVIs in traditional networks <https://www.youtube.com/watch?v=bUXpmiJpGb0>`_).
+With the configuration shown above, the packets will always be bridged, but
+they cannot be routed out of the VLAN (e.g. to other subnets).  To add the
+capability to route out of VLAN 10, we need to add a subnet/gateway IP (similar
+to `interface-vlans or SVIs in traditional networks
+<https://www.youtube.com/watch?v=bUXpmiJpGb0>`_).
 
 .. code-block:: json
-    :linenos:
 
     {
       "ports" : {
@@ -60,15 +66,24 @@
       }
     }
 
-In this example, VLAN 10 is associated with subnet ``10.0.1.0/24``, and the gateway IP for hosts in this subnet is ``10.0.1.254/32``.
-When the desire is to route out of a VLAN, this assignment is currently necessary on all ports configured in the same VLAN.
+In this example, VLAN 10 is associated with subnet ``10.0.1.0/24``, and the
+gateway IP for hosts in this subnet is ``10.0.1.254/32``.
+
+When the desire is to route out of a VLAN, this assignment is currently
+necessary on all ports configured in the same VLAN.
 
 .. note::
-    Typically we only expect a single subnet for a VLAN. Similar to traditional networks, for us, a subnet == VLAN. Different VLANs should be configured in different subnets.
-    In certain use-cases, it may be necessary to configure multiple subnets in the same VLAN. This is possible by adding more subnet/gateway IPs in the ``ips`` array.
+    Typically we only expect a single subnet for a VLAN. Similar to traditional
+    networks, for us, a subnet == VLAN. Different VLANs should be configured in
+    different subnets.
+
+    In certain use-cases, it may be necessary to configure multiple subnets in
+    the same VLAN. This is possible by adding more subnet/gateway IPs in the
+    ``ips`` array.
 
 .. tip::
     One subnet cannot be configured on multiple leaf switches.
+
     We usually configure one subnet for all the ports on the same leaf switch.
 
 Tagged Ports
@@ -76,7 +91,6 @@
 Tagged port configuration is similar.
 
 .. code-block:: json
-    :linenos:
 
     {
       "ports" : {
@@ -90,18 +104,26 @@
       }
     }
 
-The configuration above for port 24 on switch of:204 shows two VLANs 20 and 40 configured on that port, with corresponding subnets and gateway IPs.
-Note that there is no specific ordering required in the ``ips`` or ``vlan-tagged`` arrays to correlate the VLANs to their corresponding subnets.
-In a future release, we will correlate VLAN and subnets configuration in a more readable way.
+The configuration above for port 24 on switch of:204 shows two VLANs 20 and 40
+configured on that port, with corresponding subnets and gateway IPs.
 
+Note that there is no specific ordering required in the ``ips`` or
+``vlan-tagged`` arrays to correlate the VLANs to their corresponding subnets.
+
+In a future release, we will correlate VLAN and subnets configuration in a more
+readable way.
 
 Native VLAN on Tagged Ports
 ---------------------------
-An additional configuration ``vlan-native`` possible on tagged ports includes the ability to specify a VLAN (and thus a bridging domain) for incoming untagged packets.
-Typically, such configuration in trunk ports in traditional networks is referred to a native VLAN.
+
+An additional configuration ``vlan-native`` possible on tagged ports includes
+the ability to specify a VLAN (and thus a bridging domain) for incoming
+untagged packets.
+
+Typically, such configuration in trunk ports in traditional networks is
+referred to a native VLAN.
 
 .. code-block:: json
-    :linenos:
 
     {
       "ports" : {
@@ -116,15 +138,16 @@
       }
     }
 
-Note that it is also necessary to configure the subnet/gateway IP corresponding to the native VLAN if you wish to route out of that VLAN.
-
+Note that it is also necessary to configure the subnet/gateway IP corresponding
+to the native VLAN if you wish to route out of that VLAN.
 
 Configuring interface for IPv6
 ------------------------------
-It is similar to configure IPv6 routing. Simply replace the addresses in ``ips`` with IPv6 addresses. For example,
+
+It is similar to configure IPv6 routing. Simply replace the addresses in
+``ips`` with IPv6 addresses. For example:
 
 .. code-block:: json
-    :linenos:
 
     {
       "ports" : {
@@ -144,36 +167,63 @@
 
 Router Advertisement overview
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Router advertisement application is for enabling **Router Advertisement** and **Router Solicitation** functionalities supported by IPv6 routers.
+
+Router advertisement application is for enabling **Router Advertisement** and
+**Router Solicitation** functionalities supported by IPv6 routers.
+
 More details are available in `RFC 4861 <https://tools.ietf.org/html/rfc4861>`_.
 
-Application identifies which IPv6 interfaces are currently configured in the system and it will try to send out **unsolicited Router Advertisement** (RA) messages from these interfaces.
-Each such RA message will have two mandatory options named **Source link-layer address** and **MTU**.
-Additional RA option **prefix** can be enabled using component configuration **raGlobalPrefixConfStatus**.
+Application identifies which IPv6 interfaces are currently configured in the
+system and it will try to send out **unsolicited Router Advertisement** (RA)
+messages from these interfaces.
 
-Application also processes **Router Solicitations** (RS) sent from hosts. Upon receiving RS on a particular interface application stops RA transmission in that interface and immediately sends RA targeted to the solicited host. After that application continues unsolicited RA transmission on that interface.
+Each such RA message will have two mandatory options named **Source link-layer
+address** and **MTU**.
+
+Additional RA option **prefix** can be enabled using component configuration
+**raGlobalPrefixConfStatus**.
+
+Application also processes **Router Solicitations** (RS) sent from hosts. Upon
+receiving RS on a particular interface application stops RA transmission in
+that interface and immediately sends RA targeted to the solicited host. After
+that application continues unsolicited RA transmission on that interface.
 
 Activate and configure RA
 ^^^^^^^^^^^^^^^^^^^^^^^^^
+
 RA application can be activated from CLI by running
 
 .. code-block:: console
 
   onos> app activate routeradvertisement
 
-Behavior of RA application is controlled by ONOS component configuration subsystem and following are possible configuration options.
+Behavior of RA application is controlled by ONOS component configuration
+subsystem and following are possible configuration options.
 
 - ``raThreadDelay``: Delay between consecutive RA transmissions
+
 - ``raPoolSize``: Capacity of thread pool to be used for RA transmissions
-- ``raFlagMbitStatus``: RA flag “Managed address configuration” enabled/disabled
+
+- ``raFlagMbitStatus``: RA flag “Managed address configuration”
+  enabled/disabled
+
 - ``raFlagObitStatus``: RA flag “Other configuration” enabled/disabled
-- ``raOptionPrefixStatus``: RA Option “prefix” is enabled/disabled. Router prefixes will be available in RA only if this flag is “true”
-- ``raGlobalPrefixConfStatus``: Enable switch level global prefix configuration.
-  Once “raGlobalPrefixConfStatus” is enabled, RA prefix option is generated from port configuration of device, see for more details.
+
+- ``raOptionPrefixStatus``: RA Option “prefix” is enabled/disabled. Router
+  prefixes will be available in RA only if this flag is “true”
+
+- ``raGlobalPrefixConfStatus``: Enable switch level global prefix
+  configuration.
+
+  Once “raGlobalPrefixConfStatus” is enabled, RA prefix option is generated
+  from port configuration of device, see for more details.
 
 Prefix details are picked up from network interface configuration.
+
 RA app will filter out link-local IPs while preparing prefixes.
-For example, in following configuration, Prefix will include only **2001:0558:FF10:04C9::2:1ff/120**.
+
+For example, in following configuration, Prefix will include only
+**2001:0558:FF10:04C9::2:1ff/120**.
 
 .. code-block:: json
 
@@ -192,8 +242,12 @@
 
 Global prefix configuration
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-In some cases, users may want to have a set of global prefix **advertised on all edge interfaces**.
-Such prefixes can be configured in **devices** section of network configuration in the following way.
+
+In some cases, users may want to have a set of global prefix **advertised on
+all edge interfaces**.
+
+Such prefixes can be configured in **devices** section of network configuration
+in the following way.
 
 .. code-block:: json
 
@@ -208,23 +262,42 @@
     }
 
 .. note::
-    When global prefix is configured, RA app will ignore any prefixes configured on switch interfaces.
+    When global prefix is configured, RA app will ignore any prefixes
+    configured on switch interfaces.
 
 Notes about interface config
 ----------------------------
-There is no need to configure ports on switches that are meant to connect to other switches.
-The VLAN (untagged or tagged) configuration is only meant for ports that are connected to hosts (edge ports).
+
+There is no need to configure ports on switches that are meant to connect to
+other switches.
+
+The VLAN (untagged or tagged) configuration is only meant for ports that are
+connected to hosts (edge ports).
 
 .. image:: ../images/config-vlan.png
 
-Furthermore, note that the same VLAN can be configured on multiple ToRs - e.g. vlan 20 in the figure above.
-However this does not mean that the ports are in the same bridging domain, because in the fabric, the communication between ToRs is through a routed network. '
-In other words, a host on VLAN 20 (untagged or tagged) connected to one ToR can communicate with another host on VLAN 20 (untagged or tagged) connected to a different ToR,
-but the MAC addresses will change as the traffic goes through a routed network.
+Furthermore, note that the same VLAN can be configured on multiple ToRs - e.g.
+vlan 20 in the figure above.
 
-Please do not use this feature to connect switches in unsupported topologies as shown in the example below.
-The fabric is not designed to be one big Ethernet fabric. The bridging domain is restricted to within one ToR.
-If the bridging domain is extended across two ToRs directly linked to each other, there is a chance of loops.
-In other words, the ToRs/Leafs are not standalone 802.1Q bridges, and should not be used as such.
+However this does not mean that the ports are in the same bridging domain,
+because in the fabric, the communication between ToRs is through a routed
+network.
+
+In other words, a host on VLAN 20 (untagged or tagged) connected to one ToR can
+communicate with another host on VLAN 20 (untagged or tagged) connected to a
+different ToR, but the MAC addresses will change as the traffic goes through a
+routed network.
+
+Please do not use this feature to connect switches in unsupported topologies as
+shown in the example below.
+
+The fabric is not designed to be one big Ethernet fabric. The bridging domain
+is restricted to within one ToR.
+
+If the bridging domain is extended across two ToRs directly linked to each
+other, there is a chance of loops.
+
+In other words, the ToRs/Leafs are not standalone 802.1Q bridges, and should
+not be used as such.
 
 .. image:: ../images/config-vlan-invalid.png
diff --git a/configuration/device-config.rst b/configuration/device-config.rst
index 6da9acd..9a55895 100644
--- a/configuration/device-config.rst
+++ b/configuration/device-config.rst
@@ -3,7 +3,6 @@
 Each switch in Trellis requires a device config.
 
 .. code-block:: json
-    :linenos:
 
     {
       "devices" : {
@@ -26,30 +25,55 @@
     }
 
 - ``of:0000000000000001``: DPID of the device.
-- ``ipv4NodeSid``: IPv4 node segment ID, which is used as an MPLS label in forwarding IPv4 traffic. Can be arbitrary and should be globally unique.
-- ``ipv4Loopback``: IPv4 loopback address. Can be arbitrary, should be globally unique and should not be part of the same subnet(s) defined on the data plane ports (see port config).
-- ``ipv6NodeSid``: IPv6 node segment ID, which is used as an MPLS label in forwarding IPv6 traffic. Can be arbitrary and should be globally unique. Only required when using IPv6.
-- ``ipv6Loopback``: IPv6 loopback address. Can be arbitrary, should be globally unique and should not be part of the same subnet(s) defined on the data plane ports (see port config).
-  Only required when using IPv6.
-- ``routerMac``: Router MAC address. Can be arbitrary and should be globally unique.
-  This MAC address will be used to reply the ARP request for the loopback IP or the Interface IP that will be introduced later.
-  (We recommend using the MAC address of the device's management interface as the router MAC.)
+
+- ``ipv4NodeSid``: IPv4 node segment ID, which is used as an MPLS label in
+  forwarding IPv4 traffic. Can be arbitrary and should be globally unique.
+
+- ``ipv4Loopback``: IPv4 loopback address. Can be arbitrary, should be globally
+  unique and should not be part of the same subnet(s) defined on the data plane
+  ports (see port config).
+
+- ``ipv6NodeSid``: IPv6 node segment ID, which is used as an MPLS label in
+  forwarding IPv6 traffic. Can be arbitrary and should be globally unique. Only
+  required when using IPv6.
+
+- ``ipv6Loopback``: IPv6 loopback address. Can be arbitrary, should be globally
+  unique and should not be part of the same subnet(s) defined on the data plane
+  ports (see port config).  Only required when using IPv6.
+
+- ``routerMac``: Router MAC address. Can be arbitrary and should be globally
+  unique.  This MAC address will be used to reply the ARP request for the
+  loopback IP or the Interface IP that will be introduced later.  (We recommend
+  using the MAC address of the device's management interface as the router
+  MAC.)
+
 - ``isEdgeRouter``: True for leaf switches. False for spine switches.
+
 - ``adjacencySids``: Deprecated.  Just put an empty array for now.
+
 - ``name``: Name of the device. It is an arbitrary name to identify the device easily.
-- ``driver``: This tells ONOS which OpenFlow driver should be loaded for this device. It overrides the driver selected by ONOS automatically when the device connects.
+
+- ``driver``: This tells ONOS which OpenFlow driver should be loaded for this
+  device. It overrides the driver selected by ONOS automatically when the
+  device connects.
 
     - When using OpenvSwitch, set this to ``ovs-ofdpa``
-    - When using hardware switches, set this to ``ofdpa3`` or eliminate ``driver`` entirely as the correct driver configuration will be set automatically by ONOS
+
+    - When using hardware switches, set this to ``ofdpa3`` or eliminate
+      ``driver`` entirely as the correct driver configuration will be set
+      automatically by ONOS
 
 .. caution::
-    We should avoid using reserved MPLS labels for ``ipv4NodeSid`` and ``ipv6NodeSid``.
-    Please check here for the reserved values: http://www.iana.org/assignments/mpls-label-values/mpls-label-values.xhtml
+    We should avoid using reserved MPLS labels for ``ipv4NodeSid`` and
+    ``ipv6NodeSid``.  Please check here for the reserved values:
+    http://www.iana.org/assignments/mpls-label-values/mpls-label-values.xhtml
 
 .. note::
     Most of the Trellis configurations support dynamic configuration updates.
-    Unfortunately, Trellis currently **do not support dynamic device configuration updates**.
-    You will have to restart the device when if corresponding device configuration changes.
+    Unfortunately, Trellis currently **do not support dynamic device
+    configuration updates**.  You will have to restart the device when if
+    corresponding device configuration changes.
 
     Having said that, when introducing a completely new device in the network,
-    the device configurations pushed before the device's connection should apply correctly.
+    the device configurations pushed before the device's connection should
+    apply correctly.
diff --git a/configuration/dhcp-relay.rst b/configuration/dhcp-relay.rst
index efebaa9..c9e68ff 100644
--- a/configuration/dhcp-relay.rst
+++ b/configuration/dhcp-relay.rst
@@ -2,20 +2,29 @@
 ==========
 
 .. tip::
-    We strongly recommend you to setup DHCP relay and configure the hosts to **obtain address via DHCP**.
-    See `Alternative: Configure static IP`_ if you want to statically configure IP address on each host.
+    We strongly recommend you to setup DHCP relay and configure the hosts to
+    **obtain address via DHCP**.
 
+    See `Alternative: Configure static IP`_ if you want to statically configure
+    IP address on each host.
 
 Overview
 --------
 The DHCP relay app used in Trellis is an L3 relay.
-That is, it support relaying DHCP packets from/to a server that's not in the same subnet of the client.
+
+That is, it support relaying DHCP packets from/to a server that's not in the
+same subnet of the client.
 
 Here's a list of features supported:
 
 - DHCPv4 and DHCPv6
-- DHCP server directly attached to fabric leaves, or indirectly connected via upstream router
-- DHCP client directly attached to fabric leaves, or indirectly connected via `LDRA (Light-weight DHCP Relay Agent) <https://tools.ietf.org/html/rfc6221>`_
+
+- DHCP server directly attached to fabric leaves, or indirectly connected via
+  upstream router
+
+- DHCP client directly attached to fabric leaves, or indirectly connected via
+  `LDRA (Light-weight DHCP Relay Agent) <https://tools.ietf.org/html/rfc6221>`_
+
 - Multiple DHCP servers for HA
 
 .. note::
@@ -30,8 +39,11 @@
 
 .. image:: ../images/config-dhcp.png
 
-In this case, the configuration involves first configuring the switch interface with the vlan/subnet the DHCP service is part of.
-For example, if I have a switch ``of:205`` with a DHCP server on port 24 on vlan 20, the port config looks like:
+In this case, the configuration involves first configuring the switch interface
+with the vlan/subnet the DHCP service is part of.
+
+For example, if I have a switch ``of:205`` with a DHCP server on port 24 on
+vlan 20, the port config looks like:
 
 .. code-block:: json
 
@@ -47,7 +59,8 @@
       }
     }
 
-A second part of the configuration for the DHCP relay app requires a json configuration under the key apps:
+A second part of the configuration for the DHCP relay app requires a json
+configuration under the key apps:
 
 .. code-block:: json
 
@@ -64,16 +77,24 @@
       }
     }
 
-Note that the dhcprelay app is configured with location of the DHCP server (the switch port to which it is connected to the fabric).
-It is also configured with the DHCP server IP, but it is no longer necessary to configure the MAC address of the server.
+Note that the dhcprelay app is configured with location of the DHCP server (the
+switch port to which it is connected to the fabric).
+
+It is also configured with the DHCP server IP, but it is no longer necessary to
+configure the MAC address of the server.
+
 ONOS will automatically learn the MAC and VLAN corresponding to the serverIP.
 
 
 Server reachable via external router
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-In this case, it is actually the external router that is directly connected to the fabric.
-This external router is already configured in the ports section of network-config (for vRouter functionality).
-For example, if the external router is connected to switch of:205 on port 1
+In this case, it is actually the external router that is directly connected to
+the fabric.
+
+This external router is already configured in the ports section of
+network-config (for vRouter functionality).
+
+For example, if the external router is connected to switch ``of:205`` on port 1
 
 .. code-block:: json
 
@@ -89,8 +110,12 @@
       }
     }
 
-As before the ``ips`` and ``mac`` configured on port 1, actually correspond to the addresses configured in Quagga.
-The app config in this case, includes an additional field necessary to inform the dhcp-relay app of the gatewayIP through which the DHCP server can be reached.
+As before the ``ips`` and ``mac`` configured on port 1, actually correspond to
+the addresses configured in Quagga.
+
+The app config in this case, includes an additional field necessary to inform
+the dhcp-relay app of the gatewayIP through which the DHCP server can be
+reached.
 
 .. code-block:: json
 
@@ -109,13 +134,15 @@
     }
 
 .. note::
-    Note that the dhcpserverConnectPoint should now be the switchport to which the external router is connected to the fabric.
+    Note that the ``dhcpserverConnectPoint`` should now be the switchport to
+    which the external router is connected to the fabric.
 
 Setup DHCP server
 -----------------
 
 Install DHCP server
 ^^^^^^^^^^^^^^^^^^^
+
 Modern DHCP servers should support relayed DHCP request.
 However, the way to configure them are probably different case to case.
 Here we use **isc-dhcp-server** on Ubuntu as an example.
@@ -128,6 +155,7 @@
 
 Configure DHCP Server
 ^^^^^^^^^^^^^^^^^^^^^
+
 Two configuration files are required by DHCP server.
 
 First, we need to specify which network interface the DHCP server should listen on.
@@ -141,7 +169,9 @@
 To do that, we need to modify ``/etc/dhcp/dhcpd.conf`` and add the following lines.
 
 Note that the subnet of ``eth1`` needs to be included.
-Otherwise, the DHCP server will not listen to the interface even though we have specified that in ``/etc/default/isc-dhcp-server``.
+
+Otherwise, the DHCP server will not listen to the interface even though we have
+specified that in ``/etc/default/isc-dhcp-server``.
 
 .. code-block:: text
 
@@ -188,6 +218,7 @@
 
 Testing
 -------
+
 The host should be able to obtain an IP address from the pool we specified.
 Try to run ``dhclient`` and see if the host can get an IP address.
 
@@ -206,19 +237,28 @@
     sudo dhclient -6 -P -r eth1   # for releasing prefix
 
 
-If something goes wrong, check ``/var/log/syslog`` for DHCP server log and run ``tcpdump`` on DHCP server to see if the DHCP packets from the host reach the server correctly.
-
+If something goes wrong, check ``/var/log/syslog`` for DHCP server log and run
+``tcpdump`` on DHCP server to see if the DHCP packets from the host reach the
+server correctly.
 
 Additional Features
 -------------------
 
 DHCP Relay store
 ^^^^^^^^^^^^^^^^
-DHCP relay application stores information from DHCP packet which processed by the app, administrator can use CLI command ``dhcp-relay`` to query these information.
+
+DHCP relay application stores information from DHCP packet which processed by
+the app, administrator can use CLI command ``dhcp-relay`` to query these
+information.
+
 The store provides these functionality:
 
-- Latest state of DHCP client (e.g. client location, last seen time, DHCP type...), for debugging purpose
-- For direct host, ONOS can find location and vlan from relay agent option, however, for indirect host, ONOS need to query last state from the store to find correct destination.
+- Latest state of DHCP client (e.g. client location, last seen time, DHCP
+  type...), for debugging purpose
+
+- For direct host, ONOS can find location and vlan from relay agent option,
+  however, for indirect host, ONOS need to query last state from the store to
+  find correct destination.
 
 
 DHCPv6 Relay counter
@@ -226,7 +266,9 @@
 There are two DHCPv6 packet counters which are Host basis counters and Global counters.
 
 Host basis counters count and record DHCPv6 packets received on this host.
-It can be displayed by ``dhcp-relay counter``. These counters can be reset by typing ``dhcp-relay counter reset``.
+
+It can be displayed by ``dhcp-relay counter``. These counters can be reset by
+typing ``dhcp-relay counter reset``.
 
 .. code-block:: console
 
@@ -249,7 +291,9 @@
     onos> dhcp-relay counter reset
 
 Global counters counts and records all DHCPv6 packets received in ONOS.
-It can be displayed by ``dhcp-relay-agg-counters``. These counters can be reset by typing ``dhcp-relay-agg-counters reset``.
+
+It can be displayed by ``dhcp-relay-agg-counters``. These counters can be reset
+by typing ``dhcp-relay-agg-counters reset``.
 
 .. code-block:: console
 
@@ -269,26 +313,47 @@
 Indirect client support
 ^^^^^^^^^^^^^^^^^^^^^^^
 DHCP relay can support hosts which do not directly connect to Trellis fabric.
-These hosts usually connected to another LDRA, the LDRA will forward DHCP packet to/from Trellis network.
 
-For **DHCPv4**, packets from the LDRA includes a valid DHCP relay agent option (option 82).
-DHCP Relay application checks relay agent option and determine the DHCP packet comes from direct or indirect host.
+These hosts usually connected to another LDRA, the LDRA will forward DHCP
+packet to/from Trellis network.
+
+For **DHCPv4**, packets from the LDRA includes a valid DHCP relay agent option
+(option 82).
+
+DHCP Relay application checks relay agent option and determine the DHCP packet
+comes from direct or indirect host.
 
 .. image:: ../images/config-dhcp-indirect.jpg
 
-ONOS uses circuit id option in relay agent option with specific format if DHCP packet comes without relay agent option, the format of circuit will be: ``ConnectPoint:VlanId``
-For example, the DHCP request/discover packet comes from ``of:000000000000001/1`` with ``VLAN 100``, the circuit ONOS put will be ``of:000000000000001/1:100`` and send DHCP packet to DHCP server.
-Indirect host won't put into host store. DHCP relay app will put IP address of indirect host to the route store, and use IP address of relay agent as next hop.
+ONOS uses circuit id option in relay agent option with specific format if DHCP
+packet comes without relay agent option, the format of circuit will be:
+``ConnectPoint:VlanId``
+
+For example, the DHCP request/discover packet comes from
+``of:000000000000001/1`` with ``VLAN 100``, the circuit ONOS put will be
+``of:000000000000001/1:100`` and send DHCP packet to DHCP server.
+
+Indirect host won't put into host store. DHCP relay app will put IP address of
+indirect host to the route store, and use IP address of relay agent as next
+hop.
 
 **DHCPv6** clients will be handled similar to DHCPv4.
-One major difference is that DHCPv6 supports ``RELAY-FORWARD`` message type and ``InterfaceId`` option natively, so we utilize those fields to encode information.
 
+One major difference is that DHCPv6 supports ``RELAY-FORWARD`` message type and
+``InterfaceId`` option natively, so we utilize those fields to encode
+information.
 
 Overwrite relay agent IP
 ^^^^^^^^^^^^^^^^^^^^^^^^
-The DHCP relay can overwrite the relay agent address (``giaddr`` in **DHCPv4**, ``link-addr`` in **DHCPv6**) in DHCP message for different device.
-If ``relayAgentIps`` is configured, the app will overwrite ``giaddr`` or ``link-addr`` before it forward the DHCP message to the server.
+
+The DHCP relay can overwrite the relay agent address (``giaddr`` in **DHCPv4**,
+``link-addr`` in **DHCPv6**) in DHCP message for different device.
+
+If ``relayAgentIps`` is configured, the app will overwrite ``giaddr`` or
+``link-addr`` before it forward the DHCP message to the server.
+
 Otherwise, it will retain the original relay agent IP.
+
 An example configuration is shown below:
 
 .. code-block:: json
@@ -318,8 +383,13 @@
 
 Configure multiple servers
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
-DHCP server HA can be achieved by specifying additional server configuration objects.
-Client initiated packets like ``SOLICIT`` or ``REBIND`` shall be replicated and sent to all server objects.
+
+DHCP server HA can be achieved by specifying additional server configuration
+objects.
+
+Client initiated packets like ``SOLICIT`` or ``REBIND`` shall be replicated and
+sent to all server objects.
+
 Below is an example of multiple server configuration:
 
 .. code-block:: json
@@ -402,20 +472,28 @@
     }
 
 - ``dhcpServerConnectPoint``: represent the location of DHCP server
+
 - ``serverIps``: IP address of the DHCP server, contains at least one IP address of DHCP server.
   IP address can be IPv4 or IPv6 for different version of DHCP.
   Will use first address if multiple IPv4 or IPv6 address configured.
-- ``gatewayIps``: Optional. Should be configured if the DHCP server is not directly connected to the Trellis network
-  . It tells which gateway we need to send to reach the server.
+
+- ``gatewayIps``: Optional. Should be configured if the DHCP server is not
+  directly connected to the Trellis network. It tells which gateway we need to
+  send to reach the server.
 
 .. note::
-    - If ``indirect`` server configuration is not configured, the app will use ``default`` configuration for all cases.
+    - If ``indirect`` server configuration is not configured, the app will use
+      ``default`` configuration for all cases.
 
 
 Ignoring DHCP relay on a particular VLAN
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-In some cases, it may be necessary to avoid punting DHCP packets to the controller, and letting them be forwarded normally through the data plane.
-In such cases, the DHCP relay application can be configured to avoid punting DHCP packets on a particular VLAN on a particular switch.
+
+In some cases, it may be necessary to avoid punting DHCP packets to the
+controller, and letting them be forwarded normally through the data plane.
+
+In such cases, the DHCP relay application can be configured to avoid punting
+DHCP packets on a particular VLAN on a particular switch.
 
 .. code-block:: json
 
@@ -430,8 +508,8 @@
       }
     }
 
-In the example shown above, DHCP packets on vlan 24 are not punted to the controller from switches of:205 and of:206
-
+In the example shown above, DHCP packets on vlan 24 are not punted to the
+controller from switches of:205 and of:206
 
 DHCPv6 Prefix Delegation (PD) Pushing
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -439,8 +517,12 @@
 .. note::
     This feature requires both ``dhcprelay`` and ``fpm`` apps to be activated
 
-PD pushing allows IPv6 prefixes from DhcpRelay to be sent over the FPM connection to Quagga where they will be configured as a static route.
-Prior to PD Pushing, the FPM connection was only used by Quagga in one direction to push routes to FPM.  PD pushing is disabled by default in DHCP Relay and FPM.
+PD pushing allows IPv6 prefixes from DhcpRelay to be sent over the FPM
+connection to Quagga where they will be configured as a static route.
+
+Prior to PD Pushing, the FPM connection was only used by Quagga in one
+direction to push routes to FPM.  PD pushing is disabled by default in DHCP
+Relay and FPM.
 
 To enable in DHCP relay:
 
@@ -454,9 +536,16 @@
 
     onos> dhcp-fpm-routes
 
-When PD pushing is enabled in FPM, by default the next-hop to be used for all prefixes pushed to Quagga will be retrieved from the first interface with ``RUR`` in the name in ONOS.
-Next-hop may also be configured using FPM component config. This will override a ``RUR`` interface if present.
-If there is no interface with ``RUR`` in the name and the next-hop is not configured, no prefixes can be pushed to Quagga even if PD pushing is enabled. For DhcpRelay, only the IPv6 next-hop is needed.
+When PD pushing is enabled in FPM, by default the next-hop to be used for all
+prefixes pushed to Quagga will be retrieved from the first interface with
+``RUR`` in the name in ONOS.
+
+Next-hop may also be configured using FPM component config. This will override
+a ``RUR`` interface if present.
+
+If there is no interface with ``RUR`` in the name and the next-hop is not
+configured, no prefixes can be pushed to Quagga even if PD pushing is enabled.
+For DhcpRelay, only the IPv6 next-hop is needed.
 
 To enable in FPM:
 
@@ -482,12 +571,17 @@
 .. note::
     Quagga requires a patch to be able to receive Netlink Messages from FPM.
 
-
 Clean up expired address and PD prefix
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-DHCPv6 relay cleans up stale IP address and pd prefix based on timer whose default interval is 24 hours (24 * 3600 secs = 86400 secs).
-If the preferred life time of ip address or pd prefix exceeds 1/2 of poll interval, they will be removed from ONOS.
-The poll interval can be modified by ``cfg set org.onosproject.dhcprelay.DhcpRelayManager dhcpPollInterval <newVal>``
+
+DHCPv6 relay cleans up stale IP address and pd prefix based on timer whose
+default interval is 24 hours (24 * 3600 secs = 86400 secs).
+
+If the preferred life time of ip address or pd prefix exceeds 1/2 of poll
+interval, they will be removed from ONOS.
+
+The poll interval can be modified by ``cfg set
+org.onosproject.dhcprelay.DhcpRelayManager dhcpPollInterval <newVal>``
 
 .. code-block:: console
 
@@ -504,13 +598,15 @@
 
 Alternative: Configure static IP
 --------------------------------
-Although we strongly recommend to use `DHCP Relay`_ for IP assignment,
-it is also possible to statically configure the IP address and route on the host.
+
+Although we strongly recommend to use `DHCP Relay`_ for IP assignment, it is
+also possible to statically configure the IP address and route on the host.
 
 1. **Configure the IP address and subnet mask**
 
-   Make sure the IP address and the subnet mask on the fabric network interface of the host is consistent with
-   the information in the Network Configuration section. For example, you can run
+   Make sure the IP address and the subnet mask on the fabric network interface
+   of the host is consistent with the information in the Network Configuration
+   section. For example, you can run
 
    .. code-block:: console
 
@@ -518,8 +614,8 @@
 
 2. **Configure the default route**
 
-   Make sure you change the default route of the host to the interface IP of the leaf switch it connects to.
-   For example, you can run
+   Make sure you change the default route of the host to the interface IP of
+   the leaf switch it connects to.  For example, you can run
 
    .. code-block:: console
 
@@ -531,9 +627,13 @@
 
 3. **Trigger host learning**
 
-   We need to let ONOS learn the host in order to program corresponding flows and groups.
+   We need to let ONOS learn the host in order to program corresponding flows
+   and groups.
+
    This is automatically done as part of the DHCP process.
-   However, we need to manually triggers it by sending an ARP or ND packet if the host is configured to use static IP.
+
+   However, we need to manually triggers it by sending an ARP or ND packet if
+   the host is configured to use static IP.
 
    .. code-block:: console
 
@@ -543,7 +643,6 @@
 
        # ndsend ${HOST_IP} ${INTF}
 
-
 Reference
 ---------
 - https://www.cisco.com/c/en/us/support/docs/security/adaptive-security-appliance-asa-software/116265-configure-product-00.html
diff --git a/configuration/dual-homing.rst b/configuration/dual-homing.rst
index 3e5f729..318dc02 100644
--- a/configuration/dual-homing.rst
+++ b/configuration/dual-homing.rst
@@ -8,31 +8,36 @@
 
 The dual-homing feature includes several sub components
 
-- **Use of "paired" ToRs**: Each rack of compute nodes have exactly two Top-of-Rack switches (ToRs),
-  that are linked to each other via a single link - such a link is referred to as a **pair link**.
-  This pairing should NOT be omitted.
-  Currently there is support for only a single link between paired ToRs.
-  In future releases, we may include dual pair links.
-  Note that the pair link is only used in failure scenarios, and not in normal operation.
+- **Use of "paired" ToRs**: Each rack of compute nodes have exactly two
+  Top-of-Rack switches (ToRs), that are linked to each other via a single link
+  - such a link is referred to as a **pair link**.  This pairing should NOT be
+  omitted.
 
-- **Dual-homed servers (compute-nodes)**: Each server is connected to both ToRs.
-  The links to the paired ToRs are (Linux) bonded
+  Currently there is support for only a single link between paired ToRs.  In
+  future releases, we may include dual pair links.  Note that the pair link is
+  only used in failure scenarios, and not in normal operation.
 
-- **Dual-homed upstream routers**: The upstream routers MUST be connected to the two ToRs that are part of a leaf-pair.
-  You cannot connect them to leafs that are not paired. This feature also requires two Quagga instances.
+- **Dual-homed servers (compute-nodes)**: Each server is connected to both
+  ToRs.  The links to the paired ToRs are (Linux) bonded
+
+- **Dual-homed upstream routers**: The upstream routers MUST be connected to
+  the two ToRs that are part of a leaf-pair.  You cannot connect them to leafs
+  that are not paired. This feature also requires two Quagga instances.
 
 - **Dual-homed access devices**. This component will be added in the future.
 
 Paired ToRs
 -----------
-The reasoning behind two ToR (leaf) switches is simple.
-If you only have a single ToR switch, and you lose it, the entire rack goes down.
-Using two ToR switches increases your odds for continued connectivity for dual homed servers.
-The reasoning behind pairing the two ToR switches is more involved, as is explained in the Usage section below.
+The reasoning behind two ToR (leaf) switches is simple.  If you only have a
+single ToR switch, and you lose it, the entire rack goes down.  Using two ToR
+switches increases your odds for continued connectivity for dual homed servers.
+The reasoning behind pairing the two ToR switches is more involved, as is
+explained in the Usage section below.
 
 Configure pair ToRs
 ^^^^^^^^^^^^^^^^^^^
-Configuring paired-ToRs involves device configuration. Assume switches of:205 and of:206 are paired ToRs.
+Configuring paired-ToRs involves device configuration. Assume switches of:205
+and of:206 are paired ToRs.
 
 .. code-block:: json
 
@@ -71,15 +76,21 @@
 
 There are two new pieces of device configuration.
 
-Each device in the ToR pair needs to specify the **deviceId of the leaf it is paired to**, in the ``pairDeviceId`` field.
-For example, in of:205 configuration the pairDeviceid is specified as of:206, and similarly in of:206 configuration the pairDeviceId is of:205
-Each device in the ToR pair needs to specify the **port on the device used for the pair link** in the ``pairLocalPort`` field.
-For example, the pair link in the config above show that port 20 on of:205 is connected to port 30 on of:206.
+Each device in the ToR pair needs to specify the **deviceId of the leaf it is
+paired to**, in the ``pairDeviceId`` field.  For example, in ``of:205``
+configuration the ``pairDeviceId`` is specified as ``of:206``, and similarly in ``of:206``
+configuration the ``pairDeviceId`` is ``of:205``. Each device in the ToR pair needs to
+specify the **port on the device used for the pair link** in the
+``pairLocalPort`` field.  For example, the pair link in the config above show
+that port 20 on of:205 is connected to port 30 on of:206.
 
-In addition, there is one crucial piece of config that needs to **match for both ToRs** – the ``routerMac`` address.
-The paired-ToRs MUST have the same routerMac - in the example above, they both have identical 00:00:02:05:00:01 routerMacs.
+In addition, there is one crucial piece of config that needs to **match for
+both ToRs** – the ``routerMac`` address.  The paired-ToRs MUST have the same
+routerMac - in the example above, they both have identical 00:00:02:05:00:01
+routerMacs.
 
-All other fields are the same as before, as explained in :doc:`Device Configuration <device-config>` section.
+All other fields are the same as before, as explained in :doc:`Device
+Configuration <device-config>` section.
 
 
 Usage of pair link
@@ -90,19 +101,26 @@
 
 Dual-Homed Servers
 ------------------
+
 There are a number of things to note when connecting dual-homed servers to paired-ToRs.
 
-- The switch ports on the two ToRs have to be configured the same way, when connecting a dual-homed server to the two ToRs.
+- The switch ports on the two ToRs have to be configured the same way, when
+  connecting a dual-homed server to the two ToRs.
+
 - The server ports have to be Linux-bonded in a particular mode.
 
 Configure Switch Ports
 ^^^^^^^^^^^^^^^^^^^^^^
-The way to configure ports are similar as described in :doc:`Bridging and Unicast <bridging-unicast>`.
-However, there are a couple of things to note.
 
-**First**, dual-homed servers should have the **identical configuration on each switch port they connect to on the ToR pairs**.
-The example below shows that the ``vlans`` and ``ips`` configured are the same on both switch ports ``of:205/12`` and ``of:206/29``.
-They are both configured to be access ports in ``VLAN 20``, the subnet ``10.0.2.0/24`` is assigned to these ports, and the gateway-IP is ``10.0.2.254/32``.
+The way to configure ports are similar as described in :doc:`Bridging and
+Unicast <bridging-unicast>`.  However, there are a couple of things to note.
+
+**First**, dual-homed servers should have the **identical configuration on each
+switch port they connect to on the ToR pairs**.  The example below shows that
+the ``vlans`` and ``ips`` configured are the same on both switch ports
+``of:205/12`` and ``of:206/29``.  They are both configured to be access ports
+in ``VLAN 20``, the subnet ``10.0.2.0/24`` is assigned to these ports, and the
+gateway-IP is ``10.0.2.254/32``.
 
 .. code-block:: json
 
@@ -125,17 +143,24 @@
       }
     }
 
-It is worth noting the meaning behind the configuration above from a routing perspective.
-Simply put, by configuring the same subnets on these switch ports, the fabric now believes that the entire subnet ``10.0.2.0/24`` is reachable by BOTH ToR switches ``of:205`` and ``of:206``.
+It is worth noting the meaning behind the configuration above from a routing
+perspective.  Simply put, by configuring the same subnets on these switch
+ports, the fabric now believes that the entire subnet ``10.0.2.0/24`` is
+reachable by BOTH ToR switches ``of:205`` and ``of:206``.
 
 .. caution::
-    Configuring different VLANs, or different subnets, or mismatches like "vlan-untagged" in one switch port and "vlan-tagged" in the corresponding switch port facing the dual-homed server, will result in incorrect behavior.
+    Configuring different VLANs, or different subnets, or mismatches like
+    "vlan-untagged" in one switch port and "vlan-tagged" in the corresponding
+    switch port facing the dual-homed server, will result in incorrect
+    behavior.
 
-**Second**, we need to configure the **pair link ports on both ToR switches to be trunk (vlan-tagged) ports that contains all dual-homed VLANs and subnets**.
-This is an extra piece of configuration, the need for which will be removed in future releases.
-In the example above, a dual-homed server connects to the ToR pair on port 12 on of:205 and port 29 on of:206.
-Assume that the pair link between the two ToRs is connected to port 5 of both of:205 and of:206.
-The config for these switch ports is shown below:
+**Second**, we need to configure the **pair link ports on both ToR switches to
+be trunk (vlan-tagged) ports that contains all dual-homed VLANs and subnets**.
+This is an extra piece of configuration, the need for which will be removed in
+future releases.  In the example above, a dual-homed server connects to the ToR
+pair on port 12 on of:205 and port 29 on of:206.  Assume that the pair link
+between the two ToRs is connected to port 5 of both of:205 and of:206.  The
+config for these switch ports is shown below:
 
 .. code-block:: json
 
@@ -159,13 +184,18 @@
     }
 
 .. note::
-    Even though the ports ``of:205/12`` and ``of:206/`` facing the dual-homed server are configured as ``vlan-untagged``,
-    the same vlan MUST be configured as ``vlan-tagged`` on the pair-ports.
-    If additional subnets and VLANs are configured facing other dual-homed servers, they need to be similarly added to the ``ips`` and ``vlan-tagged`` arrays in the pair port config.
+    Even though the ports ``of:205/12`` and ``of:206/`` facing the dual-homed
+    server are configured as ``vlan-untagged``, the same vlan MUST be
+    configured as ``vlan-tagged`` on the pair-ports.
+
+    If additional subnets and VLANs are configured facing other dual-homed
+    servers, they need to be similarly added to the ``ips`` and ``vlan-tagged``
+    arrays in the pair port config.
 
 
 Configure Servers
 ^^^^^^^^^^^^^^^^^
+
 Assuming the interfaces we are going to use for bonding are ``eth1`` and ``eth2``.
 
 - Bring down interfaces
@@ -235,19 +265,24 @@
 .. caution::
     **Dual-homed host should not be statically configured.**
 
-    Currently in ONOS, configured hosts are not updated when the connectPoint is lost.
-    This is not a problem with single-homed hosts because there is no other way to reach them anyway if their connectPoint goes down.
-    But in dual-homed scenarios, the controller should take corrective action if one of the connectPoints go down –
-    the trigger for this event does not happen when the dual-homed host's connect points are configured (not discovered).
+    Currently in ONOS, configured hosts are not updated when the connectPoint
+    is lost.  This is not a problem with single-homed hosts because there is no
+    other way to reach them anyway if their connectPoint goes down.  But in
+    dual-homed scenarios, the controller should take corrective action if one
+    of the connectPoints go down – the trigger for this event does not happen
+    when the dual-homed host's connect points are configured (not discovered).
 
 .. note::
-    We also support static routes with dual-homed next hop.
-    The way to configure it is exactly the same as regular single-homed next hop, as described in :doc:`External Connectivity <external-connectivity>`.
+    We also support static routes with dual-homed next hop.  The way to
+    configure it is exactly the same as regular single-homed next hop, as
+    described in :doc:`External Connectivity <external-connectivity>`.
 
-    ONOS will automatically recognize when the next-hop IP resolves to a dual-homed host and program both switches (the host connects to) accordingly.
+    ONOS will automatically recognize when the next-hop IP resolves to a
+    dual-homed host and program both switches (the host connects to)
+    accordingly.
 
-    The failure recovery mechanism for dual-homed hosts also applies to static routes that point to the host as their next hop.
-
+    The failure recovery mechanism for dual-homed hosts also applies to static
+    routes that point to the host as their next hop.
 
 Dual External Routers
 ---------------------
@@ -257,22 +292,25 @@
 .. image:: ../images/config-dh-vr-logical.png
     :width: 200px
 
-In addition to what we describe in :doc:`External Connectivity <external-connectivity>`,
-Trellis also supports dual external routers, which view the Trellis fabric as 2 individual routers, as shown above.
+In addition to what we describe in :doc:`External Connectivity
+<external-connectivity>`, Trellis also supports dual external routers, which
+view the Trellis fabric as 2 individual routers, as shown above.
 
 As before the vRouter control plane is implemented as a combination of Quagga,
-which peers with the upstream routers, and ONOS which listens to Quagga (via FPM) and programs the underlying fabric.
-**In dual-router scenarios, there are two instances of Quagga required**.
+which peers with the upstream routers, and ONOS which listens to Quagga (via
+FPM) and programs the underlying fabric.  **In dual-router scenarios, there are
+two instances of Quagga required**.
 
-As before the hardware fabric serves as the data-plane of vRouter.
-In dual-router scenarios, the **external routers MUST be connected to paired-ToRs**.
-
+As before the hardware fabric serves as the data-plane of vRouter.  In
+dual-router scenarios, the **external routers MUST be connected to
+paired-ToRs**.
 
 ToR connects to one upstream
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Lets consider the simpler case where the external routers are each connected to a single leaf in a ToR pair.
-The figure on the left below shows the logical view. The figure on the right shows the physical connectivity.
+Lets consider the simpler case where the external routers are each connected to
+a single leaf in a ToR pair.  The figure on the left below shows the logical
+view. The figure on the right shows the physical connectivity.
 
 .. image:: ../images/config-dh-vr-logical-simple.png
     :width: 200px
@@ -280,19 +318,22 @@
 .. image:: ../images/config-dh-vr-physical-simple.png
     :width: 400px
 
-One of the upstream routers is connected to ``of:205`` and the other is connected to ``of:206``.
-Note that ``of:205`` and ``of:206`` are paired ToRs.
+One of the upstream routers is connected to ``of:205`` and the other is
+connected to ``of:206``.  Note that ``of:205`` and ``of:206`` are paired ToRs.
 
-The ToRs are connected via a physical port to separate Quagga VMs or containers.
-These Quagga instances can be placed in any compute node. They do not need to be in the same server, and are only shown to be co-located for simplicity.
+The ToRs are connected via a physical port to separate Quagga VMs or
+containers.  These Quagga instances can be placed in any compute node. They do
+not need to be in the same server, and are only shown to be co-located for
+simplicity.
 
-The two Quagga instances do  NOT talk to each other.
-
+The two Quagga instances do NOT talk to each other.
 
 Switch port configuration
 """""""""""""""""""""""""
-The ToRs follow the same rules as single router case described in :doc:`External Connectivity <external-connectivity>`.
-In the example shown above, the switch port config would look like this:
+
+The ToRs follow the same rules as single router case described in
+:doc:`External Connectivity <external-connectivity>`.  In the example shown
+above, the switch port config would look like this:
 
 .. code-block:: json
 
@@ -333,35 +374,51 @@
     }
 
 .. note::
-    In the example shown above, switch ``of:205`` uses ``VLAN 100`` for bridging the peering session between Quagga1 and ExtRouter1,
-    while switch ``of:205`` uses ``VLAN 200`` to do the same for the other peering session.
-    But since these vlans and bridging domains are defined on different switches, the VLAN ids could have been the same.
+    In the example shown above, switch ``of:205`` uses ``VLAN 100`` for
+    bridging the peering session between Quagga1 and ExtRouter1, while switch
+    ``of:205`` uses ``VLAN 200`` to do the same for the other peering session.
+    But since these vlans and bridging domains are defined on different
+    switches, the VLAN ids could have been the same.
 
-    This philosophy is consistent with the fabric use of :doc:`bridging <bridging-unicast>`.
+    This philosophy is consistent with the fabric use of :doc:`bridging
+    <bridging-unicast>`.
 
 
 Quagga configuration
 """"""""""""""""""""
-Configuring Quagga for dual external routers are similar to what we described in :doc:`External Connectivity <external-connectivity>`. However, it is worth noting that:
+Configuring Quagga for dual external routers are similar to what we described
+in :doc:`External Connectivity <external-connectivity>`. However, it is worth
+noting that:
 
-- The two Zebra instances **should point to two different ONOS instances** for their FPM connections.
-  For example Zebra in Quagga1 could point to ONOS instance with ``fpm connection ip 10.6.0.1 port 2620``,
-  while the other Zebra should point to a different ONOS instance with ``fpm connection ip 10.6.0.2 port 2620``.
-  It does not matter which ONOS instances they point to as long as they are different.
-- The two Quagga BGP sessions should appear to come from different routers but still use the same AS number –
-  i.e. the two Quaggas' belong to the same AS, the one used to represent the entire Trellis infrastructure.
-- The two upstream routers can belong to the same or different AS,
-  but these AS numbers should be different from the one used to represent the Trellis AS.
+- The two Zebra instances **should point to two different ONOS instances** for
+  their FPM connections.  For example Zebra in Quagga1 could point to ONOS
+  instance with ``fpm connection ip 10.6.0.1 port 2620``, while the other Zebra
+  should point to a different ONOS instance with ``fpm connection ip 10.6.0.2
+  port 2620``.  It does not matter which ONOS instances they point to as long
+  as they are different.
+
+- The two Quagga BGP sessions should appear to come from different routers but
+  still use the same AS number – i.e. the two Quaggas' belong to the same AS,
+  the one used to represent the entire Trellis infrastructure.
+
+- The two upstream routers can belong to the same or different AS, but these AS
+  numbers should be different from the one used to represent the Trellis AS.
+
 - Typically both Quagga instances advertise the same routes to the upstream.
-  These prefixes belonging to various infrastructure nodes in the deployment should be reachable from either of the leaf switches connected to the upstream routers.
-- The upstream routers may or may not advertise the same routes.
-  Trellis will ensure that traffic directed to a route reachable only one upstream router is directed to the appropriate leaf.
+  These prefixes belonging to various infrastructure nodes in the deployment
+  should be reachable from either of the leaf switches connected to the
+  upstream routers.
 
+- The upstream routers may or may not advertise the same routes.  Trellis will
+  ensure that traffic directed to a route reachable only one upstream router is
+  directed to the appropriate leaf.
 
 ToR connects to both upstream
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Now lets consider the **more-complicated but more fault-tolerant** case of each Quagga instance peering with BOTH external routers.
-Again the logical view is shown on the left and the physical view on the right.
+
+Now lets consider the **more-complicated but more fault-tolerant** case of each
+Quagga instance peering with BOTH external routers.  Again the logical view is
+shown on the left and the physical view on the right.
 
 .. image:: ../images/config-dh-vr-logical.png
     :width: 200px
@@ -379,19 +436,24 @@
 - Quagga instance 2 peers with external router R1 via port 2 on switch of:206
 - Quagga instance 2 peers with external router R2 via port 1 on switch of:206
 
-To distinguish between the two peering sessions in the same physical switch, say of:205,
-the physical ports 1 and 2 need to be configured in **different VLANs and subnets**.
-For example, port 1 on of:205 is (untagged) in VLAN 100, while port 2 is in VLAN 101.
+To distinguish between the two peering sessions in the same physical switch,
+say of:205, the physical ports 1 and 2 need to be configured in **different
+VLANs and subnets**.  For example, port 1 on of:205 is (untagged) in VLAN 100,
+while port 2 is in VLAN 101.
 
-Note that peering for **Quagga1 and R1** happens with IPs in the ``10.0.100.0/29`` subnet,
-and for **Quagga 1 and R2** in the **10.0.101.0/29** subnet.
+Note that peering for **Quagga1 and R1** happens with IPs in the
+``10.0.100.0/29`` subnet, and for **Quagga 1 and R2** in the **10.0.101.0/29**
+subnet.
 
-Furthermore, **pair link** (port 48) on of:205 carries both peering sessions to Quagga1.
-Thus port 48 should now be configured as a **trunk port (vlan-tagged) with both VLANs and both subnets**.
+Furthermore, **pair link** (port 48) on of:205 carries both peering sessions to
+Quagga1.  Thus port 48 should now be configured as a **trunk port (vlan-tagged)
+with both VLANs and both subnets**.
 
-Finally the **Quagga interface** on the VM now needs **sub-interface configuration for each VLAN ID**.
+Finally the **Quagga interface** on the VM now needs **sub-interface
+configuration for each VLAN ID**.
 
-Similar configuration concepts apply to IPv6 as well. Here is a look at the switch port config in ONOS for of:205
+Similar configuration concepts apply to IPv6 as well. Here is a look at the
+switch port config in ONOS for of:205
 
 .. code-block:: json
 
diff --git a/configuration/external-connectivity.rst b/configuration/external-connectivity.rst
index 65fbcf9..abc3884 100644
--- a/configuration/external-connectivity.rst
+++ b/configuration/external-connectivity.rst
@@ -6,23 +6,34 @@
 
 Physical Connectivity
 ^^^^^^^^^^^^^^^^^^^^^
-External routers must be physically connected to one of the fabric leaf switches.
-Currently there is a limitation that the **external/upstream router and the Quagga instance must be connected to the same fabric leaf switch**.
 
-Therefore it is necessary to use an additional front panel port on the leaf-switch (or at least an additional vlan) to connect to the compute node hosting Quagga.
+External routers must be physically connected to one of the fabric leaf
+switches.
+
+Currently there is a limitation that the **external/upstream router and the
+Quagga instance must be connected to the same fabric leaf switch**.
+
+Therefore it is necessary to use an additional front panel port on the
+leaf-switch (or at least an additional vlan) to connect to the compute node
+hosting Quagga.
 
 .. image:: ../images/config-vr-physical.png
 
 Configure vRouter
 ^^^^^^^^^^^^^^^^^
-The operator will need to configure a subnet between the Leaf-switch, the external/upstream router and the Quagga instance.
-There are 3 IP addresses we need to allocate - 1 on the switch port, 1 in Quagga, and 1 on the upstream router.
-This means the peering subnet **cannot be smaller than a /29**.
 
-BGP peering happens between the IP addresses configured on the interfaces in Quagga and the external router.
+The operator will need to configure a subnet between the Leaf-switch, the
+external/upstream router and the Quagga instance. There are 3 IP addresses we
+need to allocate - 1 on the switch port, 1 in Quagga, and 1 on the upstream
+router. This means the peering subnet **cannot be smaller than a /29**.
 
-Routes are advertised by Quagga to the upstream with the next-hop set to the switch port IP address.
-This means that when traffic comes to the fabric leaf switch from outside, the switch is able to distinguish peering traffic from data traffic and treat each appropriately.
+BGP peering happens between the IP addresses configured on the interfaces in
+Quagga and the external router.
+
+Routes are advertised by Quagga to the upstream with the next-hop set to the
+switch port IP address.  This means that when traffic comes to the fabric leaf
+switch from outside, the switch is able to distinguish peering traffic from
+data traffic and treat each appropriately.
 
 The following shows an ONOS interface configuration example:
 
@@ -52,66 +63,88 @@
     }
 
 - ``name``: An arbitrary name string for the interface. Optional.
-- ``ips``: Configure the peering subnet (10.0.1.0/24) and the switch port IP (10.0.1.2).
-  Note that we use the same IP address on both the quagga and upstream interfaces.
-- ``vlan-untagged``: Configure the same VLAN ID on both interfaces.
-  It doesn't matter exactly what the VLAN ID is, but it must be the same on both the Quagga-facing and upstream-facing interfaces.
+
+- ``ips``: Configure the peering subnet (10.0.1.0/24) and the switch port IP
+  (10.0.1.2).  Note that we use the same IP address on both the quagga and
+  upstream interfaces.
+
+- ``vlan-untagged``: Configure the same VLAN ID on both interfaces.  It doesn't
+  matter exactly what the VLAN ID is, but it must be the same on both the
+  Quagga-facing and upstream-facing interfaces.
 
 In this case the peering subnet is ``10.0.1.0/24``.
 The upstream router is using the ``10.0.1.1`` address.
 Quagga is assigned ``10.0.1.3``, which is the address used for peering.
-The upstream router needs to be configured with ``10.0.1.3`` as its BGP neighbor, and the BGP peering will be established between ``10.0.1.1`` and ``10.0.1.3``. The ``10.0.1.2`` address is used by the fabric switch and for the next-hop for routes advertised by Quagga.
 
-Of course you are not obliged to use ``10.0.1.0/24``, you should use a subnet that makes sense for your peering environment.
+The upstream router needs to be configured with ``10.0.1.3`` as its BGP
+neighbor, and the BGP peering will be established between ``10.0.1.1`` and
+``10.0.1.3``. The ``10.0.1.2`` address is used by the fabric switch and for the
+next-hop for routes advertised by Quagga.
+
+Of course you are not obliged to use ``10.0.1.0/24``, you should use a subnet
+that makes sense for your peering environment.
 
 .. note::
-    This configuration will set up an L2 link between the two fabric switch ports, over which the Quagga and external router can communicate.
-    Both Quagga and the upstream router will receive untagged packets
-    (i.e they will never see packets with vlanId 4000, which is used inside the leaf switch to establish a bridging domain).
+    This configuration will set up an L2 link between the two fabric switch
+    ports, over which the Quagga and external router can communicate.
 
-    If you need a vlan-tag in the compute node to distinguish the traffic going to Quagga, you can change the vlan assignment on the switch port "of:0000000000000001/2" to be vlan-tagged instead of vlan-untagged.
+    Both Quagga and the upstream router will receive untagged packets (i.e they
+    will never see packets with vlanId 4000, which is used inside the leaf
+    switch to establish a bridging domain).
+
+    If you need a vlan-tag in the compute node to distinguish the traffic going
+    to Quagga, you can change the vlan assignment on the switch port
+    "of:0000000000000001/2" to be vlan-tagged instead of vlan-untagged.
 
 Deploy the Quagga Docker Image
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Trellis uses a slightly modified version of Quagga, so the easiest way to deploy this is to use the provided docker image.
+
+Trellis uses a slightly modified version of Quagga, so the easiest way to
+deploy this is to use the provided docker image.
 
 .. code-block:: console
 
     $ docker pull opencord/quagga
 
-We also need to download the **pipework** tool which will be used to connect the docker image to the physical interface that we set aside earlier.
+We also need to download the **pipework** tool which will be used to connect
+the docker image to the physical interface that we set aside earlier.
 
 .. code-block:: console
 
     $ wget https://raw.githubusercontent.com/jpetazzo/pipework/master/pipework
     $ chmod +x pipework
 
-Create a directory for your Quagga configuration files, and create a bgpd.conf and zebra.conf in there.
-This folder is going to be mounted into the Quagga container.
-More on configuring Quagga later.
+Create a directory for your Quagga configuration files, and create a bgpd.conf
+and zebra.conf in there.  This folder is going to be mounted into the Quagga
+container.  More on configuring Quagga later.
 
 .. code-block:: console
 
     $ mkdir configs
     $ touch zebra.conf bgpd.conf
 
-Now run the docker image (make sure the path the config directory matches what is on your system):
+Now run the docker image (make sure the path the config directory matches what
+is on your system):
 
 .. code-block:: console
 
     $ sudo docker run --privileged -d -v configs:/etc/quagga -n quagga opencord/quagga
 
-Finally, we can use the pipework tool to add the physical interface into the container so that Quagga can talk out over the fabric:
+Finally, we can use the pipework tool to add the physical interface into the
+container so that Quagga can talk out over the fabric:
 
 .. code-block:: console
 
     $ sudo ./pipework mlx1 -i eth1 quagga 10.0.1.3/24
 
-This will add host interface ``mlx1`` to the container with name ``quagga`` with interface name ``eth1`` inside the container.
-The newly added interface will have the IP ``10.0.1.3``.
-This IP address should be the peering subnet address that you want to assign to Quagga.
+This will add host interface ``mlx1`` to the container with name ``quagga``
+with interface name ``eth1`` inside the container.  The newly added interface
+will have the IP ``10.0.1.3``.  This IP address should be the peering subnet
+address that you want to assign to Quagga.
 
-If you need to change anything about the container (for example if you change the Quagga configuration) you can remove the original container and run a new one:
+If you need to change anything about the container (for example if you change
+the Quagga configuration) you can remove the original container and run a new
+one:
 
 .. code-block:: console
 
@@ -120,19 +153,28 @@
 
 Configure Quagga
 ^^^^^^^^^^^^^^^^
-At this point Quagga should have IP connectivity to the external routers, and it should be able to ping them on the peering subnet.
+
+At this point Quagga should have IP connectivity to the external routers, and
+it should be able to ping them on the peering subnet.
 
 Now Quagga and the upstream routers can be configured to peer with one another.
-This configuration of Quagga is going to be highly dependent on the configuration of the upstream network, so it won't be possible to give comprehensive configuration examples here.
-It is recommended to consult the Quagga documentation for exhaustive information on Quagga's capabilities and configuration.
-Here I will attempt to provide a few basic examples of Quagga configuration to get you started.
-You'll have to enhance these with the features and functions that are needed in your network.
+This configuration of Quagga is going to be highly dependent on the
+configuration of the upstream network, so it won't be possible to give
+comprehensive configuration examples here.
+
+It is recommended to consult the Quagga documentation for exhaustive
+information on Quagga's capabilities and configuration.  Here I will attempt to
+provide a few basic examples of Quagga configuration to get you started.
+You'll have to enhance these with the features and functions that are needed in
+your network.
 
 Zebra configuration
 """""""""""""""""""
-Regardless of which routing protocols you are using in your network,
-it is important to configure Zebra's FPM connection to send routes to the FPM app running on ONOS.
-This feature was enabled by the patch that was applied earlier when we installed Quagga.
+
+Regardless of which routing protocols you are using in your network, it is
+important to configure Zebra's FPM connection to send routes to the FPM app
+running on ONOS.  This feature was enabled by the patch that was applied
+earlier when we installed Quagga.
 
 A minimal Zebra configuration might look like this:
 
@@ -145,12 +187,15 @@
     fpm connection ip 10.6.0.1 port 2620
     !
 
-The FPM connection IP address is the IP address of **one of the onos cluster instances** - does not matter which one.
-If you have other configuration that needs to go in zebra.conf you should add that here as well.
+The FPM connection IP address is the IP address of **one of the onos cluster
+instances** - does not matter which one.  If you have other configuration that
+needs to go in zebra.conf you should add that here as well.
 
 BGP configuration
 """""""""""""""""
-An example simple BGP configuration for peering with one BGP peer might look like this:
+
+An example simple BGP configuration for peering with one BGP peer might look
+like this:
 
 .. code-block:: text
 
@@ -173,16 +218,22 @@
       neighbor 10.0.1.1 route-map NEXTHOP out
       !
 
-This configuration peers with one upstream router ``10.0.1.1`` and advertises one route ``192.168.0.0/16``.
-Note that Quagga (and as a result Trellis) is in a different AS ``65535`` from the upstream router AS ``65540``,
-as we are using E-BGP for this connectivity.
+This configuration peers with one upstream router ``10.0.1.1`` and advertises
+one route ``192.168.0.0/16``.  Note that Quagga (and as a result Trellis) is in
+a different AS ``65535`` from the upstream router AS ``65540``, as we are using
+E-BGP for this connectivity.
 
 .. note::
-    Pay attention to the configuration to rewrite the next hop of routes that are advertised to the upstream router.
-    A ``route-map`` is used to set the next hop of advertised routes to ``10.0.1.2``,
-    which is **different from the address that Quagga is using to peer with the external router**.
-    As mentioned above, it is important that this rewriting is done correctly so that the fabric switch is able to **distinguish data plane and control plane** traffic.
+    Pay attention to the configuration to rewrite the next hop of routes that
+    are advertised to the upstream router.
 
+    A ``route-map`` is used to set the next hop of advertised routes to
+    ``10.0.1.2``, which is **different from the address that Quagga is using to
+    peer with the external router**.
+
+    As mentioned above, it is important that this rewriting is done correctly
+    so that the fabric switch is able to **distinguish data plane and control
+    plane** traffic.
 
 Route service and static route
 ------------------------------
@@ -192,8 +243,11 @@
 
 View routes
 """""""""""
+
 This will show routes from all sources, including static and dynamic routes.
-The example below shows routes learned from the upstream router (Source: FPM) and routes configured manually (Source: STATIC)
+
+The example below shows routes learned from the upstream router (Source: FPM)
+and routes configured manually (Source: STATIC)
 
 .. code-block:: text
 
@@ -287,7 +341,8 @@
 
 Verify routes
 ^^^^^^^^^^^^^
-Check the leaf switches that the route (e.g. 1.1.0.0/18) has been programmed in the routing table (table 30).
+Check the leaf switches that the route (e.g. 1.1.0.0/18) has been programmed in
+the routing table (table 30).
 
 .. code-block:: console
 
@@ -299,9 +354,10 @@
 
 Notes about next hops
 ^^^^^^^^^^^^^^^^^^^^^
-The next hop of a route should be resolvable to a MAC address that is known to ONOS.
-Typically the next hop is a server interface that is known to ONOS as a host learned via ARP or DHCP.
-If you are not sure, check the ``hosts`` command on the ONOS CLI.
+The next hop of a route should be resolvable to a MAC address that is known to
+ONOS.  Typically the next hop is a server interface that is known to ONOS as a
+host learned via ARP or DHCP.  If you are not sure, check the ``hosts`` command
+on the ONOS CLI.
 
 .. code-block:: console
 
@@ -311,17 +367,24 @@
     id=B2:A4:E2:72:D1:91/None, mac=B2:A4:E2:72:D1:91, location=of:0000000000000204/16, vlan=None, ip(s)=[10.0.1.20], configured=false
     id=EE:22:F7:BE:86:50/None, mac=EE:22:F7:BE:86:50, location=of:0000000000000205/16, vlan=None, ip(s)=[10.0.2.15], configured=false
 
-If the next hop has not been resolved for any reason, it would be necessary to configure the next hop as a host (/32 prefix) together with MAC address and location.
-Learn more about how to configure a host using `Network Config Host Provider <https://wiki.onosproject.org/display/ONOS/Network+Config+Host+Provider>`_
+If the next hop has not been resolved for any reason, it would be necessary to
+configure the next hop as a host (/32 prefix) together with MAC address and
+location.
 
-Finally note that if you are configuring routes manually/statically and they are publicly routable IPs that should be reachable from “outside”, you would need to configure Quagga to advertise them upstream.
+Learn more about how to configure a host using `Network Config Host Provider
+<https://wiki.onosproject.org/display/ONOS/Network+Config+Host+Provider>`_
+
+Finally note that if you are configuring routes manually/statically and they
+are publicly routable IPs that should be reachable from “outside”, you would
+need to configure Quagga to advertise them upstream.
 
 
 Route blackhole
 ---------------
-The blackhole consists of a rule on table 30 on every edge device on the fabric.
-The Table 30 rule matches on a given IP address and mask and has nothing but a clearDeferred action, practically dropping the packet.
-Every IP we want to blackhole will have it's own rule in every edge switch.
+The blackhole consists of a rule on table 30 on every edge device on the
+fabric.  The Table 30 rule matches on a given IP address and mask and has
+nothing but a clearDeferred action, practically dropping the packet.  Every IP
+we want to blackhole will have it's own rule in every edge switch.
 
 An example of such rule is:
 
@@ -347,8 +410,10 @@
 
 Ignore certain FPM peer
 -----------------------
-The ``FpmConnectionInfo`` consists a new flag ``acceptRoutes``, indicating whether we want to accept or discard the routes advertised by certain FPM peer.
-Per current requirement, we always have the ``acceptRoutes`` flag set to ``true`` by default, meaning that we will accept routes from all peers.
+The ``FpmConnectionInfo`` consists a new flag ``acceptRoutes``, indicating
+whether we want to accept or discard the routes advertised by certain FPM peer.
+Per current requirement, we always have the ``acceptRoutes`` flag set to
+``true`` by default, meaning that we will accept routes from all peers.
 
 We can updated the flag using REST API and CLI command as below
 
@@ -360,9 +425,6 @@
 .. image:: ../images/config-fpm-rest.png
     :width: 900px
 
-
-
-
 CLI
 ^^^
 
diff --git a/configuration/multicast.rst b/configuration/multicast.rst
index a33fe3c..1d435b0 100644
--- a/configuration/multicast.rst
+++ b/configuration/multicast.rst
@@ -2,8 +2,14 @@
 =========
 
 Trellis supports IP multicast in an classic SDN way.
-**None of the common IP multicast protocols (e.g. IGMP, PIM) is used when calculating the multicast tree internally**.
-Instead, benefiting from SDN, Trellis calculates the multicast tree in a centralized way and program the switches accordingly. Having said that, it doesn't prevent us from using common IP multicast protocols to communicate with externals.
+
+**None of the common IP multicast protocols (e.g. IGMP, PIM) is used when
+calculating the multicast tree internally**.
+
+Instead, benefiting from SDN, Trellis calculates the multicast tree in a
+centralized way and program the switches accordingly. Having said that, it
+doesn't prevent us from using common IP multicast protocols to communicate with
+externals.
 
 Here's a summary of multicast features Trellis supports.
 
@@ -16,19 +22,30 @@
     :width: 1000px
 
 .. note::
-    Dual-homed sinks and multiple sources support comes with major changes in the Multicast Routing subsystem.
-    **Sink and sources are now identified by an ONOS HostId (MAC/VLAN)** and has associated a number of ConnectPoint while in the past we identified the sinks and the sources just using one ConnectPoint.
-    Multicast subsystem listen for Host events and according to them modify properly the ConnectPoint associated to the HostId.
-    In particular, it leverages the Host Location which is a collection of ONOS ConnectPoint where the Host is attached.
-    This information is maintained updated by ONOS thanks to several discovery mechanisms implemented in the Host subsystem.
-    Following image try to summarize the work flow of the Multicast Routing subsystem after the aforementioned changes:
+    Dual-homed sinks and multiple sources support comes with major changes in
+    the Multicast Routing subsystem.
+
+    **Sink and sources are now identified by an ONOS HostId (MAC/VLAN)** and
+    has associated a number of ConnectPoint while in the past we identified the
+    sinks and the sources just using one ConnectPoint.
+
+    Multicast subsystem listen for Host events and according to them modify
+    properly the ConnectPoint associated to the HostId.
+
+    In particular, it leverages the Host Location which is a collection of ONOS
+    ConnectPoint where the Host is attached.  This information is maintained
+    updated by ONOS thanks to several discovery mechanisms implemented in the
+    Host subsystem.  Following image try to summarize the work flow of the
+    Multicast Routing subsystem after the aforementioned changes:
 
     .. image:: ../images/config-mcast-internal.png
         :width: 600px
         :align: center
 
 .. caution::
-  We should avoid using reserved Multicast groups. Please check here for the reserved values: http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xhtml
+    We should avoid using reserved Multicast groups. Please check here for the
+    reserved values:
+    http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xhtml
 
 
 Activate Multicast
@@ -39,7 +56,8 @@
 
     onos> app activate mcast
 
-You can also add ``mcast`` into ``$ONOS_APPS`` environment variable such that it gets started automatically every time.
+You can also add ``mcast`` into ``$ONOS_APPS`` environment variable such that
+it gets started automatically every time.
 
 
 CLI commands
@@ -47,25 +65,35 @@
 
 Creating a route and adding sinks
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-In order to add a new Multicast route, we have to use ``mcast-host-join`` command and we need to provide following information:
+In order to add a new Multicast route, we have to use ``mcast-host-join``
+command and we need to provide following information:
+
 1) **source address**; 2) **group address**; 3) **sources** ; 4) **sinks**.
+
 Here's an example:
 
 .. code-block:: console
 
     onos> mcast-host-join -sAddr * -gAddr 224.0.0.1 -srcs 00:AA:00:00:00:01/None -srcs 00:AA:00:00:00:05/None -sinks 00:AA:00:00:00:03/None -sinks 00:CC:00:00:00:01/None
 
-- ``-sAddr``: we can provide **\* for ASM** or an **IP address for SSM**.
-  At the time being we do not enforce the matching of the -sAddr on the data-plane;
-- ``-gAddr`` specifies Multicast group address
-- ``-srcs`` identifies the source we changed from ConnectPoint to HostId in this release.
-- ``-sinks`` specifies the sinks of the group, we changed from ConnectPoint to HostId in this release.
+- ``-sAddr``: we can provide **\* for ASM** or an **IP address for SSM**
+  At this time being we do not enforce the matching of the ``-sAddr`` on the
+  data plane.
 
+- ``-gAddr`` specifies Multicast group address
+
+- ``-srcs`` identifies the source we changed from ConnectPoint to HostId in
+  this release.
+
+- ``-sinks`` specifies the sinks of the group, we changed from ConnectPoint to
+  HostId in this release.
 
 Removing a sink
 ^^^^^^^^^^^^^^^
-A sink can be removed through ``mcast-sink-delete`` command.
-The major difference is that the sinks to be removed is provided through ``-h`` option.
+
+A sink can be removed through ``mcast-sink-delete`` command.  The major
+difference is that the sinks to be removed is provided through ``-h`` option.
+
 If ``-h`` is not provided the command will issue a route removal.
 
 .. code-block:: console
@@ -75,9 +103,11 @@
 
 Modifying a source
 ^^^^^^^^^^^^^^^^^^
-We also provide a command to modify the sources of a Multicast group.
-In particular ``mcast-source-delete`` allows to modify the source connect points of a source.
-If ``-src`` is not provided, the command will issue a route removal
+
+We also provide a command to modify the sources of a Multicast group.  In
+particular ``mcast-source-delete`` allows to modify the source connect points
+of a source.  If ``-src`` is not provided, the command will issue a route
+removal
 
 .. code-block:: console
 
@@ -109,14 +139,20 @@
 
 REST APIs
 ---------
+
 You can find the REST API documentation at ``http://<ONOS-IP>:8181/onos/v1/docs``.
+
 Please click the drop down list and select Multicast API.
 
 .. image:: ../images/config-mcast-rest.png
 
 We configure and implement multicast routes through the dedicated REST API.
-Some of the APIs are outlined here, you can find complete list in the ONOS docs page.
-The referenced files in these examples can be found in ``$ONOS_ROOT/apps/mcast/web/src/main/resources/jsonExamples``
+
+Some of the APIs are outlined here, you can find complete list in the ONOS docs
+page.
+
+The referenced files in these examples can be found in
+``$ONOS_ROOT/apps/mcast/web/src/main/resources/jsonExamples``
 
 GET operations
 ^^^^^^^^^^^^^^
@@ -246,8 +282,14 @@
     }
 
 - ``group``: IP address of the Multicast Group
-- ``source``: IP address of the Multicast source. If specified (e.g. 10.0.1.1) we will treat this route as SSM (Single Source Multicast), if instead * is used the route will be ASM (Any Source Multicast)
-- ``sources``: Array containing the connect points to which the source is connected to.
-- ``sinks``: Array containing a set of Hosts that we want as sinks of the multicast stream. ONOS will automatically handle the connect points of these hosts if they are single or dual homed.
 
+- ``source``: IP address of the Multicast source. If specified (e.g. 10.0.1.1)
+  we will treat this route as SSM (Single Source Multicast), if instead * is
+  used the route will be ASM (Any Source Multicast)
 
+- ``sources``: Array containing the connect points to which the source is
+  connected to.
+
+- ``sinks``: Array containing a set of Hosts that we want as sinks of the
+  multicast stream. ONOS will automatically handle the connect points of these
+  hosts if they are single or dual homed.
diff --git a/configuration/pseudowire.rst b/configuration/pseudowire.rst
index 60d1ca0..09b3917 100644
--- a/configuration/pseudowire.rst
+++ b/configuration/pseudowire.rst
@@ -1,19 +1,28 @@
 Pseudowire
 ==========
-In Trellis, we assign different subnets to hosts that attach to different edge (leaf) switches.
-These hosts communicate over IP when traversing the spine switches, meaning that the layer-2 header is not preserved across transportation.
-However, in some use cases it is beneficial for hosts that connect to different leaves to be able to talk directly over L2 and also belong to the same IP subnet.
+In Trellis, we assign different subnets to hosts that attach to different edge
+(leaf) switches.  These hosts communicate over IP when traversing the spine
+switches, meaning that the layer-2 header is not preserved across
+transportation.  However, in some use cases it is beneficial for hosts that
+connect to different leaves to be able to talk directly over L2 and also belong
+to the same IP subnet.
+
 We implemented Pseudowire (PW) in Trellis to fulfill this requirement.
 
-Pseudowires create tunnels between different connection points that transport L2 traffic between them.
-Pseudowires can handle single-tagged/double-tagged traffic and are able to modify the VLAN tags in some cases.
+Pseudowires create tunnels between different connection points that transport
+L2 traffic between them.
+
+Pseudowires can handle single-tagged/double-tagged traffic and are able to
+modify the VLAN tags in some cases.
 
 .. note::
   Pseudowires are only supported on OF-DPA hardware switches.
 
 Managing pseudowires via REST
 -----------------------------
+
 You can find the REST API documentation at ``http://${ONOS-IP}:8181/onos/v1/docs``.
+
 Please click the drop down list and select Segment Routing Server.
 
 .. image:: ../images/config-pw-rest.png
@@ -27,9 +36,9 @@
     $ curl --user onos:rocks -X GET -H 'Content-Type:application/json' http://${ONOS-IP}:8181/onos/segmentrouting/pseudowire/ -d@pseudowire.json
     $ curl --user onos:rocks -X DELETE -H 'Content-Type:application/json' http://${ONOS-IP}:8181/onos/segmentrouting/pseudowire/ -d@pseudowire.json
 
-Below is an example configuration for a single pseudowire,
-which transfers L2 double tagged traffic from cp1 to cp2 and also changes the outer VLAN tag of the packets.
-
+Below is an example configuration for a single pseudowire, which transfers L2
+double tagged traffic from cp1 to cp2 and also changes the outer VLAN tag of
+the packets.
 
 .. code-block:: json
 
@@ -47,13 +56,21 @@
     }
 
 - ``cP1``: First connection point of PW
+
 - ``cP2``: Second connection point of PW
-- ``cP1InnerTag / cp1OuterTag``: The expected inner and outer VLAN tags for ``cp1``. If you only want to use a single incoming tag,
-  use the innerTag, and use ``None`` for the outerTag.
+
+- ``cP1InnerTag / cp1OuterTag``: The expected inner and outer VLAN tags for
+  ``cp1``. If you only want to use a single incoming tag, use the innerTag, and
+  use ``None`` for the outerTag.
+
 - ``cP2InnerTag / cp2OuterTag``: The expected inner and outer VLAN tags for ``cp2``.
+
 - ``mode``: Pseudowire mode - RAW and TAGGED. Only RAW mode is supported in Trellis.
+
 - ``sdTag``: Service delimiting tag, only meaningful when in TAGGED mode.
+
 - ``pwLabel``: Unique pseudowire label.
+
 - ``pwId``: ID of the pseudowire.
 
 The REST API also supports bulk addition and removal of pseudowire.
@@ -131,50 +148,76 @@
 
 Type of pseudowires
 -------------------
+
 - **Leaf - Leaf** : As explained above we support leaf - leaf pseudowires.
 
-- **Spine - Leaf** : We further support leaf to spine pseudowires,
-  where one termination point resides in a spine switch rather than a leaf switch.
-  Please note that the encapsulated traffic for these types of pseudowires is carried **tagged** between leaf and spines,
-  the reason for this is due to some hardware limitation. The **reserved transport VLAN is 4093**.
+- **Spine - Leaf** : We further support leaf to spine pseudowires, where one
+  termination point resides in a spine switch rather than a leaf switch.
+  Please note that the encapsulated traffic for these types of pseudowires is
+  carried **tagged** between leaf and spines, the reason for this is due to
+  some hardware limitation. The **reserved transport VLAN is 4093**.
 
 - Multi-stage
 
-  - **Leaf - Spine-1 - Spine-2**: Where Spine-1 and Spine-2 are interconnected between them and are part of distinct topologies.
-  - **Leaf_1 - Spine_1 - Spine_2 - Leaf_2**: Where leaf-1 and leaf-2 are part of different fabric topologies which are interconnected between them between two spines.
+  - **Leaf - Spine-1 - Spine-2**: Where Spine-1 and Spine-2 are interconnected
+    between them and are part of distinct topologies.
+
+  - **Leaf_1 - Spine_1 - Spine_2 - Leaf_2**: Where leaf-1 and leaf-2 are part
+    of different fabric topologies which are interconnected between them
+    between two spines.
 
 
 Common errors
 -------------
-If your pseudowires do not work make sure you have done the following in the host side :
 
-- Disabled VLAN offloading in the VM interfaces and also in the compute node interfaces.
+If your pseudowires do not work make sure you have done the following in the
+host side:
+
+- Disabled VLAN offloading in the VM interfaces and also in the compute node
+  interfaces.
+
 - Set the compute node interfaces and the VM interfaces at promiscuous mode.
-- In general, do the above for all the interfaces and bridges participated in the topology (either in a VM or physical server).
-- Before programming pseudowires make sure that the topology is completely up and running and also the configuration is added to the controller and the fabric is
-  in an operational state.
+
+- In general, do the above for all the interfaces and bridges participated in
+  the topology (either in a VM or physical server).
+
+- Before programming pseudowires make sure that the topology is completely up
+  and running and also the configuration is added to the controller and the
+  fabric is in an operational state.
 
 
 Restrictions
 ------------
-We list now some restrictions of pseudowire support, some of them stem from the implementation while others from switch hardware constraints.
+
+We list now some restrictions of pseudowire support, some of them stem from the
+implementation while others from switch hardware constraints.
 
 - We only support pseudowires with the same type of tagged traffic at each end.
-  For example, if cP1 handles single tagged traffic then cP2 must handle single tagged traffic (same applies for single tagged and double tagged traffic).
-  However, for pseudowires with single tagged traffic we support changing the tag,
-  and for pseudowires with double tagged traffic we support changing the outer tag.
-  We would like to support more use cases, however we are limited by hardware pipeline restrictions.
-  In the future, and if needed, we might address this by using the egress tables of OF-DPA.
-- As of now, we only support RAW mode. We will support also TAGGED mode in the future if needed by any use case.
-  Since, we only support RAW mode the sdTag must always be empty or None.
+  For example, if cP1 handles single tagged traffic then cP2 must handle single
+  tagged traffic (same applies for single tagged and double tagged traffic).
+  However, for pseudowires with single tagged traffic we support changing the
+  tag, and for pseudowires with double tagged traffic we support changing the
+  outer tag.  We would like to support more use cases, however we are limited
+  by hardware pipeline restrictions.  In the future, and if needed, we might
+  address this by using the egress tables of OF-DPA.
 
+- As of now, we only support RAW mode. We will support also TAGGED mode in the
+  future if needed by any use case.  Since, we only support RAW mode the
+  ``sdTag`` must always be empty or None.
 
 Implementation limits
 ---------------------
+
 - **Link failures**: We partially support link failures.
-  Specifically, our PW implementation does not properly handle link failures when the link involved is the one used for pseudowire traffic at the spine switches towards a leaf switch.
-  This is due to an OF-DPA limitation which does not allow the use of MPLS ECMP groups in the spine.
+  Specifically, our PW implementation does not properly handle link failures
+  when the link involved is the one used for pseudowire traffic at the spine
+  switches towards a leaf switch.
+
+  This is due to an OF-DPA limitation which does not allow the use of MPLS ECMP
+  groups in the spine.
+
   We plan to address this in the next release.
 
-- **Device failures**: We do not handle device failures currently, on a device failure please remove and re-install the pseudowire.
-  We will address this soon.
+- **Device failures**: We do not handle device failures currently, on a device
+  failure please remove and re-install the pseudowire.  We will address this
+  soon.
diff --git a/configuration/xconnect.rst b/configuration/xconnect.rst
index 6486d96..a33d2b2 100644
--- a/configuration/xconnect.rst
+++ b/configuration/xconnect.rst
@@ -1,11 +1,16 @@
 VLAN Cross Connect
 ==================
-VLAN cross connect creates a L2 bridge between two given ports on the same device.
-Once configured, every packets arriving at one of the port with specific VLAN tag will be sent to another port directly.
-Current implementation only matches on the outermost VLAN tag. If the packet is double tagged, the S-tag will be matched and both the S-tag and C-tag will be persisted.
 
-VLAN cross connect only works on the same device.
-If you are looking for transporting L2 traffic across devices, please refer to :doc:`pseoduwire <pseudowire>`
+VLAN cross connect creates a L2 bridge between two given ports on the same
+device.  Once configured, every packets arriving at one of the port with
+specific VLAN tag will be sent to another port directly.  Current
+implementation only matches on the outermost VLAN tag. If the packet is double
+tagged, the S-tag will be matched and both the S-tag and C-tag will be
+persisted.
+
+VLAN cross connect only works on the same device.  If you are looking for
+transporting L2 traffic across devices, please refer to :doc:`pseoduwire
+<pseudowire>`
 
 View cross connect via CLI
 --------------------------
@@ -70,4 +75,4 @@
     }' 'http://${ONOS-IP}:8181/onos/segmentrouting/xconnect'
 
 - ``deviceId``: device ID, e.g. **of:0000000000000201**
-- ``vlanId``: VLAN ID, e.g. **94**
\ No newline at end of file
+- ``vlanId``: VLAN ID, e.g. **94**
