Image of Cortney & Jeremy

Configuring Multilink PPP (Dynamips)

by Jeremy L. Gaddis on November 27, 2008 · 6 comments

in Networking

UPDATE: Added a video demo at the bottom of the post (22-Mar-2008).

This is just a quick lab I whipped up to demonstrate how to configure multilink PPP between a pair of routers. According to Cisco:

“Multilink PPP (also referred to as MP, MPPP, MLP, or Multilink) provides a method for spreading traffic across multiple physical WAN links while providing packet fragmentation and reassembly, proper sequencing, multivendor interoperability, and load balancing on inbound and outbound traffic.”

In other words, we can combine multiple physical connections into a single logical connection to provide increased bandwidth and/or load balancing.

Here’s what our topology looks like:

Pretty simple setup: two routers, R1 and R2, with two serial connections between their serial 0/0 and serial 0/1 interfaces. Let’s get right into it:

R1’s configuration

R1# configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)# interface multilink 1
R1(config-if)#
*Mar  1 00:04:09.975: %LINEPROTO-5-UPDOWN: Line protocol on Interface Multilink1, changed state to down
R1(config-if)# ip address 192.168.42.1 255.255.255.252
R1(config-if)# ppp multilink
R1(config-if)# ppp multilink group 1
R1(config-if)# interface serial 0/0
R1(config-if)# encapsulation ppp
R1(config-if)# ppp multilink
R1(config-if)# ppp multilink group 1
R1(config-if)# no shutdown
R1(config-if)#
*Mar  1 00:05:07.467: %LINK-3-UPDOWN: Interface Serial0/0, changed state to up
R1(config-if)# interface serial 0/1
R1(config-if)# encapsulation ppp
R1(config-if)# ppp multilink
R1(config-if)# ppp multilink group 1
R1(config-if)# no shutdown
R1(config-if)# end
R1#
*Mar  1 00:05:33.679: %SYS-5-CONFIG_I: Configured from console by console
R1#
*Mar  1 00:05:35.019: %LINK-3-UPDOWN: Interface Serial0/1, changed state to up
R1#

R2’s configuration

Before starting to configure the other end of the link, I’ve started a debug so that we can see what is happening in the background:

R2# debug ppp multilink events
Multilink events debugging is on
R2#
R2# configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)# interface multilink 1
*Mar  1 00:08:23.703: %LINEPROTO-5-UPDOWN: Line protocol on Interface Multilink1, changed state to down
R2(config-if)# ip address 192.168.42.2 255.255.255.252
R2(config-if)# ppp multilink
R2(config-if)# ppp multilink group 1
R2(config-if)# interface serial 0/0
R2(config-if)# encapsulation ppp
R2(config-if)# ppp multilink
R2(config-if)# ppp multilink group 1
*Mar  1 00:08:45.711: Se0/0 MLP: Added interface to multilink group Mu1
R2(config-if)# no shutdown
*Mar  1 00:08:52.231: %LINK-3-UPDOWN: Interface Serial0/0, changed state to up
*Mar  1 00:08:52.343: Se0/0 MLP: Request add link to bundle
*Mar  1 00:08:52.343: Se0/0 MLP: Adding link to bundle
*Mar  1 00:08:52.355: Mu1 MLP: Added first link Se0/0 to bundle R1
R2(config-if)#
*Mar  1 00:08:52.363: %LINK-3-UPDOWN: Interface Multilink1, changed state to up
*Mar  1 00:08:53.339: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to up
*Mar  1 00:08:53.367: %LINEPROTO-5-UPDOWN: Line protocol on Interface Multilink1, changed state to up
R2(config-if)#

At this point, our multilink PPP session is up, although with only one link. It is completely usable and operational. Let’s go ahead and bring up the other serial link:

R2(config-if)# interface serial 0/1
R2(config-if)# encapsulation ppp
R2(config-if)# ppp multilink
R2(config-if)# ppp multilink group 1
R2(config-if)#
*Mar  1 00:12:22.647: Se0/1 MLP: Added interface to multilink group Mu1
R2(config-if)# no shutdown
R2(config-if)# end
R2#
*Mar  1 00:12:32.195: %SYS-5-CONFIG_I: Configured from console by console
*Mar  1 00:12:32.399: %LINK-3-UPDOWN: Interface Serial0/1, changed state to up
R2#
*Mar  1 00:12:32.447: Se0/1 MLP: Request add link to bundle
*Mar  1 00:12:32.447: Se0/1 MLP: Adding link to bundle
*Mar  1 00:12:32.459: Mu1 MLP: Added link Se0/1 to bundle R1
*Mar  1 00:12:33.447: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1, changed state to up
R2#

We see that the other serial link has came up and been automatically added to the “bundle”, just as the first one was.

Verifying Multilink PPP

We can verify the proper operation of our multilink PPP configuration easily:

R1# show ppp multilink

Multilink1, bundle name is R2
  Endpoint discriminator is R2
  Bundle up for 00:06:17, total bandwidth 3088, load 1/255
  Receive buffer limit 24000 bytes, frag timeout 1000 ms
    0/0 fragments/bytes in reassembly list
    0 lost fragments, 0 reordered
    0/0 discarded fragments/bytes, 0 lost received
    0x6 received sequence, 0x6 sent sequence
  Member links: 2 active, 0 inactive (max not set, min not set)
    Se0/0, since 00:06:17
    Se0/1, since 00:02:37
No inactive multilink interfaces
R1#

From the output above, we see that our “bundle”, R2, has two links (serial 0/0 and serial 0/1), both of which are active. We also see that there are no inactive links. In addition, note that the bandwidth of this link is 3088 Kbps — twice the bandwidth of a normal T-1. Let’s ping the remote end to verify connectivity:

R1# ping 192.168.42.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.42.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/17/36 ms
R1#

Success! It works just as expected!

Previous post:

Next post: