diff --git a/README.md b/README.md
index a61d1fea3690d3fccb70dfe221328282de66785f..494d1c78a5effe5e230a91189aefe3b6e612de81 100644
--- a/README.md
+++ b/README.md
@@ -596,4 +596,11 @@ Any non-empty responses are JSON formatted messages.
     TODO: verify these values
     * `unknown`
     * `up`
-    * `down`
\ No newline at end of file
+    * `down`
+
+
+`ix_public_peer:<address>`
+  * key examples
+    * `ix_public_peer:193.203.0.203`
+    * `ix_public_peer:2001:07f8:00a0:0000:0000:5926:0000:0002`
+  * valid values:
diff --git a/inventory_provider/juniper.py b/inventory_provider/juniper.py
index cb7a198892d734ec5b4695fa7856761f2b405405..3094781f90b04b42518a7d286b186d4a4f3ae83a 100644
--- a/inventory_provider/juniper.py
+++ b/inventory_provider/juniper.py
@@ -266,7 +266,7 @@ def ix_public_peers(netconf_config):
             local_as = local_as.find('as-number')
         peer_as = r.find('peer-as')
         yield {
-            'name': ipaddress.ip_address(name.text),
+            'name': ipaddress.ip_address(name.text).exploded,
             'description': description.text,
             'as': {
                 'local': int(local_as.text),
diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index e1861c2b30edb15f841461a33aa27661ab2ab949..66321d66b82efc5fdc9510ff163b7ab7760e7466 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -238,6 +238,23 @@ def clear_cached_classifier_responses(hostname):
         r.delete(k)
 
 
+def refresh_ix_public_peers(hostname, netconf):
+    task_logger = logging.getLogger(constants.TASK_LOGGER_NAME)
+    task_logger.debug(
+        'removing cached ix public peers for %r' % hostname)
+    r = get_redis(InventoryTask.config)
+    for k in r.keys('ix_public_peer:*'):
+        value = json.loads(r.get(k.decode('utf-8')).decode('utf-8'))
+        if value['router'] == hostname:
+            r.delete(k)
+
+    for peer in juniper.ix_public_peers(netconf):
+        peer['router'] = hostname
+        r.set(
+            'ix_public_peer:' + peer['name'],
+            json.dumps(peer))
+
+
 @app.task
 def reload_router_config(hostname):
     task_logger = logging.getLogger(constants.TASK_LOGGER_NAME)
@@ -249,6 +266,9 @@ def reload_router_config(hostname):
     if not netconf_doc:
         task_logger.error('no netconf data available for %r' % hostname)
     else:
+
+        refresh_ix_public_peers(hostname, netconf_doc)
+
         community = juniper.snmp_community_string(netconf_doc)
         if not community:
             task_logger.error(