mirror of
				https://git.proxmox.com/git/mirror_iproute2
				synced 2025-10-31 04:58:17 +00:00 
			
		
		
		
	 9ab56784a2
			
		
	
	
		9ab56784a2
		
	
	
	
	
		
			
			Add missing or excessive ".RE" macros. Remove an excessive ".EE" macro. Signed-off-by: Bjarni Ingi Gislason <bjarniig@rhi.hi.is> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
		
			
				
	
	
		
			172 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .TH "ctinfo action in tc" 8 "4 Jun 2019" "iproute2" "Linux"
 | |
| .SH NAME
 | |
| ctinfo \- tc connmark processing action
 | |
| .SH SYNOPSIS
 | |
| .B tc ... action ctinfo
 | |
| [
 | |
| .B dscp
 | |
| MASK [STATEMASK] ] [
 | |
| .B cpmark
 | |
| [MASK] ] [
 | |
| .B zone
 | |
| ZONE ] [
 | |
| .B CONTROL
 | |
| ] [
 | |
| .B index
 | |
| <INDEX>
 | |
| ]
 | |
| 
 | |
| .SH DESCRIPTION
 | |
| CTINFO (Conntrack Information) is a tc action for retrieving data from
 | |
| conntrack marks into various fields.  At present it has two independent
 | |
| processing modes which may be viewed as sub-functions.
 | |
| 
 | |
| DSCP mode copies a DSCP stored in conntrack's connmark into the IPv4/v6 diffserv
 | |
| field.  The copying may conditionally occur based on a flag also stored in the
 | |
| connmark.  DSCP mode was designed to assist in restoring packet classifications on
 | |
| ingress, classifications which may then be used by qdiscs such as CAKE.  It may be
 | |
| used in any circumstance where ingress classification needs to be maintained across
 | |
| links that otherwise bleach or remap according to their own policies.
 | |
| 
 | |
| CPMARK (copymark) mode copies the conntrack connmark into the packet's mark field.  Without
 | |
| additional parameters it is functionally completely equivalent to the existing
 | |
| connmark action.  An optional mask may be specified to mask which bits of the
 | |
| connmark are restored.  This may be useful when DSCP and CPMARK modes are combined.
 | |
| 
 | |
| Simple statistics (tc -s) on DSCP restores and CPMARK copies are maintained where values for
 | |
| set indicate a count of packets altered for that mode.  DSCP includes an error count
 | |
| where the destination packet's diffserv field was unwriteable.
 | |
| .SH PARAMETERS
 | |
| .SS DSCP mode parameters:
 | |
| .IP mask
 | |
| A mask of 6 contiguous bits indicating where the DSCP value is located in the 32 bit
 | |
| conntrack mark field.  A mask must be provided for this mode.  mask is a 32 bit
 | |
| unsigned value.
 | |
| .IP statemask
 | |
| A mask of at least 1 bit indicating where a conditional restore flag is located in the
 | |
| 32 bit conntrack mark field.  The statemask bit/s must NOT overlap the mask bits.  The
 | |
| DSCP will be restored if the conntrack mark logically ANDed with the statemask yields
 | |
| a non-zero result.  statemask is an optional unsigned 32 bit value.
 | |
| .SS CPMARK mode parameters:
 | |
| .IP mask
 | |
| Store the logically ANDed result of conntrack mark and mask into the packet's mark
 | |
| field.  Default is 0xffffffff i.e. the whole mark field.  mask is an optional unsigned 32 bit
 | |
| value
 | |
| .SS Overall action parameters:
 | |
| .IP zone
 | |
| Specify the conntrack zone when doing conntrack lookups for packets.
 | |
| zone is a 16bit unsigned decimal value.
 | |
| Default is 0.
 | |
| .IP CONTROL
 | |
| The following keywords allow to control how the tree of qdisc, classes,
 | |
| filters and actions is further traversed after this action.
 | |
| .RS
 | |
| .TP
 | |
| .B reclassify
 | |
| Restart with the first filter in the current list.
 | |
| .TP
 | |
| .B pipe
 | |
| Continue with the next action attached to the same filter.
 | |
| .TP
 | |
| .B drop
 | |
| Drop the packet.
 | |
| .TP
 | |
| .B shot
 | |
| synonym for
 | |
| .B drop
 | |
| .TP
 | |
| .B continue
 | |
| Continue classification with the next filter in line.
 | |
| .TP
 | |
| .B pass
 | |
| Finish classification process and return to calling qdisc for further packet
 | |
| processing. This is the default.
 | |
| .RE
 | |
| .IP index
 | |
| Specify an index for this action in order to being able to identify it in later
 | |
| commands. index is a 32bit unsigned decimal value.
 | |
| .SH EXAMPLES
 | |
| Example showing conditional restoration of DSCP on ingress via an IFB
 | |
| .RS
 | |
| .EX
 | |
| 
 | |
| #Set up the IFB interface
 | |
| .br
 | |
| tc qdisc add dev ifb4eth0 handle ffff: ingress
 | |
| 
 | |
| #Put CAKE qdisc on it
 | |
| .br
 | |
| tc qdisc add dev ifb4eth0 root cake bandwidth 40mbit
 | |
| 
 | |
| #Set interface UP
 | |
| .br
 | |
| ip link set dev ifb4eth0 up
 | |
| 
 | |
| #Add 2 actions, ctinfo to restore dscp & mirred to redirect the packets to IFB
 | |
| .br
 | |
| tc filter add dev eth0 parent ffff: protocol all prio 10 u32 \\
 | |
|     match u32 0 0 flowid 1:1 action    \\
 | |
|     ctinfo dscp 0xfc000000 0x01000000  \\
 | |
|     mirred egress redirect dev ifb4eth0
 | |
| 
 | |
| tc -s qdisc show dev eth0 ingress
 | |
| 
 | |
|  filter parent ffff: protocol all pref 10 u32 chain 0
 | |
|  filter parent ffff: protocol all pref 10 u32 chain 0 fh 800: ht divisor 1
 | |
|  filter parent ffff: protocol all pref 10 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1 not_in_hw
 | |
|   match 00000000/00000000 at 0
 | |
|     action order 1: ctinfo zone 0 pipe
 | |
|     index 2 ref 1 bind 1 dscp 0xfc000000 0x01000000 installed 72 sec used 0 sec DSCP set 1333 error 0 CPMARK set 0
 | |
|     Action statistics:
 | |
|     Sent 658484 bytes 1833 pkt (dropped 0, overlimits 0 requeues 0)
 | |
|     backlog 0b 0p requeues 0
 | |
| 
 | |
|     action order 2: mirred (Egress Redirect to device ifb4eth0) stolen
 | |
|     index 1 ref 1 bind 1 installed 72 sec used 0 sec
 | |
|     Action statistics:
 | |
|     Sent 658484 bytes 1833 pkt (dropped 0, overlimits 0 requeues 0)
 | |
|     backlog 0b 0p requeues 0
 | |
| .EE
 | |
| .RE
 | |
| 
 | |
| Example showing conditional restoration of DSCP on egress
 | |
| 
 | |
| This may appear nonsensical since iptables marking of egress packets is easy
 | |
| to achieve, however the iptables flow classification rules may be extensive
 | |
| and so some sort of set once and forget may be useful especially on cpu
 | |
| constrained devices.
 | |
| .RS
 | |
| .EX
 | |
| 
 | |
| # Send unmarked connections to a marking chain which needs to store a DSCP
 | |
| and set statemask bit in the connmark
 | |
| .br
 | |
| iptables -t mangle -A POSTROUTING -o eth0 -m connmark \\
 | |
|     --mark 0x00000000/0x01000000 -g CLASS_MARKING_CHAIN
 | |
| 
 | |
| # Apply marked DSCP to the packets
 | |
| .br
 | |
| tc filter add dev eth0 protocol all prio 10 u32 \\
 | |
|     match u32 0 0 flowid 1:1 action \\
 | |
|     ctinfo dscp 0xfc000000 0x01000000
 | |
| 
 | |
| tc -s filter show dev eth0
 | |
|  filter parent 800e: protocol all pref 10 u32 chain 0
 | |
|  filter parent 800e: protocol all pref 10 u32 chain 0 fh 800: ht divisor 1
 | |
|  filter parent 800e: protocol all pref 10 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1 not_in_hw
 | |
|   match 00000000/00000000 at 0
 | |
|     action order 1: ctinfo zone 0 pipe
 | |
|     index 1 ref 1 bind 1 dscp 0xfc000000 0x01000000 installed 7414 sec used 0 sec DSCP set 53404 error 0 CPMARK set 0
 | |
|     Action statistics:
 | |
|     Sent 32890260 bytes 120441 pkt (dropped 0, overlimits 0 requeues 0)
 | |
|     backlog 0b 0p requeues 0
 | |
| .br
 | |
| .RE
 | |
| .SH SEE ALSO
 | |
| .BR tc (8),
 | |
| .BR tc-cake (8)
 | |
| .BR tc-connmark (8)
 | |
| .BR tc-mirred (8)
 | |
| .SH AUTHORS
 | |
| ctinfo was written by Kevin Darbyshire-Bryant.
 |