| .TH "MPLS manipulation action in tc" 8 "22 May 2019" "iproute2" "Linux" |
| |
| .SH NAME |
| mpls - mpls manipulation module |
| .SH SYNOPSIS |
| .in +8 |
| .ti -8 |
| .BR tc " ... " "action mpls" " { " |
| .IR POP " | " PUSH " | " MODIFY " | " |
| .BR dec_ttl " } [ " |
| .IR CONTROL " ]" |
| |
| .ti -8 |
| .IR POP " := " |
| .BR pop " " protocol |
| .IR MPLS_PROTO |
| |
| .ti -8 |
| .IR PUSH " := " |
| .BR push " [ " protocol |
| .IR MPLS_PROTO " ]" |
| .RB " [ " tc |
| .IR MPLS_TC " ] " |
| .RB " [ " ttl |
| .IR MPLS_TTL " ] " |
| .RB " [ " bos |
| .IR MPLS_BOS " ] " |
| .BI label " MPLS_LABEL" |
| |
| .ti -8 |
| .IR MODIFY " := " |
| .BR modify " [ " label |
| .IR MPLS_LABEL " ]" |
| .RB " [ " tc |
| .IR MPLS_TC " ] " |
| .RB " [ " ttl |
| .IR MPLS_TTL " ] " |
| |
| .ti -8 |
| .IR CONTROL " := { " |
| .BR reclassify " | " pipe " | " drop " | " continue " | " pass " | " goto " " chain " " CHAIN_INDEX " }" |
| .SH DESCRIPTION |
| The |
| .B mpls |
| action performs mpls encapsulation or decapsulation on a packet, reflected by the |
| operation modes |
| .IR POP ", " PUSH ", " MODIFY " and " DEC_TTL . |
| The |
| .I POP |
| mode requires the ethertype of the header that follows the MPLS header (e.g. |
| IPv4 or another MPLS). It will remove the outer MPLS header and replace the |
| ethertype in the MAC header with that passed. The |
| .IR PUSH " and " MODIFY |
| modes update the current MPLS header information or add a new header. |
| .IR PUSH |
| requires at least an |
| .IR MPLS_LABEL ". " |
| .I DEC_TTL |
| requires no arguments and simply subtracts 1 from the MPLS header TTL field. |
| |
| .SH OPTIONS |
| .TP |
| .B pop |
| Decapsulation mode. Requires the protocol of the next header. |
| .TP |
| .B push |
| Encapsulation mode. Requires at least the |
| .B label |
| option. |
| .TP |
| .B modify |
| Replace mode. Existing MPLS tag is replaced. |
| .BR label ", " |
| .BR tc ", " |
| and |
| .B ttl |
| are all optional. |
| .TP |
| .B dec_ttl |
| Decrement the TTL field on the outer most MPLS header. |
| .TP |
| .BI label " MPLS_LABEL" |
| Specify the MPLS LABEL for the outer MPLS header. |
| .I MPLS_LABEL |
| is an unsigned 20bit integer, the format is detected automatically (e.g. prefix |
| with |
| .RB ' 0x ' |
| for hexadecimal interpretation, etc.). |
| .TP |
| .BI protocol " MPLS_PROTO" |
| Choose the protocol to use. For push actions this must be |
| .BR mpls_uc " or " mpls_mc " (" mpls_uc |
| is the default). For pop actions it should be the protocol of the next header. |
| This option cannot be used with modify. |
| .TP |
| .BI tc " MPLS_TC" |
| Choose the TC value for the outer MPLS header. Decimal number in range of 0-7. |
| Defaults to 0. |
| .TP |
| .BI ttl " MPLS_TTL" |
| Choose the TTL value for the outer MPLS header. Number in range of 0-255. A |
| non-zero default value will be selected if this is not explicitly set. |
| .TP |
| .BI bos " MPLS_BOS" |
| Manually configure the bottom of stack bit for an MPLS header push. The default |
| is for TC to automatically set (or unset) the bit based on the next header of |
| the packet. |
| .TP |
| .I CONTROL |
| How to continue after executing this action. |
| .RS |
| .TP |
| .B reclassify |
| Restarts classification by jumping back to the first filter attached to this |
| action's parent. |
| .TP |
| .B pipe |
| Continue with the next action, this is the default. |
| .TP |
| .B drop |
| Packet will be dropped without running further actions. |
| .TP |
| .B continue |
| Continue classification with next filter in line. |
| .TP |
| .B pass |
| Return to calling qdisc for packet processing. This ends the classification |
| process. |
| .RE |
| .SH EXAMPLES |
| The following example encapsulates incoming IP packets on eth0 into MPLS with |
| a label 123 and sends them out eth1: |
| |
| .RS |
| .EX |
| #tc qdisc add dev eth0 handle ffff: ingress |
| #tc filter add dev eth0 protocol ip parent ffff: flower \\ |
| action mpls push protocol mpls_uc label 123 \\ |
| action mirred egress redirect dev eth1 |
| .EE |
| .RE |
| |
| In this example, incoming MPLS unicast packets on eth0 are decapsulated and to |
| ip packets and output to eth1: |
| |
| .RS |
| .EX |
| #tc qdisc add dev eth0 handle ffff: ingress |
| #tc filter add dev eth0 protocol mpls_uc parent ffff: flower \\ |
| action mpls pop protocol ipv4 \\ |
| action mirred egress redirect dev eth0 |
| .EE |
| .RE |
| |
| .SH SEE ALSO |
| .BR tc (8) |