调度器的“设定入口”:规则从这里写进转发芯片
产品作用
报文调度器在出口拥塞时决定先发哪个队列、每个队列分多少带宽,配置接口则是管理员设定这些规则的地方。H3C 把拥塞管理概括为队列的创建、报文分类、送入队列和队列调度几个环节[1];Juniper Junos 用调度器(scheduler)定义输出队列的带宽、缓存、调度优先级和丢弃曲线,再经调度映射表挂到接口上[3]。Linux 内核里同类功能由 tc 命令配置,对象是排队规则(qdisc)、类和过滤器[8]。配置接口随交换机、路由器或操作系统一起提供,通常以命令行、NETCONF 等方式出现,作为设备软件的一部分交付。
工作原理
各家写法相似:先按报文头里的优先级或多项报头信息把流量分类,再给每一类指定动作或队列,最后把策略应用到接口的入方向或出方向。H3C 的步骤是定义类(traffic classifier)、定义流行为(traffic behavior)、定义策略(qos policy)、应用策略(qos apply policy)[1]。Junos 先用分类器把报文归入转发类,转发类对应输出队列,调度器写明队列属性,调度映射表把调度器和转发类配对后应用到接口[3][4]。输入的配置先过检查:Junos 提交时先做语法检查(commit check),通过后才成为设备当前运行的配置[6];NETCONF 的 validate 操作检查完整配置的语法和语义错误[7]。
解析、校验和存储三块软件
配置接口是纯软件子系统,下表的“材料”一栏写它的实现形式和数据落在哪里。三项的具体做法以 Junos、NETCONF 标准和 H3C Comware V7 文档为例。
左右滑动查看完整表格 →
| 部件 | 作用 | 材料与配置 |
|---|---|---|
| 输入校验(语法与约束检查) | 在配置生效前检查语法和互相冲突的设置。Junos 提交时先做 commit check,语法错误会提示出错位置,配置不激活[6];同一端口上 shaping-rate 与调度器的 transmit-rate rate-limit 只能二选一,同时配置时提交失败,提示 statements constraint check failed[3]。NETCONF 的 validate 操作可因语法错误、缺少参数、引用未定义的配置数据等原因失败[7]。 | 设备操作系统内的软件逻辑 |
| 配置存储(待提交、运行与回滚文件) | 保存正在编辑的待提交配置(candidate)、当前运行配置和历史版本。Junos 提交成功后把配置存为 juniper.conf.gz,原配置依次存为回滚文件,最多保留 49 个[6]。RFC 6241 定义了 candidate 配置库:修改先写在这个库里,执行 commit 后才变为运行配置,未提交的修改可用 discard-changes 丢弃[7]。 | 软件数据结构,存放在设备的非易失存储(Junos 回滚文件位于 /config 与 /var/db/config 目录) |
| 命令行解析器与 NETCONF 端点 | 接收管理员或网管系统发来的命令,转成内部配置操作。H3C Comware V7 的 NETCONF 报文遵循 RFC 4741/RFC 6241,可经 SSH、Console、Telnet 或 SOAP over HTTP/HTTPS 承载,并提供 edit-config、save、rollback、load 等操作[2]。Linux tc 支持 -batch 从文件批量读入命令,并可用 -j 输出 JSON 格式[8]。 | 软件代码(命令行视图、XML/NETCONF 协议栈) |
队列与权重查得到实例,硬件指标归整机
前五行是配置层面的能力,用 H3C S5130S-HI 系列和 Junos 文档中的实例说明;后七行描述的是承载调度器的整机,配置接口本身作为软件没有这些物理量,选型时按整机样本取值。
左右滑动查看完整表格 →
| 参数 | 资料与范围 | 选型含义 |
|---|---|---|
| 每端口输出队列数 | H3C S5130S-HI 系列每个端口 8 个输出队列,编号 0~7[1];Junos 最多支持 8 个输出队列,部分 Juniper 设备可设 16 个转发类,超过 8 个时要多类共用一个队列[4] | 队列数决定能分开调度几类业务;转发类或业务类别多于队列数时,提前规划合并方式。 |
| 调度性能(整机转发能力) | 按整机的包转发率和端口速率选定;配置接口只下发权重、优先级等规则 | 线速调度由交换芯片完成,招标时把包转发率写在整机指标里。 |
| 队列缓存 | Junos 调度器用 buffer-size 按百分比、remainder 或时间(微秒)分配缓存;缺省调度器给尽力而为队列(队列 0)95%、网络控制队列(队列 3)5% 的带宽和缓存[3][5] | 缓存比例影响拥塞时的时延和丢包;语音、视频队列要单独给出缓存要求。 |
| 优先级等级 | 802.1p 优先级为 3 位,取值 0~7 共 8 级(0 best-effort 至 7 network-management);H3C 设备先把 802.1p 映射为本地优先级,每个本地优先级对应一个队列[1] | 跨厂家组网时,核对两端的优先级映射表是否一致,避免同一业务在不同设备进入不同队列。 |
| 配置接口类型 | H3C Comware V7:命令行,以及 NETCONF over SSH、Console、Telnet、SOAP over HTTP/HTTPS[2];Junos:命令行配置模式,提交模型含 commit check 与 commit confirmed[6];Linux:tc 命令[8] | 有自动化运维需求时,要求设备支持 NETCONF(RFC 6241)并提供对应的数据模型说明。 |
| 工作温度 | 按整机样本;配置接口随设备软件运行 | 工业现场用交换机按安装环境选宽温型号。 |
| 功耗 | 按整机样本的满载功耗 | 配电和散热计算以整机为单位。 |
| 供电电压 | 按整机电源模块规格 | 交流、直流或冗余电源随整机型号确定。 |
| 调度参数粒度 | H3C WRR 权重为整数,缺省队列 0~7 依次为 1、2、3、4、5、9、13、15,可按报文个数或字节数计算[1];Junos transmit-rate 可按速率或百分比设定[3] | 实际带宽分配精度由芯片实现决定,验收时用测试仪在拥塞条件下实测各队列带宽。 |
| 防护等级 | 按整机外壳规格 | 机柜内安装的设备与户外设备分别提出要求。 |
| 尺寸 | 按整机外形图 | 关系到机架或导轨安装空间。 |
| 重量 | 按整机样本 | 随机箱、电源和板卡配置变化。 |
三套系统里,“分类—动作—挂接”各叫什么
读懂一台设备的配置接口,先找它的三个对象:怎样分类、分好的流量做什么、规则挂在哪里。下表按各家文档列出对应名称,招标时用同一套说法描述需求,可减少厂家理解偏差。
H3C 的 QoS 策略可以应用在接口、VLAN、全局和上线用户四个位置;接口的入、出两个方向各只能应用一个策略,一个策略可以给多个接口共用[1]。策略应用在出方向时,对设备自己发出的链路维护、RIP、LDP、SSH 等协议报文不起作用,这样即使策略配错,这些报文仍能发出[1]。
左右滑动查看完整表格 →
| 环节 | H3C Comware V7 | Juniper Junos | Linux tc |
|---|---|---|---|
| 分类 | traffic classifier,用 if-match 定义匹配规则[1] | 分类器按报文头 CoS 值或多项报头信息把报文归入转发类[3] | filter 决定报文进入哪个类[8] |
| 动作或队列属性 | traffic behavior:监管、过滤、重标记、统计等[1] | scheduler:带宽、缓存、优先级、丢弃曲线[3] | qdisc 与 class,如 PRIO 按 band 0 起依次出队[9] |
| 组合 | qos policy 中 classifier 对应 behavior[1] | scheduler-map 把调度器配给转发类[3] | class 内可再挂 qdisc[8] |
| 挂接 | qos apply policy inbound/outbound[1] | 在 [edit class-of-service interfaces] 下引用 scheduler-map[3] | 挂在网卡的 root 或 parent 上[8] |
严格优先与加权轮询:在接口上怎么设
H3C S5130S-HI 系列支持 SP 和 WRR 两种队列。SP 按 7 到 0 的顺序先发高优先级队列,高优先级队列长期有报文时,低优先级队列会一直得不到服务;WRR 按权重轮流调度,文档举例:100 Mbps 端口权重设为 50、50、30、30、10、10、10、10 时,最低优先级队列至少获得 5 Mbps[1]。接口缺省使用 WRR,可把个别队列加入 SP 组,形成 SP+WRR 混合调度[1]。
批量下发同一套调度参数时,H3C 用队列调度策略(qos qmprofile):在策略里逐个队列写 sp 或 wrr group 1 weight,再在接口出方向执行 qos apply qmprofile[1]。设备最多保存 8 套接口队列调度设置,自定义的几套用完后改用队列调度策略配置[1]。
Junos 的思路是给队列保底带宽:transmit-rate 设定非严格优先队列的最低保证带宽,未用完的带宽按各队列的 transmit-rate 或 excess-rate 比例分享;端口上有两个以上 strict-high 队列时必须为它们配置 transmit-rate,Juniper 建议始终配置,防止饿死其他队列[3]。
改错策略时,设备能否自己退回
调度策略配错,轻则业务卡顿,重则网管流量也被挤掉,所以要看配置接口的提交模型。Junos 先在待提交的配置上修改,commit 时先查语法再激活;commit confirmed 提交后 10 分钟内未确认,系统自动回滚到上一版并向在线用户广播[6]。RFC 6241 的 confirmed commit 能力规定同样的机制,缺省超时 600 秒,可用 confirm-timeout 调整;lock 操作可在修改期间锁住配置库,防止其他 NETCONF 会话、SNMP、命令行脚本同时改动[7]。H3C Comware V7 的 NETCONF 提供配置保存、配置回滚和配置加载操作[2]。
写招标要求或验收时,请供货方书面提供:每端口队列数和支持的调度方式(SP、WRR 或其他)及权重计算方式;队列调度策略数量上限;QoS 策略可应用的位置和方向;支持的配置方式及 NETCONF 能力列表(candidate、validate、confirmed commit、回滚);对应软件版本的配置指导和命令手册。到货后在拥塞条件下用测试仪实测各队列带宽,与配置的权重对照。
关联的应用系统与部件
以下入口来自产品关系,用于继续查阅;具体机型的装配和兼容性仍需对应型号资料。
应用系统
资料来源与适用范围
核对日期:2026-10-17。内容来自 H3C、Juniper 公开的配置手册,IETF RFC 6241 和 Linux 手册页,型号实例以 H3C S5130S-HI 系列 R612x 版本和 Junos 文档为准。不同设备型号和软件版本的队列数和调度策略数量会有差异,以所购版本的手册为准。
- H3C S5130S-HI[EI] & S5110V2 & S3100V3-EI 系列以太网交换机 配置指导 R612x 6W103:02-QoS配置QoS 策略四步配置、应用位置与方向限制,SP/WRR 原理与缺省权重,队列调度策略 qmprofile 及 8 套调度设置上限,802.1p 优先级表;用于定义、原理、参数、两节正文。
- H3C 使用NETCONF配置设备操作指导书-6W103Comware V7 NETCONF 报文遵循 RFC 4741/6241、承载方式(SSH、Console、Telnet、SOAP over HTTP/HTTPS)、edit-config/save/rollback/load 操作;用于部件表与接口类型参数。
- Juniper:How Schedulers Define Output Queue Properties(Junos OS)调度器组成、scheduler-map 挂接、transmit-rate 与 strict-high 队列建议、shaping-rate 冲突导致提交失败;用于原理、缓存与粒度参数、SP/WRR 一节。
- Juniper:Understanding How Forwarding Classes Assign Classes to Output QueuesJunos 最多 8 个输出队列、部分设备 16 个转发类;用于队列数参数和 FAQ。
- Juniper:Default Schedulers Overview缺省调度器给队列 0 分配 95%、队列 3 分配 5% 带宽和缓存;用于队列缓存参数。
- Juniper:Commit the Configuration(Junos CLI 用户指南)commit check、commit confirmed 10 分钟自动回滚、49 个回滚文件及存放目录;用于部件表与提交回退一节。
- RFC 6241 Network Configuration Protocol (NETCONF)lock、candidate 配置库与 commit/discard-changes、confirmed commit 缺省 600 秒、validate 能力;用于原理、部件表与提交回退一节。
- tc(8) Linux manual pagetc 配置内核流量控制,qdisc/class/filter 三类对象,-batch 与 -j 选项;用于定义、部件表和对照表。
- tc-prio(8) Linux manual pagePRIO qdisc 从 band 0 起依次出队、priomap 映射;用于对照表。
