diff --git a/apps/routing/src/main/java/org/onosproject/routing/cli/AddSpeakerCommand.java b/apps/routing/src/main/java/org/onosproject/routing/cli/AddSpeakerCommand.java
index e414239..19ecc75 100644
--- a/apps/routing/src/main/java/org/onosproject/routing/cli/AddSpeakerCommand.java
+++ b/apps/routing/src/main/java/org/onosproject/routing/cli/AddSpeakerCommand.java
@@ -19,6 +19,7 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onlab.packet.IpAddress;
+import org.onlab.packet.VlanId;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
@@ -40,12 +41,18 @@
     @Argument(index = 0, name = "name",
             description = "Name of the internal BGP speaker",
             required = true, multiValued = false)
-    String name = null;
+    private String name = null;
 
     @Argument(index = 1, name = "connectionPoint",
             description = "Interface to the BGP speaker",
             required = true, multiValued = false)
-    String connectionPoint = null;
+    private String connectionPoint = null;
+
+    @Argument(index = 2, name = "vlanId",
+            description = "VLAN Id of the internal BGP speaker",
+            required = false, multiValued = false)
+    private String vlanId = null;
+    private VlanId vlanIdObj = null;
 
     private static final String SPEAKER_ADD_SUCCESS = "Speaker Successfully Added.";
 
@@ -57,10 +64,18 @@
 
         BgpConfig config = configService.addConfig(appId, BgpConfig.class);
 
-        BgpConfig.BgpSpeakerConfig speaker = config.getSpeakerWithName(name);
-        if (speaker != null) {
-            log.debug("Speaker already exists: {}", name);
-            return;
+        if (name != null) {
+            BgpConfig.BgpSpeakerConfig speaker = config.getSpeakerWithName(name);
+            if (speaker != null) {
+                log.debug("Speaker already exists: {}", name);
+                return;
+            }
+        }
+
+        if (vlanId == null || vlanId.isEmpty()) {
+            vlanIdObj = VlanId.NONE;
+        } else {
+            vlanIdObj = VlanId.vlanId(Short.valueOf(vlanId));
         }
 
         addSpeakerToConf(config);
@@ -85,6 +100,7 @@
         ConnectPoint connectPoint = ConnectPoint.
                 deviceConnectPoint(connectionPoint);
         return new BgpConfig.BgpSpeakerConfig(Optional.ofNullable(name),
-                connectPoint, new HashSet<IpAddress>());
+            vlanIdObj,
+            connectPoint, new HashSet<IpAddress>());
     }
 }
diff --git a/apps/routing/src/main/java/org/onosproject/routing/cli/BgpSpeakersListCommand.java b/apps/routing/src/main/java/org/onosproject/routing/cli/BgpSpeakersListCommand.java
index e107e36..aea768b 100644
--- a/apps/routing/src/main/java/org/onosproject/routing/cli/BgpSpeakersListCommand.java
+++ b/apps/routing/src/main/java/org/onosproject/routing/cli/BgpSpeakersListCommand.java
@@ -37,7 +37,7 @@
         description = "Lists all BGP speakers")
 public class BgpSpeakersListCommand extends AbstractShellCommand {
 
-    private static final String FORMAT = "port=%s/%s, peers=%s";
+    private static final String FORMAT = "port=%s/%s, vlan=%s, peers=%s";
     private static final String NAME_FORMAT = "%s: " + FORMAT;
 
     private static final Comparator<BgpConfig.BgpSpeakerConfig> SPEAKERS_COMPARATOR = (s1, s2) ->
@@ -67,10 +67,10 @@
                 s -> {
                     if (s.name().isPresent()) {
                         print(NAME_FORMAT, s.name().get(), s.connectPoint().deviceId(),
-                                s.connectPoint().port(), s.peers());
+                                s.connectPoint().port(), s.vlan(), s.peers());
                     } else {
                         print(FORMAT, s.connectPoint().deviceId(),
-                                s.connectPoint().port(), s.peers());
+                                s.connectPoint().port(), s.vlan(), s.peers());
                     }
                 });
         }
