[OPNFLWPLUG-236] Explicit LLDP flow to punt whole LLDP packets to the controller for more robust discovery Created: 13/Aug/14  Updated: 27/Sep/21  Due: 29/Aug/14  Resolved: 02/Sep/14

Status: Resolved
Project: OpenFlowPlugin
Component/s: General
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Abhijit Kumbhare Assignee: Martin Bobak
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Mac OS
Platform: PC


External issue ID: 1544

 Description   

An explicit LLDP flow should be added to table 0 to punt LLDP packets to the controller - so that we do not need to rely on implementation specific table miss flow entry behavior.

Also it is likely that we are expecting the whole unbuffered packet during the packet-ins - rather than partial packets. In this case it makes sense to explicitly configure the switch to send the full unbuffered packets to the controller (to make the controller operation more predictable & not dependent on the switch defaults). Hence make sure the LLDP flow output action has max_len as OFPCML_NO_BUFFER. (We will have a separate bug for setting switch configuration to send whole packets to the controller by default).

More details:

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)."

The output action has the following:

/* Action structure for OFPAT_OUTPUT, which sends packets out ’port’.

  • When the ’port’ is the OFPP_CONTROLLER, ’max_len’ indicates the max
  • number of bytes to send. A ’max_len’ of zero means no bytes of the
  • packet should be sent. A ’max_len’ of OFPCML_NO_BUFFER means that
  • the packet is not buffered and the complete packet is to be sent to
  • the controller. */
    struct ofp_action_output {
    uint16_t type;
    uint16_t len;
    uint32_t port;
    uint16_t max_len;
    uint8_t pad[6];
    /* OFPAT_OUTPUT. */
    /* Length is 16. */
    /* Output port. */
    /* Max length to send to controller. */
    /* Pad to 64 bits. */
    };

The LLDP flow max_len should be set to OFPCML_NO_BUFFER.



 Comments   
Comment by Abhijit Kumbhare [ 13/Aug/14 ]

Michal - please assign it to someone in your team.

Comment by Martin Bobak [ 30/Aug/14 ]

Issue resolved in this commit : https://git.opendaylight.org/gerrit/#/c/10478/

Generated at Wed Feb 07 20:31:55 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.