You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kg...@apache.org on 2021/08/24 15:30:57 UTC

[qpid-site] branch asf-site updated: Update site content for Qpid Dispatch 1.17.0

This is an automated email from the ASF dual-hosted git repository.

kgiusti pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/qpid-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 8875e32  Update site content for Qpid Dispatch 1.17.0
8875e32 is described below

commit 8875e32c8394dbf3d7b0a2cc41cf9138eaf22277
Author: Kenneth Giusti <kg...@redhat.com>
AuthorDate: Tue Aug 24 11:30:48 2021 -0400

    Update site content for Qpid Dispatch 1.17.0
---
 content/components/dispatch-router/index.html      |   14 +-
 content/dashboard.html                             |    2 +-
 content/documentation.html                         |    2 +-
 content/download.html                              |    6 +-
 content/releases/index.html                        |    3 +-
 content/releases/qpid-dispatch-1.10.0/index.html   |    2 +-
 content/releases/qpid-dispatch-1.11.0/index.html   |    2 +-
 content/releases/qpid-dispatch-1.12.0/index.html   |    2 +-
 content/releases/qpid-dispatch-1.13.0/index.html   |    2 +-
 content/releases/qpid-dispatch-1.14.0/index.html   |    2 +-
 content/releases/qpid-dispatch-1.15.0/index.html   |    2 +-
 content/releases/qpid-dispatch-1.16.0/index.html   |    2 +-
 content/releases/qpid-dispatch-1.16.1/index.html   |    2 +-
 .../index.html                                     |   20 +-
 .../qpid-dispatch-1.17.0/man/qdmanage.html         |  391 ++
 .../qpid-dispatch-1.17.0/man/qdrouterd.conf.html   | 1952 ++++++
 .../man/qdrouterd.html}                            |  124 +-
 .../releases/qpid-dispatch-1.17.0/man/qdstat.html  | 1906 ++++++
 .../qpid-dispatch-1.17.0/release-notes.html        |  220 +
 .../user-guide/images/01-peer-to-peer.png          |  Bin 0 -> 20101 bytes
 .../user-guide/images/balanced-routing.png         |  Bin 0 -> 45011 bytes
 .../user-guide/images/brokered-messaging.png       |  Bin 0 -> 51468 bytes
 .../user-guide/images/closest-routing.png          |  Bin 0 -> 42896 bytes
 .../user-guide/images/console1.png                 |  Bin 0 -> 40412 bytes
 .../user-guide/images/console_charts.png           |  Bin 0 -> 70070 bytes
 .../user-guide/images/console_entity.png           |  Bin 0 -> 69319 bytes
 .../user-guide/images/console_login.png            |  Bin 0 -> 39915 bytes
 .../user-guide/images/console_overview.png         |  Bin 0 -> 87960 bytes
 .../user-guide/images/console_schema.png           |  Bin 0 -> 68025 bytes
 .../user-guide/images/console_topology.png         |  Bin 0 -> 67338 bytes
 .../user-guide/images/link-routing-02.png          |  Bin 0 -> 52925 bytes
 .../user-guide/images/link-routing.png             |  Bin 0 -> 49243 bytes
 .../user-guide/images/message-routing.png          |  Bin 0 -> 35011 bytes
 .../user-guide/images/multicast-routing.png        |  Bin 0 -> 48504 bytes
 .../user-guide/images/path-redundancy-01.png       |  Bin 0 -> 44907 bytes
 .../user-guide/images/path-redundancy-02.png       |  Bin 0 -> 40277 bytes
 .../images/path-redundancy-temp-decoupling-01.png  |  Bin 0 -> 44995 bytes
 .../images/path-redundancy-temp-decoupling-02.png  |  Bin 0 -> 44956 bytes
 .../user-guide/images/peer-to-peer-comm.png        |  Bin 0 -> 20590 bytes
 .../user-guide/images/sharded-queue-01.png         |  Bin 0 -> 31229 bytes
 .../user-guide/images/sharded-queue-02.png         |  Bin 0 -> 67415 bytes
 .../qpid-dispatch-1.17.0/user-guide/index.html     | 6476 ++++++++++++++++++++
 content/releases/qpid-dispatch-1.4.0/index.html    |    2 +-
 content/releases/qpid-dispatch-1.4.1/index.html    |    2 +-
 content/releases/qpid-dispatch-1.5.0/index.html    |    2 +-
 content/releases/qpid-dispatch-1.6.0/index.html    |    2 +-
 content/releases/qpid-dispatch-1.7.0/index.html    |    2 +-
 content/releases/qpid-dispatch-1.8.0/index.html    |    2 +-
 content/releases/qpid-dispatch-1.9.0/index.html    |    2 +-
 input/_transom_config.py                           |    2 +-
 input/releases/index.md                            |    3 +-
 input/releases/qpid-dispatch-1.17.0/index.md       |   67 +
 .../qpid-dispatch-1.17.0/man/qdmanage.html.in      |  247 +
 .../man/qdrouterd.conf.html.in                     | 1808 ++++++
 .../qpid-dispatch-1.17.0/man/qdrouterd.html.in     |   57 +
 .../qpid-dispatch-1.17.0/man/qdstat.html.in        | 1762 ++++++
 .../releases/qpid-dispatch-1.17.0/release-notes.md |   90 +
 .../user-guide/images/01-peer-to-peer.png          |  Bin 0 -> 20101 bytes
 .../user-guide/images/balanced-routing.png         |  Bin 0 -> 45011 bytes
 .../user-guide/images/brokered-messaging.png       |  Bin 0 -> 51468 bytes
 .../user-guide/images/closest-routing.png          |  Bin 0 -> 42896 bytes
 .../user-guide/images/console1.png                 |  Bin 0 -> 40412 bytes
 .../user-guide/images/console_charts.png           |  Bin 0 -> 70070 bytes
 .../user-guide/images/console_entity.png           |  Bin 0 -> 69319 bytes
 .../user-guide/images/console_login.png            |  Bin 0 -> 39915 bytes
 .../user-guide/images/console_overview.png         |  Bin 0 -> 87960 bytes
 .../user-guide/images/console_schema.png           |  Bin 0 -> 68025 bytes
 .../user-guide/images/console_topology.png         |  Bin 0 -> 67338 bytes
 .../user-guide/images/link-routing-02.png          |  Bin 0 -> 52925 bytes
 .../user-guide/images/link-routing.png             |  Bin 0 -> 49243 bytes
 .../user-guide/images/message-routing.png          |  Bin 0 -> 35011 bytes
 .../user-guide/images/multicast-routing.png        |  Bin 0 -> 48504 bytes
 .../user-guide/images/path-redundancy-01.png       |  Bin 0 -> 44907 bytes
 .../user-guide/images/path-redundancy-02.png       |  Bin 0 -> 40277 bytes
 .../images/path-redundancy-temp-decoupling-01.png  |  Bin 0 -> 44995 bytes
 .../images/path-redundancy-temp-decoupling-02.png  |  Bin 0 -> 44956 bytes
 .../user-guide/images/peer-to-peer-comm.png        |  Bin 0 -> 20590 bytes
 .../user-guide/images/sharded-queue-01.png         |  Bin 0 -> 31229 bytes
 .../user-guide/images/sharded-queue-02.png         |  Bin 0 -> 67415 bytes
 .../qpid-dispatch-1.17.0/user-guide/index.html.in  | 6333 +++++++++++++++++++
 80 files changed, 21410 insertions(+), 105 deletions(-)

diff --git a/content/components/dispatch-router/index.html b/content/components/dispatch-router/index.html
index ff69db3..5b22411 100644
--- a/content/components/dispatch-router/index.html
+++ b/content/components/dispatch-router/index.html
@@ -145,8 +145,8 @@ they be clients, brokers or other AMQP-enabled services.  More about
 <div class="column">
 
 <ul>
-<li><a href="/releases/qpid-dispatch-1.16.1/user-guide/index.html">Dispatch router book</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf?p=qpid-dispatch.git;a=blob_plain;f=README;hb=1.16.1">Installing Qpid Dispatch</a></li>
+<li><a href="/releases/qpid-dispatch-1.17.0/user-guide/index.html">Dispatch router book</a></li>
+<li><a href="https://gitbox.apache.org/repos/asf?p=qpid-dispatch.git;a=blob_plain;f=README;hb=1.17.0">Installing Qpid Dispatch</a></li>
 </ul>
 
 </div>
@@ -154,10 +154,10 @@ they be clients, brokers or other AMQP-enabled services.  More about
 <div class="column">
 
 <ul>
-<li><a href="/releases/qpid-dispatch-1.16.1/man/qdrouterd.html">qdrouterd</a> - Router daemon</li>
-<li><a href="/releases/qpid-dispatch-1.16.1/man/qdrouterd.conf.html">qdrouterd.conf</a> - Daemon configuration</li>
-<li><a href="/releases/qpid-dispatch-1.16.1/man/qdstat.html">qdstat</a> - Get router statistics</li>
-<li><a href="/releases/qpid-dispatch-1.16.1/man/qdmanage.html">qdmanage</a> - Manage the router</li>
+<li><a href="/releases/qpid-dispatch-1.17.0/man/qdrouterd.html">qdrouterd</a> - Router daemon</li>
+<li><a href="/releases/qpid-dispatch-1.17.0/man/qdrouterd.conf.html">qdrouterd.conf</a> - Daemon configuration</li>
+<li><a href="/releases/qpid-dispatch-1.17.0/man/qdstat.html">qdstat</a> - Get router statistics</li>
+<li><a href="/releases/qpid-dispatch-1.17.0/man/qdmanage.html">qdmanage</a> - Manage the router</li>
 </ul>
 
 </div>
@@ -171,7 +171,7 @@ they be clients, brokers or other AMQP-enabled services.  More about
 <h2 id="releases">Releases</h2>
 
 <ul>
-<li><a href="/releases/qpid-dispatch-1.16.1">Qpid Dispatch 1.16.1</a></li>
+<li><a href="/releases/qpid-dispatch-1.17.0">Qpid Dispatch 1.17.0</a></li>
 <li><a href="/releases/index.html#past-releases">Past releases</a></li>
 </ul>
 
diff --git a/content/dashboard.html b/content/dashboard.html
index a152e63..11e1434 100644
--- a/content/dashboard.html
+++ b/content/dashboard.html
@@ -155,7 +155,7 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
 </tr>
 <tr>
   <td><a href="/components/dispatch-router/index.html">Qpid Dispatch</a></td>
-  <td><a href="/releases/qpid-dispatch-1.16.1">1.16.1</a></td>
+  <td><a href="/releases/qpid-dispatch-1.17.0">1.17.0</a></td>
   <td><a href="https://issues.apache.org/jira/projects/DISPATCH">Summary</a> &#x2022; <a href="https://issues.apache.org/jira/issues/?jql=project+%3D+DISPATCH+and+resolution+is+null">Open issues</a> &#x2022; <a href="https://issues.apache.org/jira/issues/?jql=project+%3D+DISPATCH">All issues</a> &#x2022; <a href="https://issues.apache.org/jira/secure/CreateIssue!default.jspa?pid=12315321">Create issue</a></td>
   <td><a href="https://travis-ci.com/github/apache/qpid-dispatch"><img src="https://travis-ci.com/apache/qpid-dispatch.svg?branch=main" height="20"/></a></td>
   <td><a href="https://gitbox.apache.org/repos/asf/qpid-dispatch.git">Git</a> &#x2022; <a href="https://github.com/apache/qpid-dispatch">GitHub</a></td>
diff --git a/content/documentation.html b/content/documentation.html
index 809f09e..e3bfc17 100644
--- a/content/documentation.html
+++ b/content/documentation.html
@@ -203,7 +203,7 @@ You can find older versions with our
 
 <ul>
 <li><a href="/components/dispatch-router/index.html">Overview</a></li>
-<li><a href="/releases/qpid-dispatch-1.16.1/user-guide/index.html">Dispatch router book</a></li>
+<li><a href="/releases/qpid-dispatch-1.17.0/user-guide/index.html">Dispatch router book</a></li>
 </ul>
 
 </section>
diff --git a/content/download.html b/content/download.html
index cd98bb6..de9f1bf 100644
--- a/content/download.html
+++ b/content/download.html
@@ -218,9 +218,9 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
 </tr>
 <tr>
   <td><a href="/components/dispatch-router/index.html">Dispatch router</a></td>
-  <td>1.16.1</td>
-  <td><a href="https://www.apache.org/dyn/closer.lua?filename=qpid/dispatch/1.16.1/qpid-dispatch-1.16.1.tar.gz&amp;action=download">Source</a> (<a href="https://downloads.apache.org/qpid/dispatch/1.16.1/qpid-dispatch-1.16.1.tar.gz.asc">ASC</a>, <a href="https://downloads.apache.org/qpid/dispatch/1.16.1/qpid-dispatch-1.16.1.tar.gz.sha512">SHA512</a>)</td>
-  <td><a href="/releases/qpid-dispatch-1.16.1/index.html">Release Page</a></td>
+  <td>1.17.0</td>
+  <td><a href="https://www.apache.org/dyn/closer.lua?filename=qpid/dispatch/1.17.0/qpid-dispatch-1.17.0.tar.gz&amp;action=download">Source</a> (<a href="https://downloads.apache.org/qpid/dispatch/1.17.0/qpid-dispatch-1.17.0.tar.gz.asc">ASC</a>, <a href="https://downloads.apache.org/qpid/dispatch/1.17.0/qpid-dispatch-1.17.0.tar.gz.sha512">SHA512</a>)</td>
+  <td><a href="/releases/qpid-dispatch-1.17.0/index.html">Release Page</a></td>
 </tr>
 </tbody>
 </table>
diff --git a/content/releases/index.html b/content/releases/index.html
index a3cd25b..6c6fccc 100644
--- a/content/releases/index.html
+++ b/content/releases/index.html
@@ -126,8 +126,8 @@ the
 <div class="two-column">
 
 <ul>
+<li><a href="qpid-dispatch-1.17.0/index.html">Qpid Dispatch 1.17.0</a>, August 2021</li>
 <li><a href="qpid-jms-1.1.0/index.html">Qpid JMS 1.1.0</a>, July 2021</li>
-<li><a href="qpid-dispatch-1.16.1/index.html">Qpid Dispatch 1.16.1</a>, July 2021</li>
 <li><a href="qpid-proton-0.35.0/index.html">Qpid Proton 0.35.0</a>, July 2021</li>
 <li><a href="qpid-broker-j-8.0.5/index.html">Qpid Broker-J 8.0.5</a>, June 2021</li>
 <li><a href="qpid-protonj2-1.0.0-M2/index.html">Qpid ProtonJ2 1.0.0-M2</a>, May 2021</li>
@@ -147,6 +147,7 @@ the
 <div class="two-column">
 
 <ul>
+<li><a href="qpid-dispatch-1.16.1/index.html">Qpid Dispatch 1.16.1</a>, July 2021</li>
 <li><a href="qpid-jms-1.0.0/index.html">Qpid JMS 1.0.0</a>, May 2021</li>
 <li><a href="qpid-dispatch-1.16.0/index.html">Qpid Dispatch 1.16.0</a>, May 2021</li>
 <li><a href="qpid-protonj2-1.0.0-M1/index.html">Qpid ProtonJ2 1.0.0-M1</a>, May 2021</li>
diff --git a/content/releases/qpid-dispatch-1.10.0/index.html b/content/releases/qpid-dispatch-1.10.0/index.html
index 726ff85..ac72c41 100644
--- a/content/releases/qpid-dispatch-1.10.0/index.html
+++ b/content/releases/qpid-dispatch-1.10.0/index.html
@@ -172,7 +172,7 @@ source</a></li>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("1.10.0" === "1.16.1") {
+      if ("1.10.0" === "1.17.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-dispatch-1.11.0/index.html b/content/releases/qpid-dispatch-1.11.0/index.html
index 3665339..bb1d5e2 100644
--- a/content/releases/qpid-dispatch-1.11.0/index.html
+++ b/content/releases/qpid-dispatch-1.11.0/index.html
@@ -172,7 +172,7 @@ source</a></li>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("1.11.0" === "1.16.1") {
+      if ("1.11.0" === "1.17.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-dispatch-1.12.0/index.html b/content/releases/qpid-dispatch-1.12.0/index.html
index c1c1e7c..0c12980 100644
--- a/content/releases/qpid-dispatch-1.12.0/index.html
+++ b/content/releases/qpid-dispatch-1.12.0/index.html
@@ -172,7 +172,7 @@ source</a></li>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("1.12.0" === "1.16.1") {
+      if ("1.12.0" === "1.17.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-dispatch-1.13.0/index.html b/content/releases/qpid-dispatch-1.13.0/index.html
index ab47583..721e2b2 100644
--- a/content/releases/qpid-dispatch-1.13.0/index.html
+++ b/content/releases/qpid-dispatch-1.13.0/index.html
@@ -172,7 +172,7 @@ source</a></li>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("1.13.0" === "1.16.1") {
+      if ("1.13.0" === "1.17.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-dispatch-1.14.0/index.html b/content/releases/qpid-dispatch-1.14.0/index.html
index fb5526b..3841920 100644
--- a/content/releases/qpid-dispatch-1.14.0/index.html
+++ b/content/releases/qpid-dispatch-1.14.0/index.html
@@ -172,7 +172,7 @@ source</a></li>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("1.14.0" === "1.16.1") {
+      if ("1.14.0" === "1.17.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-dispatch-1.15.0/index.html b/content/releases/qpid-dispatch-1.15.0/index.html
index d3b3007..d97c6d0 100644
--- a/content/releases/qpid-dispatch-1.15.0/index.html
+++ b/content/releases/qpid-dispatch-1.15.0/index.html
@@ -172,7 +172,7 @@ source</a></li>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("1.15.0" === "1.16.1") {
+      if ("1.15.0" === "1.17.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-dispatch-1.16.0/index.html b/content/releases/qpid-dispatch-1.16.0/index.html
index 79b3f2c..185cb52 100644
--- a/content/releases/qpid-dispatch-1.16.0/index.html
+++ b/content/releases/qpid-dispatch-1.16.0/index.html
@@ -172,7 +172,7 @@ source</a></li>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("1.16.0" === "1.16.1") {
+      if ("1.16.0" === "1.17.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-dispatch-1.16.1/index.html b/content/releases/qpid-dispatch-1.16.1/index.html
index c668095..4924f1c 100644
--- a/content/releases/qpid-dispatch-1.16.1/index.html
+++ b/content/releases/qpid-dispatch-1.16.1/index.html
@@ -172,7 +172,7 @@ source</a></li>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("1.16.1" === "1.16.1") {
+      if ("1.16.1" === "1.17.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-dispatch-1.15.0/index.html b/content/releases/qpid-dispatch-1.17.0/index.html
similarity index 92%
copy from content/releases/qpid-dispatch-1.15.0/index.html
copy to content/releases/qpid-dispatch-1.17.0/index.html
index d3b3007..d4b67d8 100644
--- a/content/releases/qpid-dispatch-1.15.0/index.html
+++ b/content/releases/qpid-dispatch-1.17.0/index.html
@@ -21,7 +21,7 @@
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
   <head>
-    <title>Qpid Dispatch 1.15.0 - Apache Qpid&#8482;</title>
+    <title>Qpid Dispatch 1.17.0 - Apache Qpid&#8482;</title>
     <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
     <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
     <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,10 +111,10 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
       </div>
 
       <div id="-middle" class="panel">
-        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Dispatch 1.15.0</li></ul>
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Dispatch 1.17.0</li></ul>
 
         <div id="-middle-content">
-          <h1 id="qpid-dispatch-1150">Qpid Dispatch 1.15.0</h1>
+          <h1 id="qpid-dispatch-1170">Qpid Dispatch 1.17.0</h1>
 
 <p>Dispatch is a lightweight AMQP 1.0 message router. More about
 <a href="/components/dispatch-router/index.html">Qpid
@@ -140,8 +140,8 @@ the files you download.</p>
 <tbody>
 <tr>
   <td>Dispatch router</td>
-  <td><a href="https://archive.apache.org/dist/qpid/dispatch/1.15.0/qpid-dispatch-1.15.0.tar.gz">qpid-dispatch-1.15.0.tar.gz</a></td>
-  <td><a href="https://archive.apache.org/dist/qpid/dispatch/1.15.0/qpid-dispatch-1.15.0.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/dispatch/1.15.0/qpid-dispatch-1.15.0.tar.gz.sha512">SHA512</a></td>
+  <td><a href="https://archive.apache.org/dist/qpid/dispatch/1.17.0/qpid-dispatch-1.17.0.tar.gz">qpid-dispatch-1.17.0.tar.gz</a></td>
+  <td><a href="https://archive.apache.org/dist/qpid/dispatch/1.17.0/qpid-dispatch-1.17.0.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/dispatch/1.17.0/qpid-dispatch-1.17.0.tar.gz.sha512">SHA512</a></td>
 </tr>
 </tbody>
 </table>
@@ -152,7 +152,7 @@ the files you download.</p>
 
 <ul>
 <li><a href="user-guide/index.html">Using Qpid Dispatch</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf?p=qpid-dispatch.git;a=blob_plain;f=README;hb=1.15.0">Installing Qpid Dispatch from
+<li><a href="https://gitbox.apache.org/repos/asf?p=qpid-dispatch.git;a=blob_plain;f=README;hb=1.17.0">Installing Qpid Dispatch from
 source</a></li>
 <li><a href="man/qdrouterd.html">qdrouterd</a> - Router daemon</li>
 <li><a href="man/qdrouterd.conf.html">qdrouterd.conf</a> - Daemon configuration</li>
@@ -165,14 +165,14 @@ source</a></li>
 <h2 id="more-information">More information</h2>
 
 <ul>
-<li><a href="https://archive.apache.org/dist/qpid/dispatch/1.15.0">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+DISPATCH+AND+fixVersion+%3D+%271.15.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-dispatch.git/tree/refs/tags/1.15.0">Source repository tag</a></li>
+<li><a href="https://archive.apache.org/dist/qpid/dispatch/1.17.0">All release artefacts</a></li>
+<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+DISPATCH+AND+fixVersion+%3D+%271.17.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
+<li><a href="https://gitbox.apache.org/repos/asf/qpid-dispatch.git/tree/refs/tags/1.17.0">Source repository tag</a></li>
 </ul>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("1.15.0" === "1.16.1") {
+      if ("1.17.0" === "1.17.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-dispatch-1.17.0/man/qdmanage.html b/content/releases/qpid-dispatch-1.17.0/man/qdmanage.html
new file mode 100644
index 0000000..d776ce1
--- /dev/null
+++ b/content/releases/qpid-dispatch-1.17.0/man/qdmanage.html
@@ -0,0 +1,391 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements.  See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership.  The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License.  You may obtain a copy of the License at
+ -
+ -   http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied.  See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>SYNOPSIS - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-dispatch-1.17.0/index.html">Qpid Dispatch 1.17.0</a></li><li>SYNOPSIS</li></ul>
+
+        <div id="-middle-content">
+          <div class="sect1">
+<h2 id="_synopsis">SYNOPSIS</h2>
+<div class="sectionbody">
+<div class="paragraph"><p><strong>qdmanage</strong> [<em>OPTIONS</em>] <em>OPERATION</em> [<em>ARGUMENTS</em>]</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_description">DESCRIPTION</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>An AMQP management client for use with the Dispatch router daemon
+(<em>qdrouterd</em>). Sends AMQP management operations requests and prints
+the response in JSON format. This is a generic AMQP management tool
+and can be used with any standard AMQP managed endpoint, not just
+with <em>qdrouterd</em>.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_options">OPTIONS</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>-h, --help
+:   show this help message and exit</p></div>
+<div class="paragraph"><p>--version
+:   show program&#8217;s version number and exit</p></div>
+<div class="paragraph"><p>-v, --verbose
+:   Show maximum detail</p></div>
+<div class="paragraph"><p>-r ROUTER-ID, --router ROUTER-ID
+:   Router to be queried</p></div>
+<div class="paragraph"><p>-d EDGE-ROUTER-ID, --edge-router EDGE-ROUTER-ID
+:   Edge Router to be queried</p></div>
+<div class="paragraph"><p>--type TYPE
+:   Type of entity to operate on.</p></div>
+<div class="paragraph"><p>--name NAME
+:   Name of entity to operate on.</p></div>
+<div class="paragraph"><p>--identity ID
+:   Identity of entity to operate on.</p></div>
+<div class="paragraph"><p>--indent INDENT
+:   Pretty-printing indent. -1 means don&#8217;t pretty-print (default 2)</p></div>
+<div class="paragraph"><p>--stdin
+:   Read attributes as JSON map or list of maps from stdin.</p></div>
+<div class="paragraph"><p>--body BODY
+:   JSON value to use as body of a non-standard operation call.</p></div>
+<div class="paragraph"><p>--properties PROPERTIES
+:   JSON map to use as properties for a non-standard operation call.</p></div>
+<div class="paragraph"><p>-b URL, --bus URL
+:   URL of the messaging bus to connect to default 0.0.0.0</p></div>
+<div class="paragraph"><p>-t SECS, --timeout SECS
+:   Maximum time to wait for connection in seconds default 5</p></div>
+<div class="paragraph"><p>--ssl-certificate CERT
+:   Client SSL certificate (PEM Format)</p></div>
+<div class="paragraph"><p>--ssl-key KEY
+:   Client SSL private key (PEM Format)</p></div>
+<div class="paragraph"><p>--ssl-trustfile TRUSTED-CA-DB
+:   Trusted Certificate Authority Database file (PEM Format)</p></div>
+<div class="paragraph"><p>--ssl-password PASSWORD
+:   Certificate password, will be prompted if not specifed.</p></div>
+<div class="paragraph"><p>--ssl-password-file SSL-PASSWORD-FILE
+:   Certificate password, will be prompted if not specifed.</p></div>
+<div class="paragraph"><p>--sasl-mechanisms SASL-MECHANISMS
+:   Allowed sasl mechanisms to be supplied during the sasl handshake.</p></div>
+<div class="paragraph"><p>--sasl-username SASL-USERNAME
+:   User name for SASL plain authentication</p></div>
+<div class="paragraph"><p>--sasl-password SASL-PASSWORD
+:   Password for SASL plain authentication</p></div>
+<div class="paragraph"><p>--sasl-password-file SASL-PASSWORD-FILE
+:   Password for SASL plain authentication</p></div>
+<div class="paragraph"><p>--ssl-disable-peer-name-verify
+:   Disables SSL peer name verification. WARNING - This option is insecure and must not be used in production environments</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_operations">OPERATIONS</h2>
+<div class="sectionbody">
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<code>query</code> [<em>ATTR</em>&#8230;]
+</dt>
+<dd>
+<p>
+  Print attributes for multiple entities. Prints all entities by default, use
+  --type, --name or --identity options to restrict which entities are printed.
+  Prints the attributes named in the ATTR list, or all attributes if none are
+  listed.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>create</code> [<em>ATTR=VALUE</em>&#8230;]
+</dt>
+<dd>
+<p>
+  Create a new entity with the specified attributes. With the --stdin
+  option, read attributes from stdin. This can be a JSON map of
+  attributes to create a single entity, or a JSON list of maps to create
+  multiple entities.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>read</code>
+</dt>
+<dd>
+<p>
+  Print all of the attributes of a single entity, specified by the --name or
+  --identity options.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>update</code> [<em>ATTR=VALUE</em>&#8230;]
+</dt>
+<dd>
+<p>
+  Update the attributes of an existing entity. If an ATTR name is listed with
+  no =VALUE, that attribute will be deleted from the entity. With the --stdin
+  option, read attributes from stdin. This can be a JSON map of attributes to
+  update a single entity, or a JSON list of maps to update multiple entities.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>delete</code>
+</dt>
+<dd>
+<p>
+  Delete an entity specified by the --name or --identity options.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>get-types</code> [<em>TYPE</em>]
+</dt>
+<dd>
+<p>
+  List entity types with their base types. With no arguments, list all
+  types.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>get-operations</code> [<em>TYPE</em>]
+</dt>
+<dd>
+<p>
+  List entity types with their operations. With no arguments, list all
+  types.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>get-attributes</code> [<em>TYPE</em>]
+</dt>
+<dd>
+<p>
+  List entity types with their attributes. With no arguments, list all
+  types.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>get-annotations</code> [<em>TYPE</em>]
+</dt>
+<dd>
+<p>
+  List entity types with their annotations. With no arguments, list all
+  types.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>get-mgmt-nodes</code>
+</dt>
+<dd>
+<p>
+  List all other known management nodes connected to this one.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>get-json-schema</code> [<em>INDENT</em>]
+</dt>
+<dd>
+<p>
+  Get the router schema in JSON format. Optional integer indent for
+  formatted output.
+</p>
+</dd>
+<dt class="hdlist1">
+<code>get-log</code> [<em>INDENT</em>]
+</dt>
+<dd>
+<p>
+  Get recent log entries from the router.
+</p>
+</dd>
+</dl></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_files">FILES</h2>
+<div class="sectionbody">
+<div class="dlist"><dl>
+<dt class="hdlist1">
+/usr/local/share/doc/qpid-dispatch/qdrouter.json
+</dt>
+<dd>
+<p>
+  Management schema for <em>qdrouterd</em>.
+</p>
+</dd>
+<dt class="hdlist1">
+/usr/local/share/doc/qpid-dispatch/qdrouter.json.readme.txt
+</dt>
+<dd>
+<p>
+  Explanation of the management schema.
+</p>
+</dd>
+</dl></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_examples">EXAMPLES</h2>
+<div class="sectionbody">
+<div class="listingblock">
+<div class="title">Show the logging configuration:</div>
+<div class="content">
+<pre><code>qdmanage query --type=log</code></pre>
+</div></div>
+<div class="listingblock">
+<div class="title">Enable debug and higher log messages by default:</div>
+<div class="content">
+<pre><code>qdmanage update name=log/DEFAULT enable=debug+</code></pre>
+</div></div>
+<div class="listingblock">
+<div class="title">Enable trace log messages only for the MESSAGE module, and direct MESSAGE logs to the file <em>test.log</em>:</div>
+<div class="content">
+<pre><code>qdmanage update name=log/MESSAGE enable=trace output=test.log</code></pre>
+</div></div>
+<div class="listingblock">
+<div class="title">Set MESSAGE logging back to the default:</div>
+<div class="content">
+<pre><code>qdmanage update name=log/MESSAGE enable=default</code></pre>
+</div></div>
+<div class="listingblock">
+<div class="title">Disable MESSAGE logging:</div>
+<div class="content">
+<pre><code>qdmanage update name=log/MESSAGE enable=none</code></pre>
+</div></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_see_also">SEE ALSO</h2>
+<div class="sectionbody">
+<div class="paragraph"><p><em>qdrouterd(8)</em>, <em>qdstat(8)</em>, <em>qdrouterd.conf(5)</em></p></div>
+<div class="paragraph"><p><a href="http://qpid.apache.org/components/dispatch-router">http://qpid.apache.org/components/dispatch-router</a></p></div>
+</div>
+</div>
+
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/">Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/">License</a></li>
+            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
diff --git a/content/releases/qpid-dispatch-1.17.0/man/qdrouterd.conf.html b/content/releases/qpid-dispatch-1.17.0/man/qdrouterd.conf.html
new file mode 100644
index 0000000..49c27b3
--- /dev/null
+++ b/content/releases/qpid-dispatch-1.17.0/man/qdrouterd.conf.html
@@ -0,0 +1,1952 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements.  See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership.  The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License.  You may obtain a copy of the License at
+ -
+ -   http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied.  See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>SYNOPSIS - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-dispatch-1.17.0/index.html">Qpid Dispatch 1.17.0</a></li><li>SYNOPSIS</li></ul>
+
+        <div id="-middle-content">
+          <div class="sect1">
+<h2 id="_synopsis">SYNOPSIS</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Provides the initial configuration when <em>qdrouterd(8)</em> starts. The configuration
+of a running router can be modified using <em>qdmanage(8)</em>.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_description">DESCRIPTION</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>The configuration file is made up of sections with this syntax:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code>sectionName {
+    attributeName: attributeValue
+    attributeName: attributeValue
+    ...
+}</code></pre>
+</div></div>
+<div class="paragraph"><p>For example you can define a router using the <em>router</em> section</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code>router {
+    mode: standalone
+    id: Router.A
+    ...
+}</code></pre>
+</div></div>
+<div class="paragraph"><p>or define a listener using the <em>listener</em> section</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code>listener {
+    host: 0.0.0.0
+    port: 20102
+    saslMechanisms: ANONYMOUS
+    ...
+}</code></pre>
+</div></div>
+<div class="paragraph"><p>or define a connector using the <em>connector</em> section</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code>connector {
+    role: inter-router
+    host: 0.0.0.0
+    port: 20003
+    saslMechanisms: ANONYMOUS
+    ...
+}</code></pre>
+</div></div>
+<div class="paragraph"><p>An <em>sslProfile</em> section with SSL credentials can be included in multiple <em>listener</em> or <em>connector</em> entities. Here&#8217;s an example, note
+how the <em>sslProfile</em> attribute of <em>listener</em> sections references the <em>name</em>
+attribute of <em>sslProfile</em> sections.</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code>sslProfile {
+    name: my-ssl
+    caCertFile: ca-certificate-1.pem
+    certFile: server-certificate-1.pem
+    privateKeyFile: server-private-key.pem
+}
+
+listener {
+    sslProfile: my-ssl
+    host: 0.0.0.0
+    port: 20102
+    saslMechanisms: ANONYMOUS
+}</code></pre>
+</div></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_configuration_sections">Configuration Sections</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_router">router</h3>
+<div class="paragraph"><p>Tracks peer routers and computes routes to destinations. This entity is mandatory. The router will not start without this entity.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>id</em> (string)
+</dt>
+<dd>
+<p>
+  Router&#8217;s unique identity. This field may not contain whitespace or control characters. If not specified, a random identity will be assigned at startup.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>mode</em> (One of [<em>standalone</em>, <em>interior</em>, <em>edge</em>], default=<em>standalone</em>)
+</dt>
+<dd>
+<p>
+  In standalone mode, the router operates as a single component.  It does not participate in the routing protocol and therefore will not cooperate with other routers. In interior mode, the router operates in cooperation with other interior routers in an interconnected network.  In edge mode, the router can make a connection to an interior router and join a network without causing that network to recompute paths.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>helloIntervalSeconds</em> (integer, default=<em>1</em>)
+</dt>
+<dd>
+<p>
+  Interval in seconds between HELLO messages sent to neighbor routers.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>helloMaxAgeSeconds</em> (integer, default=<em>3</em>)
+</dt>
+<dd>
+<p>
+  Time in seconds after which a neighbor is declared lost if no HELLO is received.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>raIntervalSeconds</em> (integer, default=<em>30</em>)
+</dt>
+<dd>
+<p>
+  Interval in seconds between Router-Advertisements sent to all routers in a stable network.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>raIntervalFluxSeconds</em> (integer, default=<em>4</em>)
+</dt>
+<dd>
+<p>
+  Interval in seconds between Router-Advertisements sent to all routers during topology fluctuations.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>remoteLsMaxAgeSeconds</em> (integer, default=<em>60</em>)
+</dt>
+<dd>
+<p>
+  Time in seconds after which link state is declared stale if no RA is received.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>workerThreads</em> (integer, default=<em>4</em>)
+</dt>
+<dd>
+<p>
+  The number of threads that will be created to process message traffic and other application work (timers, non-amqp file descriptors, etc.) .
+</p>
+</dd>
+<dt class="hdlist1">
+<em>debugDumpFile</em> (path)
+</dt>
+<dd>
+<p>
+  The absolute path to the location for the debug dump file. The router writes debug-level information to this file if the logger is not available.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>saslConfigDir</em> (path)
+</dt>
+<dd>
+<p>
+  Absolute path to the SASL configuration file.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>saslConfigName</em> (string, default=<em>qdrouterd</em>)
+</dt>
+<dd>
+<p>
+  Name of the SASL configuration.  This string + <em>.conf</em> is the name of the configuration file.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowResumableLinkRoute</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+  Whether links can be routed where timeout is non-zero or expiry-policy is not link-detach
+</p>
+</dd>
+<dt class="hdlist1">
+<em>timestampsInUTC</em> (boolean)
+</dt>
+<dd>
+<p>
+  Use UTC time rather than localtime in logs.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>timestampFormat</em> (string)
+</dt>
+<dd>
+<p>
+  Format string to use for timestamps in logs.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowUnsettledMulticast</em> (boolean)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) If true, allow senders to send unsettled deliveries to multicast addresses.  These deliveries shall be settled by the ingress router.  If false, unsettled deliveries to multicast addresses shall be rejected.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>defaultDistribution</em> (One of [<em>multicast</em>, <em>closest</em>, <em>balanced</em>, <em>unavailable</em>], default=<em>balanced</em>)
+</dt>
+<dd>
+<p>
+  Default forwarding treatment for any address without a specified treatment. multicast - one copy of each message delivered to all subscribers; closest - messages delivered to only the closest subscriber; balanced - messages delivered to one subscriber with load balanced across subscribers; unavailable - this address is unavailable, messages sent and link attaches to the address will be rejected.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>metadata</em> (string)
+</dt>
+<dd>
+<p>
+  Optional metadata text to describe or label this router. This text does not affect the function of the router, but it can be used by external tools (such as the console or orchestration software) to control how the router is displayed.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>helloInterval</em> (integer, default=<em>1</em>)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Interval in seconds between HELLO messages sent to neighbor routers. This attribute has been deprecated. Use helloIntervalSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>helloMaxAge</em> (integer, default=<em>3</em>)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Time in seconds after which a neighbor is declared lost if no HELLO is received. This attribute has been deprecated. Use helloMaxAgeSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>raInterval</em> (integer, default=<em>30</em>)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Interval in seconds between Router-Advertisements sent to all routers in a stable network. This attribute has been deprecated. Use raIntervalSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>raIntervalFlux</em> (integer, default=<em>4</em>)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Interval in seconds between Router-Advertisements sent to all routers during topology fluctuations. This attribute has been deprecated. Use raIntervalFluxSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>remoteLsMaxAge</em> (integer, default=<em>60</em>)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Time in seconds after which link state is declared stale if no RA is received. This attribute has been deprecated. Use remoteLsMaxAgeSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>debugDump</em> (path)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) The absolute path to the location for the debug dump file. The router writes debug-level information to this file if the logger is not available. This attribute has been deprecated. Use debugDumpFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>saslConfigPath</em> (path)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Absolute path to the SASL configuration file. This attribute has been deprecated. Use saslConfigDir instead.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_sslprofile">sslProfile</h3>
+<div class="paragraph"><p>Attributes for setting TLS/SSL configuration for connections.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>ciphers</em> (string)
+</dt>
+<dd>
+<p>
+  Specifies the enabled ciphers so the SSL Ciphers can be hardened. In other words, use this field to disable weak ciphers. The ciphers are specified in the format understood by the OpenSSL library. For example, ciphers can be set to ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;&#8201;&#8212;&#8201;The full list of allowed ciphers can be viewed using the openssl ciphers command
+</p>
+</dd>
+<dt class="hdlist1">
+<em>protocols</em> (string)
+</dt>
+<dd>
+<p>
+  The TLS protocols that this sslProfile can use. You can specify a list of one or more of TLSv1, TLSv1.1, or TLSv1.2. To specify multiple protocols, separate the protocols with a space. For example, to permit the sslProfile to use TLS v1.1 and TLS v1.2 only, you would set the value to TLSv1.1 TLSv1.2. If you do not specify a value, the sslProfile uses the TLS protocol specified by the system-wide configuration.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>caCertFile</em> (path)
+</dt>
+<dd>
+<p>
+  The absolute path to the database that contains the public certificates of trusted certificate authorities (CA).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>certFile</em> (path)
+</dt>
+<dd>
+<p>
+  The absolute path to the file containing the PEM-formatted public certificate to be used on the local end of any connections using this profile.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>privateKeyFile</em> (path)
+</dt>
+<dd>
+<p>
+  The absolute path to the file containing the PEM-formatted private key for the above certificate.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>passwordFile</em> (path)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) If the above private key is password protected, this is the absolute path to the file containing the password that unlocks the certificate key. This file should be permission protected to limit access. This has been deprecated. Use the file: prefix in the password field to specify the absolute path of the file containing the password. If both password and passwordFile are provided, the passwordFile is ignored
+</p>
+</dd>
+<dt class="hdlist1">
+<em>password</em> (string)
+</dt>
+<dd>
+<p>
+  The password that unlocks the certificate key. You can specify the password by specifying an environment variable that stores the password, a file that stores the password, or by entering the password in clear text. To use an environment variable, specify <em>password: env:&lt;var&gt;</em>. Use this option with caution, because the environment of other processes is visible on certain platforms (for example, ps on certain Unix OSs). To use a file, specify <em>password: file:&lt;absolute [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>uidFormat</em> (string)
+</dt>
+<dd>
+<p>
+  A list of x509 client certificate fields that will be used to build a string that will uniquely identify the client certificate owner. For e.g. a value of <em>cou</em> indicates that the uid will consist of c - common name concatenated with o - organization-company name concatenated with u - organization unit; or a value of <em>o2</em> indicates that the uid will consist of o (organization name) concatenated with 2 (the sha256 fingerprint of the entire certificate) . Allowed values can [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>uidNameMappingFile</em> (string)
+</dt>
+<dd>
+<p>
+  The absolute path to the file containing the unique id to display name mapping
+</p>
+</dd>
+<dt class="hdlist1">
+<em>certDb</em> (path)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) The absolute path to the database that contains the public certificates of trusted certificate authorities (CA). This attribute has been deprecated. Use caCertFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>keyFile</em> (path)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) The absolute path to the file containing the PEM-formatted private key for the above certificate. This attribute has been deprecated. Use privateKeyFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>displayNameFile</em> (string)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) The absolute path to the file containing the unique id to display name mapping This attribute has been deprecated. Use uidNameMappingFile instead.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_authserviceplugin">authServicePlugin</h3>
+<div class="paragraph"><p>EXPERIMENTAL. Attributes for setting SASL plugin.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>authService</em> (string)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Address of a service to delegate authentication to. This attribute has been deprecated. Use the host and port attributes instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>host</em> (string)
+</dt>
+<dd>
+<p>
+  A host name, IPV4 or IPV6 literal, of the service to delegate to.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>port</em> (string, default=<em>amqp</em>)
+</dt>
+<dd>
+<p>
+  Port number of the service delegated host.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>realm</em> (string)
+</dt>
+<dd>
+<p>
+  Value to set for hostname field on sasl-init
+</p>
+</dd>
+<dt class="hdlist1">
+<em>sslProfile</em> (string)
+</dt>
+<dd>
+<p>
+  Name of the sslProfile to use for the authentication service.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>saslInitHostname</em> (string)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Value to set for hostname field on sasl-init This attribute has been deprecated. Use realm instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>authSslProfile</em> (string)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Name of the sslProfile to use for the authentication service. This attribute has been deprecated. Use sslProfile instead.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_listener">listener</h3>
+<div class="paragraph"><p>Listens for incoming connections to the router.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>host</em> (string)
+</dt>
+<dd>
+<p>
+  A host name, IPV4 or IPV6 literal, or the empty string. The empty string listens on all local addresses. A host name listens on all addresses associated with the name. An IPV6 literal address (or wildcard <em>[::]</em>) listens only for IPV6. An IPV4 literal address (or wildcard <em>0.0.0.0</em>) listens only for IPV4.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>port</em> (string, default=<em>amqp</em>)
+</dt>
+<dd>
+<p>
+  Port number or symbolic service name.  If <em>0</em>, the router shall assign an ephemeral port to the listener and log the port number with a log of the form <em>SERVER (notice) Listening on &lt;host&gt;:&lt;assigned-port&gt; (&lt;listener-name&gt;)</em>
+</p>
+</dd>
+<dt class="hdlist1">
+<em>socketAddressFamily</em> (One of [<em>IPv4</em>, <em>IPv6</em>])
+</dt>
+<dd>
+<p>
+  [<em>IPv4</em>, <em>IPv6</em>] IPv4: Internet Protocol version 4; IPv6: Internet Protocol version 6.  If not specified, the protocol family will be automatically determined from the address.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>role</em> (One of [<em>normal</em>, <em>inter-router</em>, <em>route-container</em>, <em>edge</em>], default=<em>normal</em>)
+</dt>
+<dd>
+<p>
+  The role of an established connection. In the normal role, the connection is assumed to be used for AMQP clients that are doing normal message delivery over the connection.  In the inter-router role, the connection is assumed to be to another router in the network.  Inter-router discovery and routing protocols can only be used over inter-router connections. route-container role can be used for router-container connections, for example, a router-broker connection.  In the edge role, the [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>cost</em> (integer, default=<em>1</em>)
+</dt>
+<dd>
+<p>
+  For the <em>inter-router</em> role only.  This value assigns a cost metric to the inter-router connection.  The default (and minimum) value is one.  Higher values represent higher costs.  The cost is used to influence the routing algorithm as it attempts to use the path with the lowest total cost from ingress to egress.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>sslProfile</em> (string)
+</dt>
+<dd>
+<p>
+  Name of the sslProfile.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>saslMechanisms</em> (string)
+</dt>
+<dd>
+<p>
+  Space separated list of accepted SASL authentication mechanisms.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>authenticatePeer</em> (boolean)
+</dt>
+<dd>
+<p>
+  yes: Require the peer&#8217;s identity to be authenticated; no: Do not require any authentication.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>saslPlugin</em> (string)
+</dt>
+<dd>
+<p>
+  EXPERIMENTAL. Name of the a sasl plugin configuration section to use for this listener (e.g. authServicePlugin).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>requireEncryption</em> (boolean)
+</dt>
+<dd>
+<p>
+  yes: Require the connection to the peer to be encrypted; no: Permit non-encrypted communication with the peer
+</p>
+</dd>
+<dt class="hdlist1">
+<em>requireSsl</em> (boolean)
+</dt>
+<dd>
+<p>
+  yes: Require the use of SSL or TLS on the connection; no: Allow clients to connect without SSL or TLS.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>trustedCertsFile</em> (path)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Use sslProfile caCertFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxFrameSize</em> (integer, default=<em>16384</em>)
+</dt>
+<dd>
+<p>
+  The maximum frame size in octets that will be used in the connection-open negotiation with a connected peer.  The frame size is the largest contiguous set of uninterrupted data that can be sent for a message delivery over the connection. Interleaving of messages on different links is done at frame granularity. Policy settings, if specified, will overwrite this value. Defaults to 16384.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSessions</em> (integer, default=<em>32768</em>)
+</dt>
+<dd>
+<p>
+  The maximum number of sessions that can be simultaneously active on the connection. Setting this value to zero selects the default number of sessions. Policy settings, if specified, will overwrite this value. Defaults to 32768.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSessionFrames</em> (integer)
+</dt>
+<dd>
+<p>
+  Session incoming window measured in transfer frames for sessions created on this connection. This is the number of transfer frames that may simultaneously be in flight for all links in the session. Setting this value to zero selects the default session window size. Policy settings, if specified, will overwrite this value. The numerical product of maxFrameSize and maxSessionFrames may not exceed 2<sup>31-1. If (maxFrameSize x maxSessionFrames) exceeds 2</sup>31-1 then maxSessionFrames i [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>idleTimeoutSeconds</em> (integer, default=<em>16</em>)
+</dt>
+<dd>
+<p>
+  The idle timeout, in seconds, for connections through this listener.  If no frames are received on the connection for this time interval, the connection shall be closed.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>initialHandshakeTimeoutSeconds</em> (integer)
+</dt>
+<dd>
+<p>
+  The timeout, in seconds, for the initial handshake for connections coming in through listeners.  If the time interval expires before the peer sends the AMQP OPEN frame, the connection shall be closed.  A value of zero (the default) disables this timeout.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>stripAnnotations</em> (One of [<em>in</em>, <em>out</em>, <em>both</em>, <em>no</em>], default=<em>both</em>)
+</dt>
+<dd>
+<p>
+  [<em>in</em>, <em>out</em>, <em>both</em>, <em>no</em>] in: Strip the dispatch router specific annotations only on ingress; out: Strip the dispatch router specific annotations only on egress; both: Strip the dispatch router specific annotations on both ingress and egress; no - do not strip dispatch router specific annotations
+</p>
+</dd>
+<dt class="hdlist1">
+<em>linkCapacity</em> (integer)
+</dt>
+<dd>
+<p>
+  The capacity of links within this connection, in terms of message deliveries.  The capacity is the number of messages that can be in-flight concurrently for each link.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>multiTenant</em> (boolean)
+</dt>
+<dd>
+<p>
+  If true, apply multi-tenancy to endpoints connected at this listener.  The address space is defined by the virtual host (hostname field in the Open).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>failoverUrls</em> (string)
+</dt>
+<dd>
+<p>
+  A comma-separated list of failover urls to be supplied to connected clients.  Form: [(amqp|amqps|ws|wss)://]host_or_ip[:port]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>healthz</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+  Provide a simple HTTP based liveness test (using path /healthz). Assumes listener is enabled for http.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>metrics</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+  Export metrics in prometheus text format for the router (using path /metrics). Assumes listener is enabled for http.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>websockets</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+  For an http enabled listener, determines whether websockets access is enabled (true by default).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>http</em> (boolean)
+</dt>
+<dd>
+<p>
+  Accept HTTP connections that can upgrade to AMQP over WebSocket. Plain AMQP connections are not accepted on this listener.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>httpRootDir</em> (path)
+</dt>
+<dd>
+<p>
+  Absolute path to a directory from which to serve static HTML files. Defaults to the stand-alone console installation directory (typically /usr/share/qpid-dispatch/console).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>messageLoggingComponents</em> (string, default=<em>none</em>)
+</dt>
+<dd>
+<p>
+  A comma separated list that indicates which components of the message should be logged. Defaults to <em>none</em> (log nothing). If you want all properties and application properties of the message logged use <em>all</em>. Specific components of the message can be logged by indicating the components via a comma separated list. The components are message-id, user-id, to, subject, reply-to, correlation-id, content-type, content-encoding, absolute-expiry-time, creation-time, group-id, gro [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>policyVhost</em> (string)
+</dt>
+<dd>
+<p>
+  A listener may optionally define a virtual host to index to a specific policy to restrict the remote container to access only specific resources. This attribute defines the name of the policy vhost for this listener.  If multi-tenancy is enabled for the listener, this vhost will override the peer-supplied vhost for the purposes of identifying the desired policy settings for the connections.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>openProperties</em> (properties)
+</dt>
+<dd>
+<p>
+  A JSON map containing connection properties.  These will be sent to the peer on connection open.  All map keys are restricted to strings containing only valid ASCII characters, Keys must not start with prefixes <em>qd.</em> or <em>x-opt-qd.</em>.  The following key values are also reserved: <em>product</em>, <em>version</em>, <em>failover-server-list</em>, <em>network-host</em>, <em>port</em>, <em>scheme</em> <em>hostname</em>
+</p>
+</dd>
+<dt class="hdlist1">
+<em>protocolFamily</em> (One of [<em>IPv4</em>, <em>IPv6</em>])
+</dt>
+<dd>
+<p>
+  (DEPRECATED) [<em>IPv4</em>, <em>IPv6</em>] IPv4: Internet Protocol version 4; IPv6: Internet Protocol version 6.  If not specified, the protocol family will be automatically determined from the address. This attribute has been deprecated. Use socketAddressFamily instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>trustedCerts</em> (path)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) (DEPRECATED) Use sslProfile caCertFile instead. This attribute has been deprecated. Use trustedCertsFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>failoverList</em> (string)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) A comma-separated list of failover urls to be supplied to connected clients.  Form: [(amqp|amqps|ws|wss)://]host_or_ip[:port] This attribute has been deprecated. Use failoverUrls instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>httpRoot</em> (path)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Absolute path to a directory from which to serve static HTML files. Defaults to the stand-alone console installation directory (typically /usr/share/qpid-dispatch/console). This attribute has been deprecated. Use httpRootDir instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>logMessage</em> (string, default=<em>none</em>)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) A comma separated list that indicates which components of the message should be logged. Defaults to <em>none</em> (log nothing). If you want all properties and application properties of the message logged use <em>all</em>. Specific components of the message can be logged by indicating the components via a comma separated list. The components are message-id, user-id, to, subject, reply-to, correlation-id, content-type, content-encoding, absolute-expiry-time, creation-time,  [...]
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_connector">connector</h3>
+<div class="paragraph"><p>Establishes an outgoing connection from the router.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>host</em> (string, default=<em>127.0.0.1</em>)
+</dt>
+<dd>
+<p>
+  IP address: ipv4 or ipv6 literal or a host name
+</p>
+</dd>
+<dt class="hdlist1">
+<em>port</em> (string, default=<em>amqp</em>)
+</dt>
+<dd>
+<p>
+  Port number or symbolic service name.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>protocolFamily</em> (One of [<em>IPv4</em>, <em>IPv6</em>])
+</dt>
+<dd>
+<p>
+  [<em>IPv4</em>, <em>IPv6</em>] IPv4: Internet Protocol version 4; IPv6: Internet Protocol version 6.  If not specified, the protocol family will be automatically determined from the address.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>role</em> (One of [<em>normal</em>, <em>inter-router</em>, <em>route-container</em>, <em>edge</em>], default=<em>normal</em>)
+</dt>
+<dd>
+<p>
+  The role of an established connection. In the normal role, the connection is assumed to be used for AMQP clients that are doing normal message delivery over the connection.  In the inter-router role, the connection is assumed to be to another router in the network.  Inter-router discovery and routing protocols can only be used over inter-router connections. route-container role can be used for router-container connections, for example, a router-broker connection.  In the edge role, the [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>cost</em> (integer, default=<em>1</em>)
+</dt>
+<dd>
+<p>
+  For the <em>inter-router</em> role only.  This value assigns a cost metric to the inter-router connection.  The default (and minimum) value is one.  Higher values represent higher costs.  The cost is used to influence the routing algorithm as it attempts to use the path with the lowest total cost from ingress to egress.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>sslProfile</em> (string)
+</dt>
+<dd>
+<p>
+  Name of the sslProfile.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>saslMechanisms</em> (string)
+</dt>
+<dd>
+<p>
+  Space separated list of accepted SASL authentication mechanisms.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowRedirect</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+  Allow the peer to redirect this connection to another address.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxFrameSize</em> (integer, default=<em>16384</em>)
+</dt>
+<dd>
+<p>
+  The maximum frame size in octets that will be used in the connection-open negotiation with a connected peer.  The frame size is the largest contiguous set of uninterrupted data that can be sent for a message delivery over the connection. Interleaving of messages on different links is done at frame granularity. Policy settings will not overwrite this value. Defaults to 16384.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSessions</em> (integer, default=<em>32768</em>)
+</dt>
+<dd>
+<p>
+  The maximum number of sessions that can be simultaneously active on the connection. Setting this value to zero selects the default number of sessions. Policy settings will not overwrite this value. Defaults to 32768.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSessionFrames</em> (integer)
+</dt>
+<dd>
+<p>
+  Session incoming window measured in transfer frames for sessions created on this connection. This is the number of transfer frames that may simultaneously be in flight for all links in the session. Setting this value to zero selects the default session window size. Policy settings will not overwrite this value. The numerical product of maxFrameSize and maxSessionFrames may not exceed 2<sup>31-1. If (maxFrameSize x maxSessionFrames) exceeds 2</sup>31-1 then maxSessionFrames is reduced t [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>idleTimeoutSeconds</em> (integer, default=<em>16</em>)
+</dt>
+<dd>
+<p>
+  The idle timeout, in seconds, for connections through this connector.  If no frames are received on the connection for this time interval, the connection shall be closed.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>stripAnnotations</em> (One of [<em>in</em>, <em>out</em>, <em>both</em>, <em>no</em>], default=<em>both</em>)
+</dt>
+<dd>
+<p>
+  [<em>in</em>, <em>out</em>, <em>both</em>, <em>no</em>] in: Strip the dispatch router specific annotations only on ingress; out: Strip the dispatch router specific annotations only on egress; both: Strip the dispatch router specific annotations on both ingress and egress; no - do not strip dispatch router specific annotations
+</p>
+</dd>
+<dt class="hdlist1">
+<em>linkCapacity</em> (integer)
+</dt>
+<dd>
+<p>
+  The capacity of links within this connection, in terms of message deliveries.  The capacity is the number of messages that can be in-flight concurrently for each link.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>verifyHostname</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+  yes: Ensures that when initiating a connection (as a client) the host name in the URL to which this connector connects to matches the host name in the digital certificate that the peer sends back as part of the SSL connection; no: Does not perform host name verification
+</p>
+</dd>
+<dt class="hdlist1">
+<em>saslUsername</em> (string)
+</dt>
+<dd>
+<p>
+  The user name that the connector is using to connect to a peer.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>saslPassword</em> (string)
+</dt>
+<dd>
+<p>
+  The password that the connector is using to connect to a peer. You can specify the password by specifying an environment variable that stores the password, a file that stores the password, or by entering the password in clear text. To use an environment variable, specify <em>saslPassword: env:&lt;var&gt;</em>. Use this option with caution, because the environment of other processes is visible on certain platforms (for example, ps on certain Unix OSs). To use a file, specify <em>saslPas [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>messageLoggingComponents</em> (string, default=<em>none</em>)
+</dt>
+<dd>
+<p>
+  A comma separated list that indicates which components of the message should be logged (no spaces allowed between list components). Defaults to <em>none</em> (log nothing). If you want all properties and application properties of the message logged use <em>all</em>. Specific components of the message can be logged by indicating the components via a comma separated list. The components are message-id, user-id, to, subject, reply-to, correlation-id, content-type, content-encoding, absolu [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>policyVhost</em> (string)
+</dt>
+<dd>
+<p>
+  A connector may optionally define a policy to restrict the remote container to access only specific resources. This attribute defines the name of the policy vhost for this connector. Within the vhost the connector will use the vhost policy settings from user group <em>$connector</em>. If the vhost policy is absent or if the user group <em>$connector</em> within that policy is absent then the connector will fail to start.  In policy specified via connector attribute <em>policyVhost</em> [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>openProperties</em> (properties)
+</dt>
+<dd>
+<p>
+  A JSON map containing connection properties.  These will be sent to the peer on connection open.  All map keys are restricted to strings containing only valid ASCII characters, Keys must not start with prefixes <em>qd.</em> or <em>x-opt-qd.</em>.  The following key values are also reserved: <em>product</em>, <em>version</em>, <em>failover-server-list</em>, <em>network-host</em>, <em>port</em>, <em>scheme</em> <em>hostname</em>
+</p>
+</dd>
+<dt class="hdlist1">
+<em>verifyHostName</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) yes: Ensures that when initiating a connection (as a client) the host name in the URL to which this connector connects to matches the host name in the digital certificate that the peer sends back as part of the SSL connection; no: Does not perform host name verification This attribute has been deprecated. Use verifyHostname instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>logMessage</em> (string, default=<em>none</em>)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) A comma separated list that indicates which components of the message should be logged (no spaces allowed between list components). Defaults to <em>none</em> (log nothing). If you want all properties and application properties of the message logged use <em>all</em>. Specific components of the message can be logged by indicating the components via a comma separated list. The components are message-id, user-id, to, subject, reply-to, correlation-id, content-type, content-enc [...]
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_httplistener">httpListener</h3>
+<div class="paragraph"><p>Ingress HTTP bridge.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>host</em> (string, default=<em>0.0.0.0</em>)
+</dt>
+<dd>
+<p>
+  A host name, IPV4 or IPV6 literal, or the empty string. The empty string listens on all local addresses. A host name listens on all addresses associated with the name. An IPV6 literal address (or wildcard <em>[::]</em>) listens only for IPV6. An IPV4 literal address (or wildcard <em>0.0.0.0</em>) listens only for IPV4.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>address</em> (string)
+</dt>
+<dd>
+<p>
+  Address of this http bridge
+</p>
+</dd>
+<dt class="hdlist1">
+<em>port</em> (string)
+</dt>
+<dd>
+<p>
+  Port number or symbolic service name.  If <em>0</em>, the router shall assign an ephemeral port to the listener and log the port number with a log of the form <em>SERVER (notice) Listening on &lt;host&gt;:&lt;assigned-port&gt; (&lt;listener-name&gt;)</em>
+</p>
+</dd>
+<dt class="hdlist1">
+<em>siteId</em> (string)
+</dt>
+<dd>
+<p>
+  Used to identify where request is handled.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>sslProfile</em> (string)
+</dt>
+<dd>
+<p>
+  Name of the sslProfile..
+</p>
+</dd>
+<dt class="hdlist1">
+<em>protocolVersion</em> (One of [<em>HTTP1</em>, <em>HTTP2</em>], default=<em>HTTP1</em>)
+</dt>
+<dd>
+<p>
+  The version of the HTTP protocol supported by this listener.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>aggregation</em> (One of [<em>multipart</em>, <em>json</em>])
+</dt>
+<dd>
+<p>
+  Aggregation mode for responses when used in conjunction with multicast address.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>eventChannel</em> (boolean)
+</dt>
+<dd>
+<p>
+  Enables restricted event mode where no responses are sent to request and only post is allowed
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_httpconnector">httpConnector</h3>
+<div class="paragraph"><p>Egress HTTP bridge.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>address</em> (string)
+</dt>
+<dd>
+<p>
+  Address of this bridge
+</p>
+</dd>
+<dt class="hdlist1">
+<em>host</em> (string, default=<em>127.0.0.1</em>)
+</dt>
+<dd>
+<p>
+  IP address: ipv4 or ipv6 literal or a host name
+</p>
+</dd>
+<dt class="hdlist1">
+<em>siteId</em> (string)
+</dt>
+<dd>
+<p>
+  Used to identify where request originates.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>port</em> (string)
+</dt>
+<dd>
+<p>
+  Port number or symbolic service name.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>protocolVersion</em> (One of [<em>HTTP1</em>, <em>HTTP2</em>], default=<em>HTTP1</em>)
+</dt>
+<dd>
+<p>
+  The version of the HTTP protocol supported by this connector.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>aggregation</em> (One of [<em>multipart</em>, <em>json</em>])
+</dt>
+<dd>
+<p>
+  Aggregation mode for responses when used in conjunction with multicast address.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>eventChannel</em> (boolean)
+</dt>
+<dd>
+<p>
+  Enables restricted event mode where no responses are sent to request and only post is allowed
+</p>
+</dd>
+<dt class="hdlist1">
+<em>hostOverride</em> (string)
+</dt>
+<dd>
+<p>
+  Used to override the value of the Host header sent to the client.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_tcplistener">tcpListener</h3>
+<div class="paragraph"><p>Ingress TCP bridge.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>address</em> (string)
+</dt>
+<dd>
+<p>
+  Address of this bridge
+</p>
+</dd>
+<dt class="hdlist1">
+<em>host</em> (string, default=<em>0.0.0.0</em>)
+</dt>
+<dd>
+<p>
+  A host name, IPV4 or IPV6 literal, or the empty string. The empty string listens on all local addresses. A host name listens on all addresses associated with the name. An IPV6 literal address (or wildcard <em>[::]</em>) listens only for IPV6. An IPV4 literal address (or wildcard <em>0.0.0.0</em>) listens only for IPV4.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>port</em> (string)
+</dt>
+<dd>
+<p>
+  Port number or symbolic service name.  If <em>0</em>, the router shall assign an ephemeral port to the listener and log the port number with a log of the form <em>SERVER (notice) Listening on &lt;host&gt;:&lt;assigned-port&gt; (&lt;listener-name&gt;)</em>
+</p>
+</dd>
+<dt class="hdlist1">
+<em>siteId</em> (string)
+</dt>
+<dd>
+<p>
+  Used to identify where connection is handled.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_tcpconnector">tcpConnector</h3>
+<div class="paragraph"><p>Egress TCP bridge.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>address</em> (string)
+</dt>
+<dd>
+<p>
+  Address of this bridge
+</p>
+</dd>
+<dt class="hdlist1">
+<em>host</em> (string)
+</dt>
+<dd>
+<p>
+  IP address: ipv4 or ipv6 literal or a host name
+</p>
+</dd>
+<dt class="hdlist1">
+<em>port</em> (string)
+</dt>
+<dd>
+<p>
+  Port number or symbolic service name.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>siteId</em> (string)
+</dt>
+<dd>
+<p>
+  Used to identify origin of connections.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_log">log</h3>
+<div class="paragraph"><p>Configure logging for a particular module. You can use the <code>UPDATE</code> operation to change log settings while the router is running.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>module</em> (One of [<em>ROUTER</em>, <em>ROUTER_CORE</em>, <em>ROUTER_HELLO</em>, <em>ROUTER_LS</em>, <em>ROUTER_MA</em>, <em>MESSAGE</em>, <em>SERVER</em>, <em>AGENT</em>, <em>AUTHSERVICE</em>, <em>CONTAINER</em>, <em>ERROR</em>, <em>POLICY</em>, <em>HTTP</em>, <em>CONN_MGR</em>, <em>PYTHON</em>, <em>PROTOCOL</em>, <em>TCP_ADAPTOR</em>, <em>HTTP_ADAPTOR</em>, <em>DEFAULT</em>], required)
+</dt>
+<dd>
+<p>
+  Module to configure. The special module <em>DEFAULT</em> specifies defaults for all modules.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>enable</em> (string)
+</dt>
+<dd>
+<p>
+  Levels are: trace, debug, info, notice, warning, error, critical. The enable string is a comma-separated list of levels. A level may have a trailing <em>+</em> to enable that level and above. For example <em>trace,debug,warning+</em> means enable trace, debug, warning, error and critical. The value <em>none</em> means disable logging for the module.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>includeTimestamp</em> (boolean)
+</dt>
+<dd>
+<p>
+  Include timestamp in log messages.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>includeSource</em> (boolean)
+</dt>
+<dd>
+<p>
+  Include source file and line number in log messages.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>outputFile</em> (string)
+</dt>
+<dd>
+<p>
+  Where to send log messages. Can be <em>stderr</em>, <em>stdout</em>, <em>syslog</em> or a file name.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>timestamp</em> (boolean)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Include timestamp in log messages. This attribute has been deprecated. Use includeTimestamp instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>source</em> (boolean)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Include source file and line number in log messages. This attribute has been deprecated. Use includeSource instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>output</em> (string)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) Where to send log messages. Can be <em>stderr</em>, <em>stdout</em>, <em>syslog</em> or a file name. This attribute has been deprecated. Use outputFile instead.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_address">address</h3>
+<div class="paragraph"><p>Entity type for address configuration.  This is used to configure the treatment of message-routed deliveries within a particular address-space.  The configuration controls distribution and address phasing.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>prefix</em> (string)
+</dt>
+<dd>
+<p>
+  The address prefix for the configured settings. Cannot be used with a pattern attribute.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>pattern</em> (string)
+</dt>
+<dd>
+<p>
+  A wildcarded pattern for address matching. Incoming addresses are matched against this pattern. Matching addresses use the configured settings. The pattern consists of one or more tokens separated by a forward slash <em>/</em>. A token can be one of the following: a * character, a # character, or a sequence of characters that do not include /, *, or #.  The * token matches any single token.  The # token matches zero or more tokens. * has higher precedence than #, and exact match has th [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>distribution</em> (One of [<em>multicast</em>, <em>closest</em>, <em>balanced</em>, <em>unavailable</em>], default=<em>balanced</em>)
+</dt>
+<dd>
+<p>
+  Treatment of traffic associated with the address
+</p>
+</dd>
+<dt class="hdlist1">
+<em>waypoint</em> (boolean)
+</dt>
+<dd>
+<p>
+  Designates this address space as being used for waypoints.  This will cause the proper address-phasing to be used.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>ingressPhase</em> (integer)
+</dt>
+<dd>
+<p>
+  Advanced - Override the ingress phase for this address
+</p>
+</dd>
+<dt class="hdlist1">
+<em>egressPhase</em> (integer)
+</dt>
+<dd>
+<p>
+  Advanced - Override the egress phase for this address
+</p>
+</dd>
+<dt class="hdlist1">
+<em>priority</em> (integer)
+</dt>
+<dd>
+<p>
+  All messages sent to this address which lack an intrinsic priority will be assigned this priority.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>enableFallback</em> (boolean)
+</dt>
+<dd>
+<p>
+  If false, undeliverable messages are released.  If true, undeliverable messages shall be re-delivered to a fallback destination.  The fallback destination uses the same address, but is attached using an autoLink with <em>fallback</em> enabled or a link with the qd.fallback capability.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_linkroute">linkRoute</h3>
+<div class="paragraph"><p>Entity type for link-route configuration.  This is used to identify remote containers that shall be destinations for routed link-attaches.  The link-routing configuration applies to an addressing space defined by a prefix or a pattern.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>prefix</em> (string)
+</dt>
+<dd>
+<p>
+  The address prefix for the configured settings. Cannot be used with the pattern attribute.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>pattern</em> (string)
+</dt>
+<dd>
+<p>
+  A wildcarded pattern for address matching. Link addresses are matched against this pattern. Matching addresses use the configured settings. The pattern consists of one or more tokens separated by a forward slash <em>/</em>. A token can be one of the following: a * character, a # character, or a sequence of characters that do not include /, *, or #.  The * token matches any single token.  The # token matches zero or more tokens. * has higher precedence than #, and exact match has the hi [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>addExternalPrefix</em> (string)
+</dt>
+<dd>
+<p>
+  add the specified prefix to the address of the remote terminus on the route container link
+</p>
+</dd>
+<dt class="hdlist1">
+<em>delExternalPrefix</em> (string)
+</dt>
+<dd>
+<p>
+  remove the specified prefix to the address of the remote terminus on the route container link
+</p>
+</dd>
+<dt class="hdlist1">
+<em>containerId</em> (string)
+</dt>
+<dd>
+<p>
+  ContainerID for the target container. Only one of containerId or connection should be specified for a linkRoute. Specifying both will result in the linkRoute not being created.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>connection</em> (string)
+</dt>
+<dd>
+<p>
+  The name from a connector or listener. Only one of containerId or connection should be specified for a linkRoute. Specifying both will result in the linkRoute not being created.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>distribution</em> (One of [<em>linkBalanced</em>], default=<em>linkBalanced</em>)
+</dt>
+<dd>
+<p>
+  Treatment of traffic associated with the address
+</p>
+</dd>
+<dt class="hdlist1">
+<em>direction</em> (One of [<em>in</em>, <em>out</em>], required)
+</dt>
+<dd>
+<p>
+  The permitted direction of links: <em>in</em> means client senders; <em>out</em> means client receivers
+</p>
+</dd>
+<dt class="hdlist1">
+<em>dir</em> (One of [<em>in</em>, <em>out</em>], required)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) The permitted direction of links: <em>in</em> means client senders; <em>out</em> means client receivers This attribute has been deprecated. Use direction instead.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_autolink">autoLink</h3>
+<div class="paragraph"><p>Entity type for configuring auto-links.  Auto-links are links whose lifecycle is managed by the router.  These are typically used to attach to waypoints on remote containers (brokers, etc.).</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>address</em> (string, required)
+</dt>
+<dd>
+<p>
+  The address of the provisioned object
+</p>
+</dd>
+<dt class="hdlist1">
+<em>direction</em> (One of [<em>in</em>, <em>out</em>], required)
+</dt>
+<dd>
+<p>
+  The direction of the link to be created.  In means into the router, out means out of the router.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>phase</em> (integer)
+</dt>
+<dd>
+<p>
+  The address phase for this link.  Defaults to <em>0</em> for <em>out</em> links and <em>1</em> for <em>in</em> links.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>containerId</em> (string)
+</dt>
+<dd>
+<p>
+  ContainerID for the target container. Only one of containerId or connection should be specified for an autoLink. Specifying both will result in the autoLink not being created
+</p>
+</dd>
+<dt class="hdlist1">
+<em>connection</em> (string)
+</dt>
+<dd>
+<p>
+  The name from a connector or listener. Only one of containerId or connection should be specified for an autoLink. Specifying both will result in the autoLink not being created
+</p>
+</dd>
+<dt class="hdlist1">
+<em>externalAddress</em> (string)
+</dt>
+<dd>
+<p>
+  If present, an alternate address of the node on the remote container.  This is used if the node has a different address than the address used internally by the router to route deliveries.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>fallback</em> (boolean)
+</dt>
+<dd>
+<p>
+  If true, this auto-link is attached to a fallback destination for an address.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>addr</em> (string, required)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) The address of the provisioned object This attribute has been deprecated. Use address instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>dir</em> (One of [<em>in</em>, <em>out</em>], required)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) The direction of the link to be created.  In means into the router, out means out of the router. This attribute has been deprecated. Use direction instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>externalAddr</em> (string)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) If present, an alternate address of the node on the remote container.  This is used if the node has a different address than the address used internally by the router to route deliveries. This attribute has been deprecated. Use externalAddress instead.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_exchange">exchange</h3>
+<div class="paragraph"><p>[EXPERIMENTAL] Defines a topic exchange.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>address</em> (string, required)
+</dt>
+<dd>
+<p>
+  The address of the exchange. Used by the message publisher as the target for sending messages.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>phase</em> (integer)
+</dt>
+<dd>
+<p>
+  The address phase for the exchange.  Defaults to <em>0</em>.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>alternateAddress</em> (string)
+</dt>
+<dd>
+<p>
+  The address to forward the message to if no bindings are matched.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>alternatePhase</em> (integer)
+</dt>
+<dd>
+<p>
+  The address phase for the alternateAddress.  Defaults to <em>0</em>.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>matchMethod</em> (One of [<em>amqp</em>, <em>mqtt</em>], default=<em>amqp</em>)
+</dt>
+<dd>
+<p>
+  Key matching algorithm used. <em>amqp</em> uses the legacy AMQP topic exchange wildcard match method as described in the pre-1.0 drafts. <em>mqtt</em> uses the MQTT topic filter wildcard match method.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_binding">binding</h3>
+<div class="paragraph"><p>[EXPERIMENTAL] Defines a keyed next hop binding for a topic exchange. The subject field of the messages arriving at the exchange is compared against the binding&#8217;s key value using the exchange&#8217;s matchMethod.  If the subject matches the key the message is forwarded to the nextHopAddress. The nextHopAddress overrides the message&#8217;s original destination.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>exchangeName</em> (string, required)
+</dt>
+<dd>
+<p>
+  The name of the exchange to bind.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>bindingKey</em> (string)
+</dt>
+<dd>
+<p>
+  Pattern to compare against incoming message&#8217;s subject.  The key is a string of zero or more tokens and wildcards. The format depends on the matchMethod configured for the exchange. For AMQP each token is delimited by the <em>.</em> character and wild-card tokens <em>*</em> matches a single token and <em></em> matches zero or more tokens. For MQTT each token is delimited by the <em>/</em> character and wildcard tokens <em>+</em> matches a single token and <em></em> matches zero or [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>nextHopAddress</em> (string, required)
+</dt>
+<dd>
+<p>
+  The address to forward the message to when the message&#8217;s topic string matches the binding key pattern.  This address is used by message consumers as the source of incoming messages.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>nextHopPhase</em> (integer)
+</dt>
+<dd>
+<p>
+  The address phase used when forwarding messages that match this binding.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_console">console</h3>
+<div class="paragraph"><p>(DEPRECATED) Start a websocket/tcp proxy and http file server to serve the web console</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>listener</em> (string)
+</dt>
+<dd>
+<p>
+  The name of the listener to send the proxied tcp traffic to.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>wsport</em> (integer, default=<em>5673</em>)
+</dt>
+<dd>
+<p>
+  port on which to listen for websocket traffic
+</p>
+</dd>
+<dt class="hdlist1">
+<em>proxy</em> (string, required)
+</dt>
+<dd>
+<p>
+  The full path to the proxy program to run.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>home</em> (string, required)
+</dt>
+<dd>
+<p>
+  The full path to the html/css/js files for the console.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>args</em> (string)
+</dt>
+<dd>
+<p>
+  Optional args to pass the proxy program for logging, authentication, etc.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_policy">policy</h3>
+<div class="paragraph"><p>Defines global connection limit</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>maxConnections</em> (integer, default=<em>65535</em>)
+</dt>
+<dd>
+<p>
+  The maximum number of concurrent client connections allowed for this router. This limit is always enforced, even if no other policy settings have been defined. The limit is applied to all incoming connections regardless of remote host, authenticated user, or targeted vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxMessageSize</em> (integer)
+</dt>
+<dd>
+<p>
+  The maximum size in bytes of AMQP message transfers allowed for this router as messages enter the router network. This limit is applied to transfers over user connections and to transfers to interior routers from edge routers. This limit is not applied to interior-to-interior router connections. This limit may be overridden by vhost or by vhost user group settings. A value of zero disables this limit. Administrators are advised not set interior router maximum message sizes so low that  [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>enableVhostPolicy</em> (boolean)
+</dt>
+<dd>
+<p>
+  Enables the router to enforce the connection denials and resource limits defined in the configured vhost policies.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>enableVhostNamePatterns</em> (boolean)
+</dt>
+<dd>
+<p>
+  Enable vhost name patterns. When false vhost hostnames are treated as literal strings. When true vhost hostnames are treated as match patterns.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>policyDir</em> (path)
+</dt>
+<dd>
+<p>
+  The absolute path to a directory that holds vhost policy definition files in JSON format (*.json). The router processes all of the vhost policies in each JSON file that is in this directory.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>defaultVhost</em> (string)
+</dt>
+<dd>
+<p>
+  The name of the default vhost policy. This policy rule set is applied to a connection for which a vhost policy has not otherwise been configured. Processing for the default vhost is enabled by default and set to select vhost <em>$default</em>. To disable default vhost processing set defaultVhost to blank or do not define a vhost named <em>$default</em>.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_vhost">vhost</h3>
+<div class="paragraph"><p>AMQP virtual host policy definition of users, user groups, allowed remote hosts, and AMQP restrictions.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>hostname</em> (string, required)
+</dt>
+<dd>
+<p>
+  The hostname of the vhost. This vhost policy will be applied to any client connection that is directed to this hostname.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>aliases</em> (string)
+</dt>
+<dd>
+<p>
+  Alternate hostnames that share this vhost configuration. Hosts named in this attribute are treated as if this vhost was defined with the alias name in the vhost <em>hostname</em> attribute. This attribute is implemented to help with multitenant configurations where multiple vhosts share a common configuration. The string is a comma- or space-separated list of literal hostnames or hostname patterns. A vhost aliases hostname must be unique across all vhost hostnames and all of their aliases.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxConnections</em> (integer, default=<em>65535</em>)
+</dt>
+<dd>
+<p>
+  The global maximum number of concurrent client connections allowed for this vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxConnectionsPerUser</em> (integer, default=<em>65535</em>)
+</dt>
+<dd>
+<p>
+  The maximum number of concurrent client connections allowed for any user.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxConnectionsPerHost</em> (integer, default=<em>65535</em>)
+</dt>
+<dd>
+<p>
+  The maximum number of concurrent client connections allowed for any remote host (the host from which the client is connecting).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowUnknownUser</em> (boolean)
+</dt>
+<dd>
+<p>
+  Whether unknown users (users who are not members of a defined user group) are allowed to connect to the vhost. Unknown users are assigned to the <em>$default</em> user group and receive <em>$default</em> settings.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>groups</em> (map)
+</dt>
+<dd>
+<p>
+  A map where the key is a vhost user group name and the value is a vhostUserGroupSettings object that holds the settings for that vhost user group.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>id</em> (string, required)
+</dt>
+<dd>
+<p>
+  (DEPRECATED) The hostname of the vhost. This vhost policy will be applied to any client connection that is directed to this hostname. This attribute has been deprecated. Use hostname instead.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_vhostusergroupsettings">vhostUserGroupSettings</h3>
+<div class="paragraph"><p>Policy settings for users connecting to a vhost. Configuration files including this section must use .json format.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>maxFrameSize</em> (integer, default=<em>16384</em>)
+</dt>
+<dd>
+<p>
+  The largest frame, in bytes, that may be sent on this connection. Non-zero policy values overwrite values specified for a listener object (AMQP Open, max-frame-size).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSessionWindow</em> (integer, default=<em>1638400</em>)
+</dt>
+<dd>
+<p>
+  The incoming capacity for new AMQP sessions, measured in octets. Non-zero policy values overwrite values specified for a listener object (AMQP Begin, incoming-window).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSessions</em> (integer, default=<em>32768</em>)
+</dt>
+<dd>
+<p>
+  The maximum number of sessions that may be created on this connection. Non-zero policy values overwrite values specified for a listener object (AMQP Open, channel-max).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSenders</em> (integer, default=<em>2147483647</em>)
+</dt>
+<dd>
+<p>
+  The maximum number of sending links that may be created on this connection. A value of <em>0</em> disables all sender links.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxReceivers</em> (integer, default=<em>2147483647</em>)
+</dt>
+<dd>
+<p>
+  The maximum number of receiving links that may be created on this connection. A value of <em>0</em> disables all receiver links.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowDynamicSource</em> (boolean)
+</dt>
+<dd>
+<p>
+  Whether this connection is allowed to create dynamic receiving links (links to resources that do not exist on the peer). A value of <em>true</em> means that users are able to automatically create resources on the peer system.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowAnonymousSender</em> (boolean)
+</dt>
+<dd>
+<p>
+  Whether this connection is allowed to create sending links if the sender does not provide a target address. By prohibiting anonymous senders, the router only needs to verify once, when the link is created, that the sender is permitted to send messages to the target address. The router does not need to verify each message that is sent on the link. A value of <em>true</em> means that users may send messages to any address. Allowing anonymous senders can also decrease performance: if the  [...]
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowUserIdProxy</em> (boolean)
+</dt>
+<dd>
+<p>
+  Whether this connection is allowed to send messages with a user ID that is different than the connection&#8217;s authenticated user name.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowWaypointLinks</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+  Whether this connection is allowed to claim <em>waypoint.N</em> capability for attached links.  This allows endpoints to act as waypoints without needing auto-links.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowDynamicLinkRoutes</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+  Whether this connection is allowed to dynamically create connection-scoped link route destinations.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowAdminStatusUpdate</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+  Whether this connection is allowed to update the admin status of other connections. Note: Inter-router connections cannot be deleted at any time.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowFallbackLinks</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+  Whether this connection is allowed to claim <em>qd.fallback</em> capability for attached links.  This allows endpoints to act as fallback destinations for addresses that have fallback capability enabled.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>sources</em> (string)
+</dt>
+<dd>
+<p>
+</p>
+</dd>
+<dt class="hdlist1">
+<em>targets</em> (string)
+</dt>
+<dd>
+<p>
+</p>
+</dd>
+<dt class="hdlist1">
+<em>sourcePattern</em> (string)
+</dt>
+<dd>
+<p>
+</p>
+</dd>
+<dt class="hdlist1">
+<em>targetPattern</em> (string)
+</dt>
+<dd>
+<p>
+</p>
+</dd>
+</dl></div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_see_also">SEE ALSO</h2>
+<div class="sectionbody">
+<div class="paragraph"><p><strong>qdrouterd(8)</strong>, <strong>qdmanage(8)</strong></p></div>
+<div class="paragraph"><p><a href="http://qpid.apache.org/components/dispatch-router">http://qpid.apache.org/components/dispatch-router</a></p></div>
+</div>
+</div>
+
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/">Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/">License</a></li>
+            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
diff --git a/content/releases/qpid-dispatch-1.4.0/index.html b/content/releases/qpid-dispatch-1.17.0/man/qdrouterd.html
similarity index 71%
copy from content/releases/qpid-dispatch-1.4.0/index.html
copy to content/releases/qpid-dispatch-1.17.0/man/qdrouterd.html
index f1f5a77..89543f6 100644
--- a/content/releases/qpid-dispatch-1.4.0/index.html
+++ b/content/releases/qpid-dispatch-1.17.0/man/qdrouterd.html
@@ -21,7 +21,7 @@
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
   <head>
-    <title>Qpid Dispatch 1.4.0 - Apache Qpid&#8482;</title>
+    <title>SYNOPSIS - Apache Qpid&#8482;</title>
     <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
     <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
     <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,72 +111,66 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
       </div>
 
       <div id="-middle" class="panel">
-        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Dispatch 1.4.0</li></ul>
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-dispatch-1.17.0/index.html">Qpid Dispatch 1.17.0</a></li><li>SYNOPSIS</li></ul>
 
         <div id="-middle-content">
-          <h1 id="qpid-dispatch-140">Qpid Dispatch 1.4.0</h1>
-
-<p>Dispatch is a lightweight AMQP 1.0 message router. More about
-<a href="/components/dispatch-router/index.html">Qpid
-Dispatch</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<h2 id="downloads">Downloads</h2>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of
-the files you download.</p>
-
-<table>
-<thead>
-<tr>
-  <th>Content</th>
-  <th>Download</th>
-  <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-  <td>Dispatch router</td>
-  <td><a href="http://archive.apache.org/dist/qpid/dispatch/1.4.0/qpid-dispatch-1.4.0.tar.gz">qpid-dispatch-1.4.0.tar.gz</a></td>
-  <td><a href="https://archive.apache.org/dist/qpid/dispatch/1.4.0/qpid-dispatch-1.4.0.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/dispatch/1.4.0/qpid-dispatch-1.4.0.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="user-guide/index.html">Using Qpid Dispatch</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf?p=qpid-dispatch.git;a=blob_plain;f=README;hb=1.4.0">Installing Qpid Dispatch from
-source</a></li>
-<li><a href="man/qdrouterd.html">qdrouterd</a> - Router daemon</li>
-<li><a href="man/qdrouterd.conf.html">qdrouterd.conf</a> - Daemon configuration</li>
-<li><a href="man/qdstat.html">qdstat</a> - Get router statistics</li>
-<li><a href="man/qdmanage.html">qdmanage</a> - Manage the router</li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/dispatch/1.4.0">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+DISPATCH+AND+fixVersion+%3D+%271.4.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-dispatch.git/tree/refs/tags/1.4.0">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
-  _deferredFunctions.push(function() {
-      if ("1.4.0" === "1.16.1") {
-          _modifyCurrentReleaseLinks();
-      }
-  });
-</script>
+          <div class="sect1">
+<h2 id="_synopsis">SYNOPSIS</h2>
+<div class="sectionbody">
+<div class="paragraph"><p><strong>qdrouterd</strong> [<em>OPTIONS</em>]</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_description">DESCRIPTION</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>The Qpid Dispatch router (<em>qdrouterd</em>) is a network daemon that directs
+AMQP 1.0 messages between endpoints, such as messaging clients and
+servers.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_options">OPTIONS</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>-c, --config=PATH (/usr/local/etc/qpid-dispatch/qdrouterd.conf)
+:   Load configuration from file at PATH</p></div>
+<div class="paragraph"><p>-I, --include=PATH (/usr/local/lib/qpid-dispatch/python)
+:   Location of Dispatch&#8217;s Python library</p></div>
+<div class="paragraph"><p>-d, --daemon
+:   Run process as a SysV-style daemon</p></div>
+<div class="paragraph"><p>-P, --pidfile
+:   If daemon, the file for the stored daemon pid</p></div>
+<div class="paragraph"><p>-U, --user
+:   If daemon, the username to run as</p></div>
+<div class="paragraph"><p>-T, --test-hooks
+:   Enable internal system testing features</p></div>
+<div class="paragraph"><p>-v, --version
+:   Print the version of Qpid Dispatch Router</p></div>
+<div class="paragraph"><p>-h, --help
+:   Print this help</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_files">FILES</h2>
+<div class="sectionbody">
+<div class="dlist"><dl>
+<dt class="hdlist1">
+/usr/local/etc/qdrouterd.conf
+</dt>
+<dd>
+<p>
+  Configuration file.
+</p>
+</dd>
+</dl></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_see_also">SEE ALSO</h2>
+<div class="sectionbody">
+<div class="paragraph"><p><em>qdrouterd.conf(5)</em>, <em>qdstat(8)</em>, <em>qdmanage(8)</em></p></div>
+<div class="paragraph"><p><a href="http://qpid.apache.org/components/dispatch-router">http://qpid.apache.org/components/dispatch-router</a></p></div>
+</div>
+</div>
 
 
           <hr/>
diff --git a/content/releases/qpid-dispatch-1.17.0/man/qdstat.html b/content/releases/qpid-dispatch-1.17.0/man/qdstat.html
new file mode 100644
index 0000000..f852877
--- /dev/null
+++ b/content/releases/qpid-dispatch-1.17.0/man/qdstat.html
@@ -0,0 +1,1906 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements.  See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership.  The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License.  You may obtain a copy of the License at
+ -
+ -   http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied.  See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>SYNOPSIS - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-dispatch-1.17.0/index.html">Qpid Dispatch 1.17.0</a></li><li>SYNOPSIS</li></ul>
+
+        <div id="-middle-content">
+          <div class="sect1">
+<h2 id="_synopsis">SYNOPSIS</h2>
+<div class="sectionbody">
+<div class="paragraph"><p><strong>qdstat</strong> [<em>OPTIONS</em>]</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_description">DESCRIPTION</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>An AMQP monitoring tool that shows status information about networks of Dispatch routers. It can display connections, network nodes and links, policy, and router stats such as memory use.</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_options">OPTIONS</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>-h, --help
+:   show this help message and exit</p></div>
+<div class="paragraph"><p>--version
+:   show program&#8217;s version number and exit</p></div>
+<div class="paragraph"><p>-v, --verbose
+:   Show maximum detail</p></div>
+<div class="paragraph"><p>--limit LIMIT
+:   Limit number of output rows. Unlimited if limit is zero or if limit not specified</p></div>
+<div class="paragraph"><p>--csv
+:   Render tabular output in csv format</p></div>
+<div class="paragraph"><p>-g, --general
+:   Show General Router Stats</p></div>
+<div class="paragraph"><p>-c, --connections
+:   Show Connections</p></div>
+<div class="paragraph"><p>-l, --links
+:   Show Router Links</p></div>
+<div class="paragraph"><p>-n, --nodes
+:   Show Router Nodes</p></div>
+<div class="paragraph"><p>-e, --edge
+:   Show edge connections</p></div>
+<div class="paragraph"><p>-a, --address
+:   Show Router Addresses</p></div>
+<div class="paragraph"><p>-m, --memory
+:   Show Router Memory Stats</p></div>
+<div class="paragraph"><p>-p, --policy
+:   Show Router Policy</p></div>
+<div class="paragraph"><p>--autolinks
+:   Show Auto Links</p></div>
+<div class="paragraph"><p>--linkroutes
+:   Show Link Routes</p></div>
+<div class="paragraph"><p>--vhosts
+:   Show Vhosts</p></div>
+<div class="paragraph"><p>--vhostgroups
+:   Show Vhost Groups</p></div>
+<div class="paragraph"><p>--vhoststats
+:   Show Vhost Stats</p></div>
+<div class="paragraph"><p>--log
+:   Show recent log entries</p></div>
+<div class="paragraph"><p>--all-entities
+:   Show all router entities. Can be combined with --all-routers option</p></div>
+<div class="paragraph"><p>--all-routers
+:   Show entities for all routers in network. Can also be used in combination with other options</p></div>
+<div class="paragraph"><p>-r ROUTER-ID, --router ROUTER-ID
+:   Router to be queried</p></div>
+<div class="paragraph"><p>-d EDGE-ROUTER-ID, --edge-router EDGE-ROUTER-ID
+:   Edge Router to be queried</p></div>
+<div class="paragraph"><p>-b URL, --bus URL
+:   URL of the messaging bus to connect to default 0.0.0.0</p></div>
+<div class="paragraph"><p>-t SECS, --timeout SECS
+:   Maximum time to wait for connection in seconds default 5</p></div>
+<div class="paragraph"><p>--ssl-certificate CERT
+:   Client SSL certificate (PEM Format)</p></div>
+<div class="paragraph"><p>--ssl-key KEY
+:   Client SSL private key (PEM Format)</p></div>
+<div class="paragraph"><p>--ssl-trustfile TRUSTED-CA-DB
+:   Trusted Certificate Authority Database file (PEM Format)</p></div>
+<div class="paragraph"><p>--ssl-password PASSWORD
+:   Certificate password, will be prompted if not specifed.</p></div>
+<div class="paragraph"><p>--ssl-password-file SSL-PASSWORD-FILE
+:   Certificate password, will be prompted if not specifed.</p></div>
+<div class="paragraph"><p>--sasl-mechanisms SASL-MECHANISMS
+:   Allowed sasl mechanisms to be supplied during the sasl handshake.</p></div>
+<div class="paragraph"><p>--sasl-username SASL-USERNAME
+:   User name for SASL plain authentication</p></div>
+<div class="paragraph"><p>--sasl-password SASL-PASSWORD
+:   Password for SASL plain authentication</p></div>
+<div class="paragraph"><p>--sasl-password-file SASL-PASSWORD-FILE
+:   Password for SASL plain authentication</p></div>
+<div class="paragraph"><p>--ssl-disable-peer-name-verify
+:   Disables SSL peer name verification. WARNING - This option is insecure and must not be used in production environments</p></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_output_columns">OUTPUT COLUMNS</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_qdstat_g">qdstat -g</h3>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+Version
+</dt>
+<dd>
+<p>
+The version of Dispatch Router.
+</p>
+</dd>
+<dt class="hdlist1">
+Mode
+</dt>
+<dd>
+<p>
+The router&#8217;s operating mode:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<code>standalone</code> - The router operates as a single, standalone network node.
+</p>
+</li>
+<li>
+<p>
+<code>interior</code> - The router operates in cooperation with other interior routers in an interconnected network.
+</p>
+</li>
+<li>
+<p>
+<code>edge</code> - The router operates at the edge of the router network. It maintains an uplink connection to an interior router.
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+Router Id
+</dt>
+<dd>
+<p>
+The router&#8217;s ID.
+</p>
+</dd>
+<dt class="hdlist1">
+Uptime
+</dt>
+<dd>
+<p>
+Time this router has been up. Displayed in the days:hours:minutes:seconds format.
+</p>
+</dd>
+</dl></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+Link Routes
+</dt>
+<dd>
+<p>
+The number of active and inactive link routes configured for this router.
+</p>
+</dd>
+<dt class="hdlist1">
+Auto Links
+</dt>
+<dd>
+<p>
+The number of incoming and outgoing auto links configured for this router.
+</p>
+</dd>
+<dt class="hdlist1">
+Links
+</dt>
+<dd>
+<p>
+The number of incoming and outgoing links attached to the router.
+</p>
+</dd>
+<dt class="hdlist1">
+Nodes
+</dt>
+<dd>
+<p>
+The number of peer routers connected to this router.
+</p>
+</dd>
+<dt class="hdlist1">
+Addresses
+</dt>
+<dd>
+<p>
+The number of addresses with links attached to this router.
+</p>
+</dd>
+<dt class="hdlist1">
+Connections
+</dt>
+<dd>
+<p>
+The number of connections to the router. This includes connections from and to any AMQP route container.
+</p>
+</dd>
+<dt class="hdlist1">
+Presettled Count
+</dt>
+<dd>
+<p>
+The number of presettled deliveries forwarded by this router.
+</p>
+</dd>
+<dt class="hdlist1">
+Dropped Presettled Count
+</dt>
+<dd>
+<p>
+The number of presettled deliveries that this router dropped due to congestion.
+</p>
+</dd>
+<dt class="hdlist1">
+Accepted Count
+</dt>
+<dd>
+<p>
+The number of deliveries forwarded by this router that were accepted.
+</p>
+</dd>
+<dt class="hdlist1">
+Rejected Count
+</dt>
+<dd>
+<p>
+The number of deliveries forwarded by this router that were rejected.
+</p>
+</dd>
+<dt class="hdlist1">
+Released Count
+</dt>
+<dd>
+<p>
+The number of deliveries forwarded by this router that were released.
+</p>
+</dd>
+<dt class="hdlist1">
+Modified Count
+</dt>
+<dd>
+<p>
+The number of deliveries forwarded by this router that were modified.
+</p>
+</dd>
+<dt class="hdlist1">
+Deliveries Delayed &gt; 1sec
+</dt>
+<dd>
+<p>
+The number of deliveries forwarded by this router that were unsettled for more than one second.
+</p>
+</dd>
+<dt class="hdlist1">
+Deliveries Delayed &gt; 10sec
+</dt>
+<dd>
+<p>
+The number of deliveries forwarded by this router that were unsettled for more than ten seconds.
+</p>
+</dd>
+<dt class="hdlist1">
+Deliveries Stuck &gt; 10sec
+</dt>
+<dd>
+<p>
+The number of deliveries forwarded by this router that were stuck for more than ten seconds.
+</p>
+</dd>
+<dt class="hdlist1">
+Deliveries to Fallback
+</dt>
+<dd>
+<p>
+The number of deliveries that were forwarded to a fallback destination.
+</p>
+</dd>
+<dt class="hdlist1">
+Links Blocked
+</dt>
+<dd>
+<p>
+The number of links that are blocked. A blocked link is one in which the available credit has remained zero for more than 10 seconds.
+</p>
+</dd>
+<dt class="hdlist1">
+Ingress Count
+</dt>
+<dd>
+<p>
+The number of messages sent to this router.
+</p>
+</dd>
+<dt class="hdlist1">
+Egress Count
+</dt>
+<dd>
+<p>
+The number of messages sent from this router.
+</p>
+</dd>
+<dt class="hdlist1">
+Transit Count
+</dt>
+<dd>
+<p>
+The number of deliveries sent to another router in the network.
+</p>
+</dd>
+<dt class="hdlist1">
+Deliveries from Route Container
+</dt>
+<dd>
+<p>
+The number of deliveries this router has received from AMQP route containers.
+</p>
+</dd>
+<dt class="hdlist1">
+Deliveries to Route Container
+</dt>
+<dd>
+<p>
+The number of deliveries this router has sent to AMQP route containers.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_qdstat_c">qdstat -c</h3>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+id
+</dt>
+<dd>
+<p>
+The connection&#8217;s unique identifier.
+</p>
+</dd>
+<dt class="hdlist1">
+host
+</dt>
+<dd>
+<p>
+The hostname or internet address of the remotely-connected AMQP container.
+</p>
+</dd>
+<dt class="hdlist1">
+container
+</dt>
+<dd>
+<p>
+The container name of the remotely-connected AMQP container.
+</p>
+</dd>
+<dt class="hdlist1">
+role
+</dt>
+<dd>
+<p>
+The connection&#8217;s role:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>normal</em> - The normal connection from a client to a router.
+</p>
+</li>
+<li>
+<p>
+<em>inter-router</em> - The connection between routers to form a network.
+</p>
+</li>
+<li>
+<p>
+<em>route-container</em> - The connection to or from a broker or other host to receive link routes and waypoints.
+</p>
+</li>
+<li>
+<p>
+<em>edge</em> - The connection between an edge router and an interior router.
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+dir
+</dt>
+<dd>
+<p>
+The direction in which the connection was established:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>in</em> - The connection was initiated by the remote container.
+</p>
+</li>
+<li>
+<p>
+<em>out</em> - The connection was initiated by this router.
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+security
+</dt>
+<dd>
+<p>
+The security or encryption method, if any, used for this connection.
+</p>
+</dd>
+<dt class="hdlist1">
+authentication
+</dt>
+<dd>
+<p>
+The authentication method and user ID of the connection&#8217;s authenticated user.
+</p>
+</dd>
+<dt class="hdlist1">
+tenant
+</dt>
+<dd>
+<p>
+If the connection is to a listener using multi-tenancy, this column displays the tenant namespace for the connection.
+</p>
+</dd>
+<dt class="hdlist1">
+last dlv
+</dt>
+<dd>
+<p>
+Time since the last delivery arrived on this connection. Displayed in the days:hours:minutes:seconds format.
+</p>
+</dd>
+<dt class="hdlist1">
+uptime
+</dt>
+<dd>
+<p>
+Time this connection has been up. Displayed in the days:hours:minutes:seconds format.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_qdstat_l">qdstat -l</h3>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+type
+</dt>
+<dd>
+<p>
+The type of link:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>router-control</em> - An inter-router link that is reserved for control messages exchanged between routers.
+</p>
+</li>
+<li>
+<p>
+<em>inter-router</em> - An inter-router link that is used for normal message-routed deliveries.
+</p>
+</li>
+<li>
+<p>
+<em>endpoint</em> - A normal link to an external endpoint container.
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+dir
+</dt>
+<dd>
+<p>
+The direction that messages flow on the link:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>in</em> - Deliveries flow inbound to the router.
+</p>
+</li>
+<li>
+<p>
+<em>out</em> - Deliveries flow outbound from the router.
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+conn id
+</dt>
+<dd>
+<p>
+The unique identifier of the connection over which this link is
+attached.
+</p>
+</dd>
+<dt class="hdlist1">
+id
+</dt>
+<dd>
+<p>
+The unique identifier of this link.
+</p>
+</dd>
+<dt class="hdlist1">
+peer
+</dt>
+<dd>
+<p>
+For link-routed links, the unique identifier of the peer link. In
+link routing, an inbound link is paired with an outbound link.
+</p>
+</dd>
+<dt class="hdlist1">
+class
+</dt>
+<dd>
+<p>
+The class of the address bound to the link:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>local</em> - The address that is local to this router (temporary).
+</p>
+</li>
+<li>
+<p>
+<em>topo</em> - A topological address used for router control messages.
+</p>
+</li>
+<li>
+<p>
+<em>router</em> - A summary router address used to route messages to a remote router&#8217;s local addresses.
+</p>
+</li>
+<li>
+<p>
+<em>mobile</em> - A mobile address for an attached consumer or producer.
+</p>
+</li>
+<li>
+<p>
+<em>link-in</em> - The address match for incoming routed links.
+</p>
+</li>
+<li>
+<p>
+<em>link-out</em> - The address match for outgoing routed links.
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+addr
+</dt>
+<dd>
+<p>
+The address bound to the link.
+</p>
+</dd>
+<dt class="hdlist1">
+phs
+</dt>
+<dd>
+<p>
+The phase of the address bound to the link.
+</p>
+</dd>
+<dt class="hdlist1">
+cap
+</dt>
+<dd>
+<p>
+The capacity, in deliveries, of the link.
+</p>
+</dd>
+<dt class="hdlist1">
+pri
+</dt>
+<dd>
+<p>
+The priority of the link.  Priority influences the order in which links are processed within a connection.
+Higher numbers represent higher priorities.
+</p>
+</dd>
+<dt class="hdlist1">
+undel
+</dt>
+<dd>
+<p>
+The number of undelivered messages stored on the link&#8217;s FIFO.
+</p>
+</dd>
+<dt class="hdlist1">
+unsett
+</dt>
+<dd>
+<p>
+The number of unsettled deliveries being tracked by the link.
+</p>
+</dd>
+<dt class="hdlist1">
+deliv
+</dt>
+<dd>
+<p>
+The total number of deliveries that have transited this link.
+</p>
+</dd>
+<dt class="hdlist1">
+presett
+</dt>
+<dd>
+<p>
+The number of pre-settled deliveries that transited this link.
+</p>
+</dd>
+<dt class="hdlist1">
+psdrop
+</dt>
+<dd>
+<p>
+The number of pre-settled deliveries that were dropped due to congestion.
+</p>
+</dd>
+<dt class="hdlist1">
+acc
+</dt>
+<dd>
+<p>
+The number of deliveries on this link that were accepted.
+</p>
+</dd>
+<dt class="hdlist1">
+rej
+</dt>
+<dd>
+<p>
+The number of deliveries on this link that were rejected.
+</p>
+</dd>
+<dt class="hdlist1">
+rel
+</dt>
+<dd>
+<p>
+The number of deliveries on this link that were released.
+</p>
+</dd>
+<dt class="hdlist1">
+mod
+</dt>
+<dd>
+<p>
+The number of deliveries on this link that were modified.
+</p>
+</dd>
+<dt class="hdlist1">
+delay
+</dt>
+<dd>
+<p>
+The number of settled deliveries on this link that were unsettled for more than one second.
+</p>
+</dd>
+<dt class="hdlist1">
+rate
+</dt>
+<dd>
+<p>
+The average rate (over a period of five seconds) at which deliveries have been settled on this link.
+</p>
+</dd>
+<dt class="hdlist1">
+stuck
+</dt>
+<dd>
+<p>
+The number of deliveries on this link that are flagged as "stuck".  A delivery is considered stuck if it has been either undelivered or unsettled for more than 10 seconds.
+</p>
+</dd>
+<dt class="hdlist1">
+cred
+</dt>
+<dd>
+<p>
+The number of flow credits currently available on this link.
+</p>
+</dd>
+<dt class="hdlist1">
+blkd
+</dt>
+<dd>
+<p>
+The time elapsed since the available credit for this link became zero and has remained zero.
+</p>
+</dd>
+<dt class="hdlist1">
+admin
+</dt>
+<dd>
+<p>
+The administrative status of the link (with -v option only):
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>enabled</em> - The link is enabled for normal operation.
+</p>
+</li>
+<li>
+<p>
+<em>disabled</em> - The link is disabled and should be quiescing or stopped (not yet supported).
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+oper
+</dt>
+<dd>
+<p>
+The operational status of the link (with -v option only):
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>up</em> - The link is operational.
+</p>
+</li>
+<li>
+<p>
+<em>down</em> - The link is not attached.
+</p>
+</li>
+<li>
+<p>
+<em>quiescing</em> - The link is in the process of quiescing (not yet supported).
+</p>
+</li>
+<li>
+<p>
+<em>idle</em> - The link has completed quiescing and is idle (not yet supported).
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+name
+</dt>
+<dd>
+<p>
+The link name (only shown if the -v option is provided).
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_qdstat_n">qdstat -n</h3>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+router-id
+</dt>
+<dd>
+<p>
+The router&#8217;s ID.
+</p>
+</dd>
+<dt class="hdlist1">
+next-hop
+</dt>
+<dd>
+<p>
+If this router is not a neighbor, this field identifies the next-hop neighbor used to reach this router.
+</p>
+</dd>
+<dt class="hdlist1">
+link
+</dt>
+<dd>
+<p>
+The ID of the link to the neighbor router.
+</p>
+</dd>
+<dt class="hdlist1">
+cost
+</dt>
+<dd>
+<p>
+The topology cost to this remote router (with -v option only).
+</p>
+</dd>
+<dt class="hdlist1">
+neighbors
+</dt>
+<dd>
+<p>
+The list of neighbor routers (the router&#8217;s link-state). This field is available only if you specify the -v option.
+</p>
+</dd>
+<dt class="hdlist1">
+valid-origins
+</dt>
+<dd>
+<p>
+The list of origin routers for which the best path to the listed router passes through this router (available only with the -v option).
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_qdstat_e">qdstat -e</h3>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+id
+</dt>
+<dd>
+<p>
+The connection&#8217;s unique identifier.
+</p>
+</dd>
+<dt class="hdlist1">
+host
+</dt>
+<dd>
+<p>
+The hostname or internet address of the remotely-connected edge router.
+</p>
+</dd>
+<dt class="hdlist1">
+container
+</dt>
+<dd>
+<p>
+The container name of the remotely-connected edge router.
+</p>
+</dd>
+<dt class="hdlist1">
+dir
+</dt>
+<dd>
+<p>
+The direction in which the connection was established:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>in</em> - The connection was initiated by the edge router.
+</p>
+</li>
+<li>
+<p>
+<em>out</em> - The connection was initiated by this router.
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+security
+</dt>
+<dd>
+<p>
+The security or encryption method, if any, used for this connection.
+</p>
+</dd>
+<dt class="hdlist1">
+authentication
+</dt>
+<dd>
+<p>
+The authentication method and user ID of the connection&#8217;s authenticated user.
+</p>
+</dd>
+<dt class="hdlist1">
+tenant
+</dt>
+<dd>
+<p>
+If the connection is to a listener using multi-tenancy, this column displays the tenant namespace for the connection.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_qdstat_a">qdstat -a</h3>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+class
+</dt>
+<dd>
+<p>
+The class of the address:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>local</em> - The address that is local to this router.
+</p>
+</li>
+<li>
+<p>
+<em>topo</em> - The topological address used for router control messages.
+</p>
+</li>
+<li>
+<p>
+<em>router</em> - A summary router address used to route messages to a remote router&#8217;s local addresses.
+</p>
+</li>
+<li>
+<p>
+<em>mobile</em> - A mobile address for an attached consumer or producer.
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+addr
+</dt>
+<dd>
+<p>
+The address text.
+</p>
+</dd>
+<dt class="hdlist1">
+phs
+</dt>
+<dd>
+<p>
+For mobile addresses only, the phase of the address. Direct addresses have only a phase 0. Waypoint addresses have multiple phases, normally 0 and 1.
+</p>
+</dd>
+<dt class="hdlist1">
+distrib
+</dt>
+<dd>
+<p>
+One of the following distribution methods used for this address:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>multicast</em> - A copy of each message is delivered once to each consumer for the address.
+</p>
+</li>
+<li>
+<p>
+<em>closest</em> - Each message is delivered to only one consumer for the address. The closest (lowest cost) consumer will be chosen. If there are multiple lowest-cost consumers, deliveries will be spread across those consumers.
+</p>
+</li>
+<li>
+<p>
+<em>balanced</em> - Each message is delivered to only one consumer for the address. The consumer with the fewest outstanding (unsettled) deliveries will be chosen. The cost of the route to the consumer is a threshold for delivery (that is, higher cost consumers will only receive deliveries if closer consumers are backed up).
+</p>
+</li>
+<li>
+<p>
+<em>flood</em> - Used only for router-control traffic. This is multicast without the prevention of duplicate deliveries.
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+pri
+</dt>
+<dd>
+<p>
+The priority of the address.  If the address prefix/pattern is configured with a priority, that priority will appear
+in this column.  Messages for addresses configured with a priority will be forwarded according to the address&#8217;s priority.
+</p>
+</dd>
+<dt class="hdlist1">
+in-proc
+</dt>
+<dd>
+<p>
+The number of in-process consumers for this address.
+</p>
+</dd>
+<dt class="hdlist1">
+local
+</dt>
+<dd>
+<p>
+For this router, the number of local consumers for this address, or for link-routed addresses, the number of locally-attached containers that are destinations for this address.
+</p>
+</dd>
+<dt class="hdlist1">
+remote
+</dt>
+<dd>
+<p>
+The number of remote routers that have at least one consumer for this address.
+</p>
+</dd>
+<dt class="hdlist1">
+in
+</dt>
+<dd>
+<p>
+The number of deliveries for this address that entered the network on this router.
+</p>
+</dd>
+<dt class="hdlist1">
+out
+</dt>
+<dd>
+<p>
+The number of deliveries for this address that exited the network on this router.
+</p>
+</dd>
+<dt class="hdlist1">
+thru
+</dt>
+<dd>
+<p>
+The number of deliveries for this address that were forwarded to other routers.
+</p>
+</dd>
+<dt class="hdlist1">
+to-proc
+</dt>
+<dd>
+<p>
+The number of deliveries for this address that were delivered to an in-process consumer.
+</p>
+</dd>
+<dt class="hdlist1">
+from-proc
+</dt>
+<dd>
+<p>
+The number of deliveries for this address that were received from an in-process producer.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_qdstat_linkroutes">qdstat --linkroutes</h3>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+prefix
+</dt>
+<dd>
+<p>
+The address prefix of the link route.
+</p>
+</dd>
+<dt class="hdlist1">
+dir
+</dt>
+<dd>
+<p>
+The direction of matching links (from this router&#8217;s perspective).
+</p>
+</dd>
+<dt class="hdlist1">
+distrib
+</dt>
+<dd>
+<p>
+The distribution method used for routed links. This value should always be <em>linkBalanced</em>, which is the only supported distribution for routed links.
+</p>
+</dd>
+<dt class="hdlist1">
+status
+</dt>
+<dd>
+<p>
+The operational status of the link route:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>active</em> - The route is actively routing attaches (it is ready for use).
+</p>
+</li>
+<li>
+<p>
+<em>inactive</em> - The route is inactive, because no local destination is connected.
+</p>
+</li>
+</ul></div>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_qdstat_autolinks">qdstat --autolinks</h3>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+addr
+</dt>
+<dd>
+<p>
+The auto link&#8217;s address.
+</p>
+</dd>
+<dt class="hdlist1">
+dir
+</dt>
+<dd>
+<p>
+The direction that messages flow over the auto link:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>in</em> - Messages flow in from the route-container to the router network.
+</p>
+</li>
+<li>
+<p>
+<em>out</em> - Messages flow out to the route-container from the router network.
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+phs
+</dt>
+<dd>
+<p>
+The address phase for this auto link.
+</p>
+</dd>
+<dt class="hdlist1">
+link
+</dt>
+<dd>
+<p>
+The ID of the link managed by this auto link.
+</p>
+</dd>
+<dt class="hdlist1">
+status
+</dt>
+<dd>
+<p>
+The operational status of this auto link:
+</p>
+<div class="ulist"><ul>
+<li>
+<p>
+<em>inactive</em> - There is no connected container for this auto link.
+</p>
+</li>
+<li>
+<p>
+<em>attaching</em> - The link is attaching to the container.
+</p>
+</li>
+<li>
+<p>
+<em>failed</em> - The link-attach failed.
+</p>
+</li>
+<li>
+<p>
+<em>active</em> - The link is operational.
+</p>
+</li>
+<li>
+<p>
+<em>quiescing</em> - The link is quiescing (not yet supported).
+</p>
+</li>
+<li>
+<p>
+<em>idle</em> - The link is idle (not yet supported).
+</p>
+</li>
+</ul></div>
+</dd>
+<dt class="hdlist1">
+lastErr
+</dt>
+<dd>
+<p>
+The description of the last attach failure that occurred on this auto link.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_qdstat_policy">qdstat --policy</h3>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+Maximum Concurrent Connections
+</dt>
+<dd>
+<p>
+The maximum number of concurrent client connections allowed for this router.
+</p>
+</dd>
+<dt class="hdlist1">
+Maximum Message Size
+</dt>
+<dd>
+<p>
+The maximum size in bytes of AMQP message transfers allowed for this router. This limit is applied to transfers over user connections and to transfers to interior
+routers from edge routers.
+</p>
+</dd>
+<dt class="hdlist1">
+Enable Vhost Policy
+</dt>
+<dd>
+<p>
+Enables the router to enforce the connection denials and resource limits defined in the
+vhost policies.
+</p>
+</dd>
+<dt class="hdlist1">
+Enable Vhost Name Patterns
+</dt>
+<dd>
+<p>
+Enable vhost name patterns. When false vhost hostnames are treated as literal strings.
+When true vhost hostnames are treated as match patterns.
+</p>
+</dd>
+<dt class="hdlist1">
+Policy Directory
+</dt>
+<dd>
+<p>
+The absolute path to a directory that holds vhost policy definition files in JSON format (*.json).
+</p>
+</dd>
+<dt class="hdlist1">
+Default Vhost
+</dt>
+<dd>
+<p>
+The name of the default vhost policy. This policy rule set is applied to a connection for which a
+vhost policy has not otherwise been configured. Processing for the default vhost is enabled by
+default and set to select vhost <em>$default</em>. To disable default vhost processing set defaultVhost
+to blank or do not define a vhost named <em>$default</em>.
+</p>
+</dd>
+<dt class="hdlist1">
+Connections Processed
+</dt>
+<dd>
+<p>
+Count of all incoming connection attempts.
+</p>
+</dd>
+<dt class="hdlist1">
+Connections Denied
+</dt>
+<dd>
+<p>
+Count of all incoming connection attempts denied by policy.
+</p>
+</dd>
+<dt class="hdlist1">
+Connections Current
+</dt>
+<dd>
+<p>
+Count of currently active incoming connections.
+</p>
+</dd>
+<dt class="hdlist1">
+Links Denied
+</dt>
+<dd>
+<p>
+Count of all sender and receiver policy denials summed across all vhosts.
+</p>
+</dd>
+<dt class="hdlist1">
+Maximum Message Size Denied
+</dt>
+<dd>
+<p>
+Count of all maxMessageSize policy denials summed across all vhosts.
+</p>
+</dd>
+<dt class="hdlist1">
+Total Denials
+</dt>
+<dd>
+<p>
+Count of all policy denials for any reason summed across all vhosts.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_qdstat_vhosts">qdstat --vhosts</h3>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+hostname
+</dt>
+<dd>
+<p>
+The hostname of the vhost. This vhost policy applies
+to any client connection that uses this hostname in the <em>hostname</em> field of the incoming AMQP Open.
+</p>
+</dd>
+<dt class="hdlist1">
+maxConnections
+</dt>
+<dd>
+<p>
+The global maximum number of concurrent client connections allowed for this vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+maxMessageSize
+</dt>
+<dd>
+<p>
+Optional maximum size in bytes of AMQP message transfers allowed for connections to this vhost.
+This limit overrides the policy maxMessageSize value and may be overridden by vhost user group
+settings. A value of zero disables this limit.
+</p>
+</dd>
+<dt class="hdlist1">
+maxConnectionsPerUser
+</dt>
+<dd>
+<p>
+The maximum number of concurrent client connections allowed for any user.
+</p>
+</dd>
+<dt class="hdlist1">
+maxConnectionsPerHost
+</dt>
+<dd>
+<p>
+The maximum number of concurrent client connections allowed for any remote host
+(the host from which the client is connecting).
+</p>
+</dd>
+<dt class="hdlist1">
+allowUnknownUser
+</dt>
+<dd>
+<p>
+Set to <em>true</em> this allows <em>unknown users</em>, users who are not members of a defined user group, to
+connect to the vhost. Unknown users are assigned to the <em>$default</em> user group and receive
+<em>$default</em> settings.
+</p>
+</dd>
+<dt class="hdlist1">
+groups
+</dt>
+<dd>
+<p>
+Count of usergroups defined for this vhost.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_qdstat_vhoststats">qdstat --vhoststats</h3>
+<div class="paragraph"><p>Vhost Stats table</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+hostname
+</dt>
+<dd>
+<p>
+Name of the vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+connectionsApproved
+</dt>
+<dd>
+<p>
+Count of connections approved by policy for this vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+connectionsDenied
+</dt>
+<dd>
+<p>
+Count of connections denied by policy for this vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+connectionsCurrent
+</dt>
+<dd>
+<p>
+Count of active connections for this vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+sessionDenied
+</dt>
+<dd>
+<p>
+Count of sessions denied by policy for this vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+senderDenied
+</dt>
+<dd>
+<p>
+Count of senders denied by policy for this vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+receiverDenied
+</dt>
+<dd>
+<p>
+Count of receivers denied by policy for this vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+maxMessageSizeDenied
+</dt>
+<dd>
+<p>
+Count of transfers denied by maxMesageSize policy for this vhost.
+</p>
+</dd>
+</dl></div>
+<div class="paragraph"><p>Vhost User Stats table</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+vhost
+</dt>
+<dd>
+<p>
+Vhost hostname
+</p>
+</dd>
+<dt class="hdlist1">
+user
+</dt>
+<dd>
+<p>
+Authenticated user name
+</p>
+</dd>
+<dt class="hdlist1">
+remote hosts
+</dt>
+<dd>
+<p>
+List of remote hosts from which this user has connected to this vhost.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_qdstat_vhostgroups">qdstat --vhostgroups</h3>
+<div class="paragraph"><p>Table of settings for all vhosts and groups.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+vhost
+</dt>
+<dd>
+<p>
+Vhost name.
+</p>
+</dd>
+<dt class="hdlist1">
+group
+</dt>
+<dd>
+<p>
+Vhost user group name.
+</p>
+</dd>
+<dt class="hdlist1">
+maxConnectionsPerUser
+</dt>
+<dd>
+<p>
+Optional maximum number of connections that may be created by users
+in this group. This value, if specified, overrides the vhost
+maxConnectionsPerUser value.
+</p>
+</dd>
+<dt class="hdlist1">
+maxConnectionsPerHost
+</dt>
+<dd>
+<p>
+Optional maximum number of concurrent connections allowed for any
+remote host by users in this group. This value, if specified, overrides
+the vhost maxConnectionsPerHost value.
+</p>
+</dd>
+<dt class="hdlist1">
+maxMessageSize
+</dt>
+<dd>
+<p>
+Optional maximum size in bytes of AMQP message transfers allowed for
+connections created by users in this group. This limit overrides the
+policy and vhost maxMessageSize values. A value of zero disables this limit.
+</p>
+</dd>
+<dt class="hdlist1">
+maxFrameSize
+</dt>
+<dd>
+<p>
+The largest frame, in bytes, that may be sent on this connection. Non-zero
+policy values overwrite values specified for a listener object
+(AMQP Open, max-frame-size).
+</p>
+</dd>
+<dt class="hdlist1">
+maxSessionWindow
+</dt>
+<dd>
+<p>
+The incoming capacity for new AMQP sessions, measured in octets. Non-zero
+policy values overwrite values specified for a listener object
+(AMQP Begin, incoming-window).
+</p>
+</dd>
+<dt class="hdlist1">
+maxSessions
+</dt>
+<dd>
+<p>
+The maximum number of sessions that may be created on this connection.
+Non-zero policy values overwrite values specified for a listener object
+(AMQP Open, channel-max).
+</p>
+</dd>
+<dt class="hdlist1">
+maxSenders
+</dt>
+<dd>
+<p>
+The maximum number of sending links that may be created on this connection.
+A value of <em>0</em> disables all sender links.
+</p>
+</dd>
+<dt class="hdlist1">
+maxReceivers
+</dt>
+<dd>
+<p>
+The maximum number of receiving links that may be created on this connection.
+A value of <em>0</em> disables all receiver links.
+</p>
+</dd>
+<dt class="hdlist1">
+allowDynamicSource
+</dt>
+<dd>
+<p>
+Whether this connection is allowed to create dynamic receiving links
+(links to resources that do not exist on the peer). A value of <em>true</em> means
+that users are able to automatically create resources on the peer system.
+</p>
+</dd>
+<dt class="hdlist1">
+allowAnonymousSender
+</dt>
+<dd>
+<p>
+Whether this connection is allowed to create sending links if the sender
+does not provide a target address. By prohibiting anonymous senders,
+the router only needs to verify once, when the link is created, that
+the sender is permitted to send messages to the target address. The
+router does not need to verify each message that is sent on the link.
+A value of <em>true</em> means that users may send messages to any address.
+Allowing anonymous senders can also decrease performance: if the sender
+does not specify a target address, then the router must parse each message
+to determine how to route it.
+</p>
+</dd>
+<dt class="hdlist1">
+allowUserIdProxy
+</dt>
+<dd>
+<p>
+Whether this connection is allowed to send messages with a user ID that
+is different than the connection&#8217;s authenticated user name.
+</p>
+</dd>
+<dt class="hdlist1">
+allowWaypointLinks
+</dt>
+<dd>
+<p>
+Whether this connection is allowed to claim <em>waypoint.N</em> capability for
+attached links.  This allows endpoints to act as waypoints without
+needing auto-links.
+</p>
+</dd>
+<dt class="hdlist1">
+allowDynamicLinkRoutes
+</dt>
+<dd>
+<p>
+Whether this connection is allowed to dynamically create connection-scoped
+link route destinations.
+</p>
+</dd>
+<dt class="hdlist1">
+allowAdminStatusUpdate
+</dt>
+<dd>
+<p>
+Whether this connection is allowed to update the admin status of other
+connections. Note: Inter-router connections cannot be deleted at any time.
+</p>
+</dd>
+<dt class="hdlist1">
+allowFallbackLinks
+</dt>
+<dd>
+<p>
+Whether this connection is allowed to claim <em>qd.fallback</em> capability
+for attached links.  This allows endpoints to act as fallback destinations
+for addresses that have fallback capability enabled.
+</p>
+</dd>
+</dl></div>
+<div class="paragraph"><p>Tables for each vhost and user group.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+Vhost
+</dt>
+<dd>
+<p>
+Name of vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+UserGroup
+</dt>
+<dd>
+<p>
+Name of vhost usergroup.
+</p>
+</dd>
+<dt class="hdlist1">
+vhost
+</dt>
+<dd>
+<p>
+Name of vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+group
+</dt>
+<dd>
+<p>
+Name of vhost usergroup.
+</p>
+</dd>
+<dt class="hdlist1">
+users
+</dt>
+<dd>
+<p>
+A list of authenticated users for this user group.
+</p>
+</dd>
+<dt class="hdlist1">
+remoteHosts
+</dt>
+<dd>
+<p>
+A list of remote hosts from which the users may connect. A host can
+be a hostname, IP address, or IP address range. Use commas to separate
+multiple hosts. To allow access from all remote hosts, specify a
+wildcard <em>asterisk \*</em>. To deny access from all remote hosts, leave this
+attribute blank.
+</p>
+</dd>
+<dt class="hdlist1">
+sources
+</dt>
+<dd>
+<p>
+A list of source addresses from which users in this group may receive messages.
+To specify multiple addresses, separate the addresses with either a comma or
+a space. If you do not specify any addresses, users in this group are not
+allowed to receive messages from any addresses. You can use the substitution
+user name. You can use an <em>asterisk \*</em> wildcard to match one or more
+characters in an address. However, this wildcard is only recognized if
+it is the last character in the address name. You may specify attributes
+<em>sources</em> or <em>sourcePattern</em> but not both at the same time.
+</p>
+</dd>
+<dt class="hdlist1">
+targets
+</dt>
+<dd>
+<p>
+A list of target addresses to which users in this group may send messages.
+To specify multiple addresses, separate the addresses with either a comma or
+a space. If you do not specify any addresses, users in this group are not
+allowed to send messages to any addresses. You can use the substitution
+user name. You can use an <em>asterisk \*</em> wildcard to match one or more
+characters in an address. However, this wildcard is only recognized if it
+is the last character in the address name. You may specify attributes
+<em>targets</em> or <em>targetPattern</em> but not both at the same time.
+</p>
+</dd>
+<dt class="hdlist1">
+sourcePattern
+</dt>
+<dd>
+<p>
+A wildcarded pattern for matching source addresses from which users in
+this group may receive messages. The pattern consists of one or more
+tokens separated by a forward slash <em>/</em>. A token can be one of the
+following: <em>asterisk *</em>, <em>hash #</em>, or a sequence of characters
+that do not include <em>/</em>, <em>asterisk *</em>, or <em>hash #</em>.  The <em>asterisk *</em> token matches any single token.
+The <em>hash #</em> token matches zero or more tokens. <em>asterisk \*</em> has higher precedence than <em>hash \#</em>,
+and exact match has the highest precedence. To specify multiple addresses,
+separate the addresses with either a comma or a space. You can use the
+user&#8217;s authenticated user name. If you do not specify any addresses then
+users in this group are not allowed to receive messages from any addresses.
+You may specify attributes <em>sources</em> or <em>sourcePattern</em> but not both at
+the same time.
+</p>
+</dd>
+<dt class="hdlist1">
+targetPattern
+</dt>
+<dd>
+<p>
+A wildcarded pattern for matching target addresses to which users in this
+group may send messages. The pattern consists of one or more tokens
+separated by a forward slash "/". A token can be one of the following:
+<em>asterisk *</em>, <em>hash #</em>, or a sequence of characters that do not
+include "/", <em>asterisk *</em>, or <em>hash #</em>.  The <em>asterisk *</em> token matches any single token.  The <em>hash #</em>
+token matches zero or more tokens. <em>asterisk \*</em> has higher precedence than <em>hash \#</em>,
+and exact match has the highest precedence. To specify multiple addresses,
+separate the addresses with either a comma or a space. You can use the
+user&#8217;s authenticated user name. If you do not specify any addresses then
+users in this group are not allowed to send messages to any addresses.
+You may specify attributes <em>targets</em> or <em>targetPattern</em> but not both at
+the same time.
+</p>
+</dd>
+</dl></div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_see_also">SEE ALSO</h2>
+<div class="sectionbody">
+<div class="paragraph"><p><em>qdrouterd(8)</em>, <em>qdmanage(8)</em>, <em>qdrouterd.conf(5)</em></p></div>
+<div class="paragraph"><p><a href="http://qpid.apache.org/components/dispatch-router">http://qpid.apache.org/components/dispatch-router</a></p></div>
+</div>
+</div>
+
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/">Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/">License</a></li>
+            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
diff --git a/content/releases/qpid-dispatch-1.17.0/release-notes.html b/content/releases/qpid-dispatch-1.17.0/release-notes.html
new file mode 100644
index 0000000..2d9a036
--- /dev/null
+++ b/content/releases/qpid-dispatch-1.17.0/release-notes.html
@@ -0,0 +1,220 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements.  See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership.  The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License.  You may obtain a copy of the License at
+ -
+ -   http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied.  See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>Qpid Dispatch 1.17.0 Release Notes - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-dispatch-1.17.0/index.html">Qpid Dispatch 1.17.0</a></li><li>Qpid Dispatch 1.17.0 Release Notes</li></ul>
+
+        <div id="-middle-content">
+          <h1 id="qpid-dispatch-1170-release-notes">Qpid Dispatch 1.17.0 Release Notes</h1>
+
+<p>Dispatch is a lightweight AMQP 1.0 message router. More about
+<a href="/components/dispatch-router/index.html">Qpid
+Dispatch</a>.</p>
+
+<p>For more information about this release, including download links and
+documentation, see the <a href="index.html">release overview</a>.</p>
+
+<h2 id="new-features-and-improvements">New features and improvements</h2>
+
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1539">DISPATCH-1539</a> - Python 2 has expired. What is the qpid-dispatch strategy going forward?</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2108">DISPATCH-2108</a> - TCP adaptor should aggregate statistics for listener and connector</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2142">DISPATCH-2142</a> - use dedicated buffers in tcp adaptor</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2178">DISPATCH-2178</a> - Do not build separate libqpid-dispatch.so</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2198">DISPATCH-2198</a> - [http2] Implement http2 flow control that incorporates q2 blocking/unblocking</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2201">DISPATCH-2201</a> - Remove the type_registered global flag in router_node.c</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2211">DISPATCH-2211</a> - [http2] system_tests_grpc fails asan with one leaking http2 buffer</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2212">DISPATCH-2212</a> - [http2] When creating an AMQP message set its subject field to method (on request) and status (on response)</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2215">DISPATCH-2215</a> - [http2] Wrong printf format specifier in read_data_callback </li>
+</ul>
+
+<h2 id="bugs-fixed">Bugs fixed</h2>
+
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1619">DISPATCH-1619</a> - System test never closes connections created by wait_router_connected</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1623">DISPATCH-1623</a> - Investigate why the console sometimes drops the connection to the router a few seconds after login</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1772">DISPATCH-1772</a> - Fallback destination test prints insufficient data when it fails</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1865">DISPATCH-1865</a> - [http2] curl client hangs when running multiple clients against HTTP2 adaptor </li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1878">DISPATCH-1878</a> - Client app not getting a response through tcpListener</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1896">DISPATCH-1896</a> - [http2] GOAWAY frame received from server not propagated to client</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1914">DISPATCH-1914</a> - Console Entities view looks to be misformatted</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1963">DISPATCH-1963</a> - Memory leak in http1 adaptor</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1975">DISPATCH-1975</a> - TCP adaptor sends only 512-byte packets over network</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1976">DISPATCH-1976</a> - HTTP1 adaptor must not call proton functions after pn_raw_connection_close</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1977">DISPATCH-1977</a> - [http2] adaptor must not call proton functions after pn_raw_connection_close</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1986">DISPATCH-1986</a> - [http1] system_tests_http1_adaptor failure due to Address already in use issue</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-1995">DISPATCH-1995</a> - Dispatch docs build fails if -GNinja is used</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2013">DISPATCH-2013</a> - Http1AdaptorManagementTest fails with AssertionError: 0 != 1 : HTTP connection not deleted</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2037">DISPATCH-2037</a> - [http2] Thread race accessing qdr_http2_connection_t pings in system_tests_http2</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2041">DISPATCH-2041</a> - TSan data race reported from qd_connection_free in system_tests_edge_router</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2055">DISPATCH-2055</a> - AddressSanitizer: heap-use-after-free in write_log during system_tests_qdmanage</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2097">DISPATCH-2097</a> - [console] GUI displays many connections to pseudo-host egress-dispatch</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2100">DISPATCH-2100</a> - TCP adaptor half-closed fix does not have a self test</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2105">DISPATCH-2105</a> - [s390s] Compilation failure on Ubuntu Xenial: argument 1 range [18446744071562067968, 18446744073709551615] exceeds maximum object size 9223372036854775807 [-Werror=alloc-size-larger-than=]</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2106">DISPATCH-2106</a> - [HTTP2] coverity errors</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2107">DISPATCH-2107</a> - [libwebsockets] coverity error</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2110">DISPATCH-2110</a> - Qdstat number display formatting problems - need full audit</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2115">DISPATCH-2115</a> - Leak of qdr_link_route_t in system_tests_edge_router</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2136">DISPATCH-2136</a> - race accessing the aborted message flag</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2154">DISPATCH-2154</a> - Message abort flag should never be set false</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2158">DISPATCH-2158</a> -  AddressSanitizer: use-after-poison in qdr_core_delete_link_route during system_tests_edge_router</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2161">DISPATCH-2161</a> - HTTP/1.x server connection hangs if client disconnects during response message</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2162">DISPATCH-2162</a> - HTTP/1.x throughput is abysmal.</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2163">DISPATCH-2163</a> - Generated file build/src/config.h does not have include guards</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2166">DISPATCH-2166</a> - Race accessing several message content flags and values</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2167">DISPATCH-2167</a> - HTTP/1.x server connection hangs if client request is aborted</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2177">DISPATCH-2177</a> - [http1] system_tests_http1 failing on test_04_client_request_close</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2184">DISPATCH-2184</a> - message receiver is not restarted by qd_message_Q2_holdoff_disable</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2185">DISPATCH-2185</a> - HTTP/1.x crash on message content sys_mutex_lock fail</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2186">DISPATCH-2186</a> - Pytest runner reports test collection warnings which proved to be misleading to the unwarry</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2189">DISPATCH-2189</a> - HTTP/1.x hangs if client sends "Expect: 100-continue" header</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2191">DISPATCH-2191</a> - Count only body buffers when considering q2. Do not count header buffers </li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2192">DISPATCH-2192</a> - Streaming link leak during TCP + iperf3 testing</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2204">DISPATCH-2204</a> - RuntimeError: dictionary changed size during iteration</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2207">DISPATCH-2207</a> - Leak of qd_connector_t (coverity)</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2209">DISPATCH-2209</a> - HTTP/1.x - fix meta-headers types and values for consistency with HTTP/2</li>
+</ul>
+
+<h2 id="tasks">Tasks</h2>
+
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2120">DISPATCH-2120</a> - Create GitHub Actions jobs used for gating incoming pull requests</li>
+<li><a href="https://issues.apache.org/jira/browse/DISPATCH-2146">DISPATCH-2146</a> - TSAN suppression file update</li>
+</ul>
+
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/">Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/">License</a></li>
+            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/01-peer-to-peer.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/01-peer-to-peer.png
new file mode 100755
index 0000000..5c834aa
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/01-peer-to-peer.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/balanced-routing.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/balanced-routing.png
new file mode 100755
index 0000000..3c2e018
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/balanced-routing.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/brokered-messaging.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/brokered-messaging.png
new file mode 100755
index 0000000..3f1ea7c
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/brokered-messaging.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/closest-routing.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/closest-routing.png
new file mode 100755
index 0000000..72d398f
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/closest-routing.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/console1.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console1.png
new file mode 100755
index 0000000..f131884
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console1.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_charts.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_charts.png
new file mode 100755
index 0000000..169c2ca
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_charts.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_entity.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_entity.png
new file mode 100755
index 0000000..130c7e7
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_entity.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_login.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_login.png
new file mode 100755
index 0000000..63e22c6
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_login.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_overview.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_overview.png
new file mode 100755
index 0000000..af25f36
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_overview.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_schema.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_schema.png
new file mode 100755
index 0000000..ba56c7b
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_schema.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_topology.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_topology.png
new file mode 100755
index 0000000..ae4b22a
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/console_topology.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/link-routing-02.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/link-routing-02.png
new file mode 100755
index 0000000..2389485
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/link-routing-02.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/link-routing.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/link-routing.png
new file mode 100755
index 0000000..20a1cb6
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/link-routing.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/message-routing.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/message-routing.png
new file mode 100755
index 0000000..3943110
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/message-routing.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/multicast-routing.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/multicast-routing.png
new file mode 100755
index 0000000..9ea83f1
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/multicast-routing.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/path-redundancy-01.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/path-redundancy-01.png
new file mode 100755
index 0000000..be59462
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/path-redundancy-01.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/path-redundancy-02.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/path-redundancy-02.png
new file mode 100755
index 0000000..e02fedc
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/path-redundancy-02.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/path-redundancy-temp-decoupling-01.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/path-redundancy-temp-decoupling-01.png
new file mode 100755
index 0000000..9a6abec
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/path-redundancy-temp-decoupling-01.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/path-redundancy-temp-decoupling-02.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/path-redundancy-temp-decoupling-02.png
new file mode 100755
index 0000000..5d06e8c
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/path-redundancy-temp-decoupling-02.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/peer-to-peer-comm.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/peer-to-peer-comm.png
new file mode 100755
index 0000000..59978a1
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/peer-to-peer-comm.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/sharded-queue-01.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/sharded-queue-01.png
new file mode 100755
index 0000000..14bd426
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/sharded-queue-01.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/images/sharded-queue-02.png b/content/releases/qpid-dispatch-1.17.0/user-guide/images/sharded-queue-02.png
new file mode 100755
index 0000000..96ea028
Binary files /dev/null and b/content/releases/qpid-dispatch-1.17.0/user-guide/images/sharded-queue-02.png differ
diff --git a/content/releases/qpid-dispatch-1.17.0/user-guide/index.html b/content/releases/qpid-dispatch-1.17.0/user-guide/index.html
new file mode 100644
index 0000000..9fe5ead
--- /dev/null
+++ b/content/releases/qpid-dispatch-1.17.0/user-guide/index.html
@@ -0,0 +1,6476 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements.  See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership.  The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License.  You may obtain a copy of the License at
+ -
+ -   http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied.  See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>Using Qpid Dispatch - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-dispatch-1.17.0/index.html">Qpid Dispatch 1.17.0</a></li><li>Using Qpid Dispatch</li></ul>
+
+        <div id="-middle-content">
+          <h1>Using Qpid Dispatch</h1>
+<div id="toc" class="toc">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel0">
+<li><a href="#overview">Overview</a>
+<ul class="sectlevel1">
+<li><a href="#overview-router-qdr">1. Overview of Dispatch Router</a>
+<ul class="sectlevel2">
+<li><a href="#key-features-qdr">1.1. Key features</a></li>
+<li><a href="#supported-standards-protocols-qdr">1.2. Supported standards and protocols</a></li>
+<li><a href="#document-conventions-qdr">1.3. Document conventions</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#learn">Learn</a>
+<ul class="sectlevel1">
+<li><a href="#important-terms-concepts-qdr">2. Important terms and concepts</a>
+<ul class="sectlevel2">
+<li><a href="#overview-of-amqp-qdr">2.1. Overview of AMQP</a></li>
+<li><a href="#what-routers-are-qdr">2.2. What routers are</a></li>
+<li><a href="#how-routers-route-messages-qdr">2.3. How routers route messages</a></li>
+<li><a href="#router-security-qdr">2.4. Router security</a></li>
+<li><a href="#router-management-qdr">2.5. Router management</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#get_started">Get started</a>
+<ul class="sectlevel1">
+<li><a href="#getting-started-qdr">3. Getting started</a>
+<ul class="sectlevel2">
+<li><a href="#installing-router-linux-getting-started">3.1. Installing Dispatch Router on Linux</a></li>
+<li><a href="#exploring-default-router-configuration-file-qdr">3.2. Exploring the default router configuration file</a></li>
+<li><a href="#starting-router-getting-started-qdr">3.3. Starting the router</a></li>
+<li><a href="#sending-test-messages-qdr">3.4. Sending test messages</a></li>
+<li><a href="#next-steps-qdr">3.5. Next steps</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#install">Install</a>
+<ul class="sectlevel1">
+<li><a href="#router-deployment-guidelines-qdr">4. Dispatch Router deployment guidelines</a>
+<ul class="sectlevel2">
+<li><a href="#router-operating-modes-qdr">4.1. Router operating modes</a></li>
+<li><a href="#security-guidelines-qdr">4.2. Security guidelines</a></li>
+<li><a href="#router-connection-guidelines-qdr">4.3. Router connection guidelines</a></li>
+</ul>
+</li>
+<li><a href="#installing-router-qdr">5. Installing Dispatch Router</a>
+<ul class="sectlevel2">
+<li><a href="#installing-router-linux-qdr">5.1. Installing Dispatch Router on Linux</a></li>
+<li><a href="#preparing-router-configurations-qdr">5.2. Preparing router configurations</a></li>
+<li><a href="#starting-router-qdr">5.3. Starting a router</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#configuration">Configure</a>
+<ul class="sectlevel1">
+<li><a href="#configuring-router-properties-qdr">6. Configuring router properties</a></li>
+<li><a href="#configuring-network-connections-qdr">7. Configuring network connections</a>
+<ul class="sectlevel2">
+<li><a href="#connecting-routers-qdr">7.1. Connecting routers</a></li>
+<li><a href="#listening-client-connections-qdr">7.2. Listening for client connections</a></li>
+<li><a href="#connecting-to-external-amqp-containers-qdr">7.3. Connecting to external AMQP containers</a></li>
+<li><a href="#adding-metadata-to-connections-qdr">7.4. Adding metadata to connections</a></li>
+<li><a href="#understanding-connection-failover-qdr">7.5. Understanding connection failover</a></li>
+</ul>
+</li>
+<li><a href="#securing-network-connections-qdr">8. Securing network connections</a>
+<ul class="sectlevel2">
+<li><a href="#securing-connections-between-routers-qdr">8.1. Securing connections between routers</a></li>
+<li><a href="#securing-incoming-client-connections-qdr">8.2. Securing incoming client connections</a>
+<ul class="sectlevel3">
+<li><a href="#enabling-ssl-tls-encryption-qdr">8.2.1. Enabling SSL/TLS encryption</a></li>
+<li><a href="#enabling-ssl-tls-client-authentication-qdr">8.2.2. Enabling SSL/TLS client authentication</a></li>
+<li><a href="#enabling-username-password-authentication-qdr">8.2.3. Enabling user name and password authentication</a></li>
+<li><a href="#integrating-with-kerberos-qdr">8.2.4. Integrating with Kerberos</a></li>
+</ul>
+</li>
+<li><a href="#securing-outgoing-connections-qdr">8.3. Securing outgoing connections</a>
+<ul class="sectlevel3">
+<li><a href="#connecting-using-one-way-ssl-tls-authentication-qdr">8.3.1. Connecting using one-way SSL/TLS authentication</a></li>
+<li><a href="#connecting-using-mutual-ssl-tls-authentication-qdr">8.3.2. Connecting using mutual SSL/TLS authentication</a></li>
+<li><a href="#connecting-using-username-password-authentication-qdr">8.3.3. Connecting using user name and password authentication</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#configuring-authorization-qdr">9. Configuring authorization</a>
+<ul class="sectlevel2">
+<li><a href="#types-policies-qdr">9.1. Types of policies</a></li>
+<li><a href="#how-policies-enforce-connection-resource-limits-qdr">9.2. How policies enforce connection and resource limits</a></li>
+<li><a href="#setting-global-connection-limits-qdr">9.3. Setting global limits</a></li>
+<li><a href="#setting-connection-resource-limits-messaging-endpoints-qdr">9.4. Setting connection and resource limits for messaging endpoints</a>
+<ul class="sectlevel3">
+<li><a href="#enabling-vhost-policies-qdr">9.4.1. Enabling vhost policies</a></li>
+<li><a href="#creating-vhost-policies-qdr">9.4.2. Creating vhost policies</a></li>
+<li><a href="#creating-vhost-policies-json-qdr">9.4.3. Creating vhost policies as JSON files</a></li>
+<li><a href="#setting-resource-limits-outgoing-connections-qdr">9.4.4. Setting resource limits for outgoing connections</a></li>
+<li><a href="#methods-specifying-vhost-policy-source-target-addresses-qdr">9.4.5. Methods for specifying vhost policy source and target addresses</a></li>
+<li><a href="#vhost-policy-hostname-pattern-matching-rules-qdr">9.4.6. Vhost policy hostname pattern matching rules</a></li>
+<li><a href="#vhost-policy-examples-qdr">9.4.7. Vhost policy examples</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#configuring-logging-qdr">10. Configuring logging</a>
+<ul class="sectlevel2">
+<li><a href="#logging-modules-qdr">10.1. Logging modules</a></li>
+<li><a href="#configuring-default-logging-qdr">10.2. Configuring default logging</a></li>
+</ul>
+</li>
+<li><a href="#configuring-routing-qdr">11. Configuring routing</a>
+<ul class="sectlevel2">
+<li><a href="#configuring-message-routing-qdr">11.1. Configuring message routing</a>
+<ul class="sectlevel3">
+<li><a href="#understanding-message-routing-qdr">11.1.1. Understanding message routing</a></li>
+<li><a href="#configuring-address-semantics-qdr">11.1.2. Configuring address semantics</a></li>
+<li><a href="#configuring-addresses-prioritized-message-delivery-qdr">11.1.3. Configuring addresses for prioritized message delivery</a></li>
+<li><a href="#configuring-brokered-messaging-qdr">11.1.4. Configuring brokered messaging</a></li>
+<li><a href="#address-pattern-matching-qdr">11.1.5. Address pattern matching</a></li>
+</ul>
+</li>
+<li><a href="#creating-link-routes-qdr">11.2. Creating link routes</a>
+<ul class="sectlevel3">
+<li><a href="#understanding-link-routing-qdr">11.2.1. Understanding link routing</a></li>
+<li><a href="#creating-link-route-qdr">11.2.2. Creating a link route</a></li>
+<li><a href="#link-route-example-qdr">11.2.3. Link route example: Connecting clients and brokers on different networks</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#management">Manage</a>
+<ul class="sectlevel1">
+<li><a href="#monitoring-using-web-console">12. Monitoring using Apache Qpid Dispatch Router Console</a>
+<ul class="sectlevel2">
+<li><a href="#setting-up-access-web-console">12.1. Setting up access to Apache Qpid Dispatch Router Console</a></li>
+<li><a href="#accessing-web-console">12.2. Accessing Apache Qpid Dispatch Router Console</a></li>
+<li><a href="#monitoring-router-network-web-console">12.3. Monitoring the router network using Apache Qpid Dispatch Router Console</a></li>
+</ul>
+</li>
+<li><a href="#monitoring-using-qdstat-qdr">13. Monitoring using <code>qdstat</code></a>
+<ul class="sectlevel2">
+<li><a href="#syntax-using-qdstat-qdr">13.1. Syntax for using <code>qdstat</code></a></li>
+<li><a href="#commands-monitoring-router-network-qdr">13.2. Commands for monitoring the router network</a></li>
+</ul>
+</li>
+<li><a href="#managing-using-qdmanage-qdr">14. Managing using <code>qdmanage</code></a></li>
+<li><a href="#troubleshooting-qdr">15. Troubleshooting Dispatch Router</a>
+<ul class="sectlevel2">
+<li><a href="#viewing-log-entries-qdr">15.1. Viewing log entries</a></li>
+<li><a href="#troubleshooting-using-logs-qdr">15.2. Troubleshooting using logs</a></li>
+</ul>
+</li>
+<li><a href="#amqp-mapping-qdr">Appendix A: AMQP mapping</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<h1 id="overview" class="sect0">Overview</h1>
+<div class="sect1">
+<h2 id="overview-router-qdr">1. Overview of Dispatch Router</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Dispatch Router is a lightweight AMQP message router for building scalable, available, and performant messaging networks.</p>
+</div>
+<div class="sect2">
+<h3 id="key-features-qdr">1.1. Key features</h3>
+<div class="paragraph">
+<p>You can use Dispatch Router to flexibly route messages between any AMQP-enabled endpoints, including clients, servers, and message brokers. Dispatch Router provides the following benefits:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Connects clients and message brokers into an internet-scale messaging network with uniform addressing</p>
+</li>
+<li>
+<p>Supports high-performance direct messaging</p>
+</li>
+<li>
+<p>Uses redundant network paths to route around failures</p>
+</li>
+<li>
+<p>Streamlines the management of large deployments</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="supported-standards-protocols-qdr">1.2. Supported standards and protocols</h3>
+<div class="paragraph">
+<p>Dispatch Router supports the following industry-recognized standards and network protocols:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Version 1.0 of the Advanced Message Queueing Protocol (AMQP)</p>
+</li>
+<li>
+<p>Modern TCP with IPv6</p>
+</li>
+<li>
+<p>Client compatibility</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>Dispatch Router should, in theory, work with any client that is compatible with AMQP 1.0. The following clients have been tested:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">qpid::messaging</dt>
+<dd>
+<p>The Qpid messaging clients work with Dispatch Router as long as they are configured to use the 1.0 version of the protocol. To enable AMQP 1.0 in the C++ client, use the <code>\{protocol:amqp1.0}</code> connection option.</p>
+</dd>
+<dt class="hdlist1">Proton Reactor</dt>
+<dd>
+<p>The Proton Reactor API is compatible with Dispatch Router.</p>
+</dd>
+<dt class="hdlist1">Proton Messenger</dt>
+<dd>
+<p>Messenger works with Dispatch Router.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ul>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The details of distributed transactions (XA) within AMQP are not provided in the 1.0 version of the specification. AMQ Interconnect does not support XA transactions.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p><a href="http://www.amqp.org/resources/download">OASIS AMQP 1.0 Specification</a>.</p>
+</li>
+<li>
+<p>For more information about how Dispatch Router applies AMQP, see <a href="#amqp-mapping-qdr">AMQP mapping</a>.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="document-conventions-qdr">1.3. Document conventions</h3>
+<div class="paragraph">
+<p>In this document, <code>sudo</code> is used for any command that requires root privileges. You should always exercise caution when using <code>sudo</code>, as any changes can affect the entire system.</p>
+</div>
+</div>
+</div>
+</div>
+<h1 id="learn" class="sect0">Learn</h1>
+<div class="sect1">
+<h2 id="important-terms-concepts-qdr">2. Important terms and concepts</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Before using Dispatch Router, you should be familiar with AMQP and understand some key concepts about Dispatch Router.</p>
+</div>
+<div class="sect2">
+<h3 id="overview-of-amqp-qdr">2.1. Overview of AMQP</h3>
+<div class="paragraph">
+<p>Dispatch Router implements version 1.0 of the Advanced Message Queueing Protocol (AMQP) specification. Therefore, you should understand several key AMQP terms and concepts before deploying or configuring Dispatch Router.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Containers</dt>
+<dd>
+<p>AMQP is a wire-level messaging protocol for transferring messages between applications called <em>containers</em>. In AMQP, a container is any application that sends or receives messages, such as a client application or message broker.</p>
+<div class="paragraph">
+<p>Containers connect to each other over <em>connections</em>, which are channels for communication.</p>
+</div>
+</dd>
+<dt class="hdlist1">Nodes</dt>
+<dd>
+<p>Containers contain addressable entities called <em>nodes</em> that are responsible for storing or delivering messages. For example, a queue on a message broker is a node.</p>
+</dd>
+<dt class="hdlist1">Links</dt>
+<dd>
+<p>Messages are transferred between connected containers over <em>links</em>. A link is a unidirectional route between nodes. Essentially, a link is a channel for sending or receiving messages.</p>
+<div class="paragraph">
+<p>Links are established over <em>sessions</em>, which are contexts for sending and receiving messages. Sessions are established over connections.</p>
+</div>
+</dd>
+</dl>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p><a href="http://www.amqp.org/resources/download">OASIS AMQP 1.0 Specification</a></p>
+</li>
+<li>
+<p><a href="https://dzone.com/refcardz/amqp-essentials?chapter=1">AMQP Essentials Refcard</a></p>
+</li>
+<li>
+<p><a href="https://channel9.msdn.com/Blogs/Subscribe/The-AMQP-10-Protocol-16-Overview">Video series introducing AMQP 1.0</a></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="what-routers-are-qdr">2.2. What routers are</h3>
+<div class="paragraph">
+<p>Dispatch Router is an application layer program running as a normal user program or as a daemon. A running instance of Dispatch Router is called a <em>router</em>.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Routers do not take responsibility for messages</dt>
+<dd>
+<p>Routers transfer messages between producers and consumers, but unlike message brokers, they do not take responsibility for messages. Instead, routers propagate message settlement and disposition across a network such that delivery guarantees are met. That is, the router network will deliver the message, possibly through several intermediate routers, and then route the consumer&#8217;s acknowledgement of that message back across the same path. The responsibility for the message is tran [...]
+</dd>
+<dt class="hdlist1">Routers are combined to form router networks</dt>
+<dd>
+<p>Routers are often deployed in topologies of multiple routers called a router network. Routers use link-state routing protocols and algorithms similar to the Open Shortest Path First (OSPF) and Intermediate System to Intermediate System (IS-IS) protocols to calculate the best path from every message source to every message destination, and to recover quickly from failures. A router network relies on redundant network paths to provide continued connectivity in case of system or network  [...]
+</dd>
+<dt class="hdlist1">Routers enhance both direct and indirect messaging patterns</dt>
+<dd>
+<p>A messaging client can make a single AMQP connection into a router network and, over that connection, exchange messages with one or more message brokers connected to any router in the network. At the same time, the client can exchange messages directly with other endpoints without involving a broker at all.</p>
+<div class="exampleblock">
+<div class="title">Example 1. Enhancing the use of message brokers</div>
+<div class="content">
+<div class="paragraph">
+<p>Routers can enhance a cluster of message brokers that provide a scalable, distributed work queue.</p>
+</div>
+<div class="paragraph">
+<p>The router network makes the broker cluster appear as a single queue, with producers publishing to a single address, and consumers subscribing to a single address. The router network can distribute work to any broker in the cluster, and collect work from any broker for any consumer.</p>
+</div>
+<div class="paragraph">
+<p>The routers improve the scalability of the broker cluster, because brokers can be added or removed from the cluster without affecting the clients.</p>
+</div>
+<div class="paragraph">
+<p>The routers also solve the common difficulty of "stuck messages". Without the router network, if a consumer is connected to a broker that does not have any messages (but other brokers in the cluster do have messages), you must either transfer the messages or leave them "stuck". The routers solve this issue, however, because all of the consumers are connected to all of the brokers through the router network. A message on any broker can be delivered to any of the consumers.</p>
+</div>
+</div>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="how-routers-route-messages-qdr">2.3. How routers route messages</h3>
+<div class="paragraph">
+<p>In a router network, <em>routing</em> is the process by which messages are delivered to their destinations. To accomplish this, Dispatch Router offers two different routing mechanisms:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Message routing</dt>
+<dd>
+<p>Message routing enables you to distribute messages in anycast and multicast patterns. These patterns can be used for both direct routing, in which the router distributes messages between clients without a message broker, and indirect routing, in which the router enables clients to exchange messages through a message broker.</p>
+<div class="paragraph">
+<p>Message routing is useful for the following types of requirements:</p>
+</div>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p>Default, basic message routing</p>
+<div class="paragraph">
+<p>Dispatch Router automatically routes messages by default, so manual configuration is only required if you want routing behavior that is different than the default.</p>
+</div>
+</li>
+<li>
+<p>Message-based routing patterns</p>
+<div class="paragraph">
+<p>Message routing supports both anycast and multicast routing patterns. You can load-balance individual messages across multiple consumers, and multicast (or fan-out) messages to multiple subscribers.</p>
+</div>
+</li>
+<li>
+<p>Sharding messages across multiple message brokers when message delivery order is not important</p>
+<div class="paragraph">
+<p>Sharding messages from one producer might cause that producer&#8217;s messages to be received in a different order than the order in which they were sent.</p>
+</div>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">Link routing</dt>
+<dd>
+<p>Link routing enables you to establish a dedicated, virtual "path" between a sender and receiver that travels through the router network. Link routes are typically used to connect clients to message brokers in scenarios in which a direct connection is unfeasible. Therefore, link routes enable messaging capabilities that are not possible with message routing, such as:</p>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p>Transactional messaging</p>
+<div class="paragraph">
+<p>Link routing supports local transactions to a single broker. Distributed transactions are not supported.</p>
+</div>
+</li>
+<li>
+<p>Guaranteed message delivery order</p>
+<div class="paragraph">
+<p>Link routing to a sharded queue preserves the delivery order of the producer&#8217;s messages by causing all messages on that link to go to the same broker instance.</p>
+</div>
+</li>
+<li>
+<p>End-to-end flow control</p>
+<div class="paragraph">
+<p>Flow control is "real" in that credits flow across the link route from the receiver to the sender.</p>
+</div>
+</li>
+<li>
+<p>Server-side selectors</p>
+<div class="paragraph">
+<p>With a link route, consumers can provide server-side selectors for broker subscriptions.</p>
+</div>
+</li>
+<li>
+<p>Consumer specific acknowledgements</p>
+<div class="paragraph">
+<p>With a link route, modified delivery states can be interpreted by a broker.
+For example, a broker can prevent redelivery of any messsages with the <code>undeliverable-here=true</code> modified delivery state.</p>
+</div>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+</dl>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p><a href="#configuring-message-routing-qdr">Configuring message routing</a></p>
+</li>
+<li>
+<p><a href="#creating-link-routes-qdr">Creating link routes</a></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="router-security-qdr">2.4. Router security</h3>
+<div class="paragraph">
+<p>Dispatch Router provides authentication and authorization mechanisms so that you can control who can access the router network, and what they can do with the messaging resources.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Authentication</dt>
+<dd>
+<p>Dispatch Router supports both SSL/TLS and SASL for encrypting and authenticating remote peers. Using these mechanisms, you can secure the router network in the following ways:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Authenticate incoming connections from remote peers (such as clients and message brokers)</p>
+</li>
+<li>
+<p>Provide authentication credentials for outgoing connections to remote peers (such as clients and message brokers)</p>
+</li>
+<li>
+<p>Secure the inter-router connections between the routers in the router network</p>
+</li>
+</ul>
+</div>
+</dd>
+<dt class="hdlist1">Authorization</dt>
+<dd>
+<p>Dispatch Router provides a <code>policy</code> mechanism that you can use to enforce user connection restrictions and AMQP resource access control.</p>
+</dd>
+</dl>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p><a href="#securing-network-connections-qdr">Securing network connections</a></p>
+</li>
+<li>
+<p><a href="#configuring-authorization-qdr">Configuring authorization</a></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="router-management-qdr">2.5. Router management</h3>
+<div class="paragraph">
+<p>Dispatch Router provides both graphical and CLI tools for monitoring and managing a router network.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Apache Qpid Dispatch Router Console</dt>
+<dd>
+<p>A web console for monitoring the layout and health of the router network.</p>
+</dd>
+<dt class="hdlist1">qdstat</dt>
+<dd>
+<p>A command-line tool for monitoring the status of a router in the router network. Using this tool, you can view the following information about a router:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Incoming and outgoing connections</p>
+</li>
+<li>
+<p>Incoming and outgoing links</p>
+</li>
+<li>
+<p>Router network topology from the perspective of this router</p>
+</li>
+<li>
+<p>Addresses known to this router</p>
+</li>
+<li>
+<p>Link routes and autolinks</p>
+</li>
+<li>
+<p>Memory consumption information</p>
+</li>
+</ul>
+</div>
+</dd>
+<dt class="hdlist1">qdmanage</dt>
+<dd>
+<p>A command-line tool for viewing and updating the configuration of a router at runtime.</p>
+</dd>
+</dl>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p><a href="#management">Management</a></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<h1 id="get_started" class="sect0">Get started</h1>
+<div class="sect1">
+<h2 id="getting-started-qdr">3. Getting started</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This section provides a quick introduction to Dispatch Router by showing you how to install Dispatch Router, start the router with the default configuration settings, and distribute messages between two clients.</p>
+</div>
+<div class="sect2">
+<h3 id="installing-router-linux-getting-started">3.1. Installing Dispatch Router on Linux</h3>
+<div class="paragraph">
+<p>Dispatch Router is distributed as a set of RPM packages, which are available for <code>yum</code>/<code>dnf</code>-based Linux distributions. Alternatively, you can build the Dispatch Router from source.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Dispatch Router will not build on Windows.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="ulist">
+<div class="title">Procedure</div>
+<ul>
+<li>
+<p>Do one of the following:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Download and build the Dispatch Router source.</p>
+<div class="paragraph">
+<p>To download the source, see the <a href="https://qpid.apache.org/download.html" target="_blank" rel="noopener">Download page</a>. For instructions on building the source, see the <a href="https://gitbox.apache.org/repos/asf?p=qpid-dispatch.git;a=blob_plain;f=README;hb=1.17.0" target="_blank" rel="noopener">Qpid Dispatch README</a>.</p>
+</div>
+</li>
+<li>
+<p>Install the Dispatch Router packages.</p>
+<div class="paragraph">
+<p>Packages are available for <code>yum</code>/<code>dnf</code>-based Linux distributions. For more information, see the <a href="https://qpid.apache.org/packages.html" target="_blank" rel="noopener">Packages page</a>.</p>
+</div>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="exploring-default-router-configuration-file-qdr">3.2. Exploring the default router configuration file</h3>
+<div class="paragraph">
+<p>The router&#8217;s configuration file (<code>qdrouterd.conf</code>) controls the way in which the router functions. The default configuration file contains the minimum number of settings required for the router to run. As you become more familiar with the router, you can add to or change these settings, or create your own configuration files.</p>
+</div>
+<div class="paragraph">
+<p>By default, the router configuration file defines the following settings for the router:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Operating mode</p>
+</li>
+<li>
+<p>How it listens for incoming connections</p>
+</li>
+<li>
+<p>Routing patterns for the message routing mechanism</p>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Open the following file: <code>/etc/qpid-dispatch/qdrouterd.conf</code>.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>When Dispatch Router is installed, <code>qdrouterd.conf</code> is installed in this directory. When the router is started, it runs with the settings defined in this file.</p>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Review the default settings in <code>qdrouterd.conf</code>.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="title">Default configuration file</div>
+<div class="content">
+<pre class="nowrap">router {
+    mode: standalone // <b class="conum">(1)</b>
+    id: Router.A // <b class="conum">(2)</b>
+}
+
+listener { // <b class="conum">(3)</b>
+    host: 0.0.0.0
+    port: amqp
+    authenticatePeer: no
+}
+
+address { // <b class="conum">(4)</b>
+    prefix: closest
+    distribution: closest
+}
+
+address {
+    prefix: multicast
+    distribution: multicast
+}
+
+address {
+    prefix: unicast
+    distribution: closest
+}
+
+address {
+    prefix: exclusive
+    distribution: closest
+}
+
+address {
+    prefix: broadcast
+    distribution: multicast
+}</pre>
+</div>
+</div>
+<div class="colist arabic">
+<ol>
+<li>
+<p>By default, the router operates in <em>standalone</em> mode. This means that it can only communicate with endpoints that are directly connected to it. It cannot connect to other routers, or participate in a router network.</p>
+</li>
+<li>
+<p>The unique identifier of the router. This ID is used as the <code>container-id</code> (container name) at the AMQP protocol level. If it is not specified, the router shall generate a random identifier at startup.</p>
+</li>
+<li>
+<p>The <code>listener</code> entity handles incoming connections from client endpoints. By default, the router listens on all network interfaces on the default AMQP port (5672).</p>
+</li>
+<li>
+<p>By default, the router is configured to use the message routing mechanism. Each <code>address</code> entity defines how messages that are received with a particular address <code>prefix</code> should be distributed. For example, all messages with addresses that start with <code>closest</code> will be distributed using the <code>closest</code> distribution pattern.</p>
+</li>
+</ol>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>If a client requests a message with an address that is not defined in the router&#8217;s configuration file, the <code>balanced</code> distribution pattern will be used automatically.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p>For more information about the router configuration file (including available entities and attributes), see the <a href="https://qpid.apache.org/releases/qpid-dispatch-1.17.0/man/qdrouterd.html" target="_blank" rel="noopener">qdrouterd man page</a>.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="starting-router-getting-started-qdr">3.3. Starting the router</h3>
+<div class="paragraph">
+<p>After installing Dispatch Router, you start the router by using the <code>qdrouterd</code> command.</p>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Start the router:</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code data-lang="bash" class="language-bash hljs">$ qdrouterd</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The router starts, using the default configuration file stored at <code>/etc/qpid-dispatch/qdrouterd.conf</code>.</p>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Review the <code>qdrouterd</code> command output to verify the router status.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example shows that the router was correctly installed, is running, and is ready to route traffic between clients:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">$ qdrouterd
+Fri May 20 09:38:03 2017 SERVER (info) Container Name: Router.A
+Fri May 20 09:38:03 2017 ROUTER (info) Router started in Standalone mode
+Fri May 20 09:38:03 2017 ROUTER (info) Router Core thread running. 0/Router.A
+Fri May 20 09:38:03 2017 ROUTER (info) In-process subscription M/$management
+Fri May 20 09:38:03 2017 AGENT (info) Activating management agent on $_management_internal
+Fri May 20 09:38:03 2017 ROUTER (info) In-process subscription L/$management
+Fri May 20 09:38:03 2017 ROUTER (info) In-process subscription L/$_management_internal
+Fri May 20 09:38:03 2017 DISPLAYNAME (info) Activating DisplayNameService on $displayname
+Fri May 20 09:38:03 2017 ROUTER (info) In-process subscription L/$displayname
+Fri May 20 09:38:03 2017 CONN_MGR (info) Configured Listener: 0.0.0.0:amqp proto=any role=normal
+Fri May 20 09:38:03 2017 POLICY (info) Policy configured maximumConnections: 0, policyFolder: '', access rules enabled: 'false'
+Fri May 20 09:38:03 2017 POLICY (info) Policy fallback defaultApplication is disabled
+Fri May 20 09:38:03 2017 SERVER (info) Operational, 4 Threads Running</pre>
+</div>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p>The <a href="https://qpid.apache.org/releases/qpid-dispatch-1.17.0/man/qdrouterd.html" target="_blank" rel="noopener">qdrouterd man page</a>.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="sending-test-messages-qdr">3.4. Sending test messages</h3>
+<div class="paragraph">
+<p>After starting the router, send some test messages to see how the router can connect two endpoints by distributing messages between them.</p>
+</div>
+<div class="paragraph">
+<p>This procedure demonstrates a simple configuration consisting of a single router with two clients connected to it: a sender and a receiver. The receiver wants to receive messages on a specific address, and the sender sends
+messages to that address.</p>
+</div>
+<div class="paragraph">
+<p>A broker is not used in this procedure, so there is no <em>"store and forward"</em> mechanism in the middle. Instead, the messages flow from the sender, through the router, to the receiver only if the receiver is online, and the sender can confirm that the messages have arrived at their destination.</p>
+</div>
+<div class="paragraph">
+<div class="title">Prerequisites</div>
+<p>Apache Qpid Proton Python must be installed. For more information, see <a href="https://qpid.apache.org/proton/" class="bare">https://qpid.apache.org/proton/</a>.</p>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Navigate to the Apache Qpid Proton Python examples directory.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code data-lang="bash" class="language-bash hljs">$ cd <em>&lt;install-dir&gt;</em>/examples/python/</code></pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">&lt;install-dir&gt;</dt>
+<dd>
+<p>The directory where you installed Apache Qpid Proton Python.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Start the <code>simple_recv.py</code> receiver client.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code data-lang="bash" class="language-bash hljs">$ python simple_recv.py -a 127.0.0.1:5672/examples -m 5</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This command starts the receiver and listens on the <code>examples</code> address (<code>127.0.0.1:5672/examples</code>). The receiver is also set to receive a maximum of five messages.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>In practice, the order in which you start senders and receivers does not matter. In both cases, messages will be sent as soon as the receiver comes online.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>In a new terminal window, navigate to the Python examples directory and run the <code>simple_send.py</code> example:</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code data-lang="bash" class="language-bash hljs">$ cd <em>&lt;install-dir&gt;</em>/examples/python/
+$ python simple_send.py -a 127.0.0.1:5672/examples -m 5</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This command sends five auto-generated messages to the <code>examples</code> address (<code>127.0.0.1:5672/examples</code>) and then confirms that they were delivered and acknowledged by the receiver:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code data-lang="bash" class="language-bash hljs">all messages confirmed</code></pre>
+</div>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Verify that the receiver client received the messages.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>The receiver client should display the contents of the five messages:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code data-lang="bash" class="language-bash hljs">{u'sequence': 1L}
+{u'sequence': 2L}
+{u'sequence': 3L}
+{u'sequence': 4L}
+{u'sequence': 5L}</code></pre>
+</div>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect2">
+<h3 id="next-steps-qdr">3.5. Next steps</h3>
+<div class="paragraph">
+<p>After using Dispatch Router to distribute messages between two clients, you can use the following sections to learn more about Dispatch Router configuration, deployment, and management.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><a href="#configuration">Change the router&#8217;s configuration</a></dt>
+<dd>
+<p>Dispatch Router ships with default settings that are suitable for many basic use cases. You can further experiment with the standalone router that you used in the <em>Getting started</em> example by changing the router&#8217;s essential properties, network connections, security settings, logging, and routing mechanisms.</p>
+</dd>
+<dt class="hdlist1"><a href="#installing-router-qdr">Install and configure Dispatch Router</a></dt>
+<dd>
+<p>Dispatch Router is typically deployed in router networks. You can design a router network of any arbitrary topology to interconnect the endpoints in your messaging network.</p>
+</dd>
+<dt class="hdlist1"><a href="#management">Monitor and manage Dispatch Router</a></dt>
+<dd>
+<p>You can use the web console and command-line management tools to monitor the status and performance of the routers in your router network.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<h1 id="install" class="sect0">Install</h1>
+<div class="sect1">
+<h2 id="router-deployment-guidelines-qdr">4. Dispatch Router deployment guidelines</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>To plan your router network and design the network topology, you must first understand the different router modes and how you can use them to create different types of networks.</p>
+</div>
+<div class="sect2">
+<h3 id="router-operating-modes-qdr">4.1. Router operating modes</h3>
+<div class="paragraph">
+<p>In Dispatch Router, each router can operate in <em>standalone</em>, <em>interior</em>, or <em>edge</em> mode. In a router network, you deploy multiple interior routers or a combination of interior and edge routers to create the desired network topology.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Standalone</dt>
+<dd>
+<p>The router operates as a single, standalone network node. A standalone router cannot be used in a router network - it does not establish connections with other routers, and only routes messages between directly-connected endpoints.</p>
+</dd>
+<dt class="hdlist1">Interior</dt>
+<dd>
+<p>The router is part of the interior of the router network. Interior routers establish connections with each other and automatically compute the lowest cost paths across the network. You can have up to 128 interior routers in the router network.</p>
+</dd>
+<dt class="hdlist1">Edge</dt>
+<dd>
+<p>The router maintains a single uplink connection to one or more interior routers. Edge routers do not participate in the routing protocol or route computation, but they enable you to efficiently scale the routing network. There are no limits to the number of edge routers you can deploy in a router network.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="security-guidelines-qdr">4.2. Security guidelines</h3>
+<div class="paragraph">
+<p>In the router network, the interior routers should be secured with a strong authentication mechanism in which they identify themselves to each other. You should choose and plan this authentication mechanism before creating the router network.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>If the interior routers are not properly secured, unauthorized routers (or endpoints pretending to be routers) could join the router network, compromising its integrity and availability.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>You can choose a security mechanism that best fits your requirements. However, you should consider the following recommendations:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Create an X.509 Certificate Authority (CA) to oversee the interior portion of the router network.</p>
+</li>
+<li>
+<p>Generate an individual certificate for each interior router.</p>
+<div class="paragraph">
+<p>Each interior router can be configured to use the CA to authenticate connections from any other interior routers.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Connections from edge routers and clients can use different levels of security, depending on your requirements.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>By using these recommendations, a new interior router cannot join the network until the owner of the CA issues a new certificate for the new router. In addition, an intruder wishing to spoof an interior router cannot do so because it would not have a valid X.509 certificate issued by the network&#8217;s CA.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="router-connection-guidelines-qdr">4.3. Router connection guidelines</h3>
+<div class="paragraph">
+<p>Before creating a router network, you should understand how routers connect to each other, and the factors that affect the direction in which an inter-router connection should be established.</p>
+</div>
+<h4 id="inter_router_connections_are_bidirectional" class="discrete">Inter-router connections are bidirectional</h4>
+<div class="paragraph">
+<p>When a connection is established between routers, message traffic flows in both directions across that connection. Each connection has a client side (a <em>connector</em>) and a server side (a <em>listener</em>) for the purposes of connection establishment. Once the connection is established, the two sides become equal participants in a bidirectional connection. For the purposes of routing AMQP traffic across the network, the direction of connection establishment is not relevant.</p>
+</div>
+<h4 id="factors_that_affect_the_direction_of_connection_establishment" class="discrete">Factors that affect the direction of connection establishment</h4>
+<div class="paragraph">
+<p>When establishing inter-router connections, you must choose which router will be the "listener" and which will be the "connector". There should be only one connection between any pair of routers.</p>
+</div>
+<div class="paragraph">
+<p>When determining the direction of inter-router connections in the network topology, consider the following factors:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">IP network boundaries and firewalls</dt>
+<dd>
+<p>Generally, inter-router connections should always be established from more private to more public. For example, to connect a router in a private IP network to another router in a public location (such as a public cloud provider), the router in the private network must have the connector and the router in the public location must have the listener. This is because the public location cannot reach the private location by TCP/IP without the use of VPNs or other firewall features designed [...]
+</dd>
+<dt class="hdlist1">Network topology</dt>
+<dd>
+<p>The topology of the router network may affect the direction in which connections should be established between the routers. For example, a star-topology that has a series of routers connected to one or two central "hub" routers should have listeners on the hub and connectors on the spokes. That way, new spoke routers may be added without changing the configuration of the hub.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="installing-router-qdr">5. Installing Dispatch Router</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You can deploy Dispatch Router as a single standalone router, or as multiple routers connected together in a router network. Router networks may represent any arbitrary topology, enabling you to design the network to best fit your requirements.</p>
+</div>
+<div class="paragraph">
+<p>With Dispatch Router, the router network topology is independent from the message routing. This means that messaging clients always experience the same message routing behavior regardless of the underlying network topology. Even in a multi-site or hybrid cloud router network, the connected endpoints behave as if they were connected to a single, logical router.</p>
+</div>
+<div class="paragraph">
+<p>To create the router network topology, complete the following:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p><a href="#router-deployment-guidelines-qdr">Review the deployment guidelines</a>.</p>
+<div class="paragraph">
+<p>You should understand the different router operating modes you can deploy in your topology, and be aware of security requirements for the interior portion of the router network.</p>
+</div>
+</li>
+<li>
+<p><a href="#installing-router-linux-qdr">Install Dispatch Router on the host</a>.</p>
+<div class="paragraph">
+<p>If you are creating a router network with multiple routers, repeat this step on each host.</p>
+</div>
+</li>
+<li>
+<p><a href="#preparing-router-configurations-qdr">Prepare the router configurations</a>.</p>
+<div class="paragraph">
+<p>After installing Dispatch Router, configure it to define how it should connect to other routers and endpoints, and how it should operate.</p>
+</div>
+</li>
+<li>
+<p><a href="#starting-router-qdr">Start the routers</a>.</p>
+<div class="paragraph">
+<p>After the routers are configured, start them so that they can connect to each other and begin routing messages.</p>
+</div>
+</li>
+</ol>
+</div>
+<div class="sect2">
+<h3 id="installing-router-linux-qdr">5.1. Installing Dispatch Router on Linux</h3>
+<div class="paragraph">
+<p>Dispatch Router is distributed as a set of RPM packages, which are available for <code>yum</code>/<code>dnf</code>-based Linux distributions. Alternatively, you can build the Dispatch Router from source.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Dispatch Router will not build on Windows.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="ulist">
+<div class="title">Procedure</div>
+<ul>
+<li>
+<p>Do one of the following:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Download and build the Dispatch Router source.</p>
+<div class="paragraph">
+<p>To download the source, see the <a href="https://qpid.apache.org/download.html" target="_blank" rel="noopener">Download page</a>. For instructions on building the source, see the <a href="https://gitbox.apache.org/repos/asf?p=qpid-dispatch.git;a=blob_plain;f=README;hb=1.17.0" target="_blank" rel="noopener">Qpid Dispatch README</a>.</p>
+</div>
+</li>
+<li>
+<p>Install the Dispatch Router packages.</p>
+<div class="paragraph">
+<p>Packages are available for <code>yum</code>/<code>dnf</code>-based Linux distributions. For more information, see the <a href="https://qpid.apache.org/packages.html" target="_blank" rel="noopener">Packages page</a>.</p>
+</div>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="preparing-router-configurations-qdr">5.2. Preparing router configurations</h3>
+<div class="paragraph">
+<p>After installing Dispatch Router, configure it to define how it should connect to other routers and endpoints, and how it should operate. If you are creating a router network, complete this workflow for each router in the network.</p>
+</div>
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>Dispatch Router is installed on the host.</p>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p><a href="#configuring-router-properties-qdr">Configure essential router properties</a>.</p>
+<div class="paragraph">
+<p>To participate in a router network, a router must be configured with a unique ID and an operating mode.</p>
+</div>
+</li>
+<li>
+<p><a href="#configuring-network-connections-qdr">Configure network connections</a>.</p>
+<div class="olist loweralpha">
+<ol class="loweralpha" type="a">
+<li>
+<p>Connect the router to any other routers in the router network.</p>
+<div class="paragraph">
+<p>Repeat this step for each additional router to which you want to connect this router.</p>
+</div>
+</li>
+<li>
+<p>If the router should connect with an AMQP client, configure a client connection.</p>
+</li>
+<li>
+<p>If the router should connect to an external AMQP container (such as a message broker), configure the connection.</p>
+</li>
+</ol>
+</div>
+</li>
+<li>
+<p><a href="#securing-network-connections-qdr">Secure each of the connections that you configured in the previous step</a>.</p>
+</li>
+<li>
+<p>(Optional) Configure any additional properties.</p>
+<div class="paragraph">
+<p>These properties should be configured the same way on each router. Therefore, you should only configure each one once, and then copy the configuration to each additional router in the router network.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#configuring-authorization-qdr">Authorization</a></p>
+<div class="paragraph">
+<p>If necessary, configure policies to control which messaging resources clients are able to access on the router network.</p>
+</div>
+</li>
+<li>
+<p><a href="#configuring-routing-qdr">Routing</a></p>
+<div class="paragraph">
+<p>Dispatch Router automatically routes messages without any configuration: clients can send messages to the router network, and the router automatically routes them to their destinations. However, you can configure the routing to meet your exact requirements. You can configure the routing patterns to be used for certain addresses, create waypoints and autolinks to route messages through broker queues, and create link routes to connect clients to brokers.</p>
+</div>
+</li>
+<li>
+<p><a href="#configuring-logging-qdr">Logging</a></p>
+<div class="paragraph">
+<p>You can set the default logging configuration to ensure that events are logged at the correct level for your environment.</p>
+</div>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Repeat this workflow for each additional router that you want to add to the router network.</p>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect2">
+<h3 id="starting-router-qdr">5.3. Starting a router</h3>
+<div class="paragraph">
+<p>You use the <code>qdrouterd</code> command to start a router. You can start a router in the foreground, the background, or as a service.</p>
+</div>
+<div class="ulist">
+<div class="title">Procedure</div>
+<ul>
+<li>
+<p>Do one of the following:</p>
+<div class="openblock">
+<div class="content">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 30%;">
+<col style="width: 70%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">To&#8230;&#8203;</th>
+<th class="tableblock halign-left valign-top">Enter this command&#8230;&#8203;</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Start the router in the foreground</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code data-lang="bash" class="language-bash hljs">$ qdrouterd</code></pre>
+</div>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Start the router in the background as a daemon</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code data-lang="bash" class="language-bash hljs">$ qdrouterd -d</code></pre>
+</div>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Start the router as a service</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code data-lang="bash" class="language-bash hljs">$ systemctl start qdrouterd.service</code></pre>
+</div>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>If you start the router as a service, the <code>systemd</code> <code>LimitNOFILE</code> limit affects the number of connections that can be open for the router. If you reach the limit, the router is not able to accept any more connections, and an error message is logged indicating "Too many open files". To avoid reaching this limit, increase the <code>LimitNOFILE</code> value for the <code>systemd</code> process.</p>
+</div>
+<div class="paragraph">
+<p>For more information, see the <code>systemd.exec(5)</code> man page.</p>
+</div>
+</td>
+</tr>
+</table>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<h1 id="configuration" class="sect0">Configure</h1>
+<div class="sect1">
+<h2 id="configuring-router-properties-qdr">6. Configuring router properties</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>By default, Dispatch Router operates in <code>standalone</code> mode with a randomly-generated ID. If you want to use this router in a router network, you must change these properties.</p>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file.</p>
+</li>
+<li>
+<p>In the <code>router</code> section, specify the mode and ID.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example shows a router configured to operate in <code>interior</code> mode:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">router {
+    mode: interior
+    id: Router.A
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>mode</code></dt>
+<dd>
+<p>Specify one of the following modes:</p>
+<div class="ulist">
+<ul>
+<li>
+<p><code>standalone</code> - Use this mode if the router does not communicate with
+other routers and is not part of a router network. When operating in
+this mode, the router only routes messages between directly connected
+endpoints.</p>
+</li>
+<li>
+<p><code>interior</code> - Use this mode if the router is part of a router network
+and needs to collaborate with other routers.</p>
+</li>
+<li>
+<p><code>edge</code> - Use this mode if the router is an edge router that will
+connect to a network of interior routers.</p>
+</li>
+</ul>
+</div>
+</dd>
+<dt class="hdlist1"><code>id</code></dt>
+<dd>
+<p>The unique
+identifier for the router. This ID will also be the container name at
+the AMQP protocol level.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>If necessary, configure any additional properties for the router.</p>
+<div class="paragraph">
+<p>For information about additional attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.17.0/man/qdrouterd.conf.html#_router">router</a> in the <code>qdrouterd.conf</code> man page.</p>
+</div>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="configuring-network-connections-qdr">7. Configuring network connections</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Dispatch Router connects clients, servers, AMQP services, and other routers through network connections. To connect the router to other messaging endpoints, you configure <em>listeners</em> to accept connections, and <em>connectors</em> to make outbound connections. However, connections are bidirectional - once the connection is established, message traffic flows in both directions.</p>
+</div>
+<div class="paragraph">
+<p>You can do the following:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#connecting-routers-qdr">Connect a router to another router</a></p>
+</li>
+<li>
+<p><a href="#listening-client-connections-qdr">Listen for client connections</a></p>
+</li>
+<li>
+<p><a href="#connecting-to-external-amqp-containers-qdr">Connect a router to an external AMQP container</a></p>
+</li>
+<li>
+<p><a href="#adding-metadata-to-connections-qdr">Add metadata to connections</a></p>
+</li>
+<li>
+<p><a href="#understanding-connection-failover-qdr">Understand connection failover</a></p>
+</li>
+</ul>
+</div>
+<div class="sect2">
+<h3 id="connecting-routers-qdr">7.1. Connecting routers</h3>
+<div class="paragraph">
+<p>To connect a router to another router in the router network, you configure a <code>connector</code> on one router to create the outbound connection, and a <code>listener</code> on the other router to accept the connection.</p>
+</div>
+<div class="paragraph">
+<p>Because connections are bidirectional, there should only be one connection between any pair of routers. Once the connection is established, message traffic flows in both directions.</p>
+</div>
+<div class="paragraph">
+<p>This procedure describes how to connect a router to another router in the router network.</p>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Determine the direction of the connection.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>Decide which router should be the "connector", and which should be the "listener". The direction of the connection establishment is sometimes arbitrary, but consider the following factors:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">IP network boundaries and firewalls</dt>
+<dd>
+<p>Generally, inter-router connections should always be established from more private to more public. For example, to connect a router in a private IP network to another router in a public location (such as a public cloud provider), the router in the private network must be the "connector" and the router in the public location must be the "listener". This is because the public location cannot reach the private location by TCP/IP without the use of VPNs or other firewall features designed [...]
+</dd>
+<dt class="hdlist1">Network topology</dt>
+<dd>
+<p>The topology of the router network may affect the direction in which connections should be established between the routers. For example, a star-topology that has a series of routers connected to one or two central "hub" routers should have "listeners" on the hub and "connectors" on the spokes. That way, new spoke routers may be added without changing the configuration of the hub.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>On the router that should create the connection, open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file and add a <code>connector</code>.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example creates a <code>connector</code> for an inter-router connection between two interior routers:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">connector {
+    host: 192.0.2.1
+    port: 5001
+    role: inter-router
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>host</code></dt>
+<dd>
+<p>The IP address (IPv4 or IPv6) or hostname on which the router will connect.</p>
+</dd>
+<dt class="hdlist1"><code>port</code></dt>
+<dd>
+<p>The port number or symbolic service name on which the router will connect.</p>
+</dd>
+<dt class="hdlist1"><code>role</code></dt>
+<dd>
+<p>The role of the connection. If the connection is between two interior routers, specify <code>inter-router</code>. If the connection is between an interior router and an edge router, specify <code>edge</code>.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>On the router that should accept the connection establishment, open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file and verify that an inter-router <code>listener</code> is configured.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example creates a <code>listener</code> to accept the connection establishment configured in the previous step:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">listener {
+    host: 0.0.0.0
+    port: 5001
+    role: inter-router
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>host</code></dt>
+<dd>
+<p>The IP address (IPv4 or IPv6) or hostname on which the router will listen.</p>
+</dd>
+<dt class="hdlist1"><code>port</code></dt>
+<dd>
+<p>The port number or symbolic service name on which the router will listen.</p>
+</dd>
+<dt class="hdlist1"><code>role</code></dt>
+<dd>
+<p>The role of the connection. If the connection is between two interior routers, specify <code>inter-router</code>. If the connection is between an interior router and an edge router, specify <code>edge</code>.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>If the router should connect to any other routers, repeat this procedure.</p>
+<div class="paragraph">
+<p>Edge routers can only connect to interior routers. They cannot connect to other edge routers.</p>
+</div>
+</li>
+</ol>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p>After connecting a router to another router, secure the connection.</p>
+<div class="paragraph">
+<p>For more information, see <a href="#securing-connections-between-routers-qdr">Securing connections between routers</a>.</p>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="listening-client-connections-qdr">7.2. Listening for client connections</h3>
+<div class="paragraph">
+<p>To enable a router to listen for and accept connections from AMQP clients, you configure a <code>listener</code>.</p>
+</div>
+<div class="paragraph">
+<p>Once the connection is enabled on the router, clients can connect to it using the same methods they use to connect to a broker. From the client&#8217;s perspective, the router connection and link establishment are identical to a broker connection and link establishment.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Instead of configuring a <code>listener</code> to listen for connections from the client, you can configure a <code>connector</code> to initiate connections to the client. In this case, the router will use the <code>connector</code> to initiate the connection, but it will not create any links. Links are only created by the peer that accepts the connection.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file.</p>
+</li>
+<li>
+<p>Configure a <code>listener</code> with the <code>normal</code> role.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">listener {
+    host: primary.example.com
+    port: 5672
+    role: normal
+    failoverUrls: secondary.example.com:20000, tertiary.example.com
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>host</code></dt>
+<dd>
+<p>The IP address (IPv4 or IPv6) or hostname on which the router will listen.</p>
+</dd>
+<dt class="hdlist1"><code>port</code></dt>
+<dd>
+<p>The port number or symbolic service name on which the router will listen.</p>
+</dd>
+<dt class="hdlist1"><code>role</code></dt>
+<dd>
+<p>The role of the connection. Specify <code>normal</code> to indicate that this connection is used for message delivery for AMQP clients.</p>
+</dd>
+<dt class="hdlist1"><code>failoverUrls</code> (optional)</dt>
+<dd>
+<p>A comma-separated list of backup URLs the client can use to reconnect if the established connection is lost. Each URL must use the following form:</p>
+<div class="paragraph">
+<p><code>[(amqp|amqps|ws|wss)://](<em>HOST</em>|<em>IP ADDRESS</em>)[:port]</code></p>
+</div>
+<div class="paragraph">
+<p>For more information, see <a href="#understanding-connection-failover-qdr">Understanding connection failover</a>.</p>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p>After enabling a router to listen for client connections, secure the connection.</p>
+<div class="paragraph">
+<p>For more information, see <a href="#securing-incoming-client-connections-qdr">Securing incoming client connections</a>.</p>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="connecting-to-external-amqp-containers-qdr">7.3. Connecting to external AMQP containers</h3>
+<div class="paragraph">
+<p>To enable a router to establish a connection to an external AMQP container (such as a message broker), you configure a <code>connector</code>.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Instead of configuring a <code>connector</code> to initiate connections to the AMQP container, you can configure a <code>listener</code> to listen for connections from the AMQP container. However, in this case, the addresses on the AMQP container are available for routing only after the AMQP container has created a connection.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file.</p>
+</li>
+<li>
+<p>Configure a <code>connector</code> with the <code>route-container</code> role.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example creates a <code>connector</code> that initiates connections to a broker. The addresses on the broker will be available for routing once the router creates the connection and it is accepted by the broker.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">connector {
+    name: my-broker
+    host: 192.0.2.10
+    port: 5672
+    role: route-container
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>name</code></dt>
+<dd>
+<p>The name of the <code>connector</code>. Specify a name that describes the entity to which the router will connect.</p>
+</dd>
+<dt class="hdlist1"><code>host</code></dt>
+<dd>
+<p>The IP address (IPv4 or IPv6) or hostname to which the router will connect.</p>
+</dd>
+<dt class="hdlist1"><code>port</code></dt>
+<dd>
+<p>The port number or symbolic service name to which the router will connect.</p>
+</dd>
+<dt class="hdlist1"><code>role</code></dt>
+<dd>
+<p>The role of the connection. Specify <code>route-container</code> to indicate that this connection is for an AMQP container that holds known addresses.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p>After enabling a router to connect to an external AMQP container, configure any necessary security credentials.</p>
+<div class="paragraph">
+<p>For more information, see <a href="#securing-outgoing-connections-qdr">Securing outgoing connections</a>.</p>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="adding-metadata-to-connections-qdr">7.4. Adding metadata to connections</h3>
+<div class="paragraph">
+<p>In a complex topology, it can be useful to add metadata to connections so that messages can be handled programmatically.</p>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file.</p>
+</li>
+<li>
+<p>Add arbitrary JSON to the <code>connector</code> configuration using the 'openProperties' attribute.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example adds the property <code>label</code> with the value <code>green</code>.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">connector {
+   name: broker
+   role: route-container
+   host: 127.0.0.1
+   port: 22180
+   saslMechanisms: ANONYMOUS
+   openProperties: {
+      "label": "green"
+   }
+}</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Note the following restrictions on the JSON entries:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>ASCII characters only for keys</p>
+</li>
+<li>
+<p>The following keys are not allowed:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>product</p>
+</li>
+<li>
+<p>version</p>
+</li>
+<li>
+<p>failover-server-list</p>
+</li>
+<li>
+<p>network-host</p>
+</li>
+<li>
+<p>port</p>
+</li>
+<li>
+<p>scheme</p>
+</li>
+<li>
+<p>hostname</p>
+</li>
+<li>
+<p>any key starting with <code>qd.</code></p>
+</li>
+<li>
+<p>any key starting with <code>x-opt-qd.</code></p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The <code>openProperties</code> attribute can only be set for a connector with a <code>normal</code> or <code>route-container</code> role.
+You cannot set the attribute for connectors that have the following settings:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>role: inter-router</code></p>
+</li>
+<li>
+<p><code>role: edge</code></p>
+</li>
+<li>
+<p><code>http: true</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The JSON format supports lists, maps and multiple entries, for example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>connector {
+   name: broker
+   role: route-container
+   host: 127.0.0.1
+   port: 22180
+   saslMechanisms: ANONYMOUS
+   openProperties: {
+      "foo": "bar",
+      "integer": 7,
+ "list":  ["a", 1, "b", -9, true],
+ "map":  {"key1": null, "key2": [1, 2, 3]},
+ }
+   cost: 10
+}</pre>
+</div>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect2">
+<h3 id="understanding-connection-failover-qdr">7.5. Understanding connection failover</h3>
+<div class="paragraph">
+<p>If a connection between a router and a remote host fails, connection failover enables the connection to be reestablished automatically on an alternate URL.</p>
+</div>
+<div class="paragraph">
+<p>A router can use connection failover for both incoming and outgoing connections.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Connection failover for outgoing connections</dt>
+<dd>
+<p>By default, when you configure a <code>connector</code> on a router, the router attempts to maintain an open network transport connection to the configured remote host and port. If the connection cannot be established, the router continually retries until the connection is established. If the connection is established and then fails, the router immediately attempts to reestablish the connection.</p>
+<div class="paragraph">
+<p>When the router establishes a connection to a remote host, the client may provide the router with alternate connection information (sometimes called failover lists) that it can use if the connection is lost. In these cases, rather than attempting to reestablish the connection on the same host, the router will also try the alternate hosts.</p>
+</div>
+<div class="paragraph">
+<p>Connection failover is particularly useful when the router establishes outgoing connections to a cluster of servers providing the same service.</p>
+</div>
+</dd>
+<dt class="hdlist1">Connection failover for incoming connections</dt>
+<dd>
+<p>You can configure a <code>listener</code> on a router to provide a list of failover URLs to be used as backups. If the connection is lost, the client can use these failover URLs to reestablish the connection to the router.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="securing-network-connections-qdr">8. Securing network connections</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You can configure Dispatch Router to communicate with clients, routers, and brokers in a secure way by authenticating and encrypting the router&#8217;s connections. Dispatch Router supports the following security protocols:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>SSL/TLS for certificate-based encryption and mutual authentication</p>
+</li>
+<li>
+<p>SASL for authentication with mechanisms</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>You configure SSL/TLS, SASL (or a combination of both) to secure any of the following:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#securing-connections-between-routers-qdr">Secure connections between routers</a></p>
+</li>
+<li>
+<p><a href="#securing-incoming-client-connections-qdr">Secure incoming client connections</a></p>
+</li>
+<li>
+<p><a href="#securing-outgoing-connections-qdr">Secure outgoing connections</a></p>
+</li>
+</ul>
+</div>
+<div class="sect2">
+<h3 id="securing-connections-between-routers-qdr">8.1. Securing connections between routers</h3>
+<div class="paragraph">
+<p>Connections between interior routers should be secured with SSL/TLS encryption and authentication (also called mutual authentication) to prevent unauthorized routers (or endpoints pretending to be routers) from joining the network.</p>
+</div>
+<div class="paragraph">
+<p>SSL/TLS mutual authentication requires an X.509 Certificate Authority (CA) with individual certificates generated for each interior router. Connections between the interior routers are encrypted, and the CA authenticates each incoming inter-router connection.</p>
+</div>
+<div class="paragraph">
+<p>This procedure describes how to secure a connection between two interior routers using SSL/TLS mutual authentication.</p>
+</div>
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>An X.509 Certificate Authority must exist for the interior routers.</p>
+</li>
+<li>
+<p>A security certificate must be generated for each router and be signed by the CA.</p>
+</li>
+<li>
+<p>An inter-router connection must exist between the routers.</p>
+<div class="paragraph">
+<p>For more information, see <a href="#connecting-routers-qdr">Connecting routers</a>.</p>
+</div>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>On the router that establishes the connection, do the following:</p>
+<div class="olist loweralpha">
+<ol class="loweralpha" type="a">
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code>.</p>
+</li>
+<li>
+<p>If the router does not contain an <code>sslProfile</code> that defines the private keys and certificates for the inter-router network, then add one.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This <code>sslProfile</code> contains the locations of the private key and certificates that the router uses to authenticate with its peer.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">sslProfile {
+    name: inter-router-tls
+    certFile: /etc/pki/tls/certs/tls.crt
+    caCertFile: /etc/pki/tls/certs/ca.crt
+    privateKeyFile: /etc/pki/tls/private/tls.key
+    password: file:/etc/pki/tls/private/password.txt
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>name</code></dt>
+<dd>
+<p>A unique name that you can use to refer to this <code>sslProfile</code>.</p>
+</dd>
+<dt class="hdlist1"><code>certFile</code></dt>
+<dd>
+<p>The absolute path to the file containing the public certificate for this router.</p>
+</dd>
+<dt class="hdlist1"><code>caCertFile</code></dt>
+<dd>
+<p>The absolute path to the CA certificate that the router uses to authenticate incoming clients.</p>
+</dd>
+<dt class="hdlist1"><code>privateKeyFile</code></dt>
+<dd>
+<p>The absolute path to the file containing the private key for this router&#8217;s public certificate.</p>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Ensure that the <code>qdrouterd</code> or root user can access the private key. For example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">chmod 0600 /etc/pki/tls/private/tls.key
+chown qdrouterd /etc/pki/tls/private/tls.key</pre>
+</div>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</dd>
+</dl>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>password</code></dt>
+<dd>
+<p>The password to unlock the private key. You do not need to specify this if the private key does not have a password. By using different prefixes, you can specify the password several different ways depending on your security requirements:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Specify the absolute path to a file that contains the password. This is the most secure option, because you can set permissions on the file that contains the password. For example:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">password: file:/etc/pki/tls/private/password.txt</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Specify an environment variable that stores the password. Use this option with caution, because the environment of other processes is visible on certain platforms. For example:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">password: env:CERT_PASSWORD</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Specify the password in clear text. This option is insecure, so it should only be used if security is not a concern. For example:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">password: pass:mycertpassword</pre>
+</div>
+</div>
+</li>
+</ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Configure the inter-router <code>connector</code> for this connection to use the <code>sslProfile</code> that you created.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">connector {
+    host: 192.0.2.1
+    port: 5001
+    role: inter-router
+    sslProfile: inter-router-tls
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>sslProfile</code></dt>
+<dd>
+<p>The name of the <code>sslProfile</code> that defines the SSL/TLS private keys and certificates for the inter-router network.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</li>
+<li>
+<p>On the router that listens for the connection, do the following:</p>
+<div class="olist loweralpha">
+<ol class="loweralpha" type="a">
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code>.</p>
+</li>
+<li>
+<p>If the router does not contain an <code>sslProfile</code> that defines the private keys and certificates for the inter-router network, then add one.</p>
+</li>
+<li>
+<p>Configure the inter-router <code>listener</code> for this connection to use SSL/TLS to secure the connection.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">listener {
+    host: 0.0.0.0
+    port: 5001
+    role: inter-router
+    sslProfile: inter_router_tls
+    authenticatePeer: yes
+    requireSsl: yes
+    saslMechanisms: EXTERNAL
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>sslProfile</code></dt>
+<dd>
+<p>The name of the <code>sslProfile</code> that defines the SSL/TLS private keys and certificates for the inter-router network.</p>
+</dd>
+<dt class="hdlist1"><code>authenticatePeer</code></dt>
+<dd>
+<p>Specify <code>yes</code> to authenticate the peer interior router&#8217;s identity.</p>
+</dd>
+<dt class="hdlist1"><code>requireSsl</code></dt>
+<dd>
+<p>Specify <code>yes</code> to encrypt the connection with SSL/TLS.</p>
+</dd>
+<dt class="hdlist1"><code>saslMechanisms</code></dt>
+<dd>
+<p>Specify <code>EXTERNAL</code> to enable X.509 client certificate authentication.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect2">
+<h3 id="securing-incoming-client-connections-qdr">8.2. Securing incoming client connections</h3>
+<div class="paragraph">
+<p>You can use SSL/TLS and SASL to provide the appropriate level of security for client traffic into the router network. You can use the following methods to secure incoming connections to a router from AMQP clients, external containers, or edge routers:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#enabling-ssl-tls-encryption-qdr">Enable SSL/TLS encryption</a></p>
+</li>
+<li>
+<p><a href="#enabling-ssl-tls-client-authentication-qdr">Enable SSL/TLS client authentication</a></p>
+</li>
+<li>
+<p><a href="#enabling-username-password-authentication-qdr">Enable user name and password authentication</a></p>
+</li>
+<li>
+<p><a href="#integrating-with-kerberos-qdr">Integrate with Kerberos</a></p>
+</li>
+</ul>
+</div>
+<div class="sect3">
+<h4 id="enabling-ssl-tls-encryption-qdr">8.2.1. Enabling SSL/TLS encryption</h4>
+<div class="paragraph">
+<p>You can use SSL/TLS to encrypt an incoming connection from a client.</p>
+</div>
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>An X.509 Certificate Authority (CA) must exist for the client connections.</p>
+</li>
+<li>
+<p>A security certificate must be generated and signed by the CA.</p>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file.</p>
+</li>
+<li>
+<p>If the router does not contain an <code>sslProfile</code> that defines the private keys and certificates for client connections, then add one.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This <code>sslProfile</code> contains the locations of the private key and certificates that the router should use to encrypt connections from clients.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">sslProfile {
+    name: service-tls
+    certFile: /etc/pki/tls/certs/tls.crt
+    caCertFile: /etc/pki/tls/certs/ca.crt
+    privateKeyFile: /etc/pki/tls/private/tls.key
+    password: file:/etc/pki/tls/private/password.txt
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>name</code></dt>
+<dd>
+<p>A unique name that you can use to refer to this <code>sslProfile</code>.</p>
+</dd>
+<dt class="hdlist1"><code>certFile</code></dt>
+<dd>
+<p>The absolute path to the file containing the public certificate for this router.</p>
+</dd>
+<dt class="hdlist1"><code>caCertFile</code></dt>
+<dd>
+<p>The absolute path to the CA certificate that the router uses to authenticate incoming clients.</p>
+</dd>
+<dt class="hdlist1"><code>privateKeyFile</code></dt>
+<dd>
+<p>The absolute path to the file containing the private key for this router&#8217;s public certificate.</p>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Ensure that the <code>qdrouterd</code> or root user can access the private key. For example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">chmod 0600 /etc/pki/tls/private/tls.key
+chown qdrouterd /etc/pki/tls/private/tls.key</pre>
+</div>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</dd>
+</dl>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>password</code></dt>
+<dd>
+<p>The password to unlock the private key. You do not need to specify this if the private key does not have a password. By using different prefixes, you can specify the password several different ways depending on your security requirements:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Specify the absolute path to a file that contains the password. This is the most secure option, because you can set permissions on the file that contains the password. For example:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">password: file:/etc/pki/tls/private/password.txt</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Specify an environment variable that stores the password. Use this option with caution, because the environment of other processes is visible on certain platforms. For example:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">password: env:CERT_PASSWORD</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Specify the password in clear text. This option is insecure, so it should only be used if security is not a concern. For example:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">password: pass:mycertpassword</pre>
+</div>
+</div>
+</li>
+</ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Configure the <code>listener</code> for this connection to use SSL/TLS to encrypt the connection.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example configures a <code>normal</code> listener to encrypt connections from clients.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">listener {
+    host: 0.0.0.0
+    port: 5672
+    role: normal
+    sslProfile: inter_router_tls
+    requireSsl: yes
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>sslProfile</code></dt>
+<dd>
+<p>The name of the <code>sslProfile</code> that defines the SSL/TLS private keys and certificates for client connections.</p>
+</dd>
+<dt class="hdlist1"><code>requireSsl</code></dt>
+<dd>
+<p>Specify <code>true</code> to encrypt the connection with SSL/TLS.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect3">
+<h4 id="enabling-ssl-tls-client-authentication-qdr">8.2.2. Enabling SSL/TLS client authentication</h4>
+<div class="paragraph">
+<p>In addition to SSL/TLS encryption, you can also use SSL/TLS to authenticate an incoming connection from a client. With this method, a clients must present its own X.509 certificate to the router, which the router uses to verify the client&#8217;s identity.</p>
+</div>
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>SSL/TLS encryption must be configured.</p>
+<div class="paragraph">
+<p>For more information, see <a href="#enabling-ssl-tls-encryption-qdr">Enabling SSL/TLS encryption</a>.</p>
+</div>
+</li>
+<li>
+<p>The client must have an X.509 certificate that it can use to authenticate to the router.</p>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file.</p>
+</li>
+<li>
+<p>Configure the <code>listener</code> for this connection to use SSL/TLS to authenticate the client.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example adds SSL/TLS authentication to a <code>normal</code> listener to authenticate incoming connections from a client. The client will only be able to connect to the router by presenting its own X.509 certificate to the router, which the router will use to verify the client&#8217;s identity.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">listener {
+    host: 0.0.0.0
+    port: 5672
+    role: normal
+    sslProfile: service-tls
+    requireSsl: yes
+    authenticatePeer: yes
+    saslMechanisms: EXTERNAL
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>authenticatePeer</code></dt>
+<dd>
+<p>Specify <code>yes</code> to authenticate the client&#8217;s identity.</p>
+</dd>
+<dt class="hdlist1"><code>saslMechanisms</code></dt>
+<dd>
+<p>Specify <code>EXTERNAL</code> to enable X.509 client certificate authentication.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect3">
+<h4 id="enabling-username-password-authentication-qdr">8.2.3. Enabling user name and password authentication</h4>
+<div class="paragraph">
+<p>You can use the SASL PLAIN mechanism to authenticate incoming client connections against a set of user names and passwords. You can use this method by itself, or you can combine it with SSL/TLS encryption.</p>
+</div>
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>The <code>cyrus-sasl-plain</code> plugin is installed.</p>
+<div class="paragraph">
+<p>Cyrus SASL uses plugins to support specific SASL mechanisms. Before you can use a particular SASL mechanism, the relevant plugin must be installed.</p>
+</div>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>To see a list of Cyrus SASL plugins in a <code>dnf</code>-based Linux system, use the <code>dnf search cyrus-sasl</code> command. To install a Cyrus SASL plugin, use the <code>dnf install <em>&lt;plugin&gt;</em></code> command.</p>
+</div>
+</div>
+</div>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>If necessary, add the user names and passwords to the SASL database.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example adds a new user (user1@example.com) to the SASL database (qdrouterd.sasldb):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">$ sudo saslpasswd2 -c -f qdrouterd.sasldb -u example.com user1</pre>
+</div>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The full user name is the user name you entered plus the domain name (<code><em>&lt;user-name&gt;</em></code>@<code><em>&lt;domain-name&gt;</em></code>). Providing a domain name is not required when you add a user to the database, but if you do not provide one, a default domain will be added automatically (the hostname of the machine on which the tool is running).</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Ensure that the <code>qdrouterd</code> process can read the SASL database.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>If the <code>qdrouterd</code> process runs as an unprivileged user, you might need to adjust the permissions or ownership of the SASL database so that the router can read it.</p>
+</div>
+<div class="paragraph">
+<p>This example makes the qdrouterd user the owner of the SASL database:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">$ sudo chown qdrouterd /var/lib/qdrouterd/qdrouterd.sasldb</pre>
+</div>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Open the <code>/etc/sasl2/qdrouterd.conf</code> configuration file.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example shows a <code>/etc/sasl2/qdrouterd.conf</code> configuration file:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">pwcheck_method: auxprop
+auxprop_plugin: sasldb
+sasldb_path: qdrouterd.sasldb
+mech_list: ANONYMOUS DIGEST-MD5 EXTERNAL PLAIN GSSAPI</pre>
+</div>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Verify that the <code>mech_list</code> attribute contains the <code>PLAIN</code> mechanism.</p>
+</li>
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file.</p>
+</li>
+<li>
+<p>In the <code>router</code> section, specify the path to the SASL configuration file.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">router {
+    mode: interior
+    id: Router.A
+    saslConfigDir: /etc/sasl2/
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>saslConfigDir</code></dt>
+<dd>
+<p>The absolute path to the SASL configuration file that contains the path to the SASL database that stores the user names and passwords.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Configure the <code>listener</code> for this connection to authenticate clients using SASL PLAIN.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example configures basic user name and password authentication for a <code>listener</code>. In this case, no SSL/TLS encryption is being used.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">listener {
+    host: 0.0.0.0
+    port: 5672
+    authenticatePeer: yes
+    saslMechanisms: PLAIN
+    }</pre>
+</div>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect3">
+<h4 id="integrating-with-kerberos-qdr">8.2.4. Integrating with Kerberos</h4>
+<div class="paragraph">
+<p>If you have implemented Kerberos in your environment, you can use it with the <code>GSSAPI</code> SASL mechanism to authenticate incoming connections.</p>
+</div>
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>A Kerberos infrastructure must be deployed in your environment.</p>
+</li>
+<li>
+<p>In the Kerberos environment, a service principal of <code>amqp/&lt;hostname&gt;@&lt;realm&gt;</code> must be configured.</p>
+<div class="paragraph">
+<p>This is the service principal that Dispatch Router uses.</p>
+</div>
+</li>
+<li>
+<p>The <code>cyrus-sasl-gssapi</code> package must be installed on each client and the router host machine.</p>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>On the router&#8217;s host machine, open the <code>/etc/sasl2/qdrouterd.conf</code> configuration file.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example shows a <code>/etc/sasl2/qdrouterd.conf</code> configuration file:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">pwcheck_method: auxprop
+auxprop_plugin: sasldb
+sasldb_path: qdrouterd.sasldb
+keytab: /etc/krb5.keytab
+mech_list: ANONYMOUS DIGEST-MD5 EXTERNAL PLAIN GSSAPI</pre>
+</div>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Verify the following:</p>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p>The <code>mech_list</code> attribute contains the <code>GSSAPI</code> mechanism.</p>
+</li>
+<li>
+<p>The <code>keytab</code> attribute points to the location of the keytab file.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file.</p>
+</li>
+<li>
+<p>In the <code>router</code> section, specify the path to the SASL configuration file.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">router {
+    mode: interior
+    id: Router.A
+    saslConfigDir: /etc/sasl2/
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>saslConfigDir</code></dt>
+<dd>
+<p>The absolute path to the SASL configuration file that contains the path to the SASL database.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>For each incoming connection using Kerberos for authentication, set the <code>listener</code> to use the <code>GSSAPI</code> mechanism.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre>listener {
+    host: 0.0.0.0
+    port: 5672
+    authenticatePeer: yes
+    saslMechanisms: GSSAPI
+    }</pre>
+</div>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="securing-outgoing-connections-qdr">8.3. Securing outgoing connections</h3>
+<div class="paragraph">
+<p>If a router is configured to create connections to external AMQP containers (such as message brokers), you can use the following methods to secure the connection:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#connecting-using-one-way-ssl-tls-authentication-qdr">Connect using SSL/TLS encryption (one-way authentication)</a></p>
+</li>
+<li>
+<p><a href="#connecting-using-mutual-ssl-tls-authentication-qdr">Connect using SSL/TLS mutual authentication</a></p>
+</li>
+<li>
+<p><a href="#connecting-using-username-password-authentication-qdr">Connect using user name and password authentication (with or without SSL/TLS encryption)</a></p>
+</li>
+</ul>
+</div>
+<div class="sect3">
+<h4 id="connecting-using-one-way-ssl-tls-authentication-qdr">8.3.1. Connecting using one-way SSL/TLS authentication</h4>
+<div class="paragraph">
+<p>You can connect to an external AMQP container (such as a broker) using one-way SSL/TLS. With this method, the router validates the external AMQP container&#8217;s server certificate to verify its identity.</p>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file.</p>
+</li>
+<li>
+<p>If the router does not contain an <code>sslProfile</code> that defines a certificate that can be used to validate the external AMQP container&#8217;s identity, then add one.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">sslProfile {
+    name: broker-tls
+    caCertFile: /etc/qpid-dispatch-certs/ca.crt
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>name</code></dt>
+<dd>
+<p>A unique name that you can use to refer to this <code>sslProfile</code>.</p>
+</dd>
+<dt class="hdlist1"><code>caCertFile</code></dt>
+<dd>
+<p>The absolute path to the CA certificate used to verify the external AMQP container&#8217;s identity.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Configure the <code>connector</code> for this connection to use SSL/TLS to validate the server certificate received by the broker during the SSL handshake.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example configures a <code>connector</code> to a broker. When the router connects to the broker, it will use the CA certificate defined in the <code>broker-tls</code> <code>sslProfile</code> to validate the server certificate received from the broker.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">connector {
+    host: 192.0.2.1
+    port: 5672
+    role: route-container
+    sslProfile: broker-tls
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>sslProfile</code></dt>
+<dd>
+<p>The name of the <code>sslProfile</code> that defines the certificate to use to validate the external AMQP container&#8217;s identity.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect3">
+<h4 id="connecting-using-mutual-ssl-tls-authentication-qdr">8.3.2. Connecting using mutual SSL/TLS authentication</h4>
+<div class="paragraph">
+<p>You can connect to an external AMQP container (such as a broker) using mutual SSL/TLS authentication. With this method, the router, acting as a client, provides a certificate to the external AMQP container so that it can verify the router&#8217;s identity.</p>
+</div>
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>An X.509 Certificate Authority (CA) must exist for the router.</p>
+</li>
+<li>
+<p>A security certificate must be generated for the router and be signed by the CA.</p>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file.</p>
+</li>
+<li>
+<p>If the router does not contain an <code>sslProfile</code> that defines the private keys and certificates to connect to the external AMQP container, then add one.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This <code>sslProfile</code> contains the locations of the private key and certificates that the router should use to authenticate with its peer.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">sslProfile {
+    name: broker-tls
+    certFile: /etc/pki/tls/certs/tls.crt
+    caCertFile: /etc/pki/tls/certs/ca.crt
+    privateKeyFile: /etc/pki/tls/private/tls.key
+    password: file:/etc/pki/tls/private/password.txt
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>name</code></dt>
+<dd>
+<p>A unique name that you can use to refer to this <code>sslProfile</code>.</p>
+</dd>
+<dt class="hdlist1"><code>certFile</code></dt>
+<dd>
+<p>The absolute path to the file containing the public certificate for this router.</p>
+</dd>
+<dt class="hdlist1"><code>caCertFile</code></dt>
+<dd>
+<p>The absolute path to the CA certificate that the router uses to authenticate incoming clients.</p>
+</dd>
+<dt class="hdlist1"><code>privateKeyFile</code></dt>
+<dd>
+<p>The absolute path to the file containing the private key for this router&#8217;s public certificate.</p>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Ensure that the <code>qdrouterd</code> or root user can access the private key. For example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">chmod 0600 /etc/pki/tls/private/tls.key
+chown qdrouterd /etc/pki/tls/private/tls.key</pre>
+</div>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</dd>
+</dl>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>password</code></dt>
+<dd>
+<p>The password to unlock the private key. You do not need to specify this if the private key does not have a password. By using different prefixes, you can specify the password several different ways depending on your security requirements:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Specify the absolute path to a file that contains the password. This is the most secure option, because you can set permissions on the file that contains the password. For example:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">password: file:/etc/pki/tls/private/password.txt</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Specify an environment variable that stores the password. Use this option with caution, because the environment of other processes is visible on certain platforms. For example:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">password: env:CERT_PASSWORD</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Specify the password in clear text. This option is insecure, so it should only be used if security is not a concern. For example:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">password: pass:mycertpassword</pre>
+</div>
+</div>
+</li>
+</ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Configure the <code>connector</code> for this connection to use the <code>sslProfile</code> that you created.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">connector {
+    host: 192.0.2.1
+    port: 5672
+    role: route-container
+    sslProfile: broker-tls
+    saslMechanisms: EXTERNAL
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>sslProfile</code></dt>
+<dd>
+<p>The name of the <code>sslProfile</code> that defines the SSL/TLS private keys and certificates for the inter-router network.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect3">
+<h4 id="connecting-using-username-password-authentication-qdr">8.3.3. Connecting using user name and password authentication</h4>
+<div class="paragraph">
+<p>You can use the SASL PLAIN mechanism to connect to an external AMQP container that requires a user name and password. You can use this method by itself, or you can combine it with SSL/TLS encryption.</p>
+</div>
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>The <code>cyrus-sasl-plain</code> plugin is installed.</p>
+<div class="paragraph">
+<p>Cyrus SASL uses plugins to support specific SASL mechanisms. Before you can use a particular SASL mechanism, the relevant plugin must be installed.</p>
+</div>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>To see a list of Cyrus SASL plugins in a <code>dnf</code>-based Linux system, use the <code>dnf search cyrus-sasl</code> command. To install a Cyrus SASL plugin, use the <code>dnf install <em>&lt;plugin&gt;</em></code> command.</p>
+</div>
+</div>
+</div>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Open the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file.</p>
+</li>
+<li>
+<p>Configure the <code>connector</code> for this connection to provide user name and password credentials to the external AMQP container.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">connector {
+    host: 192.0.2.1
+    port: 5672
+    role: route-container
+    saslMechanisms: PLAIN
+    saslUsername: user
+    saslPassword: file:/path/to/file/password.txt
+    }</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>saslPassword</code></dt>
+<dd>
+<p>The password to connect to the peer. By using different prefixes, you can specify the password several different ways depending on your security requirements:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Specify the absolute path to a file that contains the password. This is the most secure option, because you can set permissions on the file that contains the password. For example:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">password: file:/path/to/file/password.txt</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Specify an environment variable that stores the password. Use this option with caution, because the environment of other processes is visible on certain platforms. For example:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">password: env:PASSWORD</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Specify the password in clear text. This option is insecure, so it should only be used if security is not a concern. For example:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">password: pass:mypassword</pre>
+</div>
+</div>
+</li>
+</ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="configuring-authorization-qdr">9. Configuring authorization</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You can configure <em>policies</em> to secure messaging resources in your messaging environment. Policies ensure that only authorized users can access messaging endpoints through the router network, and that the resources on those endpoints are used in an authorized way.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#types-policies-qdr">Types of policies</a></p>
+</li>
+<li>
+<p><a href="#how-policies-enforce-connection-resource-limits-qdr">How policies enforce connection and resource limits</a></p>
+</li>
+<li>
+<p><a href="#setting-global-connection-limits-qdr">Setting global limits</a></p>
+</li>
+<li>
+<p><a href="#setting-connection-resource-limits-messaging-endpoints-qdr">Setting connection and resource limits for messaging endpoints</a></p>
+</li>
+</ul>
+</div>
+<div class="sect2">
+<h3 id="types-policies-qdr">9.1. Types of policies</h3>
+<div class="paragraph">
+<p>Dispatch Router provides the following types of policies to control connection and resource limits:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Global policies</dt>
+<dd>
+<p>Settings for the router. A global policy defines the maximum number of incoming user connections for the router (across all messaging endpoints), and defines how the router should use vhost policies.</p>
+</dd>
+<dt class="hdlist1">Vhost policies</dt>
+<dd>
+<p>Connection and AMQP resource limits for a router ingress port (called an AMQP virtual host, or vhost). A vhost policy defines what a client using a particular connection can access on any messaging endpoint in the router network.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>The resource limits defined in global and vhost policies are applied to user connections only. The limits do not affect inter-router connections or router connections that are outbound to waypoints.</p>
+</div>
+<div class="paragraph">
+<p>Access to an AMQP resource allowed by policy for a given user connection to a given vhost is granted across the entire router network. Access restrictions are applied only at the router port to which a client is connected and only to resource requests originated by the client.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="how-policies-enforce-connection-resource-limits-qdr">9.2. How policies enforce connection and resource limits</h3>
+<div class="paragraph">
+<p>Dispatch Router uses policies to determine whether to permit a connection, and if it is permitted, to apply the appropriate resource limits.</p>
+</div>
+<div class="paragraph">
+<p>When a client creates a connection to a router, the router first determines whether to allow or deny the connection. This decision is based on the following criteria:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Whether the connection will exceed the router&#8217;s global connection limit (defined in the global policy)</p>
+</li>
+<li>
+<p>Whether the connection will exceed the vhost&#8217;s connection limits (defined in the vhost policy that matches the host to which the connection is directed)</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>If the connection is allowed, the router assigns the user (the authenticated user name from the connection) to a user group, and enforces the user group&#8217;s resource limits for the lifetime of the connection.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="setting-global-connection-limits-qdr">9.3. Setting global limits</h3>
+<div class="paragraph">
+<p>You can create a global policy to set the incoming connection and message size limits for a router.</p>
+</div>
+<div class="ulist">
+<div class="title">Procedure</div>
+<ul>
+<li>
+<p>In the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file, add a <code>policy</code> section and set the limits.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example sets the incoming connection limit and message size:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">policy {
+    maxConnections: 10000
+    maxMessageSize: 2000000
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>maxConnections</code></dt>
+<dd>
+<p>The total number of concurrent client connections that can be open for this router. This limit is always enforced, even if no other policy settings have been defined. The limit is applied to all incoming connections regardless of remote host, authenticated user, or targeted vhost. The default (and the maximum) value is <code>65535</code>.</p>
+</dd>
+<dt class="hdlist1"><code>maxMessageSize</code></dt>
+<dd>
+<p>The maximum size in bytes of AMQP message transfers allowed for this router as messages enter the router network. This limit is applied to transfers over user connections and to transfers to interior routers from edge routers. This limit is not applied to interior-to-interior router connections. This limit may be overridden by vhost or by vhost user group settings. A value of <code>0</code> disables this limit. Administrators are advised not set interior router maximum message sizes s [...]
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="setting-connection-resource-limits-messaging-endpoints-qdr">9.4. Setting connection and resource limits for messaging endpoints</h3>
+<div class="paragraph">
+<p>You can define the connection limit and AMQP resource limits for a messaging endpoint by configuring a <em>vhost policy</em>. Vhost policies define what resources clients are permitted to access on a messaging endpoint over a particular connection.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>A vhost is typically the name of the host to which the client connection is directed. For example, if a client application opens a connection to the <code>amqp://mybroker.example.com:5672/queue01</code> URL, the vhost would be <code>mybroker.example.com</code>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#enabling-vhost-policies-qdr">Enabling vhost policies</a></p>
+</li>
+<li>
+<p><a href="#creating-vhost-policies-qdr">Creating vhost policies</a></p>
+</li>
+<li>
+<p><a href="#creating-vhost-policies-json-qdr">Creating vhost policies as JSON files</a></p>
+</li>
+<li>
+<p><a href="#setting-resource-limits-outgoing-connections-qdr">Setting resource limits for outgoing connections</a></p>
+</li>
+<li>
+<p><a href="#methods-specifying-vhost-policy-source-target-addresses-qdr">Methods for specifying vhost policy source and target addresses</a></p>
+</li>
+<li>
+<p><a href="#vhost-policy-hostname-pattern-matching-rules-qdr">Vhost policy hostname pattern matching rules</a></p>
+</li>
+<li>
+<p><a href="#vhost-policy-examples-qdr">Vhost policy examples</a></p>
+</li>
+</ul>
+</div>
+<div class="sect3">
+<h4 id="enabling-vhost-policies-qdr">9.4.1. Enabling vhost policies</h4>
+<div class="paragraph">
+<p>You must enable the router to use vhost policies before you can create the policies.</p>
+</div>
+<div class="ulist">
+<div class="title">Procedure</div>
+<ul>
+<li>
+<p>In the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file, add a <code>policy</code> section if one does not exist, and enable vhost policies for the router.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">policy {
+    ...
+    enableVhostPolicy: true
+    enableVhostNamePatterns: true
+    defaultVhost: $default
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>enableVhostPolicy</code></dt>
+<dd>
+<p>Enables the router to enforce the connection denials and resource limits defined in the configured vhost policies. The default is <code>false</code>, which means that the router will not enforce any vhost policies.</p>
+</dd>
+<dt class="hdlist1"><code>enableVhostNamePatterns</code></dt>
+<dd>
+<p>Enables pattern matching for vhost hostnames. If set to <code>true</code>, you can use wildcards to specify a range of hostnames for a vhost. If set to <code>false</code>, vhost hostnames are treated as literal strings. This means that you must specify the exact hostname for each vhost. The default is <code>false</code>.</p>
+</dd>
+<dt class="hdlist1"><code>defaultVhost</code></dt>
+<dd>
+<p>The name of the default vhost policy, which is applied to any connection for which a vhost policy has not been configured. The default is <code>$default</code>. If <code>defaultVhost</code> is not defined, then default vhost processing is disabled.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="creating-vhost-policies-qdr">9.4.2. Creating vhost policies</h4>
+<div class="paragraph">
+<p>A vhost policy defines the connection limits and resource limits for users connecting to the router from a remote host. You must create one vhost policy for each remote host.</p>
+</div>
+<div class="paragraph">
+<div class="title">Prerequisites</div>
+<p>Vhost policies must be enabled for the router. For more information, see <a href="#enabling-vhost-policies-qdr">Enabling vhost policies</a>.</p>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>Add a <code>vhost</code> section and define the connection and message size limits for the messaging endpoint.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>The connection limits apply to all users that are connected to the vhost. These limits control the number of users that can be connected simultaneously to the vhost.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">vhost {
+    hostname: example.com
+    aliases: example.org, example.net
+    maxConnections: 10000
+    maxMessageSize: 500000
+    maxConnectionsPerUser: 100
+    maxConnectionsPerHost: 100
+    allowUnknownUser: true
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>hostname</code></dt>
+<dd>
+<p>The literal hostname of the vhost (the messaging endpoint) or a pattern that matches the vhost hostname. This vhost policy will be applied to any client connection that is directed to the hostname that you specify. This name must be unique; you can only have one vhost policy per hostname.</p>
+<div class="paragraph">
+<p>If <code>enableVhostNamePatterns</code> is set to <code>true</code>, you can use wildcards to specify a pattern that matches a range of hostnames. For more information, see <a href="#vhost-policy-hostname-pattern-matching-rules-qdr">Vhost policy hostname pattern matching rules</a>.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>aliases</code></dt>
+<dd>
+<p>Alternative literal hostnames or patterns that direct the router to use the settings in this vhost.
+Alias hostnames that match an incoming connection use the settings defined in the vhost section.
+In a multi-tenant configuration, a connection to a vhost alias uses the base vhost hostname for the tenant namespace.
+In this example if a connection is directed to vhost <code>example.org</code> then the settings from the base vhost hostname <code>example.com</code> apply and <code>example.com</code> becomes the tenant namespace.
+Vhost <code>hostname</code> and <code>aliases</code> settings from all vhosts must be unique.</p>
+<div class="paragraph">
+<p>If <code>enableVhostNamePatterns</code> is set to <code>true</code>, you can use wildcards to specify a pattern that matches a range of hostname aliases. For more information, see <a href="#vhost-policy-hostname-pattern-matching-rules-qdr">Vhost policy hostname pattern matching rules</a>.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>maxConnections</code></dt>
+<dd>
+<p>The global maximum number of concurrent client connections allowed for this vhost. The default is 65535.</p>
+</dd>
+<dt class="hdlist1"><code>maxMessageSize</code></dt>
+<dd>
+<p>The maximum size in bytes of AMQP message transfers allowed for connections to this vhost. This limit overrides the policy <code>maxMessageSize</code> value and may be overridden by vhost user group settings. A value of <code>0</code> disables this limit.</p>
+</dd>
+<dt class="hdlist1"><code>maxConnectionsPerUser</code></dt>
+<dd>
+<p>The maximum number of concurrent client connections allowed for any user. The default is 65535.</p>
+</dd>
+<dt class="hdlist1"><code>maxConnectionsPerHost</code></dt>
+<dd>
+<p>The maximum number of concurrent client connections allowed for any remote host (the host from which the client is connecting). The default is 65535.</p>
+</dd>
+<dt class="hdlist1"><code>allowUnknownUser</code></dt>
+<dd>
+<p>Whether unknown users (users who are not members of a defined user group) are allowed to connect to the vhost. Unknown users are assigned to the <code>$default</code> user group and receive <code>$default</code> settings. The default is <code>false</code>, which means that unknown users are not allowed.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>In the <code>vhost</code> section, beneath the connection settings that you added, add a <code>groups</code> entity to define the resource limits.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>You define resource limits by user group. A user group specifies the messaging resources the members of the group are allowed to access.</p>
+</div>
+<div class="paragraph">
+<p>This example shows three user groups: admin, developers, and $default:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">vhost {
+    ...
+    groups: {
+        admin: {
+            users: admin1, admin2
+            remoteHosts: 127.0.0.1, ::1
+            sources: *
+            targets: *
+        }
+        developers: {
+            users: dev1, dev2, dev3
+            remoteHosts: *
+            sources: myqueue1, myqueue2
+            targets: myqueue1, myqueue2
+        }
+        $default: {
+            remoteHosts: *
+            allowDynamicSource: true,
+            allowAdminStatusUpdate: true,
+            sources: myqueue1, myqueue2
+            targets: myqueue1, myqueue2
+        }
+    }
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>users</code></dt>
+<dd>
+<p>A list of authenticated users for this user group. Use commas to separate multiple users. A user may belong to only one vhost user group.</p>
+</dd>
+<dt class="hdlist1"><code>remoteHosts</code></dt>
+<dd>
+<p>A list of remote hosts from which the users may connect. A host can be a hostname, IP address, or IP address range. Use commas to separate multiple hosts. To allow access from all remote hosts, specify a wildcard <code>*</code>. To deny access from all remote hosts, leave this attribute blank.</p>
+</dd>
+<dt class="hdlist1"><code>maxConnectionsPerUser</code></dt>
+<dd>
+<p>The maximum number of connections that may be created by users in this user group. This value, if specified, overrides the vhost <code>maxConnectionsPerUser</code> value.</p>
+</dd>
+<dt class="hdlist1"><code>maxConnectionsPerHost</code></dt>
+<dd>
+<p>The maximum number of concurrent connections that may be created by users in this user group from any of the permitted remote hosts. This value, if specified, overrides the vhost <code>maxConnectionsPerUser</code> value.</p>
+</dd>
+<dt class="hdlist1"><code>maxMessageSize</code></dt>
+<dd>
+<p>The maximum size in bytes of AMQP message transfers allowed for connections created by users in this group. This limit overrides the policy and vhost <code>maxMessageSize</code> values. A value of <code>0</code> disables this limit.</p>
+</dd>
+<dt class="hdlist1"><code>allowDynamicSource</code></dt>
+<dd>
+<p>If <code>true</code>, connections from users in this group are permitted to attach receivers to dynamic sources. This permits creation of listeners to temporary addresses or temporary queues. If <code>false</code>, use of dynamic sources is not permitted.</p>
+</dd>
+<dt class="hdlist1"><code>allowAdminStatusUpdate</code></dt>
+<dd>
+<p>If <code>true</code>, connections from users in this group are permitted to modify the <code>adminStatus</code> of connections. This permits termination of sender or receiver connections.  If <code>false</code>, the users of this group are prohibited from terminating any connections. Inter-router connections can never be terminated by any user. The default is <code>true</code>, even if the policy is not configured.</p>
+</dd>
+<dt class="hdlist1"><code>allowWaypointLinks</code></dt>
+<dd>
+<p>If <code>true</code>, connections from users in this group are permitted to attach links using waypoint capabilities. This allows endpoints to act as waypoints (that is, brokers) without the need for configuring auto-links. If <code>false</code>, use of waypoint capabilities is not permitted.</p>
+</dd>
+<dt class="hdlist1"><code>allowDynamicLinkRoutes</code></dt>
+<dd>
+<p>If <code>true</code>, connections from users in this group may dynamically create connection-scoped link route destinations. This allows endpoints to act as link route destinations (that is, brokers) without the need for configuring link routes. If <code>false</code>, creation of dynamic link route destinations is not permitted.</p>
+</dd>
+<dt class="hdlist1"><code>allowFallbackLinks</code></dt>
+<dd>
+<p>If <code>true</code>, connections from users in this group are permitted to attach links using fallback-link capabilities. This allows endpoints to act as fallback destinations (and sources) for addresses that have fallback enabled. If <code>false</code>, use of fallback-link capabilities is not permitted.</p>
+</dd>
+<dt class="hdlist1"><code>sources</code> | <code>sourcePattern</code></dt>
+<dd>
+<p>A list of AMQP source addresses from which users in this group may receive messages.</p>
+<div class="paragraph">
+<p>Use <code>sources</code> to specify one or more literal addresses. To specify multiple addresses, use a comma-separated list. To prevent users in this group from receiving messages from any addresses, leave this attribute blank. To allow access to an address specific to a particular user, specify the <code>${user}</code> token. For more information, see <a href="#methods-specifying-vhost-policy-source-target-addresses-qdr">Methods for specifying vhost policy source and target addresse [...]
+</div>
+<div class="paragraph">
+<p>Alternatively, you can use <code>sourcePattern</code> to match one or more addresses that correspond to a pattern. A pattern is a sequence of words delimited by either a <code>.</code> or <code>/</code> character. You can use wildcard characters to represent a word. The  <code>*</code> character matches exactly one word, and the <code>#</code> character matches any sequence of zero or more words.</p>
+</div>
+<div class="paragraph">
+<p>To specify multiple address ranges, use a comma-separated list of address patterns. For more information, see <a href="#address-pattern-matching-qdr">Address pattern matching</a>. To allow access to address ranges that are specific to a particular user, specify the <code>${user}</code> token. For more information, see <a href="#methods-specifying-vhost-policy-source-target-addresses-qdr">Methods for specifying vhost policy source and target addresses</a>.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>targets</code> | <code>targetPattern</code></dt>
+<dd>
+<p>A list of AMQP target addresses from which users in this group may send messages. You can specify multiple AMQP addresses and use user name substitution and address patterns the same way as with source addresses.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>If necessary, add any advanced user group settings to the vhost user groups.</p>
+<div class="paragraph">
+<p>The advanced user group settings enable you to define resource limits based on the AMQP connection open, session begin, and link attach phases of the connection. For more information, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.17.0/man/qdrouterd.conf.html#_vhost" target="_blank" rel="noopener">vhost</a> in the <code>qdrouterd.conf</code> man page.</p>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect3">
+<h4 id="creating-vhost-policies-json-qdr">9.4.3. Creating vhost policies as JSON files</h4>
+<div class="paragraph">
+<p>As an alternative to using the router configuration file, you can configure vhost policies in JSON files. If you have multiple routers that need to share the same vhost configuration, you can put the vhost configuration JSON files in a location accessible to each router, and then configure the routers to apply the vhost policies defined in these JSON files.</p>
+</div>
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>Vhost policies must be enabled for the router. For more information, see <a href="#enabling-vhost-policies-qdr">Enabling vhost policies</a>.</p>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>In the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file, specify the directory where you want to store the vhost policy definition JSON files.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">policy {
+    ...
+    policyDir: /etc/qpid-dispatch-policies
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>policyDir</code></dt>
+<dd>
+<p>The absolute path to the directory that holds vhost policy definition files in JSON format. The router processes all of the vhost policies in each JSON file that is in this directory.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>In the vhost policy definition directory, create a JSON file for each vhost policy.</p>
+<div class="openblock">
+<div class="content">
+<div class="exampleblock">
+<div class="title">Example 2. Vhost Policy Definition JSON File</div>
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code data-lang="json" class="language-json hljs">[
+    ["vhost", {
+        "hostname": "example.com",
+        "maxConnections": 10000,
+        "maxConnectionsPerUser": 100,
+        "maxConnectionsPerHost": 100,
+        "allowUnknownUser": true,
+        "groups": {
+            "admin": {
+                "users": ["admin1", "admin2"],
+                "remoteHosts": ["127.0.0.1", "::1"],
+                "sources": "*",
+                "targets": "*"
+            },
+            "developers": {
+                "users": ["dev1", "dev2", "dev3"],
+                "remoteHosts": "*",
+                "sources": ["myqueue1", "myqueue2"],
+                "targets": ["myqueue1", "myqueue2"]
+            },
+            "$default": {
+                "remoteHosts": "*",
+                "allowDynamicSource": true,
+                "sources": ["myqueue1", "myqueue2"],
+                "targets": ["myqueue1", "myqueue2"]
+            }
+        }
+    }]
+]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>For more information about these attributes, see <a href="#creating-vhost-policies-qdr">Creating vhost policies</a>.</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect3">
+<h4 id="setting-resource-limits-outgoing-connections-qdr">9.4.4. Setting resource limits for outgoing connections</h4>
+<div class="paragraph">
+<p>If a router establishes an outgoing connection to an external AMQP container (such as a client or broker), you can restrict the resources that the external container can access on the router by configuring a connector vhost policy.</p>
+</div>
+<div class="paragraph">
+<p>The resource limits that are defined in a connector vhost policy are applied to links that are initiated by the external AMQP container. The connector vhost policy does not restrict links that the router creates.</p>
+</div>
+<div class="paragraph">
+<p>A connector vhost policy can only be applied to a connector with a <code>normal</code> or <code>route-container</code> role. You cannot apply connector vhost policies to connectors that have <code>inter-router</code> or <code>edge</code> roles.</p>
+</div>
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>Vhost policies are enabled for the router. For more information, see <a href="#enabling-vhost-policies-qdr">Enabling vhost policies</a>.</p>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>In the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file, add a <code>vhost</code> section with a <code>$connector</code> user group.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">vhost {
+    hostname: my-connector-policy
+    groups: {
+        $connector: {
+            sources: *
+            targets: *
+            maxSenders: 5
+            maxReceivers: 10
+            allowAnonymousSender: true
+            allowWaypointLinks: true
+        }
+    }
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>hostname</code></dt>
+<dd>
+<p>A unique name to identify the connector vhost policy. This name does not represent an actual hostname; therefore, choose a name that will not conflict with an actual vhost hostname.</p>
+</dd>
+<dt class="hdlist1"><code>$connector</code></dt>
+<dd>
+<p>Identifies this vhost policy as a connector vhost policy. For more information about the resource limits you can apply, see <a href="#creating-vhost-policies-qdr">Creating vhost policies</a>.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Apply the connector vhost policy to the connector that establishes the connection to the external AMQP container.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>The following example applies the connector vhost policy that was configured in the previous step:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">connector {
+    host: 192.0.2.10
+    port: 5672
+    role: normal
+    policyVhost: my-connector-policy
+}</pre>
+</div>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect3">
+<h4 id="methods-specifying-vhost-policy-source-target-addresses-qdr">9.4.5. Methods for specifying vhost policy source and target addresses</h4>
+<div class="paragraph">
+<p>If you want to allow or deny access to multiple addresses on a vhost, there are several methods you can use to match multiple addresses without having to specify each address individually.</p>
+</div>
+<div class="paragraph">
+<p>The following table describes the methods a vhost policy can use to specify multiple source and target addresses:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 33%;">
+<col style="width: 67%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">To&#8230;&#8203;</th>
+<th class="tableblock halign-left valign-top">Do this&#8230;&#8203;</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Allow all users in the user group to access all source or target addresses</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Use a <code>*</code> wildcard character.</p>
+</div>
+<div class="exampleblock">
+<div class="title">Example 3. Receive from any address</div>
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code class="language-none hljs">sources: *</code></pre>
+</div>
+</div>
+</div>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Prevent all users in the user group from accessing all source or target addresses</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Do not specify a value.</p>
+</div>
+<div class="exampleblock">
+<div class="title">Example 4. Prohibit message transfers to all addresses</div>
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code class="language-none hljs">targets:</code></pre>
+</div>
+</div>
+</div>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Allow access to some resources specific to each user</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Use the <code>${user}</code> username substitution token. You can use this token with <code>source</code>, <code>target</code>, <code>sourcePattern</code>, and <code>targetPattern</code>.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>You can only specify the <code>${user}</code> token once in an AMQP address name or pattern. If there are multiple tokens in an address, only the leftmost token will be substituted.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="exampleblock">
+<div class="title">Example 5. Receive from a user-specific address</div>
+<div class="content">
+<div class="paragraph">
+<p>This definition allows the users in the user group to receive messages from any address that meets any of the following rules:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Starts with the prefix <code>tmp_</code> and ends with the user name</p>
+</li>
+<li>
+<p>Starts with the prefix <code>temp</code> followed by any additional characters</p>
+</li>
+<li>
+<p>Starts with the user name, is followed by <code>-home-</code>, and ends with any additional characters</p>
+</li>
+</ul>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>sources: tmp_${user}, temp*, ${user}-home-*</pre>
+</div>
+</div>
+</div>
+</div>
+<div class="exampleblock">
+<div class="title">Example 6. User-specific address patterns</div>
+<div class="content">
+<div class="paragraph">
+<p>This definition allows the users in the user group to receive messages from any address that meets any of the following rules:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Starts with the prefix <code>tmp</code> and ends with the user name</p>
+</li>
+<li>
+<p>Starts with the prefix <code>temp</code> followed by zero or more additional characters</p>
+</li>
+<li>
+<p>Starts with the user name, is followed by <code>home</code>, and ends with one or more additional characters</p>
+</li>
+</ul>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>sourcePattern: tmp.${user}, temp/#, ${user}.home/*</pre>
+</div>
+</div>
+</div>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>In an address pattern (<code>sourcePattern</code> or <code>targetPattern</code>), the username substitution token must be either the first or last token in the pattern. The token must also be alone within its delimited field, which means that it cannot be concatenated with literal text prefixes or suffixes.</p>
+</div>
+</td>
+</tr>
+</table>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect3">
+<h4 id="vhost-policy-hostname-pattern-matching-rules-qdr">9.4.6. Vhost policy hostname pattern matching rules</h4>
+<div class="paragraph">
+<p>In a vhost policy, vhost hostnames can be either literal hostnames or patterns that cover a range of hostnames.</p>
+</div>
+<div class="paragraph">
+<p>A hostname pattern is a sequence of words with one or more of the following wildcard characters:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>*</code> represents exactly one word</p>
+</li>
+<li>
+<p><code>#</code> represents zero or more words</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The following table shows some examples of hostname patterns:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3334%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">This pattern&#8230;&#8203;</th>
+<th class="tableblock halign-left valign-top">Matches&#8230;&#8203;</th>
+<th class="tableblock halign-left valign-top">But not&#8230;&#8203;</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p><code>*.example.com</code></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p><code>www.example.com</code></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p><code>example.com</code>
+<code>srv2.www.example.com</code></p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p><code>#.example.com</code></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p><code>example.com</code>
+<code>www.example.com</code>
+<code>a.b.c.d.example.com</code></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p><code>myhost.com</code></p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p><code>www.*.test.example.com</code></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p><code>www.a.test.example.com</code></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p><code>www.test.example.com</code>
+<code>www.a.b.c.test.example.com</code></p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p><code>www.#.test.example.com</code></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p><code>www.test.example.com</code>
+<code>www.a.test.example.com</code>
+<code>www.a.b.c.test.example.com</code></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p><code>test.example.com</code></p>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Vhost hostname pattern matching applies the following precedence rules:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Policy pattern</th>
+<th class="tableblock halign-left valign-top">Precedence</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Exact match</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">High</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">*</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Medium</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">#</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Low</p></td>
+</tr>
+</tbody>
+</table>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Dispatch Router does not permit you to create vhost hostname patterns that conflict with existing patterns. This includes patterns that can be reduced to be the same as an existing pattern. For example, you would not be able to create the <code>#.#.#.#.com</code> pattern if <code>#.com</code> already exists.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="vhost-policy-examples-qdr">9.4.7. Vhost policy examples</h4>
+<div class="paragraph">
+<p>These examples demonstrate how to use vhost policies to authorize access to messaging resources.</p>
+</div>
+<div class="exampleblock">
+<div class="title">Example 7. Defining basic resource limits for a messaging endpoint</div>
+<div class="content">
+<div class="paragraph">
+<p>In this example, a vhost policy defines resource limits for clients connecting to the <code>example.com</code> host.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code data-lang="json" class="language-json hljs">[
+    ["vhost", {
+        "hostname": "example.com",  // <b class="conum">(1)</b>
+        "maxConnectionsPerUser": 10,  // <b class="conum">(2)</b>
+        "allowUnknownUser": true,  // <b class="conum">(3)</b>
+        "groups": {
+            "admin": {
+                "users": ["admin1", "admin2"],  // <b class="conum">(4)</b>
+                "remoteHosts": ["127.0.0.1", "::1"],  // <b class="conum">(5)</b>
+                "sources": "*",  // <b class="conum">(6)</b>
+                "targets": "*"  // <b class="conum">(7)</b>
+            },
+            "$default": {
+                "remoteHosts": "*",  // <b class="conum">(8)</b>
+                "sources": ["news*", "sports*" "chat*"],  // <b class="conum">(9)</b>
+                "targets": "chat*"  // <b class="conum">(10)</b>
+            }
+        }
+    }]
+]</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<ol>
+<li>
+<p>The rules defined in this vhost policy will be applied to any user connecting to <code>example.com</code>.</p>
+</li>
+<li>
+<p>Each user can open up to 10 connections to the vhost.</p>
+</li>
+<li>
+<p>Any user can connect to this vhost. Users that are not part of the <code>admin</code> group are assigned to the <code>$default</code> group.</p>
+</li>
+<li>
+<p>If the <code>admin1</code> or <code>admin2</code> user connects to the vhost, they are assigned to the <code>admin</code> user group.</p>
+</li>
+<li>
+<p>Users in the <code>admin</code> user group must connect from localhost. If the admin user attempts to connect from any other host, the connection will be denied.</p>
+</li>
+<li>
+<p>Users in the admin user group can receive from any address.</p>
+</li>
+<li>
+<p>Users in the admin user group can send to any address.</p>
+</li>
+<li>
+<p>Any non-admin user is permitted to connect from any host.</p>
+</li>
+<li>
+<p>Non-admin users are permitted to receive messages from any addresses that start with the <code>news</code>, <code>sports</code>, or <code>chat</code> prefixes.</p>
+</li>
+<li>
+<p>Non-admin users are permitted to send messages to any addresses that start with the <code>chat</code> prefix.</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="exampleblock">
+<div class="title">Example 8. Limiting memory consumption</div>
+<div class="content">
+<div class="paragraph">
+<p>By using the advanced vhost policy attributes, you can control how much system buffer memory a user connection can potentially consume.</p>
+</div>
+<div class="paragraph">
+<p>In this example, a stock trading site provides services for stock traders. However, the site must also accept high-capacity, automated data feeds from stock exchanges. To prevent trading activity from consuming memory needed for the feeds, a larger amount of system buffer memory is allotted to the feeds than to the traders.</p>
+</div>
+<div class="paragraph">
+<p>This example uses the <code>maxSessions</code> and <code>maxSessionWindow</code> attributes to set the buffer memory consumption limits for each AMQP session. These settings are passed directly to the AMQP connection and session negotiations, and do not require any processing cycles on the router.</p>
+</div>
+<div class="paragraph">
+<p>This example does not show the vhost policy settings that are unrelated to buffer allocation.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight nowrap"><code data-lang="json" class="language-json hljs">[
+    ["vhost", {
+        "hostname": "traders.com",  // <b class="conum">(1)</b>
+        "groups": {
+            "traders": {
+                "users": ["trader1", "trader2"],  // <b class="conum">(2)</b>
+                "maxFrameSize": 10000,
+                "maxSessionWindow": 5000000,  // <b class="conum">(3)</b>
+                "maxSessions": 1  // <b class="conum">(4)</b>
+            },
+            "feeds": {
+                "users": ["nyse-feed", "nasdaq-feed"],  // <b class="conum">(5)</b>
+                "maxFrameSize": 60000,
+                "maxSessionWindow": 1200000000,  // <b class="conum">(6)</b>
+                "maxSessions": 3  // <b class="conum">(7)</b>
+            }
+        }
+    }]
+]</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<ol>
+<li>
+<p>The rules defined in this vhost policy will be applied to any user connecting to <code>traders.com</code>.</p>
+</li>
+<li>
+<p>The <code>traders</code> group includes <code>trader1</code>, <code>trader2</code>, and any other user defined in the list.</p>
+</li>
+<li>
+<p>At most, 5,000,000 bytes of data can be in flight on each session.</p>
+</li>
+<li>
+<p>Only one session per connection is allowed.</p>
+</li>
+<li>
+<p>The <code>feeds</code> group includes two users.</p>
+</li>
+<li>
+<p>At most, 1,200,000,000 bytes of data can be in flight on each session.</p>
+</li>
+<li>
+<p>Up to three sessions per connection are allowed.</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="configuring-logging-qdr">10. Configuring logging</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Dispatch Router contains internal logging modules that provide important information about each router. For each module, you can configure the logging level, the format of the log file, and the location to which the logs should be written.</p>
+</div>
+<div class="sect2">
+<h3 id="logging-modules-qdr">10.1. Logging modules</h3>
+<div class="paragraph">
+<p>Dispatch Router logs are broken into different categories called <em>logging modules</em>. Each module provides important information about a particular aspect of Dispatch Router.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>DEFAULT</code></dt>
+<dd>
+<p>The default module. This module applies defaults to all of the other logging modules.</p>
+</dd>
+<dt class="hdlist1"><code>ROUTER</code></dt>
+<dd>
+<p>This module provides information and statistics about the local router. This includes how the router connects to other routers in the network, and information about the remote destinations that are directly reachable from the router (link routes, waypoints, autolinks, and so on).</p>
+</dd>
+<dt class="hdlist1"><code>ROUTER_HELLO</code></dt>
+<dd>
+<p>This module provides information about the <em>Hello</em> protocol used by interior routers to exchange Hello messages, which include information about the router&#8217;s ID and a list of its reachable neighbors (the other routers with which this router has bidirectional connectivity).</p>
+</dd>
+<dt class="hdlist1"><code>ROUTER_LS</code></dt>
+<dd>
+<p>This module provides information about link-state data between routers, including Router Advertisement (RA), Link State Request (LSR), and Link State Update (LSU) messages.</p>
+<div class="paragraph">
+<p>Periodically, each router sends an LSR to the other routers and receives an LSU with the requested information. Exchanging the above information, each router can compute the next hops in the topology, and the related costs.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>ROUTER_MA</code></dt>
+<dd>
+<p>This module provides information about the exchange of mobile address information between routers, including Mobile Address Request (MAR) and Mobile Address Update (MAU) messages exchanged between routers. You can use this log to monitor the state of mobile addresses attached to each router.</p>
+</dd>
+<dt class="hdlist1"><code>MESSAGE</code></dt>
+<dd>
+<p>This module provides information about AMQP messages sent and received by the router, including information about the address, body, and link. You can use this log to find high-level information about messages on a particular router.</p>
+</dd>
+<dt class="hdlist1"><code>SERVER</code></dt>
+<dd>
+<p>This module provides information about how the router is listening for and connecting to other containers in the network (such as clients, routers, and brokers). This information includes the state of AMQP messages sent and received by the broker (open, begin, attach, transfer, flow, and so on), and the related content of those messages.</p>
+</dd>
+<dt class="hdlist1"><code>AGENT</code></dt>
+<dd>
+<p>This module provides information about configuration changes made to the router from either editing the router&#8217;s configuration file or using <code>qdmanage</code>.</p>
+</dd>
+<dt class="hdlist1"><code>CONTAINER</code></dt>
+<dd>
+<p>This module provides information about the nodes related to the router. This includes only the AMQP relay node.</p>
+</dd>
+<dt class="hdlist1"><code>ERROR</code></dt>
+<dd>
+<p>This module provides detailed information about error conditions encountered during execution.</p>
+</dd>
+<dt class="hdlist1"><code>POLICY</code></dt>
+<dd>
+<p>This module provides information about policies that have been configured for the router.</p>
+</dd>
+</dl>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p>For examples of these logging modules, see <a href="#troubleshooting-using-logs-qdr">Troubleshooting using logs</a>.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="configuring-default-logging-qdr">10.2. Configuring default logging</h3>
+<div class="paragraph">
+<p>You can specify the types of events that should be logged, the format of the log entries, and where those entries should be sent.</p>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>In the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file, add a <code>log</code> section to set the default logging properties:</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example configures all logging modules to log events starting at the <code>info</code> level:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">log {
+    module: DEFAULT
+    enable: info+
+    includeTimestamp: yes
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>module</code></dt>
+<dd>
+<p>Specify <code>DEFAULT</code>.</p>
+</dd>
+<dt class="hdlist1"><code>enable</code></dt>
+<dd>
+<p>The logging level. You can specify any of the following levels (from lowest to highest):</p>
+<div class="ulist">
+<ul>
+<li>
+<p><code>trace</code> - provides the most information, but significantly affects system performance</p>
+</li>
+<li>
+<p><code>debug</code> - useful for debugging, but affects system performance</p>
+</li>
+<li>
+<p><code>info</code> - provides general information without affecting system performance</p>
+</li>
+<li>
+<p><code>notice</code> - provides general information, but is less verbose than <code>info</code></p>
+</li>
+<li>
+<p><code>warning</code> - provides information about issues you should be aware of, but which are not errors</p>
+</li>
+<li>
+<p><code>error</code> - error conditions that you should address</p>
+</li>
+<li>
+<p><code>critical</code> - critical system issues that you must address immediately</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>To specify multiple levels, use a comma-separated list. You can also use <code>+</code> to specify a level and all levels above it. For example, <code>trace,debug,warning+</code> enables trace, debug, warning, error, and critical levels. For default logging, you should typically use the <code>info+</code> or <code>notice+</code> level. These levels will provide general information, warnings, and errors for all modules without affecting the performance of Dispatch Router.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>includeTimestamp</code></dt>
+<dd>
+<p>Set this to <code>yes</code> to include the timestamp in all logs.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>For information about additional log attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.17.0/man/qdrouterd.conf.html#_log">log</a> in the <code>qdrouterd.conf</code> man page.</p>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>If you want to configure non-default logging for any of the logging modules, add an additional <code>log</code> section for each module that should not follow the default.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example configures the <code>ROUTER</code> logging module to log <code>debug</code> events:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">log {
+    module: ROUTER
+    enable: debug
+    includeTimestamp: yes
+}</pre>
+</div>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p>For more information about viewing and using logs, see <a href="#troubleshooting-qdr">Troubleshooting Dispatch Router</a>.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="configuring-routing-qdr">11. Configuring routing</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Routing is the process by which messages are delivered to their destinations. To accomplish this, Dispatch Router provides two routing mechanisms: <em>message routing</em> and <em>link routing</em>.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><a href="#configuring-message-routing-qdr">Message routing</a></dt>
+<dd>
+<p>Message routing is the default routing mechanism. You can use it to route messages on a per-message basis between clients directly (direct-routed messaging), or to and from broker queues (brokered messaging).</p>
+</dd>
+<dt class="hdlist1"><a href="#creating-link-routes-qdr">Link routing</a></dt>
+<dd>
+<p>A link route represents a private messaging path between a sender and a receiver in which the router passes the messages between end points. You can use it to connect a client to a service (such as a broker queue).</p>
+</dd>
+</dl>
+</div>
+<div class="sect2">
+<h3 id="configuring-message-routing-qdr">11.1. Configuring message routing</h3>
+<div class="paragraph">
+<p>Message routing is the default routing mechanism. You can use it to route messages on a per-message basis between clients directly (direct-routed messaging), or to and from broker queues (brokered messaging).</p>
+</div>
+<div class="paragraph">
+<p>With message routing, you can do the following:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#understanding-message-routing-qdr">Understand message routing concepts</a></p>
+</li>
+<li>
+<p><a href="#configuring-address-semantics-qdr">Configure address semantics (route messages between clients)</a></p>
+</li>
+<li>
+<p><a href="#configuring-addresses-prioritized-message-delivery-qdr">Configure addresses for prioritized message delivery</a></p>
+</li>
+<li>
+<p><a href="#configuring-brokered-messaging-qdr">Configure brokered messaging</a></p>
+</li>
+<li>
+<p><a href="#address-pattern-matching-qdr">Understand address pattern matching</a></p>
+</li>
+</ul>
+</div>
+<div class="sect3">
+<h4 id="understanding-message-routing-qdr">11.1.1. Understanding message routing</h4>
+<div class="paragraph">
+<p>With message routing, routing is performed on messages as producers send them to a router. When a message arrives on a router, the router routes the message and its <em>settlement</em> based on the message&#8217;s <em>address</em> and <em>routing pattern</em>.</p>
+</div>
+<div class="sect4">
+<h5 id="message-routing-flow-control-qdr">Message routing flow control</h5>
+<div class="paragraph">
+<p>Dispatch Router uses a <em>credit-based</em> flow control mechanism to ensure that producers can only send messages to a router if at least one consumer is available to receive them. Because Dispatch Router does not store messages, this credit-based flow control prevents producers from sending messages when there are no consumers present.</p>
+</div>
+<div class="paragraph">
+<p>A client wishing to send a message to the router must wait until the router has provided it with credit. Attempting to publish a message without credit available will cause the client to block. Once credit is made available, the client will unblock, and the message will be sent to the router.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+Most AMQP client libraries enable you to determine the amount of credit available to a producer. For more information, consult your client&#8217;s documentation.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect4">
+<h5 id="addresses-message-routing-qdr">Addresses</h5>
+<div class="paragraph">
+<p>Addresses determine how messages flow through your router network. An address designates an endpoint in your messaging network, such as:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Endpoint processes that consume data or offer a service</p>
+</li>
+<li>
+<p>Topics that match multiple consumers to multiple producers</p>
+</li>
+<li>
+<p>Entities within a messaging broker:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Queues</p>
+</li>
+<li>
+<p>Durable Topics</p>
+</li>
+<li>
+<p>Exchanges</p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>When a router receives a message, it uses the message&#8217;s address to determine where to send the message (either its destination or one step closer to its destination).</p>
+</div>
+<div class="paragraph">
+<p>Dispatch Router considers addresses to be <em>mobile</em> in that any user of an address may be directly connected to any router in the router network and may even
+move around the topology. In cases where messages are broadcast to or
+balanced across multiple consumers, the users of the address may be connected to multiple routers in the network.</p>
+</div>
+<div class="paragraph">
+<p>Mobile addresses may be discovered during normal router operation or
+configured through management settings.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="routing-patterns-message-routing-qdr">Routing patterns</h5>
+<div class="paragraph">
+<p>Routing patterns define the paths that a message with a mobile address
+can take across a network. These routing patterns can be used for both
+direct routing, in which the router distributes messages between
+clients without a broker, and indirect routing, in which the router
+enables clients to exchange messages through a broker.</p>
+</div>
+<div class="paragraph">
+<p>Routing patterns fall into two categories: Anycast
+(Balanced and Closest) and Multicast. There is no concept of
+"unicast" in which there is only one consumer for an address.</p>
+</div>
+<div class="paragraph">
+<p>Anycast distribution delivers each message to one consumer whereas
+multicast distribution delivers each message to all consumers.</p>
+</div>
+<div class="paragraph">
+<p>Each address has one of the following routing patterns, which define the path that a message with the address can take across the messaging network:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Balanced</dt>
+<dd>
+<p>An anycast method that allows multiple consumers to use the same address. Each message is delivered to a single consumer only, and Dispatch Router attempts to balance the traffic load across the router network.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>If multiple consumers are attached to the same address, each router determines which outbound path should receive a message by considering each path&#8217;s current number of unsettled deliveries. This means that more messages will be delivered along paths where deliveries are settled at higher rates.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Dispatch Router neither measures nor uses message settlement time to determine which outbound path to use.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>In this scenario, the messages are spread across both receivers regardless of path length:</p>
+</div>
+<div class="imageblock text-center">
+<div class="content">
+<img src="images/balanced-routing.png" alt="Balanced Message Routing">
+</div>
+<div class="title">Figure 1. Balanced Message Routing</div>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">Closest</dt>
+<dd>
+<p>An anycast method in which every message is sent along the shortest path to reach the destination, even if there are other consumers for the same address.</p>
+<div class="paragraph">
+<p>Dispatch Router determines the shortest path based on the topology cost to reach each of the consumers. If there are multiple consumers with the same lowest cost, messages will be spread evenly among those consumers.</p>
+</div>
+<div class="paragraph">
+<p>In this scenario, all messages sent by <code>Sender</code> will be delivered to <code>Receiver 1</code>:</p>
+</div>
+<div class="imageblock text-center">
+<div class="content">
+<img src="images/closest-routing.png" alt="Closest Message Routing">
+</div>
+<div class="title">Figure 2. Closest Message Routing</div>
+</div>
+</dd>
+<dt class="hdlist1">Multicast</dt>
+<dd>
+<p>Messages are sent to all consumers attached to the address. Each consumer will receive one copy of the message.</p>
+<div class="paragraph">
+<p>In this scenario, all messages are sent to all receivers:</p>
+</div>
+<div class="imageblock text-center">
+<div class="content">
+<img src="images/multicast-routing.png" alt="Multicast Message Routing">
+</div>
+<div class="title">Figure 3. Multicast Message Routing</div>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect4">
+<h5 id="message-settlement-reliability-message-routing-qdr">Message settlement and reliability</h5>
+<div class="paragraph">
+<p>Dispatch Router can deliver messages with the following degrees of reliability:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>At most once</p>
+</li>
+<li>
+<p>At least once</p>
+</li>
+<li>
+<p>Exactly once</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The level of reliability is negotiated between the producer and the router when the producer establishes a link to the router. To achieve the negotiated level of reliability, Dispatch Router treats all messages as either <em>pre-settled</em> or <em>unsettled</em>.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Pre-settled</dt>
+<dd>
+<p>Sometimes called <em>fire and forget</em>, the router settles the incoming and outgoing deliveries and propagates the settlement to the message&#8217;s destination. However, it does not guarantee delivery.</p>
+</dd>
+<dt class="hdlist1">Unsettled</dt>
+<dd>
+<p>Dispatch Router propagates the settlement between the producer and consumer. For an anycast address, the router associates the incoming delivery with the resulting outgoing delivery. Based on this association, the router propagates changes in delivery state from the consumer to the producer.</p>
+<div class="paragraph">
+<p>For a multicast address, the router associates the incoming delivery with all outbound deliveries. The router waits for each consumer to set their delivery&#8217;s final state. After all outgoing deliveries have reached their final state, the router sets a final delivery state for the original inbound delivery and passes it to the producer.</p>
+</div>
+<div class="paragraph">
+<p>The following table describes the reliability guarantees for unsettled messages sent to an anycast or multicast address:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 40%;">
+<col style="width: 40%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Final disposition</th>
+<th class="tableblock halign-left valign-top">Anycast</th>
+<th class="tableblock halign-left valign-top">Multicast</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>accepted</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The consumer accepted the message.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">At least one consumer accepted the message, but no consumers rejected it.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>released</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The message did not reach its destination.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The message did not reach any of the consumers.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>modified</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The message may or may not have reached its destination. The delivery is considered to be "in-doubt" and should be re-sent if "at least once" delivery is required.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The message may or may not have reached any of the consumers. However, no consumers rejected or accepted it.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>rejected</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The consumer rejected the message.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">At least one consumer rejected the message.</p></td>
+</tr>
+</tbody>
+</table>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="configuring-address-semantics-qdr">11.1.2. Configuring address semantics</h4>
+<div class="paragraph">
+<p>You can route messages between clients without using a broker. In a brokerless scenario (sometimes called <em>direct-routed messaging</em>), Dispatch Router routes messages between clients directly.</p>
+</div>
+<div class="paragraph">
+<p>To route messages between clients, you configure an address with a routing distribution pattern. When a router receives a message with this address, the message is routed to its destination or destinations based on the address&#8217;s routing distribution pattern.</p>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>In the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file, add an <code>address</code> section.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">address {
+    prefix: my_address
+    distribution: multicast
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>prefix</code> | <code>pattern</code></dt>
+<dd>
+<p>The address or group of addresses to which the address settings should be applied. You can specify a prefix to match an exact address or beginning segment of an address. Alternatively, you can specify a pattern to match an address using wildcards.</p>
+<div class="paragraph">
+<p>A <em>prefix</em> matches either an exact address or the beginning segment within an address that is delimited by either a <code>.</code> or <code>/</code> character. For example, the prefix <code>my_address</code> would match the address <code>my_address</code> as well as <code>my_address.1</code> and <code>my_address/1</code>. However, it would not match <code>my_address1</code>.</p>
+</div>
+<div class="paragraph">
+<p>A <em>pattern</em> matches an address that corresponds to a pattern. A pattern is a sequence of words delimited by either a <code>.</code> or <code>/</code> character. You can use wildcard characters to represent a word. The  <code>*</code> character matches exactly one word, and the <code>#</code> character matches any sequence of zero or more words.</p>
+</div>
+<div class="paragraph">
+<p>The <code>*</code> and <code>#</code> characters are reserved as wildcards. Therefore, you should not use them in the message address.</p>
+</div>
+<div class="paragraph">
+<p>For more information about creating address patterns, see <a href="#address-pattern-matching-qdr">Address pattern matching</a>.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>You can convert a <code>prefix</code> value to a <code>pattern</code> by appending <code>/#</code> to it. For example, the prefix <code>a/b/c</code> is equivalent to the pattern <code>a/b/c/#</code>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</dd>
+<dt class="hdlist1"><code>distribution</code></dt>
+<dd>
+<p>The message distribution pattern. The default is <code>balanced</code>, but you can specify any of the following options:</p>
+<div class="ulist">
+<ul>
+<li>
+<p><code>balanced</code> - Messages sent to the address will be routed to one of the receivers, and the routing network will attempt to balance the traffic load based on the rate of settlement.</p>
+</li>
+<li>
+<p><code>closest</code> - Messages sent to the address are sent on the shortest path to reach the destination. It means that if there are multiple receivers for the same address, only the closest one will receive the message.</p>
+</li>
+<li>
+<p><code>multicast</code> - Messages are sent to all receivers that are attached to the address in a <em>publish/subscribe</em> model.</p>
+<div class="paragraph">
+<p>For more information about message distribution patterns, see <a href="#routing-patterns-message-routing-qdr">Routing patterns</a>.</p>
+</div>
+</li>
+</ul>
+</div>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>For information about additional attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.17.0/man/qdrouterd.conf.html#_address">address</a> in the <code>qdrouterd.conf</code> man page.</p>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Add the same <code>address</code> section to any other routers that need to use the address.</p>
+<div class="paragraph">
+<p>The <code>address</code> that you added to this router configuration file only controls how this router distributes messages sent to the address. If you have additional routers in your router network that should distribute messages for this address, then you must add the same <code>address</code> section to each of their configuration files.</p>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect3">
+<h4 id="configuring-addresses-prioritized-message-delivery-qdr">11.1.3. Configuring addresses for prioritized message delivery</h4>
+<div class="paragraph">
+<p>You can set the priority level of an address to control how Dispatch Router processes messages sent to that address. Within the scope of a connection, Dispatch Router attempts to process messages based on their priority. For a connection with a large volume of messages in flight, this lowers the latency for higher-priority messages.</p>
+</div>
+<div class="paragraph">
+<p>Assigning a high priority level to an address does not guarantee that messages sent to the address will be delivered before messages sent to lower-priority addresses. However, higher-priority messages will travel more quickly through the router network than they otherwise would.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>You can also control the priority level of individual messages by setting the priority level in the message header. However, the address priority takes precedence: if you send a prioritized message to an address with a different priority level, the router will use the address priority level.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="ulist">
+<div class="title">Procedure</div>
+<ul>
+<li>
+<p>In the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file, add or edit an address and assign a priority level.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>This example adds an address with the highest priority level. The router will attempt to deliver messages sent to this address before messages with lower priority levels.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">address {
+    prefix: my-high-priority-address
+    priority: 9
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>priority</code></dt>
+<dd>
+<p>The priority level to assign to all messages sent to this address. The range of valid priority levels is 0-9, in which the higher the number, the higher the priority. The default is 4.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+</ul>
+</div>
+<div class="ulist">
+<div class="title">Additional resources</div>
+<ul>
+<li>
+<p>For more information about setting the priority level in a message, see the <a href="http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-overview-v1.0-os.html" target="_blank" rel="noopener">AMQP 1.0 specification</a>.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="configuring-brokered-messaging-qdr">11.1.4. Configuring brokered messaging</h4>
+<div class="paragraph">
+<p>If you require "store and forward" capabilities, you can configure Dispatch Router to use brokered messaging. In this scenario, clients connect to a router to send and receive messages, and the router routes the messages to or from queues on a message broker.</p>
+</div>
+<div class="paragraph">
+<p>You can configure the following:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#routing-messages-through-broker-queues-qdr">Route messages through broker queues</a></p>
+<div class="paragraph">
+<p>You can route messages to a queue hosted on a single broker, or route messages to a <em>sharded queue</em> distributed across multiple brokers.</p>
+</div>
+</li>
+<li>
+<p><a href="#handling-undeliverable-messages-qdr">Store and retrieve undeliverable messages on a broker queue</a></p>
+</li>
+</ul>
+</div>
+<div class="sect4">
+<h5 id="how-router-enables-brokered-messaging-qdr">How Dispatch Router enables brokered messaging</h5>
+<div class="paragraph">
+<p>Brokered messaging enables Dispatch Router to store messages on a broker queue. This requires a connection to the broker, a <em>waypoint</em> address to represent the broker queue, and <em>autolinks</em> to attach to the waypoint address.</p>
+</div>
+<div class="paragraph">
+<p>An autolink is a link that is automatically created by the router to attach to a waypoint address. With autolinks, client traffic is handled on the router, not the broker. Clients attach their links to the router, and then the router uses internal autolinks to connect to the queue on the broker. Therefore, the queue will always have a single producer and a single consumer regardless of how many clients are attached to the router.</p>
+</div>
+<div class="paragraph">
+<p>Using autolinks is a form of <em>message routing</em>, as distinct from <em>link routing</em>.
+It is recommended to use link routing if you want to use semantics associated with a consumer, for example, the <code>undeliverable-here=true</code> modified delivery state.</p>
+</div>
+<div class="imageblock text-center">
+<div class="content">
+<img src="images/brokered-messaging.png" alt="Brokered Messaging">
+</div>
+<div class="title">Figure 4. Brokered messaging</div>
+</div>
+<div class="paragraph">
+<p>In this diagram, the sender connects to the router and sends messages to my_queue. The router attaches an outgoing link to the broker, and then sends the messages to my_queue. Later, the receiver connects to the router and requests messages from my_queue. The router attaches an incoming link to the broker to receive the messages from my_queue, and then delivers them to the receiver.</p>
+</div>
+<div class="paragraph">
+<p>You can also route messages to a <em>sharded queue</em>, which is a single, logical queue comprised of multiple, underlying physical queues. Using queue sharding, it is possible to distribute a single queue over multiple brokers. Clients can connect to any of the brokers that hold a shard to send and receive messages.</p>
+</div>
+<div class="imageblock text-center">
+<div class="content">
+<img src="images/sharded-queue-02.png" alt="Brokered Messaging with Sharded Queue">
+</div>
+<div class="title">Figure 5. Brokered messaging with sharded queue</div>
+</div>
+<div class="paragraph">
+<p>In this diagram, a sharded queue (my_queue) is distributed across two brokers. The router is connected to the clients and to both brokers. The sender connects to the router and sends messages to my_queue. The router attaches an outgoing link to each broker, and then sends messages to each shard (by default, the routing distribution is <code>balanced</code>). Later, the receiver connects to the router and requests all of the messages from my_queue. The router attaches an incoming link  [...]
+</div>
+</div>
+<div class="sect4">
+<h5 id="routing-messages-through-broker-queues-qdr">Routing messages through broker queues</h5>
+<div class="paragraph">
+<p>You can route messages to and from a broker queue to provide clients with access to the queue through a router. In this scenario, clients connect to a router to send and receive messages, and the router routes the messages to or from the broker queue.</p>
+</div>
+<div class="paragraph">
+<p>You can route messages to a queue hosted on a single broker, or route messages to a <em>sharded queue</em> distributed across multiple brokers.</p>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>In the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file, add a waypoint address for the broker queue.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>A waypoint address identifies a queue on a broker to which you want to route messages. This example adds a waypoint address for the <code>my_queue</code> queue:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">address {
+    prefix: my_queue
+    waypoint: yes
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>prefix</code> | <code>pattern</code></dt>
+<dd>
+<p>The address prefix or pattern that matches the broker queue to which you want to send messages. You can specify a prefix to match an exact address or beginning segment of an address. Alternatively, you can specify a pattern to match an address using wildcards.</p>
+<div class="paragraph">
+<p>A <em>prefix</em> matches either an exact address or the beginning segment within an address that is delimited by either a <code>.</code> or <code>/</code> character. For example, the prefix <code>my_address</code> would match the address <code>my_address</code> as well as <code>my_address.1</code> and <code>my_address/1</code>. However, it would not match <code>my_address1</code>.</p>
+</div>
+<div class="paragraph">
+<p>A <em>pattern</em> matches an address that corresponds to a pattern. A pattern is a sequence of words delimited by either a <code>.</code> or <code>/</code> character. You can use wildcard characters to represent a word. The  <code>*</code> character matches exactly one word, and the <code>#</code> character matches any sequence of zero or more words.</p>
+</div>
+<div class="paragraph">
+<p>The <code>*</code> and <code>#</code> characters are reserved as wildcards. Therefore, you should not use them in the message address.</p>
+</div>
+<div class="paragraph">
+<p>For more information about creating address patterns, see <a href="#address-pattern-matching-qdr">Address pattern matching</a>.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>You can convert a <code>prefix</code> value to a <code>pattern</code> by appending <code>/#</code> to it. For example, the prefix <code>a/b/c</code> is equivalent to the pattern <code>a/b/c/#</code>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</dd>
+<dt class="hdlist1"><code>waypoint</code></dt>
+<dd>
+<p>Set this attribute to <code>yes</code> so that the router handles messages sent to this address as a waypoint.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Connect the router to the broker.</p>
+<div class="olist loweralpha">
+<ol class="loweralpha" type="a">
+<li>
+<p>Add an outgoing connection to the broker if one does not exist.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>If the queue is sharded across multiple brokers, you must add a connection for each broker. For more information, see <a href="#connecting-to-external-amqp-containers-qdr">Connecting to external AMQP containers</a>.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>If the connection to the broker fails, Dispatch Router automatically attempts to reestablish the connection and reroute message deliveries to any available alternate destinations. However, some deliveries could be returned to the sender with a <code>RELEASED</code> or <code>MODIFIED</code> disposition. Therefore, you should ensure that your clients can handle these deliveries appropriately (generally by resending them).</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>If you want to send messages to the broker queue, add an <em>outgoing</em> autolink to the broker queue.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>If the queue is sharded across multiple brokers, you must add an outgoing autolink for each broker.</p>
+</div>
+<div class="paragraph">
+<p>This example configures an outgoing auto link to send messages to a broker queue:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">autoLink {
+    address: my_queue
+    connection: my_broker
+    direction: out
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>address</code></dt>
+<dd>
+<p>The address of the broker queue. When the autolink is created, it will be attached to this address.</p>
+</dd>
+<dt class="hdlist1"><code>externalAddress</code></dt>
+<dd>
+<p>An optional alternate address for the broker queue. You use an external address if the broker queue should have a different address than that which the sender uses. In this scenario, senders send messages to the <code>address</code> address, and then the router routes them to the broker queue represented by the <code>externalAddress</code> address.</p>
+</dd>
+<dt class="hdlist1"><code>connection</code> | <code>containerID</code></dt>
+<dd>
+<p>How the router should connect to the broker. You can specify either an outgoing connection (<code>connection</code>) or the container ID of the broker (<code>containerID</code>).</p>
+</dd>
+<dt class="hdlist1"><code>direction</code></dt>
+<dd>
+<p>Set this attribute to <code>out</code> to specify that this autolink can send messages from the router to the broker.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>For information about additional attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.17.0/man/qdrouterd.conf.html#_autolink">autoLink</a> in the <code>qdrouterd.conf</code> man page.</p>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</li>
+<li>
+<p>If you want to receive messages from the broker queue, add an <em>incoming</em> autolink from the broker queue:</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>If the queue is sharded across multiple brokers, you must add an outgoing autolink for each broker.</p>
+</div>
+<div class="paragraph">
+<p>This example configures an incoming auto link to receive messages from a broker queue:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">autoLink {
+    address: my_queue
+    connection: my_broker
+    direction: in
+    ...
+}</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>address</code></dt>
+<dd>
+<p>The address of the broker queue. When the autolink is created, it will be attached to this address.</p>
+</dd>
+<dt class="hdlist1"><code>externalAddress</code></dt>
+<dd>
+<p>An optional alternate address for the broker queue. You use an external address if the broker queue should have a different address than that which the receiver uses. In this scenario, receivers receive messages from the <code>address</code> address, and the router retrieves them from the broker queue represented by the <code>externalAddress</code> address.</p>
+</dd>
+<dt class="hdlist1"><code>connection</code> | <code>containerID</code></dt>
+<dd>
+<p>How the router should connect to the broker. You can specify either an outgoing connection (<code>connection</code>) or the container ID of the broker (<code>containerID</code>).</p>
+</dd>
+<dt class="hdlist1"><code>direction</code></dt>
+<dd>
+<p>Set this attribute to <code>in</code> to specify that this autolink can receive messages from the broker to the router.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>For information about additional attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.17.0/man/qdrouterd.conf.html#_autolink">autoLink</a> in the <code>qdrouterd.conf</code> man page.</p>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect4">
+<h5 id="handling-undeliverable-messages-qdr">Handling undeliverable messages</h5>
+<div class="paragraph">
+<p>You handle undeliverable messages for an address by configuring autolinks that point to <em>fallback destinations</em>. A fallback destination (such as a queue on a broker) stores messages that are not directly routable to any consumers.</p>
+</div>
+<div class="paragraph">
+<p>During normal message delivery, Dispatch Router delivers messages to the consumers that are attached to the router network. However, if no consumers are reachable, the messages are diverted to any fallback destinations that were configured for the address (if the autolinks that point to the fallback destinations are active). When a consumer reconnects and becomes reachable again, it receives the messages stored at the fallback destination.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Dispatch Router preserves the original delivery order for messages stored at a fallback destination. However, when a consumer reconnects, any new messages produced while the queue is draining will be interleaved with the messages stored at the fallback destination.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>The router is connected to a broker.</p>
+<div class="paragraph">
+<p>For more information, see <a href="#connecting-to-external-amqp-containers-qdr">Connecting to external AMQP containers</a>.</p>
+</div>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<div class="title">Procedure</div>
+<p>This procedure enables fallback for an address and configures autolinks to connect to the broker queue that provides the fallback destination for the address.</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>In the <code>/etc/qpid-dispatch/qdrouterd.conf</code> configuration file, enable fallback destinations for the address.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">address {
+    prefix: my_address
+    enableFallback: yes
+}</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Add an <em>outgoing</em> autolink to a queue on the broker.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>For the address for which you enabled fallback, if messages are not routable to any consumers, the router will use this autolink to send the messages to a queue on the broker.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">autoLink {
... 12201 lines suppressed ...

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org