# dcb-rewr

## NAME



           dcb-rewr - show / manipulate the rewrite table of the DCB (Data
           Center Bridging) subsystem
    


## SYNOPSIS



           **dcb**[ _OPTIONS_ ] **rewr**{ _COMMAND_ | _help_ }
    
           **dcb rewr  {  show  |  flush  }  dev** DEV [ **prio-dscp**] [ **prio-pcp**]
    
           **dcb rewr  {  add  |  del  |  replace  }  dev** DEV [ **prio-dscp** _DSCP-_
                   _MAP_ ] [ **prio-pcp** _PCP-MAP_ ]
    
           _DSCP-MAP_ := [ _DSCP-MAP_ ] _DSCP-MAPPING_
    
           _DSCP-MAPPING_ := _PRIO_**:**_{_ DSCP _|_ **all** _}_
    
           _PCP-MAP_ := [ _PCP-MAP_ ] _PCP-MAPPING_
    
           _PCP-MAPPING_ := _PRIO_**:**_PCP_
    
           _DSCP_ := { **0**.. **63**}
    
           _PCP_ := { **0(nd/de)**.. **7(nd/de)**}
    
           _PRIO_ := { **0**.. **7**}
    


## DESCRIPTION



           **dcb rewr** is used to configure the rewrite table, in the DCB (Data
           Center Bridging) subsystem.  The rewrite table is used to rewrite
           certain values in the packet headers, based on packet priority.
    
           DCB rewrite entries are, like DCB APP entries, 3-tuples of
           selector, protocol ID, and priority. Selector is an enumeration
           that picks one of the prioritization namespaces. Currently, only
           the DSCP and PCP selector namespaces are supported by dcb rewr.
    
           The rewrite table is a list of DCB rewrite rules, that applies to
           packets with matching priority.  Notably, it is valid to have
           conflicting rewrite assignment for the same selector and priority.
           For example, the set of two rewrite entries (DSCP, 10, 1) and
           (DSCP, 11, 1), where packets with priority 1 should have its DSCP
           value rewritten to both 10 and 11, form a well-defined rewrite
           table.  **dcb rewr** tool allows low-level management of the rewrite
           table by adding and deleting individual rewrite 3-tuples through
           **add** and **del** commands. On the other hand, the command **replace** does
           what one would typically want in this situation--first adds the
           new configuration, and then removes the obsolete one, so that only
           one rewrite rule is in effect for a given selector and priority.
    


## COMMANDS



           **show** Display all entries with a given selector. When no selector
                  is given, shows all rewrite table entries categorized per
                  selector.
    
           **flush** Remove all entries with a given selector. When no selector
                  is given, removes all rewrite table entries.
    
           **add**
           **del** Add and, respectively, remove individual rewrite 3-tuples
                  to and from the DCB rewrite table.
    
           **replace**
                  Take the list of entries mentioned as parameter, and add
                  those that are not present in the rewrite table yet. Then
                  remove those entries, whose selector and priority have been
                  mentioned as parameter, but not with the exact same
                  protocol ID. This has the effect of, for the given selector
                  and priority, causing that the table only contains the
                  protocol ID (or ID's) given as parameter.
    


## PARAMETERS



           The following table shows parameters in a way that they would be
           used with **add** , **del** and **replace** commands. For **show** and **flush** , the
           parameter name is to be used as a simple keyword without further
           arguments.
    
           **prio-dscp** _DSCP-MAP_
                  _DSCP-MAP_ uses the array parameter syntax, see dcb(8) for
                  details. Keys are priorities, values are DSCP points for
                  traffic with matching priority. DSCP points can be written
                  either directly as numeric values, or using symbolic names
                  specified in **/etc/iproute2/rt_dsfield**(however note that
                  the file specifies full 8-bit dsfield values, whereas **dcb**
                  **rewr** will only use the higher six bits).  **dcb rewr show**
                  will similarly format DSCP values as symbolic names if
                  possible. The command line option **-N** turns the show
                  translation off.
    
           **prio-pcp** _PCP-MAP_
                  _PCP-MAP_ uses the array parameter syntax, see dcb(8) for
                  details. Keys are priorities. Values are PCP/DEI for
                  traffic with matching priority. PCP/DEI values are written
                  as a combination of numeric- and symbolic values, to
                  accommodate for both. PCP always in numeric form e.g 0 ..
                  7 and DEI in symbolic form e.g 'de' (drop-eligible),
                  indicating that the DEI bit is 1 or 'nd' (not-drop-
                  eligible), indicating that the DEI bit is 0.  In
                  combination 1:2de translates to a mapping of priority 1 to
                  PCP=2 and DEI=1.
    


## EXAMPLE & USAGE



           Add a rule to rewrite DSCP to 0, 24 and 48 for traffic with
           priority 0, 3 and 6, respectively:
    
           # dcb rewr add dev eth0 prio-dscp 0:0 3:24 6:48
    
           Add a rule to rewrite DSCP to 25 for traffic with priority 3:
    
           # dcb rewr add dev eth0 prio-dscp 3:25
           # dcb rewr show dev eth0 prio-dscp
           prio-dscp 0:0 3:CS3 3:25 6:CS6
           # dcb -N rewr show dev eth0 prio-dscp
           prio-dscp 0:0 3:24 3:25 6:48
    
           Reconfigure the table so that only one rule exists for rewriting
           traffic with priority 3.
    
           # dcb rewr replace dev eth0 prio-dscp 3:26
           # dcb rewr -N show dev eth0 prio-dscp
           prio-dscp 0:0 3:26 6:48
    
           Flush all DSCP rules:
    
           # dcb rewr flush dev eth0 prio-dscp
           # dcb rewr show dev eth0 prio-dscp
           (nothing)
    
           Add a rule to rewrite PCP to 1 and DEI to 0 for traffic with
           priority 1 and a rule to rewrite PCP to 2 and DEI to 1 for traffic
           with priority 2:
    
           # dcb rewr add dev eth0 prio-pcp 1:1nd 2:2de
           # dcb rewr show dev eth0 prio-pcp
           prio-pcp 1:1nd 2:2de
    


## EXIT STATUS



           Exit status is 0 if command was successful or a positive integer
           upon failure.
    


* * *