diff --git a/benchmark/benchmark.go b/benchmark/benchmark.go
new file mode 100644
index 0000000000000000000000000000000000000000..a912bfa7af4b5ed93591a36f6566d800fa28e250
--- /dev/null
+++ b/benchmark/benchmark.go
@@ -0,0 +1,51 @@
+package rtdt_benchmark
+
+import (
+	"encoding/json"
+	"fmt"
+	"os"
+	"time"
+)
+
+type Rtdt_Benchmark struct {
+	MneGnmiRcv  time.Time
+	MneGnmiSend time.Time
+}
+
+var CurrentBenchmark Rtdt_Benchmark
+
+func AppendToJsonFile(r *Rtdt_Benchmark) {
+	var benchmarks []Rtdt_Benchmark
+	if _, err := os.Stat("/etc/gnmi-target/mne_share/measure_mne.json"); err == nil {
+		data, err := os.ReadFile("/etc/gnmi-target/mne_share/measure_mne.json")
+		if err != nil {
+			fmt.Println("Error reading file:", err)
+			return
+		}
+		if len(data) > 0 {
+			err = json.Unmarshal(data, &benchmarks)
+			if err != nil {
+				fmt.Println("Error unmarshaling JSON:", err)
+				return
+			}
+		}
+	} else if !os.IsNotExist(err) {
+		fmt.Println("Error checking file status:", err)
+		return
+	}
+
+	// Append the new benchmark
+	benchmarks = append(benchmarks, *r)
+
+	// Marshal and write back to file
+	outData, err := json.MarshalIndent(benchmarks, "", "  ")
+	if err != nil {
+		fmt.Println("Error marshaling JSON:", err)
+		return
+	}
+
+	err = os.WriteFile("/etc/gnmi-target/mne_share/measure_mne.json", outData, 0644)
+	if err != nil {
+		fmt.Println("Error writing to file:", err)
+	}
+}
diff --git a/internal/gnmiserver/server.go b/internal/gnmiserver/server.go
index 8c3df6bdab301d87d502ee852c42af02d474ea04..fc82f9e261de1b2657fe35050dcfa3e4e281197e 100644
--- a/internal/gnmiserver/server.go
+++ b/internal/gnmiserver/server.go
@@ -37,6 +37,7 @@ import (
 	"github.com/openconfig/ygot/ytypes"
 	"google.golang.org/protobuf/proto"
 
+	rtdt_benchmark "code.fbi.h-da.de/danet/gnmi-target/benchmark"
 	"code.fbi.h-da.de/danet/gnmi-target/handler"
 	not "code.fbi.h-da.de/danet/gnmi-target/internal/notifications"
 	dpb "github.com/golang/protobuf/protoc-gen-go/descriptor"
@@ -145,7 +146,7 @@ func (s *Server) callback(newConfig ygot.ValidatedGoStruct, existingConf ygot.Va
 // TODO: This will be moved.
 func (s *Server) PublishNotificationsToSubscribers(notifications []*gnmi.Notification) error {
 	fmt.Println("In PublishNotificationsToSubscribers()")
-  fmt.Println("Notifications:", notifications)
+	fmt.Println("Notifications:", notifications)
 	for _, specificDiff := range notifications {
 		// First for gnmi Updates
 		updates := specificDiff.GetUpdate()
@@ -700,6 +701,8 @@ func (s *Server) Get(ctx context.Context, req *pb.GetRequest) (*pb.GetResponse,
 
 // Set implements the Set RPC in gNMI spec.
 func (s *Server) Set(ctx context.Context, req *pb.SetRequest) (*pb.SetResponse, error) {
+  rtdt_benchmark.CurrentBenchmark = rtdt_benchmark.Rtdt_Benchmark{}
+  rtdt_benchmark.CurrentBenchmark.MneGnmiRcv = time.Now()
 	s.config.Lock()
 	defer s.config.Unlock()
 
@@ -770,6 +773,7 @@ func (s *Server) Set(ctx context.Context, req *pb.SetRequest) (*pb.SetResponse,
 	s.config.Data = rootStruct
 
 	// notify subscribers about the changes
+	fmt.Println("------------ In Set(): diff is:", diff)
 	err = s.PublishNotificationsToSubscribers(diff)
 	if err != nil {
 		msg := fmt.Sprintf("error while publishing config changes to subscribers: %v", err)
@@ -777,10 +781,12 @@ func (s *Server) Set(ctx context.Context, req *pb.SetRequest) (*pb.SetResponse,
 		return nil, status.Error(codes.Internal, msg)
 	}
 
+	rtdt_benchmark.CurrentBenchmark.MneGnmiSend = time.Now()
+	rtdt_benchmark.AppendToJsonFile(&rtdt_benchmark.CurrentBenchmark)
 	return &pb.SetResponse{
 		Prefix:    req.GetPrefix(),
 		Response:  results,
-		Timestamp: time.Now().UnixNano(),
+		Timestamp: rtdt_benchmark.CurrentBenchmark.MneGnmiSend.UnixNano(),
 	}, nil
 }