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
new file mode 100644
index 0000000..59e017b
--- /dev/null
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed 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.
+ */
+
+package org.onosproject.ui.impl;
+
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.ImmutableSet;
+import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.Link;
+import org.onosproject.net.link.LinkService;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Message handler for link view related messages.
+ */
+public class LinkViewMessageHandler extends AbstractTabularViewMessageHandler {
+
+    /**
+     * Creates a new message handler for the link messages.
+     */
+    protected LinkViewMessageHandler() {
+        super(ImmutableSet.of("linkDataRequest"));
+    }
+
+    @Override
+    public void process(ObjectNode message) {
+        ObjectNode payload = payload(message);
+        String sortCol = string(payload, "sortCol", "src");
+        String sortDir = string(payload, "sortDir", "asc");
+
+        LinkService service = get(LinkService.class);
+        TableRow[] rows = generateTableRows(service);
+        RowComparator rc =
+                new RowComparator(sortCol, RowComparator.direction(sortDir));
+        Arrays.sort(rows, rc);
+        ArrayNode links = generateArrayNode(rows);
+        ObjectNode rootNode = mapper.createObjectNode();
+        rootNode.set("links", links);
+
+        connection().sendMessage("linkDataResponse", 0, rootNode);
+    }
+
+    private TableRow[] generateTableRows(LinkService service) {
+        List<TableRow> list = new ArrayList<>();
+        for (Link link : service.getLinks()) {
+            list.add(new LinkTableRow(link));
+        }
+        return list.toArray(new TableRow[list.size()]);
+    }
+
+    /**
+     * TableRow implementation for {@link Link links}.
+     */
+    private static class LinkTableRow extends AbstractTableRow {
+
+        private static final String SOURCE = "src";
+        private static final String DEST = "dst";
+        private static final String TYPE = "type";
+        private static final String STATE = "state";
+        private static final String DURABLE = "durable";
+
+        private static final String[] COL_IDS = {
+                SOURCE, DEST, TYPE, STATE, DURABLE
+        };
+
+        public LinkTableRow(Link l) {
+            ConnectPoint src = l.src();
+            ConnectPoint dst = l.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()));
+        }
+
+        @Override
+        protected String[] columnIds() {
+            return COL_IDS;
+        }
+    }
+
+}
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 080f5e3..229ace2 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
@@ -62,6 +62,7 @@
                                     new UiView("app", "Applications"),
                                     new UiView("intent", "Intents"),
                                     new UiView("cluster", "Cluster Nodes"),
+                                    new UiView("link", "Links"),
                                     new UiView("sample", "Sample"));
         UiMessageHandlerFactory messageHandlerFactory =
                 () -> ImmutableList.of(
@@ -70,7 +71,8 @@
                         new HostViewMessageHandler(),
                         new ApplicationViewMessageHandler(),
                         new IntentViewMessageHandler(),
-                        new ClusterViewMessageHandler()
+                        new ClusterViewMessageHandler(),
+                        new LinkViewMessageHandler()
                 );
         return new UiExtension(coreViews, messageHandlerFactory, "core",
                                UiExtensionManager.class.getClassLoader());
diff --git a/web/gui/src/main/resources/core/css.html b/web/gui/src/main/resources/core/css.html
index ff2e904..ac6a979 100644
--- a/web/gui/src/main/resources/core/css.html
+++ b/web/gui/src/main/resources/core/css.html
@@ -5,3 +5,4 @@
 <link rel="stylesheet" href="app/view/app/app.css">
 <link rel="stylesheet" href="app/view/intent/intent.css">
 <link rel="stylesheet" href="app/view/cluster/cluster.css">
+<link rel="stylesheet" href="app/view/link/link.css">
diff --git a/web/gui/src/main/resources/core/js.html b/web/gui/src/main/resources/core/js.html
index ac9247b..87b7ee2 100644
--- a/web/gui/src/main/resources/core/js.html
+++ b/web/gui/src/main/resources/core/js.html
@@ -17,4 +17,5 @@
 <script src="app/view/app/app.js"></script>
 <script src="app/view/intent/intent.js"></script>
 <script src="app/view/cluster/cluster.js"></script>
+<script src="app/view/link/link.js"></script>
 <script src="app/view/sample/sample.js"></script>
diff --git a/web/gui/src/main/webapp/app/view/link/link.css b/web/gui/src/main/webapp/app/view/link/link.css
new file mode 100644
index 0000000..8bfd5bf
--- /dev/null
+++ b/web/gui/src/main/webapp/app/view/link/link.css
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed 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.
+ */
+
+/*
+ ONOS GUI -- Link View -- CSS file
+ */
+
+#ov-link td {
+}
\ No newline at end of file
diff --git a/web/gui/src/main/webapp/app/view/link/link.html b/web/gui/src/main/webapp/app/view/link/link.html
new file mode 100644
index 0000000..7a8edda
--- /dev/null
+++ b/web/gui/src/main/webapp/app/view/link/link.html
@@ -0,0 +1,52 @@
+<!--
+  ~ Copyright 2015 Open Networking Laboratory
+  ~
+  ~ Licensed 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.
+  -->
+
+<!-- Link partial HTML -->
+<div id="ov-link">
+    <h2>Links ({{ctrl.tableData.length}} total)</h2>
+    <table class="summary-list"
+           onos-fixed-header
+           onos-sortable-header
+           sort-callback="sortCallback(requestParams)">
+        <thead>
+            <tr>
+                <th colId="src" sortable>Source </th>
+                <th colId="dst" sortable>Destination </th>
+                <th colId="type" sortable>Type </th>
+                <th colId="state" sortable>State </th>
+                <th colId="durable" sortable>Durable </th>
+            </tr>
+        </thead>
+
+        <tbody>
+            <tr ng-hide="ctrl.tableData.length">
+                <td class="nodata" colspan="5">
+                    No Links found
+                </td>
+            </tr>
+
+            <tr ng-repeat="link in ctrl.tableData"
+                ng-repeat-done>
+                <td>{{link.src}}</td>
+                <td>{{link.dst}}</td>
+                <td>{{link.type}}</td>
+                <td>{{link.state}}</td>
+                <td>{{link.durable}}</td>
+            </tr>
+        </tbody>
+    </table>
+
+</div>
diff --git a/web/gui/src/main/webapp/app/view/link/link.js b/web/gui/src/main/webapp/app/view/link/link.js
new file mode 100644
index 0000000..b4ba632
--- /dev/null
+++ b/web/gui/src/main/webapp/app/view/link/link.js
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed 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.
+ */
+
+/*
+ ONOS GUI -- Host View Module
+ */
+
+(function () {
+    'use strict';
+
+    angular.module('ovLink', [])
+    .controller('OvLinkCtrl',
+        ['$log', '$scope', 'TableBuilderService',
+
+        function ($log, $scope, tbs) {
+            tbs.buildTable({
+                self: this,
+                scope: $scope,
+                tag: 'link'
+            });
+            
+            $log.log('OvLinkCtrl has been created');
+        }]);
+}());
diff --git a/web/gui/src/main/webapp/index.html b/web/gui/src/main/webapp/index.html
index e408846..ad84138 100644
--- a/web/gui/src/main/webapp/index.html
+++ b/web/gui/src/main/webapp/index.html
@@ -115,6 +115,7 @@
     <script src="app/view/app/app.js"></script>
     <script src="app/view/intent/intent.js"></script>
     <script src="app/view/cluster/cluster.js"></script>
+    <script src="app/view/link/link.js"></script>
     <script src="app/view/sample/sample.js"></script>
     <!-- {INJECTED-JAVASCRIPT-END} -->
 
@@ -127,6 +128,7 @@
     <link rel="stylesheet" href="app/view/app/app.css">
     <link rel="stylesheet" href="app/view/intent/intent.css">
     <link rel="stylesheet" href="app/view/cluster/cluster.css">
+    <link rel="stylesheet" href="app/view/link/link.css">
     <link rel="stylesheet" href="app/view/sample/sample.css">
     <!-- {INJECTED-STYLESHEETS-END} -->
 
diff --git a/web/gui/src/main/webapp/onos.js b/web/gui/src/main/webapp/onos.js
index 3777f4b..07222f2 100644
--- a/web/gui/src/main/webapp/onos.js
+++ b/web/gui/src/main/webapp/onos.js
@@ -42,6 +42,7 @@
         'app',
         'intent',
         'cluster',
+        'link',
         'sample',
         // {INJECTED-VIEW-IDS-END}
 
