跳过导航链接 | |
退出打印视图 | |
管理 Oracle Solaris 11.1 网络性能 Oracle Solaris 11.1 Information Library (简体中文) |
本节提供了用于规划和配置 IPMP 组的过程。第 5 章中的概述介绍了如何将 IPMP 组实现为接口。因此,在本章中,术语 IPMP 组和 IPMP 接口可互换使用。
以下过程包括在配置 IPMP 组之前要收集的必要规划任务和信息。这些任务不必按顺序执行。
IPMP 配置取决于用于处理系统上承载的通信类型的网络要求。IPMP 将传出网络包分配到 IPMP 组的各个接口,从而提高了网络吞吐量。然而,对于给定的 TCP 连接,传入通信通常只使用一个物理路径,以尽量降低处理无序包的风险。
因此,如果您的网络处理大量传出通信,将多个接口配置到一个 IPMP 组中可以提高网络性能。相反,如果系统承载大量传入通信,则在组中配置大量接口不一定能通过对通信流量进行负载分配而提高性能。不过,有更多的底层接口有助于在接口出现故障时保证网络的可用性。
要为系统中的每个接口配置唯一的 MAC 地址,请参见《在 Oracle Solaris 11.1 中使用固定网络配置连接系统》中的"如何确保每个接口的 MAC 地址是唯一的"。
同一组中的所有接口必须按相同顺序配置相同的 STREAMS 模块。
您可以通过使用 ifconfig interface modlist 命令打印 STREAMS 模块的列表。例如,以下是 net0 接口的 ifconfig 输出:
# ifconfig net0 modlist 0 arp 1 ip 2 e1000g
如输出所示,接口通常作为网络驱动程序存在于 IP 模块的下方。这些接口不需要额外的配置。
然而,某些技术被作为 STREAMS 模块推送到 IP 模块和网络驱动程序之间。如果 STREAMS 模块是有状态的,即使将相同模块推送到组中的所有接口上,在进行故障转移时仍可能会出现意外行为。但是,只要按相同顺序将 STREAMS 模块推送到 IPMP 组中的所有接口上,就可以使用无状态 STREAMS 模块。
例如:
# ifconfig net0 modinsert vpnmod@3
如果为一个接口配置了 IPv4,则必须为 IPMP 组中的所有接口配置 IPv4。例如,如果您为一个接口添加了 IPv6 寻址,则必须将 IPMP 组中的所有接口配置为支持 IPv6。
例如,如果您要实现基于探测器的故障检测,则必须在底层接口上配置测试地址。如需相关信息,请参见IPMP 中的故障检测。
例如,您可以将同一 IP 子网上的以太网交换机配置到一个 IPMP 组中。您可以将任意数量的接口配置到一个 IPMP 组中。
分组在一起的接口必须采用相同的接口类型。例如,不能将以太网接口和令牌环接口组合在一个 IPMP 组中。此外,不能将令牌总线接口与异步传输模式 (asynchronous transfer mode, ATM) 接口组合在同一 IPMP 组中。
使用经典 IP over ATM 技术的接口不支持 IPMP,如 IETF RFC 1577 和 IETF RFC 2225 中所定义。
可以使用活动/活动接口或活动/备用接口配置多接口 IPMP 组。如需相关信息,请参见IPMP 接口配置的类型。以下过程介绍了如何通过使用 DHCP 配置活动/备用 IPMP 组。
开始之前
确保即将包含在目标 IPMP 组中的 IP 接口已在系统的网络数据链路上正确配置。有关配置链路和 IP 接口的过程,请参见《在 Oracle Solaris 11.1 中使用固定网络配置连接系统》中的"如何配置 IP 接口"。即使底层 IP 接口尚未创建,您仍可以创建一个 IPMP 接口。然而,如果未创建底层 IP 接口,对该 IPMP 接口的后续配置将会失败。
此外,如果您使用的是基于 SPARC 系统,请为每个接口配置一个唯一的 MAC 地址。有关过程,请参见《在 Oracle Solaris 11.1 中使用固定网络配置连接系统》中的"如何确保每个接口的 MAC 地址是唯一的"。
最后,如果您使用 DHCP,请确保底层接口具有无限租用期。否则,如果 IPMP 组出现故障,测试地址将到期,in.mpathd 守护进程将随后禁用基于探测器的故障检测,而使用基于链路的故障检测。如果基于链路的故障检测发现接口运行正常,守护进程可能会错误地报告接口已修复。有关配置 DHCP 的更多信息,请参阅《在 Oracle Solaris 11.1 中使用 DHCP》。
# ipadm create-ipmp ipmp-interface
其中,ipmp-interface 指定 IPMP 接口的名称。您可以为 IPMP 接口指定任何有意义的名称。与任何 IP 接口一样,该名称包含一个字符串和一个数字,例如 ipmp0。
# ipadm create-ip under-interface
其中 under-interface 指将添加到 IPMP 组的 IP 接口。
# ipadm add-ipmp -i under-interface1 [-i under-interface2 ...] ipmp-interface
您可以为 IPMP 组添加系统中可用的所有 IP 接口。
# ipadm create-addr -T dhcp ipmp-interface
步骤 5 将 DHCP 服务器提供的地址与地址对象关联。地址对象使用 interface/address-type 格式(例如,ipmp0/v4)唯一标识 IP 地址。有关地址对象的更多信息,请参见《在 Oracle Solaris 11.1 中使用固定网络配置连接系统》中的"如何配置 IP 接口"。
对 IPMP 组的每个底层接口发出以下命令。
# ipadm create-addr -T dhcp under-interface
步骤 6 自动创建的地址对象使用 under-interface/address-type 格式,例如,net0/v4。
示例 6-2 使用 DHCP 配置 IPMP 组
本示例显示如何使用 DHCP 配置活动/备用 IPMP 组,并且基于以下方案:
一个 IPMP 组中配置了三个底层接口(net0、net1 和 net2)。
IPMP 接口 ipmp0 与 IPMP 组共享相同的名称。
net2 是指定的备用接口。
所有的底层接口均指定了测试地址。
首先,管理员创建 IPMP 接口。
# ipadm create-ipmp ipmp0
接下来,管理员创建底层 IP 接口并将其添加到该 IPMP 接口。
# ipadm create-ip net0 # ipadm create-ip net1 # ipadm create-ip net2 # ipadm add-ipmp -i net0 -i net1 -i net2 ipmp0
接下来,管理员将 DHCP 管理的 IP 地址指定给该 IPMP 接口。指定给该 IPMP 接口的 IP 地址是数据地址。在本示例中,IPMP 接口有两个数据地址。
# ipadm create-addr -T dhcp ipmp0 ipadm: ipmp0/v4 # ipadm create-addr -T dhcp ipmp0 ipadm: ipmp0/v4a
接下来,管理员将 DHCP 管理的 IP 地址指定给该 IPMP 组的底层 IP 接口。指定给底层接口的 IP 地址是要用于基于探测器的故障检测的测试地址。
# ipadm create-addr -T dhcp net0 ipadm: net0/v4 # ipadm create-addr -T dhcp net1 ipadm: net1/v4 # ipadm create-addr -T dhcp net2 ipadm net2/v4
最后,管理员将 net2 配置为备用接口。
# ipadm set-ifprop -p standby=on net2
以下过程介绍了如何手动配置活动/活动 IPMP 组。在此过程中,步骤 1-4 介绍了如何配置基于链路的活动/活动 IPMP 组。步骤 5 介绍了如何使基于链路的配置基于探测器。
开始之前
确保即将包含在目标 IPMP 组中的 IP 接口已在系统的网络数据链路上正确配置。有关配置链路和 IP 接口的过程,请参见《在 Oracle Solaris 11.1 中使用固定网络配置连接系统》中的"如何配置 IP 接口"。即使底层 IP 接口尚不存在,您仍可以创建一个 IPMP 接口。然而,随后在此 IPMP 接口上的配置将失败。
此外,如果您使用的是基于 SPARC 系统,请为每个接口配置一个唯一的 MAC 地址。有关过程,请参见《在 Oracle Solaris 11.1 中使用固定网络配置连接系统》中的"如何确保每个接口的 MAC 地址是唯一的"。
# ipadm create-ipmp ipmp-interface
其中,ipmp-interface 指定 IPMP 接口的名称。您可以为 IPMP 接口指定任何有意义的名称。与任何 IP 接口一样,该名称包含一个字符串和一个数字,例如 ipmp0。
# ipadm add-ipmp -i under-interface1 [-i underinterface2 ...] ipmp-interface
其中 under-interface 指 IPMP 组的底层接口。您可以添加系统中可用的所有 IP 接口。
注 - 在双栈环境中,如果将某个接口的 IPv4 实例放入特定组中,则 IPv6 实例将自动放入同一组中。
# ipadm create-addr -a address ipmp-interface
其中,address 可以采用 CIDR 表示法。
注 - 只有 IPMP 组名称的 DNS 地址或 IP 地址是必需的。
# ipadm create-addr -a address under-interface
其中,address 可以采用 CIDR 表示法。IPMP 组中的所有测试 IP 地址必须属于单个 IP 子网并使用相同的网络前缀。
有关备用接口的信息,请参见IPMP 接口配置的类型。以下过程介绍了如何配置一个 IPMP 组,其中将一个接口保留为备用。仅当组中的一个活动接口出现故障时,才部署此接口。
# ipadm create-ipmp ipmp-interface
其中,ipmp-interface 指定 IPMP 接口的名称。您可以为 IPMP 接口指定任何有意义的名称。与任何 IP 接口一样,该名称包含一个字符串和一个数字,例如 ipmp0。
# ipadm add-ipmp -i under-interface1 [-i underinterface2 ...] ipmp-interface
其中 under-interface 指 IPMP 组的底层接口。您可以添加系统中可用的所有 IP 接口。
注 - 在双栈环境中,如果将某个接口的 IPv4 实例放入特定的 IPMP 组中,则 IPv6 实例将自动放入同一组中。
# ipadm create-addr -a address ipmp-interface
其中,address 可以采用 CIDR 表示法。
# ipadm create-addr -a address under-interface
其中,address 可以采用 CIDR 表示法。IPMP 组中的所有测试 IP 地址必须属于单个 IP 子网并使用相同的网络前缀。
# ipadm set-ifprop -p standby=on under-interface
示例 6-3 配置活动/备用 IPMP 组
本示例说明如何手动创建活动/备用 IPMP 配置。
首先,管理员创建 IPMP 接口。
# ipadm create-ipmp ipmp0
接下来,管理员创建底层 IP 接口并将其添加到该 IPMP 接口。
# ipadm create-ip net0 # ipadm create-ip net1 # ipadm create-ip net2 # ipadm add-ipmp -i net0 -i net1 -i net2 ipmp0
接下来,管理员将 IP 地址指定给该 IPMP 接口。指定给该 IPMP 接口的 IP 地址是数据地址。在本示例中,IPMP 接口有两个数据地址。
# ipadm create-addr -a 192.168.10.10/24 ipmp0 ipadm: ipmp0/v4 # ipadm create-addr -a 192.168.10.15/24 ipmp0 ipadm: ipmp0/v4a
本示例中的 IP 地址包括 prefixlen 属性,以十进制数表示。IP 地址的 prefixlen 部分指定地址的 IPv4 网络掩码或 IPv6 前缀所包含的地址的最左侧的连续位数。其余低阶位定义地址的主机部分。将 prefixlen 属性转换为地址的文本表现形式时,对于用于网络部分的位位置,此地址包含 1,对于主机部分,此地址包含 0。dhcp 地址对象类型不支持此属性。有关更多信息,请参见 ipadm(1M) 手册页。
接下来,管理员将 IP 地址指定给该 IPMP 组的底层 IP 接口。指定给底层接口的 IP 地址是要用于基于探测器的故障检测的测试地址。
# ipadm create-addr -a 192.168.10.30/24 net0 ipadm: net0/v4 # ipadm create-addr -a 192.168.10.32/24 net1 ipadm: net1/v4 # ipadm create-addr -a 192.168.10.34/24 net2 ipadm: net2/v4
最后,管理员将 net2 配置为备用接口。
# ipadm set-ifprop -p standby=on net2
管理员可以使用 ipmpstat 命令查看 IPMP 配置。
# ipmpstat -g GROUP GROUPNAME STATE FDT INTERFACES ipmp0 ipmp0 ok 10.00s net0 net1 (net2) # ipmpstat -t INTERFACE MODE TESTADDR TARGETS net0 routes 192.168.10.30 192.168.10.1 net1 routes 192.168.10.32 192.168.10.1 net2 routes 192.168.10.34 192.168.10.5