Solaris Networking: Datalink Multipathing Protocol

Solaris Networking: Datalink Multipathing Protocol

In this article we are going to go over Datalink Multipathing Protocol (DLMP) available in Solaris.  DLMP is similar to IPMP, however there are some key differences, the biggest being the layer at which it operates.  DLMP operates at the datalink layer of the OSI model, while IPMP operates at the network layer.  Due to the differences in those layers DLMP opens up a lot of possibilities that were not possible with IPMP.  For example if you had a requirement for redundant networking for a service, either IPMP and DLMP would both be able to meet that requirement very well.  However if you had a requirement that the service runs inside of a zone or a logical domain then the level of work in IPMP becomes much higher.  This is because these hypervisors assign datalink devices to their guests.  Since the redundancy for IPMP is built on a level higher we need to assign multiple non-redundant interfaces to the guests and then build the interfaces and IPMP groups inside each of the guests.

Benefits of DLMP

  1. Virtualization friendly, you configure the aggregation on the control domain (or global zone) and hand out a redundant interface to a guest.
  2. Single command to configure a DLMP aggregation group.
  3. More portable, no switch side configuration or support is required

Drawbacks of DLMP

  1. Requires the same media speed for all members (differing speeds get put into standby and will not receive a failover).
  2. Requires a switch to mediate the connections, so no server to server connections.

Create a DLMP Aggregation

Creating and DLMP based aggregation is really similar to creating an LACP aggregation.  Simply change the mode to be dlmp.

# dladm create-aggr -m dlmp -l net0 -l net1 aggr0

Change an Existing Aggregration to DLMP

If you forgot to include the mode flag, that can be added using modify-aggr.

# dladm modify-aggr -m dlmp aggr0

Add Additional Interfaces to an Aggregration

Add additional interfaces (net2 and net3) to the existing aggregation group aggr0.

# dladm add-aggr -l net2 -l net3 aggr0

Remove Interfaces from an Aggregation

Remove interfaces (net2 and net3) to the existing aggregation group aggr0.  You cannot remove the last interface using this method.

# dladm remove-aggr -l net2 -l net3 aggr0

Delete an Aggregation Group

To delete an existing aggregation group, you can use the following command.

# dladm delete-aggr aggr0

Show Detailed Aggregation Information

Below will show you additional information about the aggregations.  In this case I find the speed, duplex and portstate fields helpful.  Additionally you can see the mac address on an interface.

# dladm show-aggr -x
xgaggr1    --             10000Mb full   up        0:10:e0:2d:ec:a4   --
           net0           10000Mb full   up        0:10:e0:2d:ec:a4   attached
           net1           10000Mb full   up        0:10:e0:2d:ec:a5   attached
aggr1      --             1000Mb full    up        a0:36:9f:1e:b5:9c  --
           net8           1000Mb full    up        a0:36:9f:1e:b5:88  attached
           net4           1000Mb full    up        a0:36:9f:1e:b5:9c  attached


One thought on “Solaris Networking: Datalink Multipathing Protocol

  1. food

    Hi Matthew,

    Thanks for the write-up. Just wondering if you know of any implications on load balancing policies if a dlmp aggregate (with vlan trunking) is configured on a control domain for a virtual switch. (.eg: # ldm add-vsw net-dev=aggr1 primary-vsw0 primary). For example, ldom1 vnet0 connected to primary-vsw0 and ldom2 vnet0 connected to the same vswitch.