diff --git a/core/api/src/main/java/org/onosproject/net/DefaultEdgeLink.java b/core/api/src/main/java/org/onosproject/net/DefaultEdgeLink.java
index 3e1121e..7fe1ee3 100644
--- a/core/api/src/main/java/org/onosproject/net/DefaultEdgeLink.java
+++ b/core/api/src/main/java/org/onosproject/net/DefaultEdgeLink.java
@@ -15,8 +15,11 @@
  */
 package org.onosproject.net;
 
+import com.google.common.collect.ImmutableSet;
 import org.onosproject.net.provider.ProviderId;
 
+import java.util.Set;
+
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
@@ -95,4 +98,25 @@
                                    host.location(), isIngress, host.annotations());
     }
 
+    /**
+     * Creates edge links, to the specified end-station.
+     *
+     * The edge link inherits the target host annotations.
+     *
+     * @param host      host
+     * @param isIngress true to indicate host-to-network direction; false
+     *                  for network-to-host direction
+     * @return new phantom edge link
+     */
+    public static Set<DefaultEdgeLink> createEdgeLinks(Host host, boolean isIngress) {
+        checkNotNull(host, "Host cannot be null");
+        ImmutableSet.Builder<DefaultEdgeLink> edgeLinksBuilder = ImmutableSet.builder();
+        host.locations().forEach(
+                location -> edgeLinksBuilder.add(new DefaultEdgeLink(ProviderId.NONE,
+                                                 new ConnectPoint(host.id(), PortNumber.P0),
+                                                 location, isIngress, host.annotations()))
+        );
+        return edgeLinksBuilder.build();
+    }
+
 }
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TrafficMonitor.java b/web/gui/src/main/java/org/onosproject/ui/impl/TrafficMonitor.java
index 1e2ae83..f45eb8d 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TrafficMonitor.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TrafficMonitor.java
@@ -66,6 +66,7 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import static org.onosproject.net.DefaultEdgeLink.createEdgeLinks;
 import static org.onosproject.net.DefaultEdgeLink.createEdgeLink;
 import static org.onosproject.ui.impl.TrafficMonitorBase.Mode.RELATED_INTENTS;
 import static org.onosproject.ui.impl.TrafficMonitorBase.Mode.SELECTED_INTENT;
@@ -363,7 +364,7 @@
         Set<Host> hosts = services.host().getConnectedHosts(deviceId);
         if (hosts != null) {
             for (Host host : hosts) {
-                links.add(createEdgeLink(host, false));
+                links.addAll(createEdgeLinks(host, false));
             }
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TrafficMonitorBase.java b/web/gui/src/main/java/org/onosproject/ui/impl/TrafficMonitorBase.java
index 5de26cc..4296d3b 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TrafficMonitorBase.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TrafficMonitorBase.java
@@ -18,6 +18,7 @@
 package org.onosproject.ui.impl;
 
 import org.onosproject.incubator.net.PortStatisticsService.MetricType;
+import org.onosproject.net.DefaultEdgeLink;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Link;
 import org.onosproject.net.statistic.Load;
@@ -37,7 +38,7 @@
 
 import static org.onosproject.incubator.net.PortStatisticsService.MetricType.BYTES;
 import static org.onosproject.incubator.net.PortStatisticsService.MetricType.PACKETS;
-import static org.onosproject.net.DefaultEdgeLink.createEdgeLink;
+import static org.onosproject.net.DefaultEdgeLink.createEdgeLinks;
 import static org.onosproject.ui.impl.TrafficMonitorBase.Mode.IDLE;
 
 /**
@@ -306,8 +307,12 @@
      */
     protected void addEdgeLinks(TrafficLinkMap linkMap) {
         services.host().getHosts().forEach(host -> {
-            linkMap.add(createEdgeLink(host, true));
-            linkMap.add(createEdgeLink(host, false));
+            // Ingress edge links
+            Set<DefaultEdgeLink> edgeLinks = createEdgeLinks(host, true);
+            edgeLinks.forEach(linkMap::add);
+            // Egress edge links
+            edgeLinks = createEdgeLinks(host, false);
+            edgeLinks.forEach(linkMap::add);
         });
     }
 
