O-RAN Intel® FPGA IP User Guide

ID 683238
Date 2/01/2024
Public

3.7. O-RAN IP Fragmentation

When you turn on fragmentation for the application layer, the E bit is always fixed to value 1. The subsequence_id field is always fixed to value 0 regardless of what is the original value of the E bit and subsequence_id field you send. When you turn off fragmentation or the IP performs no fragmentation, E bit, seq_id, subsequence_id, startPrb, tx_c_size, and tx_u_size fields remain unmodified. During fragmentation, the seq_id starts with zero on the first fragment and increments for every subsequent fragmented U-plane packet. The IP duplicates sectionId multiple times in the fragmented U-plane messages but with differing and consecutive groups of PRBs as indicated by the startPrbu and numPrbu fields. Fragmented packets also have corresponding tx_c_size and tx_u_size value updated for streaming mode.

The O-RAN IP generates look-up tables (LUT) for U-plane and C-plane fragmentation size according to the Maximum Ethernet frame size parameter. The Maximum Ethernet frame size parameter sets the default fragmentation number of bytes to 1500 or 9000. You may change the fragmentation number of bytes by reconfiguring frag_size_u and frag_size_c registers through CSR interface. The IP performs no fragmentation if:

  • numPrb is smaller than the U-plane fragmentation size in the LUT
  • The section extension is smaller than the C-plane fragmentation size in the LUT
  • Packet type is unsupported.

The O-RAN Design Example does not support application layer fragmentation.

Table 23.  O-RAN IP U-Plane Fragmentation Size LUT
Fragmentation Number of Bytes udIqWidth udCompMeth Functional Mode U-Plane Fragmentation Size (PRBs)
1500 16 1 or 3 Any 29
1500 16 0 Any 30
1500 15 1 or 3 Any 31
1500 15 0 Any 32
1500 14 1 or 3 Any 33
1500 14 0 Any 34
1500 13 1 or 3 Any 36
1500 13 0 Any 37
1500 12 1 or 3 Any 39
1500 12 0 Any 40
1500 11 1 or 3 Any 42
1500 11 0 Any 44
1500 10 1 or 3 Any 46
1500 10 0 Any 48
1500 9 1 or 3 Dynamic 51
1500 9 1 or 3 Static 52
1500 9 0 Any 53
1500 8 1 or 3 Any 58
1500 8 0 Any 60
9000 16 1 or 3 Any 182
9000 16 0 Any 186
9000 15 1 or 3 Any 194
9000 15 0 Dynamic 198
9000 15 0 Static 199
9000 14 1 or 3 Any 208
9000 14 0 Any 213
9000 13 1 or 3 Any 223
9000 13 0 Any 229
9000 12 1 or 3 Any 242
9000 12 0 Any 248
9000 11 1 or 3 Any 263
9000 11 0 Any 271
9000 10 1 or 3 Any 288
9000 10 0 Any 298
9000 9 1 or 3 Any 319
9000 9 0 Any 331
9000 8 1 or 3 Any 358
9000 8 0 Any 373
Table 24.  O-RAN IP C-Plane Fragmentation Size LUT
Fragmentation Number of Bytes Section Type C-Plane Fragmentation Size (Bytes)
1500 3 1437
1500 1 1445
9000 3 8937
9000 1 8945

Application layer fragmentation supports a number of eAxC ID channels up to the Fragmentation Supported Number of eAxC Channel(s) parameter that you set. You may send packets with unique eAxC ID up to this number specified during compilation. If you send a more unique eAxC ID than specified, the IP asserts tx_error[8] register and triggers IRQ. You must clear this error bit and assert eaxc_id_rst through functional_mode[30] register to resume operation. The O-RAN IP checks the SeqID for each eAxC ID separately.

Table 25.  FragmentationThis table shows the SeqID value after fragmentation for each unique eAxC ID.
eAxC SeqID E Sub-SeqID
0 0 1 0
1 0 1 0
1 1 1 0
2 0 1 0
2 1 1 0
2 2 1 0
0 1 1 0
0 2 1 0
1 2 1 0
2 3 1 0

For the IP to perform U-plane fragmentation, ensure that tx_u_numprb is larger than packet fragment size. After fragmentation, the IP adjusts tx_u_numprb to reflect the number of PRB in the fragmented data section. For the IP to perform C-plane fragmentation, ensure that section extension packet size is larger than packet fragmentation size. After fragmentation, the IP adjusts extLen field in extension packet to reflect the size of the fragmented data section.

Figure 32. Fragmented Packets
Figure 33. Fragmentation Architecture

U-plane fragmentation supports:

  • Single sectionID, multiIQ samples
  • Multiple sectionID, multi-IQ samples

U-plane fragmentation and U-plane mapper only support single section in one packet when numbprbu =0.

C-plane fragmentation supports single section, single section extension

U-plane Fragmentation Example 1

The examples show the U-plane fragmented packets after processing by the application layer.

When a U-plane section payload is fragmented because of a large number of PRBs, the IP divides it into multiple groups of PRBs. Each group (including the application headers) can fit to the MTU requirements. Each group of PRBs have respective control fields including the same section ID from the C-plane and startPrbu and numPrbu to identify its contents.

This example assumes:

  • You send raw U-plane packet with 2 sections with 500 PRBs per section that are of udIqWidth 12, udCompMeth 0
  • You set fragmentation number to 9000, which translates to U-plane fragmentation size of 248 PRBs.
Table 26.  U-plane Fragmentation Example 1
Incoming Data Seq_id
Section 0 500 PRB 88
Section 1 500 PRB 88
Table 27.  U-plane Example 1 after fragmentationThe table shows the fragmented U-plane packets after U-plane fragmentation.
Fragmented Data Section ID numPrBu (PRBs) Seq_id
Fragment 0 0 248 0
Fragment 1 0 248 1
Fragment 2 0 4 2
Fragment 3 1 248 3
Fragment 4 1 248 4
Fragment 5 1 4 5

U-plane Fragmentation Example 2

This example assumes

  • You send raw U-plane packet with 2 sections with 40 PRBs per section that are of udIqWidth 10, udCompMeth 1 or 3
  • You set fragmentation number to 1500, which translates to U-plane fragmentation size of 46 PRBs.
Table 28.  U-plane Fragmentation Example 2
Incoming Data Seq_id
Section 0 40 PRB 88
Section 1 40 PRB 88
Table 29.  U-plane Example 2 after fragmentationThe table shows the fragmented U-plane packets after the IP processes the U-plane data.
Fragmented Data Section ID numPrBu (PRBs) Seq_id
Fragment 0 0 40 0
Fragment 1 1 40 1

No fragmentation occurs because the raw packet is smaller than the U-plane fragmentation size.

The IP cannot combine two sections in the same packets after fragmentation. This example now combines packet 1, section 0 and section 1 into single packet but requires seq_id 1 and 0 respectively in the packet.

Table 30.  U-plane Example 2 after combiningThe table only indicates 1 seq_id in the packet because of the eCPRI transport header.
Incoming Data Fragment Size = 30PRB
Section 0 40 PRB
Section 1 40 PRB Illegal
Fragmented packet seq_id
Packet 0 Section 0 30 PRB 0
Packet 1 (Illegal) Section 0 10 PRB 1
Packet 1 (Illegal) Section 1 20 PRB 0
Packet 2 Section 1 20 PRB 1
Table 31.  U-plane Example 2 after fragmentationThe table shows the fragmented packets.
Fragmented Packet Seq_id
Packet 0 Section 0 30 PRB 0
Packet 1 Section 0 10 PRB 1
Packet 2 Section 1 30 PRB 0
Packet 3 Section 1 10 PRB 1

Apply application layer fragmentation so that the design can use the maximum size standard IEEE 802.3 Ethernet frames. (Jumbo frames increase the maximum MTU size). Calculate the packet fragmentation size from the equation to not exceed the MTU. The O-RAN IP uses the fragmentation size LUT to not exceed the MTU size that you target through the frag_size_u and frag_size_c registers.

Application layer maximum transmission unit size is standard IEEE 802.3 Ethernet frame payload size (1500 bytes) – transport overhead (8 bytes) – application header overhead (4 bytes) – (N * section header overhead (8 bytes)) – udCompParam overhead (2 bytes per PRB if present) = 1488 – (8 * N) bytes (or 9000 bytes for jumbo frames)

Assuming IQ width of 16 bits, 2 section headers in the U-plane packet and no udCompParam field, application layer maximum transmission unit size = 1500 – 8 – 4 – (2 * 8) = 1472 bytes. Single PRB size with 16 bits IQ width is 48 bytes. The packet fragmentation size should be less than 1472 / 48 = 30.67, which is 30.

C-plane Fragmentation Example

C-plane fragmentation occurs on O-DU to O-RU DL direction only and it only supports single section with single section extension. The following example shows the C-plane fragmented packets after processing by the C-plane application layer.

. This examples assumes:

  • You send raw C-plane packet with single section of section type 1 with 1997 bytes of section extension data (exclusive of ef, extType, extLen)
  • You set fragmentation number to 1500, which translates to C-plane fragmentation size of 1445 bytes.
Table 32.  C-plane Fragmentation Example
Incoming Data Section Type Section Extension Size (Bytes)
Section 0 1 1997

The table shows the fragmented C-plane packets after fragmentation.

Table 33.  C-plane Fragmentation Example after Fragmentation
Fragmented Data Section ID Section Type Section Extension Size (Bytes) Seq_id
Fragment 0 0 1 1445 0
Fragment 1 0 1 552 1