os_ken.ofproto.ofproto_v1_0_parser.NXActionSetQueue(queue_id, type_=None, len_=None, vendor=None, subtype=None)¶Set queue action
This action sets the queue that should be used to queue when packets are output.
And equivalent to the followings action of ovs-ofctl command.
| set_queue:queue |
| Attribute | Description |
|---|---|
| queue_id | Queue ID for the packets |
Note
This actions is supported by
OFPActionSetQueue
in OpenFlow1.2 or later.
Example:
actions += [parser.NXActionSetQueue(queue_id=10)]
os_ken.ofproto.ofproto_v1_0_parser.NXActionDecTtl(type_=None, len_=None, vendor=None, subtype=None)¶Decrement IP TTL action
This action decrements TTL of IPv4 packet or hop limit of IPv6 packet.
And equivalent to the followings action of ovs-ofctl command.
| dec_ttl |
Note
This actions is supported by
OFPActionDecNwTtl
in OpenFlow1.2 or later.
Example:
actions += [parser.NXActionDecTtl()]
os_ken.ofproto.ofproto_v1_0_parser.NXActionPushMpls(ethertype, type_=None, len_=None, vendor=None, subtype=None)¶Push MPLS action
This action pushes a new MPLS header to the packet.
And equivalent to the followings action of ovs-ofctl command.
| push_mpls:ethertype |
| Attribute | Description |
|---|---|
| ethertype | Ether type(The value must be either 0x8847 or 0x8848) |
Note
This actions is supported by
OFPActionPushMpls
in OpenFlow1.2 or later.
Example:
match = parser.OFPMatch(dl_type=0x0800)
actions += [parser.NXActionPushMpls(ethertype=0x8847)]
os_ken.ofproto.ofproto_v1_0_parser.NXActionPopMpls(ethertype, type_=None, len_=None, vendor=None, subtype=None)¶Pop MPLS action
This action pops the MPLS header from the packet.
And equivalent to the followings action of ovs-ofctl command.
| pop_mpls:ethertype |
| Attribute | Description |
|---|---|
| ethertype | Ether type |
Note
This actions is supported by
OFPActionPopMpls
in OpenFlow1.2 or later.
Example:
match = parser.OFPMatch(dl_type=0x8847)
actions += [parser.NXActionPushMpls(ethertype=0x0800)]
os_ken.ofproto.ofproto_v1_0_parser.NXActionSetMplsTtl(ttl, type_=None, len_=None, vendor=None, subtype=None)¶Set MPLS TTL action
This action sets the MPLS TTL.
And equivalent to the followings action of ovs-ofctl command.
| set_mpls_ttl:ttl |
| Attribute | Description |
|---|---|
| ttl | MPLS TTL |
Note
This actions is supported by
OFPActionSetMplsTtl
in OpenFlow1.2 or later.
Example:
actions += [parser.NXActionSetMplsTil(ttl=128)]
os_ken.ofproto.ofproto_v1_0_parser.NXActionDecMplsTtl(type_=None, len_=None, vendor=None, subtype=None)¶Decrement MPLS TTL action
This action decrements the MPLS TTL.
And equivalent to the followings action of ovs-ofctl command.
| dec_mpls_ttl |
Note
This actions is supported by
OFPActionDecMplsTtl
in OpenFlow1.2 or later.
Example:
actions += [parser.NXActionDecMplsTil()]
os_ken.ofproto.ofproto_v1_0_parser.NXActionSetMplsLabel(label, type_=None, len_=None, vendor=None, subtype=None)¶Set MPLS Lavel action
This action sets the MPLS Label.
And equivalent to the followings action of ovs-ofctl command.
| set_mpls_label:label |
| Attribute | Description |
|---|---|
| label | MPLS Label |
Note
This actions is supported by
OFPActionSetField(mpls_label=label)
in OpenFlow1.2 or later.
Example:
actions += [parser.NXActionSetMplsLabel(label=0x10)]
os_ken.ofproto.ofproto_v1_0_parser.NXActionSetMplsTc(tc, type_=None, len_=None, vendor=None, subtype=None)¶Set MPLS Tc action
This action sets the MPLS Tc.
And equivalent to the followings action of ovs-ofctl command.
| set_mpls_tc:tc |
| Attribute | Description |
|---|---|
| tc | MPLS Tc |
Note
This actions is supported by
OFPActionSetField(mpls_label=tc)
in OpenFlow1.2 or later.
Example:
actions += [parser.NXActionSetMplsLabel(tc=0x10)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionPopQueue(type_=None, len_=None, experimenter=None, subtype=None)¶Pop queue action
This action restors the queue to the value it was before any set_queue actions were applied.
And equivalent to the followings action of ovs-ofctl command.
| pop_queue |
Example:
actions += [parser.NXActionPopQueue()]
os_ken.ofproto.ofproto_v1_3_parser.NXActionRegLoad(ofs_nbits, dst, value, type_=None, len_=None, experimenter=None, subtype=None)¶Load literal value action
This action loads a literal value into a field or part of a field.
And equivalent to the followings action of ovs-ofctl command.
| load:value->dst[start..end] |
| Attribute | Description |
|---|---|
| ofs_nbits | Start and End for the OXM/NXM field.
Setting method refer to the nicira_ext.ofs_nbits |
| dst | OXM/NXM header for destination field |
| value | OXM/NXM value to be loaded |
Example:
actions += [parser.NXActionRegLoad(
ofs_nbits=nicira_ext.ofs_nbits(4, 31),
dst="eth_dst",
value=0x112233)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionRegLoad2(dst, value, mask=None, type_=None, len_=None, experimenter=None, subtype=None)¶Load literal value action
This action loads a literal value into a field or part of a field.
And equivalent to the followings action of ovs-ofctl command.
| set_field:value[/mask]->dst |
| Attribute | Description |
|---|---|
| value | OXM/NXM value to be loaded |
| mask | Mask for destination field |
| dst | OXM/NXM header for destination field |
Example:
actions += [parser.NXActionRegLoad2(dst="tun_ipv4_src",
value="192.168.10.0",
mask="255.255.255.0")]
os_ken.ofproto.ofproto_v1_3_parser.NXActionNote(note, type_=None, len_=None, experimenter=None, subtype=None)¶Note action
This action does nothing at all.
And equivalent to the followings action of ovs-ofctl command.
| note:[hh].. |
| Attribute | Description |
|---|---|
| note | A list of integer type values |
Example:
actions += [parser.NXActionNote(note=[0xaa,0xbb,0xcc,0xdd])]
os_ken.ofproto.ofproto_v1_3_parser.NXActionSetTunnel(tun_id, type_=None, len_=None, experimenter=None, subtype=None)¶Set Tunnel action
This action sets the identifier (such as GRE) to the specified id.
And equivalent to the followings action of ovs-ofctl command.
Note
This actions is supported by
OFPActionSetField
in OpenFlow1.2 or later.
| set_tunnel:id |
| Attribute | Description |
|---|---|
| tun_id | Tunnel ID(32bits) |
Example:
actions += [parser.NXActionSetTunnel(tun_id=0xa)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionSetTunnel64(tun_id, type_=None, len_=None, experimenter=None, subtype=None)¶Set Tunnel action
This action outputs to a port that encapsulates the packet in a tunnel.
And equivalent to the followings action of ovs-ofctl command.
Note
This actions is supported by
OFPActionSetField
in OpenFlow1.2 or later.
| set_tunnel64:id |
| Attribute | Description |
|---|---|
| tun_id | Tunnel ID(64bits) |
Example:
actions += [parser.NXActionSetTunnel64(tun_id=0xa)]
os_ken.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)¶Move register action
This action copies the src to dst.
And equivalent to the followings action of ovs-ofctl command.
| move:src[start..end]->dst[start..end ] |
| Attribute | Description |
|---|---|
| src_field | OXM/NXM header for source field |
| dst_field | OXM/NXM header for destination field |
| n_bits | Number of bits |
| src_ofs | Starting bit offset in source |
| dst_ofs | Starting bit offset in destination |
Caution
Example:
actions += [parser.NXActionRegMove(src_field="reg0",
dst_field="reg1",
n_bits=5,
src_ofs=0
dst_ofs=10)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionResubmit(in_port=65528, type_=None, len_=None, experimenter=None, subtype=None)¶Resubmit action
This action searches one of the switch's flow tables.
And equivalent to the followings action of ovs-ofctl command.
| resubmit:port |
| Attribute | Description |
|---|---|
| in_port | New in_port for checking flow table |
Example:
actions += [parser.NXActionResubmit(in_port=8080)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionResubmitTable(in_port=65528, table_id=255, type_=None, len_=None, experimenter=None, subtype=None)¶Resubmit action
This action searches one of the switch's flow tables.
And equivalent to the followings action of ovs-ofctl command.
| resubmit([port],[table]) |
| Attribute | Description |
|---|---|
| in_port | New in_port for checking flow table |
| table_id | Checking flow tables |
Example:
actions += [parser.NXActionResubmit(in_port=8080,
table_id=10)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionOutputReg(ofs_nbits, src, max_len, type_=None, len_=None, experimenter=None, subtype=None)¶Add output action
This action outputs the packet to the OpenFlow port number read from src.
And equivalent to the followings action of ovs-ofctl command.
| output:src[start...end] |
| Attribute | Description |
|---|---|
| ofs_nbits | Start and End for the OXM/NXM field.
Setting method refer to the nicira_ext.ofs_nbits |
| src | OXM/NXM header for source field |
| max_len | Max length to send to controller |
Example:
actions += [parser.NXActionOutputReg(
ofs_nbits=nicira_ext.ofs_nbits(4, 31),
src="reg0",
max_len=1024)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionOutputReg2(ofs_nbits, src, max_len, type_=None, len_=None, experimenter=None, subtype=None)¶Add output action
This action outputs the packet to the OpenFlow port number read from src.
And equivalent to the followings action of ovs-ofctl command.
| output:src[start...end] |
Note
Like the NXActionOutputReg but organized so
that there is room for a 64-bit experimenter OXM as 'src'.
| Attribute | Description |
|---|---|
| ofs_nbits | Start and End for the OXM/NXM field.
Setting method refer to the nicira_ext.ofs_nbits |
| src | OXM/NXM header for source field |
| max_len | Max length to send to controller |
Example:
actions += [parser.NXActionOutputReg2(
ofs_nbits=nicira_ext.ofs_nbits(4, 31),
src="reg0",
max_len=1024)]
os_ken.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)¶Adds or modifies flow action
This action adds or modifies a flow in OpenFlow table.
And equivalent to the followings action of ovs-ofctl command.
| learn(argument[,argument]...) |
| Attribute | Description |
|---|---|
| table_id | The table in which the new flow should be inserted |
| specs | Adds a match criterion to the new flow Please use the
field=value
field[start..end] =src[start..end]
field[start..end]
Please use the
load:value->dst[start..end]
load:src[start..end] ->dst[start..end]
Please use the
output:field[start..end]
|
| idle_timeout | Idle time before discarding(seconds) |
| hard_timeout | Max time before discarding(seconds) |
| priority | Priority level of flow entry |
| cookie | Cookie for new flow |
| flags | send_flow_rem |
| fin_idle_timeout | Idle timeout after FIN(seconds) |
| fin_hard_timeout | Hard timeout after FIN(seconds) |
Caution
The arguments specify the flow's match fields, actions, and other properties, as follows. At least one match criterion and one action argument should ordinarily be specified.
Example:
actions += [
parser.NXActionLearn(able_id=10,
specs=[parser.NXFlowSpecMatch(src=0x800,
dst=('eth_type_nxm', 0),
n_bits=16),
parser.NXFlowSpecMatch(src=('reg1', 1),
dst=('reg2', 3),
n_bits=5),
parser.NXFlowSpecMatch(src=('reg3', 1),
dst=('reg3', 1),
n_bits=5),
parser.NXFlowSpecLoad(src=0,
dst=('reg4', 3),
n_bits=5),
parser.NXFlowSpecLoad(src=('reg5', 1),
dst=('reg6', 3),
n_bits=5),
parser.NXFlowSpecOutput(src=('reg7', 1),
dst="",
n_bits=5)],
idle_timeout=180,
hard_timeout=300,
priority=1,
cookie=0x64,
flags=ofproto.OFPFF_SEND_FLOW_REM,
fin_idle_timeout=180,
fin_hard_timeout=300)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionExit(type_=None, len_=None, experimenter=None, subtype=None)¶Halt action
This action causes OpenvSwitch to immediately halt execution of further actions.
And equivalent to the followings action of ovs-ofctl command.
| exit |
Example:
actions += [parser.NXActionExit()]
os_ken.ofproto.ofproto_v1_3_parser.NXActionController(max_len, controller_id, reason, type_=None, len_=None, experimenter=None, subtype=None)¶Send packet in message action
This action sends the packet to the OpenFlow controller as a packet in message.
And equivalent to the followings action of ovs-ofctl command.
| controller(key=value...) |
| Attribute | Description |
|---|---|
| max_len | Max length to send to controller |
| controller_id | Controller ID to send packet-in |
| reason | Reason for sending the message |
Example:
actions += [
parser.NXActionController(max_len=1024,
controller_id=1,
reason=ofproto.OFPR_INVALID_TTL)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionController2(type_=None, len_=None, vendor=None, subtype=None, **kwargs)¶Send packet in message action
This action sends the packet to the OpenFlow controller as a packet in message.
And equivalent to the followings action of ovs-ofctl command.
| controller(key=value...) |
| Attribute | Description |
|---|---|
| max_len | Max length to send to controller |
| controller_id | Controller ID to send packet-in |
| reason | Reason for sending the message |
| userdata | Additional data to the controller in the packet-in message |
| pause | Flag to pause pipeline to resume later |
Example:
actions += [
parser.NXActionController(max_len=1024,
controller_id=1,
reason=ofproto.OFPR_INVALID_TTL,
userdata=[0xa,0xb,0xc],
pause=True)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionDecTtlCntIds(cnt_ids, type_=None, len_=None, experimenter=None, subtype=None)¶Decrement TTL action
This action decrements TTL of IPv4 packet or hop limits of IPv6 packet.
And equivalent to the followings action of ovs-ofctl command.
| dec_ttl(id1[,id2]...) |
| Attribute | Description |
|---|---|
| cnt_ids | Controller ids |
Example:
actions += [parser.NXActionDecTtlCntIds(cnt_ids=[1,2,3])]
Note
If you want to set the following ovs-ofctl command.
Please use OFPActionDecNwTtl.
| dec_ttl |
os_ken.ofproto.ofproto_v1_3_parser.NXActionStackPush(field, start, end, type_=None, len_=None, experimenter=None, subtype=None)¶Push field action
This action pushes field to top of the stack.
And equivalent to the followings action of ovs-ofctl command.
| pop:dst[start...end] |
| Attribute | Description |
|---|---|
| field | OXM/NXM header for source field |
| start | Start bit for source field |
| end | End bit for source field |
Example:
actions += [parser.NXActionStackPush(field="reg2",
start=0,
end=5)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionStackPop(field, start, end, type_=None, len_=None, experimenter=None, subtype=None)¶Pop field action
This action pops field from top of the stack.
And equivalent to the followings action of ovs-ofctl command.
| pop:src[start...end] |
| Attribute | Description |
|---|---|
| field | OXM/NXM header for destination field |
| start | Start bit for destination field |
| end | End bit for destination field |
Example:
actions += [parser.NXActionStackPop(field="reg2",
start=0,
end=5)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionSample(probability, collector_set_id=0, obs_domain_id=0, obs_point_id=0, type_=None, len_=None, experimenter=None, subtype=None)¶Sample packets action
This action samples packets and sends one sample for every sampled packet.
And equivalent to the followings action of ovs-ofctl command.
| sample(argument[,argument]...) |
| Attribute | Description |
|---|---|
| probability | The number of sampled packets |
| collector_set_id | The unsigned 32-bit integer identifier of the set of sample collectors to send sampled packets to |
| obs_domain_id | The Unsigned 32-bit integer Observation Domain ID |
| obs_point_id | The unsigned 32-bit integer Observation Point ID |
Example:
actions += [parser.NXActionSample(probability=3,
collector_set_id=1,
obs_domain_id=2,
obs_point_id=3,)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionSample2(probability, collector_set_id=0, obs_domain_id=0, obs_point_id=0, sampling_port=0, type_=None, len_=None, experimenter=None, subtype=None)¶Sample packets action
This action samples packets and sends one sample for every sampled packet. 'sampling_port' can be equal to ingress port or one of egress ports.
And equivalent to the followings action of ovs-ofctl command.
| sample(argument[,argument]...) |
| Attribute | Description |
|---|---|
| probability | The number of sampled packets |
| collector_set_id | The unsigned 32-bit integer identifier of the set of sample collectors to send sampled packets to |
| obs_domain_id | The Unsigned 32-bit integer Observation Domain ID |
| obs_point_id | The unsigned 32-bit integer Observation Point ID |
| sampling_port | Sampling port number |
Example:
actions += [parser.NXActionSample2(probability=3,
collector_set_id=1,
obs_domain_id=2,
obs_point_id=3,
sampling_port=8080)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionFinTimeout(fin_idle_timeout, fin_hard_timeout, type_=None, len_=None, experimenter=None, subtype=None)¶Change TCP timeout action
This action changes the idle timeout or hard timeout or both, of this OpenFlow rule when the rule matches a TCP packet with the FIN or RST flag.
And equivalent to the followings action of ovs-ofctl command.
| fin_timeout(argument[,argument]...) |
| Attribute | Description |
|---|---|
| fin_idle_timeout | Causes the flow to expire after the given number of seconds of inactivity |
| fin_idle_timeout | Causes the flow to expire after the given number of second, regardless of activity |
Example:
match = parser.OFPMatch(ip_proto=6, eth_type=0x0800)
actions += [parser.NXActionFinTimeout(fin_idle_timeout=30,
fin_hard_timeout=60)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionConjunction(clause, n_clauses, id_, type_=None, len_=None, experimenter=None, subtype=None)¶Conjunctive matches action
This action ties groups of individual OpenFlow flows into higher-level conjunctive flows. Please refer to the ovs-ofctl command manual for details.
And equivalent to the followings action of ovs-ofctl command.
| conjunction(id,k/n) |
| Attribute | Description |
|---|---|
| clause | Number assigned to the flow's dimension |
| n_clauses | Specify the conjunctive flow's match condition |
| id_ | Conjunction ID |
Example:
actions += [parser.NXActionConjunction(clause=1,
n_clauses=2,
id_=10)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionMultipath(fields, basis, algorithm, max_link, arg, ofs_nbits, dst, type_=None, len_=None, experimenter=None, subtype=None)¶Select multipath link action
This action selects multipath link based on the specified parameters. Please refer to the ovs-ofctl command manual for details.
And equivalent to the followings action of ovs-ofctl command.
| multipath(fields, basis, algorithm, n_links, arg, dst[start..end]) |
| Attribute | Description |
|---|---|
| fields | One of NX_HASH_FIELDS_* |
| basis | Universal hash parameter |
| algorithm | One of NX_MP_ALG_*. |
| max_link | Number of output links |
| arg | Algorithm-specific argument |
| ofs_nbits | Start and End for the OXM/NXM field.
Setting method refer to the nicira_ext.ofs_nbits |
| dst | OXM/NXM header for source field |
Example:
actions += [parser.NXActionMultipath(
fields=nicira_ext.NX_HASH_FIELDS_SYMMETRIC_L4,
basis=1024,
algorithm=nicira_ext.NX_MP_ALG_HRW,
max_link=5,
arg=0,
ofs_nbits=nicira_ext.ofs_nbits(4, 31),
dst="reg2")]
os_ken.ofproto.ofproto_v1_3_parser.NXActionBundle(algorithm, fields, basis, slave_type, n_slaves, ofs_nbits, dst, slaves)¶Select bundle link action
This action selects bundle link based on the specified parameters. Please refer to the ovs-ofctl command manual for details.
And equivalent to the followings action of ovs-ofctl command.
| bundle(fields, basis, algorithm, slave_type, slaves:[ s1, s2,...]) |
| Attribute | Description |
|---|---|
| algorithm | One of NX_MP_ALG_*. |
| fields | One of NX_HASH_FIELDS_* |
| basis | Universal hash parameter |
| slave_type | Type of slaves(must be NXM_OF_IN_PORT) |
| n_slaves | Number of slaves |
| ofs_nbits | Start and End for the OXM/NXM field. (must be zero) |
| dst | OXM/NXM header for source field(must be zero) |
| slaves | List of slaves |
Example:
actions += [parser.NXActionBundle(
algorithm=nicira_ext.NX_MP_ALG_HRW,
fields=nicira_ext.NX_HASH_FIELDS_ETH_SRC,
basis=0,
slave_type=nicira_ext.NXM_OF_IN_PORT,
n_slaves=2,
ofs_nbits=0,
dst=0,
slaves=[2, 3])]
os_ken.ofproto.ofproto_v1_3_parser.NXActionBundleLoad(algorithm, fields, basis, slave_type, n_slaves, ofs_nbits, dst, slaves)¶Select bundle link action
This action has the same behavior as the bundle action, with one exception. Please refer to the ovs-ofctl command manual for details.
And equivalent to the followings action of ovs-ofctl command.
| bundle_load(fields, basis, algorithm, slave_type, dst[start... *emd*], slaves:[ s1, s2,...]) | |
| Attribute | Description |
|---|---|
| algorithm | One of NX_MP_ALG_*. |
| fields | One of NX_HASH_FIELDS_* |
| basis | Universal hash parameter |
| slave_type | Type of slaves(must be NXM_OF_IN_PORT) |
| n_slaves | Number of slaves |
| ofs_nbits | Start and End for the OXM/NXM field.
Setting method refer to the nicira_ext.ofs_nbits |
| dst | OXM/NXM header for source field |
| slaves | List of slaves |
Example:
actions += [parser.NXActionBundleLoad(
algorithm=nicira_ext.NX_MP_ALG_HRW,
fields=nicira_ext.NX_HASH_FIELDS_ETH_SRC,
basis=0,
slave_type=nicira_ext.NXM_OF_IN_PORT,
n_slaves=2,
ofs_nbits=nicira_ext.ofs_nbits(4, 31),
dst="reg0",
slaves=[2, 3])]
os_ken.ofproto.ofproto_v1_3_parser.NXActionCT(flags, zone_src, zone_ofs_nbits, recirc_table, alg, actions, type_=None, len_=None, experimenter=None, subtype=None)¶Pass traffic to the connection tracker action
This action sends the packet through the connection tracker.
And equivalent to the followings action of ovs-ofctl command.
| ct(argument[,argument]...) |
| Attribute | Description |
|---|---|
| flags | Zero or more(Unspecified flag bits must be zero.) |
| zone_src | OXM/NXM header for source field |
| zone_ofs_nbits | Start and End for the OXM/NXM field.
Setting method refer to the nicira_ext.ofs_nbits.
If you need set the Immediate value for zone,
zone_src must be set to None or empty character string. |
| recirc_table | Recirculate to a specific table |
| alg | Well-known port number for the protocol |
| actions | Zero or more actions may immediately follow this action |
Note
If you set number to zone_src, Traceback occurs when you run the to_jsondict.
Example:
match = parser.OFPMatch(eth_type=0x0800, ct_state=(0,32))
actions += [parser.NXActionCT(
flags = 1,
zone_src = "reg0",
zone_ofs_nbits = nicira_ext.ofs_nbits(4, 31),
recirc_table = 4,
alg = 0,
actions = [])]
os_ken.ofproto.ofproto_v1_3_parser.NXActionNAT(flags, range_ipv4_min='', range_ipv4_max='', range_ipv6_min='', range_ipv6_max='', range_proto_min=None, range_proto_max=None, type_=None, len_=None, experimenter=None, subtype=None)¶Network address translation action
This action sends the packet through the connection tracker.
And equivalent to the followings action of ovs-ofctl command.
Note
The following command image does not exist in ovs-ofctl command manual and has been created from the command response.
| nat(src=ip_min-ip_max : proto_min-proto-max) |
| Attribute | Description |
|---|---|
| flags | Zero or more(Unspecified flag bits must be zero.) |
| range_ipv4_min | Range ipv4 address minimun |
| range_ipv4_max | Range ipv4 address maximun |
| range_ipv6_min | Range ipv6 address minimun |
| range_ipv6_max | Range ipv6 address maximun |
| range_proto_min | Range protocol minimum |
| range_proto_max | Range protocol maximun |
Caution
NXActionNAT must be defined in the actions in the
NXActionCT.
Example:
match = parser.OFPMatch(eth_type=0x0800)
actions += [
parser.NXActionCT(
flags = 1,
zone_src = "reg0",
zone_ofs_nbits = nicira_ext.ofs_nbits(4, 31),
recirc_table = 255,
alg = 0,
actions = [
parser.NXActionNAT(
flags = 1,
range_ipv4_min = "10.1.12.0",
range_ipv4_max = "10.1.13.255",
range_ipv6_min = "",
range_ipv6_max = "",
range_proto_min = 1,
range_proto_max = 1023
)
]
)
]
os_ken.ofproto.ofproto_v1_3_parser.NXActionOutputTrunc(port, max_len, type_=None, len_=None, experimenter=None, subtype=None)¶Truncate output action
This action truncate a packet into the specified size and outputs it.
And equivalent to the followings action of ovs-ofctl command.
| output(port=port,max_len=max_len) |
| Attribute | Description |
|---|---|
| port | Output port |
| max_len | Max bytes to send |
Example:
actions += [parser.NXActionOutputTrunc(port=8080,
max_len=1024)]
os_ken.ofproto.ofproto_v1_3_parser.NXActionDecNshTtl(type_=None, len_=None, vendor=None, subtype=None)¶Decrement NSH TTL action
This action decrements the TTL in the Network Service Header(NSH).
This action was added in OVS v2.9.
And equivalent to the followings action of ovs-ofctl command.
dec_nsh_ttl
Example:
actions += [parser.NXActionDecNshTtl()]
os_ken.ofproto.ofproto_v1_3_parser.NXFlowSpecMatch(src, dst, n_bits)¶Specification for adding match criterion
This class is used by NXActionLearn.
For the usage of this class, please refer to NXActionLearn.
| Attribute | Description |
|---|---|
| src | OXM/NXM header and Start bit for source field |
| dst | OXM/NXM header and Start bit for destination field |
| n_bits | The number of bits from the start bit |
os_ken.ofproto.ofproto_v1_3_parser.NXFlowSpecLoad(src, dst, n_bits)¶Add NXAST_REG_LOAD actions
This class is used by NXActionLearn.
For the usage of this class, please refer to NXActionLearn.
| Attribute | Description |
|---|---|
| src | OXM/NXM header and Start bit for source field |
| dst | OXM/NXM header and Start bit for destination field |
| n_bits | The number of bits from the start bit |
os_ken.ofproto.ofproto_v1_3_parser.NXFlowSpecOutput(src, n_bits, dst='')¶Add an OFPAT_OUTPUT action
This class is used by NXActionLearn.
For the usage of this class, please refer to NXActionLearn.
| Attribute | Description |
|---|---|
| src | OXM/NXM header and Start bit for source field |
| dst | Must be '' |
| n_bits | The number of bits from the start bit |
os_ken.ofproto.nicira_ext.ofs_nbits(start, end)¶The utility method for ofs_nbits
This method is used in the class to set the ofs_nbits.
This method converts start/end bits into ofs_nbits required to specify the bit range of OXM/NXM fields.
ofs_nbits can be calculated as following:
ofs_nbits = (start << 6) + (end - start)
The parameter start/end means the OXM/NXM field of ovs-ofctl command.
| field[start..end] |
| Attribute | Description |
|---|---|
| start | Start bit for OXM/NXM field |
| end | End bit for OXM/NXM field |
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 |
|---|---|---|
| in_port_nxm | Integer 16bit | OpenFlow port number. |
| 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) |
| vlan_tci | Integer 16bit | VLAN TCI. Basically same as vlan_vid plus vlan_pcp. |
| nw_tos | Integer 8bit | IP ToS or IPv6 traffic class field dscp. Requires setting fields: eth_type_nxm = [0x0800 (IPv4)|0x86dd (IPv6)] |
| 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) Requires setting fields: eth_type_nxm = [0x0800 (IPv4)|0x86dd (IPv6)] |
| ipv4_src_nxm | IPv4 address | IPv4 source address. Requires setting fields: eth_type_nxm = 0x0800 (IPv4) |
| ipv4_dst_nxm | IPv4 address | IPv4 destination address. Requires setting fields: eth_type_nxm = 0x0800 (IPv4) |
| tcp_src_nxm | Integer 16bit | TCP source port. Requires setting fields: eth_type_nxm = [0x0800 (IPv4)|0x86dd (IPv6)] and ip_proto_nxm = 6 (TCP) |
| tcp_dst_nxm | Integer 16bit | TCP destination port. Requires setting fields: eth_type_nxm = [0x0800 (IPv4)|0x86dd (IPv6)] and ip_proto_nxm = 6 (TCP) |
| udp_src_nxm | Integer 16bit | UDP source port. Requires setting fields: eth_type_nxm = [0x0800 (IPv4)|0x86dd (IPv6)] and ip_proto_nxm = 17 (UDP) |
| udp_dst_nxm | Integer 16bit | UDP destination port. eth_type_nxm = [0x0800 (IPv4)|0x86dd (IPv6)] and ip_proto_nxm = 17 (UDP) |
| icmpv4_type_nxm | Integer 8bit | Type matches the ICMP type and code matches the ICMP code. Requires setting fields: eth_type_nxm = 0x0800 (IPv4) and ip_proto_nxm = 1 (ICMP) |
| icmpv4_code_nxm | Integer 8bit | Type matches the ICMP type and code matches the ICMP code. Requires setting fields: eth_type_nxm = 0x0800 (IPv4) and ip_proto_nxm = 1 (ICMP) |
| arp_op_nxm | Integer 16bit | Only ARP opcodes between 1 and 255 should be specified for matching. Requires setting fields: eth_type_nxm = 0x0806 (ARP) |
| arp_spa_nxm | IPv4 address | An address may be specified as an IP address or host name. Requires setting fields: eth_type_nxm = 0x0806 (ARP) |
| arp_tpa_nxm | IPv4 address | An address may be specified as an IP address or host name. Requires setting fields: eth_type_nxm = 0x0806 (ARP) |
| tunnel_id_nxm | Integer 64bit | Tunnel identifier. |
| arp_sha_nxm | MAC address | An address is specified as 6 pairs of hexadecimal digits delimited by colons. Requires setting fields: eth_type_nxm = 0x0806 (ARP) |
| arp_tha_nxm | MAC address | An address is specified as 6 pairs of hexadecimal digits delimited by colons. Requires setting fields: eth_type_nxm = 0x0806 (ARP) |
| ipv6_src_nxm | IPv6 address | IPv6 source address. Requires setting fields: eth_type_nxm = 0x86dd (IPv6) |
| ipv6_dst_nxm | IPv6 address | IPv6 destination address. Requires setting fields: eth_type_nxm = 0x86dd (IPv6) |
| icmpv6_type_nxm | Integer 8bit | Type matches the ICMP type and code matches the ICMP code. Requires setting fields: eth_type_nxm = 0x86dd (IPv6) and ip_proto_nxm = 58 (ICMP for IPv6) |
| icmpv6_code_nxm | Integer 8bit | Type matches the ICMP type and code matches the ICMP code. Requires setting fields: eth_type_nxm = 0x86dd (IPv6) and ip_proto_nxm = 58 (ICMP for IPv6) |
| nd_target | IPv6 address | The target address ipv6. Requires setting fields: eth_type_nxm = 0x86dd (IPv6) and ip_proto_nxm = 58 (ICMP for IPv6) |
| nd_sll | MAC address | The source link-layer address option. Requires setting fields: eth_type_nxm = 0x86dd (IPv6) and ip_proto_nxm = 58 (ICMP for IPv6) and icmpv6_type_nxm = 135 (Neighbor solicitation) |
| nd_tll | MAC address | The target link-layer address option. Requires setting fields: eth_type_nxm = 0x86dd (IPv6) and ip_proto_nxm = 58 (ICMP for IPv6) and icmpv6_type_nxm = 136 (Neighbor advertisement) |
| ip_frag | Integer 8bit | frag_type specifies what kind of IP fragments or non-fragments to match. Requires setting fields: eth_type_nxm = [0x0800 (IPv4)|0x86dd (IPv6)] |
| ipv6_label | Integer 32bit | Matches IPv6 flow label. Requires setting fields: eth_type_nxm = 0x86dd (IPv6) |
| ip_ecn_nxm | Integer 8bit | Matches ecn bits in IP ToS or IPv6 traffic class fields. Requires setting fields: eth_type_nxm = [0x0800 (IPv4)|0x86dd (IPv6)] |
| nw_ttl | Integer 8bit | IP TTL or IPv6 hop limit value ttl. Requires setting fields: eth_type_nxm = [0x0800 (IPv4)|0x86dd (IPv6)] |
| mpls_ttl | Integer 8bit | The TTL of the outer MPLS label stack entry of a packet. Requires setting fields: eth_type_nxm = 0x8847 (MPLS Unicast) |
| tun_ipv4_src | IPv4 address | Tunnel IPv4 source address. Requires setting fields: eth_type_nxm = 0x0800 (IPv4) |
| tun_ipv4_dst | IPv4 address | Tunnel IPv4 destination address. Requires setting fields: eth_type_nxm = 0x0800 (IPv4) |
| 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 |
| tun_gbp_id | Integer 16bit | The group policy identifier in the VXLAN header. |
| tun_gbp_flags | Integer 8bit | The group policy flags in the VXLAN header. |
| tun_flags | Integer 16bit | Flags indicating various aspects of the tunnel encapsulation. |
| 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. Requires setting fields: eth_type_nxm = 0x86dd (IPv6) |
| tun_ipv6_dst | IPv6 address | Tunnel IPv6 destination address. Requires setting fields: eth_type_nxm = 0x86dd (IPv6) |
| _recirc_id | Integer 32bit | ID for recirculation. |
| _dp_hash | Integer 32bit | Flow hash computed in Datapath. |
| nsh_flags | Integer 8bit | Flags field in NSH Base Header. Requires eth_type_nxm = 0x894f (NSH). Since OpenFlow 1.3 and OVS v2.8. |
| nsh_mdtype | Integer 8bit | Metadata Type in NSH Base Header. Requires eth_type_nxm = 0x894f (NSH). Since OpenFlow 1.3 and OVS v2.8. |
| nsh_np | Integer 8bit | Next Protocol type in NSH Base Header. Requires eth_type_nxm = 0x894f (NSH). Since OpenFlow 1.3 and OVS v2.8. |
| nsh_spi | Integer 32bit | Service Path Identifier in NSH Service Path Header. Requires eth_type_nxm = 0x894f (NSH). Since OpenFlow 1.3 and OVS v2.8. |
| nsh_si | Integer 8bit | Service Index in NSH Service Path Header. Requires eth_type_nxm = 0x894f (NSH). Since OpenFlow 1.3 and OVS v2.8. |
| nsh_c<N> | Integer 32bit | Context fields in NSH Context Header. <N> is a number of 1-4. Requires eth_type_nxm = 0x894f (NSH). Since OpenFlow 1.3 and OVS v2.8. |
| nsh_ttl | Integer 8bit | TTL field in NSH Base Header. Requires eth_type_nxm = 0x894f (NSH). Since OpenFlow 1.3 and OVS v2.9. |
| reg<idx> | Integer 32bit | Packet register. <idx> is register number 0-15. |
| xxreg<idx> | Integer 128bit | Packet extended-extended register. <idx> is register number 0-3. |
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)
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.