From 20927294d18806acd182357fdd2a32a112347240 Mon Sep 17 00:00:00 2001 From: Colin Dixon Date: Wed, 17 Aug 2016 11:31:55 -0400 Subject: [PATCH 1/1] Migrate LACP dev docs to rst Change-Id: Ica409f9b042119804b51540e93afff4b95252d9d Signed-off-by: Colin Dixon --- docs/developer-guide/lacp-developer-guide.rst | 116 ++++++++++++++++++ .../src/main/asciidoc/lacp/lacp-dev.adoc | 87 +------------ 2 files changed, 117 insertions(+), 86 deletions(-) create mode 100644 docs/developer-guide/lacp-developer-guide.rst diff --git a/docs/developer-guide/lacp-developer-guide.rst b/docs/developer-guide/lacp-developer-guide.rst new file mode 100644 index 000000000..52a182d92 --- /dev/null +++ b/docs/developer-guide/lacp-developer-guide.rst @@ -0,0 +1,116 @@ +LACP Developer Guide +==================== + +LACP Overview +------------- + +The OpenDaylight LACP (Link Aggregation Control Protocol) project can be +used to aggregate multiple links between OpenDaylight controlled network +switches and LACP enabled legacy switches or hosts operating in active +LACP mode. + +OpenDaylight LACP passively negotiates automatic bundling of multiple +links to form a single LAG (Link Aggregation Group). LAGs are realised +in the OpenDaylight controlled switches using OpenFlow 1.3+ group table +functionality. + +LACP Architecture +----------------- + +- **inventory** + + - Maintains list of OpenDaylight controlled switches and port + information + + - List of LAGs created and physical ports that are part of the LAG + + - Interacts with MD-SAL to update LACP related information + +- **inventorylistener** + + - This module interacts with MD-SAL for receiving + node/node-connector notifications + +- **flow** + + - Programs the switch to punt LACP PDU (Protocol Data Unit) to + controller + +- **packethandler** + + - Receives and transmits LACP PDUs to the LACP enabled endpoint + + - Provides infrastructure services for group table programming + +- **core** + + - Performs LACP state machine processing + +How LAG programming is implemented +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The LAG representing the aggregated multiple physical ports are realized +in the OpenDaylight controlled switches by creating a group table entry +(Group table supported from OpenFlow 1.3 onwards). The group table entry +has a group type **Select** and action referring to the aggregated +physical ports. Any data traffic to be sent out through the LAG can be +sent through the **group entry** available for the LAG. + +Suppose there are ports P1-P8 in a node. When LACP project is installed, +a group table entry for handling broadcast traffic is automatically +created on all the switches that have registered to the controller. + ++--------------------------+--------------------------+--------------------------+ +| GroupID | GroupType | EgressPorts | ++==========================+==========================+==========================+ +| | ALL | P1,P2,…P8 | ++--------------------------+--------------------------+--------------------------+ + +Now, assume P1 & P2 are now part of LAG1. The group table would be +programmed as follows: + ++--------------------------+--------------------------+--------------------------+ +| GroupID | GroupType | EgressPorts | ++==========================+==========================+==========================+ +| | ALL | P3,P4,…P8 | ++--------------------------+--------------------------+--------------------------+ +| | SELECT | P1,P2 | ++--------------------------+--------------------------+--------------------------+ + +When a second LAG, LAG2, is formed with ports P3 and P4, + ++--------------------------+--------------------------+--------------------------+ +| GroupID | GroupType | EgressPorts | ++==========================+==========================+==========================+ +| | ALL | P5,P6,…P8 | ++--------------------------+--------------------------+--------------------------+ +| | SELECT | P1,P2 | ++--------------------------+--------------------------+--------------------------+ +| | SELECT | P3,P4 | ++--------------------------+--------------------------+--------------------------+ + +How applications can program OpenFlow flows using LACP-created LAG groups +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +OpenDaylight controller modules can get the information of LAG by +listening/querying the LACP Aggregator datastore. + +When any application receives packets, it can check, if the ingress port +is part of a LAG by verifying the LAG Aggregator reference +(lacp-agg-ref) for the source nodeConnector that OpenFlow plugin +provides. + +When applications want to add flows to egress out of the LAG, they must +use the group entry corresponding to the LAG. + +From the above example, for a flow to egress out of LAG1, + +**add-flow eth\_type=,ip\_dst=,actions=output:** + +Similarly, when applications want traffic to be broadcasted, they should +use the group table entries **,,** in output +action. + +For all applications, the group table information is accessible from +LACP Aggregator datastore. + diff --git a/manuals/developer-guide/src/main/asciidoc/lacp/lacp-dev.adoc b/manuals/developer-guide/src/main/asciidoc/lacp/lacp-dev.adoc index 81a5c1de8..726c9837f 100644 --- a/manuals/developer-guide/src/main/asciidoc/lacp/lacp-dev.adoc +++ b/manuals/developer-guide/src/main/asciidoc/lacp/lacp-dev.adoc @@ -1,88 +1,3 @@ == LACP Developer Guide -=== LACP Overview -The OpenDaylight LACP (Link Aggregation Control Protocol) project can be used to -aggregate multiple links between OpenDaylight controlled network switches and -LACP enabled legacy switches or hosts operating in active LACP mode. -OpenDaylight LACP passively negotiates automatic bundling of multiple links to form -a single LAG (Link Aggregation Group). LAGs are realised in the OpenDaylight controlled -switches using OpenFlow 1.3+ group table functionality. - - -=== LACP Architecture - -* *inventory* - ** Maintains list of OpenDaylight controlled switches and port information - ** List of LAGs created and physical ports that are part - of the LAG - ** Interacts with MD-SAL to update LACP related information - -* *inventorylistener* - ** This module interacts with MD-SAL for receiving node/node-connector notifications - -* *flow* - ** Programs the switch to punt LACP PDU (Protocol Data Unit) to controller - -* *packethandler* - ** Receives and transmits LACP PDUs to the LACP enabled endpoint - ** Provides infrastructure services for group table programming - -* *core* - ** Performs LACP state machine processing - - -==== How LAG programming is implemented - -The LAG representing the aggregated multiple physical ports -are realized in the OpenDaylight controlled switches by creating a -group table entry (Group table supported from OpenFlow 1.3 onwards). -The group table entry has a group type *Select* and action referring to -the aggregated physical ports. -Any data traffic to be sent out through the LAG can be sent -through the *group entry* available for the LAG. - -Suppose there are ports P1-P8 in a node. -When LACP project is installed, a group table entry for handling broadcast traffic is automatically -created on all the switches that have registered to the controller. - -[options="header"] -|================================= -|GroupID |GroupType|EgressPorts -||ALL |P1,P2,...P8 -|================================= - -Now, assume P1 & P2 are now part of LAG1. The group table would be programmed as follows: - -[options="header"] -|======================================== -|GroupID |GroupType|EgressPorts -||ALL |P3,P4,...P8 -| |SELECT |P1,P2 -|======================================== - -When a second LAG, LAG2, is formed with ports P3 and P4, - -[options="header"] -|=============================================== -|GroupID |GroupType|EgressPorts -||ALL |P5,P6,...P8 -| |SELECT |P1,P2 -| |SELECT |P3,P4 -|=============================================== - -==== How applications can program OpenFlow flows using LACP-created LAG groups - -OpenDaylight controller modules can get the information of LAG by listening/querying the LACP Aggregator datastore. - -When any application receives packets, it can check, if the ingress port is part of a LAG by verifying the -LAG Aggregator reference (lacp-agg-ref) for the source nodeConnector that OpenFlow plugin provides. - -When applications want to add flows to egress out of the LAG, they must use the group entry corresponding to the LAG. - -From the above example, for a flow to egress out of LAG1, - -*add-flow eth_type=,ip_dst=,actions=output:* - -Similarly, when applications want traffic to be broadcasted, they should use the group table entries *,,* in output action. - -For all applications, the group table information is accessible from LACP Aggregator datastore. +This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/lacp-developer-guide.html -- 2.36.6