跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:网络接口和网络虚拟化 Oracle Solaris 11 Information Library (简体中文) |
本节提供了用于规划和配置 IPMP 组的过程。第 14 章中的概述介绍了将 IPMP 组实现为接口。因此,在本章中,术语 IPMP 组和 IPMP 接口可互换使用。
以下过程包括在配置 IPMP 组之前要收集的必要规划任务和信息。这些任务不必按顺序执行。
IPMP 配置取决于您的网络需要处理的在您的系统上承载的通信流量的类型。IPMP 将传出网络数据包分散到 IPMP 组的各个接口,从而提高了网络吞吐量。然而,对于给定的 TCP 连接,传入通信流量通常只使用一个物理路径,以尽量降低处理无序数据包的风险。
因此,如果您的网络处理大量传出通信流量,将大量接口配置到一个 IPMP 组中可以提高网络性能。如果相反,即系统承载大量传入通信流量,则组中的接口数量不一定能通过分散通信流量负载来改善性能。不过,有更多的底层接口有助于在接口出现故障时保证网络的可用性。
要为系统中的每个接口配置唯一的 MAC 地址,请参见SPARC: 如何确保接口的 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 interface modinsert module-name@position
ifconfig net0 modinsert vpnmod@3
如果为 IPv4 配置了一个接口,则必须为 IPv4 配置组的所有接口。例如,如果将一个 IPv6 寻址添加到一个接口,则必须将 IPMP 组中的所有接口配置为支持 IPv6。
例如,如果您要实现基于探测器的故障检测,则必须在底层接口上配置测试地址。如需相关信息,请参见IPMP 中的故障检测类型。
例如,您可以将同一 IP 子网上的以太网交换机配置到一个 IPMP 组中。您可以将任意数量的接口配置到一个 IPMP 组中。
组合在一起的接口应属于相同的接口类型,如 /usr/include/net/if_types.h 中定义的那样。例如,不能将以太网接口和令牌环接口组合在一个 IPMP 组中。此外,不能将令牌总线接口与异步传输模式 (asynchronous transfer mode, ATM) 接口组合在同一 IPMP 组中。
使用经典的 IP over ATM 的接口不支持 IPMP。
在当前的 IPMP 实现中,可以利用动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP) 配置 IPMP 组。
可以使用活动/活动接口或活动/备用接口配置多接口 IPMP 组。如需相关信息,请参见IPMP 接口配置的类型。以下过程描述了通过使用 DHCP 配置活动/备用 IPMP 组的步骤。
开始之前
确保即将包含在 IPMP 组中的 IP 接口已在系统的网络数据链路上正确配置。即使底层 IP 接口尚不存在,您仍可以创建一个 IPMP 接口。然而,随后在此 IPMP 接口上的配置将失败。
有关配置链路和 IP 接口的过程,请参见IP 接口配置(任务)。有关配置 IPv6 接口的信息,请参见《Oracle Solaris 管理:IP 服务》中的"配置 IPv6 接口"。
此外,如果您使用的是 SPARC 系统,请为每个接口配置一个唯一的 MAC 地址。有关过程,请参见SPARC: 如何确保接口的 MAC 地址是唯一的。
最后,如果您使用 DHCP,请确保底层接口具有无限租用期。否则,在组出现故障的情况下,测试地址将到期,IPMP 守护进程将禁用基于探测器的故障检测,而使用基于链路的故障检测。如果基于链路的故障检测发现接口运行正常,守护进程可能会错误地报告接口已修复。有关配置 DHCP 的更多信息,请参阅《System Administration Guide: IP Services》中的第 13 章 "Planning for DHCP Service (Tasks)"。
注 - 如果系统上的活动网络配置文件是一个反应性配置文件,则您无法使用 IPMP。在配置 IPMP 组之前,如有必要,请启用 DefaultFixed 配置文件以切换到固定网络配置文件。有关过程,请参见配置文件和配置工具。
有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"。
# 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 addrobj
addrobj 代表一个地址对象并使用 interface/string 格式。本步骤中的 interface 是 IPMP 接口。字符串可以是用户定义的任何字符串。因此,如果您在 IPMP 接口上有多个数据地址,相应的地址对象将是 ipmp-interface/string1、ipmp-interface /string2、ipmp-interface/ string3 等。
您需要对 IPMP 组的每个底层接口发出以下命令。
# ipadm create-addr -T dhcp addrobj
addrobj 代表一个地址对象并使用 interface/string 格式。本步骤中的 interface 是底层接口。字符串可以是用户定义的任何字符串。因此,如果您的 IPMP 组有多个底层接口,相应的地址对象将是 under-interface1/string、ipmp-interface2 /string、ipmp-interface3/ string 等。
示例 15-1 使用 DHCP 配置 IPMP 组
本示例显示如何使用 DHCP 配置活动/备用 IPMP 组,并且基于以下方案:
IPMP 组的三个底层接口将在它们各自的数据链路(net0、net1 和 net2)上配置,这些数据链路是 IPMP 组的指定成员。
IPMP 接口 itops0 与 IPMP 组共享相同的名称。
net2 是指定的备用接口。
为了使用基于探测器的故障检测,对所有底层接口都指定了测试地址。
# ipadm create-ipmp itops0 # ipadm create-ip net0 # ipadm create-ip net1 # ipadm create-ip net2 # ipadm add-ipmp -i net0 -i net1 -i net2 itops0 # ipadm create-addr -T dhcp itops0/dhcp0 # ipadm create-addr -T dhcp itops0/dhcp1 # ipadm create-addr -T dhcp net0/test # ipadm create-addr -T dhcp net2/test # ipadm create-addr -T dhcp net3/test # ipadm set-ifprop -p standby=on net2
以下过程描述手动配置活动/活动 IPMP 组的步骤。
开始之前
确保即将包含在目标 IPMP 组中的 IP 接口已在系统的网络数据链路上正确配置。有关配置链路和 IP 接口的过程,请参见IP 接口配置(任务)。有关配置 IPv6 接口的信息,请参见《Oracle Solaris 管理:IP 服务》中的"配置 IPv6 接口"。即使底层 IP 接口尚不存在,您仍可以创建一个 IPMP 接口。然而,随后在此 IPMP 接口上的配置将失败。
此外,如果您使用的是 SPARC 系统,请为每个接口配置一个唯一的 MAC 地址。有关过程,请参见SPARC: 如何确保接口的 MAC 地址是唯一的。
有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"。
# 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 -T static IP-address addrobj
IP 地址可以采用 CIDR 表示法。
addrobj 必须使用命名约定 ipmp-interface/any-string。因此,如果 IPMP 接口的名称是 ipmp0,则 addrobj 可以是 ipmp0/dataaddr。
# ipadm create-addr -T static IP-address addrobj
IP 地址可以采用 CIDR 表示法。
addrobj 必须使用命名约定 under-interface/any-string。因此,如果底层接口的名称是 net0,则 addrobj 可以是 net0/testaddr。
注 - 仅当要在特定接口上使用基于探测器的故障检测时,才需要配置测试地址。
IPMP 组中的所有测试 IP 地址都必须使用相同的网络前缀。测试 IP 地址必须属于单个 IP 子网。
有关备用接口的更多信息,请参见IPMP 接口配置的类型。以下步骤配置一个 IPMP 组,其中将一个接口保留为后备。仅当组中的一个活动接口出现故障时,才部署此接口。
有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"。
# 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 -T static IP-address addrobj
IP 地址可以采用 CIDR 表示法。
addrobj 必须使用命名约定 ipmp-interface/any-string。因此,如果 IPMP 接口的名称是 ipmp0,则 addrobj 可以是 ipmp0/dataaddr。
# ipadm create-addr -T static IP-address addrobj
IP 地址可以采用 CIDR 表示法。
addrobj 必须使用命名约定 under-interface/any-string。因此,如果底层接口的名称是 net0,则 addrobj 可以是 net0/testaddr。
注 - 仅当要在特定接口上使用基于探测器的故障检测时,才需要配置测试地址。
IPMP 组中的所有测试 IP 地址都必须使用相同的网络前缀。测试 IP 地址必须属于单个 IP 子网。
# ipadm set-ifprop -p standby=yes under-interface
示例 15-2 配置活动/备用 IPMP 组
本示例说明如何手动创建活动/备用 IPMP 配置。该示例首先创建底层接口。
# ipadm create-ip net0 # ipadm create-ip net1 # ipadm create-ip net2 # ipadm create-ipmp itops0 # ipadm add-ipmp -i net0 -i net1 -i net2 itops0 # ipadm create-addr -T static -a 192.168.10.10/24 itops0/v4add1 # ipadm create-addr -T static -a 192.168.10.15/24 itops0/v4add2 # ipadm create-addr -T static -a 192.168.85.30/24 net0/test # ipadm create-addr -T static -a 192.168.85.32/24 net1/test # ipadm create-addr -T static -a 192.168.85.34/24 net2/test # ipadm set-ifprop -p standby=yes net2 # ipmpstat -g GROUP GROUPNAME STATE FDT INTERFACES itops0 itops0 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