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.
Loading
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
}
]
}