The router supports DSCP remarking of IPv4/IPv6 packets arriving on VPLS, VPRN, GRT, and system interfaces for OFS instances with the switch-defined-cookie command enabled using the following OF encoding:
flow_mod:
instruction type: OFPIT_METER
action type: with the meterId.
The meters are configured using meter modification messages, and are configured before the flow messages are sent with meter instruction:
typedef struct tOfpMeterModMsg
{
tOfpMsgHeader msgHdr;
uint16_t mtrCommand; /* One of OFP_MTR_CMD_*. */
uint16_t mtrConfig; /* bitmap of OFP_MTR_CFG_*. */
uint32_t mtrId; /* Meter instance. */
tOfpMeterBandHeader bands[0]; /* The band list length is inferred from
the length field in the msgHdr. */
} tOfpMeterModMsg;
typedef struct tOfpMeterBandHeader
{
uint16_t bandType; /* One of OFP_MTR_BAND_*. */
uint16_t length; /* Length in bytes of this band. */
uint32_t rate; /* Rate for this band. */
uint32_t burstSize; /* Size of bursts. */
} tOfpMeterBandHeader;
typedef enum eOfpMeterBandType
{
OFP_MTR_BAND_DROP = 1, /* Drop packet. */
OFP_MTR_BAND_DSCP_REMARK = 2, /* Remark DSCP in the IP header. */
OFP_MTR_BAND_EXPERIMENTER = 0xFFFF /* Experimenter meter band. */
} eOfpMeterBandType;
typedef struct tOfpMeterBandDscpRemark
{
tOfpMeterBandHeader bandHdr; /* OFP_MTR_BAND_DSCP_REMARK */
uint8_t precLevel; /* Number of drop precedence level to add */
uint8_t pad[3];
} tOfpMeterBandDscpRemark;