系统管理指南:IP 服务

第 6 章 管理网络接口(任务)

本章包含有关网络接口的任务和信息:

网络接口管理方面的新增功能

本章中的信息介绍从 Solaris 10 1/06 发行版开始的接口配置。如果使用 Solaris 10 的最初发行版 3/05,请参阅在 Solaris 10 3/05 中管理接口。有关 Oracle Solaris : 新增功能的完整列表以及 Oracle Solaris : 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》

在 Solaris 10 1/06 中,引入了以下新功能:

在 Solaris 10 7/07 中,/etc/inet/ipnodes 已过时。只能对早期 Solaris 10 发行版使用 /etc/inet/ipnodes,如以下各个过程中所述。

接口管理(任务列表)

下表列出了配置网络接口的各种任务,包括 VLAN 和链路聚合等特殊配置。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。

任务 

说明 

参考 

检查系统上接口的状态。 

列出系统上的所有接口,并检查已检测哪些接口。 

如何获取接口状态

在安装系统后添加单个接口。 

通过配置其他接口将系统更改为多宿主主机或路由器。 

如何在安装系统后配置物理接口

SPARC: 检查接口的 MAC 地址是否唯一。 

确保接口是使用其出厂安装的 MAC 地址而不是系统 MAC 地址(仅限 SPARC)配置的。 

SPARC: 如何确保接口的 MAC 地址是唯一的

规划虚拟局域网 (Virtual Local Area Network, VLAN)。 

在创建 VLAN 之前执行必要的规划任务。 

如何规划 VLAN 配置

配置 VLAN。 

在网络上创建和修改 VLAN。 

如何配置 VLAN

计划聚合。 

在配置聚合前先设计聚合并执行必要的规划任务。 

链路聚合概述

配置聚合。 

执行各种与链路聚合相关的任务。 

如何创建链路聚合

规划并配置 IPMP 组。 

为属于 IPMP 组的接口配置故障转移和故障恢复。 

如何规划 IPMP 组

如何配置具有多个接口的 IPMP 组

管理单个网络接口

安装 Oracle Solaris : 后,您可能会在系统上配置或管理接口以达到以下目的:

本节包含有关配置单个网络接口的信息(从 Solaris 10 1/06 发行版开始)。有关将接口配置到以下分组之一的信息,请参阅以下各节:

Procedure如何获取接口状态

从 Solaris 10 1/06 开始,此过程说明如何确定系统上当前可用的接口及其状态。此过程还显示当前已检测哪些接口。如果使用的是早期的 Solaris 10 3/05,请参阅如何获取有关特定接口的信息

  1. 在要配置接口的系统上,承担主管理员角色或成为超级用户。

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

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


    # dladm show-link
    

    此步骤使用 dladm 命令(该命令在 dladm(1M) 手册页中详述)。此命令报告它找到的所有接口驱动程序,而不管接口当前是否已配置。

  3. 确定当前在系统上已检测哪些接口。


    # ifconfig -a
    

    ifconfig 命令具有许多附加功能,其中包括检测接口。有关更多信息,请参阅 ifconfig(1M) 手册页。


示例 6–1 使用 dladm 命令获取接口的状态

以下示例说明 dladm 命令显示的状态。


# 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
 

dladm show-link 的输出指示本地主机可以使用四个接口驱动程序。可以针对 VLAN 配置 cebge 接口。但是,只有非 VLAN 类型的 GLDV3 接口才可以用于链路聚合。

以下示例说明 ifconfig -a 命令显示的状态。


# 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 3
         inet 192.168.84.253 netmask ffffff00 broadcast 192.168.84.255
        ether 0:3:ba:7:84:5e  
bge0: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4>mtu 1500 index 2
         inet 10.8.57.39 netmask ffffff00 broadcast 10.8.57.255
        ether 0:3:ba:29:fc:cc 

ifconfig -a 命令的输出仅显示两个接口(ce0bge0)的统计信息。此输出说明仅检测了 ce0bge0,而且它们可以由网络通信流量使用。可以在 VLAN 中使用这些接口。由于已检测 bge0,无法在聚合中再使用此接口。


Procedure如何在安装系统后配置物理接口

使用下一过程来配置接口。如果使用的是 Solaris 10 3/05 发行版,则应使用如何在安装后添加物理接口(仅适用于 Solaris 10 3/05)中的过程。

开始之前
  1. 在要配置接口的系统上,承担主管理员角色或成为超级用户。

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

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


    # dladm show-link
    
  3. 配置并检测每个接口。


    # ifconfig interface plumb up
    

    例如,对于 qfe0,请键入:


    # ifconfig qfe0 plumb up
    

    注 –

    使用 ifconfig 命令显式配置的接口在重新引导后不会继续存在。


  4. 将 IPv4 地址和网络掩码指定给接口。


    # ifconfig interface IPv4-address netmask+netmask
    

    例如,对于 qfe0,请键入:


    # ifconfig
    qfe0 192.168.84.3 netmask + 255.255.255.0
    

    注 –

    可以使用传统的 IPv4 表示法或 CIDR 表示法指定 IPv4 地址。


  5. 验证新配置的接口是否已检测并配置,或者是否带有 "UP" 标志。


    # ifconfig
    -a
    

    检查所显示的每个接口的状态行。确保状态行上的输出包含 UP 标志,例如:


    qfe0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4>
    mtu 1500 index 2
  6. (可选)要使接口配置在重新引导后继续存在,请执行以下步骤:

    1. 为要配置的每个接口创建 /etc/hostname.interface 文件。

      例如,要添加 qfe0 接口,请创建以下文件:


      # vi /etc/hostname.qfe0
      

      注 –

      如果为同一接口创建备用主机名文件,则备用文件也必须遵循命名格式 hostname.[0-9]*,如 hostname.qfe0.a123。诸如 hostname.qfe0.bakhostname.qfe0.old 之类的名称无效,且会在系统引导期间被脚本忽略。

      也请注意,一个给定的接口只能有一个相应的主机名文件。如果用有效的文件名为接口创建一个备用主机名文件,例如 /etc/hostname.qfe/etc/hostname.qfe.a123,则引导脚本会尝试同时引用这两个主机名文件的内容来进行配置,因而会产生错误。要避免这些错误,请为给定配置中不使用的主机名文件使用无效的文件名。


    2. 编辑 /etc/hostname.interface 文件。

      至少将接口的 IPv4 地址添加到该文件。可以使用传统的 IPv4 表示法或 CIDR 表示法指定接口的 IP 地址。还可以将网络掩码和其他配置信息添加到该文件。


      注 –

      有关如何将 IPv6 地址添加到接口,请参阅修改主机和服务器的 IPv6 接口配置


    3. 对于 Solaris 10 11/06 和 Oracle Solaris 10 的早期发行版,将新接口的项添加到 /etc/inet/ipnodes 文件中。

    4. 将新接口的项添加到 /etc/inet/hosts 文件中。

    5. 执行重新配置引导。


      # reboot -- -r
      
    6. 验证是否已配置在 /etc/hostname. interface 文件中创建的接口。


      # ifconfig -a
      

      有关示例,请参阅示例 6–2


示例 6–2 添加持久性接口配置

该示例说明如何将接口 qfe0qfe1 配置为主机。这些接口在重新引导后仍继续存在。


# dladm show-link
eri0    type: legacy    mtu: 1500       device: eri0 
qfe0    type: legacy    mtu: 1500       device: qfe0 
qfe1    type: legacy    mtu: 1500       device: qfe1 
qfe2    type: legacy    mtu: 1500       device: qfe2 
qfe3    type: legacy    mtu: 1500       device: qfe3 
bge0    type: non-vlan  mtu: 1500       device: bge0
# vi /etc/hostname.qfe0
192.168.84.3 netmask 255.255.255.0
# vi /etc/hostname.qfe1 
192.168.84.72 netmask 255.255.255.0
# vi /etc/inet/hosts
# Internet host table 
# 
127.0.0.1       localhost 
10.0.0.14       myhost
192.168.84.3       interface-2 
192.168.84.72       interface-3
For Solaris 10 11/06 and earlier releases:# vi /etc/inet/ipnodes
10.0.0.14 myhost
192.168.84.3       interface-2 
192.168.84.72       interface-3

此时,可以重新引导系统。


# reboot -- -r

引导系统后,验证接口配置。


ifconfig -a
# ifconfig -a lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu
8232 index 1
         inet 127.0.0.1 netmask ff000000  
eri0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
         inet 10.0.0.14netmask ff000000 broadcast 10.255.255.255
         ether 8:0:20:c1:8b:c3  
qfe0:flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3  
      inet 192.168.84.3 netmask ffffff00 broadcast 192.255.255.255
      ether 8:0:20:c8:f4:1d  
qfe1: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4>mtu 1500 index 4
         inet 192.168.84.72 netmask ffffff00 broadcast 10.255.255.255
        ether 8:0:20:c8:f4:1e 

另请参见

Procedure如何删除物理接口

使用此过程可删除物理接口。如果使用的是早期的 Solaris 10 3/05,请参阅如何删除物理接口(仅适用于 Solaris 10 3/05)

  1. 在要删除接口的系统上,承担主管理员角色或成为超级用户。

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

  2. 删除物理接口。


    # ifconfig interface down unplumb 
    

    例如,要删除接口 qfe1,可键入:


    # ifconfig qfe1 down unplumb
    

ProcedureSPARC: 如何确保接口的 MAC 地址是唯一的

使用此过程配置 MAC 地址。

一些应用程序要求主机上的每个接口都具有唯一的 MAC 地址。但是,每个基于 SPARC 的系统都具有系统范围的 MAC 地址,缺省情况下所有接口都使用该地址。以下是在 SPARC 系统上可能希望为接口配置出厂安装的 MAC 地址的两种情况。

EEPROM 参数 local-mac-address? 确定 SPARC 系统上的所有接口使用系统范围的 MAC 地址还是其唯一 MAC 地址。以下过程说明如何使用 eeprom 命令检查 local-mac-address? 的当前值以及更改它的值(如有必要)。

  1. 在要配置接口的系统上,承担主管理员角色或成为超级用户。

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

  2. 确定系统上的所有接口当前是否都使用系统范围的 MAC 地址。


    # eeprom local-mac-address?
    local-mac-address?=false

    在此示例中,对 eeprom 命令的响应 local-mac-address?=false 表示所有接口确实使用了系统范围的 MAC 地址。local-mac-address?=false 的值必须先更改为 local-mac-address?=true,然后接口才能成为 IPMP 组的成员。对于聚合,也应该将 local-mac-address?=false 更改为 local-mac-address?=true

  3. 如有必要,请按如下所示更改 local-mac-address? 的值:


    # eeprom local-mac-address?=true
    

    重新引导系统时,具有出厂安装的 MAC 地址的接口现在使用这些出厂设置,而不是系统范围的 MAC 地址。没有出厂设置的 MAC 地址的接口继续使用系统范围的 MAC 地址。

  4. 检查系统上所有接口的 MAC 地址。

    查找多个接口具有相同 MAC 地址的情况。在此示例中,所有接口都使用系统范围的 MAC 地址 8:0:20:0:0:1


    ifconfig -a
    lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
          inet 127.0.0.1 netmask ff000000  
    hme0: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
          inet 10.0.0.112 netmask ffffff80 broadcast 10.0.0.127
          ether 8:0:20:0:0:1 
    ce0: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
          inet 10.0.0.114 netmask ffffff80 broadcast 10.0.0.127
          ether 8:0:20:0:0:1 
    ce1: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
          inet 10.0.0.118 netmask ffffff80 broadcast 10.0.0.127
          ether 8:0:20:0:0:1

    注 –

    仅当多个网络接口仍具有相同 MAC 地址时,才继续执行下一步。否则,转到最后一步。


  5. 如有必要,请手动配置其余的接口,以便所有接口都具有唯一的 MAC 地址。

    /etc/hostname.interface 文件中为特定接口指定唯一的 MAC 地址。

    在步骤 4 的示例中,需要用本地管理的 MAC 地址配置 ce0ce1。例如,要用本地管理的 MAC 地址 06:05:04:03:02 重新配置 ce1,可将以下行添加到 /etc/hostname.ce1 中:


    ether 06:05:04:03:02 
    

    注 –

    要防止手动配置的 MAC 地址与网络中的其他 MAC 地址冲突所带来的任何风险,必须始终配置本地管理的 MAC 地址,如 IEEE 802.3 标准定义的那样。


    也可以使用 ifconfig ether 命令为当前会话配置接口的 MAC 地址。但是,使用 ifconfig 直接进行的任何更改在重新引导后都不会保留。有关详细信息,请参阅 ifconfig(1M) 手册页。

  6. 重新引导系统。

管理物理接口的基础知识

网络接口提供系统和网络之间的连接。基于 Oracle Solaris : 的系统可以具有两种类型的接口:物理接口和逻辑接口。物理接口由软件驱动程序和连接网络介质(如以太网电缆)的连接器组成。可以对物理接口进行分组,以达到管理性或可用性目的。逻辑接口是在现有物理接口上配置的,通常用于在物理接口上添加地址和创建隧道端点。


注 –

逻辑网络接口在使用它们的任务 (如 IPv6 任务、IPMP 任务、DHCP 任务和其他任务)中说明。


大多数计算机系统至少有一个由制造商在主系统板上内置的物理接口。一些系统也可能具有多个内置接口。

除了内置接口外,您可以向系统添加另行购买的接口。另行购买的接口称为网络接口卡 (network interface card, NIC)。应按照制造商的说明安装 NIC。


注 –

NIC 也称为网络适配器


在系统安装过程中,Oracle Solaris : 安装程序检测物理安装的任何接口并显示每个接口的名称。至少必须配置接口列表中的一个接口。在安装过程中配置的第一个接口成为主网络接口。主网络接口的 IP 地址与系统的已配置主机名(存储在 /etc/nodename 文件中)关联。但是,可以在安装过程中或稍后配置任何其他接口。

网络接口名称

每个物理接口都由唯一的设备名称标识。设备名称的语法如下:


<driver-name><instance-number>

Oracle Solaris : 系统上的驱动程序名称可能包括 cehmebgee1000g 和许多其他驱动程序名称。变量 instance-number 可以具有从零到 n 的值,具体取决于在系统上安装了多少个该驱动程序类型的接口。

以 100BASE-TX 快速以太网接口为例,该接口通常用作主机系统和服务器系统上的主网络接口。此接口的一些典型驱动程序名称是 eriqfehme。在用作主网络接口时,快速以太网接口具有诸如 eri0qfe0 之类的设备名称。

诸如 erihme 之类的 NIC 只有一个接口。但是,许多品牌的 NIC 有多个接口。例如,Quad 快速以太网 (qfe) 卡具有四个接口:从 qfe0qfe3

检测接口

必须先对接口进行检测,之后它才能在系统和网络之间传递通信流量。检测过程涉及将接口与设备名称进行关联。然后,设置流以使 IP 协议可以使用该接口。物理接口和逻辑接口都必须进行检测。使用 ifconfig 命令的适当语法,作为引导序列的一部分或显式地检测接口。

在安装过程中配置接口时,将自动检测该接口。如果在安装过程中决定不在系统上配置其他接口,则不会检测这些接口。

Oracle Solaris : 接口类型

从 Solaris 10 1/06 发行版开始,Oracle Solaris : 支持以下两种类型的接口:

管理虚拟局域网


注 –

如果使用的是早期的 Solaris 10 3/05,请参阅配置 VLAN(仅适用于 Solaris 10 3/05)


虚拟局域网 (virtual local area network, VLAN) 是在 TCP/IP 协议栈的数据链路层上对局域网的细分。可以为采用交换机技术的局域网创建 VLAN。通过将用户组指定给 VLAN,可以加强整个本地网络的网络管理和安全性。还可以将同一系统上的接口指定给不同的 VLAN。

如果需要实现以下目的,请考虑将本地网络划分为多个 VLAN:

VLAN 拓扑概述

使用交换 LAN 技术,可以将本地网络中的系统组织到 VLAN 中。将本地网络划分为 VLAN 之前,必须先获取支持 VLAN 技术的交换机。可以对交换机上的所有端口进行配置,使其为单个 VLAN 或多个 VLAN 提供服务,具体取决于 VLAN 拓扑设计。配置交换机端口的过程因交换机制造商而异。

下图显示了子网地址为 192.168.84.0 的局域网。此 LAN 已细分为三个 VLAN:红 VLAN、黄 VLAN 和蓝 VLAN。

图 6–1 具有三个 VLAN 的局域网

周围的上下文介绍了该图的内容。

LAN 192.168.84.0 上的连通性由交换机 1 和交换机 2 处理。红 VLAN 包含会计工作组中的系统。人力资源工作组的系统位于黄 VLAN 中。信息技术工作组的系统被指定给蓝 VLAN。

VLAN 标记和物理连接点

局域网中的每个 VLAN 都由 VLAN 标记或 VLAN ID (VID) 标识。VID 是在 VLAN 配置过程中指定的。VID 是一个介于 1 和 4094 之间的 12 位标识符,为每个 VLAN 提供唯一标识。在图 6–1 中,红 VLAN 的 VID 是 789,黄 VLAN 的 VID 是 456,蓝 VLAN 的 VID 是 123。

配置交换机使其支持 VLAN 时,需要为每个端口指定 VID。端口上的 VID 必须与指定给该端口所连接的接口的 VID 相同,如下图所示。

图 6–2 具有 VLAN 的网络的交换机配置

周围的上下文介绍了该图的内容。

图 6–2 显示了连接到不同 VLAN 的多台主机。两台主机属于同一个 VLAN。在此图中,三台主机的主网络接口连接到交换机 1。主机 A 是蓝 VLAN 的成员。因此,主机 A 的接口配置为 VID 123。此接口连接到交换机 1 上的端口 1,该端口随后被配置为 VID 123。主机 B 是 VID 为 456 的黄 VLAN 的成员。主机 B 的接口连接到交换机 1 上的端口 5,该端口随后被配置为 VID 456。最后,主机 C 的接口连接到交换机 1 上的端口 9。蓝 VLAN 被配置为 VID 123。

该图还显示了一台主机也可以属于多个 VLAN。例如,主机 A 通过主机的接口配置了两个 VLAN。第二个 VLAN 被配置为 VID 456,并连接到端口 3,而端口 3 也被配置为 VID 456。因此,主机 A 同是蓝 VLAN 和黄 VLAN 的成员。

在 VLAN 配置过程中,必须指定 VLAN 的物理连接点(即 PPA)。使用以下公式可以获得 PPA 值:


driver-name + VID * 1000 + device-instance

请注意,device-instance 编号必须小于 1000。

例如,若要将 ce1 接口配置为 VLAN 456 的一部分,则创建以下 PPA:


ce + 456 * 1000 + 1= ce456001

规划网络中的 VLAN

使用以下过程可规划网络上的 VLAN。

Procedure如何规划 VLAN 配置

  1. 检查本地网络拓扑,并确定在何处划分 VLAN 比较合适。

    有关此类拓扑的基本示例,请参阅图 6–1

  2. 创建 VID 的编号方案,并将 VID 指定给每个 VLAN。


    注 –

    VLAN 编号方案可能已存在于网络中。如果是这样,则必须在现有的 VLAN 编号方案中创建 VID。


  3. 在每个系统上,确定哪些接口将是特定 VLAN 的成员。

    1. 确定系统上配置了哪些接口。


      # dladm show-link
      
    2. 确定哪个 VID 将与系统上的相应数据链路相关联。

    3. 为要配置为 VLAN 一部分的每个接口创建 PPA。

    并非系统上的所有接口都一定要在同一 VLAN 上进行配置。

  4. 检查接口与网络交换机的连接。

    记下每个接口的 VID 以及每个接口所连接到的交换机端口。

  5. 用与所连接到的接口相同的 VID 配置交换机的每个端口。

    有关配置说明,请参阅交换机制造商的文档。

配置 VLAN


注 –

如果使用的是早期的 Solaris 10 3/05,请参阅配置 VLAN(仅适用于 Solaris 10 3/05)


目前,Oracle Solaris : 在以下接口类型上支持 VLAN:

对于传统接口类型,只有 ce 接口可以成为 VLAN 的成员。可以在同一 VLAN 中配置不同类型的接口。


注 –

可以配置多个 VLAN 到 IPMP 组中。有关 IPMP 组的更多信息,请参阅IPMP 接口配置


Procedure如何配置 VLAN

如果使用的是 Solaris 10 3/05,则应使用如何配置静态 VLAN(仅适用于 Solaris 10 3/05)中的过程。

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

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

  2. 确定正在系统上使用的接口的类型。


    # 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
  3. 将接口配置为 VLAN 的一部分。


    # ifconfig interface-PPA plumb IP-address up
    

    例如,可以使用以下命令,将新 IP 地址为 10.0.0.2 的接口 ce1 配置到 VID 为 123 的 VLAN 中:


    # ifconfig ce123001 plumb 10.0.0.2
    up
    

    注 –

    您可以将 IPv4 和 IPv6 地址指定给 VLAN,就像您对其他接口所执行的那样。


  4. (可选)要使 VLAN 设置在重新引导后继续存在,请为配置为 VLAN 的一部分的每个接口创建 hostname.interface-PPA 文件。


    # cat hostname.interface-PPA
    IPv4-address
    
  5. 在交换机上,设置 VLAN 标记和 VLAN 端口,使之与在系统上设置的 VLAN 相对应。


示例 6–3 配置 VLAN

此示例说明如何将设备 bge1bge2 配置到 VID 为 123 的 VLAN 中。


# 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 bge123001 plumb 10.0.0.1 up
# ifconfig bge123002 plumb 10.0.0.2 up  
# cat hostname.bge123001   10.0.0.1
# cat hostname.bge123002   10.0.0.2
# ifconfig -a
 lo0: flags=2001000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
         inet 127.0.0.1 netmask ff000000  
 bge123001: flags=201000803<UP,BROADCAST,MULTICAST,IPv4,CoS> mtu 1500 index 2
         inet 10.0.0.1 netmask ff000000 broadcast 10.255.255.255
         ether 0:3:ba:7:84:5e  
bge123002:flags=201000803 <UP,BROADCAST,MULTICAST,IPv4,CoS> mtu 1500 index 3
         inet 10.0.0.2 netmask ff000000 broadcast 10.255.255.255
         ether 0:3:ba:7:84:5e  
ce0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4>mtu 1500 index 4
         inet 192.168.84.253 netmask ffffff00 broadcast 192.168.84.255
         ether 0:3:ba:7:84:5e
# 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
bge123001       type: vlan 123  mtu: 1500       device: bge1 
bge123002       type: vlan 123  mtu: 1500       device: bge2

链路聚合概述


注 –

最初的 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