跳过导航链接 | |
退出打印视图 | |
手册页第 1M 部分:系统管理命令 Oracle Solaris 11.1 Information Library (简体中文) |
- 为协议、服务、容器以及虚拟机管理带宽资源控制
flowadm
flowadm show-flow [-P] [[-p] -o field[,...]] [-l link] [flow]
flowadm add-flow [-t] [-R root-dir] -l link -a attr=value[,...] [-p prop=value[,...]] flow flowadm remove-flow [-t] [-R root-dir] {-l link | flow}
flowadm set-flowprop [-t] [-R root-dir] -p prop=value[,...] flow flowadm reset-flowprop [-t] [-R root-dir] [-p prop[,...]] flow flowadm show-flowprop [-P] [[-c] -o field[,...]] [-l link] [-p prop[,...]] [flow]
flowadm help [subcommand-name]
flowadm 命令用于为特定链接上的某类通信流量创建、修改、删除和显示网络带宽以及关联资源。
flowadm 命令允许用户针对传输、服务或子网管理网络带宽资源。将此服务指定为传输和本地端口的组合。子网由其 IP 地址和子网掩码指定。该命令可在任何类型的数据链接上使用,包括物理链接、虚拟 NIC 以及链路聚合。
流定义为基于层 3 和层 4 头的属性集合,可用于标识协议、服务或虚拟机。
传入和外发包以非常快速的可伸缩方式与流匹配,因此,可以在性能影响最小的情况下执行限制。
flowadm 命令可用于标识流,而无需强加任何带宽资源控制。与 flowstat(1M) 一起使用可以更好地观察流。
流可以在全局区域和非全局区域中创建、修改和删除。区域管理员仅可以在其区域(全局或非全局)中创建流。然而,在全局区域中创建的流可以迁移至非全局区域,以下段落中有述。管理员可以仅从其中创建流的区域(全局或非全局)内修改或删除流。从全局区域,用户可以查看系统上全局区域和任何非全局区域内的所有流。从非全局区域,用户仅可以查看此区域内的那些流。
管理员在全局区域中创建了流之后,与该流关联的数据链接可以分配至非全局区域。在此情况下,关联流也分配至同一非全局区域。当该非全局区域停止后,数据链接及其关联流将返回至全局区域。
不同的区域名区分同一名称的流。例如,用户可以拥有三个名为 fastpak 的流,如果每个 fastpak 位于不同的区域。例如,zone1/fastpak、zone2/fastpak 和 zone3/fastpak 都是有效的区域名。
flowadm 是作为一组具有相应选项的子命令实现的。选项在每个子命令的上下文中进行了说明。如果在不使用子命令的情况下调用 flowadm,则会显示在系统上配置的所有流。有关更多信息,请参见下面的“示例”。
支持以下子命令:
显示所有流、某个链接上的所有流或指定的 flow 的流配置信息(缺省值)或统计信息。
要显示的输出字段的列表,这些字段不区分大小写,并且由逗号分隔。字段名必须是以下所列字段之一,或为特殊值 all,以显示所有字段。对于找到的每个流,可显示以下字段:
流的名称。
流所在的链接名。
流的 IP 地址。此地址可以是本地的,也可以是远程的,具体取决于流的定义。
针对要使用协议的层名。
流的本地服务端口。
流和掩码的区分服务值,与 DSFIELD 值结合使用,以指定 IP 数据包头的区分服务字段中受关注的位。
使用稳定的可供计算机解析的格式显示。
显示持久流属性信息。
显示指定链接上所有流的信息或指定流的信息。
将流添加到系统。流由其流属性标识。
作为标识特定流的一部分,可以限制它的带宽资源。
更改是临时的,在重新引导期间不会持续存在。持续存在是缺省值。
指定备用根目录,其中 flowadm 应应用持久创建。
指定将向其添加流的链接。
要设置为指定值的以逗号分隔的属性列表。
要设置为指定值的以逗号分隔的属性列表。
删除由其链接或名称标识的现有流。
更改是临时的,在重新引导期间不会持续存在。持续存在是缺省值。
指定备用根目录,其中 flowadm 应应用持久删除。
如果指定一个链接,则从该链接删除所有流。如果指定单个流,则仅删除该流。
设置按名称指定的流上的一个或多个属性的值。使用 show-flow 子命令可以检索完整的属性列表。
更改是临时的,在重新引导期间不会持续存在。持续存在是缺省值。
指定备用根目录,其中 flowadm 应应用持久属性设置。
要设置为指定值的以逗号分隔的属性列表。
将指定流上的一个或多个属性重置为其缺省值。如果未指定属性,则重置所有属性。请参见 show-flowprop 子命令了解属性说明,其中包含它们的缺省值。
指定重置为临时重置。临时重置将持续到下一次重新引导。
指定备用根目录,其中 flowadm 应应用持久属性设置。
要重置的以逗号分隔的属性列表。
显示所有流、指定链接上的流或指定流的一个或多个属性的当前值或持久值。
缺省情况下,将显示当前值。如果未指定属性,所有可用流属性都将显示。对于每个属性,将显示下列字段:
流的名称。
属性的名称。
当前(或持久性)属性值。如果该值未设置,则显示为 --(双连字符),如果该值未知,则显示为 ?(问号)。尚未设置或尚未重置的持久性值将显示为 --,并且将使用系统的 DEFAULT 值(如果有)。
属性的缺省值。如果属性无缺省值,则显示 --(双连字符)。
属性可具有的值的逗号分隔列表。如果这些值跨越一定的数字范围,最小值和最大值可能会显示为缩写。如果可能值未知或无限制,则显示 --(双连字符)。
流属性在以下“流属性”部分中有述。
使用稳定的可供计算机解析的格式显示。
显示持久流属性信息。
要显示的属性的逗号分隔列表。
显示所有支持的 flowadm 子命令或给定子命令的用法。如果您显示特定子命令的帮助信息,则会显示命令语法和一个示例。使用不带参数的 flowadm help 可以显示所有子命令。
在 flowadm 命令中标识流的流操作数是一个来自以下列表的以逗号分隔的一个或多个关键字、值对列表。
按本地 IP 地址标识网络流。value 必须是采用点分十进制记法的 IPv4 地址或采用冒号分隔记法的 IPv6 地址。prefix_len 是可选项。
如果指定了 prefix_len,它将描述子网地址的网络掩码,并与 ifconfig(1M) 和 route(1M) 地址遵循相同的表示法约定。如果未指定,给定的 IP 地址将被视为主机地址,其 IPv4 地址的缺省前缀长度是 /32,对于 IPv6,为 /128。
按远程 IP 地址标识网络流。语法与 local_ip 属性相同
标识要使用的层 4 协议。通常结合 local_port 或 remote_port 使用,以标识需要特别关注的本地或远程服务。
标识由本地端口指定的服务。
标识由远程端口指定的服务。
标识 8 位区分服务字段(如 RFC 2474 中所定义)。
可选的 dsfield_mask 用于在与 dsfield 值比较时,指定区分服务字段中受关注的位。位位置中的 0 表示该位值需要忽略,1 则表示不要忽略。掩码范围可以是从 0x01 到 0xff。 如果未指定 dsfield_mask,将使用缺省掩码 0xff。dsfield 值和掩码必须为十六进制。
支持以下属性组合:
local_ip=address[/prefixlen] remote_ip=address[/prefixlen] transport={tcp|udp|sctp|icmp|icmpv6} transport={tcp|udp|sctp},local_port=port transport={tcp|udp|sctp},remote_port=port dsfield=val[:dsfield_mask]
在给定链接上,上述组合是互斥的。给定链路上的所有流必须具有相同的组合,只有属性值用来区分流。尝试创建不同组合的流将失败。
此处存在个别流限制与各区域流限制。
个别流限制个别流上的限制无需了解其他已添加至链接的流。
针对每个流,属性只能列一次。例如,以下命令无效:
# flowadm add-flow -l vnic1 -a local_port=80,local_port=8080 httpflow
transport 和 local_port 或者 transport 和 remote_port:
TCP、UDP 或 SCTP 流可通过本地端口或远程端口进行指定。不允许指定端口的 ICMP 或 ICMPv6 流。
如果指定了 local_port 或 remote_port,传输必须是 TCP、UDP 或 SCTP。
以下命令有效:
# flowadm add-flow -l e1000g0 -a transport=udp udpflow # flowadm add-flow -l e1000g0 -a transport=tcp,local_port=80 \ udp80flow
以下命令无效:
# flowadm add-flow -l e1000g0 -a remote_port=25 flow25 # flowadm add-flow -l e1000g0 -a transport=icmpv6,remote_port=16 \ flow16各区域流限制
在一个区域内,两个流不能具有相同的名称。添加具有指定链接的流后,显示、修改或删除该流时无需此链接。
以下流属性均受支持。请注意,将给定属性设置为给定值的功能取决于驱动程序和硬件。
设置流的全双工带宽。此带宽指定为一个带有某个容量级后缀(分别表示 Kbps、Mbps 和 Gbps 的 K、M 或 G)的整数。如果未指定单位,输入值将以 Mbps 为单位进行读取。缺省值是无带宽限制。
示例 1 显示流配置
下面的命令在未使用参数的情况下调用了 flowadm,因此显示了系统中的所有流。
# flowadm FLOW LINK IPADDR PROTO LPORT RPORT DSFLD tcpflow net0 -- tcp -- -- -- udpflow net0 -- udp -- -- --
示例 2 围绕重点端口创建策略
以下命令将围绕 HTTPS 服务器上的传入 HTTPS 通信流量创建策略,以便 HTTPS 获取专用 NIC 硬件和内核 TCP/IP 资源。稍后可使用指定的名称 https-1 修改或删除该策略。
# flowadm add-flow -l bge0 -a transport=TCP,local_port=443 https-1 # flowadm show-flow -l bge0 FLOW LINK IP ADDR PROTO PORT RPORT DSFLD https1 bge0 -- tcp 443 -- --
示例 3 修改现有策略以添加带宽资源控制
以下命令将修改之前示例中的 https-1 策略。该命令可以添加带宽控制。
# flowadm set-flowprop -p maxbw=500M https-1 # flowadm show-flow https-1 FLOW LINK IP ADDR PROTO PORT RPORT DSFLD https1 bge0 -- tcp 443 -- -- # flowadm show-flowprop https-1 FLOW PROPERTY VALUE DEFAULT POSSIBLE https-1 maxbw 500 -- --
示例 4 限制 UDP 带宽使用
以下命令将针对 UDP 协议创建策略,以便其无法使用超过 100Mbps 的可用带宽。将流命名为 limit-udp-1。
# flowadm add-flow -l bge0 -a transport=UDP -p maxbw=100M, \ limit-udp-1
示例 5 设置策略,利用 dsfield 属性
以下命令将针对具有 500 Mbps 的带宽的 EF PHB(101110 的 DSCP 值来自 RFC 2598)设置策略。该流的 dsfield 值将是 0x2e (101110) ,而 dsfield_mask 为 0xfc(因为我们希望忽略两个最低有效位)。
# flowadm add-flow -l bge0 -a dsfield=0x2e:0xfc \ -p maxbw=500M efphb-flow
示例 6 查看多个区域中的流
以下命令将显示具有相同名称的两个流。第一个流位于全局区域中,第二个位于区域 zone1 中。 该命令从全局区域调用,使用户能够查看系统上的所有流
# flowadm show-flow FLOW LINK IPADDR PROTO LPORT RPORT DSFLD tcpflow e1000g2 -- tcp -- -- -- zone1/tcpflow e1000g1 -- tcp -- -- --
示例 7 组合无效的流
给定链路上的所有流必须具有相同的属性组合。请考虑以下序列:
# flowadm add-flow -l e1000g0 -a transport=tcp,local_port=443 httpsflow # flowadm add-flow -l e1000g0 -a local_ip=192.1.168.157 ngzflow
第二个命令将会失败,因为第一个流使用了以下组合:
transport={tcp|udp|sctp},local_port=port
……这与第二个流中使用的组合不兼容:
local_ip[/prefixlen]=address
示例 8 显示帮助信息
以下命令列出 flowadm 的子命令。
# flowadm help The following subcommands are supported: Flow subcommands : add-flow, remove-flow, reset-flowprop, set-flowprop, show-flow, show-flowprop For more info, run: flowadm help subcommand
以下命令说明了带有特定子命令的 flowadm help 的用法。
# flowadm help add-flow usage: add-flow [-t] [-R root-dir] -l link -a attr=value[,...] [-p prop=value,...] flow example: # flowadm add-flow -l net0 -a transport=tcp -p maxbw=100 tcpflow
所有操作都成功执行。
出现错误。
有关下列属性的说明,请参见 attributes(5):
|
acctadm(1M)、dladm(1M)、flowstat(1M)、ifconfig(1M)、prstat(1M)、route(1M)、attributes(5)、ifconfig(1M)
show-usage 子命令(在以前版本的 flowadm 中存在)已替换为 flowstat(1M) -h 命令。