Details
-
Bug
-
Status: Resolved
-
Resolution: Done
-
None
-
None
-
None
-
Operating System: Mac OS
Platform: PC
-
1545
Description
For more robust discovery as well as OpenFlow operation (the controller apps likely depend on receiving whole unbuffered packets via packet-in) it makes sense to explicitly configure the switch to send the full unbuffered packets to the controller. This will make the controller operation more predictable & not dependent on the switch defaults. From the spec:
From 6.1.2 Asynchronous:
"If the packet is buffered, the number of bytes of the original packet to include in the packet-in can be configured. By default, it is 128 bytes. For packet-in generated by an output action in a flow entries or group bucket, it can be specified individually in the output action itself (see 7.2.5), for other packet-in it can be configured in the switch configuration (see 7.3.2)."
From 7.3.2 Switch Configuration:
/* Switch configuration. */
struct ofp_switch_config {
struct ofp_header header;
uint16_t flags;
uint16_t miss_send_len;
/* Bitmap of OFPC_* flags. */
/* Max bytes of packet that datapath
should send to the controller. See
ofp_controller_max_len for valid values.
*/
};
"The miss_send_len field defines the number of bytes of each packet sent to the controller by the OpenFlow pipeline when not using an output action to the OFPP_CONTROLLER logical port, for example sending packets with invalid TTL if this message reason is enabled. If this field equals 0, the switch must send zero bytes of the packet in the ofp_packet_in message. If the value is set to OFPCML_NO_BUFFER the complete packet must be included in the message, and should not be buffered."
So the action:
Make sure the default switch configuration for packet-in miss_send_len is OFPCML_NO_BUFFER