What You See Is What You Get Element

数据链路多路径的更多用途

使用 Oracle Solaris 11

作者:Orgad Kimchi,合著者:Nicolas Droux

如何在使用 DLMP 聚合的多租户云环境中保护网络和执行典型的网络管理操作。


2014 年 7 月发布


右箭头 第 1 部分 — 使用数据链路多路径赋予网络高可用性
右箭头 第 2 部分 — 数据链路多路径的更多用途

想对本文发表评论吗?请将链接发布在 Facebook 的 OTN Garage 页面上。有类似文章要分享?请将其发布在 Facebook 或 Twitter 上,我们来进行讨论。

简介

本文是由两部分组成的系列文章的第二部分,介绍如何使用数据链路多路径 (DLMP) 聚合。

在本文中,我们将介绍如何在使用 DLMP 聚合的环境中执行以下网络管理操作:

DLMP 聚合赋予网络高可用性 (HA)。要了解如何创建 DLMP 聚合和查看本系列文章中所用系统架构,请参见第 1 部分

使用链路保护保护网络

在下一个用例中,我们将结合使用 DLMP 聚合技术和其他网络技术:链路保护。

关于链路保护

随着越来越多系统配置采用虚拟化,主机管理员可以为 Oracle Solaris 区域提供对物理或虚拟链路的独占访问。这种配置允许虚拟环境的网络流量与主机系统接收或发送的其他流量隔离,从而提高了网络性能。同时,此配置还会将系统和整个网络暴露于来宾环境可能产生的有害数据包的风险之下。

链路保护的目的是防止潜在恶意流量可能对网络造成的损害。该特性可防止以下基本威胁:

  • IP、DHCP 和 MAC 欺诈
  • L2 帧欺诈,如网桥协议数据单元 (BPDU) 攻击

:链路保护不会取代部署防火墙的需要,特别是对于具有复杂筛选要求的配置。

链路保护提供了云环境中所需的灵活性,例如,可以从 Oracle Solaris 区域中启用 root 帐户访问。

虽然启用 root 帐户访问提供了灵活性,但也暴露出安全隐患。例如,root 用户使用非 IPv4、IPv6 或 ARP 类型的不同源 IP 或 MAC 地址或数据包发送传出数据包,可以产生欺诈攻击。我们可以使用链路保护来防止此类攻击。

链路保护可通过四种不同属性启用:ip-nospoofdhcp-nospoofmac-nospoofrestricted。下表描述了这些属性。

表 1. 链路保护属性描述
属性名称 属性说明
ip-nospoof 此属性要求所有传出的 IP、ARP 或 NDP 数据包的地址字段必须与 DHCP 配置的 IP 地址或 allowed-ips link 属性中所列地址之一匹配。
mac-nospoof 此属性可防止 root 用户更改区域的 MAC 地址。传出数据包的源 MAC 地址必须与数据链路已配置的 MAC 地址匹配。
dhcp-nospoof 此属性可防止 DHCP 的客户端 ID/DUID 欺诈。
restricted 此属性只允许 IPv4、IPv6 和 ARP 协议。使用此属性可防止链路产生潜在有害的 L2 控制帧。

启用链路保护

以下示例演示如何启用链路保护。

在全局区域中,运行以下命令启用 vnic1 上的链路保护:

root@global_zone:~# dladm set-linkprop -p protection=mac-nospoof,restricted,ip-nospoof vnic1

接下来,我们将对区域的 IP 地址设置限制;这样,即使区域的 root 用户也不能更改 IP 地址。

将 IP 地址 10.0.0.1 指定为 vnic1 链路的 allowed-ips 属性的值:

root@global_zone:~# dladm set-linkprop -p allowed-ips=10.0.0.1 vnic1

验证链路保护属性值,如清单 1 所示:

root@global_zone:~# dladm show-linkprop -p protection,allowed-ips vnic1
LINK PROPERTY PERM VALUE DEFAULT POSSIBLE
vnic1 protection rw mac-nospoof, -- mac-nospoof,
restricted, restricted,
ip-nospoof ip-nospoof,
dhcp-nospoof
vnic1 allowed-ips rw 10.0.0.1 -- --

清单 1

在清单 1 中,我们可以看到 10.0.0.1 设置为允许的 IP 地址。

(可选)按照第 1 部分的“创建第一个区域 (zone1)”一节中所示,使用 anet 配置区域 VNIC 时,用 link-protection anet 属性配置其链路保护,该属性默认设置为 mac-nospoof。使用 anet 还允许在区域配置中通过 allowed-address 属性指定 IP 地址,然后通过设置 configure-allowed-address 属性指定在区域启动时自动配置该地址。这是使用 anetzonecfg 的另一个优点。清单 2 显示了一个使用 anet 属性设置区域的示例:

root@global_zone:~# zonecfg -z zone1
Use 'create' to begin configuring a new zone.
zonecfg:zone1> create
create: Using system default template 'SYSdefault'
zonecfg:zone1> set zonepath=/zones/zone1
zonecfg:zone1> set autoboot=true
zonecfg:zone1> select anet linkname=net0
zonecfg:zone1:net> set lower-link=aggr0
zonecfg:zone1:net> set allowed-address=10.0.0.1/24
zonecfg:zone1:net> set configure-allowed-address=true
zonecfg:zone1:net> end
zonecfg:zone1> verify
zonecfg:zone1> commit
zonecfg:zone1> exit

清单 2

我们在清单 2 中看到,可以动态设置保护属性值,无需重新启动区域;这对于通常有严格的正常运行时间要求的生产环境非常有用。此外,此功能还提供了更改环境安全级别所需的灵活性。另一个优点是它将 IP 网络配置封装在区域配置中,简化了物理计算机之间的区域迁移。

测试链路保护

下面尝试更改区域 IP 地址来测试链路保护。

首先,登录区域:

root@global_zone:~# zlogin zone1

现在,删除 IP 接口:

root@zone1:~# ipadm delete-ip vnic1

接下来,新建一个 IP 接口:

root@zone1:~# ipadm create-ip vnic1

现在尝试分配一个新的 IP 地址 (10.0.0.10),如清单 3 所示:

root@zone1:~# ipadm create-addr -a local=10.0.0.10/24 vnic1/v4
ipadm: cannot create address: Permission denied

清单 3

我们可以在清单 3 中看到,root 用户不能更改区域 IP 地址!

我们尝试将 IP 地址更改为允许的 IP 地址 (10.0.0.1):

root@zone1:~# ipadm create-addr -a local=10.0.0.1/24 vnic1/v4

验证 IP 地址更改,如清单 4 所示:

root@zone1:~# ipadm show-addr vnic1
ADDROBJ           TYPE     STATE        ADDR
vnic1/v4          inherited ok          10.0.0.1/24

清单 4

我们在清单 4 中可以看到,可以更改 IP 地址。

(可选)禁用链路保护

我们可以从全局区域禁用链路保护:

root@global_zone:~# dladm reset-linkprop -p protection,allowed-ips vnic1

:禁用此属性时无需重新启动区域。

验证已经删除了链路保护,如清单 5 所示:

root@global_zone:~# dladm show-linkprop -p protection,allowed-ips vnic1
vnic1 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE
vnic1 protection rw -- -- mac-nospoof,
restricted,
ip-nospoof,
dhcp-nospoof
vnic1 allowed-ips rw -- -- --

清单 5

在清单 5 中可以看到,我们对 allowed-ips 属性并无限制。

牢记事项

  • 我们可以使用链路保护提高网络基础架构的安全性。
  • 链路保护有四种不同模式:ip-nospoofdhcp-nospoofmac-nospoofrestricted
  • 您可以在 VNIC 上添加链路保护。
  • 您可以使用 dladm set-linkprop 命令添加链路保护。
  • 您可以使用 dladm reset-linkprop 命令将链路保护重置为默认模式。
  • 您可以使用 dladm show-linkprop 命令显示链路保护状态。
  • 链路保护可以动态更改。

启用网络资源管理

在所有云基础架构中,管理环境性能和满足可靠的网络服务级别协议 (SLA) 都需要资源管理。

以下示例将展示如何启用网络资源管理。

关于网络资源管理

Oracle Solaris 11 自带内置的 SLA 特性,允许对 VNIC 和流量流配置带宽限制和/或优先级。

将 DLMP 聚合与带宽限制和流结合使用时,我们可以从网络高可用性 (HA) 和高级网络资源管理中受益。

设置带宽限制

可以在全局区域中配置 VNIC 的带宽控制,以限制区域通过其 VNIC 收发的网络流量。

我们可以使用 VNIC 的 maxbw 属性限制 VNIC 的吞吐量,如图 1 所示。我们使用的是早就熟悉的 dladm 命令。

图 1. 设置带宽限制

图 1. 设置带宽限制

例如,以下命令将 vnic1 的最大吞吐量设为 500 Mb/秒,实际上是提供物理数据链路(网络端口 net0)连接的一部分。

root@global_zone:~# dladm set-linkprop -p maxbw=500M vnic1

验证更改,如清单 6 所示。

root@global_zone:~# dladm show-linkprop -p maxbw vnic1
LINK     PROPERTY            PERM VALUE        DEFAULT      POSSIBLE
vnic1    maxbw               rw     500        --           --

清单 6

在清单 6 中,我们可以看到 VNIC 最大吞吐量已经设为 500 Mb/秒。

(可选)可以使用 zonecfg 命令在 anet 上设置类似的 maxbw 属性:

root@global_zone:~# zonecfg -z zone1
zonecfg:zone1> select anet linkname=net0
zonecfg:zone1:anet> set maxbw=500M 
zonecfg:zone1:anet> end
zonecfg:zone1> verify
zonecfg:zone1> commit
zonecfg:zone1> exit

:配置 VNIC 的 maxbw 之后,可以使用边缘虚拟桥接 (EVB) 对相邻物理网络交换机强制实施该带宽控制。有关 EVB 的详细信息,请参见“Oracle Solaris 中的边缘虚拟桥接”。

如果您需要细粒度的网络带宽控制,Oracle Solaris 11 提供了设置 的功能,这是一项高级服务质量 (QoS) 机制。流让我们能够限制特定网络接口上特定网络端口的网络带宽。

:您可以结合使用对数据链路及其流的带宽控制。

使用流控制带宽

我们可以在先前创建的 DLMP 聚合 (aggr0) 上实现流。这有助于缓解针对 Web 服务器的拒绝服务 (DOS) 攻击。我们将区域的 HTTPS 网络最大带宽设为 100 Mb/秒,可以最大程度降低攻击对基础架构其余部分的影响。

在以下示例中,我们将 vnic1 网络接口上的安全套接字层 (SSL) 流量限制为 100 MB,如图 2 所示。

图 2. 设置一个流来控制带宽

图 2. 设置一个流来控制带宽

首先,我们使用 flowadm 命令在 zone1 中创建流:

root@zone1:~# flowadm add-flow -l vnic1 -a transport=TCP,local_port=443 https-flow

将流的带宽限制设为 100 Mb/秒。

root@zone1:~# flowadm set-flowprop -p maxbw=100M https-flow

验证流创建:

root@zone1:~# flowadm show-flow
FLOW        LINK     PROTO LADDR             LPORT RADDR             RPORT DSFLD
https-flow  vnic1    tcp   --                443   --                --    --

然后验证带宽限制,如清单 7 所示:

root@zone1:~# flowadm show-flowprop https-flow
FLOW         PROPERTY        PERM VALUE          DEFAULT        POSSIBLE
https-flow   maxbw           rw     100          --             --
https-flow   priority        rw   medium         medium         low,medium,high
https-flow   hwflow          r-   off            --             on,off

清单 7

在清单 7 中,我们可以的看到流的带宽限制为 100 Mb。

注意,在上例中,是从非全局区域在 VNIC 上创建流,因此流是匹域配置的一部分,并将随区域一起迁移。此类流将在区域启动时自动重新实例化。

使用流获得可观察性

流技术的另一个有用特性是能够使用 flowstat 命令监视流的网络性能统计信息。此特性对于解决网络性能问题非常有用。

我们重新运行第 1 部分的“测试 HA 功能”一节中用过的 iperf 网络性能工具,但此次服务器将监听端口 443(其上设置了流的端口)。

首先,在 zone1 上启动 iperf 服务器:

:您可能需要停止之前的 iperf 服务器;按 Ctrl-C 即可停止。

root@zone1:~# iperf -s -l 128k -p 443   
------------------------------------------------------------
Server listening on TCP port 443
TCP window size:   125 KByte (default)
------------------------------------------------------------

接下来,从 zone3 启动 iperf 客户端(加载程序):

root@zone3:~# iperf -c zone1 -l 128k -P 4 -i 1 -p 443 -t 360
------------------------------------------------------------
Client connecting to zone1, TCP port 443
TCP window size: 48.0 KByte (default)
------------------------------------------------------------
[  7] local 10.0.0.3 port 53777 connected with 10.0.0.1 port 443
[  4] local 10.0.0.3 port 58403 connected with 10.0.0.1 port 443
[  6] local 10.0.0.3 port 59851 connected with 10.0.0.1 port 443
[  5] local 10.0.0.3 port 42292 connected with 10.0.0.1 port 443
[ ID] Interval       Transfer     Bandwidth
[  7]  0.0- 1.0 sec  5.88 MBytes  49.3 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[  6]  0.0- 1.0 sec  7.12 MBytes  59.8 Mbits/sec
...

打开另一个终端,然后从全局区域启动网络流观察,如清单 8 所示:

root@global_zone:~# flowstat -i 1
           FLOW    IPKTS   RBYTES   IDROPS    OPKTS   OBYTES   ODROPS
zone1/https-flow    5.18M    7.51G  240.06K    2.63M  175.30M        0
zone1/https-flow    9.43K   13.62M      416    1.30K   87.00K        0
zone1/https-flow    9.46K   13.35M      300    2.93K  195.31K        0
zone1/https-flow   10.01K   13.65M      460    4.89K  325.77K        0
zone1/https-flow    8.75K   12.00M      425    4.50K  300.27K        0
zone1/https-flow    9.70K   13.50M      459    4.99K  332.64K        0
zone1/https-flow    8.03K   11.13M      371    4.17K  278.80K        0
zone1/https-flow   10.17K   14.12M      485    5.21K  347.46K        0
zone1/https-flow    9.13K   12.50M      416    4.66K  310.23K        00
^C

清单 8

:要停止 flowstat 命令,请按 Ctrl-C。

在清单 8 中,您可以看到之前创建的流 (zone1/https-flow) 的网络统计信息。此外,您还可以看到带宽限制为约 13 MB/秒(100 Mb/秒)。

流功能允许动态更改带宽限制,例如,如果为了满足此 Web 服务器的需求而需要增加带宽。此功能在云环境中非常重要,因为它可以提供弹性网络基础架构。

我们将带宽限制更改为 200 Mb/秒:

root@zone1:~# flowadm set-flowprop -p maxbw=200M https-flow

验证带宽更改,如清单 9 所示。

root@zone1:~# flowadm show-flowprop https-flow
FLOW         PROPERTY        PERM VALUE          DEFAULT        POSSIBLE
https-flow   maxbw           rw     200          --             --
https-flow   priority        rw   medium         medium         low,medium,high
https-flow   hwflow          r-   off            --             on,off

清单 9

在清单 9 中,我们可以看到现在带宽限制为 200 Mb/秒。

我们回到运行 flowstat 命令的终端,如清单 10 所示。

root@global_zone:~# flowstat -i 1
FLOW IPKTS RBYTES IDROPS OPKTS OBYTES ODROPS
zone1/https-flow   25.14K   33.00M      550   12.67K  839.20K        0
zone1/https-flow   18.29K   24.88M      580    9.23K  611.16K        0
zone1/https-flow   21.39K   28.62M      647   10.86K  721.25K        0
zone1/https-flow   18.22K   24.75M      531    9.24K  613.42K        0
zone1/https-flow   19.14K   25.75M      654    9.72K  646.39K        0
zone1/https-flow   17.55K   23.42M      504    8.88K  588.76K        0
zone1/https-flow   20.44K   27.76M      656   10.33K  684.23K        0
zone1/https-flow   18.64K   25.07M      567    9.51K  632.57K        0 
^C

清单 10

:要停止 flowstat 命令,请按 Ctrl-C。

在清单 10 中,我们可以看到带宽已经更改为约 25 MB/秒,等于 200 Mb/秒。

我们可以从全局区域同时监视区域及其关联流!

(可选)删除流

完成网络测量之后,您可以删除流:

:删除流时无需重新启动区域;这对生产环境非常有用,此时需要能够在不严重影响环境的情况下解决网络性能问题。

zone1 中列出当前流:

root@zone1:~# flowadm show-flow
FLOW        LINK     PROTO LADDR             LPORT RADDR             RPORT DSFLD
https-flow  vnic1    tcp   --                443   --                --    --

删除 https-flow 流:

root@zone1:~# flowadm remove-flow https-flow

验证流是否已删除,如清单 11 所示:

root@zone1:~# flowadm show-flow

清单 11

如果流已删除,命令将直接返回提示符,无任何输出。在清单 11 中,我们可以看到不再有 https-flow 流。

牢记事项

  • 可以在全局区域中配置 VNIC 的带宽控制,以限制区域通过其 VNIC 收发的网络流量。
  • 您可以结合使用对数据链路及其流的带宽控制。
  • 流让我们能够限制特定数据链路上特定网络端口或 IP 地址的网络带宽。
  • 您可以在 VNIC 上添加流,每个 VNIC 可以有许多流。
  • 您可以使用 flowadm add-flow 命令添加流,使用 flowadm remove-flow 命令删除流。
  • 您可以使用 flowadm set-flowprop 命令更改流属性。
  • 您可以使用 flowadm show-flow 命令查看配置了哪些流。
  • 您可以从全局区域或非全局区域设置流。
  • 您可以动态更改流属性,如带宽。
  • 您可以使用 flowstat 监视流;而且,您还可以从全局区域监视所有流。

使用 DLMP 提高 NFS 服务器的可用性

Oracle Solaris 11 中引入的一个新特性支持在非全局区域中设置 NFS 服务器。使用此功能可以为云环境中的每个租户构建一个 NFS 服务器,在区域之间提供安全的共享存储,如图 3 所示。

图 3. 在区域之间提供安全的共享存储

图 3. 在区域之间提供安全的共享存储

图 4 显示 DLMP 聚合如何为其他网络服务(如 NFS 服务器)提供冗余。

图 4. 使用 DLMP 提高 NFS 服务器的可用性

图 4. 使用 DLMP 提高 NFS 服务器的可用性

创建 ZFS 文件系统并使用 NFS 共享

使用清单 12 中所示命令,我们将创建一个 ZFS 文件系统并使用 NFS 共享该系统:

root@zone1# zfs create -o encryption=on -o dedup=on -o compression=on -o mountpoint=/data -o sharenfs=on rpool/data
Enter passphrase for 'rpool/data': 
Enter again: 

清单 12

:您需要提供密码短语;密码短语至少包括 8 个字符。

清单 12 中的命令使用了以下选项:

  • -o encryption=on 启用加密。
  • -o dedup=on 启用重复数据删除。
  • -o compression=on 启用压缩。
  • -o mountpoint=/data 指定挂载点的位置。
  • -o sharenfs=on 指定应通过 NFS 共享 ZFS 文件系统。

在清单 12 中,我们看到使用一条命令即可创建启用了加密、压缩、重复数据删除功能的 ZFS 文件系统,并使用 NFS 共享该文件系统。

我们来验证是否创建了 NFS 共享,如清单 13 所示:

root@zone1# share
rpool_data      /data   nfs     sec=sys,rw

清单 13

在清单 13 中,我们可以看到已经创建了 NFS 共享。

ZFS 可以共享 NFS 和 SMB(服务器消息块)等文件系统。有关如何使用 ZFS 共享文件系统的更多示例,请参见 zfs_share(1M)。

现在,我们从客户端 (zone3) 挂载此文件系统。

首先,通过列出 zone1 上的 NFS 共享,验证我们可以访问 NFS 共享:

root@zone3# showmount -e zone1
export list for zone1:
/data (everyone)

现在挂载 NFS 文件系统,如清单 14 所示:

root@zone3# mount zone1:/data /mnt

清单 14

运行清单 14 所示命令之后,NFS 服务器将受益于 DLMP 提供的网络 HA,无需在 NFS 服务器上进行任何设置。

由此用例可见,Oracle Solaris 11 操作系统为每层都提供了虚拟化技术,如使用 ZFS 和网络虚拟化的存储虚拟化,以及使用 Oracle Solaris 区域的操作系统虚拟化。

牢记事项

  • DLMP 可以为其他技术(如 NFS)提供冗余。
  • 使用一条命令,我们就能创建启用了加密、压缩、重复数据删除功能的 ZFS 文件系统并使用 NFS 共享该文件系统。
  • ZFS 可以共享 NFS 和 SMB 等文件系统,请参见 zfs_share(1M)。
  • 您可以使用 share 命令查看 NFS 服务器共享。
  • 您可以使用 showmount -e 命令列出远程 NFS 服务器上的共享文件系统。

检测 DLMP 聚合故障

在 DLMP 聚合中,故障检测是检测聚合端口故障的方法。当端口无法发送或接收流量时,即视为端口发生故障。端口的几个可能的故障原因:

  • 电缆损坏(如切断)。
  • 交换机端口关闭。
  • 上游网络路径发生故障。
  • 物理 NIC 发生故障。

关于故障检测

DLMP 聚合对聚合端口执行故障检测,确保网络能够连续发送和接收流量。端口发生故障时,与该端口关联的客户端 — 例如,经过配置的 IP 堆栈或 VNIC — 会故障切换到一个活动端口。发生故障的聚合端口在修复之前将不可用。其余活动端口继续工作,同时根据需要部署任何现有端口。故障端口恢复之后,可将来自其他活动端口的客户端与其关联。

DLMP 聚合支持基于链路的故障检测和基于探测器的故障检测。

  • 基于链路的故障检测 只能检测主机和与直接连接的交换机之间的故障,例如,当电缆切断或交换机端口关闭时。因此,它只能检测数据链路和首跳交换机之间直连丢失造成的故障。默认情况下,创建 DLMP 聚合时将启用基于链路的故障检测。
  • 基于探测器的故障检测 通过发送和接收探测数据包,检测终端主机与配置的目标之间的故障。因此,它克服了基于链路的故障检测的已知限制,相比于仅基于链路的故障检测,它可以检测到更多故障情况。例如,NIC 可能会发生故障或损坏,导致报告错误的链路状态。

    结合使用两种类型的探测器 — 互联网控制消息协议 (ICMP) 探测器(第 3 层探测器)和过渡(第 2 层)探测器)执行基于探测器的故障检测,这两种探测器一起确定聚合的物理数据链路的运行状况。

ICMP 探测器通过向探测目标发送探测数据包检查端口的运行状况。只要可能,会自动配置探测目标的 IP 地址和用于发送这些数据包的本地 IP 地址。如果需要,也可以显式配置一个或多个探测目标和源地址。注意,目标 IP 地址必须与指定的源 IP 地址位于相同的子网。还要注意,针对 DLMP 探测配置的本地 IP 地址可以继续传递正常流量。因此,无需保留 DLM 的专用 IP 地址。

过渡探测通过交换第 2 层过渡探测器在聚合端口之间执行。这些探测器让聚合可以确定所有聚合端口的运行状况,同时避免为每个端口配置单独的本地 IP 探测器地址。

:当在全局区域中创建基于聚合的 VNIC 并将其分配到非全局区域时,基于探测器的故障检测在全局区域中执行。因此,该探测是集中的,无需在各区域中配置 — 不像 IPMP 需要在每个区域中配置。

为 DLMP 聚合配置基于探测器的故障检测

在以下示例中,我们将为聚合 aggr0 设置 ICMP 探测。

首先,设置 aggr0 的探测目标:

root@global_zone:~# dladm set-linkprop -p probe-ip=+ aggr0

:由于未指定源 IP 地址,聚合 aggr0 及其 VNIC 上配置的任何 IP 地址将用作 ICMP 探测器的源 IP 地址。注意,在非全局区域中配置的 VNIC 的 IP 地址不会用于全局区域的探测。

将故障检测时间设置为 5 秒:

root@global_zone:~# dladm set-linkprop -p probe-fdt=5 aggr0

:默认故障检测时间为 10 秒。

显示已设置的属性:

root@global_zone:~# dladm show-linkprop -p probe-ip,probe-fdt aggr0
LINK     PROPERTY        PERM VALUE        EFFECTIVE    DEFAULT   POSSIBLE
aggr0    probe-ip        rw   +            +            --        --
aggr0    probe-fdt       rw   5            5            10        1-600

清单 15 中的示例显示我们的 DLMP 聚合的探测器统计信息。使用探测器类型 -P 选项,您可以提供以逗号分隔的参数列表(t 表示过渡探测器,i 表示 ICMP 探测器,all 表示 ICMP 和过渡探测器)。

root@global_zone:~# dlstat show-aggr -n -P t,i aggr0

    TIME     AGGR     PORT          LOCAL         TARGET  PROBE  NETRTT     RTT
   0.06s    aggr0     net3           net3           net2   t528      --      --
   0.06s    aggr0     net3           net3           net2   t528 13.59ms 14.55ms
   0.17s    aggr0     net1           net1           net0   t528      --      --
   0.17s    aggr0     net1           net1           net0   t528  8.99ms  9.78ms
   0.22s    aggr0     net2           net2           net1   t528      --      --
   0.22s    aggr0     net2           net2           net1   t528  8.44ms  9.36ms
   0.27s    aggr0     net2           net2           net0   t528      --      --
   0.27s    aggr0     net2           net2           net0   t528  8.31ms  9.14ms
...

清单 15

清单 15 输出中显示以下项:

  • TIME:发送探测器的时间(以秒为单位)。此时间相对于发出 dlstat 命令的时间。如果在发出 dlstat 命令之前发送探测器,该时间为负。
  • AGGR:为其发送探测器的聚合的名称。
  • PORT:为其发送探测器的端口的名称。
  • LOCAL:对于 ICMP 探测器,此为探测器的源 IP 地址。对于过渡探测器,此为过渡探测器的来源端口名称。
  • TARGET:对于 ICMP 探测器,此为探测器的目标 IP 地址。对于过渡探测器,此为探测器的目标端口名称。
  • PROBE:表示探测器的标识号。前缀 t 代表过渡探测器,前缀 i 代表 ICMP 探测器。
  • NETRTT:探测器的网络往返时间。该值是发送探测器与从 DLMP 聚合接收确认之间的时间段。
  • RTT:探测器的总往返时间。该值是发送探测器与 DLMP 聚合完成确认过程之间的时间段。

有关如何设置基于探测器的故障检测的更多示例,请参见“使用链路聚合配置高可用性”。

总结

在本文中,我们介绍了如何利用内置的 Oracle Solaris 11 技术实现和监视多租户云基础架构的网络高可用性。本文中的示例展示了如何结合使用数据链路多路径和其他网络技术(如链路保护)提供更大的好处。具体来说,我们结合使用了网络安全与 QoS(通过由带宽控制设置带宽使用限制而实现),并使用流量流管理网络资源。

另请参见

另请参见该作者发表的其他文章:

下面是其他 Oracle Solaris 11 资源:

关于作者

Orgad Kimchi 是 Oracle(之前任职于 Sun Microsystems)ISV 工程小组的首席软件工程师。6 年来,他一直专注于虚拟化、大数据和云计算技术。

Nicolas Droux 是 Oracle 的 Solaris 内核网络首席架构师。他的专长来自其 20 多年从事操作系统内核、网络、虚拟化、安全、I/O、性能、HPC 和云架构工作的经验。

修订版 1.0,2014 年 7 月 9 日

关注我们:
博客 | Facebook | Twitter | YouTube