README.ipfragmentation
|
=======================
|
|
19-May-2003 - Mathias Koehrer (mathias_koehrer@yahoo.de) (original version)
|
21-Oct-2003 - Jan Kiszka (jan.kiszka@web.de)
|
|
|
This file documents the restrictions and pitfalls when using fragmented IP
|
packets with RTnet.
|
|
|
Introduction:
|
-------------
|
Ethernet provides 1500 bytes of payload within each packet. Subtracting the IP
|
header (20 bytes without options) and the UDP header (8 bytes), this leaves
|
1472 bytes of data for the (UDP) user. When sending larger packets, the RTnet
|
implementation of IP fragments the packet and sends it in multiple chunks over
|
the network. When a RTnet station receives a sequence of fragmented IP packets,
|
it reassembles it and passed the whole packet to the next layer (UDP)
|
afterwards.
|
|
|
Restrictions:
|
-------------
|
Incoming IP fragments are collected by the IP layer. The collector mechanism is
|
a global resource, when all collector slots are used, unassignable fragmented
|
packets are dropped! In order to guarantee bounded execution time of the
|
collector lookup mechanism, it is not possible to provide an unlimited number
|
of collectors (currently 10 are support, see ipv4/ip_fragment.c). Therefore, be
|
careful how many fragmented packets all of your stations are producing and if
|
one receiver might be overwhelmed with fragments!
|
|
Fragmented IP packets are generated AND received at the expense of the socket
|
rtskb pool. Adjust the pool size appropriately to provide sufficient rtskbs
|
(see also examples/frap_ip).
|
|
To identify the destination socket and to simplify the defragmentation, all IP
|
fragments must arrive in a strictly ascending order. Unordered packets are
|
dropped, if they can be assigned to an existing collector, the already
|
collected fragments are also cleaned up. However, for typically isolated
|
real-time networks, this requirement can be easily fulfilled.
|
|
|
Known Issues:
|
-------------
|
When sending fragmented IP packets over a NIC without RTmac being installed,
|
the NIC's transmission queue may easily overflow (take a look at the driver
|
source for the exact limit - typically TX_RING_SIZE). This is due to the still
|
lacking flow control for packet transmission. Will hopefully be fixed soon...
|