diff --git a/controller/nucleus/gnmi_transport.go b/controller/nucleus/gnmi_transport.go
index a51770d764f2abd12b28941000cacd2860c9e8fe..f25f8c0093e828916bb5c0fe88defcb3b22cd6f1 100644
--- a/controller/nucleus/gnmi_transport.go
+++ b/controller/nucleus/gnmi_transport.go
@@ -20,6 +20,8 @@ import (
 	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
 )
 
+var gnmiClients = make(map[string]gpb.GNMIClient, 0)
+
 // Gnmi implements the Transport interface and provides an SBI with the
 // possibility to access a gNMI endpoint.
 type Gnmi struct {
@@ -64,9 +66,14 @@ func newGnmiTransport(opts *tpb.TransportOption, model shared.DeviceModel) (*Gnm
 		}
 	}
 
-	c, err := gnmi.Dial(gnmiConfig)
-	if err != nil {
-		return nil, err
+	var err error
+	c, ok := gnmiClients[opts.GetAddress()]
+	if !ok {
+		c, err = gnmi.Dial(gnmiConfig)
+		if err != nil {
+			return nil, err
+		}
+		gnmiClients[opts.GetAddress()] = c
 	}
 
 	log.WithFields(log.Fields{