diff --git a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd
index 42b3fb1b104e32cf41561ad475db4b499209dec1..6ab2d6c2a16460dbafa9ffe5d68faec6b3324172 100644
--- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd
+++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd
@@ -32,14 +32,17 @@ USE common_lib.common_network_layers_pkg.ALL;
 USE work.sdp_pkg.ALL;
 
 PACKAGE tb_sdp_pkg is
+
+  -----------------------------------------------------------------------------
+  -- Derive low part of MAC, IP from global node (GN) index
+  -----------------------------------------------------------------------------
+  FUNCTION func_sdp_gn_index_to_mac_15_0(gn_index : NATURAL) RETURN STD_LOGIC_VECTOR;
+  FUNCTION func_sdp_gn_index_to_ip_15_0(gn_index : NATURAL) RETURN STD_LOGIC_VECTOR;
+
   -----------------------------------------------------------------------------
   -- Statistics offload
   -----------------------------------------------------------------------------
-  FUNCTION func_sdp_compose_stat_header(eth_dst_mac            : STD_LOGIC_VECTOR(47 DOWNTO 0);  -- eth header
-                                        eth_src_mac            : STD_LOGIC_VECTOR(47 DOWNTO 0);
-                                        ip_src_addr            : STD_LOGIC_VECTOR(31 DOWNTO 0);  -- ip header
-                                        ip_dst_addr            : STD_LOGIC_VECTOR(31 DOWNTO 0);
-                                        sdp_info               : t_sdp_info;  -- app header
+  FUNCTION func_sdp_compose_stat_header(sdp_info               : t_sdp_info;  -- app header
                                         g_statistics_type      : STRING;
                                         weighted_subbands_flag : STD_LOGIC;
                                         gn_index               : NATURAL;
@@ -56,11 +59,7 @@ PACKAGE tb_sdp_pkg is
   -----------------------------------------------------------------------------
   -- Beamlet output via 10GbE to CEP (= central processor)
   -----------------------------------------------------------------------------
-  FUNCTION func_sdp_compose_cep_header(eth_dst_mac        : STD_LOGIC_VECTOR(47 DOWNTO 0);  -- eth header
-                                       eth_src_mac        : STD_LOGIC_VECTOR(47 DOWNTO 0);
-                                       ip_src_addr        : STD_LOGIC_VECTOR(31 DOWNTO 0);  -- ip header
-                                       ip_dst_addr        : STD_LOGIC_VECTOR(31 DOWNTO 0);
-                                       ip_header_checksum : NATURAL;
+  FUNCTION func_sdp_compose_cep_header(ip_header_checksum : NATURAL;
                                        sdp_info           : t_sdp_info;  -- app header
                                        gn_index           : NATURAL;
                                        beamlet_scale      : NATURAL;
@@ -74,11 +73,23 @@ END PACKAGE tb_sdp_pkg;
 
 PACKAGE BODY tb_sdp_pkg IS
 
-  FUNCTION func_sdp_compose_stat_header(eth_dst_mac            : STD_LOGIC_VECTOR(47 DOWNTO 0);  -- eth header
-                                        eth_src_mac            : STD_LOGIC_VECTOR(47 DOWNTO 0);
-                                        ip_src_addr            : STD_LOGIC_VECTOR(31 DOWNTO 0);  -- ip header
-                                        ip_dst_addr            : STD_LOGIC_VECTOR(31 DOWNTO 0);
-                                        sdp_info               : t_sdp_info;  -- app header
+  FUNCTION func_sdp_gn_index_to_mac_15_0(gn_index : NATURAL) RETURN STD_LOGIC_VECTOR IS
+    CONSTANT c_unb_nr    : NATURAL := gn_index / 4;  -- 4 PN per Uniboard2
+    CONSTANT c_node_nr   : NATURAL := gn_index MOD 4;
+    CONSTANT c_mac_15_0  : STD_LOGIC_VECTOR(15 DOWNTO 0) := TO_UVEC(c_unb_nr, 8) & TO_UVEC(c_node_nr, 8);
+  BEGIN
+    RETURN c_mac_15_0;
+  END func_sdp_gn_index_to_mac_15_0;
+
+  FUNCTION func_sdp_gn_index_to_ip_15_0(gn_index : NATURAL) RETURN STD_LOGIC_VECTOR IS
+    CONSTANT c_unb_nr    : NATURAL := gn_index / 4;  -- 4 PN per Uniboard2
+    CONSTANT c_node_nr   : NATURAL := gn_index MOD 4;
+    CONSTANT c_ip_15_0   : STD_LOGIC_VECTOR(15 DOWNTO 0) := TO_UVEC(c_unb_nr, 8) & TO_UVEC(c_node_nr+1, 8);  -- +1 to avoid IP = *.*.*.0
+  BEGIN
+    RETURN c_ip_15_0;
+  END func_sdp_gn_index_to_ip_15_0;
+
+  FUNCTION func_sdp_compose_stat_header(sdp_info               : t_sdp_info;  -- app header
                                         g_statistics_type      : STRING;
                                         weighted_subbands_flag : STD_LOGIC;
                                         gn_index               : NATURAL;
@@ -89,6 +100,10 @@ PACKAGE BODY tb_sdp_pkg IS
                                         xst_signal_input_A     : NATURAL;
                                         xst_signal_input_B     : NATURAL;
                                         dp_bsn                 : NATURAL) RETURN t_sdp_stat_header IS
+    -- Use sim default dst and src MAC, IP, UDP port from sdp_pkg.vhd and based on gn_index
+    CONSTANT c_mac_15_0                  : STD_LOGIC_VECTOR(15 DOWNTO 0) := func_sdp_gn_index_to_mac_15_0(gn_index);
+    CONSTANT c_ip_15_0                   : STD_LOGIC_VECTOR(15 DOWNTO 0) := func_sdp_gn_index_to_ip_15_0(gn_index);
+
     CONSTANT c_nof_statistics_per_packet : NATURAL := func_sdp_get_stat_nof_statistics_per_packet(g_statistics_type);
     CONSTANT c_udp_total_length          : NATURAL := func_sdp_get_stat_udp_total_length(g_statistics_type);
     CONSTANT c_ip_total_length           : NATURAL := func_sdp_get_stat_ip_total_length(g_statistics_type);
@@ -98,8 +113,8 @@ PACKAGE BODY tb_sdp_pkg IS
     VARIABLE v_hdr : t_sdp_stat_header;
   BEGIN
     -- eth header
-    v_hdr.eth.dst_mac        := eth_dst_mac;
-    v_hdr.eth.src_mac        := eth_src_mac;
+    v_hdr.eth.dst_mac        := c_sdp_stat_eth_dst_mac;
+    v_hdr.eth.src_mac        := c_sdp_stat_eth_src_mac_47_16 & c_mac_15_0;
     v_hdr.eth.eth_type       := x"0800";
 
     -- ip header
@@ -112,18 +127,13 @@ PACKAGE BODY tb_sdp_pkg IS
     v_hdr.ip.fragment_offset := TO_UVEC(                0, c_network_ip_fragment_offset_w);
     v_hdr.ip.time_to_live    := TO_UVEC(              127, c_network_ip_time_to_live_w);
     v_hdr.ip.protocol        := TO_UVEC(               17, c_network_ip_protocol_w);
+    -- the IP header check sum is calculated in IO eth, so still 0 here
     v_hdr.ip.header_checksum := TO_UVEC(                0, c_network_ip_header_checksum_w);
-    v_hdr.ip.src_ip_addr     :=               ip_src_addr;  -- c_network_ip_addr_w
-    v_hdr.ip.dst_ip_addr     :=               ip_dst_addr;  -- c_network_ip_addr_w
+    v_hdr.ip.src_ip_addr     := c_sdp_stat_ip_src_addr_31_16 & c_ip_15_0;  -- c_network_ip_addr_w
+    v_hdr.ip.dst_ip_addr     := c_sdp_stat_ip_dst_addr;  -- c_network_ip_addr_w
 
     -- udp header
-    IF g_statistics_type = "SST" OR g_statistics_type = "SST_OS" THEN
-      v_hdr.udp.src_port := c_sdp_sst_udp_src_port_15_8 & TO_UVEC(gn_index, 8);
-    ELSIF g_statistics_type = "BST" THEN
-      v_hdr.udp.src_port := c_sdp_bst_udp_src_port_15_8 & TO_UVEC(gn_index, 8);
-    ELSIF g_statistics_type = "XST" THEN
-      v_hdr.udp.src_port := c_sdp_xst_udp_src_port_15_8 & TO_UVEC(gn_index, 8);
-    END IF;
+    v_hdr.udp.src_port       := func_sdp_get_stat_udp_src_port(g_statistics_type, gn_index);
     v_hdr.udp.dst_port       :=   c_sdp_stat_udp_dst_port;
     v_hdr.udp.total_length   := TO_UVEC(c_udp_total_length, c_network_udp_port_w);
     v_hdr.udp.checksum       := TO_UVEC(                 0, c_network_udp_checksum_w);
@@ -237,21 +247,21 @@ PACKAGE BODY tb_sdp_pkg IS
   END func_sdp_verify_stat_header;
 
 
-  FUNCTION func_sdp_compose_cep_header(eth_dst_mac        : STD_LOGIC_VECTOR(47 DOWNTO 0);  -- eth header
-                                       eth_src_mac        : STD_LOGIC_VECTOR(47 DOWNTO 0);
-                                       ip_src_addr        : STD_LOGIC_VECTOR(31 DOWNTO 0);  -- ip header
-                                       ip_dst_addr        : STD_LOGIC_VECTOR(31 DOWNTO 0);
-                                       ip_header_checksum : NATURAL;
+  FUNCTION func_sdp_compose_cep_header(ip_header_checksum : NATURAL;
                                        sdp_info           : t_sdp_info;  -- app header
                                        gn_index           : NATURAL;
                                        beamlet_scale      : NATURAL;
                                        beamlet_index      : NATURAL;
                                        dp_bsn             : NATURAL) RETURN t_sdp_cep_header IS
+    -- Use sim default dst and src MAC, IP, UDP port from sdp_pkg.vhd and based on gn_index
+    CONSTANT c_mac_15_0             : STD_LOGIC_VECTOR(15 DOWNTO 0) := func_sdp_gn_index_to_mac_15_0(gn_index);
+    CONSTANT c_ip_15_0              : STD_LOGIC_VECTOR(15 DOWNTO 0) := func_sdp_gn_index_to_ip_15_0(gn_index);
+
     VARIABLE v_hdr : t_sdp_cep_header;
   BEGIN
     -- eth header
-    v_hdr.eth.dst_mac        := eth_dst_mac;
-    v_hdr.eth.src_mac        := eth_src_mac;
+    v_hdr.eth.dst_mac        := c_sdp_cep_eth_dst_mac;
+    v_hdr.eth.src_mac        := c_sdp_cep_eth_src_mac_47_16 & c_mac_15_0;
     v_hdr.eth.eth_type       := x"0800";
 
     -- ip header
@@ -265,8 +275,8 @@ PACKAGE BODY tb_sdp_pkg IS
     v_hdr.ip.time_to_live    := TO_UVEC(                      127, c_network_ip_time_to_live_w);
     v_hdr.ip.protocol        := TO_UVEC(                       17, c_network_ip_protocol_w);
     v_hdr.ip.header_checksum := TO_UVEC(       ip_header_checksum, c_network_ip_header_checksum_w);
-    v_hdr.ip.src_ip_addr     :=                       ip_src_addr;  -- c_network_ip_addr_w
-    v_hdr.ip.dst_ip_addr     :=                       ip_dst_addr;  -- c_network_ip_addr_w
+    v_hdr.ip.src_ip_addr     := c_sdp_cep_ip_src_addr_31_16 & c_ip_15_0;  -- c_network_ip_addr_w
+    v_hdr.ip.dst_ip_addr     := c_sdp_cep_ip_dst_addr;  -- c_network_ip_addr_w
 
     -- udp header
     v_hdr.udp.src_port       := c_sdp_cep_udp_src_port_15_8 & TO_UVEC(gn_index, 8);
diff --git a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd
index 6f6fed55a1f6f9609261bcb081e130344a6d8ae8..0d81fa46f88cc3d12eaab6bea39295bc54de9e17 100644
--- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd
+++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd
@@ -82,10 +82,10 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS
 
   CONSTANT c_offload_time              : NATURAL := g_offload_time * g_gn_index;
 
-  -- In this tb simply use fixed network src addresses
-  CONSTANT c_eth_src_mac  : STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0) := x"123456789ABC";
-  CONSTANT c_ip_src_addr  : STD_LOGIC_VECTOR(c_network_ip_addr_w-1 DOWNTO 0) := x"0A090807";
-  CONSTANT c_udp_src_port : STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0) := func_sdp_get_stat_udp_src_port(g_statistics_type, g_gn_index);
+  -- Use sim default dst and src MAC, IP, UDP port from sdp_pkg.vhd and based on g_gn_index
+  CONSTANT c_node_eth_src_mac          : STD_LOGIC_VECTOR(47 DOWNTO 0) := c_sdp_stat_eth_src_mac_47_16 & func_sdp_gn_index_to_mac_15_0(g_gn_index);
+  CONSTANT c_node_ip_src_addr          : STD_LOGIC_VECTOR(31 DOWNTO 0) := c_sdp_stat_ip_src_addr_31_16 & func_sdp_gn_index_to_ip_15_0(g_gn_index);
+  CONSTANT c_node_udp_src_port         : STD_LOGIC_VECTOR(15 DOWNTO 0) := func_sdp_get_stat_udp_src_port(g_statistics_type, g_gn_index);
 
   -- Used mm_adresses on mm bus "enable_mosi/miso".
   CONSTANT c_reg_enable_mm_addr_enable : NATURAL := 0;
@@ -385,11 +385,7 @@ BEGIN
   -- . prepare expected XST signal_input_B index, assume crosslet transport in positive direction
   exp_xst_signal_input_B <= (source_gn MOD c_sdp_N_pn_max) * c_sdp_S_pn;
 
-  exp_sdp_stat_header <= func_sdp_compose_stat_header(c_sdp_stat_eth_dst_mac,
-                                                      c_eth_src_mac,
-                                                      c_ip_src_addr,
-                                                      c_sdp_stat_ip_dst_addr,
-                                                      exp_sdp_info,
+  exp_sdp_stat_header <= func_sdp_compose_stat_header(exp_sdp_info,
                                                       g_statistics_type,
                                                       weighted_subbands_flag,
                                                       gn_index,
@@ -671,9 +667,9 @@ BEGIN
     out_siso         => sdp_offload_siso,
 
     -- Inputs from other blocks
-    eth_src_mac             => c_eth_src_mac,
-    udp_src_port            => c_udp_src_port,
-    ip_src_addr             => c_ip_src_addr,
+    eth_src_mac             => c_node_eth_src_mac,
+    udp_src_port            => c_node_udp_src_port,
+    ip_src_addr             => c_node_ip_src_addr,
 
     gn_index                => gn_index,
     ring_info               => c_exp_ring_info,