diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py
index 61e6bdacdf9dfc13e758eba86a98816c51f526c1..2fc5c641379433fc378ff1af013aba05ec035fda 100644
--- a/inventory_provider/routes/classifier.py
+++ b/inventory_provider/routes/classifier.py
@@ -336,7 +336,7 @@ def _asn_group_info(redis, address):
         raise ClassifierProcessingError(
             f'unable to parse {address} as an ip address')
 
-    all_peerings = redis.get(f'juniper-peerings:remote:{address}')
+    all_peerings = redis.get(f'router-peerings:remote:{address}')
     if not all_peerings:
         return None
 
@@ -351,7 +351,7 @@ def _asn_group_info(redis, address):
             f'found multiple asn''s for {address}, '
             f'using {peer_asn} and ignoring {all_asn}')
 
-    peerings_this_asn = redis.get(f'juniper-peerings:peer-asn:{peer_asn}')
+    peerings_this_asn = redis.get(f'router-peerings:peer-asn:{peer_asn}')
     if not peerings_this_asn:
         logger.error(
             f'internal data corruption, no peerings found for asn {peer_asn}')
@@ -397,7 +397,7 @@ def _vpn_rr_peering_info(redis, address):
         raise ClassifierProcessingError(
             f'unable to parse {address} as an ip address')
 
-    all_peerings = redis.get(f'juniper-peerings:remote:{address}')
+    all_peerings = redis.get(f'router-peerings:remote:{address}')
     if not all_peerings:
         return None
 
@@ -448,7 +448,7 @@ def _ix_peering_info(redis, address):
         raise ClassifierProcessingError(
             f'unable to parse {address} as an ip address')
 
-    all_peerings = redis.get(f'juniper-peerings:remote:{address}')
+    all_peerings = redis.get(f'router-peerings:remote:{address}')
     if not all_peerings:
         return None
 
@@ -481,7 +481,7 @@ def _ix_peering_info(redis, address):
     # regex needed??? (e.g. tabs???)
     peering_group_name = peer_info['description'].split(' ')[0]
     peering_group = redis.get(
-        f'juniper-peerings:ix-groups:{peering_group_name}')
+        f'router-peerings:ix-groups:{peering_group_name}')
     if peering_group:
         peering_group = peering_group.decode('utf-8')
         return_value['group'] = sorted(json.loads(peering_group))
diff --git a/inventory_provider/routes/msr.py b/inventory_provider/routes/msr.py
index b65692acea4d28f4797327ccc28d4a0c0704fc8f..ac2aa9b98afff35c6ea537e8f8ccad1853769573 100644
--- a/inventory_provider/routes/msr.py
+++ b/inventory_provider/routes/msr.py
@@ -539,7 +539,7 @@ def logical_system_peerings(name=None):
     return _handle_peering_group_request(
         name=name,
         cache_key='classifier-cache:msr:logical-system-peerings',
-        group_key_base='juniper-peerings:logical-system')
+        group_key_base='router-peerings:logical-system')
 
 
 @routes.route('/bgp/group-peerings', methods=['GET'])
@@ -558,7 +558,7 @@ def bgp_group_peerings(name=None):
     return _handle_peering_group_request(
         name=name,
         cache_key='classifier-cache:msr:group-peerings',
-        group_key_base='juniper-peerings:group')
+        group_key_base='router-peerings:group')
 
 
 @routes.route('/bgp/routing-instance-peerings', methods=['GET'])
@@ -577,7 +577,7 @@ def bgp_routing_instance_peerings(name=None):
     return _handle_peering_group_request(
         name=name,
         cache_key='classifier-cache:msr:routing-instance-peerings',
-        group_key_base='juniper-peerings:routing-instance')
+        group_key_base='router-peerings:routing-instance')
 
 
 def _handle_peering_group_list_request(cache_key, group_key_base):
@@ -635,7 +635,7 @@ def get_logical_systems():
     """  # noqa: E501
     return _handle_peering_group_list_request(
         cache_key='classifier-cache:msr:logical-systems',
-        group_key_base='juniper-peerings:logical-system')
+        group_key_base='router-peerings:logical-system')
 
 
 @routes.route('/bgp/groups', methods=['GET'])
@@ -651,7 +651,7 @@ def get_peering_groups():
     """  # noqa: E501
     return _handle_peering_group_list_request(
         cache_key='classifier-cache:msr:peering-groups',
-        group_key_base='juniper-peerings:group')
+        group_key_base='router-peerings:group')
 
 
 @routes.route('/bgp/routing-instances', methods=['GET'])
@@ -667,7 +667,7 @@ def get_peering_routing_instances():
     """  # noqa: E501
     return _handle_peering_group_list_request(
         cache_key='classifier-cache:msr:routing-instances',
-        group_key_base='juniper-peerings:routing-instance')
+        group_key_base='router-peerings:routing-instance')
 
 
 @routes.route('/access-services', methods=['GET'])
@@ -986,7 +986,7 @@ def _load_redundant_access_peers():
     # but this can be expanded here in future
     redundant_access_groups = ['eGEANT']
     for g in redundant_access_groups:
-        doc = r.get(f'juniper-peerings:group:{g}')
+        doc = r.get(f'router-peerings:group:{g}')
         for peer in json.loads(doc.decode('utf-8')):
             result[peer['address']] = peer['remote-asn']
 
@@ -1163,7 +1163,7 @@ def bgp_all_peerings():
     """
 
     r = common.get_current_redis()
-    response = r.get('juniper-peerings:all')
+    response = r.get('router-peerings:all')
     return Response(response.decode('utf-8'), mimetype="application/json")
 
 
@@ -1261,9 +1261,9 @@ def mdvpn():
     response = _ignore_cache_or_retrieve(request, cache_key, r)
     if not response:
         bgplu = json.loads(
-            r.get('juniper-peerings:group:BGPLU').decode('utf-8'))
+            r.get('router-peerings:group:BGPLU').decode('utf-8'))
         vpnrr = json.loads(
-            r.get('juniper-peerings:group:VPN-RR').decode('utf-8'))
+            r.get('router-peerings:group:VPN-RR').decode('utf-8'))
         bgplu_index = _make_group_index(bgplu, 'remote-asn')
         vpnrr_index = _make_group_index(vpnrr, 'remote-asn')
         config = current_app.config['INVENTORY_PROVIDER_CONFIG']
@@ -1359,7 +1359,7 @@ def vpn_proxy():
     response = _ignore_cache_or_retrieve(request, cache_key, r)
     if not response:
         vpnproxy = json.loads(
-            r.get('juniper-peerings:logical-system:VPN-PROXY').decode('utf-8'))
+            r.get('router-peerings:logical-system:VPN-PROXY').decode('utf-8'))
         peerings = list(_format_peerings(vpnproxy))
         response = json.dumps(peerings)
     return Response(response, mimetype='application/json')
@@ -1398,7 +1398,7 @@ def _asn_peers(asn, group, instance):
     r = common.get_current_redis()
 
     def _get_filtered_peers_for_asn(asn, nren, group, instance):
-        peers = json.loads(r.get(f'juniper-peerings:peer-asn:{asn}'))
+        peers = json.loads(r.get(f'router-peerings:peer-asn:{asn}'))
 
         def _attribute_filter(peer, name, value):
             if value is None:
@@ -1538,7 +1538,7 @@ def _load_ip_services():
     # pre-compute remote ipaddress objects, and group to avoid duplicates
     r = common.get_current_redis()
     all_peerings = {}
-    for _remote in json.loads(r.get('juniper-peerings:all').decode('utf-8')):
+    for _remote in json.loads(r.get('router-peerings:all').decode('utf-8')):
         remote_info = all_peerings.setdefault(_remote['address'], {
             'address': ipaddress.ip_address(_remote['address']),
             'info': []
diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index bf95aab9a08fdce57ad68606b3eaa58d64028a21..90b1271f23238f764ca8aac6270e9f8da9ac03d4 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -280,7 +280,7 @@ def _build_subnet_db(update_callback=lambda s: None):
     rp.execute()
 
 
-def _build_juniper_peering_db(update_callback=lambda s: None):
+def _build_router_peering_db(update_callback=lambda s: None):
     def _is_ix(peering_info):
         if peering_info.get('instance', '') != 'IAS':
             return False
@@ -305,33 +305,37 @@ def _build_juniper_peering_db(update_callback=lambda s: None):
     peerings_per_routing_instance = {}
     all_peerings = []
 
-    # scan with bigger batches, to mitigate network latency effects
-    key_prefix = 'juniper-peerings:hosts:'
-    for k in r.scan_iter(f'{key_prefix}*', count=1000):
-        key_name = k.decode('utf-8')
-        hostname = key_name[len(key_prefix):]
-        host_peerings = r.get(key_name).decode('utf-8')
-        host_peerings = json.loads(host_peerings)
-        for p in host_peerings:
-            p['hostname'] = hostname
-            peerings_per_address.setdefault(p['address'], []).append(p)
-            if _is_ix(p):
-                ix_peerings.append(p)
-            asn = p.get('remote-asn', None)
-            if asn:
-                peerings_per_asn.setdefault(asn, []).append(p)
-            logical_system = p.get('logical-system', None)
-            if logical_system:
-                peerings_per_logical_system.setdefault(
-                    logical_system, []).append(p)
-            group = p.get('group', None)
-            if group:
-                peerings_per_group.setdefault(group, []).append(p)
-            routing_instance = p.get('instance', None)
-            if routing_instance:
-                peerings_per_routing_instance.setdefault(
-                    routing_instance, []).append(p)
-            all_peerings.append(p)
+    def _build_peering_details(key_prefix):
+        # scan with bigger batches, to mitigate network latency effects
+        for _k in r.scan_iter(f'{key_prefix}*', count=1000):
+            key_name = _k.decode('utf-8')
+            hostname = key_name[len(key_prefix):]
+            host_peerings = r.get(key_name).decode('utf-8')
+            host_peerings = json.loads(host_peerings)
+            for _p in host_peerings:
+                _p['hostname'] = hostname
+                peerings_per_address.setdefault(_p['address'], []).append(_p)
+                if _is_ix(_p):
+                    ix_peerings.append(_p)
+                asn = _p.get('remote-asn', None)
+                if asn:
+                    peerings_per_asn.setdefault(asn, []).append(_p)
+                logical_system = _p.get('logical-system', None)
+                if logical_system:
+                    peerings_per_logical_system.setdefault(
+                        logical_system, []).append(_p)
+                group = _p.get('group', None)
+                if group:
+                    peerings_per_group.setdefault(group, []).append(_p)
+                routing_instance = _p.get('instance', None)
+                if routing_instance:
+                    peerings_per_routing_instance.setdefault(
+                        routing_instance, []).append(_p)
+                all_peerings.append(_p)
+
+    key_prefixes = ('juniper-peerings:hosts:', 'nokia-peerings:hosts:')
+    for k in key_prefixes:
+        _build_peering_details(k)
 
     # sort ix peerings by group
     ix_groups = {}
@@ -343,42 +347,42 @@ def _build_juniper_peering_db(update_callback=lambda s: None):
     rp = r.pipeline()
 
     # for use with /msr/bgp
-    rp.set('juniper-peerings:all', json.dumps(all_peerings))
+    rp.set('router-peerings:all', json.dumps(all_peerings))
 
     # create peering entries, keyed by remote addresses
     update_callback(f'saving {len(peerings_per_address)} remote peers')
     for k, v in peerings_per_address.items():
-        rp.set(f'juniper-peerings:remote:{k}', json.dumps(v))
+        rp.set(f'router-peerings:remote:{k}', json.dumps(v))
 
     # create pivoted ix group name lists
     update_callback(f'saving {len(ix_groups)} remote ix peering groups')
     for k, v in ix_groups.items():
         group_addresses = list(v)
-        rp.set(f'juniper-peerings:ix-groups:{k}', json.dumps(group_addresses))
+        rp.set(f'router-peerings:ix-groups:{k}', json.dumps(group_addresses))
 
     # create pivoted asn peering lists
     update_callback(f'saving {len(peerings_per_asn)} asn peering lists')
     for k, v in peerings_per_asn.items():
-        rp.set(f'juniper-peerings:peer-asn:{k}', json.dumps(v))
+        rp.set(f'router-peerings:peer-asn:{k}', json.dumps(v))
 
     # create pivoted logical-systems peering lists
     update_callback(
         f'saving {len(peerings_per_logical_system)}'
         ' logical-system peering lists')
     for k, v in peerings_per_logical_system.items():
-        rp.set(f'juniper-peerings:logical-system:{k}', json.dumps(v))
+        rp.set(f'router-peerings:logical-system:{k}', json.dumps(v))
 
     # create pivoted group peering lists
     update_callback(
         f'saving {len(peerings_per_group)} group peering lists')
     for k, v in peerings_per_group.items():
-        rp.set(f'juniper-peerings:group:{k}', json.dumps(v))
+        rp.set(f'router-peerings:group:{k}', json.dumps(v))
 
     # create pivoted routing instance peering lists
     update_callback(
         f'saving {len(peerings_per_routing_instance)} group peering lists')
     for k, v in peerings_per_routing_instance.items():
-        rp.set(f'juniper-peerings:routing-instance:{k}', json.dumps(v))
+        rp.set(f'router-peerings:routing-instance:{k}', json.dumps(v))
 
     rp.execute()
 
@@ -613,6 +617,7 @@ def _reload_router_config_nokia(
     refresh_nokia_interface_list(hostname, netconf_doc, r, lab)
     communities = _nokia_community_strings(InventoryTask.config)
     snmp_refresh_interfaces_nokia(hostname, state_doc, communities, r, info_callback)
+    refresh_nokia_bgp_peers(hostname, netconf_doc)
 
 
 def retrieve_and_persist_config_nokia(
@@ -796,6 +801,13 @@ def refresh_nokia_interface_list(hostname, netconf_config, redis, lab=False):
     rp.execute()
 
 
+@log_task_entry_and_exit
+def refresh_nokia_bgp_peers(hostname, netconf):
+    host_peerings = list(nokia.get_all_bgp_peers(netconf))
+    r = get_next_redis(InventoryTask.config)
+    r.set(f'nokia-peerings:hosts:{hostname}', json.dumps(host_peerings))
+
+
 @app.task(base=InventoryTask, bind=True, name='reload_lab_router_juniper')
 @log_task_entry_and_exit
 def reload_lab_router_config_juniper(self, hostname):
@@ -1934,7 +1946,7 @@ def final_task(self):
 
     _build_subnet_db(update_callback=self.log_info)
     _build_snmp_peering_db(update_callback=self.log_info)
-    _build_juniper_peering_db(update_callback=self.log_info)
+    _build_router_peering_db(update_callback=self.log_info)
     populate_poller_interfaces_cache(warning_callback=self.log_warning)
     populate_error_report_interfaces_cache(warning_callback=self.log_warning)
     collate_netconf_interfaces_all_cache(warning_callback=self.log_warning)
diff --git a/test/data/router-info.json b/test/data/router-info.json
index 5352029a65d23d054d1e445be633de72732417e2..7e9f541c2c1114275c43ad48b98d4b4a70e46651 100644
Binary files a/test/data/router-info.json and b/test/data/router-info.json differ
diff --git a/test/test_worker_utils.py b/test/test_worker_utils.py
index ed5a42256a5431e6a9002d01707f845a6db317ba..b3604d00887bd0ccad7405991afb29e1e0cc7f77 100644
--- a/test/test_worker_utils.py
+++ b/test/test_worker_utils.py
@@ -102,7 +102,7 @@ def test_build_subnet_db(mocked_worker_module, data_config_filename):
     assert unmanaged_interfaces <= all_subnet_interfaces
 
 
-def test_build_juniper_peering_db(mocked_worker_module):
+def test_build_router_peering_db(mocked_worker_module):
     """
     Verify that valid juniper peering db objects are created.
 
@@ -114,19 +114,17 @@ def test_build_juniper_peering_db(mocked_worker_module):
 
     db = backend_db()  # also forces initialization
 
-    # remove the juniper-peerings:* items that
+    # remove the router-peerings:* items that
     # will be created by _build_juniper_peering_db
     def _x(k):
-        if not k.startswith('juniper-peerings'):
-            return False
-        if k.startswith('juniper-peerings:hosts:'):
+        if not k.startswith('router-peerings'):
             return False
         return True
 
     for k in list(filter(_x, db.keys())):
         del db[k]
 
-    worker._build_juniper_peering_db()
+    worker._build_router_peering_db()
 
     found_record = False
     found_logical_system = False
@@ -141,7 +139,7 @@ def test_build_juniper_peering_db(mocked_worker_module):
 
         found_record = True
 
-        if key.startswith('juniper-peerings:ix-groups:'):
+        if key.startswith('router-peerings:ix-groups:'):
             for address in value:
                 canonical = ipaddress.ip_interface(address).ip.exploded
                 assert address == canonical