diff --git a/routingtable/vrf/vrf.go b/routingtable/vrf/vrf.go
index 2a850939e092e854dee9d8e3aeb06c00eb4a9242..f829549ea050262ee0bf26a34e1e8c0f4b761ec9 100644
--- a/routingtable/vrf/vrf.go
+++ b/routingtable/vrf/vrf.go
@@ -121,3 +121,16 @@ func (v *VRF) RIBByName(name string) (rib *locRIB.LocRIB, found bool) {
 	rib, found = v.ribNames[name]
 	return rib, found
 }
+
+// GetRIBNames returns an []string containing all rib-names
+func (v *VRF) GetRIBNames() []string {
+	v.mu.Lock()
+	defer v.mu.Unlock()
+
+	ribNames := make([]string, 0)
+	for ribName := range v.ribNames {
+		ribNames = append(ribNames, ribName)
+	}
+
+	return ribNames
+}
diff --git a/routingtable/vrf/vrf_test.go b/routingtable/vrf/vrf_test.go
index 4caa68418ae142270e5625b61e4cbb1aeebe1ffe..3ee44dbdf72ddfdeb547fd7c3fd86d2417de6abc 100644
--- a/routingtable/vrf/vrf_test.go
+++ b/routingtable/vrf/vrf_test.go
@@ -81,3 +81,15 @@ func TestUnregister(t *testing.T) {
 	_, found = globalRegistry.vrfsID[vrfID]
 	assert.False(t, found, "vrf must not be in global registry")
 }
+
+func TestGetRIBNames(t *testing.T) {
+	vrfName := "namedRIBs"
+	vrfID := uint32(8)
+	v, err := New(vrfName, vrfID)
+	assert.Nil(t, err, "error must be nil on first invokation")
+
+	ribNames := v.GetRIBNames()
+	expectedRibNames := []string{"inet.8", "inet6.8"}
+
+	assert.EqualValues(t, expectedRibNames, ribNames, "rib names must match")
+}