Picos_ttp.json
- Tracy Yang (Unlicensed)
{
"NDM_metadata": {
"authority": "Pica8, Inc",
"OF_protocol_version": "1.3.4",
"type": "TTPv1",
"name": "PICOS_TTP",
"version": "2.0.0",
"doc": [
"A TTP supporting QinQ, mac-learning, l3, ecmp, acl and egress."
]
},
"features": [],
"table_map": {
"Ingress_Port_Flow_Table": 0,
"Ingress_Port_Group_Flow_Table": 5,
"Ingress_VFilter_Flow_Table": 10,
"Ingress_VLAN_Xlate_Flow_Table": 11,
"Termination_MAC_Flow_Table": 20,
"Unicast_Routing_Flow_Table": 30,
"Multicast_Routing_Flow_Table": 40,
"Bridging_Flow_Table": 50,
"ACL_Policy_Flow_Table": 60,
"Egress_Port_Flow_Table": 70,
"Egress_Port_Group_Flow_Table": 80,
"Egress_VLAN_Xlate_Flow_Table": 90,
"Egress_ACL_Flow_Table": 200
},
"identifiers": {
"Identifier list": [
{
"var": "<port_no>",
"doc": [
"ifNum, 32-bit value. A valid port number Picos support."
]
},
{
"var": "<reserved_port>",
"doc": [
"ifNum, 32-bit value. Openflow reserved ports: CONTROLLER, NORMAL, LOCAL, IN_PORT, FLOOD, ALL."
]
},
{
"var": "<metadata>",
"doc": [
"Metadata list:",
" - bit0: Reserved.",
" - bit1: Bridging_HIT (Marked when a packet hits Bridging Entry.)",
" - bit2: Unicast_Routing_HIT (Marked when a packet hits UC Routing Entry.)",
" - bit3: Multicast_Routing_HIT (Marked when a packet hits UC Host or MC Routing Entry.)",
" - bit16-22: Port Group[0-127] (A group that bundles multiple OpenFlow ports. It is used on VLAN Flow Tables as a match key. 7bits, modified in Ingress/Egress_Port_Group_Flow_Table. e.g. metadata=0x20000/0x7f0000 means port-group 2)",
" - others: Reserved."
]
},
{
"var": "<eth_dst>",
"doc": "Any valid ethernet destination address."
},
{
"var": "<eth_src>",
"doc": "Any valid ethernet source address."
},
{
"var": "<mac_uc>",
"doc": "Any valid unicast mac address."
},
{
"var": "<eth_type>",
"doc": [
"Any valid ethertype, which will be >1536 (0x0600),",
"except for 0x8870 (jumbo frame)"
]
},
{
"var": "<mpls_label>",
"doc": "All valid mpls label Picos support."
},
{
"var": "<mpls_tc>",
"range": "0..7",
"doc": "Mpls exp field, used as CoS."
},
{
"var": "<mpls_ttl>",
"doc": "Mpls ttl value."
},
{
"var": "<vlan_vid>",
"doc": [
"12-bit VLAN id value from header field which Picos support.",
"OpenFlow sets bit 12 to indicate presence of the field."
]
},
{
"var": "<vlan_pcp>",
"range": "0..7",
"doc": "VLAN header PCP field"
},
{
"var": "<inner_vlan_vid>",
"doc": [
"PICOS experimenter.",
"12-bit Inner-vlan id value from header field which Picos support.",
"OpenFlow sets bit 12 to indicate presence of the field."
]
},
{
"var": "<inner_vlan_pcp>",
"range": "0..7",
"doc": "Inner-vlan header PCP field, PICOS experimenter."
},
{
"var": "<ip_dscp>",
"range": "0..255",
"doc": "IP Header DSCP field."
},
{
"var": "<ip_proto>",
"doc": "All valid ip protocol Picos support."
},
{
"var": "<ipv4_src>",
"doc": "IPv4 Source Address - 32 bits represented as 4 decimal values - nnn.nnn.nnn.nnn"
},
{
"var": "<ipv4_dst>",
"doc": "IPv4 Destination Address - 32 bits represented as 4 decimal values - nnn.nnn.nnn.nnn"
},
{
"var": "<ipv4_uc>",
"doc": "IPv4 Unicast Address - 32 bits represented as 4 decimal values - nnn.nnn.nnn.nnn"
},
{
"var": "<ipv4_mc>",
"doc": "IPv4 Multicast Address - 32 bits represented as 4 decimal values - nnn.nnn.nnn.nnn"
},
{
"var": "<ipv6_src>",
"doc": "IPv6 Source Address - 128 bits represented as 8 groups of hex quartets - nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnnn"
},
{
"var": "<ipv6_dst>",
"doc": "IPv6 Destination Address - 128 bits represented as 8 groups of hex quartets - nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnnn"
},
{
"var": "<ipv6_uc>",
"doc": "IPv6 Unicast Address - 128 bits represented as 8 groups of hex quartets - nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnnn"
},
{
"var": "<ipv6_mc>",
"doc": "IPv6 Multicast Address - 128 bits represented as 8 groups of hex quartets - nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnnn"
},
{
"var": "<tp_src>",
"range": "1..65535",
"doc": "16-bit Transmition source port, tcp/udp/sctp"
},
{
"var": "<tp_dst>",
"range": "1..65535",
"doc": "16-bit Transmition destination port, tcp/udp/sctp"
},
{
"var": "<icmpv4_type>",
"doc": "All valid icmpv4_type"
},
{
"var": "<icmpv4_code>",
"doc": "All valid icmpv4_code"
},
{
"var": "<icmpv6_type>",
"doc": "All valid icmpv6_type"
},
{
"var": "<icmpv6_code>",
"doc": "All valid icmpv6_code"
},
{
"var": "<queue_id>",
"doc": "All valid queue_id"
},
{
"var": "<group_id>",
"doc": "All valid group_id"
},
{
"var": "<meter_id>",
"range": "1..65535",
"doc": "Meter id for a Policy ACL meter."
},
{
"var": "<rate>",
"doc": [
"By default this value is all rate Picos support.",
"User could redefine it such as 1..100000 kbps."
]
},
{
"var": "<burst>",
"doc": [
"By default this value is all burst Picos support.",
"User could redefine it such as 1..100000 kbits."
]
}
]
},
"meter_table": {
"meter_types": [
{
"name": "Drop Meter Type",
"bands": [
{
"type": "DROP",
"rate": "<rate>",
"burst": "<burst>"
}
]
},
{
"name": "DSCP Remark Meter Type",
"bands": [
{
"type": "DSCP_REMARK",
"rate": "<rate>",
"burst": "<burst>"
}
]
}
],
"built_in_meters": []
},
"flow_tables": [
{
"name": "Ingress_Port_Flow_Table",
"doc": [
"First table in pipeline, represent ingress pipeline start.",
"No flow is allowed to add in this table."
],
"flow_mod_types": [],
"built_in_flow_mods": [
{
"name": "Default Table Miss",
"priority": "0",
"doc": [
"This entry cannot be updated or deleted because it is configured by switch chip hardware.",
"This is Switch Default Entry for Table-Miss in Ingress_Port_Flow_Table."
],
"match_set": [],
"instruction_set": [
{
"instruction": "GOTO_TABLE",
"table": "Ingress_Port_Group_Flow_Table"
}
]
}
]
},
{
"name": "Ingress_Port_Group_Flow_Table",
"doc": [
"Match in port, table size is ports num + 1.",
"Input port ingress Grouping."
],
"flow_mod_types": [
{
"name": "Ingress Port Group",
"priority": "32768",
"doc": [
"Bundles multiple OpenFlow ports in a group."
],
"match_set": [
{
"field": "IN_PORT",
"value": "<port_no>",
"match_type": "exact"
}
],
"instruction_set": [
{
"instruction": "WRITE_METADATA",
"metadata": "<metadata>",
"doc": [
"bit16-22: Port Group [0-127]"
]
},
{
"instruction": "GOTO_TABLE",
"table": "Ingress_VFilter_Flow_Table"
}
]
}
],
"built_in_flow_mods": [
{
"name": "Default Table Miss",
"priority": "0",
"doc": [
"This entry cannot be updated or deleted because it is configured by switch chip hardware.",
"This is Switch Default Entry for Table-Miss in Ingress_Port_Group_Flow_Table."
],
"match_set": [],
"instruction_set": [
{
"instruction": "WRITE_METADATA",
"metadata": "<metadata>",
"doc": [
"metadata: port_group = 0"
]
},
{
"instruction": "GOTO_TABLE",
"table": "Ingress_VFilter_Flow_Table"
}
]
}
]
},
{
"name": "Ingress_VFilter_Flow_Table",
"doc": [
"QinQ vlan vfilter table for packets, table size is 1K.",
"Valid metadata should use port-group in this table, and is conflict with in_port."
],
"flow_mod_types": [
{
"name": "VFilter VLAN Conversion",
"priority": "0..65535",
"doc": [
"This flow entry is for converting incoming packet to QinQ packet."
],
"match_set": [
{
"field": "IN_PORT",
"value": "<port_no>",
"match_type": "all_or_exact"
},
{
"field": "METADATA",
"value": "<metadata>",
"match_type": "mask"
},
{
"field": "VLAN_VID",
"value": "<vlan_vid>",
"match_type": "mask"
},
{
"field": "VLAN_PCP",
"value": "<vlan_pcp>",
"match_type": "all_or_exact"
},
{
"field": "ETH_TYPE",
"value": "<eth_type>",
"match_type": "all_or_exact"
}
],
"instruction_set": [
{
"instruction": "APPLY_ACTIONS",
"actions": [
{
"zero_or_one": [
{
"action": "PUSH_VLAN"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "VLAN_VID",
"value": "<vlan_vid>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "VLAN_PCP",
"value": "<vlan_pcp>"
}
]
},
{
"zero_or_one": [
{
"action": "PUSH_VLAN"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "VLAN_VID",
"value": "<vlan_vid>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "VLAN_PCP",
"value": "<vlan_pcp>"
}
]
}
]
},
{
"instruction": "GOTO_TABLE",
"table": "Termination_MAC_Flow_Table"
}
]
}
],
"built_in_flow_mods": [
{
"name": "Default Table Miss",
"priority": "0",
"doc": [
"This entry cannot be updated or deleted because it is configured by switch chip hardware.",
"This is Switch Default Entry for Table-Miss in Ingress_VFilter_Flow_Table."
],
"match_set": [],
"instruction_set": [
{
"instruction": "GOTO_TABLE",
"table": "Ingress_VLAN_Xlate_Flow_Table"
}
]
}
]
},
{
"name": "Ingress_VLAN_Xlate_Flow_Table",
"doc": [
"QinQ ingress vlan xlate table for packets, table size is 4K."
],
"flow_mod_types": [
{
"name": "Tagged VLAN Conversion",
"priority": "32768",
"doc": [
"This flow entry is for converting incoming tagged packets to QinQ packets."
],
"match_set": [
{
"field": "METADATA",
"value": "<metadata>",
"match_type": "mask"
},
{
"field": "VLAN_VID",
"value": "<vlan_vid>",
"match_type": "exact"
}
],
"instruction_set": [
{
"instruction": "APPLY_ACTIONS",
"actions": [
{
"zero_or_one": [
{
"action": "PUSH_VLAN"
}
]
},
{
"action": "SET_FIELD",
"field": "VLAN_VID",
"value": "<vlan_vid>"
}
]
},
{
"instruction": "GOTO_TABLE",
"table": "Termination_MAC_Flow_Table"
}
]
}
],
"built_in_flow_mods": [
{
"name": "Default Table Miss",
"priority": "0",
"doc": [
"This entry cannot be updated or deleted because it is configured by switch chip hardware.",
"This is Switch Default Entry for Table-Miss in Ingress_VLAN_Xlate_Flow_Table."
],
"match_set": [],
"instruction_set": [
{
"instruction": "GOTO_TABLE",
"table": "Termination_MAC_Flow_Table"
}
]
}
]
},
{
"name": "Termination_MAC_Flow_Table",
"doc": [
"Determine whether to route a packet, table size is 512."
],
"flow_mod_types": [
{
"name": "L3 Unicast MAC",
"priority": "32768",
"doc": [
"System mac for L3 unicast routing."
],
"match_set": [
{
"field": "ETH_DST",
"value": "<mac_uc>",
"match_type": "exact"
},
{
"field": "VLAN_VID",
"value": "<vlan_vid>",
"match_type": "exact"
}
],
"instruction_set": [
{
"instruction": "GOTO_TABLE",
"table": "Unicast_Routing_Flow_Table"
}
]
}
],
"built_in_flow_mods": [
{
"name": "Default Table Miss",
"priority": "0",
"doc": [
"This entry cannot be updated or deleted because it is configured by switch chip hardware.",
"This is Switch Default Entry for Table-Miss in Termination_MAC_Flow_Table."
],
"match_set": [],
"instruction_set": [
{
"instruction": "GOTO_TABLE",
"table": "Bridging_Flow_Table"
}
]
}
]
},
{
"name": "Unicast_Routing_Flow_Table",
"doc": [
"Supports match Host and Route IP address."
],
"flow_mod_types": [
{
"name": "IPv4 Unicast Host",
"priority": "32768",
"doc": [
"Matches IPv4 unicast host address."
],
"match_set": [
{
"field": "ETH_TYPE",
"value": "0x0800",
"match_type": "exact"
},
{
"field": "IPV4_DST",
"value": "<ipv4_uc>",
"match_type": "exact"
}
],
"instruction_set": [
{
"zero_or_one": [
{
"instruction": "CLEAR_ACTIONS"
}
]
},
{
"zero_or_one": [
{
"instruction": "APPLY_ACTIONS",
"actions": [
{
"action": "OUTPUT",
"port": "CONTROLLER"
}
]
}
]
},
{
"zero_or_one": [
{
"instruction": "WRITE_ACTIONS",
"actions": [
{
"exactly_one": [
{
"action": "GROUP",
"group_id": "L3 Unicast"
},
{
"action": "GROUP",
"group_id": "L3 ECMP"
}
]
},
{
"action": "DEC_NW_TTL"
}
]
}
]
},
{
"instruction": "GOTO_TABLE",
"table": "ACL_Policy_Flow_Table"
}
]
},
{
"name": "IPv4 Unicast LPM",
"priority": "32768",
"doc": [
"Matches IPv4 unicast route address."
],
"match_set": [
{
"field": "ETH_TYPE",
"value": "0x0800",
"match_type": "exact"
},
{
"field": "IPV4_DST",
"value": "<ipv4_uc>",
"match_type": "prefix"
}
],
"instruction_set": [
{
"zero_or_one": [
{
"instruction": "CLEAR_ACTIONS"
}
]
},
{
"zero_or_one": [
{
"instruction": "APPLY_ACTIONS",
"actions": [
{
"action": "OUTPUT",
"port": "CONTROLLER"
}
]
}
]
},
{
"zero_or_one": [
{
"instruction": "WRITE_ACTIONS",
"actions": [
{
"exactly_one": [
{
"action": "GROUP",
"group_id": "L3 Unicast"
},
{
"action": "GROUP",
"group_id": "L3 ECMP"
}
]
},
{
"action": "DEC_NW_TTL"
}
]
}
]
},
{
"instruction": "GOTO_TABLE",
"table": "ACL_Policy_Flow_Table"
}
]
},
{
"name": "IPv6 Unicast Host",
"priority": "32768",
"doc": [
"Matches IPv6 unicast host address."
],
"match_set": [
{
"field": "ETH_TYPE",
"value": "0x86dd",
"match_type": "exact"
},
{
"field": "IPV6_DST",
"value": "<ipv6_uc>",
"match_type": "exact"
}
],
"instruction_set": [
{
"zero_or_one": [
{
"instruction": "CLEAR_ACTIONS"
}
]
},
{
"zero_or_one": [
{
"instruction": "APPLY_ACTIONS",
"actions": [
{
"action": "OUTPUT",
"port": "CONTROLLER"
}
]
}
]
},
{
"zero_or_one": [
{
"instruction": "WRITE_ACTIONS",
"actions": [
{
"exactly_one": [
{
"action": "GROUP",
"group_id": "L3 Unicast"
},
{
"action": "GROUP",
"group_id": "L3 ECMP"
}
]
},
{
"action": "DEC_NW_TTL"
}
]
}
]
},
{
"instruction": "GOTO_TABLE",
"table": "ACL_Policy_Flow_Table"
}
]
},
{
"name": "IPv6 Unicast LPM",
"priority": "32768",
"doc": [
"Matches IPv6 unicast route address."
],
"match_set": [
{
"field": "ETH_TYPE",
"value": "0x86dd",
"match_type": "exact"
},
{
"field": "IPV6_DST",
"value": "<ipv6_uc>",
"match_type": "prefix"
}
],
"instruction_set": [
{
"zero_or_one": [
{
"instruction": "CLEAR_ACTIONS"
}
]
},
{
"zero_or_one": [
{
"instruction": "APPLY_ACTIONS",
"actions": [
{
"action": "OUTPUT",
"port": "CONTROLLER"
}
]
}
]
},
{
"zero_or_one": [
{
"instruction": "WRITE_ACTIONS",
"actions": [
{
"exactly_one": [
{
"action": "GROUP",
"group_id": "L3 Unicast"
},
{
"action": "GROUP",
"group_id": "L3 ECMP"
}
]
},
{
"action": "DEC_NW_TTL"
}
]
}
]
},
{
"instruction": "GOTO_TABLE",
"table": "ACL_Policy_Flow_Table"
}
]
}
],
"built_in_flow_mods": [
{
"name": "Default",
"priority": "32768",
"doc": [
"Default pass through, Policy ACL forward or packet dropped."
],
"match_set": [],
"instruction_set": [
{
"instruction": "GOTO_TABLE",
"table": "ACL_Policy_Flow_Table"
}
]
}
]
},
{
"name": "Multicast_Routing_Flow_Table",
"doc": [
"Supports exact match on IP destination address",
"VLAN id values must be consistent"
],
"flow_mod_types": [
{
"name": "IPv4 Multicast",
"priority": "32768",
"doc": [
"IPv4 Multicast"
],
"match_set": [
{
"field": "ETH_TYPE",
"value": "0x0800",
"match_type": "exact"
},
{
"field": "VLAN_VID",
"value": "<vlan_vid>",
"match_type": "exact"
},
{
"field": "IPV4_SRC",
"value": "<ipv4_uc>",
"match_type": "all_or_exact"
},
{
"field": "IPV4_DST",
"value": "<ipv4_mc>",
"match_type": "exact",
"const_mask": "224.0.0.0",
"const_value": "224.0.0.0"
}
],
"instruction_set": [
{
"instruction": "WRITE_ACTIONS",
"actions": [
{
"action": "GROUP",
"group_id": "L3 Multicast"
},
{
"action": "DEC_NW_TTL"
}
]
},
{
"instruction": "GOTO_TABLE",
"table": "ACL_Policy_Flow_Table"
}
]
},
{
"name": "IPv6 Multicast",
"priority": "32768",
"doc": [
"IPv6 Multicast"
],
"match_set": [
{
"field": "ETH_TYPE",
"value": "0x86dd",
"match_type": "exact"
},
{
"field": "VLAN_VID",
"value": "<vlan_vid>",
"match_type": "exact"
},
{
"field": "IPV6_SRC",
"value": "<ipv6_uc>",
"match_type": "all_or_exact"
},
{
"field": "IPV6_DST",
"value": "<ipv6_mc>",
"match_type": "exact",
"const_mask": "ff00:0:0:0:0:0:0:0",
"const_value": "ff00:0:0:0:0:0:0:0"
}
],
"instruction_set": [
{
"instruction": "WRITE_ACTIONS",
"actions": [
{
"action": "GROUP",
"group_id": "L3 Multicast"
},
{
"action": "DEC_NW_TTL"
}
]
},
{
"instruction": "GOTO_TABLE",
"table": "ACL_Policy_Flow_Table"
}
]
}
],
"built_in_flow_mods": [
{
"name": "Default",
"priority": "32768",
"doc": [
"Default pass through, Policy ACL forward or packet dropped."
],
"match_set": [],
"instruction_set": [
{
"instruction": "GOTO_TABLE",
"table": "ACL_Policy_Flow_Table"
}
]
}
]
},
{
"name": "Bridging_Flow_Table",
"doc": [
"When Mac-Learning is enabled on the chip, the entries for unicast forwarding are automatically learned, updated(station-move) and deleted(idle-timeout).",
"To be installed/updated/deleted via FlowMod(ADD/MODIFY/MODIFY_STRICT/DELETE)."
],
"flow_mod_types": [
{
"name": "Known-MAC",
"priority": "32768",
"doc": "Type used to create an entry for a learned MAC.",
"match_set": [
{
"field": "ETH_DST",
"value": "<mac_uc>",
"match_type": "exact"
},
{
"field": "VLAN_VID",
"value": "<vlan_vid>",
"match_type": "exact"
}
],
"instruction_set": [
{
"instruction": "WRITE_ACTIONS",
"actions": [
{
"action": "OUTPUT",
"port": "<port_no>"
}
]
},
{
"instruction": "GOTO_TABLE",
"table": "ACL_Policy_Flow_Table"
}
]
}
],
"built_in_flow_mods": [
{
"name": "MAC Learning",
"priority": "32768",
"doc": [
"When Mac-Learning is enabled on the chip, the entries for unicast forwarding are automatically learned, updated(station-move) and deleted(idle-timeout)."
],
"match_set": [
{
"field": "ETH_DST",
"value": "<mac_uc>",
"match_type": "exact"
},
{
"field": "VLAN_VID",
"value": "<vlan_vid>",
"match_type": "exact"
}
],
"instruction_set": [
{
"instruction": "WRITE_ACTIONS",
"actions": [
{
"action": "OUTPUT",
"port": "<port_no>"
}
]
},
{
"instruction": "GOTO_TABLE",
"table": "ACL_Policy_Flow_Table"
}
]
},
{
"name": "Default Table Miss",
"priority": "0",
"doc": [
"This entry cannot be updated or deleted because it is configured by switch chip hardware.",
"This is Switch Default Entry for Table-Miss in Bridging_Flow_Table."
],
"match_set": [],
"instruction_set": [
{
"instruction": "GOTO_TABLE",
"table": "ACL_Policy_Flow_Table"
}
]
}
]
},
{
"name": "ACL_Policy_Flow_Table",
"doc": [
"Match on variety of fields.",
"Can meter, redirect, drop, set-queue, etc.",
"METADATA match field should not be used if flow action is TO_CPU."
],
"flow_mod_types": [
{
"name": "IPv4 Mode",
"priority": "0..65535",
"doc": [
"IPv4 mode."
],
"match_set": [
{
"field": "IN_PORT",
"value": "<port_no>",
"match_type": "all_or_exact"
},
{
"field": "METADATA",
"value": "<metadata>",
"match_type": "mask"
},
{
"field": "ETH_DST",
"value": "<eth_dst>",
"match_type": "mask"
},
{
"field": "ETH_SRC",
"value": "<eth_src>",
"match_type": "mask"
},
{
"field": "ETH_TYPE",
"value": "<eth_type>",
"match_type": "all_or_exact"
},
{
"field": "VLAN_VID",
"value": "<vlan_vid>",
"match_type": "all_or_exact"
},
{
"field": "VLAN_PCP",
"value": "<vlan_pcp>",
"match_type": "all_or_exact"
},
{
"field": "MPLS_LABEL",
"value": "<mpls_label>",
"match_type": "all_or_exact"
},
{
"field": "MPLS_TC",
"value": "<mpls_tc>",
"match_type": "all_or_exact"
},
{
"field": "MPLS_LABEL2",
"value": "<mpls_label>",
"match_type": "all_or_exact"
},
{
"field": "IP_DSCP",
"value": "<ip_dscp>",
"match_type": "all_or_exact"
},
{
"field": "IP_PROTO",
"value": "<ip_proto>",
"match_type": "all_or_exact"
},
{
"field": "IPV4_SRC",
"value": "<ipv4_src>",
"match_type": "mask"
},
{
"field": "IPV4_DST",
"value": "<ipv4_dst>",
"match_type": "mask"
},
{
"field": "TCP_SRC",
"value": "<tp_src>",
"match_type": "mask"
},
{
"field": "TCP_DST",
"value": "<tp_dst>",
"match_type": "mask"
},
{
"field": "UDP_SRC",
"value": "<tp_src>",
"match_type": "mask"
},
{
"field": "UDP_DST",
"value": "<tp_dst>",
"match_type": "mask"
},
{
"field": "SCTP_SRC",
"value": "<tp_src>",
"match_type": "mask"
},
{
"field": "SCTP_DST",
"value": "<tp_dst>",
"match_type": "mask"
},
{
"field": "ICMPV4_TYPE",
"value": "<icmpv4_type>",
"match_type": "all_or_exact"
},
{
"field": "ICMPV4_CODE",
"value": "<icmpv4_code>",
"match_type": "all_or_exact"
},
{
"field": "INNER_VLAN_VID",
"value": "<inner_vlan_vid>",
"match_type": "all_or_exact"
},
{
"field": "INNER_VLAN_PCP",
"value": "<inner_vlan_pcp>",
"match_type": "all_or_exact"
}
],
"instruction_set": [
{
"zero_or_one": [
{
"instruction": "METER",
"meter_id": "<meter_id>"
}
]
},
{
"zero_or_one": [
{
"instruction": "APPLY_ACTIONS",
"actions": [
{
"zero_or_one": [
{
"action": "POP_L2MPLS"
},
{
"action": "POP_MPLS"
}
]
},
{
"zero_or_one": [
{
"action": "PUSH_L2MPLS"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "MPLS_LABEL",
"value": "<mpls_label>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "MPLS_TC",
"value": "<mpls_tc>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_MPLS_TTL",
"value": "<mpls_ttl>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "ETH_SRC",
"value": "<eth_src>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "ETH_DST",
"value": "<eth_dst>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "VLAN_VID",
"value": "<vlan_vid>"
}
]
},
{
"zero_or_one": [
{
"action": "PUSH_MPLS"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "MPLS_LABEL",
"value": "<mpls_label>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "MPLS_TC",
"value": "<mpls_tc>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_MPLS_TTL",
"value": "<mpls_ttl>"
}
]
},
{
"zero_or_one": [
{
"action": "PUSH_MPLS"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "MPLS_LABEL",
"value": "<mpls_label>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "MPLS_TC",
"value": "<mpls_tc>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_MPLS_TTL",
"value": "<mpls_ttl>"
}
]
},
{
"zero_or_one": [
{
"action": "DEC_MPLS_TTL"
}
]
},
{
"zero_or_one": [
{
"action": "OUTPUT",
"port": "<port_no>"
}
]
}
]
}
]
},
{
"zero_or_one":[
{
"instruction": "CLEAR_ACTIONS"
}
]
},
{
"zero_or_one": [
{
"instruction": "WRITE_ACTIONS",
"actions": [
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "ETH_SRC",
"value": "<eth_src>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "ETH_DST",
"value": "<eth_dst>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "VLAN_VID",
"value": "<vlan_vid>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "IPV4_SRC",
"value": "<ipv4_src>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "IPV4_DST",
"value": "<ipv4_dst>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "IP_DSCP",
"value": "<ip_dscp>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "TCP_SRC",
"value": "<tp_src>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "TCP_DST",
"value": "<tp_dst>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "UDP_SRC",
"value": "<tp_src>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "UDP_DST",
"value": "<tp_dst>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_QUEUE",
"queue_id": "<queue_id>"
}
]
},
{
"zero_or_one": [
{
"action": "OUTPUT",
"port": "<port_no>"
},
{
"action": "OUTPUT",
"port": "<reserved_port>"
},
{
"action": "GROUP",
"group_id": "L2 Interface"
},
{
"action": "GROUP",
"group_id": "L2 Rewrite"
},
{
"action": "GROUP",
"group_id": "ACL Multi-Output"
},
{
"action": "GROUP",
"group_id": "L3 ECMP"
}
]
}
]
}
]
}
]
},
{
"name": "IPv6 Mode",
"priority": "0..65535",
"doc": [
"IPv6 mode."
],
"match_set": [
{
"field": "IN_PORT",
"value": "<port_no>",
"match_type": "all_or_exact"
},
{
"field": "METADATA",
"value": "<metadata>",
"match_type": "mask"
},
{
"field": "ETH_DST",
"value": "<eth_dst>",
"match_type": "mask"
},
{
"field": "ETH_SRC",
"value": "<eth_src>",
"match_type": "mask"
},
{
"field": "ETH_TYPE",
"value": "<eth_type>",
"match_type": "all_or_exact"
},
{
"field": "VLAN_VID",
"value": "<vlan_vid>",
"match_type": "all_or_exact"
},
{
"field": "VLAN_PCP",
"value": "<vlan_pcp>",
"match_type": "all_or_exact"
},
{
"field": "IP_DSCP",
"value": "<ip_dscp>",
"match_type": "all_or_exact"
},
{
"field": "IP_PROTO",
"value": "<ip_proto>",
"match_type": "all_or_exact"
},
{
"field": "IPV6_SRC",
"value": "<ipv6_src>",
"match_type": "mask"
},
{
"field": "IPV6_DST",
"value": "<ipv6_dst>",
"match_type": "mask"
},
{
"field": "TCP_SRC",
"value": "<tp_src>",
"match_type": "mask"
},
{
"field": "TCP_DST",
"value": "<tp_dst>",
"match_type": "mask"
},
{
"field": "UDP_SRC",
"value": "<tp_src>",
"match_type": "mask"
},
{
"field": "UDP_DST",
"value": "<tp_dst>",
"match_type": "mask"
},
{
"field": "SCTP_SRC",
"value": "<tp_src>",
"match_type": "mask"
},
{
"field": "SCTP_DST",
"value": "<tp_dst>",
"match_type": "mask"
},
{
"field": "ICMPV6_TYPE",
"value": "<icmpv6_type>",
"match_type": "all_or_exact"
},
{
"field": "ICMPV6_CODE",
"value": "<icmpv6_code>",
"match_type": "all_or_exact"
},
{
"field": "INNER_VLAN_VID",
"value": "<inner_vlan_vid>",
"match_type": "all_or_exact"
},
{
"field": "INNER_VLAN_PCP",
"value": "<inner_vlan_pcp>",
"match_type": "all_or_exact"
}
],
"instruction_set": [
{
"zero_or_one": [
{
"instruction": "METER",
"meter_id": "<meter_id>"
}
]
},
{
"zero_or_one":[
{
"instruction": "CLEAR_ACTIONS"
}
]
},
{
"zero_or_one": [
{
"instruction": "WRITE_ACTIONS",
"actions": [
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "ETH_SRC",
"value": "<eth_src>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "ETH_DST",
"value": "<eth_dst>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "VLAN_VID",
"value": "<vlan_vid>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "IP_DSCP",
"value": "<ip_dscp>"
}
]
},
{
"zero_or_one": [
{
"action": "SET_QUEUE",
"queue_id": "<queue_id>"
}
]
},
{
"zero_or_one": [
{
"action": "OUTPUT",
"port": "<port_no>"
},
{
"action": "OUTPUT",
"port": "<reserved_port>"
},
{
"action": "GROUP",
"group_id": "L2 Interface"
},
{
"action": "GROUP",
"group_id": "L2 Rewrite"
},
{
"action": "GROUP",
"group_id": "ACL Multi-Output"
},
{
"action": "GROUP",
"group_id": "L3 ECMP"
}
]
}
]
}
]
}
]
}
],
"built_in_flow_mods": [
{
"name": "Default Table Miss",
"priority": "0",
"doc": [
"Default pass through, Policy ACL must forward or packet dropped."
],
"match_set": [],
"instruction_set": []
}
]
},
{
"name": "Egress_Port_Flow_Table",
"doc": [
"First table in egress pipeline, represent egress pipeline start.",
"No flow is allowed to add in this table."
],
"flow_mod_types": [],
"built_in_flow_mods": [
{
"name": "Default Table Miss",
"priority": "0",
"doc": [
"This entry cannot be updated or deleted because it is configured by switch chip hardware.",
"This is Switch Default Entry for Table-Miss in Egress_Port_Flow_Table."
],
"match_set": [],
"instruction_set": [
{
"instruction": "GOTO_TABLE",
"table": "Egress_Port_Group_Flow_Table"
}
]
}
]
},
{
"name": "Egress_Port_Group_Flow_Table",
"doc": [
"Match output port, table size is ports num + 1.",
"Output port egress Grouping."
],
"flow_mod_types": [
{
"name": "Egress Port Group",
"priority": "32768",
"doc": [
"Bundles multiple OpenFlow ports in a group."
],
"match_set": [
{
"field": "OUTPUT_PORT",
"value": "<port_no>",
"match_type": "exact"
}
],
"instruction_set": [
{
"instruction": "WRITE_METADATA",
"metadata": "<metadata>",
"doc": [
"bit16-22: Port Group [0-127]"
]
},
{
"instruction": "GOTO_TABLE",
"table": "Egress_VLAN_Xlate_Flow_Table"
}
]
}
],
"built_in_flow_mods": [
{
"name": "Default Table Miss",
"priority": "0",
"doc": [
"This entry cannot be updated or deleted because it is configured by switch chip hardware.",
"This is Switch Default Entry for Table-Miss in Egress_Port_Group_Flow_Table."
],
"match_set": [],
"instruction_set": [
{
"instruction": "WRITE_METADATA",
"metadata": "<metadata>",
"doc": [
"metadata: port_group = 0"
]
},
{
"instruction": "GOTO_TABLE",
"table": "Egress_VLAN_Xlate_Flow_Table"
}
]
}
]
},
{
"name": "Egress_VLAN_Xlate_Flow_Table",
"doc": [
"QinQ egress vlan xlate table for packets, table size is 4K."
],
"flow_mod_types": [
{
"name": "Egress VLAN Conversion",
"priority": "32768",
"doc": [
"This entry is for converting outgoing Tagged packets from QinQ to Single Tagged or untagged."
],
"match_set": [
{
"field": "METADATA",
"value": "<metadata>",
"match_type": "mask"
},
{
"field": "VLAN_VID",
"value": "<vlan_vid>",
"match_type": "exact"
},
{
"field": "INNER_VLAN_VID",
"value": "<inner_vlan_vid>",
"match_type": "exact"
}
],
"instruction_set": [
{
"instruction": "APPLY_ACTIONS",
"actions": [
{
"zero_or_one":[
{
"action": "POP_VLAN"
}
]
},
{
"zero_or_one":[
{
"action": "POP_VLAN"
}
]
},
{
"zero_or_one":[
{
"action": "SET_FIELD",
"field": "VLAN_VID",
"value": "<vlan_vid>"
}
]
}
]
},
{
"instruction": "GOTO_TABLE",
"table": "Egress_ACL_Flow_Table"
}
]
}
],
"built_in_flow_mods": [
{
"name": "Default Table Miss",
"priority": "0",
"doc": [
"This entry cannot be updated or deleted because it is configured by switch chip hardware.",
"This is Switch Default Entry for Table-Miss in Egress_VLAN_Xlate_Flow_Table."
],
"match_set": [],
"instruction_set": [
{
"instruction": "GOTO_TABLE",
"table": "Egress_ACL_Flow_Table"
}
]
}
]
},
{
"name": "Egress_ACL_Flow_Table",
"doc": [
"Egress TCAM match on variety of fields.",
"Can drop, normal etc."
],
"flow_mod_types": [
{
"name": "IPv4 Mode",
"priority": "0..65535",
"doc": [
"IPv4 mode."
],
"match_set": [
{
"field": "IN_PORT",
"value": "<port_no>",
"match_type": "all_or_exact"
},
{
"field": "OUTPUT_PORT",
"value": "<port_no>",
"match_type": "all_or_exact"
},
{
"field": "ETH_DST",
"value": "<eth_dst>",
"match_type": "mask"
},
{
"field": "ETH_SRC",
"value": "<eth_src>",
"match_type": "mask"
},
{
"field": "ETH_TYPE",
"value": "<eth_type>",
"match_type": "all_or_exact"
},
{
"field": "VLAN_VID",
"value": "<vlan_vid>",
"match_type": "all_or_exact"
},
{
"field": "VLAN_PCP",
"value": "<vlan_pcp>",
"match_type": "all_or_exact"
},
{
"field": "IP_DSCP",
"value": "<ip_dscp>",
"match_type": "all_or_exact"
},
{
"field": "IP_PROTO",
"value": "<ip_proto>",
"match_type": "all_or_exact"
},
{
"field": "IPV4_SRC",
"value": "<ipv4_src>",
"match_type": "mask"
},
{
"field": "IPV4_DST",
"value": "<ipv4_dst>",
"match_type": "mask"
},
{
"field": "TCP_SRC",
"value": "<tp_src>",
"match_type": "mask"
},
{
"field": "TCP_DST",
"value": "<tp_dst>",
"match_type": "mask"
},
{
"field": "UDP_SRC",
"value": "<tp_src>",
"match_type": "mask"
},
{
"field": "UDP_DST",
"value": "<tp_dst>",
"match_type": "mask"
},
{
"field": "SCTP_SRC",
"value": "<tp_src>",
"match_type": "mask"
},
{
"field": "SCTP_DST",
"value": "<tp_dst>",
"match_type": "mask"
}
],
"instruction_set": [
{
"zero_or_one":[
{
"instruction": "CLEAR_ACTIONS"
}
]
},
{
"zero_or_one":[
{
"instruction": "WRITE_ACTIONS",
"actions": [
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "IP_DSCP",
"value": "<ip_dscp>"
}
]
},
{
"zero_or_one": [
{
"action": "OUTPUT",
"port": "NORMAL"
}
]
}
]
}
]
}
]
},
{
"name": "IPv6 Mode",
"priority": "0..65535",
"doc": [
"IPv6 mode."
],
"match_set": [
{
"field": "IN_PORT",
"value": "<port_no>",
"match_type": "all_or_exact"
},
{
"field": "OUTPUT_PORT",
"value": "<port_no>",
"match_type": "all_or_exact"
},
{
"field": "ETH_DST",
"value": "<eth_dst>",
"match_type": "mask"
},
{
"field": "ETH_SRC",
"value": "<eth_src>",
"match_type": "mask"
},
{
"field": "ETH_TYPE",
"value": "<eth_type>",
"match_type": "all_or_exact"
},
{
"field": "VLAN_VID",
"value": "<vlan_vid>",
"match_type": "all_or_exact"
},
{
"field": "VLAN_PCP",
"value": "<vlan_pcp>",
"match_type": "all_or_exact"
},
{
"field": "IP_DSCP",
"value": "<ip_dscp>",
"match_type": "all_or_exact"
},
{
"field": "IP_PROTO",
"value": "<ip_proto>",
"match_type": "all_or_exact"
},
{
"field": "IPV6_SRC",
"value": "<ipv6_src>",
"match_type": "mask"
},
{
"field": "IPV6_DST",
"value": "<ipv6_dst>",
"match_type": "mask"
},
{
"field": "TCP_SRC",
"value": "<tp_src>",
"match_type": "mask"
},
{
"field": "TCP_DST",
"value": "<tp_dst>",
"match_type": "mask"
},
{
"field": "UDP_SRC",
"value": "<tp_src>",
"match_type": "mask"
},
{
"field": "UDP_DST",
"value": "<tp_dst>",
"match_type": "mask"
},
{
"field": "SCTP_SRC",
"value": "<tp_src>",
"match_type": "mask"
},
{
"field": "SCTP_DST",
"value": "<tp_dst>",
"match_type": "mask"
}
],
"instruction_set": [
{
"zero_or_one":[
{
"instruction": "CLEAR_ACTIONS"
}
]
},
{
"zero_or_one":[
{
"instruction": "WRITE_ACTIONS",
"actions": [
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "IP_DSCP",
"value": "<ip_dscp>"
}
]
},
{
"zero_or_one": [
{
"action": "OUTPUT",
"port": "NORMAL"
}
]
}
]
}
]
}
]
}
],
"built_in_flow_mods": [
{
"name": "Default",
"priority": "0",
"doc": [
"Default pass through, Egress ACL must forward or packet dropped."
],
"match_set": [],
"instruction_set": []
}
]
}
],
"group_entry_types": [
{
"name": "L3 Fast Failover",
"doc": [
"Working (1) or backup (0) path bucket.",
"Both buckets for Routing",
"Watch OAM Protection Liveness Logical Port",
"Naming Convention: Type [31:28]:13, Index [27:0]:0xnnnnnn"
],
"group_type": "FAST_FAILOVER",
"bucket_types": [
{
"name": "Working (1)",
"action_set": [
{
"action": "GROUP",
"group_id": "L3 Unicast"
}
],
"watch": "<port_no>"
},
{
"name": "Protection (0)",
"action_set": [
{
"action": "GROUP",
"group_id": "L3 Unicast"
}
],
"watch": "<port_no>"
}
]
},
{
"name": "L3 ECMP",
"doc": [
"Used to specify IP multipath.",
"Naming Convention : Type [31:28]:7, Id [27:0]:0xnnnnnn"
],
"group_type": "SELECT",
"bucket_types": [
{
"name": "Multipath Destination",
"action_set": [
{
"at_least_one": [
{
"action": "GROUP",
"group_id": "L3 Unicast"
},
{
"action": "GROUP",
"group_id": "L3 Fast Failover"
}
]
}
]
}
]
},
{
"name": "ACL Multi-Output",
"doc": [
"Support Multi-Output by ACL Write-Action(Group(ALL))",
"Set-field actions must be consistent",
"Used by ACL only."
],
"group_type": "ALL",
"bucket_types": [
{
"name": "Multi-Output",
"action_set": [
{
"at_least_one": [
{
"action": "GROUP",
"group_id": "L2 Rewrite"
},
{
"action": "GROUP",
"group_id": "L2 Interface"
}
]
}
]
}
]
},
{
"name": "L3 Multicast",
"doc": [
"Used for specify IP Replication.",
"VLAN id values must be consistent",
"Naming Convention : Type [31:28]:6, VLAN Id [27:16]:0xnnn, Id [15:0]:0xnnnn",
"Used by Multicast Routing only."
],
"group_type": "ALL",
"bucket_types": [
{
"name": "Replica",
"action_set": [
{
"at_least_one": [
{
"action": "GROUP",
"group_id": "L3 Multicast Interface"
},
{
"action": "GROUP",
"group_id": "L2 Interface"
}
]
}
]
}
]
},
{
"name": "L3 Multicast Interface",
"doc": [
"Used for L3 multicast.",
"ALLOW_IN_PORT=1 by default.",
"VLAN Id must be consistent with interface group.",
"Naming Convention : Type [31:28]:5, Id [27:0]:0xnnnnnn"
],
"group_type": "INDIRECT",
"bucket_types": [
{
"name": "RewriteEthernetHeader",
"action_set": [
{
"action": "SET_FIELD",
"field": "ETH_SRC",
"value": "<eth_src>"
},
{
"action": "SET_FIELD",
"field": "VLAN_VID",
"value": "<vlan_vid>"
},
{
"action": "GROUP",
"group_id": "L2 Interface"
}
]
}
]
},
{
"name": "L3 Unicast",
"doc": [
"Used for Ethernet next hop configuration.",
"ALLOW_IN_PORT=1 by default for this group.",
"Naming Convention : Type [31:28]:2, Id [27:0]:0xnnnnnn"
],
"group_type": "INDIRECT",
"bucket_types": [
{
"name": "RewriteEthernetHeader",
"action_set": [
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "ETH_SRC"
}
]
},
{
"action": "SET_FIELD",
"field": "ETH_DST"
},
{
"action": "SET_FIELD",
"field": "VLAN_VID"
},
{
"action": "GROUP",
"group_id": "L2 Interface"
}
]
}
]
},
{
"name": "L2 Rewrite",
"doc": [
"Used to modify Ethernet header fields for bridged packets.",
"Naming Convention : Type [31:28]:1, Id [27:0]:0xnnnnnn, :"
],
"group_type": "INDIRECT",
"bucket_types": [
{
"name": "RewriteEthernetHeader",
"action_set": [
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "ETH_SRC"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "ETH_DST"
}
]
},
{
"zero_or_one": [
{
"action": "SET_FIELD",
"field": "VLAN_VID"
}
]
},
{
"action": "GROUP",
"group_id": "L2 Interface"
}
]
}
]
},
{
"name": "L2 Interface",
"doc": [
"Port VLAN filtering enabled, this VLAN allowed.",
"Implementations can use to configure egress port VLAN.",
"Naming Convention : Type [31:28]:0, Vlan Id [27:16]:0xnnn, Port [15:0]:0xnnnn",
"NOTICE: POP_VLAN and set DSCP action do not support in L3 table."
],
"group_type": "INDIRECT",
"bucket_types": [
{
"name": "VlanTagging",
"action_set": [
{
"action": "OUTPUT",
"port": "<port_no>"
}
]
}
]
}
]
}
Copyright © 2024 Pica8 Inc. All Rights Reserved.