diff --git a/ponsim/v2/core/ponsim_device.go b/ponsim/v2/core/ponsim_device.go
index 3fc52a5..9474432 100644
--- a/ponsim/v2/core/ponsim_device.go
+++ b/ponsim/v2/core/ponsim_device.go
@@ -108,35 +108,11 @@
 	o.Counter.CountRxFrame(port, len(common.GetEthernetLayer(frame).Payload))
 
 	if egressPort, egressFrame := o.processFrame(ctx, port, frame); egressFrame != nil {
-		forwarded := 0
-		links := o.links[int(egressPort)]
-
-		if int(egressPort) <= 2 && int(egressPort) > 0 {
-			o.Counter.CountTxFrame(int(egressPort), len(common.GetEthernetLayer(egressFrame).Payload))
-		}
-
-		for _, link := range links {
-			forwarded += 1
-
-			common.Logger().WithFields(logrus.Fields{
-				"device":      o,
-				"egressPort":  port,
-				"egressFrame": egressFrame,
-			}).Debug("Forwarding packet to link")
-
-			link.(func(int, gopacket.Packet))(int(egressPort), egressFrame)
-		}
-		if forwarded == 0 {
-			common.Logger().WithFields(logrus.Fields{
-				"device": o,
-				"port":   port,
-				"frame":  frame,
-			}).Warn("Nothing was forwarded")
-		}
+		o.SendOut(int(egressPort), egressFrame)
 	} else {
 		common.Logger().WithFields(logrus.Fields{
 			"device": o,
-			"port":   egressPort,
+			"port":   int(egressPort),
 			"frame":  egressFrame,
 		}).Error("Failed to properly process frame")
 	}
@@ -145,6 +121,45 @@
 }
 
 /*
+SendOut send a given frame out the given port
+*/
+func (o *PonSimDevice) SendOut(
+	egressPort int,
+	egressFrame gopacket.Packet,
+) {
+	common.Logger().WithFields(logrus.Fields{
+		"egressPort":  egressPort,
+		"egressFrame": egressFrame,
+	}).Debug("Sending packet out port")
+
+	forwarded := 0
+	links := o.links[egressPort]
+
+	if egressPort <= 2 && egressPort > 0 {
+		o.Counter.CountTxFrame(egressPort, len(common.GetEthernetLayer(egressFrame).Payload))
+	}
+
+	for _, link := range links {
+		forwarded++
+
+		common.Logger().WithFields(logrus.Fields{
+			"device":      o,
+			"egressPort":  egressPort,
+			"egressFrame": egressFrame,
+		}).Debug("Forwarding packet to link")
+
+		link.(func(int, gopacket.Packet))(egressPort, egressFrame)
+	}
+	if forwarded == 0 {
+		common.Logger().WithFields(logrus.Fields{
+			"device": o,
+			"egressPort":   egressPort,
+			"egressFrame":  egressFrame,
+		}).Warn("Nothing was forwarded")
+	}
+}
+
+/*
 connectNetworkInterfaces opens network interfaces for reading and/or writing packets
 */
 func (o *PonSimDevice) connectNetworkInterfaces() {
diff --git a/ponsim/v2/core/ponsim_interface.go b/ponsim/v2/core/ponsim_interface.go
index fbceae2..b6f236a 100644
--- a/ponsim/v2/core/ponsim_interface.go
+++ b/ponsim/v2/core/ponsim_interface.go
@@ -30,4 +30,6 @@
 	GetPort() int32
 
 	Forward(context.Context, int, gopacket.Packet) error
+
+	SendOut(int, gopacket.Packet)
 }
diff --git a/ponsim/v2/grpc/nbi/ponsim_handler.go b/ponsim/v2/grpc/nbi/ponsim_handler.go
index 49fd71a..ec64d5c 100644
--- a/ponsim/v2/grpc/nbi/ponsim_handler.go
+++ b/ponsim/v2/grpc/nbi/ponsim_handler.go
@@ -52,10 +52,11 @@
 
 	common.Logger().WithFields(logrus.Fields{
 		"handler": handler,
+		"out_port": int(data.OutPort),
 		"frame":   frame.Dump(),
 	}).Info("Constructed frame")
 
-	handler.device.Forward(context.Background(), 2, frame)
+	handler.device.SendOut(int(data.OutPort), frame)
 
 	out := new(empty.Empty)
 	return out, nil
@@ -145,7 +146,7 @@
 				},
 			)
 		}
-		out.NniPort = 0
+		out.NniPort = 2
 	} else {
 		common.Logger().WithFields(logrus.Fields{
 			"handler": handler,
