系统管理指南:IP 服务

第 34 章 创建 IPQoS 配置文件(任务)

本章介绍如何创建 IPQoS 配置文件。本章包含以下主题:

本章假设您已经定义了完整的 QoS 策略,并可以使用此策略作为 IPQoS 配置文件的基础。有关 QoS 策略规划的说明,请参阅规划服务质量策略

在 IPQoS 配置文件中定义 QoS 策略(任务列表)

此任务列表列出用于创建 IPQoS 配置文件的常规任务,以及指向说明执行这些任务的步骤的章节的链接。

任务 

说明 

参考 

1. 规划启用了 IPQoS 的网络配置。 

确定本地网络中应该启用 IPQoS 的系统。 

如何为 IPQoS 准备网络

2. 为网络中的 IPQoS 系统规划 QoS 策略。 

将通信流标识为不同的服务类。然后,确定需要进行通信管理的流。 

规划服务质量策略

3. 创建 IPQoS 配置文件并定义其第一个操作。 

创建 IPQoS 文件,调用 IP 分类器,并定义要处理的类。 

如何创建 IPQoS 配置文件并定义通信类

4. 为类创建过滤器。 

添加用于控制选择哪些通信并将其归为一类的过滤器。 

如何在 IPQoS 配置文件中定义过滤器

5. 向 IPQoS 配置文件中添加更多的类和过滤器。 

创建要由 IP 分类器处理的更多类和过滤器。 

如何为尽力服务 Web 服务器创建 IPQoS 配置文件

6. 添加具有可配置计量模块的参数的 action 语句。

如果 QoS 策略要求流控制,请为计量器指定流控制速率和一致性级别。 

如何在 IPQoS 配置文件中配置流控制

7. 添加具有可配置标记器的参数的 action 语句。

如果 QoS 策略要求区分转发行为,请定义如何转发通信类。 

如何在 IPQoS 配置文件中定义通信转发

8. 添加具有可配置流记帐模块的参数的 action 语句。

如果 QoS 策略要求收集有关通信流的统计信息,请定义如何收集记帐统计信息。 

如何在 IPQoS 配置文件中为类启用记帐

9. 应用 IPQoS 配置文件。 

将指定的 IPQoS 配置文件内容添加到相应的内核模块中。 

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

10. 在路由器文件中配置转发行为。 

如果网络中的任何 IPQoS 配置文件定义了转发行为,请将最终的 DSCP 添加到路由器上的相应调度文件中。 

如何在启用了 IPQoS 的网络中配置路由器

创建 QoS 策略所用的工具

用于网络的 QoS 策略位于 IPQoS 配置文件中。您可以使用文本编辑器创建此配置文件。然后,将此文件作为参数提供给 IPQoS 配置实用程序 ipqosconf。指示 ipqosconf 应用配置文件中定义的策略时,会将此策略写入内核 IPQoS 系统。有关 ipqosconf 命令的详细信息,请参阅 ipqosconf(1M) 手册页。有关如何使用 ipqosconf 的说明,请参阅如何将新配置应用于 IPQoS 内核模块

基本的 IPQoS 配置文件

IPQoS 配置文件由 action 语句树组成,这些语句可实现在规划服务质量策略中定义的 QoS 策略。IPQoS 配置文件将配置 IPQoS 模块。每个操作语句都包含一组过滤器参数,这些内容要由在操作语句中调用的模块进行处理。

有关 IPQoS 配置文件的完整语法,请参阅示例 37–3ipqosconf(1M) 手册页。

配置 IPQoS 示例拓扑

本章中的任务说明如何为三个启用了 IPQoS 的系统创建 IPQoS 配置文件。这些系统是图 33–4 中介绍的公司 BigISP 的网络拓扑的一部分。

这三个配置文件说明了最常见的 IPQoS 配置。您可以将下一节中的样例文件用作自己的 IPQoS 实现的模板。

为 Web 服务器创建 IPQoS 配置文件

本节通过说明如何为高级 Web 服务器创建配置来介绍 IPQoS 配置文件。同时,本节还说明如何在其他配置文件中为托管个人 Web 站点的服务器配置完全不同的服务级别。这两台服务器是图 33–4 中所示网络示例的一部分。

以下配置文件定义了 Goldweb 服务器的 IPQoS 活动。此服务器可托管已经购买了高级 SLA 的公司 Goldco 的 Web 站点。


示例 34–1 高级 Web 服务器的 IPQoS 配置文件样例

fmt_version 1.0

action {
    module ipgpc
    name ipgpc.classify
    params {
        global_stats TRUE
    }
    class {
        name goldweb
        next_action markAF11
        enable_stats FALSE
    }
    class {
        name video
        next_action markEF
        enable_stats FALSE
    }
    filter {
        name webout
        sport 80
        direction LOCAL_OUT
        class goldweb
    }
    filter {
        name videoout
        sport videosrv
        direction LOCAL_OUT
        class video
    }
}
action {
    module dscpmk
    name markAF11
    params {
        global_stats FALSE
        dscp_map{0-63:10}
        next_action continue
    }
}
action {
    module dscpmk
    name markEF
    params {
        global_stats TRUE
        dscp_map{0-63:46}
        next_action acct
    }
}
action {
    module flowacct
    name acct
    params {
        enable_stats TRUE
        timer 10000
        timeout 10000
        max_limit 2048
    }
}

以下配置文件定义了 Userweb 的 IPQoS 活动。此服务器托管具有低价位 SLA 或尽力服务 SLA 的个人 Web 站点。此服务级别保证 IPQoS 系统在处理来自更昂贵 SLA 的客户的通信之后,为“尽力服务”客户提供最佳的服务。


示例 34–2 尽力服务 Web 服务器的配置样例

fmt_version 1.0

action {
    module ipgpc
    name ipgpc.classify
    params {
        global_stats TRUE
    }
    class {
        name Userweb
        next_action markAF12
        enable_stats FALSE
    }
    filter {
        name webout
        sport 80
        direction LOCAL_OUT
        class Userweb
   }
}
action {
    module dscpmk
    name markAF12
    params {
        global_stats FALSE
        dscp_map{0-63:12}
        next_action continue
    }
}

Procedure如何创建 IPQoS 配置文件并定义通信类

您可以在任何最易于维护的目录中创建第一个 IPQoS 配置文件。本章中的任务使用目录 /var/ipqos 作为 IPQoS 配置文件的位置。下面的过程将构建示例 34–1 中介绍的 IPQoS 配置文件的初始段。


注 –

创建 IPQoS 配置文件时,请务必慎用花括号 ({ }) 将每条 action 语句和子句括起来。有关花括号的用法示例,请参见示例 34–1


  1. 登录到高级 Web 服务器,并创建扩展名为 .qos 的新 IPQoS 配置文件。

    每个 IPQoS 配置文件都必须以版本号 fmt_version 1.0 开头,作为其第一个未注释的行。

  2. 在第一个参数之后添加初始 action 语句,此语句将配置通用 IP 分类器 ipgpc

    此初始操作将开始生成组成 IPQoS 配置文件的 action 语句树。例如,/var/ipqos/Goldweb.qos 文件以初始 action 语句开头来调用 ipgpc 分类器。


    fmt_version 1.0
    
    action {
        module ipgpc
        name ipgpc.classify
    
    fmt_version 1.0

    开始启用 IPQoS 配置文件。

    action {

    开始操作语句。

    module ipgpc

    ipgpc 分类器配置为配置文件中的第一个操作。

    name ipgpc.classify

    定义分类器 action 语句的名称,此名称必须始终为 ipgpc.classify

    有关 action 语句的详细语法信息,请参阅action 语句 ipqosconf(1M) 手册页。

  3. 添加带有统计信息参数 global_statsparams 子句。


    params {
              global_stats TRUE
       }
    

    ipgpc.classify 语句中使用参数 global_stats TRUE 可收集此操作的统计信息。当在类子句定义中指定了 enable_stats TRUE 时,global_stats TRUE 还允许按类收集统计信息。

    打开统计功能会影响性能。您可能需要收集有关新 IPQoS 配置文件的统计信息,以检验 IPQoS 是否正常运行。随后,可以通过将 global_stats 的参数更改为 FALSE 来关闭统计信息收集。

    但是,全局统计信息是可以在 params 子句中定义的一种参数类型。有关 params 子句的语法信息和其他详细信息,请参阅params 子句ipqosconf(1M) 手册页。

  4. 定义类以标识要送达高级服务器的通信。


    class { 
            name goldweb 
            next_action markAF11   
            enable_stats FALSE 
        }
    

    此语句称为类子句class 子句具有以下内容。

    name goldweb

    创建类 goldweb 以标识要送达 Goldweb 服务器的通信。

    next_action markAF11

    指示 ipgpc 模块将 goldweb 类的包传递到 markAF11 操作语句。markAF11 操作语句将调用 dscpmk 标记器。

    enable_stats FALSE

    用于提取 goldweb 类的统计信息。但是,由于 enable_stats 的值为 FALSE,因此不会打开此类的统计信息。

    有关 class 子句语法的详细信息,请参见class 子句 ipqosconf(1M) 手册页。

  5. 定义类以标识必须具有最高优先级转发的应用程序。


    class {
            name video
            next_action markEF
            enable_stats FALSE
        }
    
    name video

    创建类 video 以标识从 Goldweb 服务器传出的流视频通信。

    next_action markEF

    指示 ipgpc 模块在 ipgpc 完成处理之后,将 video 类的包传递到 markEF 语句。markEF 语句将调用 dscpmk 标记器。

    enable_stats FALSE

    用于针对 video 类启用统计信息收集。但是,由于 enable_stats 的值为 FALSE,因此不会针对此类打开统计信息收集。

另请参见

Procedure如何在 IPQoS 配置文件中定义过滤器

以下过程说明如何在 IPQoS 配置文件中为类定义过滤器。

开始之前

此过程假设您已经开始创建文件并已定义类。这些步骤将继续构建在中如何创建 IPQoS 配置文件并定义通信类创建的 /var/ipqos/Goldweb.qos 文件。


注 –

当您创建 IPQoS 配置文件时,必须十分谨慎地使用花括号 ({ }) 括住每条 class 子句和每条 filter 子句。有关花括号的用法示例,请参见示例 34–1


  1. 打开 IPQoS 配置文件,并定位到已定义的最后一个类的结尾。

    例如,在启用了 IPQoS 的服务器 Goldweb 上,应从 /var/ipqos/Goldweb.qos 中的以下 class 子句之后开始:


    class {
            name video
            next_action markEF
            enable_stats FALSE
        }
  2. 定义 filter 子句以选择 IPQoS 系统的传出通信。


        filter {
            name webout
            sport 80
            direction LOCAL_OUT
            class goldweb
        }
    
    name webout

    为过滤器提供名称 webout

    sport 80

    选择源端口 80 传出的通信,此端口是众所周知的用于 HTTP (Web) 通信的端口。

    direction LOCAL_OUT

    进一步选择从本地系统传出的通信。

    class goldweb

    标识过滤器所属的类,在此实例中为类 goldweb

    有关 IPQoS 配置文件中 filter 子句的语法信息和其他详细信息,请参阅filter 子句

  3. 定义 filter 子句以选择 IPQoS 系统上的流视频通信。


        filter {
            name videoout
            sport videosrv
            direction LOCAL_OUT
            class video
        }
    
    name videoout

    为过滤器提供名称 videoout

    sport videosrv

    选择源端口 videosrv 传出的通信,此端口是先前针对此系统上的流视频应用程序定义的端口。

    direction LOCAL_OUT

    进一步选择从本地系统传出的通信。

    class video

    标识过滤器所属的类,在此实例中为类 video

另请参见

Procedure如何在 IPQoS 配置文件中定义通信转发

以下过程说明如何通过将类的单跳行为添加到 IPQoS 配置文件来定义通信转发。

开始之前

此过程假设您具有已定义类和过滤器的 IPQoS 配置文件。这些步骤将继续构建示例 34–1 中的 /var/ipqos/Goldweb.qos 文件。


注 –

此过程显示如何使用 dscpmk 标记器模块来配置通信转发。有关在 VLAN 系统上使用 dlclosmk 标记器转发通信的信息,请参阅dlcosmk 标记器用于 VLAN 设备


  1. 打开 IPQoS 配置文件,并定位到已定义的最后一个过滤器的结尾。

    例如,在启用了 IPQoS 的服务器 Goldweb 上,应从 /var/ipqos/Goldweb.qos 中的以下 filter 子句之后开始:


    filter {
            name videoout
            sport videosrv
            direction LOCAL_OUT
            class video
        }
    }

    请注意,此 filter 子句位于 ipgpc 分类器 action 语句的结尾。因此,需要使用闭花括号来终止过滤器,并使用第二个闭花括号来终止 action 语句。

  2. 使用以下 action 语句调用标记器。


    action {
        module dscpmk
        name markAF11
    
    module dscpmk

    调用标记器模块 dscpmk

    name markAF11

    action 语句提供名称 markAF11

    先前定义的类 goldweb 包括 next_action markAF11 语句。分类器结束处理之后,此语句将通信流发送到 markAF11 操作语句。

  3. 定义要对通信流采取的标记器操作。


        params {
            global_stats FALSE
            dscp_map{0-63:10}
            next_action continue
        }
    }
    
    global_stats FALSE

    markAF11 标记器 action 语句启用统计信息收集。但是,由于 enable_stats 的值为 FALSE,因此不会收集统计信息。

    dscp_map{0–63:10}

    将 DSCP 10 指定给通信类 goldweb 的包头,标记器当前正在处理此通信类。

    next_action continue

    指示不需要对通信类 goldweb 的包进行进一步处理,并指示可以将这些包返回到网络流中。

    DSCP 为 10 指示标记器将 dscp 映射中的所有项都设置为十进制值 10(二进制值 001010)。此代码点指示 goldweb 通信类的包遵守 AF11 单跳行为。AF11 保证 DSCP 为 10 的所有包都拥有低丢弃率、高优先级的服务。因此,对于 Goldweb 上高级客户的传出通信,将提供可用于保证转发 (Assured Forwarding, AF) PHB 的最高优先级。有关可能的 AF DSCP 表的信息,请参阅表 37–2

  4. 开始另一条标记器 action 语句。


    action {
        module dscpmk
        name markEF    
    
    module dscpmk

    调用标记器模块 dscpmk

    name markEF

    action 语句提供名称 markEF

  5. 为标记器定义操作以处理通信流。


        params {
            global_stats TRUE
            dscp_map{0-63:46}
            next_action acct
        }
    }
    
    global_stats TRUE

    用于针对类 video 启用统计信息收集,此类将选择流视频包。

    dscp_map{0–63:46}

    将 DSCP 46 指定给通信类 video 的包头,标记器当前正在处理此通信类。

    next_action acct

    指示 dscpmk 模块在 dscpmk 完成处理之后,将类 video 的包传递到 acct action 语句。acct action 语句将调用 flowacct 模块。

    在 DS 字段中,DSCP 为 46 指示 dscpmk 模块将 dscp 映射中的所有项都设置为十进制值 46(二进制值 101110)。此代码点指示 video 通信类的包受加速转发 (Expedited Forwarding, EF) 单跳行为的限制。


    注 –

    建议用于 EF 的代码点为 46(二进制值 101110)。其他 DSCP 将为包指定 AF PHB。


    EF PHB 保证 IPQoS 系统和可识别区分服务的系统为 DSCP 为 46 的包提供最高优先级。流应用程序需要最高优先级的服务,这是在 QoS 策略中为流应用程序指定 EF PHB 的基本原因。有关加速转发 PHB 的更多详细信息,请参阅加速转发 (Expedited Forwarding, EF) PHB

  6. 将刚创建的 DSCP 添加到 Diffserv 服务路由器上的相应文件中。

    有关更多信息,请参阅如何在启用了 IPQoS 的网络中配置路由器

另请参见

Procedure如何在 IPQoS 配置文件中为类启用记帐

以下过程说明如何在 IPQoS 配置文件中对通信类启用记帐。此过程说明了如何为 video 类定义流记帐,有关该类的信息在如何创建 IPQoS 配置文件并定义通信类中进行了介绍。此类将选择流视频通信,此通信必须作为高级客户的 SLA 的一部分进行记帐。

开始之前

此过程假设您具有已定义类、过滤器、计量操作(如果适用)以及标记操作(如果适用)的 IPQoS 配置文件。这些步骤将继续构建示例 34–1 中的 /var/ipqos/Goldweb.qos 文件。

  1. 打开 IPQoS 配置文件,并定位到已定义的最后一条 action 语句的结尾。

    例如,在启用了 IPQoS 的服务器 Goldweb 上,应从 /var/ipqos/Goldweb.qos 中的以下 markEF action 语句之后开始。


    action {
        module dscpmk
        name markEF
        params {
            global_stats TRUE
            dscp_map{0-63:46}
            next_action acct
        }
    }
  2. 开始可调用流记帐的 action 语句。


    action {
        module flowacct
        name acct
    
    module flowacct

    调用流记帐模块 flowacct

    name acct

    action 语句提供名称 acct

  3. 定义 params 子句以控制对通信类的记帐。


    params {
            global_stats TRUE
            timer 10000
            timeout 10000
            max_limit 2048
            next_action continue
        }
    }
    global_stats TRUE

    用于针对类 video 启用统计信息收集,此类将选择流视频包。

    timer 10000

    指定扫描流表以查找超时流的时间间隔(以毫秒为单位)。在此参数中,此时间间隔为 10000 毫秒。

    timeout 10000

    指定最小时间间隔超时值。如果在超时时间间隔内未发现流的包,则表示流“超时”。在此参数中,包将在 10000 毫秒之后超时。

    max_limit 2048

    在流表中针对该操作实例设置活动流记录的最大数目。

    next_action continue

    指示不需要对通信类 video 的包进行进一步处理,并指示可以将这些包返回到网络流中。

    flowacct 模块将收集有关特定类的包流的统计信息,直到达到指定的 timeout 值为止。

另请参见

Procedure如何为尽力服务 Web 服务器创建 IPQoS 配置文件

尽力服务 Web 服务器的 IPQoS 配置文件与高级 Web 服务器的 IPQoS 配置文件稍有不同。以下过程以示例 34–2 中的配置文件为例。

  1. 登录到尽力服务 Web 服务器。

  2. 创建扩展名为 .qos 的新 IPQoS 配置文件。


    fmt_vesion 1.0
    action {
        module ipgpc
        name ipgpc.classify
        params {
            global_stats TRUE
       }
    

    /var/ipqos/userweb.qos 文件必须以局部 action 语句开头以调用 ipgpc 分类器。此外,action 语句还包含 params 子句,用于启用统计信息收集。有关 action 语句的说明,请参见如何创建 IPQoS 配置文件并定义通信类

  3. 定义类以标识要送达尽力服务 Web 服务器的通信。


    class {
            name userweb
            next_action markAF12
            enable_stats FALSE
        }
    
    name userweb

    创建名为 userweb 的类以转发来自用户的 Web 通信。

    next_action markAF1

    指示 ipgpc 模块在 ipgpc 完成处理之后,将类 userweb 的包传递到 markAF12 action 语句。markAF12 action 语句将调用 dscpmk 标记器。

    enable_stats FALSE

    用于针对 userweb 类启用统计信息收集。但是,由于 enable_stats 的值为 FALSE,因此不会针对此类收集统计信息。

    有关此 class 子句任务的解释,请参见如何创建 IPQoS 配置文件并定义通信类

  4. 定义 filter 子句以选择 userweb 类的通信流。


       filter {
           name webout
           sport 80
           direction LOCAL_OUT
           class userweb
       }
    }
    
    name webout

    为过滤器提供名称 webout

    sport 80

    选择源端口 80 传出的通信,此端口是众所周知的用于 HTTP (Web) 通信的端口。

    direction LOCAL_OUT

    进一步选择从本地系统传出的通信。

    class userweb

    标识过滤器所属的类,在此实例中为类 userweb

    有关此 filter 子句任务的说明,请参见如何在 IPQoS 配置文件中定义过滤器

  5. 开始 action 语句以调用 dscpmk 标记器。


    action {
        module dscpmk
        name markAF12
    
    module dscpmk

    调用标记器模块 dscpmk

    name markAF12

    action 语句提供名称 markAF12

    先前定义的类 userweb 包括 next_action markAF12 语句。分类器结束处理之后,此语句将通信流发送到 markAF12 action 语句。

  6. 定义用于处理通信流的标记器参数。


        params {
            global_stats FALSE
            dscp_map{0-63:12}
            next_action continue
        }
    }
    
    global_stats FALSE

    markAF12 标记器 action 语句启用统计信息收集。但是,由于 enable_stats 的值为 FALSE,因此不会收集统计信息。

    dscp_map{0–63:12}

    将 DSCP 12 指定给通信类 userweb 的包头,标记器当前正在处理此通信类。

    next_action continue

    指示不需要对通信类 userweb 的包进行进一步处理,并指示可以将这些包返回到网络流中。

    DSCP 12 指示标记器将 dscp 映射中的所有项都设置为十进制值 12(二进制值 001100)。此代码点指示 userweb 通信类的包遵守 AF12 单跳行为。AF12 保证 DS 字段中的 DSCP 为 12 的所有包都拥有中丢弃率、高优先级的服务。

  7. 完成 IPQoS 配置文件后,应用配置。

另请参见

为应用服务器创建 IPQoS 配置文件

本节介绍如何为可向客户提供主要应用程序的应用服务器创建配置文件。以下过程以图 33–4 中的 BigAPPS 服务器为例。

以下配置文件定义了 BigAPPS 服务器的 IPQoS 活动。此服务器为客户托管 FTP、电子邮件 (SMTP) 以及网络新闻 (NNTP)。


示例 34–3 应用服务器的 IPQoS 配置文件样例

fmt_version 1.0

action {
    module ipgpc
    name ipgpc.classify
    params {
        global_stats TRUE
    }
    class {
        name smtp
        enable_stats FALSE
        next_action markAF13
    }
    class {
        name news
        next_action markAF21
    }
    class {
        name ftp
        next_action meterftp
    }
    filter {
        name smtpout
        sport smtp
        class smtp
    }
    filter {
        name newsout
        sport nntp
        class news
    }
    filter {
        name ftpout
        sport ftp
        class ftp
    }
   filter {
        name ftpdata
        sport ftp-data
        class ftp
    }
}
action {
    module dscpmk
    name markAF13
    params {
        global_stats FALSE
        dscp_map{0-63:14}
        next_action continue
    }
}
action {
    module dscpmk
    name markAF21
    params {
        global_stats FALSE
        dscp_map{0-63:18}
        next_action continue
    }
}
action {
    module tokenmt
    name meterftp
    params {
        committed_rate 50000000
        committed_burst 50000000
        red_action_name AF31
        green_action_name markAF22
        global_stats TRUE
    }
}
action {
    module dscpmk
    name markAF31
    params {
        global_stats TRUE
        dscp_map{0-63:26}
        next_action continue
    }
}
action {
    module dscpmk
    name markAF22
    params {
        global_stats TRUE
        dscp_map{0-63:20}
        next_action continue
    }
}

Procedure如何为应用服务器配置 IPQoS 配置文件

  1. 登录到启用了 IPQoS 的应用服务器,并创建扩展名为 .qos 的新 IPQoS 配置文件。

    例如,可以为应用服务器创建 /var/ipqos/BigAPPS.qos 文件。请以下列必需的短语开头以开始调用 ipgpc 分类器的 action 语句:


    fmt_version 1.0
    
    action {
        module ipgpc
        name ipgpc.classify
        params {
            global_stats TRUE
        }    
    

    有关开始 action 语句的说明,请参阅如何创建 IPQoS 配置文件并定义通信类

  2. 创建类以选择 BigAPPS 服务器上三个应用程序产生的通信。

    在开始 action 语句之后添加类定义。


        class {
            name smtp
            enable_stats FALSE
            next_action markAF13
        }
        class {
            name news
            next_action markAF21
        }
        class {
            name ftp
            enable_stats TRUE
            next_action meterftp
        }       
    
    name smtp

    创建名为 smtp 的类,此类包括要由 SMTP 应用程序处理的电子邮件通信流

    enable_stats FALSE

    用于针对 smtp 类启用统计信息收集。但是,由于 enable_stats 的值为 FALSE,因此不会针对此类收集统计信息。

    next_action markAF13

    指示 ipgpc 模块在 ipgpc 完成处理之后,将 smtp 类的包传递到 markAF13 action 语句。

    name news

    创建名为 news 类,此类包括要由 NNTP 应用程序处理的网络新闻通信流。

    next_action markAF21

    指示 ipgpc 模块在 ipgpc 完成处理之后,将 news 类的包传递到 markAF21 操作语句。

    name ftp

    创建名为 ftp 的类,此类包括要由 FTP 应用程序处理的传出通信。

    enable_stats TRUE

    用于针对 ftp 类启用统计信息收集。

    next_action meterftp

    指示 ipgpc 模块在 ipgpc 完成处理之后,将 ftp 类的包传递到 meterftp action 语句。

    有关定义类的更多信息,请参阅如何创建 IPQoS 配置文件并定义通信类

  3. 定义 filter 子句以选择属于在步骤 2 中定义的类的通信。


        filter {
            name smtpout
            sport smtp
            class smtp
        }
        filter {
            name newsout
            sport nntp
            class news
        }
            filter {
            name ftpout
            sport ftp
            class ftp
        }
            filter {
            name ftpdata
            sport ftp-data
            class ftp
        }
    }
    
    name smtpout

    为过滤器提供名称 smtpout

    sport smtp

    选择源端口 25 传出的通信,此端口是众所周知的用于 sendmail (SMTP) 应用程序的端口。

    class smtp

    标识过滤器所属的类,在此实例中为类 smtp

    name newsout

    为过滤器提供名称 newsout

    sport nntp

    选择名称为 nntp 的源端口传出的通信,此名称是众所周知的用于网络新闻 (NNTP) 应用程序的端口名称。

    class news

    标识过滤器所属的类,在此实例中为类 news

    name ftpout

    为过滤器提供名称 ftpout

    sport ftp

    选择源端口 21 传出的控制数据,此端口号是众所周知的用于 FTP 通信的端口号。

    name ftpdata

    为过滤器提供名称 ftpdata

    sport ftp-data

    选择源端口 20 传出的通信,此端口号是众所周知的用于 FTP 数据通信的端口号。

    class ftp

    标识 ftpoutftpdata 过滤器所属的类,在此实例中为 ftp

另请参见

Procedure如何在 IPQoS 配置文件中为应用程序通信配置转发

以下过程说明如何为应用程序通信配置转发。在此过程中,您将为优先级可能低于网络中其他通信的应用程序通信类定义单跳行为。这些步骤将继续构建示例 34–3–3 中的 /var/ipqos/BigAPPS.qos 文件。

开始之前

此过程假设您具有已为要标记的应用程序定义类和过滤器的 IPQoS 配置文件。

  1. 打开为应用服务器创建的 IPQoS 配置文件,并定位到最后一条 filter 子句的结尾。

    /var/ipqos/BigAPPS.qos 文件中,最后一个过滤器为:


     filter {
            name ftpdata
            sport ftp-data
            class ftp
        }
    }
  2. 按以下方式调用标记器:


    action {
        module dscpmk
        name markAF13
        
    
    module dscpmk

    调用标记器模块 dscpmk

    name markAF13

    action 语句提供名称 markAF13

  3. 定义要在电子邮件通信流上标记的单跳行为。


        params {
            global_stats FALSE
            dscp_map{0-63:14}
            next_action continue
        }
    }
    
    global_stats FALSE

    markAF13 标记器 action 语句启用统计信息收集。但是,由于 enable_stats 的值为 FALSE,因此不会收集统计信息。

    dscp_map{0–63:14}

    将 DSCP 14 指定给通信类 smtp 的包头,标记器当前正在处理此通信类。


    next_action continue

    指示不需要对通信类 smtp 的包进行进一步处理。这样,可以将这些包返回到网络流中。

    DSCP 为 14 指示标记器将 dscp 映射中的所有项都设置为十进制值 14(二进制值 001110)。DSCP 为 14 将设置 AF13 单跳行为。标记器使用 DS 字段中的 DSCP 14 来标记属于 smtp 通信类的包。

    AF13 针对 DSCP 为 14 的所有包指定高丢弃率的优先级。但是,由于 AF13 还确保优先级为类 1,因此路由器仍保证其队列中的传出电子邮件通信具有高优先级。有关可能的 AF 代码点表的信息,请参阅表 37–2

  4. 添加标记器 action 语句以便为网络新闻通信定义单跳行为:


    action {
        module dscpmk
        name markAF21
        params {
            global_stats FALSE
            dscp_map{0-63:18}
            next_action continue
        }
    }
    
    name markAF21

    action 语句提供名称 markAF21

    dscp_map{0–63:18}

    将 DSCP 18 指定给通信类 nntp 的包头,标记器当前正在处理此通信类。

    DSCP 为 18 指示标记器将 dscp 映射中的所有项都设置为十进制值 18(二进制值 010010)。DSCP 为 18 将设置 AF21 单跳行为。标记器使用 DS 字段中的 DSCP 18 来标记属于 news 通信类的包。

    AF21 保证 DSCP 为 18 的所有包都拥有低丢弃率的优先级,但优先级仅为类 2。因此,丢弃网络新闻通信的可能性很低。

另请参见

Procedure如何在 IPQoS 配置文件中配置流控制

要控制将特定通信流释放到网络的速率,必须为计量器定义参数。您可以在 IPQoS 配置文件中使用以下两个计量器模块之一:tokenmttswtclmt

下面的这些过程将继续构建示例 34–3 中应用服务器的 IPQoS 配置文件。在此过程中,您不仅要配置计量器,还要配置在计量器 action 语句中调用的两种标记器操作。

开始之前

以下步骤假设已为要进行流控制的应用程序定义了类和过滤器。

  1. 打开为应用服务器创建的 IPQoS 配置文件。

    /var/ipqos/BigAPPS.qos 文件中,可以从以下标记器操作之后开始:


    action {
        module dscpmk
        name markAF21
        params {
            global_stats FALSE
            dscp_map{0-63:18}
            next_action continue
        }
    }
  2. 创建计量器 action 语句以便对 ftp 类的通信进行流控制。


    action {
        module tokenmt
        name meterftp
                
    
    module tokenmt

    调用 tokenmt 计量器。

    name meterftp

    action 语句提供名称 meterftp

  3. 添加参数以配置计量器的速率。


    params {
           committed_rate 50000000
           committed_burst 50000000
      
    
    committed_rate 50000000

    指定 ftp 类的通信的传输速率为 50,000,000 bps。

    committed_burst 50000000

    指定 ftp 类的通信的突发大小为 50,000,000 位。

    有关 tokenmt 参数的解释,请参阅tokenmt 配置为双速率计量器

  4. 添加参数以配置通信一致性优先级:


        red_action markAF31
        green_action_name markAF22
        global_stats TRUE
        }
    }
    
    red_action_name markAF31

    指示当 ftp 类的通信流超过承诺速率时,将包发送到 markAF31 标记器 action 语句。

    green_action_name markAF22

    指示当类 ftp 的通信流符合承诺速率时,将包发送到 markAF22 操作语句。

    global_stats TRUE

    用于针对 ftp 类启用计量统计信息。

    有关通信一致性的更多信息,请参见计量器模块

  5. 添加标记器 action 语句以便为属于 ftp 类的非一致的通信流指定单跳行为。


    action {
        module dscpmk
        name markAF31
        params {
            global_stats TRUE
            dscp_map{0-63:26}
            next_action continue
        }
    }
    
    module dscpmk

    调用标记器模块 dscpmk

    name markAF31

    action 语句提供名称 markAF31

    global_stats TRUE

    用于针对 ftp 类启用统计信息。

    dscp_map{0–63:26}

    ftp 类的通信超过承诺速率时,将 DSCP 26 指定给该类的包头。

    next_action continue

    指示不需要对通信类 ftp 的包进行进一步处理。这样,可以将这些包返回到网络流中。

    DSCP 26 指示标记器将 dscp 映射中的所有项都设置为十进制值 26(二进制值 011010)。DSCP 26 设置 AF31 单跳行为。标记器使用 DS 字段中的 DSCP 26 标记 ftp 通信类的包。

    AF31 保证 DSCP 为 26 的所有包都拥有低丢弃率的优先级,但优先级仅为类 3。因此,丢弃非一致的 FTP 通信的可能性很低。有关可能的 AF 代码点表的信息,请参阅表 37–2

  6. 添加标记器 action 语句以便为符合承诺速率的 ftp 通信流指定单跳行为。


    action {
        module dscpmk
        name markAF22
        params {
            global_stats TRUE
            dscp_map{0-63:20}
            next_action continue
        }
    }
    
    name markAF22

    marker 操作提供名称 markAF22

    dscp_map{0–63:20}

    ftp 通信符合已配置的速率时,将 DSCP 20 指定给该类的包头。

    DSCP 20 指示标记器将 dscp 映射中的所有项都设置为十进制值 20(二进制值 010100)。DSCP 20 设置 AF22 单跳行为。标记器使用 DS 字段中的 DSCP 20 来标记属于 ftp 通信类的包。

    AF22 保证 DSCP 为 20 的所有包都拥有中丢弃率的优先级,优先级为类 2。因此,在由 IPQoS 系统同时释放的流中,一致性 FTP 通信具有中丢弃率的优先级。但是,路由器会为具有中丢弃率的类 1 优先级标记或更高优先级的通信类提供更高的转发优先级。有关可能的 AF 代码点表的信息,请参阅表 37–2

  7. 将为应用服务器创建的 DSCP 添加到 Diffserv 路由器上的相应文件中。

另请参见

在路由器上提供区分服务

要提供真正的区分服务,必须在网络拓扑中添加可识别 Diffserv 的路由器,如Diffserv 网络的硬件策略中所述。在路由器上配置 Diffserv 以及更新此路由器的文件的实际步骤不在本指南叙述的范围之内。

本节介绍在网络和 Diffserv 路由器上的各种启用了 IPQoS 的系统间协调转发信息的常规步骤。

Procedure如何在启用了 IPQoS 的网络中配置路由器

以下过程以图 33–4 中的拓扑为例。

开始之前

以下过程假设您已经通过执行本章中的上述任务在网络中配置了 IPQoS 系统。

  1. 查看网络中所有启用了 IPQoS 的系统的配置文件。

  2. 标识在 QoS 各种策略中使用的每个代码点。

    列出代码点,以及将这些代码点应用到的系统和类。下表列出了可能已经使用相同代码点的区域。这种做法是可以接受的。但是,应该在 IPQoS 配置文件中提供其他条件(例如 precedence 选定器),以便确定具有相同标记的类的优先级。

    例如,对于本章过程中使用的网络样例,可能会构造以下代码点表。

    系统 

    类 

    PHB 

    DS 代码点 

    Goldweb

    video

    EF 

    46 (101110) 

    Goldweb

    goldweb

    AF11 

    10 (001010) 

    Userweb

    webout

    AF12 

    12 ( 001100) 

    BigAPPS

    smtp

    AF13 

    14 ( 001110) 

    BigAPPS

    news

    AF18 

    18 ( 010010) 

    BigAPPS

    ftp 一致性通信

    AF22 

    20 ( 010100) 

    BigAPPS

    ftp 非一致的通信

    AF31 

    26 ( 011010) 

  3. 将网络 IPQoS 配置文件中的代码点添加到 Diffserv 路由器上的相应文件中。

    提供的代码点应有助于配置路由器的 Diffserv 调度机制。请参阅路由器制造商提供的文档和 Web 站点以获得相关的说明。