MPLS Frames
How does the GigaVUE handle MPLS frames?
Answer: The GigaVUE will forward all MPLS tagged Ethernet packets from input to output ports. However, the MPLS tags does impact their ability to perform packet filtering using the pre-defined filters such as IP addresses, application ports, etc, since they cannot automatically skip over the MPLS tags to filter on the layer 3 and higher parameters.
There is a workaround using user defined filters which provides a manual method to handle some types of packets with MPLS tags. A unicast MPLS packet has ethertype value of 0x8847 and a multicast MPLS packet has ethertype value of 0x8848. One can use the ethertype filter together with a user defined filter with the proper offset to filter on a MPLS packets with a particular IP address or any parameters that fits inside the two 16-byte (GV-420) or 4 byte (GV-MP) data fields of the user defined filter.
Offsets:
The value of the offset for the user defined filter is dependent on the number of MPLS labels inside the packet. Each MPLS label is four bytes. For a frame containing a single MPLS label, the IP Source Address will be at an offset of 30. For a frame containing two MPLS labels, the IP Source Address offset is increased by 4 bytes to 34, etc. The following diagrams shows a frame containing a single MPLS label in which the IP Source Address field begins at offset 30 (0x1E).
NOTE: According to RFC 3032, the last tag in an MPLS frame will have the S bit set to a one. This can also be filtered on to verify the position of the last tag in an MPLS frame.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Label
| Label | Exp |S| TTL | Stack
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Entry
Label: Label Value, 20 bits
Exp: Experimental Use, 3 bits
S: Bottom of Stack, 1 bit TTL: Time to Live, 8 bits
For a frame with one MPLS label, the S bit is at offset 14 (0xE), bit 00-00-01-00
Notes on User Defined Filters:
Note 1: In the GigaVUE-420 the UDA offset value is defined in decimal and must align on a four byte boundary. The offset boundary begins at byte 2 and may increment as 6, 10, 14, etc, up to byte 110. Therefore the UDA can examine up to the first 126 bytes in a packet.
Note 2: In the GigaVUE-MP the UDA offset value is defined in hexadecimal and must align on a four byte boundary. The offset boundary begins at byte 0 and may increment as 4, 8, 12, etc, up to decimal value of 72. The UDF can examine up to the first 76 bytes in a packet.
Note 3: A difference between the User Defined Attributes for the GigaVUE-420 and the User Defined Filters for the GigaVUE-MP is the way the offsets are defined. In the GigaVUE-420 the two UDA offsets are global for all the User Defined Filters. In the GigaVUE-MP each User Defined Filter has its own User Defined Offset associated with that filter.
Note 4: In the GigaVUE-MP the UDF data field is 4 bytes long and in the GigaVUE-420 the UDA data field is 16 bytes long.
Example #1A: Here is an example of a mapping script for the GigaVUE-420 which will filter and forward traffic to and from IP network 10.98.0.0 for frames which have one MPLS label. The uda1 filter will be used to filter on the S bit and the uda2 filter will be used to filter on the IP Source and Destination Addresses.
config uda uda1_offset 14
config uda uda2_offset 30
config map type st alias mpls1
| #unicast MPLS and IP source network 10.98.0.0 |
|
config map-rule mpls1 rule ethertype 8847 uda1_data 00000100-00000000-00000000-00000000 uda1_mask 00000100-00000000-00000000-00000000 uda2_data 0a620000-00000000-00000000-00000000 uda2_mask ffff0000-00000000-00000000-00000000 tool 1 |
| #unicast MPLS and IP destination network 10.98.0.0 |
|
config map-rule mpls1 rule ethertype 8847 uda1_data 00000100-00000000-00000000-00000000 uda1_mask 00000100-00000000-00000000-00000000 uda2_data 00000000-0a620000-00000000-00000000 uda2_mask 00000000-ffff0000-00000000-00000000 tool 1 |
| #multicast MPLS and IP source network 10.98.0.0 |
|
config map-rule mpls1 rule ethertype 8848 uda1_data 00000100-00000000-00000000-00000000 uda1_mask 00000100-00000000-00000000-00000000 uda2_data 0a620000-00000000-00000000-00000000 uda2_mask ffff0000-00000000-00000000-00000000 tool 1 |
| #multicast MPLS and IP destination network 10.98.0.0 |
|
config map-rule mpls1 rule ethertype 8848 uda1_data 00000100-00000000-00000000-00000000 uda1_mask 00000100-00000000-00000000-00000000 uda2_data 00000000-0a620000-00000000-00000000 uda2_mask 00000000-ffff0000-00000000-00000000 tool 1 |
config mapping net 4 map mpls1
Example #1B: Here is the same example of a mapping script for the GigaVUE-MP which will filter and forward traffic to and from IP network 10.98.0.0 for frames which have one MPLS label. The uda1 filter will be used to filter on the S bit and the uda2 filter will be used to filter on the IP Source and Destination Addresses.
config map type st alias mpls1
#unicast MPLS and IP source network 10.98.0.0
config map-rule mpls1 rule ethertype 8847 offset1 10 data1 01000000 mask1 01000000 offset2 1c data2 00000a62 mask2 0000ffff tool 4
#unicast MPLS and IP destination network 10.98.0.0
config map-rule mpls1 rule ethertype 8847 offset1 10 data1 01000000 mask1 01000000 offset2 20 data2 000a6200 mask2 00ffff00 tool 4
#multicast MPLS and IP source network 10.98.0.0
config map-rule mpls1 rule ethertype 8848 offset1 10 data1 01000000 mask1 01000000 offset2 1c data2 00000a62 mask2 0000ffff tool 4
#multicast MPLS and IP destination network 10.98.0.0
config map-rule mpls1 rule ethertype 8848 offset1 10 data1 01000000 mask1 01000000 offset2 20 data2 000a6200 mask2 00ffff00 tool 4
config mapping net 8 map mpls1
For Support, contact Gigamon by email at support@gigamon.com or call 408-263-2024.














