跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris 管理:IP 服务 Oracle Solaris 11 Information Library (简体中文) |
本节介绍 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) 手册页。
选择满足条件的通信流,该条件在启用了 IPQoS 的系统中的 IPQoS 配置文件中指定。
QoS 策略可以定义各种必须出现在包头中的条件。这些条件称为选定器。ipgpc 分类器将这些选定器与 IPQoS 系统接收的包头进行比较,然后,ipgpc 会选择所有匹配的包。
将包流分类(即具有相同特征的网络通信流量),如 IPQoS 配置文件中所定义。
检查包的区分服务 (differentiated service, DS) 字段中的值,确定是否存在区分服务代码点 (differentiated service codepoint, DSCP)。
DSCP 的存在与否指示发送者是否使用转发行为标记了传入通信。
确定 IPQoS 配置文件中针对特定类的包指定的进一步操作
将包传送到 IPQoS 配置文件指定的下一个 IPQoS 模块中,或者将包返回到网络流中
有关分类器的概述,请参阅分类器 (ipgpc) 概述。有关在 IPQoS 配置文件中调用分类器的信息,请参阅IPQoS 配置文件。
ipgpc 分类器支持多种可在 IPQoS 配置文件的 filter 子句中使用的选定器。定义过滤器时,应始终使用成功检索特定类的通信所需的最少选定器数目。您所定义的过滤器的数目会影响 IPQoS 性能。
表 32-1 IPQoS 分类器的过滤选定器
|
计量器按包跟踪流的传输速率。然后,计量器确定包是否符合已配置的参数。计量器模块从一组操作中确定要对包执行的下一个操作,具体取决于包的大小、已配置的参数和流速率。
计量器由两个计量模块 tokenmt 和 tswtclmt 组成,您可以在 IPQoS 配置文件中配置它们。您可以为类配置一个或两个模块。
committed-rate-针对特定类的包定义可接受的传输速率(以位/秒为单位)
peak-rate-针对特定类的包定义所允许的最大传输速率(以位/秒为单位)
green-包导致流保持在其承诺速率以内。
yellow-包导致流超过其承诺速率但是没有超过其峰值速率。
red-包导致流超过其峰值速率。
您可以在 IPQoS 配置文件中使用不同的操作来配置每种结果。承诺速率和峰值速率将在下一节中介绍。
tokenmt 模块使用令牌桶来度量流的传输速率。您可以将 tokenmt 配置为作为单速率或双速率计量器运行。tokenmt 操作实例维护两个可确定通信流是否符合已配置参数的令牌桶。
tokenmt(7ipp) 手册页介绍了 IPQoS 如何实现令牌计量器模型。您可以在 Kalevi Kilkki 所著的《Differentiated Services for the Internet》和许多 Web 站点上找到有关令牌桶的更多常规信息。
committed_rate-指定流的承诺速率(以位/秒为单位)。
committed_burst-指定承诺突发大小(以位为单位)。committed_burst 参数定义可以以承诺速率向网络传送的特定类的传出包数目。
peak_rate-指定峰值速率(以位/秒为单位)。
peak_burst-指定峰值或超额突发大小(以位为单位)。peak_burst 参数准许通信类具有超过承诺速率的峰值突发大小。
color_aware-打开 tokenmt 的识别模式。
color_map-定义一个将 DSCP 值映射到绿色、黄色或红色的整数数组。
要将 tokenmt 配置为单速率计量器,请不要在 IPQoS 配置文件中为 tokenmt 指定 peak_rate 参数。要将单速率 tokenmt 实例配置为具有红色、绿色或黄色的结果,必须指定 peak_burst 参数。如果不使用 peak_burst 参数,可以将 tokenmt 配置为只有红色或绿色的结果。有关具有两种结果的单速率 tokenmt 的示例,请参见示例 29-3。
当 tokenmt 作为单速率计量器运行时,peak_burst 参数实际为超额突发大小。committed_rate 以及 committed_burst 或 peak_burst 必须为非零正整数。
要将 tokenmt 配置为双速率计量器,请在 IPQoS 配置文件中为 tokenmt 操作指定 peak_rate 参数。双速率 tokenmt 始终具有三种结果,即红色、黄色和绿色结果。committed_rate、committed_burst 和 peak_burst 参数必须为非零正整数。
要将双速率 tokenmt 配置为可识别颜色,必须添加参数以专门添加“颜色识别”功能。以下是将 tokenmt 配置为可识别颜色的操作语句示例。
示例 32-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 始终作为三重结果计量器运行。速率估计器可估测流的到达速率。此速率应接近通信流在特定时间段(即其时间窗口)内的平均传送带宽。速率估计算法可从 RFC 2859 "A Time Sliding Window Three Colour Marker" 中获取。
committed_rate-指定承诺速率(以位/秒为单位)
peak_rate-指定峰值速率(以位/秒为单位)
window-定义保持平均带宽历史记录的时间窗口(以毫秒为单位)
有关 tswtclmt 的详细技术信息,请参阅 tswtclmt(7ipp) 手册页。有关类似 tswtclmt 的码率整形器的一般信息,请参见 RFC 2963, A Rate Adaptive Shaper for Differentiated Services。
IPQoS 包括两个标记器模块:dscpmk 和 dlcosmk。本节包含有关使用这两个标记器的信息。通常情况下,应使用 dscpmk,因为 dlcosmk 仅可用于具有 VLAN 设备的 IPQoS 系统。
有关 dscpmk 的技术信息,请参阅 dscpmk(7ipp) 手册页。有关 dlcosmk 的技术信息,请参阅 dlcosmk(7ipp) 手册页。
标记器将在分类器或计量模块处理了通信流之后接收这些流。标记器将使用转发行为标记通信。此转发行为是在流离开 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) 保证具有推荐 EF 代码点 46 (101110) 的包在释放到网络中时得到最佳处理。通常将加速转发比喻为租用线路。确保所有 Diffserv 路由器保证会优先处理具有 46 (101110) 代码点的包,将其路由到其目的地。有关 EF 的技术信息,请参阅 RFC 2598 "An Expedited Forwarding PHB"。
保证转发 (Assured forwarding, AF) 提供四种可以指定给标记器的不同转发行为类。下表显示了这些类、每个类的三个丢弃优先级以及与每个优先级关联的推荐 DSCP。每个 DSCP 都分别用其 AF 值、十进制值和二进制值表示。
表 32-2 保证转发代码点
|
任何可识别 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 代码点表的技术说明,请参阅 RFC 2597。路由器制造商 Cisco Systems 和 Juniper Networks 在其 Web 站点上提供了有关设置 AF PHB 的详细信息。您可以使用此信息来为 IPQoS 系统和路由器定义 AF PHB。此外,路由器制造商的文档包含在其设备上设置 DS 代码点的说明。
DSCP 的长度为 6 位。DS 字段的长度为 1 字节。定义 DSCP 时,标记器将使用 DS 代码点来标记包头的前 6 个重要的位。其余的 2 个次要的位将不会使用。
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 代码点,必须将表 32-2 中所示的各种代码点转换为十进制表示法,才能在 dscp_map 中使用。
dlcosmk 标记器模块在数据报的 MAC 头中标记转发行为。只能在具有 VLAN 接口的 IPQoS 系统上使用 dlcosmk。
dlcosmk 会向 MAC 头中添加称为 VLAN 标记的四字节。VLAN 标记包括由 IEEE 801.D 标准定义的 3 位用户优先级值。了解 VLAN 的可识别 Diffserv 的交换机可以读取数据报中的用户优先级字段。801.D 用户优先级值实现服务类 (class-of-service, CoS) 标记,这些标记为商业交换机所熟知和了解。
您可以通过定义下表中列出的服务类标记,在 dlcosmk 标记器操作中使用用户优先级值。
表 32-3 801.D 用户优先级值
|
有关 dlcosmk 的更多信息,请参阅 dlcosmk(7ipp) 手册页。
本节介绍一个简单网络方案,说明如何在具有 VLAN 设备的系统上实现 IPQoS。此方案包括两个由交换机连接的 IPQoS 系统:machine1 和 machine2。machine1 上的 VLAN 设备的 IP 地址为 10.10.8.1。machine2 上的 VLAN 设备的 IP 地址为 10.10.8.3。
以下用于 machine1 的 IPQoS 配置文件说明了标记通过交换机到 machine2 的通信的简单解决方案。
示例 32-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 指示两台计算机之间的交换机应该为来自 machine1 的 myclass 通信流提供受控负载转发。
IPQoS flowacct 模块记录有关通信流的信息,此过程称为流记帐。流记帐将生成可用于向用户收费或评估到特定类的通信量的数据。
流记帐为可选过程。flowacct 通常是已计量或已标记的通信流在释放到网络流之前可能遇到的最后一个模块。有关 flowacct 在 Diffserv 模型中的位置的说明,请参见图 27-1。有关 flowacct 的详细技术信息,请参阅 flowacct(7ipp) 手册页。
要启用流记帐,您需要使用 Oracle Solaris exacct 记帐功能、acctadm 命令以及 flowacct。有关设置流记帐的所有步骤的信息,请参阅设置流记帐(任务列表)。
flowacct 模块将有关流的信息收集在由流记录组成的流表中。表中的每项都包含一个流记录。无法显示流表。
在 IPQoS 配置文件中,您可以定义以下 flowacct 参数以度量流记录并将记录写入流表中:
timer-定义将已超时的流从流表中删除和写入由 acctadm 创建的文件中的时间间隔(以毫秒为单位)
timeout-定义一个时间间隔(以毫秒为单位),它指定了在流超时之前包流必须保持不活动状态的时间
注 - 您可以将 timer 和 timeout 配置为具有不同的值。
max_limit-针对可存储在流表中的流记录数设置上限
有关 flowacct 参数在 IPQoS 配置文件中如何应用的示例,请参阅如何在 IPQoS 配置文件中配置流控制。
flowacct 模块可维护流表,此表记录了 flowacct 实例发现的所有包流。流由以下参数标识,其中包括 flowacct 8 元组:
源地址
目标地址
源端口
目标端口
DSCP
用户 ID
项目 ID
协议编号
如果流的 8 元组的所有参数保持不变,则流表仅包含一个项。max_limit 参数确定流表可以包含的项数。
将按照在 IPQoS 配置文件中为 timer 参数指定的时间间隔扫描流表。缺省值是 15 秒。如果 IPQoS 系统在由 IPQoS 配置文件指定的 timeout 时间间隔内未发现流的包,则表示此流已“超时”。缺省超时时间间隔为 60 秒。已超时的项将被写入使用 acctadm 命令创建的记帐文件中。
表 32-4 flowacct 记录的属性
|
可以使用 acctadm 命令创建用于存储由 flowacct 生成的各种流记录的文件。acctadm 可与扩展记帐功能一起使用。有关 acctadm 的技术信息,请参阅 acctadm(1M) 手册页。
flowacct 模块将查看流,并使用流记录填充流表。然后,flowacct 将在 timer 指定的时间间隔内评估其参数和属性。如果在 last_seen 值与 timeout 值之和对应的时间内未发现包,则表示包已超时。所有超时项都将从流表中删除。每经过 timer 参数指定的时间间隔,都会将这些项写入记帐文件中。
要调用 acctadm 以用于 flowacct 模块,请使用以下语法:
acctadm -e file-type -f filename flow
调用带有 -e 选项的 acctadm。-e 表示后面跟有资源列表。
指定要收集的属性。file-type 必须由 basic 或 extended 替换。有关每种文件类型中的属性列表,请参阅表 32-4。
创建文件 file-name 来保存流记录。
指示 acctadm 与 IPQoS 一起运行。