diff --git a/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java b/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java
index e6e1f82..1194e18 100644
--- a/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java
+++ b/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java
@@ -23,6 +23,7 @@
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.onrc.onos.api.registry.ILocalSwitchMastershipListener;
 import net.onrc.onos.core.packet.Ethernet;
+import net.onrc.onos.core.util.OnosInstanceId;
 
 import org.openflow.protocol.OFMessage;
 import org.openflow.protocol.OFType;
@@ -116,9 +117,11 @@
     public Map<String, String> getControllerNodeIPs();
 
     /**
-     * Gets the ID of the controller
+     * Gets the unique ID used to identify this ONOS instance in the cluster.
+     *
+     * @return ONOS Instance ID.
      */
-    public String getControllerId();
+    public OnosInstanceId getOnosInstanceId();
 
     /**
      * Add a switch listener
diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index e34c958..a502711 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -68,6 +68,7 @@
 import net.onrc.onos.core.registry.IControllerRegistryService.ControlChangeCallback;
 import net.onrc.onos.core.registry.RegistryException;
 import net.onrc.onos.core.util.Dpid;
+import net.onrc.onos.core.util.OnosInstanceId;
 
 import org.jboss.netty.bootstrap.ServerBootstrap;
 import org.jboss.netty.buffer.ChannelBuffer;
@@ -180,7 +181,7 @@
     protected int workerThreads = 0;
     // The id for this controller node. Should be unique for each controller
     // node in a controller cluster.
-    protected String controllerId = "localhost";
+    private OnosInstanceId onosInstanceId = new OnosInstanceId("localhost");
 
     // The current role of the controller.
     // If the controller isn't configured to support roles, then this is null.
@@ -1648,8 +1649,8 @@
     }
 
     @Override
-    public String getControllerId() {
-        return controllerId;
+    public OnosInstanceId getOnosInstanceId() {
+        return onosInstanceId;
     }
 
     // **************
@@ -1814,18 +1815,18 @@
         log.debug("Number of worker threads set to {}", this.workerThreads);
         String controllerId = configParams.get("controllerid");
         if (controllerId != null) {
-            this.controllerId = controllerId;
+            this.onosInstanceId = new OnosInstanceId(controllerId);
         } else {
             //Try to get the hostname of the machine and use that for controller ID
             try {
                 String hostname = java.net.InetAddress.getLocalHost().getHostName();
-                this.controllerId = hostname;
+                this.onosInstanceId = new OnosInstanceId(hostname);
             } catch (UnknownHostException e) {
                 // Can't get hostname, we'll just use the default
             }
         }
 
-        log.debug("ControllerId set to {}", this.controllerId);
+        log.debug("ControllerId set to {}", this.onosInstanceId);
     }
 
     private void initVendorMessages() {
@@ -1880,7 +1881,7 @@
                     LogMessageDoc.CHECK_CONTROLLER)
     public void startupComponents() {
         try {
-            registryService.registerController(controllerId);
+            registryService.registerController(onosInstanceId.toString());
         } catch (RegistryException e) {
             log.warn("Registry service error: {}", e.getMessage());
         }
