Have questions? Stuck? Please check our FAQ for some common questions and answers.

Flow Rule Criteria

JSON Format

During a flow POST request to the ONOS REST APIs the passed JSON data can contain different objects in the criteria array . This is an example of a JSON document with all the possible criterion. Any combination of zero or more of these criterion will work in a POST request.

{
  "priority": 40000,
  "timeout": 0,
  "isPermanent": true,
  "deviceId": "of:0000000000000001",
  "treatment": {
    "instructions": [
      {
        "type": "OUTPUT",
        "port": "CONTROLLER"
      }
    ]
  },
  "selector": {
    "criteria": [
      {
        "type": "ETH_TYPE",
        "ethType": "0x88cc"
      },
	  {
        "type": "ETH_DST",
        "mac": "00:00:11:00:00:01"
      },
      {
        "type": "ETH_SRC",
        "mac": "00:00:11:00:00:01"
      },
      {
        "type": "IN_PORT",
        "port": "1"
      },
      {
        "type": "IN_PHY_PORT",
        "port": "1"
      },
      {
        "type": "METADATA",
        "metadata": "0x1000"
      },
      {
        "type": "VLAN_VID",
        "vlanId": "1"
      },
      {
        "type": "VLAN_PCP",
        "priority": "1"
      },
      {
        "type": "INNER_VLAN_VID",
        "innerVlanId": "1"
      },
      {
        "type": "INNER_VLAN_PCP",
        "innerPriority": "1"
      },
      {
        "type": "IP_DSCP",
        "ipDscp": 1
      },
      {
        "type": "IP_ECN",
        "ipEcn": 1
      },
      {
        "type": "IP_PROTO",
        "protocol": 1
      },
      {
        "type": "IPV4_SRC",
        "ip": "10.1.1.0/24"
      },
      {
        "type": "IPV4_DST",
        "ip": "10.1.1.0/24"
      },
      {
        "type": "TCP_SRC",
        "tcpPort": 1
      },
      {
        "type": "TCP_DST",
        "tcpPort": 1
      },
      {
        "type": "UDP_SRC",
        "udpPort": 1
      },
      {
        "type": "UDP_DST",
        "udpPort": 1
      },
      {
        "type": "SCTP_SRC",
        "sctpPort": 1
      },
      {
        "type": "SCTP_DST",
        "sctpPort": 1
      },
      {
        "type": "ICMPV4_TYPE",
        "icmpType": "1"
      },
      {
        "type": "ICMPV4_CODE",
        "icmpCode": 1
      },
      {
        "type": "IPV6_SRC",
        "ip": "1111::2222/64"
      },
      {
        "type": "IPV6_DST",
        "ip": "1111::2222/64"
      },
      {
        "type": "IPV6_FLABEL",
        "flowlabel": 1
      },
      {
        "type": "ICMPV6_TYPE",
        "icmpv6Type": 1
      },
      {
        "type": "ICMPV6_CODE",
        "icmpv6Code": 1
      },
      {
        "type": "IPV6_ND_TARGET",
        "targetAddress": "1111::2222"
      },
      {
        "type": "IPV6_ND_SLL",
        "mac": "00:00:11:00:00:01"
      },
      {
        "type": "IPV6_ND_TLL",
        "mac": "00:00:11:00:00:01"
      },
      {
        "type": "MPLS_LABEL",
        "label": 1
      },
      {
        "type": "IPV6_EXTHDR",
        "exthdrFlags": 1
      },
      {
        "type": "OCH_SIGID",
        "lambda": 1
      },
      {
        "type": "GRID_TYPE",
        "gridType": DWDM
      },
      {
        "type": "CHANNEL_SPACING",
        "channelSpacing": 100
      },
      {
        "type": "SPACING_MULIPLIER",
        "spacingMultiplier": 4
      },
      {
        "type": "SLOT_GRANULARITY",
        "slotGranularity": 8
      },
      {
        "type": "OCH_SIGID",
        "ochSignalId": 1
      },
      {
        "type": "TUNNEL_ID",
        "tunnelId": 5
      },
      {
        "type": "OCH_SIGTYPE",
        "ochSignalType": 1
      },
      {
        "type": "ODU_SIGID",
        "oduSignalId": 1
        "tributaryPortNumber": 11
        "tributarySlotBitmap": bitmap
        "type": "ETH_TYPE",
        "tributarySlotLen": 1
      },
      {
        "type": "ODU_SIGTYPE",
        "oduSignalType": 4
      },
    ]
  }
}

Key and field description

The following table describes the type and the value format of the fields.

KEYDESCRIPTIONFORMAT
ETH_TYPE ethernet frame type int64
ETH_DST mac address string
ETH_SRC mac address string
IN_PORT match port int64
IN_PHY_PORT match port int64
METADATA metadata passed between tables Hex16
VLAN_VID vlanId uint16
VLAN_PCP Vlan priority int64
INNER_VLAN_VID vlanId uint16
INNER_VLAN_PCP Vlan priority int64
IP_DSCP IP DSCP (6 bits in ToS field) byte
IP_ECN IP ECN (2 bits in ToS field). byte
IP_PROTO Ip protocol uint16
IPV4_SRC source ip string
IPV4_DST destination ip string
TCP_SRC TCP source address uint16
TCP_DST TCP destination address uint16
UDP_SRC UDP source address uint16
UDP_DST UDP destination address uint16
SCTP_SRC SCTP source address uint16
SCTP_DST SCTP destination address uint16
ICMPV4_TYPE Internet Control Message Protocol for IPV4 type (RFC0792) uint16
ICMPV4_CODE Internet Control Message Protocol for IPV4 code (RFC0792) uint16
IPV6_SRC source ipv6 string
IPV6_SRC destination ipv6 string
IPV6_FLABEL IPv6 Flow Label (RFC 6437) Hex16
ICMPV6_TYPE Internet Control Message Protocol for IPV6 type (RFC2463) uint16
ICMPV6_CODE Internet Control Message Protocol for IPV6 code (RFC2463) uint16
IPV6_ND_TARGET IPv6 Neighbor discovery target address string
IPV6_ND_SLL IPv6 Neighbor discovery mac address string
IPV6_ND_TTL IPv6 Neighbor discovery ttl mac address string
MPLS_LABEL MPLS label int32
IPV6_EXTHDR IPv6 extension header pseudo-field int64
OCH_SIGID wavelength abstraction int64
GRID_TYPE Type of wavelength grid string
CHANNEL_SPACING Optical channel spacing int64
SPACING_MULIPLIER Optical channel spacing multiplier int64
OCH_SIGID Optical channel signal ID int64
TUNNEL_ID Tunnel ID int64
OCH_SIGID Optical channel signal type int64
ODU_SIGID ODU (Optical channel Data Unit) signal ID. int64
tributaryPortNumber OPU (Optical channel Payload Unit) port number. int64
tributarySlotBitmap OPU (Optical channel Payload Unit) slot length. int64
tributarySlotLen OPU (Optical channel Payload Unit) slot bitmap. array of bytes
ODU_SIGTYPE ODU (Optical channel Data Unit) signal type. int64

Flow rule instructions

JSON Format

During a flow POST request to the ONOS REST APIs the passed JSON data can contain different objects in the instructions array . This is an example of a JSON document with all the possible instructions with type and subtype combinations. A combination of one or more of these instructions will work in a POST request.

"treatment": {
 "instructions": [
  {
    "type": "OUTPUT",
    "port": "CONTROLLER"
  },
  {
    "type": "TABLE",
    "tableId": 1
  },
  {
    "type": "GROUP",
    "groupId": 1
  },
  {
    "type": "METER",
    "meterId": 1
  },
  {
    "type": "QUEUE",
    "queueId": 1,
    "port": 2
  },
  {
  	"type": "L0MODIFICATION",
  	"subtype": "LAMBDA",
  	"lambda": 1
  },
  {
  	"type":"L0MODIFICATION",
  	"subtype":"OCH",
  	"gridType": "DWDM",
  	"channelSpacing": 1,
  	"spacingMultiplier": 1,
  	"slotGranularity": 1
  },
  {
  	"type":"L1MODIFICATION",
  	"subtype":"ODU_SIGID",
  	"oduSignalId":{
  		"tributaryPortNumber": 1,
  		"tributarySlotLength": 1,
  		"tributarySlotBitmap": <bitmap>
  	}
  },
  {
  	"type":"L2MODIFICATION",
  	"subtype":"VLAN_PUSH"
  },
  {	
  	"type":"L2MODIFICATION",
  	"subtype":"VLAN_ID",
  	"vlanId":200
  },
  {
  	"type":"L2MODIFICATION",
  	"subtype":"VLAN_PCP",
  	"vlanPcp":0
  },
  {
  	"type":"L2MODIFICATION",
  	"subtype":"ETH_SRC",
  	"mac":"00:00:00:00:01"
  }
  {
  	"type":"L2MODIFICATION",
  	"subtype":"ETH_DST",
  	"mac":"00:00:00:00:01"
  },
  {
  	"type":"L2MODIFICATION",
  	"subtype":"MPLS_LABEL",
  	"label":1
  },
  {
  	"type":"L2MODIFICATION",
  	"subtype":"MPLS_PUSH",
  	"ethernetType":1
  },
  {
  	"type":"L2MODIFICATION",
  	"subtype":"TUNNEL_ID",
  	"tunnelId":1
  },
  {
  	"type":"L3MODIFICATION",
  	"subtype":"IPV4_SRC",
  	"ip":"1.1.1.1"
  },
  {
  	"type":"L3MODIFICATION",
  	"subtype":"IPV4_DST",
  	"ip":"1.1.1.1"
  },
  {
  	"type":"L3MODIFICATION",
  	"subtype":"IPV6_SRC",
  	"ip":"1111::2222"
  },
  {
  	"type":"L3MODIFICATION",
  	"subtype":"IPV6_DST",
  	"ip":"1111::2222"
  },
  {
  	"type":"L3MODIFICATION",
  	"subtype":"IPV6_FLABEL",
  	"flowLabel":1
  },
  {
  	"type":"L4MODIFICATION",
  	"subtype":"TCP_SRC",
  	"tcpPort":1
  },
  {
  	"type":"L4MODIFICATION",
  	"subtype":"UDP_SRC",
  	"udpPort":1
  }
 ]
}
  • No labels