## 3 Experimental Testbed & Evaluation Methodology
### Evaluation Methodology  
To evaluate the performance of the system, once the radio access bearers for the data flow are established, User Datagram Protocol (UDP) packets are injected as user data at every frame into PDCP at the (CU + DU) entity. PDCP, then, adds a PDCP header to the UDP packet then delivers it to RLC. RLC informs its buffer occupancy to MAC to determine the TB size. MAC then requests data from RLC and composes the TB. Thereafter, the TB is processed by the coding block. The coding block has two main blocks (Figure 2):  
* Splitter which splits each TB into \(k=2\) equal blocks;
* Encoder that encodes the \(k\) blocks into \(n=4\) encoded blocks of the same size using fountain code and sends each encoded block into one of the \(n\) fronthaul paths. The encoded blocks are then packetized to Ethernet packets and are transmitted to RU via a raw Ethernet socket over the fronthaul. The receiver can retrieve the original TB from any subset \(\geq\)\(k\) of encoded blocks. \begin{table}
\begin{tabular}{l l} \hline \hline
**Parameters** & **Values** \\ \hline Carrier Frequency & 2.68 GHz \\ \hline System Bandwidth & 5 MHz \\ \hline Frame Type & Frequency Division Duplex \\ \hline Radio Frequency frontend & 1 transmit antenna/1 receive radio frequency \\ \hline Modulation & Adaptive Quadrature Amplitude Modulation (QAM): \\  & QAM, 16 QAM and 64 QAM) \\ \hline Packet Size & 32–1500 bytes \\ \hline Fronthaul Capacity & 1 Gigabit per second \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Open Air Interface parameters. Figure 2: End-to-end system experimental setup for multi-path fronthaul with erasure coding (MPC) for downlink communication with medium access control (MAC) and physical (PHY) layer split, with an illustration of data encoding in the (CU + DU) entity and decoding in the RU entity. In this experiment, latency is measured as the round trip time (RTT) of one packet from the MAC to the PHY layer. Procedures involved in the measurement of RTT are summarized in Algorithm 1. ```
1:Initialize: \(i\) = 0
2:whileUser is in connected_mode do
3:procedureRequest data
4: transmitted_timestamp[\(i\)] \(\leftarrow\) Get time stamp
5: transmitted_sequenceNumber[\(i\)] \(\leftarrow\) Get sequence number
6: Compose message get_data_req and append sequence number
7:\(i\)++
8:endprocedure
9:procedureSend packet through fronthaul network
10: Packetize data by adding Ethernet header
11: Write packet to raw socket
12:endprocedure
13:procedureReceive packet from fronthaul network
14: Read packet from raw socket
15: Depacketize data by removing Ethernet header
16:endprocedure
17:procedurePrepare data
18: Get data to be transmitted from scheduler
19: Append received sequence number to the data
20:endprocedure
21:procedureCalculate RTT
22: received_sequenceNumber \(\leftarrow\)Read received sequence number from data
23:for\(j\) = 1 to \(i\)do
24:ifreceived_sequenceNumber == transmitted_sequenceNumber[\(j\)] then
25: received_timestamp \(\leftarrow\) Get time stamp
26: RTT(\(j\)) = received_timestamp - transmitted_timestamp[\(j\)]
27:endif
28:endfor
29:endprocedure
30:endwhile
```  
**Algorithm 1** Round trip time (RTT) measurement  
Figure 3 shows a simplified representation of events and entities included in the measurement of RTT. Mathematically, the RTT of one sample can be expressed as:  
\[\text{latency(RTT)}_{\text{sample}}=\sum_{i=1}^{11}\text{latency(i)}; \tag{1}\]  
latency(1), latency(7) is the time that the fronthaul interface takes to packetize data and write the packet descriptor onto the network driver transmit queue. latency(2), latency(8) is the time taken for the network driver to fetch the packet and launch it onto the fronthaul network. Since packets are fetched one by one from the transmit queue, this latency is subject to a queueing delay.