HOWTO: Link Aggregation - As Essential As Disk Mirroring PDF Print E-mail
User Rating: / 9
PoorBest 
Written by John R Peck   

As LVM mirroring is best practice for disks, so 802.3a Link Aggregation should be regarded as the thing to do where there are multiple NIC ports and a TCP/IP service to be run.  It's a variation on Etherchannel which gives HACMP-like resilience more simply.

Configuring Ether Channel As A Link Aggregation In Backup Mode

"Etherchannel" has been around for some time, there is a "smit etherchannel" in AIX 4.3.3 for example.  It's a proprietary Cisco implementation which requires a capable switch and for all involved connections to be to that switch with "link polling" activated.  By linking NIC ports as an "Etherchannel" it is possible to achieve greater combined throughput or load balancing - that would be using the "standard" or "round robin" modes.  

Link Aggregation, as in "802.3ad", is an Open standard for essentially the same thing.  In AIX there are some added control features.  Importantly, as shown here it does not require a single special switch to provide resilient fail-over between NIC ports in "backup" mode.  The backup adapter is not normally in use, it is a hot standby and will fail-back automatically after a fail-over - much like an HACMP controlled pair of adapters.  The 802.3ad features came in with AIX V5.1, and have been modified a bit in AIX 5.2 and 5.3. The screens here reflect AIX 5.3.

802.3ad ether channel link aggregation in backup adapter mode provides a resilient twin-path connection for a single service IP address by creating a new virtual interface for TCP/IP configuration to use.  Only identical adapter types are supported in such a pairing, although mixed types of ports on different cards may well work.  The MAC address of the primary adapter in the pairing (ent0 say) will be used as the MAC address for the combined interface (of say ent0 and ent1 to create a new ent2).

Before you start, work out which logical enX interface is associated with which physical NIC port,
so that you know which ports you want to conjoin.  And of course decide what IP addresses etc you will use.

The pairing must be done before any configuration of IP addresses, but after making the underlying interface tuning.  So use "smitty chgenet", "smitty chif" and "chdev -l enX –a tcp_nodelay=1" first.  Set "jumbo frames" on each adapter if also required in the later aggregation, make sure link polling is activated.  

Once established as an aggregation, the individual component interfaces cannot be tuned.  
A pairing cannot be made if the individual interfaces have IP addresses assigned.

So let's consider en0 and en1 to be paired...

“smit etherchannel” - select the "Add An EtherChannel / Link Aggregation" option, and then "en0" say as the primary of the pair:

 
                  EtherChannel / IEEE 802.3ad Link Aggregation                 
                                                                              
Move cursor to desired item and press Enter.                                   
                                                                               
  List All EtherChannels / Link Aggregations                                   
  Add An EtherChannel / Link Aggregation                                       
  Change / Show Characteristics of an EtherChannel / Link Aggregation          
  Remove An EtherChannel / Link Aggregation                                    
  Force A Failover In An EtherChannel / Link Aggregation                       
  +--------------------------------------------------------------------------+ 
  |                       Available Network Interfaces                       | 
  |                                                                          | 
  | Move cursor to desired item and press F7.                                | 
  |     ONE OR MORE items can be selected.                                   | 
  | Press Enter AFTER making all selections.                                 | 
  |                                                                          | 
  |   ent0                                                                 |  
  |   ent1                                                                   | 
  |   ent2                                                                   | 
  |                                                                          | 
  | F1=Help                 F2=Refresh              F3=Cancel                | 
  | F7=Select               F8=Image                F10=Exit                 | 
F1| Enter=Do                /=Find                  n=Find Next              | 
F9+--------------------------------------------------------------------------+

 

Only selecting one adapter there, as when more than one adapter is selected there it requires the Etherchannel proprietary switch configuration.  

In the next screen, tab-toggle to 802.3ad mode and select “ent1” as the “Backup Aadapter" to “en0” from an “F4” list:

 
                      Add An EtherChannel / Link Aggregation                     
Type or select values in entry fields.                                          
Press Enter AFTER making all desired changes.                                   
                                                                                
                                                        [Entry Fields]          
  EtherChannel / Link Aggregation Adapters            ent0                   +  
  Enable Alternate Address                            no                     +  
  Alternate Address                                  []                      +  
  Enable Gigabit Ethernet Jumbo Frames                no                     +  
  Mode                                                   8023ad                +  
  Hash Mode                                           default                +  
  Backup Adapter                                           ent1                +  
       Automatically Recover to Main Channel          yes                    +  
  Internet Address to Ping                           []                         
  Number of Retries                                  []                      +# 
  Retry Timeout (sec)                                []                      +# 
                                                                                
F1=Help             F2=Refresh          F3=Cancel           F4=List             
Esc+5=Reset         F6=Command          F7=Edit             F8=Image            
F9=Shell            F10=Exit            Enter=Do

The “8023ad” mode requires no special switch configuration to link ports in this manner.  The AIX implementation of this standard allows the administrator to choose which adapters are linked at the pSeries end – with other implementations it is usually negotiated.  The backup adapter will not be used until the live one fails-over to it, fail-back is then automatic when the original connection is restored.

The final options relating to an IP address to ping, enable the connection to be constantly doing a heartbeat check from the higher protocol layers, although that is not absolutely necessary for the fail-over to work because of the underlying link polling.

Finally configure TCP/IP as usual with the new “en2” (the next available number) interface that has been configured here.

 

 
< Prev   Next >
77 queries executed
1
SET sql_mode = 'MYSQL40'
2 SELECT folder, element, published, params FROM jos_mambots WHERE published >= 1 AND access <= 0 AND folder = 'system' ORDER BY ordering
3 SELECT template FROM jos_templates_menu WHERE client_id = 0 AND ( menuid = 0 OR menuid = 193 ) ORDER BY menuid DESC LIMIT 1
4 DELETE FROM jos_session WHERE ( ( time < '1548314463' ) AND guest = 0 AND gid > 0 ) OR ( ( time < '1548314463' ) AND guest = 1 AND userid = 0 )
5 SELECT COUNT(*) FROM jos_stats_agents WHERE agent = 'Unknown' AND type = 0
6 UPDATE jos_stats_agents SET hits = ( hits + 1 ) WHERE agent = 'Unknown' AND type = 0
7 SELECT COUNT(*) FROM jos_stats_agents WHERE agent = 'Unknown' AND type = 1
8 UPDATE jos_stats_agents SET hits = ( hits + 1 ) WHERE agent = 'Unknown' AND type = 1
9 SELECT COUNT(*) FROM jos_stats_agents WHERE agent = 'com' AND type = 2
10 UPDATE jos_stats_agents SET hits = ( hits + 1 ) WHERE agent = 'com' AND type = 2
11 SELECT * FROM jos_menu WHERE id = 193
12 SELECT a.*, u.name AS author, u.usertype, cc.name AS category, s.name AS section, g.name AS groups, s.published AS sec_pub, cc.published AS cat_pub, s.access AS sec_access, cc.access AS cat_access, s.id AS sec_id, cc.id as cat_id FROM jos_content AS a LEFT JOIN jos_categories AS cc ON cc.id = a.catid LEFT JOIN jos_sections AS s ON s.id = cc.section AND s.scope = 'content' LEFT JOIN jos_users AS u ON u.id = a.created_by LEFT JOIN jos_groups AS g ON a.access = g.id WHERE a.id = 230 AND ( a.state = 1 OR a.state = -1 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2019-01-24 08:36' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2019-01-24 08:36' ) AND a.access <= 0
13 SELECT a.id FROM jos_content AS a WHERE a.catid = 19 AND a.state = 1 AND a.access <= 0 AND ( a.state = 1 OR a.state = -1 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2019-01-24 08:36' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2019-01-24 08:36' ) ORDER BY a.ordering
14 SELECT ROUND( v.rating_sum / v.rating_count ) AS rating, v.rating_count FROM jos_content AS a LEFT JOIN jos_content_rating AS v ON a.id = v.content_id WHERE a.id = 230
15 UPDATE jos_content SET hits = ( hits + 1 ) WHERE id = '230'
16 SELECT hits FROM jos_core_log_items WHERE time_stamp = '2019-01-24' AND item_table = '#__content' AND item_id = '230'
17 UPDATE jos_core_log_items SET hits = ( hits + 1 ) WHERE time_stamp = '2019-01-24' AND item_table = '#__content' AND item_id = '230'
18 SELECT folder, element, published, params FROM jos_mambots WHERE access <= 0 AND folder = 'content' ORDER BY ordering
19 SELECT value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' AND name = 'urlkey'
20 SELECT value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' AND name = 'snapshotactiv'
21 SELECT value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' AND name = 'snapshotother'
22 SELECT id FROM jos_mambots WHERE element = 'mosbookmarks' AND folder = 'content'
23 SELECT * FROM jos_mambots WHERE id = '32'
24 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
25 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
26 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
27 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
28 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
29 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
30 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
31 SELECT * FROM jos_mambots WHERE id = '27'
32 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
33 SELECT * FROM jos_mambots WHERE id = '27'
34 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
35 SELECT * FROM jos_mambots WHERE id = '27'
36 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
37 SELECT * FROM jos_mambots WHERE id = '27'
38 SELECT a.* FROM jos_components AS a WHERE ( a.admin_menu_link = 'option=com_syndicate' OR a.admin_menu_link = 'option=com_syndicate&hidemainmenu=1' ) AND a.option = 'com_syndicate'
39 SELECT m.id FROM jos_modules AS m WHERE m.module = 'mod_rssfeed' AND m.published = 1
40 SELECT id, title, module, position, content, showtitle, params FROM jos_modules AS m INNER JOIN jos_modules_menu AS mm ON mm.moduleid = m.id WHERE m.published = 1 AND m.access <= 0 AND m.client_id != 1 AND ( mm.menuid = 0 OR mm.menuid = 193 ) ORDER BY ordering
41 SELECT a.id, a.introtext, a.fulltext , a.images, a.attribs, a.title, a.state FROM jos_content AS a INNER JOIN jos_categories AS cc ON cc.id = a.catid INNER JOIN jos_sections AS s ON s.id = a.sectionid WHERE a.state = 1 AND a.access <= 0 AND cc.access <= 0 AND s.access <= 0 AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2019-01-24 08:36' ) AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2019-01-24 08:36' ) AND a.catid = 44 AND cc.published = 1 AND s.published = 1 ORDER BY a.ordering LIMIT 15
42 SELECT id FROM jos_mambots WHERE element = 'mosbookmarks' AND folder = 'content'
43 SELECT * FROM jos_mambots WHERE id = '32'
44 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
45 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
46 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
47 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
48 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
49 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
50 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
51 SELECT * FROM jos_mambots WHERE id = '27'
52 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
53 SELECT * FROM jos_mambots WHERE id = '27'
54 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
55 SELECT * FROM jos_mambots WHERE id = '27'
56 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
57 SELECT * FROM jos_mambots WHERE id = '27'
58 SELECT id FROM jos_menu WHERE link = 'index.php?option=com_search' AND published = 1
59 SELECT m.*, sum(case when p.published=1 then 1 else 0 end) as cnt FROM jos_menu AS m LEFT JOIN jos_menu AS p ON p.parent = m.id WHERE m.menutype='rt_splitSuckerFish' AND m.published='1' AND m.access <= '0' GROUP BY m.id ORDER BY m.parent, m.ordering
60 SELECT m.* FROM jos_menu AS m WHERE menutype='rt_splitSuckerFish' AND m.published='1'
61 SELECT * FROM jos_banner WHERE showBanner=1
62 SELECT id FROM jos_mambots WHERE element = 'mosbookmarks' AND folder = 'content'
63 SELECT * FROM jos_mambots WHERE id = '32'
64 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
65 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
66 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
67 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
68 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
69 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
70 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
71 SELECT * FROM jos_mambots WHERE id = '27'
72 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
73 SELECT * FROM jos_mambots WHERE id = '27'
74 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
75 SELECT * FROM jos_mambots WHERE id = '27'
76 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
77 SELECT * FROM jos_mambots WHERE id = '27'