is setting cfi bit supported?


Ronald van der Pol <Ronald.vanderPol@...>
 

I am trying to set the CFI bit in the VLAN TCI header. The REST call
returns 200 OK, but the instruction is not sent via the OpenFlow
protocol. Only the VID and PCP are set.

Also, cfi is defined inconsistantly. In opendaylight-action-types.yang
it is defined as int32, in openflow-extensible-match.yang as boolean.

Json code, tshark packet capture, and yang parts are below:

-------------------------------------------------------------
{
"table": [
{
"id": "0",
"flow": [
{
"id": "11",
"match": {
"in-port": "78",
"ethernet-match": {
"ethernet-type": {
"type": "0x800"
}
},
"vlan-match": {
"vlan-id": {
"vlan-id-present": "true",
"vlan-id": "3170"
}
}
},
"instructions": {
"instruction": [
{
"order": "1",
"apply-actions": {
"action": [
{
"set-vlan-id-action": {
"vlan-id": "123"
},
"order": "1"
},
{
"set-vlan-cfi-action": {
"vlan-cfi": "1"
},
"order": "2"
},
{
"set-vlan-pcp-action": {
"vlan-pcp": "3"
},
"order": "3"
},
{
"output-action": {
"output-node-connector": "40"
},
"order": "4"
}
]
}
}
]
},
"flow-name": "sender-to-loop",
"table_id": "0"
}
]
}
]
}

-------------------------------------------------------------



-------------------------------------------------------------
Frame 125313: 194 bytes on wire (1552 bits), 194 bytes captured (1552 bits) on interface 0
Interface id: 0 (eth0)
Encapsulation type: Ethernet (1)
Arrival Time: Nov 4, 2015 11:41:17.802142000 CET
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1446633677.802142000 seconds
[Time delta from previous captured frame: 0.000642000 seconds]
[Time delta from previous displayed frame: 16.306840000 seconds]
[Time since reference or first frame: 331.784363000 seconds]
Frame Number: 125313
Frame Length: 194 bytes (1552 bits)
Capture Length: 194 bytes (1552 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:tcp:openflow:openflow_v4]
Ethernet II, Src: fa:16:3e:8d:36:d8 (fa:16:3e:8d:36:d8), Dst: fa:16:3e:4f:a4:84 (fa:16:3e:4f:a4:84)
Destination: fa:16:3e:4f:a4:84 (fa:16:3e:4f:a4:84)
Address: fa:16:3e:4f:a4:84 (fa:16:3e:4f:a4:84)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Source: fa:16:3e:8d:36:d8 (fa:16:3e:8d:36:d8)
Address: fa:16:3e:8d:36:d8 (fa:16:3e:8d:36:d8)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Type: IP (0x0800)
Internet Protocol Version 4, Src: 10.1.1.7 (10.1.1.7), Dst: XXX.XXX.25.23 (XXX.XXX.25.23)
Version: 4
Header Length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
Total Length: 180
Identification: 0xb570 (46448)
Flags: 0x02 (Don't Fragment)
0... .... = Reserved bit: Not set
.1.. .... = Don't fragment: Set
..0. .... = More fragments: Not set
Fragment offset: 0
Time to live: 64
Protocol: TCP (6)
Header checksum: 0x9e09 [validation disabled]
[Good: False]
[Bad: False]
Source: 10.1.1.7 (10.1.1.7)
Destination: XXX.XXX.25.23 (XXX.XXX.25.23)
[Source GeoIP: Unknown]
[Destination GeoIP: Unknown]
Transmission Control Protocol, Src Port: 6633 (6633), Dst Port: 60176 (60176), Seq: 1521169, Ack: 1775593, Len: 128
Source Port: 6633 (6633)
Destination Port: 60176 (60176)
[Stream index: 2]
[TCP Segment Len: 128]
Sequence number: 1521169 (relative sequence number)
[Next sequence number: 1521297 (relative sequence number)]
Acknowledgment number: 1775593 (relative ack number)
Header Length: 32 bytes
.... 0000 0001 1000 = Flags: 0x018 (PSH, ACK)
000. .... .... = Reserved: Not set
...0 .... .... = Nonce: Not set
.... 0... .... = Congestion Window Reduced (CWR): Not set
.... .0.. .... = ECN-Echo: Not set
.... ..0. .... = Urgent: Not set
.... ...1 .... = Acknowledgment: Set
.... .... 1... = Push: Set
.... .... .0.. = Reset: Not set
.... .... ..0. = Syn: Not set
.... .... ...0 = Fin: Not set
Window size value: 1452
[Calculated window size: 1452]
[Window size scaling factor: -1 (unknown)]
Checksum: 0xe770 [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
Urgent pointer: 0
Options: (12 bytes), No-Operation (NOP), No-Operation (NOP), Timestamps
No-Operation (NOP)
Type: 1
0... .... = Copy on fragmentation: No
.00. .... = Class: Control (0)
...0 0001 = Number: No-Operation (NOP) (1)
No-Operation (NOP)
Type: 1
0... .... = Copy on fragmentation: No
.00. .... = Class: Control (0)
...0 0001 = Number: No-Operation (NOP) (1)
Timestamps: TSval 119309230, TSecr 578168889
Kind: Time Stamp Option (8)
Length: 10
Timestamp value: 119309230
Timestamp echo reply: 578168889
[SEQ/ACK analysis]
[Bytes in flight: 128]
[PDU Size: 128]
OpenFlow 1.3
Version: 1.3 (0x04)
Type: OFPT_FLOW_MOD (14)
Length: 128
Transaction ID: 13579669
Cookie: 0x0000000000000000
Cookie mask: 0x0000000000000000
Table ID: 0
Command: OFPFC_ADD (0)
Idle timeout: 0
Hard timeout: 0
Priority: 32768
Buffer ID: OFP_NO_BUFFER (0xffffffff)
Out port: OFPP_ANY (0xffffffff)
Out group: OFPG_ANY (0xffffffff)
Flags: 0x0000
.... .... .... ...0 = Send flow removed: False
.... .... .... ..0. = Check overlap: False
.... .... .... .0.. = Reset counts: False
.... .... .... 0... = Don't count packets: False
.... .... ...0 .... = Don't count bytes: False
Pad: 0000
Match
Type: OFPMT_OXM (1)
Length: 24
OXM field
Class: OFPXMC_OPENFLOW_BASIC (0x8000)
0000 000. = Field: OFPXMT_OFB_IN_PORT (0)
.... ...0 = Has mask: False
Length: 4
Value: 78
OXM field
Class: OFPXMC_OPENFLOW_BASIC (0x8000)
0000 101. = Field: OFPXMT_OFB_ETH_TYPE (5)
.... ...0 = Has mask: False
Length: 2
Value: IP (0x0800)
OXM field
Class: OFPXMC_OPENFLOW_BASIC (0x8000)
0000 110. = Field: OFPXMT_OFB_VLAN_VID (6)
.... ...0 = Has mask: False
Length: 2
...1 .... .... .... = OFPVID_PRESENT: True
.... 1100 0110 0010 = Value: 3170
Instruction
Type: OFPIT_APPLY_ACTIONS (4)
Length: 56
Pad: 00000000
Action
Type: OFPAT_SET_FIELD (25)
Length: 16
OXM field
Class: OFPXMC_OPENFLOW_BASIC (0x8000)
0000 110. = Field: OFPXMT_OFB_VLAN_VID (6)
.... ...0 = Has mask: False
Length: 2
...1 .... .... .... = OFPVID_PRESENT: True
.... 0000 0111 1011 = Value: 123
Pad: 000000000000
Action
Type: OFPAT_SET_FIELD (25)
Length: 16
OXM field
Class: OFPXMC_OPENFLOW_BASIC (0x8000)
0000 111. = Field: OFPXMT_OFB_VLAN_PCP (7)
.... ...0 = Has mask: False
Length: 1
Value: 03
Pad: 00000000000000
Action
Type: OFPAT_OUTPUT (0)
Length: 16
Port: 40
Max length: 0
Pad: 000000000000


-------------------------------------------------------------

-------------------------------------------------------------
opendaylight-action-types.yang:

typedef vlan-cfi {
type int32;
}
-------------------------------------------------------------


-------------------------------------------------------------
openflow-extensible-match.yang:

case vlan-vid-case {
container vlan-vid {
leaf vlan-vid {
type uint16;
}
leaf cfi-bit {
type boolean;
}
leaf mask {
type binary;
}
}
}
-------------------------------------------------------------