diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
index 59e017b..cdd1e62 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
@@ -19,13 +19,18 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
 import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.Link;
+import org.onosproject.net.LinkKey;
 import org.onosproject.net.link.LinkService;
+import org.onosproject.ui.impl.TopologyViewMessageHandlerBase.BiLink;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
+
+import static org.onosproject.ui.impl.TopologyViewMessageHandlerBase.addLink;
 
 /**
  * Message handler for link view related messages.
@@ -42,7 +47,7 @@
     @Override
     public void process(ObjectNode message) {
         ObjectNode payload = payload(message);
-        String sortCol = string(payload, "sortCol", "src");
+        String sortCol = string(payload, "sortCol", "one");
         String sortDir = string(payload, "sortDir", "asc");
 
         LinkService service = get(LinkService.class);
@@ -59,36 +64,54 @@
 
     private TableRow[] generateTableRows(LinkService service) {
         List<TableRow> list = new ArrayList<>();
-        for (Link link : service.getLinks()) {
-            list.add(new LinkTableRow(link));
-        }
+
+        // First consolidate all uni-directional links into two-directional ones.
+        Map<LinkKey, BiLink> biLinks = Maps.newHashMap();
+        service.getLinks().forEach(link -> addLink(biLinks, link));
+
+        // Now scan over all bi-links and produce table rows from them.
+        biLinks.values().forEach(biLink -> list.add(new LinkTableRow(biLink)));
         return list.toArray(new TableRow[list.size()]);
     }
 
     /**
-     * TableRow implementation for {@link Link links}.
+     * TableRow implementation for {@link org.onosproject.net.Link links}.
      */
     private static class LinkTableRow extends AbstractTableRow {
 
-        private static final String SOURCE = "src";
-        private static final String DEST = "dst";
+        private static final String ONE = "one";
+        private static final String TWO = "two";
         private static final String TYPE = "type";
         private static final String STATE = "state";
+        private static final String DIRECTION = "direction";
         private static final String DURABLE = "durable";
 
         private static final String[] COL_IDS = {
-                SOURCE, DEST, TYPE, STATE, DURABLE
+                ONE, TWO, TYPE, STATE, DIRECTION, DURABLE
         };
 
-        public LinkTableRow(Link l) {
-            ConnectPoint src = l.src();
-            ConnectPoint dst = l.dst();
+        public LinkTableRow(BiLink link) {
+            ConnectPoint src = link.one.src();
+            ConnectPoint dst = link.one.dst();
 
-            add(SOURCE, src.elementId().toString() + "/" + src.port().toString());
-            add(DEST, dst.elementId().toString() + "/" + dst.port().toString());
-            add(TYPE, l.type().toString());
-            add(STATE, l.state().toString());
-            add(DURABLE, Boolean.toString(l.isDurable()));
+            add(ONE, src.elementId().toString() + "/" + src.port().toString());
+            add(TWO, dst.elementId().toString() + "/" + dst.port().toString());
+            add(TYPE, linkType(link).toLowerCase());
+            add(STATE, linkState(link).toLowerCase());
+            add(DIRECTION, link.two != null ? "A <-> B" : "A -> B");
+            add(DURABLE, Boolean.toString(link.one.isDurable()));
+        }
+
+        private String linkState(BiLink link) {
+            return link.two == null || link.one.state() == link.two.state() ?
+                    link.one.state().toString() :
+                    link.one.state().toString() + "/" + link.two.state().toString();
+        }
+
+        private String linkType(BiLink link) {
+            return link.two == null || link.one.type() == link.two.type() ?
+                    link.one.type().toString() :
+                    link.one.type().toString() + "/" + link.two.type().toString();
         }
 
         @Override
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
index 50e39d7..9bfc455 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
@@ -719,7 +719,7 @@
     }
 
 
-    private BiLink addLink(Map<LinkKey, BiLink> biLinks, Link link) {
+    static BiLink addLink(Map<LinkKey, BiLink> biLinks, Link link) {
         LinkKey key = canonicalLinkKey(link);
         BiLink biLink = biLinks.get(key);
         if (biLink != null) {
@@ -816,7 +816,7 @@
     }
 
     // Produces canonical link key, i.e. one that will match link and its inverse.
-    private LinkKey canonicalLinkKey(Link link) {
+    static LinkKey canonicalLinkKey(Link link) {
         String sn = link.src().elementId().toString();
         String dn = link.dst().elementId().toString();
         return sn.compareTo(dn) < 0 ?
@@ -824,7 +824,7 @@
     }
 
     // Representation of link and its inverse and any traffic data.
-    private class BiLink {
+    static class BiLink {
         public final LinkKey key;
         public final Link one;
         public Link two;
@@ -861,7 +861,7 @@
     }
 
     // Auxiliary key/value carrier.
-    private class Prop {
+    static class Prop {
         public final String key;
         public final String value;
 
@@ -872,14 +872,14 @@
     }
 
     // Auxiliary properties separator
-    private class Separator extends Prop {
+    static class Separator extends Prop {
         protected Separator() {
             super("-", "");
         }
     }
 
     // Auxiliary carrier of data for requesting traffic message.
-    protected class TrafficClass {
+    static class TrafficClass {
         public final boolean showTraffic;
         public final String type;
         public final Iterable<Intent> intents;
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/UiExtensionManager.java b/web/gui/src/main/java/org/onosproject/ui/impl/UiExtensionManager.java
index 229ace2..e818071 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/UiExtensionManager.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/UiExtensionManager.java
@@ -58,21 +58,21 @@
     private static UiExtension createCoreExtension() {
         List<UiView> coreViews = of(new UiView("topo", "Topology View"),
                                     new UiView("device", "Devices"),
-                                    new UiView("host", "Hosts"),
-                                    new UiView("app", "Applications"),
-                                    new UiView("intent", "Intents"),
-                                    new UiView("cluster", "Cluster Nodes"),
                                     new UiView("link", "Links"),
+                                    new UiView("host", "Hosts"),
+                                    new UiView("intent", "Intents"),
+                                    new UiView("app", "Applications"),
+                                    new UiView("cluster", "Cluster Nodes"),
                                     new UiView("sample", "Sample"));
         UiMessageHandlerFactory messageHandlerFactory =
                 () -> ImmutableList.of(
                         new TopologyViewMessageHandler(),
                         new DeviceViewMessageHandler(),
+                        new LinkViewMessageHandler(),
                         new HostViewMessageHandler(),
-                        new ApplicationViewMessageHandler(),
                         new IntentViewMessageHandler(),
-                        new ClusterViewMessageHandler(),
-                        new LinkViewMessageHandler()
+                        new ApplicationViewMessageHandler(),
+                        new ClusterViewMessageHandler()
                 );
         return new UiExtension(coreViews, messageHandlerFactory, "core",
                                UiExtensionManager.class.getClassLoader());
