系统管理指南:IP 服务

链路聚合概述


注 –

最初的 Oracle Solaris 10 发行版和更早的 Oracle Solaris : 版本不支持链路聚合。要为这些早期的 Oracle Solaris : 发行版创建链路聚合,请使用 Sun Trunking,如《Sun Trunking 1.3 Installation and Users Guide》所述。


Oracle Solaris : 支持将网络接口组织到链路聚合中。链路聚合由系统上配置在一起作为单个逻辑单元的若干接口组成。链路聚合也称为中继,它在 IEEE 802.3ad Link Aggregation Standard(IEEE 802.3ad 链路聚合标准) 中进行了定义。

IEEE 802.3ad 链路聚合标准提供了一种方法,可将多个全双工以太网链路的容量组合到单个逻辑链路中。然后此链路聚合组被视为单个链路,实际上也是这样。

以下是链路聚合的功能:

链路聚合基础

基本链路聚合拓扑涉及由一组物理接口组成的单个聚合。在以下情况下,可能使用基本链路聚合:

图 6–3 显示了承载常见 Web 站点的服务器的聚合。该站点需要增加带宽以满足 Internet 用户和站点数据库服务器之间的查询通信流量。出于安全目的,必须对外部应用程序隐藏服务器上各个接口的存在。解决方案是使用 IP 地址为 192.168.50.32 的聚合 aggr1。此聚合由三个接口(bge0bge2)组成。这些接口专用于发出通信流量以响应用户查询。来自所有接口的包流量上的传出地址是aggr1 的 IP 地址,即 192.168.50.32

图 6–3 基本链路聚合的拓扑

该图显示链路 aggr1 的块。三个物理接口 bge0–bge2 是从链路块派生而成的。

图 6–4 描述具有两个系统的本地网络,其中每个系统都配置了一个聚合。这两个系统由交换机连接在一起。如果需要通过交换机运行聚合,则该交换机必须支持聚合技术。对于高可用性和冗余系统,此类型的配置尤其有用。

在该图中,系统 A 具有的聚合由两个接口(即 bge0bge1)组成。这些接口通过聚合端口连接到交换机。系统 B 具有的聚合由四个接口(即 e1000g0e1000g3)组成。这些接口也连接到交换机上的聚合端口。

图 6–4 具有交换机的链路聚合拓扑

在上文中对该图进行了说明。

背对背链路聚合

背对背链路聚合拓扑涉及两个单独的系统,这两个系统通过电缆直接互连,如下图所示。这两个系统运行并行聚合。

图 6–5 基本的背对背聚合拓扑

在下文中对该图进行了说明。

在此图中,系统 A 上的设备 bge0 直接链接到系统 B 上的 bge0,依此类推。这样,系统 A 和 B 可以支持冗余和高可用性,以及这两个系统之间的高速通信。每个系统还将接口 ce0 配置为用于本地网络内的通信流。

背对背链路聚合最常见的应用是镜像数据库服务器。这两个服务器需要一起更新,因此需要很大的带宽、高速通信流和可靠性。最常使用背对背链路聚合的是数据中心。

策略和负载平衡

如果计划使用链路聚合,请考虑定义传出通信的策略。此策略可以指定希望如何在聚合的可用链路之间分配包,从而建立负载平衡。以下是可能用于聚合策略的层说明符及其意义:

这些策略的任意组合也是有效的。缺省策略是 L4。有关更多信息,请参阅 dladm(1M) 手册页。

聚合模式和交换机

如果聚合拓扑涉及通过交换机的连接,则必须注意此交换机是否支持链路聚合控制协议 (link aggregation control protocol, LACP)。如果交换机支持 LACP,则必须为交换机和聚合配置 LACP。但是,可以定义运行 LACP 的以下模式之一:

有关语法信息,请参见 dladm(1M) 手册页和交换机制造商文档。

链路聚合的要求

链路聚合配置必须符合以下要求:

Procedure如何创建链路聚合

开始之前

注 –

链路聚合仅对以相同速度运行的全双工点对点链路起作用。确保聚合中的接口符合此要求。


如果要在聚合拓扑中使用交换机,请确保在该交换机上执行了以下操作:

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 确定当前在系统上安装了哪些接口。


    # dladm show-link
    
  3. 确定已检测哪些接口。


    # ifconfig -a
    
  4. 创建聚合。


    # dladm create-aggr -d interface -d interface [...]key
    
    interface

    表示要成为聚合一部分的接口的设备名称。

    key

    是标识聚合的编号。最小的密钥编号是 1。不允许将零用作密钥。

    例如:


    # dladm create-aggr -d bge0 -d bge1 1
    
  5. 配置并检测新创建的聚合。


    # ifconfig aggrkey plumb IP-address up
    

    例如:


    # ifconfig aggr1  plumb 192.168.84.14 up
    
  6. 检查刚创建的聚合的状态。


    # dladm show-aggr
    

    将看到以下输出:


    key: 1 (0x0001) policy: L4      address: 0:3:ba:7:84:5e (auto)
    device   address           speed         duplex  link    state
    bge0     0:3:ba:7:b5:a7    1000  Mbps    full    up      attached
    bge1     0:3:ba:8:22:3b    0     Mbps    unknown down    standby

    该输出显示已创建一个密钥为 1、策略为 L4 的聚合。

  7. (可选)使链路聚合的 IP 配置在重新引导后继续存在。

    1. 对于具有 IPv4 地址的链路聚合,创建一个 /etc/hostname.aggrkey 文件。对于基于 IPv6 的链路聚合,创建一个 /etc/hostname6.aggrkey 文件。

    2. 将链路聚合的 IPv4 或 IPv6 地址输入到该文件中。

      例如,您可以为在本过程中创建的聚合创建以下文件:


      # vi /etc/hostname.aggr1
      192.168.84.14
      
    3. 执行重新配置引导。


      # reboot -- -r
      
    4. 验证您在 /etc/hostname.aggrkey 文件中输入的链路聚合配置是否已配置。


      # ifconfig -a
      .
      .
      aggr1: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
              inet 192.168.84.14 netmask ff000000 broadcast 192.255.255.

示例 6–4 创建链路聚合

此示例说明用于创建具有两个设备(即 bge0bge1)的链路聚合的命令,以及命令的输出。


# dladm show-link
ce0             type: legacy    mtu: 1500       device: ce0
ce1             type: legacy    mtu: 1500       device: ce1
bge0            type: non-vlan  mtu: 1500       device: bge0
bge1            type: non-vlan  mtu: 1500       device: bge1
bge2            type: non-vlan  mtu: 1500       device: bge2
# ifconfig -a
lo0: flags=2001000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
ce0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.84.253 netmask ffffff00 broadcast 192.168.84.255
        ether 0:3:ba:7:84:5e 
# dladm create-aggr -d bge0 -d bge1 1
# ifconfig aggr1 plumb 192.168.84.14 up
# dladm show-aggr
key: 1 (0x0001) policy: L4      address: 0:3:ba:7:84:5e (auto)
device   address           speed         duplex  link    state
bge0     0:3:ba:7:b5:a7    1000  Mbps    full    up      attached
bge1     0:3:ba:8:22:3b    0     Mbps    unknown down    standby

# ifconfig -a
lo0: flags=2001000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
ce0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.84.253 netmask ffffff00 broadcast 192.168.84.255
        ether 0:3:ba:7:84:5e 
aggr1: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
        inet 192.168.84.14 netmask ff000000 broadcast 192.255.255.255
        ether 0:3:ba:7:84:5e 

请注意,用于聚合的两个接口以前没有经过 ifconfig 检测。


Procedure如何修改聚合

此过程说明如何对聚合定义进行以下更改:

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 修改聚合以更改策略。


    # dladm modify-aggr -Ppolicy key   
    
    policy

    表示策略 L2、L3 和 L4 中的一个或多个,如策略和负载平衡中所述。

    key

    是标识聚合的编号。最小的密钥编号是 1。不允许将零用作密钥。

  3. 如果 LACP 正运行在聚合中的设备所连接到的交换机上,则修改该聚合使其支持 LACP。

    如果交换机在被动模式下运行 LACP,请务必为聚合配置主动模式。


    # dladm modify-aggr -l LACP mode -t timer-value key
    
    -l LACP mode

    指示运行聚合的 LACP 模式。值包括 activepassiveoff

    -t timer-value

    指示 LACP 计时器值(shortlong)。

    key

    是标识聚合的编号。最小的密钥编号是 1。不允许将零用作密钥。


示例 6–5 修改链路聚合

此示例说明如何将聚合 aggr1 的策略修改为 L2,并在随后打开活动 LACP 模式。


# dladm modify-aggr -P L2 1
# dladm modify-aggr -l active -t short 1
# dladm show-aggr
key: 1 (0x0001) policy: L2      address: 0:3:ba:7:84:5e (auto)
device   address           speed         duplex  link    state
bge0     0:3:ba:7:b5:a7    1000  Mbps    full    up      attached
bge1     0:3:ba:8:22:3b    0     Mbps    unknown down    standby

Procedure如何删除聚合中的接口

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 删除聚合中的接口。


    # dladm remove-aggr -d interface
    

示例 6–6 删除聚合中的接口

此示例说明如何删除聚合 aggr1 的接口。


# dladm show-aggr
key: 1 (0x0001) policy: L2      address: 0:3:ba:7:84:5e (auto)
device   address           speed         duplex  link    state
bge0     0:3:ba:7:b5:a7    1000  Mbps    full    up      attached
bge1     0:3:ba:8:22:3b    0     Mbps    unknown down    standby
# dladm remove-aggr -d bge1 1
# dladm show-aggr
key: 1 (0x0001) policy: L2      address: 0:3:ba:7:84:5e (auto)
device   address           speed         duplex  link    state
bge0     0:3:ba:7:b5:a7    1000  Mbps    full    up      attached
          

Procedure如何删除聚合

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 删除聚合。


    # dladm delete-aggr key
    
    key

    是标识聚合的编号。最小的密钥编号是 1。不允许将零用作密钥。


示例 6–7 如何删除聚合

此示例说明如何删除聚合 aggr1


# dladm show-aggr
key: 1 (0x0001) policy: L2      address: 0:3:ba:7:84:5e (auto)
     device   address           speed     duplex  link    state
# dladm delete-aggr -d 1

Procedure如何通过链路聚合配置 VLAN

与通过接口配置 VLAN 的方式一样,也可以基于链路聚合创建 VLAN。管理虚拟局域网中对 VLAN 进行了介绍。本节综合介绍了如何配置 VLAN 和链路聚合。

开始之前

首先使用有效的 IP 地址配置链路聚合。请记下聚合的 key 的值,在通过聚合创建 VLAN 时将需要该值。要创建链路聚合,请参阅如何创建链路聚合

  1. 如果先前已经创建链路聚合,请获取该聚合的密钥。


    # dladm show-aggr
    
  2. 通过链路聚合创建 VLAN。


    # ifconfig aggrVIDkey plumb
    

    其中

    VID

    VLAN 的 ID

    key

    要基于其创建 VLAN 的链路聚合的密钥。密钥必须采用 3 位格式。例如,如果聚合的密钥是 1,那么 VLAN 名称中所包含的密钥号为 001

  3. 重复步骤 2,通过聚合创建其他 VLAN。

  4. 使用有效的 IP 地址配置 VLAN。

  5. 要创建持久的 VLAN 配置,请将 IP 地址信息添加到相应的 /etc/hostname.VLAN 配置文件。


示例 6–8 通过链路聚合配置多个 VLAN

在此示例中,基于链路聚合配置了两个 VLAN。dladm show-aggr 命令的输出指示链路聚合的密钥是 1。为 VLAN 指定的 VID 分别为 193194


# dladm show-aggr
key: 1 (0x0001) policy: L4      address: 0:3:ba:7:84:5e (auto)
device   address           speed         duplex  link    state
bge0     0:3:ba:7:b5:a7    1000  Mbps    full    up      attached
bge1     0:3:ba:8:22:3b    0     Mbps    unknown down    standby

# ifconfig aggr193001 plumb
# ifconfig aggr193001 192.168.10.5/24 up

# ifconfig aggr194001 plumb
# ifconfig aggr194001 192.168.10.25/24 up

# vi /etc/hostname.aggr193001
192.168.10.5/24

# vi /etc/hostname.aggr194001
192.168.10.25/24