JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 管理:IP 服务     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分系统管理介绍:IP 服务

1.  Oracle Solaris TCP/IP 协议套件(概述)

第 2 部分TCP/IP 管理

2.  规划 TCP/IP 网络(任务)

3.  IPv6 介绍(概述)

4.  规划 IPv6 网络(任务)

5.  配置 TCP/IP 网络服务和 IPv4 寻址(任务)

6.  管理网络接口(任务)

7.  配置 IPv6 网络(任务)

8.  管理 TCP/IP 网络(任务)

9.  对网络问题进行故障排除(任务)

10.  TCP/IP 和 IPv4 详解(参考)

11.  IPv6 详解(参考)

第 3 部分DHCP

12.  关于 DHCP(概述)

13.  规划 DHCP 服务(任务)

14.  配置 DHCP 服务(任务)

15.  管理 DHCP(任务)

16.  配置和管理 DHCP 客户机

17.  对 DHCP 问题进行故障排除(参考)

18.  DHCP 命令和文件(参考信息)

第 4 部分IP 安全性

19.  IP 安全体系结构(概述)

20.  配置 IPsec(任务)

21.  IP 安全体系结构(参考信息)

22.  Internet 密钥交换(概述)

23.  配置 IKE(任务)

24.  Internet 密钥交换(参考信息)

25.  Oracle Solaris 中的 IP 过滤器(概述)

26.  IP 过滤器(任务)

第 5 部分IPMP

27.  IPMP 介绍(概述)

28.  管理 IPMP(任务)

第 6 部分IP 服务质量 (IP Quality of Service, IPQoS)

29.  IPQoS 介绍(概述)

30.  规划启用了 IPQoS 的网络(任务)

31.  创建 IPQoS 配置文件(任务)

32.  启动和维护 IPQoS(任务)

33.  使用流记帐和统计信息收集功能(任务)

34.  IPQoS 的详细介绍(参考信息)

IPQoS 体系结构和 Diffserv 模型

分类器模块

IPQoS 选定器

计量器模块

tokenmt 计量模块

tswtclmt 计量模块

标记器模块

使用 dscpmk 标记器转发包

dlcosmk 标记器用于 VLAN 设备

flowacct 模块

flowacct 参数

流表

flowacct 记录

acctadm 用于 flowacct 模块

IPQoS 配置文件

action 语句

模块定义

class 子句

filter 子句

params 子句

ipqosconf 配置实用程序

词汇表

索引

IPQoS 体系结构和 Diffserv 模型

本节介绍 IPQoS 体系结构以及 IPQoS 如何实现区分服务 (Differentiated Service, Diffserv) 模型,在 RFC 2475,《An Architecture for Differentiated Services》(《区分服务的体系结构》)中定义了此模型。IPQoS 中包括以下 Diffserv 模型元素:

此外,IPQoS 还包括可与虚拟局域网 (Virtual Local Area Network, VLAN) 设备一起使用的流记帐模块和 dlcosmk 标记器。

分类器模块

在 Diffserv 模型中,分类器负责将选定的通信流组织到应用不同服务级别的组中。RFC 2475 中定义的分类器最初是为边界路由器设计的。相反,IPQoS 分类器 ipgpc 是为了处理本地网络内部的主机上的通信流而设计的。因此,同时包含 IPQoS 系统和 Diffserv 路由器的网络可以提供更高程度的区分服务。有关 ipgpc 的技术说明,请参阅 ipgpc(7ipp) 手册页。

ipgpc 分类器具有以下功能:

  1. 选择满足条件的通信流,该条件在启用了 IPQoS 的系统中的 IPQoS 配置文件中指定。

    QoS 策略可以定义各种必须出现在包头中的条件。这些条件称为选定器ipgpc 分类器将这些选定器与 IPQoS 系统接收的包头进行比较,然后,ipgpc 会选择所有匹配的包。

  2. 将包流分(即具有相同特征的网络通信流量),如 IPQoS 配置文件中所定义。

  3. 检查包的区分服务 (Differentiated Service, DS) 字段中的值,确定是否存在区分服务代码点 (Differentiated Service Codepoint, DSCP)。

    DSCP 的存在与否指示发送者是否使用转发行为标记了传入通信。

  4. 确定 IPQoS 配置文件中针对特定类的包指定的进一步操作

  5. 将包传送到 IPQoS 配置文件指定的下一个 IPQoS 模块中,或者将包返回到网络流中

有关分类器的概述,请参阅分类器 (ipgpc) 概述。有关在 IPQoS 配置文件中调用分类器的信息,请参阅IPQoS 配置文件

IPQoS 选定器

ipgpc 分类器支持多种可在 IPQoS 配置文件的 filter 子句中使用的选定器。定义过滤器时,应始终使用成功检索特定类的通信所需的最少选定器数目。您所定义的过滤器的数目会影响 IPQoS 性能。

下表列出了可用于 ipgpc 的选定器。

表 34-1 IPQoS 分类器的过滤选定器

选定器
参数
选定的信息
saddr
IP 地址号。
源地址。
daddr
IP 地址号。
目标地址。
sport
端口号或服务名,如 /etc/services 中所定义。
传出通信类的源端口。
dport
端口号或服务名,如 /etc/services 中所定义。
要将通信类送达的目标端口。
protocol
协议编号或协议名称,如 /etc/protocols 中所定义。
此通信类要使用的协议。
dsfield
值为 0 至 63 的 DS 代码点 (DS Codepoint, DSCP)。
DSCP 用于定义要对包应用的任何转发行为。如果指定了此参数,则还必须指定 dsfield_mask 参数。
dsfield_mask
值为 0 至 255 的位掩码。
dsfield 选定器一起使用。dsfield_mask 将应用于 dsfield 选定器以确定要匹配的位。
if_name
接口名称。
用于特定类的传入或传出通信的接口。
user
要选择的 UNIX 用户 ID 号或用户名。如果包中没有用户 ID 或用户名,则使用缺省值 1。
提供给应用程序的用户 ID。
projid
要选择的项目 ID 号。
提供给应用程序的项目 ID。
priority
优先级编号。最低优先级为 0。
提供给此类包的优先级。优先级用于对同类过滤器的重要性进行排序。
direction
该参数可以为下列值之一:
IPQoS 计算机上包流的传输方向。
LOCAL_IN
将本地通信输入到 IPQoS 系统。
LOCAL_OUT
将本地通信输出到 IPQoS 系统。
FWD_IN
输入要转发的通信。
FWD_OUT
输出要转发的通信。
precedence
优先级值。最高优先级为 0。
优先级用于对具有相同优先级的过滤器进行排序。
ip_version
V4V6
包使用的寻址方案(IPv4 或 IPv6)。

计量器模块

计量器按包跟踪流的传输速率。然后,计量器确定包是否符合已配置的参数。计量器模块从一组操作中确定要对包执行的下一个操作,具体取决于包的大小、已配置的参数和流速率。

计量器由两个计量模块 tokenmttswtclmt 组成,您可以在 IPQoS 配置文件中配置它们。您可以为类配置一个或两个模块。

配置计量模块时,您可以定义两个速率参数:

对包执行计量操作将生成以下三种结果之一:

您可以在 IPQoS 配置文件中使用不同的操作来配置每种结果。承诺速率和峰值速率将在下一节中介绍。

tokenmt 计量模块

tokenmt 模块使用令牌桶来度量流的传输速率。您可以将 tokenmt 配置为作为单速率或双速率计量器运行。tokenmt 操作实例维护两个可确定通信流是否符合已配置参数的令牌桶。

tokenmt(7ipp) 手册页介绍了 IPQoS 如何实现令牌计量器模型。您可以在 Kalevi Kilkki 所著的《Differentiated Services for the Internet》和许多 Web 站点上找到有关令牌桶的更多常规信息。

tokenmt 的配置参数如下:

tokenmt 配置为单速率计量器

要将 tokenmt 配置为单速率计量器,请不要在 IPQoS 配置文件中为 tokenmt 指定 peak_rate 参数。要将单速率 tokenmt 实例配置为具有红色、绿色或黄色的结果,必须指定 peak_burst 参数。如果不使用 peak_burst 参数,可以将 tokenmt 配置为只有红色或绿色的结果。有关具有两种结果的单速率 tokenmt 的示例,请参见示例 31-3

tokenmt 作为单速率计量器运行时,peak_burst 参数实际为超额突发大小。committed_rate 以及 committed_burstpeak_burst 必须为非零正整数。

tokenmt 配置为双速率计量器

要将 tokenmt 配置为双速率计量器,请在 IPQoS 配置文件中为 tokenmt 操作指定 peak_rate 参数。双速率 tokenmt 始终具有三种结果,即红色、黄色和绿色结果。committed_ratecommitted_burstpeak_burst 参数必须为非零正整数。

tokenmt 配置为可识别颜色

要将双速率 tokenmt 配置为可识别颜色,必须添加参数以专门添加“颜色识别”功能。以下是将 tokenmt 配置为可识别颜色的操作语句示例。

示例 34-1 针对 IPQoS 配置文件的可识别颜色 tokenmt 操作

action {
    module tokenmt
    name meter1
    params {
          committed_rate 4000000
          peak_rate 8000000
          committed_burst 4000000
          peak_burst 8000000
          global_stats true
          red_action_name continue
          yellow_action_name continue
          green_action_name continue
          color_aware true
          color_map {0-20,22:GREEN;21,23-42:RED;43-63:YELLOW}
    }
}

您可以通过将 color_aware 参数设置为 true 来打开颜色识别。作为可识别颜色的计量器,tokenmt 假设先前的 tokenmt 操作已将包标记为红色、黄色或绿色。除使用双速率计量器的参数外,可识别颜色的 tokenmt 还使用包头中的 DSCP 来评估包。

color_map 参数包含包头中的 DSCP 要映射到的数组。请看以下 color_map 数组:

color_map {0-20,22:GREEN;21,23-42:RED;43-63:YELLOW}

DSCP 为 0 至 20 和 22 的包映射到绿色。DSCP 为 21 和 23 至 42 的包映射到红色。DSCP 为 43 至 63 的包映射到黄色。tokenmt 保持缺省颜色映射。但是,您可以根据需要使用 color_map 参数来更改缺省设置。

color_action_name 参数中,可以指定 continue 以完成对包的处理。或者,可以添加一个参数以将包发送到标记器操作,例如 yellow_action_name mark22

tswtclmt 计量模块

tswtclmt 计量模块使用基于时间的速率估计器来估测通信类的平均带宽。tswtclmt 始终作为三重结果计量器运行。速率估计器可估测流的到达速率。此速率应接近通信流在特定时间段(即其时间窗口)内的平均传送带宽。速率估计算法可从 RFC 2859 "A Time Sliding Window Three Colour Marker" 中获取。

可以使用以下参数配置 tswtclmt

有关 tswtclmt 的详细技术信息,请参阅 tswtclmt(7ipp) 手册页。有关类似 tswtclmt 的码率整形器的一般信息,请参见 RFC 2963,《A Rate Adaptive Shaper for Differentiated Services》(《区别服务的码率整形器》)

标记器模块

IPQoS 包括两个标记器模块:dscpmkdlcosmk。本节包含有关使用这两个标记器的信息。通常情况下,应使用 dscpmk,因为 dlcosmk 仅可用于具有 VLAN 设备的 IPQoS 系统。

有关 dscpmk 的技术信息,请参阅 dscpmk(7ipp) 手册页。有关 dlcosmk 的技术信息,请参阅 dlcosmk(7ipp) 手册页。

使用 dscpmk 标记器转发包

标记器将在分类器或计量模块处理了通信流之后接收这些流。标记器将使用转发行为标记通信。此转发行为是在流离开 IPQoS 系统之后要对流执行的操作。要对通信类执行的转发行为在单跳行为 (Per-Hop Behavior, PHB) 中定义。PHB 为通信类指定优先级,指明该类流相对于其他类流的优先级。PHB 仅管理 IPQoS 系统的连续网络中的转发行为。有关 PHB 的更多信息,请参阅单跳行为

包转发是指在网络中将特定类的通信发送到下一个目的地的过程。对于诸如 IPQoS 系统的主机,会将包从主机转发到本地网络流。对于 Diffserv 路由器,会将包从本地网络转发到路由器的下一个跃点。

标记器使用 IPQoS 配置文件中定义的已知转发行为来标记包头中的 DS 字段。此后,IPQoS 系统和后续可识别 Diffserv 的系统便会按照 DS 字段中的指示转发通信,直到更改标记。要指定 PHB,IPQoS 系统应在包头的 DS 字段中标记值。此值称为区分服务代码点 (Differentiated Service Codepoint, DSCP)。Diffserv 体系结构定义的两种转发行为是 EF 和 AF,它们使用不同的 DSCP。有关 DSCP 的概述信息,请参阅DS 代码点

IPQoS 系统读取通信流的 DSCP,并评估此流相对于其他传出通信流的优先级。然后,IPQoS 系统设置所有并发通信流的优先级,并根据优先级将每个流释放到网络中。

Diffserv 路由器接收传出通信流,并读取包头中的 DS 字段。使用 DSCP,路由器可以对并发通信流设置优先级并进行调度。路由器将按照 PHB 指示的优先级转发每个流。请注意,PHB 不能在网络的边界路由器之外应用,除非后续跃点上的可识别 Diffserv 的系统也可识别同一 PHB。

加速转发 (Expedited Forwarding, EF) PHB

加速转发 (Expedited Forwarding, EF) 保证具有推荐 EF 代码点 46 (101110) 的包在释放到网络中时得到最佳处理。通常将加速转发比喻为租用线路。确保所有 Diffserv 路由器保证会优先处理具有 46 (101110) 代码点的包,将其路由到其目的地。有关 EF 的技术信息,请参阅《An Expedited Forwarding PHB》(《加速转发 PHB》)

保证转发 (Assured Forwarding, AF) PHB

保证转发 (Assured Forwarding, AF) 提供四种可以指定给标记器的不同转发行为类。下表显示了这些类、每个类的三个丢弃优先级以及与每个优先级关联的推荐 DSCP。每个 DSCP 都分别用其 AF 值、十进制值和二进制值表示。

表 34-2 保证转发代码点

类 1
类 2
类 3
类 4
低丢弃优先级
AF11 =

10 (001010)

AF21 =

18 (010010)

AF31 =

26 (011010)

AF41 =

34 (100010)

中丢弃优先级
AF12 =

12 (001100)

AF22 =

20 (010100)

AF32 =

28 (011100)

AF42 =

36 (100100)

高丢弃优先级
AF13 =

14 (001110)

AF23 =

22 (010110)

AF33 =

30 (011110)

AF43 =

38 (100110)

任何可识别 Diffserv 的系统均可将 AF 代码点用作向不同通信类提供区分转发行为的指南。

当这些包到达 Diffserv 路由器时,路由器便会评估包的代码点以及队列中其他通信的 DSCP。然后,路由器会转发或丢弃包,具体取决于可用带宽以及包的 DSCP 所指定的优先级。请注意,以 EF PHB 为标记的包保证比以各种 AF PHB 为标记的包优先使用带宽。

协调网络中所有 IPQoS 系统和 Diffserv 路由器之间的包标记,确保包按预期方式转发。例如,假定网络中的 IPQoS 系统使用 AF21 (010010)、AF13 (001110)、AF43 (100110) 和 EF (101110) 代码点标记包。这样,便需要将 AF21、AF13、AF43 和 EF DSCP 添加到 Diffserv 路由器上的相应文件中。

有关 AF 代码点表的技术说明,请参阅《Assured Forwarding PHB Group》(《保证转发 PHB 组》)。路由器制造商 Cisco Systems 和 Juniper Networks 在其 Web 站点上提供了有关设置 AF PHB 的详细信息。您可以使用此信息来为 IPQoS 系统和路由器定义 AF PHB。此外,路由器制造商的文档包含在其设备上设置 DS 代码点的说明。

为标记器提供 DSCP

DSCP 的长度为 6 位。DS 字段的长度为 1 字节。定义 DSCP 时,标记器将使用 DS 代码点来标记包头的前 6 个重要的位。其余的 2 个次要的位将不会使用。

要定义 DSCP,您可以在标记器操作语句中使用以下参数:

 dscp_map{0-63:DS_codepoint}

dscp_map 参数是包含 64 个元素的数组,此数组将使用 (DSCP) 值进行填充。dscp_map 用于将传入 DSCP 映射到 dscpmk 标记器要应用的传出 DSCP。

必须采用十进制表示法为 dscp_map 指定 DSCP 值。例如,必须将 EF 代码点 101110 转换为十进制值 46,结果为 dscp_map{0-63:46}。对于 AF 代码点,必须将表 34-2 中所示的各种代码点转换为十进制表示法,才能在 dscp_map 中使用。

dlcosmk 标记器用于 VLAN 设备

dlcosmk 标记器模块在数据报的 MAC 头中标记转发行为。只能在具有 VLAN 接口的 IPQoS 系统上使用 dlcosmk

dlcosmk 会向 MAC 头中添加称为 VLAN 标记的四字节。VLAN 标记包括由 IEEE 801.D 标准定义的 3 位用户优先级值。了解 VLAN 的可识别 Diffserv 的交换机可以读取数据报中的用户优先级字段。801.D 用户优先级值实现服务类 (class-of-service, CoS) 标记,这些标记为商业交换机所熟知和了解。

您可以通过定义下表中列出的服务类标记,在 dlcosmk 标记器操作中使用用户优先级值。

表 34-3 801.D 用户优先级值

服务类
定义
0
尽力服务
1
后台
2
备用
3
出色服务
4
受控负载
5
少于 100 ms 延迟的视频
6
少于 10 ms 延迟的视频
7
网络控制

有关 dlcosmk 的更多信息,请参阅 dlcosmk(7ipp) 手册页。

具有 VLAN 设备的系统的 IPQoS 配置

本节介绍一个简单网络方案,说明如何在具有 VLAN 设备的系统上实现 IPQoS。此方案包括两个由交换机连接的 IPQoS 系统:machine1machine2machine1 上的 VLAN 设备的 IP 地址为 10.10.8.1machine2 上的 VLAN 设备的 IP 地址为 10.10.8.3

以下用于 machine1 的 IPQoS 配置文件说明了标记通过交换机到 machine2 的通信的简单解决方案。

示例 34-2 具有 VLAN 设备的系统的 IPQoS 配置文件

fmt_version 1.0
action {
        module ipgpc
          name ipgpc.classify

        filter {
                name myfilter2
                daddr 10.10.8.3
                class myclass
        }

        class {
                name myclass
                next_action mark4
        }
}

action {
        name mark4
        module dlcosmk
        params {
                cos 4
                next_action continue
        global_stats true
        }
}

在此配置中,所有来自 machine1 并且目标为 machine2 上的 VLAN 设备的通信都将被传送到 dlcosmk 标记器。mark4 标记器操作指示 dlcosmk 向 CoS 为 4 的 myclass 类数据报中添加 VLAN 标记。用户优先级值 4 指示两台计算机之间的交换机应该为来自 machine1myclass 通信流提供受控负载转发。

flowacct 模块

IPQoS flowacct 模块记录有关通信流的信息,此过程称为流记帐。流记帐将生成可用于向用户收费或评估到特定类的通信量的数据。

流记帐为可选过程。flowacct 通常是已计量或已标记的通信流在释放到网络流之前可能遇到的最后一个模块。有关 flowacct 在 Diffserv 模型中的位置的说明,请参见图 29-1。有关 flowacct 的详细技术信息,请参阅 flowacct(7ipp) 手册页。

要启用流记帐,您需要使用 Oracle Solaris exacct 记帐功能、acctadm 命令以及 flowacct。有关设置流记帐的所有步骤的信息,请参阅设置流记帐(任务列表)

flowacct 参数

flowacct 模块将有关流的信息收集在流表中,该表由流记录组成。表中的每项都包含一个流记录。无法显示流表。

在 IPQoS 配置文件中,您可以定义以下 flowacct 参数以度量流记录并将记录写入流表中:

有关 flowacct 参数在 IPQoS 配置文件中如何应用的示例,请参阅如何在 IPQoS 配置文件中配置流控制

流表

flowacct 模块维护着一个流表,此表记录了 flowacct 实例发现的所有包流。

流由以下参数标识,其中包括 flowacct 8 元组:

如果流的 8 元组的所有参数保持不变,则流表仅包含一个项。max_limit 参数确定流表可以包含的项数。

将按照在 IPQoS 配置文件中为 timer 参数指定的时间间隔扫描流表。缺省值是 15 秒。如果 IPQoS 系统在由 IPQoS 配置文件指定的 timeout 时间间隔内未发现流的包,则表示此流已“超时”。缺省超时时间间隔为 60 秒。已超时的项将被写入使用 acctadm 命令创建的记帐文件中。

flowacct 记录

flowacct 记录包含下表中介绍的属性。

表 34-4 flowacct 记录的属性

属性名称
属性内容
类型
src-addr-address-type
始发者的源地址。address-typev4(对于 IPv4)或 v6(对于 IPv6),如 IPQoS 配置文件中所指定。
基本
dest-addr-address-type
包的目标地址。address-typev4(对于 IPv4)或 v6(对于 IPv6),如 IPQoS 配置文件中所指定。
基本
src-port
传出流的源端口。
基本
dest-port
要将此流送达的目标端口号。
基本
protocol
流的协议编号。
基本
total-packets
流中的包数。
基本
total-bytes
流中的字节数。
基本
action-name
记录此流的 flowacct 操作的名称。
基本
creation-time
flowacct 首次发现该流的包的时间。
仅扩展
last-seen
上次发现该流的包的时间。
仅扩展
diffserv-field
此流的传出包头中的 DSCP。
仅扩展
user
从应用程序中获取的 UNIX 用户 ID 或用户名。
仅扩展
projid
从应用程序中获取的项目 ID。
仅扩展

acctadm 用于 flowacct 模块

可以使用 acctadm 命令创建用于存储由 flowacct 生成的各种流记录的文件。acctadm 可与扩展记帐功能一起使用。有关 acctadm 的技术信息,请参阅 acctadm(1M) 手册页。

flowacct 模块将查看流,并使用流记录填充流表。然后,flowacct 将在 timer 指定的时间间隔内评估其参数和属性。如果在 last_seen 值与 timeout 值之和对应的时间内未发现包,则表示包已超时。所有超时项都将从流表中删除。每经过 timer 参数指定的时间间隔,都会将这些项写入记帐文件中。

要调用 acctadm 以用于 flowacct 模块,请使用以下语法:

acctadm -e file-type -f filename flow
acctadm -e

调用带有 -e 选项的 acctadm。-e 表示后面跟有资源列表。

file-type

指定要收集的属性。file-type 必须替换为 basicextended。有关每种文件类型中的属性列表,请参阅表 34-4

-ffile-name

创建文件 file-name 来保存流记录。

flow

指示 acctadm 与 IPQoS 一起运行。