系统管理指南:IP 服务

第 35 章 启动和维护 IPQoS(任务)

本章介绍激活 IPQoS 配置文件和记录 IPQoS 相关事件的任务。本章包含以下主题:

管理 IPQoS(任务列表)

本节列出用于在 Oracle Solaris : 系统上启动和维护 IPQoS 的任务组。执行这些任务之前,您必须具有已完成的 IPQoS 配置文件,如在 IPQoS 配置文件中定义 QoS 策略(任务列表)中所述。

下表列出并描述了这些任务,并且包含指向详细说明如何完成这些任务的章节的链接。

任务 

说明 

参考 

1. 在系统上配置 IPQoS。 

在系统上使用 ipqosconf 命令来激活 IPQoS 配置文件。

如何将新配置应用于 IPQoS 内核模块

2. 每次引导系统之后,使 Oracle Solaris : 启动脚本应用调试过的 IPQoS 配置文件。 

确保每次重新引导系统时都应用 IPQoS 配置。 

如何确保每次重新引导系统之后都应用 IPQoS 配置

3. 启用 IPQoS 的 syslog 日志记录。

添加一个项以启用 IPQoS 消息的 syslog 日志记录。

如何在引导过程中启用 IPQoS 消息的日志记录

4. 解决发生的任何 IPQoS 问题。 

使用错误消息对 IPQoS 的问题进行疑难解答。 

请参阅表 35–1 中的错误消息。

应用 IPQoS 配置

您可以使用 ipqosconf 命令激活 IPQoS 的配置并对其执行其他操作。

Procedure如何将新配置应用于 IPQoS 内核模块

您可以使用 ipqosconf 命令读取 IPQoS 配置文件和配置 UNIX 内核中的 IPQoS 模块。以下过程以Creating IPQoS Configuration Files for Web Servers中创建的文件 为 Web 服务器创建 IPQoS 配置文件 为例。有关详细信息,请参阅 ipqosconf(1M) 手册页。

  1. 在启用 IPQoS 的系统上承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 应用新配置。


    # /usr/sbin/ipqosconf -a/var/ipqos/Goldweb.qos
    

    ipqosconf 将指定的 IPQoS 配置文件中的信息写入 Oracle Solaris : 内核中的 IPQoS 模块。在此示例中,会将 /var/ipqos/Goldweb.qos 中的内容应用于当前的 Oracle Solaris : 内核。


    注 –

    当您通过 -a 选项应用 IPQoS 配置文件时,文件中的操作只对当前会话处于活动状态。


  3. 测试和调试新的 IPQoS 配置。

    使用 UNIX 实用程序跟踪 IPQoS 行为并收集有关 IPQoS 实现的统计信息。此信息有助于您确定配置是否按预期执行。

另请参见

Procedure如何确保每次重新引导系统之后都应用 IPQoS 配置

您应该明确地使 IPQoS 配置在每次重新引导系统之后都能应用。否则,当前配置将只在下次重新引导系统之前有效。当 IPQoS 在系统上正常运行时,请执行以下操作以使此配置在每次重新引导系统之后都能应用。

  1. 在启用 IPQoS 的系统上承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 测试内核模块中是否存在 IPQoS 配置。


    # ipqosconf -l
    

    如果配置已经存在,ipqosconf 便会在屏幕上显示此配置信息。如果没有显示输出信息,请应用配置,如如何将新配置应用于 IPQoS 内核模块中所述。

  3. 确保每次重新引导 IPQoS 系统时都应用现有的 IPQoS 配置。


    # /usr/sbin/ipqosconf -c
    

    使用 -c 选项,使当前的 IPQoS 配置在引导时配置文件 /etc/inet/ipqosinit.conf 中表示。

启用 IPQoS 消息的 syslog 日志

要记录 IPQoS 引导时消息,您需要按照以下过程所示修改 /etc/syslog.conf 文件。

Procedure如何在引导过程中启用 IPQoS 消息的日志记录

  1. 在启用 IPQoS 的系统上承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 打开 /etc/syslog.conf 文件。

  3. 添加以下文本,将其作为文件中的最后一项。


    user.info                 /var/adm/messages
    

    在列间使用 Tab 键而不是空格键。

    此项将所有由 IPQoS 生成的引导时消息都记录到 /var/adm/messages 文件中。

  4. 重新引导系统以应用这些消息。


示例 35–1 来自 /var/adm/messages 的 IPQoS 输出

在系统重新引导之后查看 /var/adm/messages 时,输出信息可能包含与以下内容相似的 IPQoS 日志消息。


May 14 10:44:33 ipqos-14 ipqosconf: [ID 815575 user.info]
 New configuration applied.
May 14 10:44:46 ipqos-14 ipqosconf: [ID 469457 user.info] 
Current configuration saved to init file.
May 14 10:44:55 ipqos-14 ipqosconf: [ID 435810 user.info]
Configuration flushed.

您还可能在 IPQoS 系统的 /var/adm/messages 文件中看到与以下内容相似的 IPQoS 错误消息。


May 14 10:56:47 ipqos-14 ipqosconf: [ID 123217 user.error]
 Missing/Invalid config file fmt_version.
May 14 10:58:19 ipqos-14 ipqosconf: [ID 671991 user.error] 
No ipgpc action defined.

有关这些错误消息的说明,请参见表 35–1


对 IPQoS 错误消息进行疑难解答

本节介绍由 IPQoS 生成的错误消息的表以及可能的解决方案。

表 35–1 IPQoS 错误消息

错误消息 

说明 

解决方案 

Undefined action in parameter parameter-name's action action-name

在 IPQoS 配置文件中,不存在 parameter-name 中指定的操作名称。

创建操作。或者参阅参数中其他现有的操作。 

action action-name involved in cycle

在 IPQoS 配置文件中,action-name 是操作循环的一部分,IPQoS 不允许出现此情况。

确定操作循环,然后从 IPQoS 配置文件中删除其中的一个循环引用。 

Action action-name isn't referenced by any other actions

在 IPQoS 配置中定义的其他操作未引用非 ipgpc 操作的定义,IPQoS 不允许出现此情况。

删除未引用的操作。或者,使另一个操作引用当前未引用的操作。 

Missing/Invalid config file fmt_version

未将配置文件的格式指定为文件中的第一项,IPQoS 要求执行此操作。 

添加格式版本,如如何创建 IPQoS 配置文件并定义通信类中所述。

Unsupported config file format version

IPQoS 不支持在配置文件中指定的格式版本。 

将格式版本更改为运行 Solaris 9 9/02 和更高版本的 IPQoS 所需的 fmt_version 1.0

No ipgpc action defined.

未在配置文件中为 ipgpc 分类器定义操作,IPQoS 要求执行此操作。

ipgpc 定义一个操作,如如何创建 IPQoS 配置文件并定义通信类中所述。

Can't commit a null configuration

运行 ipqosconf -c 以提交配置时,配置为空,IPQoS 不允许出现此情况。

确保在尝试提交配置之前应用配置文件。有关说明,请参见如何将新配置应用于 IPQoS 内核模块

Invalid CIDR mask on line line-number

在配置文件中,将超出 IP 地址有效范围的 CIDR 掩码用作 IP 地址的一部分。  

更改掩码值,使其位于 1–32 范围内(对于 IPv4)或者 1–128 范围内(对于 IPv6)。 

Address masks aren't allowed for host names line line-number

在配置文件中,为主机名定义了 CIDR 掩码,IPQoS 不允许出现此情况。 

删除掩码或将主机名更改为 IP 地址。 

Invalid module name line line-number

在配置文件中,操作语句中指定的模块名称无效。 

检查模块名称的拼写。有关 IPQoS 模块列表,请参阅表 37–5

ipgpc action has incorrect name line line-number

在配置文件中指定给 ipgpc 操作的名称不是要求的 ipgpc.classify

将操作重命名为 ipgpc.classify

Second parameter clause not supported line line-number

在配置文件中,为单个操作指定了两条参数子句,IPQoS 不允许出现此情况。 

将此操作的所有参数合并到单个参数子句中。 

Duplicate named action

在配置文件中,为两个操作指定了相同的名称。 

重命名或删除其中一个操作。 

Duplicate named filter/class in action action-name

为同一操作中的两个过滤器或类指定了相同的名称,IPQoS 配置文件中不允许出现此情况。 

重命名或删除其中一个过滤器或类。 

Undefined class in filter filter-name in action action-name

在配置文件中,过滤器引用操作中未定义的类。 

创建类,或者将该过滤器引用更改为已经存在的类。 

Undefined action in class class-name action action-name

类引用配置文件中未定义的操作。 

创建操作,或者将此引用更改为已经存在的操作。 

Invalid parameters for action action-name

在配置文件中,其中有一个参数无效。 

有关由指定操作调用的模块的信息,请参阅IPQoS 体系结构和 Diffserv 模型中的模块项。或者,请参阅 ipqosconf(1M) 手册页。

Mandatory parameter missing for action action-name

在配置文件中,没有为操作定义必要的参数。 

有关由指定操作调用的模块的信息,请参阅IPQoS 体系结构和 Diffserv 模型中的模块项。或者,请参阅 ipqosconf(1M) 手册页。

Max number of classes reached in ipgpc

指定的类的数目超出 IPQoS 配置文件的 ipgpc 操作中允许的类数目。最大数目为 10007。

查看配置文件,删除不需要的类。或者,通过将项 ipgpc_max_classesclass-number 添加到 /etc/system 文件增加类的最大数目。

Max number of filters reached in action ipgpc

指定的过滤器的数目超出 IPQoS 配置文件的 ipgpc 操作中允许的过滤器数目。最大数目为 10007。

查看配置文件,删除不需要的过滤器。或者,通过将项 ipgpc_max_filtersfilter-number 添加到 /etc/system 文件增加过滤器的最大数目。

Invalid/missing parameters for filter filter-name in action ipgpc

在配置文件中,过滤器 filter-name 具有无效或缺失的参数。

有关有效参数的列表,请参阅 ipqosconf(1M) 手册页。

Name not allowed to start with '!', line line-number

操作、过滤器或类名称的开头有叹号 (!),IPQoS 文件中不允许出现此情况。 

删除叹号,或者重命名操作、类或过滤器。 

Name exceeds the maximum name length line line-number

在配置文件中为操作、类或过滤器定义的名称的长度超过了最大长度 23 个字符。 

为操作、类或过滤器指定较短的名称。 

Array declaration line line-number is invalid

在配置文件中,行 line-number 上的参数的数组声明无效。

有关包含无效数组的 action 语句所调用的数组声明的正确语法,请参阅IPQoS 体系结构和 Diffserv 模型。或者,请参阅 ipqosconf(1M) 手册页。

Quoted string exceeds line, line-number

字符串的终止引号没有与其位于同一行上,而在配置文件中要求位于同一行。 

确保在配置文件中,引用的字符串在同一行开始和结束。 

Invalid value, line line-number

对于参数而言,不支持在配置文件的 line-number 上指定的值。

有关 action 语句所调用的模块的可接受值的信息,请参阅IPQoS 体系结构和 Diffserv 模型中的模块说明。或者,请参阅 ipqosconf(1M) 手册页。

Unrecognized value, line line-number

对于参数而言,配置文件的 line-number 上的值不是受支持的枚举值。

检查枚举值对于参数是否正确。有关带有无法识别行号的 action 语句所调用模块的说明,请参阅IPQoS 体系结构和 Diffserv 模型。或者,请参阅 ipqosconf(1M) 手册页。

Malformed value list line line-number

在配置文件的 line-number 上指定的枚举不符合规范语法。

有关带有不规则的值列表的 action 语句所调用模块的正确语法,请参阅IPQoS 体系结构和 Diffserv 模型中关于模块的说明。或者,请参阅 ipqosconf(1M) 手册页。

Duplicate parameter line line-number

line-number 上指定了重复的参数,配置文件中不允许出现此情况。

删除其中一个重复的参数。 

Invalid action name line line-number

为配置文件的 line-number 上的操作指定的名称使用了预定义名称 "continue" 或 "drop"。

重命名操作以使此操作不使用预先定义的名称。 

Failed to resolve src/dst host name for filter at line line-number, ignoring filter

ipqosconf 不能解析在配置文件中为给定过滤器定义的源地址或目标地址。因此,忽略了过滤器。

如果过滤器很重要,则稍后尝试应用此配置。 

Incompatible address version line line-number

line-number 上地址的 IP 版本与先前指定的 IP 地址或 ip_version 参数不兼容。

更改两个冲突的项使其兼容。 

Action at line line-number has the same name as currently installed action, but is for a different module

尝试更改系统 IPQoS 配置中已存在的操作的模块,不允许执行此操作。 

在应用新配置之前刷新当前配置。