Skip to content

Commit 3ee1880

Browse files
Rajesh_SindagiRajesh_Sindagi
authored andcommitted
Updated the LACP developer guide, incorporated comments.
Change-Id: I363a6550c2276cc5d5613d332ceb34db89cb8d77 Signed-off-by: Rajesh_Sindagi <[email protected]>
1 parent 4a10786 commit 3ee1880

File tree

1 file changed

+67
-38
lines changed

1 file changed

+67
-38
lines changed
Lines changed: 67 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,88 @@
11
== LACP Developer Guide
22
=== LACP Overview
3-
The LACP(Link Aggregation Control Protocol) feature can be used to
4-
aggregate multiple links between OpenDaylight controlled network
5-
switches and their directly connected LACP enabled legacy switches or
6-
hosts operating in active mode.
7-
8-
LACP passively negotiates automatic bundling of multiple links to form
9-
a single logical interface.
10-
The logical interface is currently realised in the OpenDaylight controlled
11-
switches using Openflow(1.3) group table functionality.
12-
The realisation of the logical interface can be also be done by informing the
13-
creation of the LAG(LACP Aggregator) interface to the OpenDaylight controlled
14-
switches or in any other manner by adding the required pluggable extension to
15-
the LACP.
3+
The OpenDaylight LACP (Link Aggregation Control Protocol) project can be used to
4+
aggregate multiple links between OpenDaylight controlled network switches and
5+
LACP enabled legacy switches or hosts operating in active LACP mode.
6+
7+
OpenDaylight LACP passively negotiates automatic bundling of multiple links to form
8+
a single LAG (Link Aggregation Group). LAGs are realised in the OpenDaylight controlled
9+
switches using OpenFlow 1.3+ group table functionality.
10+
1611

1712
=== LACP Architecture
13+
1814
* *inventory*
19-
** Maintains the list of LACP supporting OpenDaylight controlled switches,
20-
the list of logical interfaces created and physical links that are part
21-
of the logical interfaces available in each switch
15+
** Maintains list of OpenDaylight controlled switches and port information
16+
** List of LAGs created and physical ports that are part
17+
of the LAG
18+
** Interacts with MD-SAL to update LACP related information
19+
20+
* *inventorylistener*
21+
** This module interacts with MD-SAL for receiving node/node-connector notifications
22+
23+
* *flow*
24+
** Programs the switch to punt LACP PDU (Protocol Data Unit) to controller
25+
2226
* *packethandler*
2327
** Receives and transmits LACP PDUs to the LACP enabled endpoint
28+
** Provides infrastructure services for group table programming
29+
2430
* *core*
2531
** Performs LACP state machine processing
2632

27-
=== Realizing logical interface in switches
2833

29-
==== Group Table programming
30-
The logical interface representing the aggregated multiple physical links
34+
==== How LAG programming is implemented
35+
36+
The LAG representing the aggregated multiple physical ports
3137
are realized in the OpenDaylight controlled switches by creating a
3238
group table entry (Group table supported from Openflow 1.3 onwards).
3339
The group table entry has a group type *Select* and action referring to
34-
the aggregated physical links.
35-
Any data traffic to be sent out through the logical interface can be sent
36-
through the *Group entry* available for the logical interface.
40+
the aggregated physical ports.
41+
Any data traffic to be sent out through the LAG can be sent
42+
through the *group entry* available for the LAG.
43+
44+
Suppose there are ports P1-P8 in a node.
45+
When LACP project is installed, a group table entry for handling broadcast traffic is automatically
46+
created on all the switches that have registered to the controller.
47+
48+
[options="header"]
49+
|=================================
50+
|GroupID |GroupType|EgressPorts
51+
|<B'castgID>|ALL |P1,P2,...P8
52+
|=================================
53+
54+
Now, assume P1 & P2 are now part of LAG1. The group table would be programmed as follows:
55+
56+
[options="header"]
57+
|========================================
58+
|GroupID |GroupType|EgressPorts
59+
|<B'castgID>|ALL |P3,P4,...P8
60+
|<LAG1> |SELECT |P1,P2
61+
|========================================
62+
63+
When a second LAG, LAG2, is formed with ports P3 and P4,
64+
65+
[options="header"]
66+
|===============================================
67+
|GroupID |GroupType|EgressPorts
68+
|<B'castgID>|ALL |P5,P6,...P8
69+
|<LAG1> |SELECT |P1,P2
70+
|<LAG2> |SELECT |P3,P4
71+
|===============================================
72+
73+
==== How applications can program OpenFlow flows using LACP-created LAG groups
3774

38-
==== Alternate ways of realizing logical interface
75+
OpenDaylight controller modules can get the information of LAG by listening/querying the LACP Aggregator datastore.
3976

40-
An interface for the logical interface creation / modification / deletion
41-
is provided by the LACP feature. The plugin to realize the logical interface
42-
has to implement this interface and provide implementation for the following
43-
interface functions
77+
When any application receives packets, it can check, if the ingress port is part of a LAG by verifying the
78+
LAG Aggregator reference (lacp-agg-ref) for the source nodeConnector that OpenFlow plugin provides.
4479

45-
* LACreateLag(nodeId, aggId, portId)
80+
When applications want to add flows to egress out of the LAG, they must use the group entry corresponding to the LAG.
4681

47-
* LADeleteLag(nodeId, aggId)
82+
From the above example, for a flow to egress out of LAG1,
4883

49-
* LAUpdateLag(nodeId, aggId, portId, action)
84+
*add-flow eth_type=<xxxx>,ip_dst=<x.x.x.x>,actions=output:<LAG1>*
5085

51-
==== Realizing logical interface using other pluggable extension
52-
Any new extension that wants to realize the logical interface in the
53-
switch must implement the above mentioned interface functions.
54-
These implemented functions must have a way of informing the
55-
logical interface related operation to the switch.
56-
It also has to provide a mapping so as to handle the data
57-
traffic transmitted through the logical interface using the hardware
58-
support available for that logical interface in the switch.
86+
Similarly, when applications want traffic to be broadcasted, they should use the group table entries *<B'castgID>,<LAG1>,<LAG2>* in output action.
5987

88+
For all applications, the group table information is accessible from LACP Aggregator datastore.

0 commit comments

Comments
 (0)