​Junos Aggregated Ethernet Example

In Junos, multiple physical Ethernet interfaces can be combined to form a single aggregated Ethernet interface.

The name of this interface will be aeX, where X is a number starting at 0 and incrementing upwards.

This is the same as a port channel in Cisco speak, and you might hear these referred to as LAG, aggregated, or bundle interfaces.

There are three main steps on Junos to create an aggregated Ethernet interface.

  1. Define how many aggregated interfaces to create
  2. Configure individual member interfaces to join the relevant aggregated interface
  3. Configure the aggregate interface itself, as either a layer-2 or layer-3 interface.

Note: Step one can be skipped if that has already been done. For example, if you previously set the device count high enough that your new ae interface won’t exceed the device count.

The Quick Answer

If you’re looking for a quick answer, the following are the basic commands we’ll be using.

set chassis aggregated-devices ethernet device-count <<Device-Count>>
set interfaces <<Interface>> gigether-options 802.3ad ae<<Number>>
set interfaces ae<<Number>>aggregated-ether-options lacp active
set interfaces ae<<Number>> unit <<Unit-Number>> family <<Address-Family>> address <<Address/Prefix-Length>>

A specific example might be:

set chassis aggregated-devices ethernet device-count 8
set interfaces ge-0/0/0 gigether-options 802.3ad ae0
set interfaces ae0 aggregated-ether-options lacp active
set interfaces ae0 unit 0 family inet address 192.168.0.2/24

Note: ae interfaces can be treated just like regular Ethernet interfaces. You can use any appropriate address family, including ethernet-switching.

Read on to see more detailed examples.

Lab Setup

The examples below are based on the following lab setup.

We are using one vJunos switch, vEX-1, and one vJunos router, vMX-1.

They are connected using four interfaces – ge-0/0/0 through ge-0/0/3.

There is minimal existing configuration on these devices.

Aggregated Ethernet Example

In this example, we are starting with no ae interfaces configured.

On vEX-1, there are several gigabit interfaces (ge) but no aggregated Ethernet (ae) interfaces.

The first step is to create the aggregated Ethernet interfaces. This is done under the chassis stanza.

lab@vEX-1> edit 
Entering configuration mode

[edit]
lab@vEX-1# set chassis aggregated-devices ethernet device-count 8 

[edit]
lab@vEX-1# show | compare 
[edit]
+  chassis {
+      aggregated-devices {
+          ethernet {
+              device-count 8;
+          }
+      }
+  }

[edit]
lab@vEX-1# commit and-quit 
commit complete
Exiting configuration mode

lab@vEX-1> 

If you look for ae interfaces now, you may get mixed results. In my lab, the ae interfaces did not show up. In the past, however, I’m sure they did. This might be due to the virtualized nature of my lab, or it may be due to the Junos version. If you don’t see any ae interfaces yet, don’t panic.

lab@vEX-1> show interfaces | match ae 

lab@vEX-1>

We’ll continue on to configuring the member interfaces. These interfaces are currently unconfigured. You may need to remove any existing configuration. Note: there are no units configured under the member interfaces. Having a unit there will cause a logical unit on aggregated link commit error.

lab@vEX-1> configure 
Entering configuration mode

[edit]
lab@vEX-1# show interfaces ge-0/0/0 

[edit]
lab@vEX-1# show interfaces ge-0/0/1    

[edit]
lab@vEX-1# set interfaces ge-0/0/0 gigether-options 802.3ad ae0 

[edit]
lab@vEX-1# set interfaces ge-0/0/1 gigether-options 802.3ad ae0    

[edit]
lab@vEX-1# show | compare 
[edit interfaces]
+   ge-0/0/0 {
+       gigether-options {
+           802.3ad ae0;
+       }
+   }
+   ge-0/0/1 {
+       gigether-options {
+           802.3ad ae0;
+       }
+   }

[edit]
lab@vEX-1# commit 
commit complete

[edit]
lab@vEX-1#

Before committing the configuration, let’s configure the ae interface itself. For this example, we’ll configure it as a layer 3 interface.

[edit]
lab@vEX-1# set interfaces ae0 unit 0 family inet address 192.168.0.1/24   

[edit]
lab@vEX-1# show | compare 
[edit interfaces]
+   ae0 {
+       unit 0 {
+           family inet {
+               address 192.168.0.1/24;
+           }
+       }
+   }

[edit]
lab@vEX-1# commit and-quit 
commit complete
Exiting configuration mode

lab@vEX-1>

Now that we have configured all of this, what is the state of our interface and LACP?

lab@vEX-1> show interfaces ae0 terse 
Interface               Admin Link Proto    Local                 Remote
ae0                     up    up
ae0.0                   up    up   inet     192.168.0.1/24  
                                   multiservice

lab@vEX-1> show lacp interfaces 
warning: lacp subsystem not running - not needed by configuration.

lab@vEX-1>

This is where I noticed a mistake. Or not, depending on how you look at it.

I have not told the aggregate interface to use Link Aggregation Control Protocol (LACP). This means the device assumes as long as a member interface is up, it should be added to the aggregate interface. Since this is a virtualized environment, the interfaces are always up, unless they are shut down.

This can cause issues and loss of traffic. Just because the interface is up doesn’t mean it is connected where we think it is, or there is full two-way communication between devices. Issues like this can be difficult to troubleshoot.

Let’s turn on LACP and check the interface again. LACP is configured under the aggregated-ether-options of the relevant ae interface. You must choose to have it set as either active or passive, and at least one of the ends must be set to active.

lab@vEX-1> edit 
Entering configuration mode

[edit]
lab@vEX-1# set interfaces ae0 aggregated-ether-options lacp active 

[edit]
lab@vEX-1# show | compare 
[edit interfaces ae0]
+    aggregated-ether-options {
+        lacp {
+            active;
+        }
+    }

[edit]
lab@vEX-1# commit and-quit 
commit complete
Exiting configuration mode

lab@vEX-1> show interfaces ae0 terse 
Interface               Admin Link Proto    Local                 Remote
ae0                     up    down
ae0.0                   up    down inet     192.168.0.1/24  
                                   multiservice

lab@vEX-1> show lacp interfaces 
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/0       Actor    No   Yes    No   No   No   Yes     Fast    Active
      ge-0/0/0     Partner    No   Yes    No   No   No   Yes     Fast   Passive
      ge-0/0/1       Actor    No   Yes    No   No   No   Yes     Fast    Active
      ge-0/0/1     Partner    No   Yes    No   No   No   Yes     Fast   Passive
    LACP protocol:        Receive State  Transmit State          Mux State 
      ge-0/0/0                Defaulted   Fast periodic           Detached
      ge-0/0/1                Defaulted   Fast periodic           Detached

lab@vEX-1> show lacp statistics interfaces ge-0/0/0  
Aggregated interface: ae0
    LACP Statistics:       LACP Rx     LACP Tx   Unknown Rx   Illegal Rx 
      ge-0/0/0                   0         146            0            0

lab@vEX-1> show lacp statistics interfaces ge-0/0/1    
Aggregated interface: ae0
    LACP Statistics:       LACP Rx     LACP Tx   Unknown Rx   Illegal Rx 
      ge-0/0/1                   0         149            0            0

lab@vEX-1>

After enabling LACP under ae0 and committing the change, the ae0 interface went down. This is expected since it isn’t receiving any LACP traffic from the other device yet. We can see LACP is running by using the command show lacp interfaces or show lacp statistics.

With one side all configured, we can move on to the other device. This example does everything in one step.

lab@vMX-1> configure 
Entering configuration mode

[edit]
lab@vMX-1# set chassis aggregated-devices ethernet device-count 8   

[edit]
lab@vMX-1# set interfaces ge-0/0/0 gigether-options 802.3ad ae0 

[edit]
lab@vMX-1# set interfaces ge-0/0/1 gigether-options 802.3ad ae0    

[edit]
lab@vMX-1# set interfaces ae0 aggregated-ether-options lacp active 

[edit]
lab@vMX-1# set interfaces ae0 unit 0 family inet address 192.168.0.2/24 

[edit]
lab@vMX-1# show | compare 
[edit]
+  chassis {
+      aggregated-devices {
+          ethernet {
+              device-count 8;
+          }
+      }
+  }
[edit interfaces]
+   ge-0/0/0 {
+       gigether-options {
+           802.3ad ae0;
+       }
+   }
+   ge-0/0/1 {
+       gigether-options {
+           802.3ad ae0;
+       }
+   }
+   ae0 {
+       aggregated-ether-options {
+           lacp {
+               active;
+           }                           
+       }
+       unit 0 {
+           family inet {
+               address 192.168.0.2/24;
+           }
+       }
+   }

[edit]
lab@vMX-1# commit and-quit 
commit complete
Exiting configuration mode

lab@vMX-1>

Note: In the example above the ge-0/0/0 and ge-0/0/1 interfaces did not have any existing configuration. You may need to remove any existing configuration before making them members of the aggregate link.

On vEX-1, we can check if the ae0 interface is up and what LACP is doing.

lab@vEX-1> show interfaces ae0 terse 
Interface               Admin Link Proto    Local                 Remote
ae0                     up    up
ae0.0                   up    up   inet     192.168.0.1/24  
                                   multiservice

lab@vEX-1> show lacp interfaces 
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/0       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/0     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
    LACP protocol:        Receive State  Transmit State          Mux State 
      ge-0/0/0                  Current   Fast periodic Collecting distributing
      ge-0/0/1                  Current   Fast periodic Collecting distributing

lab@vEX-1>


It looks good, let’s try pinging the far end.

lab@vEX-1> ping 192.168.0.2 count 2 
PING 192.168.0.2 (192.168.0.2): 56 data bytes
64 bytes from 192.168.0.2: icmp_seq=0 ttl=64 time=39.901 ms
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=3.675 ms

--- 192.168.0.2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 3.675/21.788/39.901/18.113 ms

lab@vEX-1>

Everything looks good.

At this point, you can treat the ae interface like any other Ethernet interface. Look at basic Junos interfaces, and Junos VLAN configuration for ideas.

To see what member interfaces belong to an ae interface, you can use the show interface detail command. This also shows some LACP information.

lab@vEX-1> show interfaces ae0 detail 
Physical interface: ae0, Enabled, Physical link is Up
  Interface index: 151, SNMP ifIndex: 539, Generation: 168
  Link-level type: Ethernet, MTU: 1514, Speed: 2Gbps, BPDU Error: None, Ethernet-Switching Error: None,
  MAC-REWRITE Error: None, Loopback: Disabled, Source filtering: Disabled, Flow control: Disabled, Minimum links needed: 1,
  Minimum bandwidth needed: 1bps
  Device flags   : Present Running
  Interface Specific flags: Internal: 0x200
  Interface flags: SNMP-Traps Internal: 0x4000
  Current address: aa:bb:cc:00:10:01, Hardware address:  aa:bb:cc:00:10:01
  Last flapped   : 2025-03-15 19:27:46 UTC (00:10:13 ago)
  Statistics last cleared: Never
  Traffic statistics:
   Input  bytes  :               150210                 1888 bps
   Output bytes  :              1266862                  168 bps
   Input  packets:                 1214                    0 pps
   Output packets:                 3890                    0 pps
   IPv6 transit statistics:
   Input  bytes  :                    0
   Output bytes  :                    0
   Input  packets:                    0
   Output packets:                    0

  Logical interface ae0.0 (Index 360) (SNMP ifIndex 540) (Generation 169)
    Flags: Up SNMP-Traps 0x4004000 Encapsulation: ENET2
    Statistics        Packets        pps         Bytes          bps
    Bundle:
        Input :          1207          0        149342         1808
        Output:             5          0           322            0
    Adaptive Statistics:
        Adaptive Adjusts:          0
        Adaptive Scans  :          0
        Adaptive Updates:          0
    Link:
      ge-0/0/0.0
        Input :           604          0         74650          904
        Output:          1946          0        737902            0
      ge-0/0/1.0
        Input :           603          0         74692          904
        Output:          1944          0        738720            0
    Aggregate member links: 2
    LACP info:        Role     System             System       Port     Port    Port 
                             priority         identifier   priority   number     key 
      ge-0/0/0.0     Actor        127  2c:6b:f5:ee:d4:c0        127        1       1
      ge-0/0/0.0   Partner        127  2c:6b:f5:a6:c3:c0        127        1       1
      ge-0/0/1.0     Actor        127  2c:6b:f5:ee:d4:c0        127        2       1
      ge-0/0/1.0   Partner        127  2c:6b:f5:a6:c3:c0        127        2       1
    LACP Statistics:       LACP Rx     LACP Tx   Unknown Rx   Illegal Rx 
      ge-0/0/0.0               578       50614            0            0
      ge-0/0/1.0               577       50612            0            0
    Marker Statistics:   Marker Rx     Resp Tx   Unknown Rx   Illegal Rx
      ge-0/0/0.0                 0           0            0            0
      ge-0/0/1.0                 0           0            0            0
    Protocol inet, MTU: 1500
    Max nh cache: 100000, New hold nh limit: 100000, Curr nh cnt: 1, Curr new hold cnt: 0, NH drop cnt: 0
    Generation: 167, Route table: 0
      Flags: Sendbcast-pkt-to-re, 0x0
      Addresses, Flags: Is-Preferred Is-Primary
        Destination: 192.168.0/24, Local: 192.168.0.1, Broadcast: 192.168.0.255, Generation: 141
    Protocol multiservice, MTU: Unlimited, Generation: 168, Route table: 0
      Flags: Is-Primary, 0x0
      Policer: Input: __default_arp_policer__

lab@vEX-1>

Adding A New Member Interface To An Existing AE Interface

To add additional links to an existing bundle, we configure the new member, or child, interface.

On vMX-1 we’ll add ge-0/0/2 and ge-0/0/3.

lab@vMX-1> configure 
Entering configuration mode

[edit]
lab@vMX-1# show interfaces ge-0/0/2   

[edit]
lab@vMX-1# show interfaces ge-0/0/3    

[edit]
lab@vMX-1# set interfaces ge-0/0/2 gigether-options 802.3ad ae0 

[edit]
lab@vMX-1# set interfaces ge-0/0/3 gigether-options 802.3ad ae0    

[edit]
lab@vMX-1# show | compare 
[edit interfaces]
+   ge-0/0/2 {
+       gigether-options {
+           802.3ad ae0;
+       }
+   }
+   ge-0/0/3 {
+       gigether-options {
+           802.3ad ae0;
+       }
+   }

[edit]
lab@vMX-1# commit and-quit 
commit complete
Exiting configuration mode

lab@vMX-1>

Looking at the ae0 interface, the new links are present. The speed is still 2 Gbps, but the number of links associated increased to 4.

lab@vMX-1> show interfaces ae0 detail 
Physical interface: ae0, Enabled, Physical link is Up
  Interface index: 159, SNMP ifIndex: 550, Generation: 163
  Link-level type: Ethernet, MTU: 1514, Speed: 2Gbps, BPDU Error: None, MAC-REWRITE Error: None, Loopback: Disabled,
 ...
<<output removed for brevity>>
...
    Link:
      ge-0/0/2.0
        Input :             1          0           306            0
        Output:             0          0             0            0
      ge-0/0/3.0
        Input :             0          0             0            0
        Output:             0          0             0            0
      ge-0/0/0.0
        Input :           917          0        119286          920
        Output:             4          0           168            0
      ge-0/0/1.0
        Input :           914          0        119160          920
        Output:             0          0             0            0
                                        

    Aggregate member links: 4

    LACP info:        Role     System             System       Port     Port    Port 
                             priority         identifier   priority   number     key 
      ge-0/0/2.0     Actor        127  2c:6b:f5:a6:c3:c0        127        3       1
      ge-0/0/2.0   Partner          1  00:00:00:00:00:00          1        3       1
      ge-0/0/3.0     Actor        127  2c:6b:f5:a6:c3:c0        127        4       1
      ge-0/0/3.0   Partner          1  00:00:00:00:00:00          1        4       1
      ge-0/0/0.0     Actor        127  2c:6b:f5:a6:c3:c0        127        1       1
      ge-0/0/0.0   Partner        127  2c:6b:f5:ee:d4:c0        127        1       1
      ge-0/0/1.0     Actor        127  2c:6b:f5:a6:c3:c0        127        2       1
      ge-0/0/1.0   Partner        127  2c:6b:f5:ee:d4:c0        127        2       1
    LACP Statistics:       LACP Rx     LACP Tx   Unknown Rx   Illegal Rx 
      ge-0/0/2.0                 0          37            0            0
      ge-0/0/3.0                 0          36            0            0
      ge-0/0/0.0               881         883            0            0
      ge-0/0/1.0               881         882            0            0
    Marker Statistics:   Marker Rx     Resp Tx   Unknown Rx   Illegal Rx
      ge-0/0/2.0                 0           0            0            0
      ge-0/0/3.0                 0           0            0            0
      ge-0/0/0.0                 0           0            0            0
      ge-0/0/1.0                 0           0            0            0
...
<<output removed for brevity>>
...

lab@vMX-1>

Looking at the LACP information, ge-0/0/2 and ge0/0/3 are not receiving any LACP traffic. This is because we have not yet configured the other side.

lab@vMX-1> show lacp interfaces 
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/0       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/0     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/2       Actor    No   Yes    No   No   No   Yes     Fast    Active
      ge-0/0/2     Partner    No   Yes    No   No   No   Yes     Fast   Passive
      ge-0/0/3       Actor    No   Yes    No   No   No   Yes     Fast    Active
      ge-0/0/3     Partner    No   Yes    No   No   No   Yes     Fast   Passive
    LACP protocol:        Receive State  Transmit State          Mux State 
      ge-0/0/0                  Current   Fast periodic Collecting distributing
      ge-0/0/1                  Current   Fast periodic Collecting distributing
      ge-0/0/2                Defaulted   Fast periodic           Detached
      ge-0/0/3                Defaulted   Fast periodic           Detached

lab@vMX-1> show lacp statistics interfaces ge-0/0/2  
Aggregated interface: ae0
    LACP Statistics:       LACP Rx     LACP Tx   Unknown Rx   Illegal Rx 
      ge-0/0/2                   0         291            0            0

lab@vMX-1> show lacp statistics interfaces ge-0/0/3    
Aggregated interface: ae0
    LACP Statistics:       LACP Rx     LACP Tx   Unknown Rx   Illegal Rx 
      ge-0/0/3                   0         292            0            0

lab@vMX-1>


The vEX-1 end is configured the same, with ge-0/0/2 and ge-0/0/3 added to the ae0 interface.

[edit]
lab@vEX-1# show | compare 
[edit interfaces]
+   ge-0/0/2 {
+       gigether-options {
+           802.3ad ae0;
+       }
+   }
+   ge-0/0/3 {
+       gigether-options {
+           802.3ad ae0;
+       }
+   }

[edit]
lab@vEX-1# commit and-quit 
commit complete
Exiting configuration mode

lab@vEX-1>

Back on vMX-1, we can recheck the ae0 interface.

lab@vMX-1> show interfaces ae0 detail                  
Physical interface: ae0, Enabled, Physical link is Up
  Interface index: 159, SNMP ifIndex: 550, Generation: 163
  Link-level type: Ethernet, MTU: 1514, Speed: 4Gbps, BPDU Error: None, MAC-REWRITE Error: None, Loopback: Disabled,
 ...
<<output removed for brevity>>
...
    Link:
      ge-0/0/2.0
        Input :           102          0         16834          936
        Output:             0          0             0            0
      ge-0/0/3.0
        Input :            86          0         11938          936
        Output:             0          0             0            0
      ge-0/0/0.0
        Input :          1500          0        195318          936
        Output:             5          0           210            0
      ge-0/0/1.0
        Input :          1496          0        195150          936
        Output:             0          0             0            0
                                        

    Aggregate member links: 4

    LACP info:        Role     System             System       Port     Port    Port 
                             priority         identifier   priority   number     key 
      ge-0/0/2.0     Actor        127  2c:6b:f5:a6:c3:c0        127        3       1
      ge-0/0/2.0   Partner        127  2c:6b:f5:ee:d4:c0        127        3       1
      ge-0/0/3.0     Actor        127  2c:6b:f5:a6:c3:c0        127        4       1
      ge-0/0/3.0   Partner        127  2c:6b:f5:ee:d4:c0        127        4       1
      ge-0/0/0.0     Actor        127  2c:6b:f5:a6:c3:c0        127        1       1
      ge-0/0/0.0   Partner        127  2c:6b:f5:ee:d4:c0        127        1       1
      ge-0/0/1.0     Actor        127  2c:6b:f5:a6:c3:c0        127        2       1
      ge-0/0/1.0   Partner        127  2c:6b:f5:ee:d4:c0        127        2       1
    LACP Statistics:       LACP Rx     LACP Tx   Unknown Rx   Illegal Rx 
      ge-0/0/2.0                73         596            0            0
      ge-0/0/3.0                73         595            0            0
      ge-0/0/0.0              1435        1439            0            0
      ge-0/0/1.0              1435        1438            0            0
    Marker Statistics:   Marker Rx     Resp Tx   Unknown Rx   Illegal Rx
      ge-0/0/2.0                 0           0            0            0
      ge-0/0/3.0                 0           0            0            0
      ge-0/0/0.0                 0           0            0            0
      ge-0/0/1.0                 0           0            0            0
 ...
<<output removed for brevity>>
...

lab@vMX-1>

There are a few things to note with the above output. The link speed has changed to 4 Gbps.

Next, let’s check the LACP info.

lab@vMX-1> show lacp interfaces                        
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/0       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/0     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/2       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/2     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/3       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/3     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
    LACP protocol:        Receive State  Transmit State          Mux State 
      ge-0/0/0                  Current   Fast periodic Collecting distributing
      ge-0/0/1                  Current   Fast periodic Collecting distributing
      ge-0/0/2                  Current   Fast periodic Collecting distributing
      ge-0/0/3                  Current   Fast periodic Collecting distributing

lab@vMX-1> show lacp statistics interfaces ge-0/0/2    
Aggregated interface: ae0
    LACP Statistics:       LACP Rx     LACP Tx   Unknown Rx   Illegal Rx 
      ge-0/0/2                  97         621            0            0

lab@vMX-1> show lacp statistics interfaces ge-0/0/3    
Aggregated interface: ae0
    LACP Statistics:       LACP Rx     LACP Tx   Unknown Rx   Illegal Rx 
      ge-0/0/3                  99         622            0            0

lab@vMX-1>

Setting The Minimum Number Of Links For An AE Interface

We can configure a LAG interface to have a minimum number of links. If it has fewer member links, the entire ae interface will be brought down.

This can sound counterintuitive. One of the reasons to use an aggregated interface is for resiliency, surely we don’t want the entire interface to go down if we only lose one or two members.

Here’s an example. Let’s say I have a device with interfaces ae0 and ae1. Each of these goes to a different upstream router, with ae0 being my preferred path for traffic. Each of these LAG interfaces has four member links.

If ae0 loses one member link, it has less available bandwidth. If it loses two links, it won’t be able to handle the amount of traffic it could previously, potentially causing congestion in my network. Instead, if it loses two links I want the ae0 interface to go down, causing traffic failover, and use the path via ae1, which is still fully operational.

In the next example, we’ll set minimum links to 3 on vEX-1’s ae0 interface and see what happens as we disable the interfaces on the other side.

[edit]
lab@vEX-1# show | compare 
[edit interfaces ae0 aggregated-ether-options]
+    minimum-links 3;

[edit]
lab@vEX-1# show interfaces ae0 
aggregated-ether-options {
    minimum-links 3;
    lacp {
        active;
    }
}
unit 0 {
    family inet {
        address 192.168.0.1/24;
    }
}

[edit]
lab@vEX-1# commit and-quit 
commit complete
Exiting configuration mode

lab@vEX-1>


First, let’s shut down ge-0/0/3 on vMX-1.

lab@vMX-1> configure 
Entering configuration mode

[edit]
lab@vMX-1# set interfaces ge-0/0/3 disable 

[edit]
lab@vMX-1# commit and-quit 
commit complete
Exiting configuration mode

lab@vMX-1> show interfaces ge-0/0/3 terse 
Interface               Admin Link Proto    Local                 Remote
ge-0/0/3                down  down
ge-0/0/3.0              up    down aenet    --> ae0.0

lab@vMX-1>


On vEX-1, we can see the speed for ae0 has reduced to 3Gbps, but the interface is still up.

lab@vEX-1> show interfaces ae0 terse 
Interface               Admin Link Proto    Local                 Remote
ae0                     up    up
ae0.0                   up    up   inet     192.168.0.1/24  
                                   multiservice

lab@vEX-1> show interfaces ae0 | match Speed 
  Link-level type: Ethernet, MTU: 1514, Speed: 3Gbps, BPDU Error: None, Ethernet-Switching Error: None,

lab@vEX-1> show lacp interfaces 
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/0       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/0     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/2       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/2     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/3       Actor    No   Yes    No   No   No   Yes     Fast    Active
      ge-0/0/3     Partner    No   Yes    No   No   No   Yes     Fast   Passive
    LACP protocol:        Receive State  Transmit State          Mux State 
      ge-0/0/0                  Current   Fast periodic Collecting distributing
      ge-0/0/1                  Current   Fast periodic Collecting distributing
      ge-0/0/2                  Current   Fast periodic Collecting distributing
      ge-0/0/3                Defaulted   Fast periodic           Detached

lab@vEX-1>

Next, ge-0/0/2 is disabled on vMX-1.

lab@vMX-1> show interfaces ge-0/0/2 terse 
Interface               Admin Link Proto    Local                 Remote
ge-0/0/2                down  down
ge-0/0/2.0              up    down aenet    --> ae0.0

lab@vMX-1> 

We see the following results on vEX-1.

lab@vEX-1> show interfaces ae0 terse            
Interface               Admin Link Proto    Local                 Remote
ae0                     up    down
ae0.0                   up    down inet     192.168.0.1/24  
                                   multiservice

lab@vEX-1> show interfaces ae0 | match Speed    
  Link-level type: Ethernet, MTU: 1514, Speed: 2Gbps, BPDU Error: None, Ethernet-Switching Error: None,

lab@vEX-1> show lacp interfaces                 
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/0       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/0     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/2       Actor    No   Yes    No   No   No   Yes     Fast    Active
      ge-0/0/2     Partner    No   Yes    No   No   No   Yes     Fast   Passive
      ge-0/0/3       Actor    No   Yes    No   No   No   Yes     Fast    Active
      ge-0/0/3     Partner    No   Yes    No   No   No   Yes     Fast   Passive
    LACP protocol:        Receive State  Transmit State          Mux State 
      ge-0/0/0                  Current   Fast periodic Collecting distributing
      ge-0/0/1                  Current   Fast periodic Collecting distributing
      ge-0/0/2                Defaulted   Fast periodic           Detached
      ge-0/0/3                Defaulted   Fast periodic           Detached

lab@vEX-1>

The ae0 interface is now down. Its speed has changed to 2Gbps.

The following log messages are generated on vEX-1.

Mar 15 20:28:26  vEX-1 lacpd[15557]: LACPD_TIMEOUT: ge-0/0/2: lacp current while timer expired current Receive State: CURRENT
Mar 15 20:28:26  vEX-1 lacpd[15557]: LACP_INTF_DOWN: ae0: Interface marked down due to lacp timeout on member ge-0/0/2
Mar 15 20:28:26  vEX-1 kernel: lag_bundlestate_ifd_change: bundle ae0: bundle IFD minimum bandwidth or minimum links not met, Bandwidth (Current : Required) 2000000000 : 3000000000 Number of links (Current : Required) 2 : 3
Mar 15 20:28:26  vEX-1 lacpd[15557]: LACP_INTF_MUX_STATE_CHANGED: ae0: ge-0/0/2: Lacp state changed from COLLECTING_DISTRIBUTING to ATTACHED, actor port state : |EXP|-|-|-|IN_SYNC|AGG|SHORT|ACT|, partner port state : |-|-|DIS|COL|OUT_OF_SYNC|AGG|SHORT|ACT|
Mar 15 20:28:26  vEX-1 mib2d[12070]: SNMP_TRAP_LINK_DOWN: ifIndex 539, ifAdminStatus up(1), ifOperStatus down(2), ifName ae0
Mar 15 20:28:29  vEX-1 lacpd[15557]: LACP_INTF_MUX_STATE_CHANGED: ae0: ge-0/0/2: Lacp state changed from ATTACHED to DETACHED, actor port state : |-|DEF|-|-|OUT_OF_SYNC|AGG|SHORT|ACT|, partner port state : |-|DEF|-|-|OUT_OF_SYNC|AGG|SHORT|PAS|

Why Have An Aggregated Interface With Only One Member?

It’s not uncommon to see a LAG configured with only one member interface. This is usually done for operational reasons, as it makes adding more links in the future easier.

Let’s say I have a link between two core devices. Today, a single link might be sufficient to handle all of the traffic, but I know in the future the amount of traffic will grow. I might not have the budget to put two links in place from the outset.

If I configure it without LAG today and have it as a single physical interface, it means more effort in the future to change it into a LAG. I’d have to remove the configuration from the physical interface, create the new ae interface, add the config I removed from the physical interface to the ae interface, add the original interface to the LAG, and so forth. Then, I have to go through the entire configuration and change all the references to the single interface to use the ae interface instead.

There are tools to make some of this easier, such as the replace command to change interface references, but there is still a chance of missing something.

With its commit functionality, we can do this as a single step on each Junos device. But we still have to update both sides, which impacts the link and traffic.

If I configure that single link as a LAG from the outset, then I can just add the additional link to the aggregated interface. This is a smaller change, less risky, and is unlikely to have much impact on the network. I don’t need to worry about interface names changing, because the references to the ae interface are all still valid.

From an operational perspective, this second approach makes life a lot simpler.

Summary

We worked through

  • Configuring aggregate Ethernet (ae) interfaces on Junos.
  • Adding interfaces to an existing ae interface.
  • Setting the minimum number of links for an ae interface.
  • Why you might want an ae interface with only a single child interface.

Aggregate interfaces themselves can be treated like any other Ethernet interface, so the following are still relevant

Leave a Comment

Your email address will not be published. Required fields are marked *