Nicira Extension Structures¶
Nicira Extension Actions Structures¶
The followings shows the supported NXAction classes in OF1.3, but also available in OF1.2+.
-
class
ryu.ofproto.ofproto_v1_3_parser.NXActionRegMove(src_field, dst_field, n_bits, src_ofs=0, dst_ofs=0, type_=None, len_=None, experimenter=None, subtype=None)¶
-
class
ryu.ofproto.ofproto_v1_3_parser.NXActionLearn(table_id, specs, idle_timeout=0, hard_timeout=0, priority=32768, cookie=0, flags=0, fin_idle_timeout=0, fin_hard_timeout=0, type_=None, len_=None, experimenter=None, subtype=None)¶
-
class
ryu.ofproto.ofproto_v1_3_parser.NXActionConjunction(clause, n_clauses, id_, type_=None, len_=None, experimenter=None, subtype=None)¶
-
class
ryu.ofproto.ofproto_v1_3_parser.NXActionResubmitTable(in_port=65528, table_id=255, type_=None, len_=None, experimenter=None, subtype=None)¶
-
class
ryu.ofproto.ofproto_v1_3_parser.NXActionCT(flags, zone_src, zone_start, zone_end, recirc_table, alg, actions, type_=None, len_=None, experimenter=None, subtype=None)¶
-
class
ryu.ofproto.ofproto_v1_3_parser.NXFlowSpecMatch(src, dst, n_bits)¶
-
class
ryu.ofproto.ofproto_v1_3_parser.NXFlowSpecLoad(src, dst, n_bits)¶
-
class
ryu.ofproto.ofproto_v1_3_parser.NXFlowSpecOutput(src, n_bits, dst='')¶
Nicira Extended Match Structures¶
The API of this class is the same as OFPMatch.
You can define the flow match by the keyword arguments. The following arguments are available.
| Argument | Value | Description |
|---|---|---|
| eth_dst_nxm | MAC address | Ethernet destination address. |
| eth_src_nxm | MAC address | Ethernet source address. |
| eth_type_nxm | Integer 16bit | Ethernet type. Needed to support Nicira extensions that require the eth_type to be set. (i.e. tcp_flags_nxm) |
| ip_proto_nxm | Integer 8bit | IP protocol. Needed to support Nicira extensions that require the ip_proto to be set. (i.e. tcp_flags_nxm) |
| tunnel_id_nxm | Integer 64bit | Tunnel identifier. |
| tun_ipv4_src | IPv4 address | Tunnel IPv4 source address. |
| tun_ipv4_dst | IPv4 address | Tunnel IPv4 destination address. |
| pkt_mark | Integer 32bit | Packet metadata mark. |
| tcp_flags_nxm | Integer 16bit | TCP Flags. Requires setting fields: eth_type_nxm = [0x0800 (IP)|0x86dd (IPv6)] and ip_proto_nxm = 6 (TCP) |
| conj_id | Integer 32bit | Conjunction ID used only with the conjunction action |
| ct_state | Integer 32bit | Conntrack state. |
| ct_zone | Integer 16bit | Conntrack zone. |
| ct_mark | Integer 32bit | Conntrack mark. |
| ct_label | Integer 128bit | Conntrack label. |
| tun_ipv6_src | IPv6 address | Tunnel IPv6 source address. |
| tun_ipv6_dst | IPv6 address | Tunnel IPv6 destination address. |
| _dp_hash | Integer 32bit | Flow hash computed in Datapath. |
| reg<idx> | Integer 32bit | Packet register. <idx> is register number 0-7. |
Note
Setting the TCP flags via the nicira extensions. This is required when using OVS version < 2.4. When using the nxm fields, you need to use any nxm prereq fields as well or you will receive a OFPBMC_BAD_PREREQ error
Example:
# WILL NOT work
flag = tcp.TCP_ACK
match = parser.OFPMatch(
tcp_flags_nxm=(flag, flag),
ip_proto=inet.IPPROTO_TCP,
eth_type=eth_type)
# Works
flag = tcp.TCP_ACK
match = parser.OFPMatch(
tcp_flags_nxm=(flag, flag),
ip_proto_nxm=inet.IPPROTO_TCP,
eth_type_nxm=eth_type)