Understanding Fragmented Packet Queuing
Fragmented Multilink PPP (MLPPP) packets have a multilink header containing a multilink sequence number. The sequence numbers on these fragments must be preserved so that the remote device receiving these fragments can correctly reassemble them into a complete packet. To accommodate this requirement, Junos OS queues all packets on member links of a multilink bundle with a MLPPP header into a single queue (q0) by default.
Traffic flows of a forwarding class that has MLPPP fragmentation configured are distributed from the inline services
si
bundle interface queues to the member link queues (queue 0) following a round-robin method.Traffic flows of a forwarding class without MLPPP fragmentation are distributed from the
si
bundle interface queues to the member link queues based on a hashing algorithm computed from the destination address, source address, and IP protocol of the packet.If the IP payload contains TCP or UDP traffic, the hashing algorithm also includes the source and destination ports. As a result, all traffic belonging to one traffic flow is queued to one member link.
Figure 1 shows how traffic is queued on an MLPPP multilink bundle and its member links. Packet flows in the figure use the notation Px,Fx; for example, P1,F1 represents Packet 1, Fragment 1.
There are four queues.
Forwarding classes be, af, and nc are mapped to queues q0, q1, and q3, respectively, on the multilink bundle. These are fragmented.
Forwarding class ef contains voice traffic, and is mapped to q2 and is not fragmented.
Interface
si-1/0/0.1
is the bundle, andpp0.1
andpp0.2
are the member links for that bundle.
Queuing on member links proceeds as follows:
The packet fragments of forwarding classes be, af, and nc on the multilink bundle are mapped to q0 on Member Links 1 and 2. These packets are distributed from the
si
queues to the member links using a round-robin method.The packets of forwarding class ef (voice) from the multilink bundle are mapped to q2 on the member links. This forwarding class is not fragmented. The packets are distributed from the
si
queues to the member links based on a hashing algorithm.The network control packets from the multilink bundle are mapped to q0 on the member links. The bundle network control traffic is queued with the data flows on the member link. However, q3 on the member links transmits network control packets that exchange protocol information related to member links, such as packets exchanging hello messages on member links.
This section contains the following topics:
Queuing of Fragmented Packets to Member Links
On a multilink bundle, packet fragments from all forwarding classes with fragmentation enabled are transmitted to q0 on member links. On the q0 queues of member links, packets are queued using a round-robin method to enable per-fragment load balancing.
Figure 2 shows how fragmented packet queuing is performed on the member links. Packet flows in the figure use the notation Px,Fx; for example, P1,F1 represents Packet 1, Fragment 1.
Packet fragments from the multilink bundle are queued to member links one by one using a round-robin method:
Packet P1,F1 from q0 on the multilink bundle is queued to q0 on Member Link 1.
Packet P1,F2 from q0 on the multilink bundle is queued to q0 on Member Link 2.
Packet P1,F3 from q0 on the multilink bundle is queued to q0 on Member Link 1.
Packet P2,F1 from q1 on the multilink bundle is queued to q0 on Member Link 2, and so on.
Packets that are part of the fragmented forwarding class, but are not fragmented, follow the same procedure.
After exiting the si
interface, Microcode
adds a header of approximately 40 bytes to the MLPPP packets. When
configuring the class-of-service shaping, you may need to adjust bytes
to account for this.
Queuing of LFI Packets to Member Links
On a multilink bundle, all non-MLPPP encapsulated traffic [link fragmenting and interleaving (LFI) traffic] from the multilink bundle are queued to the queue as defined by the forwarding class of that packet.
Figure 3 shows how LFI packet queuing is performed on the member links.
The packets are distributed from the si
interface to the member links based on a hashing algorithm computed
from the source address, destination address, and IP protocol of the
packet.
If the IP payload contains TCP or UDP traffic, the hashing algorithm also includes the source and destination ports. As a result, all traffic belonging to one traffic flow is queued to one member link.