3.7. O-RAN IP Fragmentation
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.
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 |
Fragmentation Number of Bytes | Section Type | C-Plane Fragmentation Size (Bytes) |
---|---|---|
1500 | 3 | 1437 |
1500 | 1 | 1445 |
9000 | 3 | 8937 |
9000 | 1 | 8945 |
eAxC | SeqID | E | Sub-SeqID |
---|---|---|---|
Ω | 0 | 1 | 0 |
Ω | 1 | 1 | 0 |
Ω | 2 | 1 | 0 |
Ω | 3 | 1 | 0 |
Ω | 4 | 1 | 0 |
Ω | 5 | 1 | 0 |
Ω | 6 | 1 | 0 |
Ω | 7 | 1 | 0 |
Ω | 8 | 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.
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.
Incoming Data | Seq_id | |
---|---|---|
Section 0 | 500 PRB | 88 |
Section 1 | 500 PRB | 88 |
Fragmented Data | Section ID | numPrBu (PRBs) | Seq_id |
---|---|---|---|
Fragment 0 | 0 | 248 | 88 |
Fragment 1 | 0 | 248 | 89 |
Fragment 2 | 0 | 4 | 90 |
Fragment 3 | 1 | 248 | 88 |
Fragment 4 | 1 | 248 | 89 |
Fragment 5 | 1 | 4 | 90 |
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.
Incoming Data | Seq_id | |
---|---|---|
Section 0 | 40 PRB | 88 |
Section 1 | 40 PRB | 88 |
Fragmented Data | Seq_id | ||
---|---|---|---|
Fragment 0 | Section ID 0 | 40 PRB | 88 |
Fragment 1 | Section ID 1 | 40 PRB | 88 |
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.
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 |
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.
Incoming Data | Section Type | Section Extension Size (Bytes) |
---|---|---|
Section 0 | 1 | 1997 |
The table shows the fragmented C-plane packets 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 |