Definition
A flow is regarded as an exception flow if one of these conditions are fulfilled:
- There is no free space available in the datagram lookup table.
- The first or last fragments are received out of order.
- The time-out expires between any 2 fragments.
Fragments in an exception flow
These exception flow fragments are transferred to the unmatched fragments stream for the datagram in question:
- Fragments received before the first fragment
- Fragments received after the last fragment, unless it is configured that only the time-out can remove the entry
- Fragments received after the time-out has expired
Note: If there is no free space available in the lookup table, the first fragment is transferred to a matched fragments stream, and all other fragments are transferred to the unmatched fragments stream for the datagram in question.
In the following examples, A1, A2 and A3 are the first, middle and last fragments respectively.
Case 2, first fragment not first
This table shows the sequence for a flow where A2 is the first fragment received and A3 the last fragment received.
Fragment Number | Action |
---|---|
A2 | The fragment is transferred to an unmatched fragments stream. |
A1 | The fragment is transferred to a matched fragments stream. An entry is allocated in the datagram lookup table. |
A3 | The fragment is transferred to the same matched fragments stream if it is received before the time-out expires. Otherwise it is transferred to the unmatched fragments stream for the datagram in question. The relevant entry is removed from the lookup table, unless it is configured that only the time-out can remove the entry. |
Case 3, last fragment not last
This table shows the sequence for a flow where A1 is the first fragment received and A2 the last fragment received.
Fragment number | Action |
---|---|
A1 | The fragment is transferred to a matched fragments stream. An entry is allocated in the datagram lookup table. |
A3 | The fragment is transferred to the same matched fragments stream if it is received before the time-out expires. Otherwise it is transferred to the unmatched fragments stream for the datagram in question. The relevant entry is removed from the lookup table, unless it is configured that only the time-out can remove the entry. |
A2 | The fragment is transferred to the unmatched fragments stream for the datagram in question, unless it is configured that only the time-out can remove the entry and the fragment is received before the time-out expires. In this case the fragment is transferred to the same matched fragments stream as the first fragment. |
Case 4, last fragment before first fragment
This table shows the sequence for a flow where A3 is received before A1.
Fragment number | Action |
---|---|
A3 | The fragment is transferred to an unmatched fragments stream. |
A1 | The fragment is transferred to a matched fragments stream. An entry is allocated in the datagram lookup table. This entry remains in the table until the time-out expires. |
A2 | The fragment is transferred to the same matched fragments stream if it is received before the time-out expires. Otherwise it is transferred to the unmatched fragments stream for the datagram in question. |