diff --git a/classes/obmc-phosphor-discovery-service.bbclass b/classes/obmc-phosphor-discovery-service.bbclass
new file mode 100644
index 0000000..4c9db0f
--- /dev/null
+++ b/classes/obmc-phosphor-discovery-service.bbclass
@@ -0,0 +1,76 @@
+inherit obmc-phosphor-utils
+DISCOVERY_SVC_PACKAGES ?= "${PN}"
+
+python() {
+    avahi_enabled = bb.utils.contains(
+            'DISTRO_FEATURES', 'avahi', 'true', 'false', d)
+    slp_enabled = False # later
+
+    if not avahi_enabled and slp_enabled:
+        return
+
+    syscnfdir = d.getVar('sysconfdir', True)
+    dest_dir = d.getVar('D', True)
+    set_append(d, 'AVAHI_SERVICES_DIR', os.path.join(
+        dest_dir+syscnfdir,
+        'avahi',
+        'services'))
+
+    for pkg in listvar_to_list(d, 'DISCOVERY_SVC_PACKAGES'):
+        for service in listvar_to_list(d, 'REGISTERED_SERVICES_%s' % pkg):
+            if avahi_enabled:
+                set_append(d, 'RRECOMMENDS_%s' % pkg, 'avahi-daemon')
+                svc_name, svc_type, svc_port = service.split(':')
+                set_append(d, 'FILES_%s' % pkg, os.path.join(
+                    syscnfdir,
+                    'avahi',
+                    'services',
+                    '%s.service' % svc_name))
+}
+
+python discovery_services_postinstall() {
+    avahi_enabled = bb.utils.contains(
+            'DISTRO_FEATURES', 'avahi', 'true', 'false', d)
+    slp_enabled = False # later
+
+    if not avahi_enabled and slp_enabled:
+        return
+
+    service_dir = d.getVar('AVAHI_SERVICES_DIR', True)
+
+    if not os.path.exists(service_dir):
+        os.makedirs(service_dir)
+
+    def register_service_avahi(d, service_name, service_type, service_port):
+        service_file = os.path.join(
+            service_dir,
+            '%s.service' % service_name)
+        with open(service_file, 'w') as fd:
+            fd.write('<?xml version="1.0" ?>\n')
+            fd.write('<!DOCTYPE service-group SYSTEM "avahi-service.dtd">\n')
+            fd.write('<service-group>\n')
+            fd.write('        <name>"%s"</name>\n' % service_name)
+            fd.write('        <service>\n')
+            fd.write('                <type>"%s"</type>\n' % service_type)
+            fd.write('                <port>"%s"</port>\n' % service_port)
+            fd.write('        </service>\n')
+            fd.write('</service-group>\n')
+
+    def register_services(d,pkg):
+        for service in listvar_to_list(d, 'REGISTERED_SERVICES_%s' % pkg):
+            svc_info = service.split(":")
+            try:
+                svc_name, svc_type, svc_port = svc_info
+                svc_type = "_" + svc_name + "._" + svc_type
+            except:
+                continue
+            if avahi_enabled:
+                register_service_avahi(d, svc_name, svc_type, svc_port)
+
+    for pkg in listvar_to_list(d, 'DISCOVERY_SVC_PACKAGES'):
+        register_services(d, pkg)
+
+}
+do_install[postfuncs] += "discovery_services_postinstall"
+
+
diff --git a/common/recipes-core/dropbear/dropbear_%.bbappend b/common/recipes-core/dropbear/dropbear_%.bbappend
index 52a38bd..51a98d4 100644
--- a/common/recipes-core/dropbear/dropbear_%.bbappend
+++ b/common/recipes-core/dropbear/dropbear_%.bbappend
@@ -1,3 +1,7 @@
+inherit obmc-phosphor-discovery-service
+
 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
 SRC_URI += "file://dropbearkey.service \
 	    file://0001-dropbear-Add-c-command-option-to-force-a-specific-co.patch"
+
+REGISTERED_SERVICES_${PN} += "ssh:tcp:22 sftp:tcp:22"
diff --git a/common/recipes-phosphor/console/obmc-console.bb b/common/recipes-phosphor/console/obmc-console.bb
index 36c7403..f6c1db2 100644
--- a/common/recipes-phosphor/console/obmc-console.bb
+++ b/common/recipes-phosphor/console/obmc-console.bb
@@ -6,6 +6,7 @@
 inherit obmc-phosphor-license
 inherit obmc-phosphor-systemd
 inherit autotools
+inherit obmc-phosphor-discovery-service
 
 TARGET_CFLAGS   += "-fpic -O2"
 
@@ -16,6 +17,8 @@
 
 SRCREV = "44580de4e2170c8ee06dbf401315d3acfcf52b22"
 
+REGISTERED_SERVICES_${PN} += "obmc_console:tcp:2200"
+
 SYSTEMD_SERVICE_${PN} = " \
         ${PN}.service \
         ${PN}-ssh.socket \
diff --git a/common/recipes-phosphor/interfaces/phosphor-rest.bb b/common/recipes-phosphor/interfaces/phosphor-rest.bb
index a8f82cb..8df4ca0 100644
--- a/common/recipes-phosphor/interfaces/phosphor-rest.bb
+++ b/common/recipes-phosphor/interfaces/phosphor-rest.bb
@@ -8,6 +8,7 @@
 inherit allarch
 inherit obmc-phosphor-systemd
 inherit setuptools
+inherit obmc-phosphor-discovery-service
 
 RRECOMMENDS_${PN} += "virtual-obmc-wsgihost"
 
@@ -29,3 +30,4 @@
 SYSTEMD_SERVICE_${PN} = ""
 SYSTEMD_OVERRIDE_${PN} += "rest-dbus.conf:obmc-mapper.target.d/rest-dbus.conf"
 SYSTEMD_ENVIRONMENT_FILE_${PN} += "obmc/wsgi_app"
+REGISTERED_SERVICES_${PN} += "phosphor_rest:tcp:443"
diff --git a/conf/distro/openbmc-phosphor.conf b/conf/distro/openbmc-phosphor.conf
index 0b62783..2f2916c 100644
--- a/conf/distro/openbmc-phosphor.conf
+++ b/conf/distro/openbmc-phosphor.conf
@@ -29,6 +29,7 @@
         obmc-settings-mgmt \
         obmc-phosphor-system-mgmt \
         obmc-host-ipmi \
+        avahi \
         ${DISTRO_FEATURES_LIBC} \
         "
 
