配置链路服务接口
瞻博网络设备支持链路服务队列接口上的 lsq-0/0/0
链路服务,其中包括 MLPP、MLFR 和 CRTP 等多链路服务。以下主题讨论链路服务的概述、配置详细信息以及 SRX 系列防火墙上链路服务的验证。
链路服务接口概述
链路服务包括多链路服务多链路点对点协议 (MLPPP)、多链路帧中继 (MLFR) 和压缩实时传输协议 (CRTP)。瞻博网络设备支持链路服务队列接口上的 lsq-0/0/0
链路服务。
您可以在瞻博网络设备上配置链路服务队列接口 (lsq-0/0/0
),以支持多链路服务和 CRTP。
SRX 系列防火墙上的链路服务队列接口由瞻博网络 M 系列和 T 系列路由平台上的以下接口提供的服务组成:多链路服务接口 (ml-fpc/pic/port
)、链路服务接口 (ls-fpc/pic/port
) 和链路服务智能排队接口 (lsq-fpc/pic/port
)。尽管 M 系列和 T 系列路由平台上的多链路服务、链路服务和链路服务智能排队 (IQ) 接口安装在物理接口卡 (PIC) 上,但 SRX 系列防火墙上的链路服务队列接口仅为内部接口,不与物理介质或 物理接口模块 (PIM) 关联。
(ls-fpc/pic/port
) 在 SRX 系列防火墙上不受支持。
本节包含以下主题。
链路服务接口上提供的服务
链路服务接口是默认可用的 逻辑接口 。 表 1 汇总了接口上可用的服务。
服务业 |
目的 |
更多信息 |
---|---|---|
通过 MLPPP 和 MLFR 封装实现的多链路束 |
将多个组成链路聚合到一个更大的逻辑捆绑包中,以提供额外的带宽、负载平衡和冗余。
注意:
链路服务接口不支持动态呼叫允许控制 (DCAC) 配置。 |
|
链路分段和交错 (LFI) |
通过分解大型数据包并将对延迟敏感的语音数据包与生成的较小数据包交错,减少链路上的延迟和 抖动 。 |
|
压缩实时传输协议 (CRTP) |
减少语音和视频数据包上的实时传输协议 (RTP) 带来的开销。 |
|
服务等级 (CoS) 分类器、转发类、调度程序和调度器图以及整形速率 |
通过配置 CoS,为延迟敏感型数据包提供更高的优先级,如下所示:
|
链路服务例外
SRX 系列防火墙上的链路和多链路服务实施与 M 系列和 T 系列路由平台上的实施类似,但存在以下例外:
对链路和多链路服务的支持位于接口上
lsq-0/0/0
,而不是ml-fpc/pic/port
、lsq-fpc/pic/port
和ls-fpc/pic/port
接口上。启用 LFI 后,分段数据包将在组成链路上以轮询方式排队,以启用每个数据包和每个分段的负载平衡。请参阅 使用 LFI 排队。
在所有类型的组成链路(所有类型的接口上)上都支持按单元调度。
对压缩实时传输协议 (CRTP) 的支持同时适用于 MLPPP 和 PPP。
配置多类 MLPPP
对于 lsq-0/0/0
在瞻博网络设备上,通过 MLPPP 封装,您可以配置多类 MLPPP。如果未配置多类 MLPPP,则无法交错来自不同类的片段。必须先发送单个数据包的所有分片,然后再发送来自另一个数据包的分片。非分段数据包可以在另一个数据包的片段之间交错,以减少非分段数据包看到的延迟。实际上,延迟敏感型流量封装为常规 PPP 流量,批量流量封装为多链路流量。只要存在一类延迟敏感型流量,并且没有高优先级流量优先于延迟敏感型流量,此模型就有效。这种在链路服务 PIC 上使用的 LFI 方法仅支持两级流量优先级,不足以承载 M 系列和 T 系列路由平台支持的 4 到 8 个转发类。
多类 MLPPP 可以将多类延迟敏感型流量通过具有批量流量的单个多链路捆绑包传输。实际上,多类 MLPPP 允许不同类别的流量具有不同的延迟保证。借助多类 MLPPP,您可以将每个转发类映射到单独的多链路类中,从而保留优先级和延迟保证。
在同一捆绑包上同时配置 LFI 和多类 MLPPP 不是必需的,也不受支持,因为多类 MLPPP 表示功能的超集。配置多类 MLPPP 时,将自动启用 LFI。
Junos OS PPP 实现不支持地址字段压缩和协议字段压缩 PPP NCP 选项的协商,这意味着软件始终发送完整的 4 字节 PPP 报头。
多类 MLPPP 的 Junos OS 实现不支持压缩公共标头字节。
多类 MLPPP 极大地简化了使用多个链路时出现的数据包排序问题。如果没有多类 MLPPP,属于单个流的所有语音流量都将散列到单个链路,以避免数据包排序问题。借助多类 MLPPP,您可以将语音流量分配给高优先级类,并且可以使用多个链路。
要在链路服务 IQ 接口上配置多类 MLPPP,您必须指定在链路加入捆绑包时应协商多少个多链路类,并且必须指定转发类到多类 MLPPP 类的映射。
要指定当链路加入捆绑包时应协商多少个多链路类,请包含以下 multilink-max-classes
语句:
multilink-max-classes number
;
您可以在以下层次结构级别包含此语句:
[edit interfaces interface-name unit logical-unit-number]
[edit logical-routers logical-router-name interfaces interface-name unit logical-unit-number]
多链路类的数量可以是 1 到 8。每个转发类的多链路类数不得超过要协商的多链路类数。
要指定转发类到多类 MLPPP 类的映射,请在层次结构级别包含multilink-class
[edit class-of-service fragmentation-maps forwarding-class class-name]
语句:
edit class-of-service fragmentation-maps forwarding-class
class-namemultilink-class number
多链路类索引号可以是 0 到 7。语句 multilink-class
和 no-fragmentation
语句是互斥的。
要查看协商的多链路类数,请发出 show interfaces lsq-0/0/0.logical-unit-number detail
命令。
使用 LFI 排队
LFI 或非 LFI 数据包根据其到达的队列放入组成链路上的队列中。对分段、非分段或 LFI 数据包进行排队时,队列编号不会发生任何更改。
例如,假设队列 Q0 配置了分段阈值 128,Q1 配置了无分段,Q2 配置了分段阈值 512。Q0 正在接收数据包大小为 512 的流量流。Q1 接收 64 字节的语音流量,Q2 接收 128 字节数据包的流量流。接下来,Q0 上的流被分段并排队进入构成链路的 Q0。此外,Q2 上的所有数据包都在构成链路的 Q0 上排队。Q1 上的流被视为 LFI,因为未配置分段。来自 Q0 和 Q2 的所有数据包都在构成链路的 Q0 上排队。来自 Q1 的所有数据包都在构成链路的 Q2 上排队。
使用 lsq-0/0/0
,CRTP 可以应用于 LFI 和非 LFI 数据包。由于 CRTP,其队列号不会有任何变化。
在成分连结的Q2上排队
在多链路捆绑包上使用 服务等级 时,来自多链路捆绑包的所有 Q2 流量都将根据从数据包的源地址、目标地址和 IP 协议计算出的散列排队到组成链路的 Q2。如果 IP 有效负载是 TCP 或 UDP 流量,则哈希还包括源端口和目标端口。作为此散列算法的结果,属于一个流量流的所有流量都将排队到一个构成链路的 Q2。这种将流量传送到构成链路的方法始终适用,包括当尚未使用 LFI 设置捆绑包时。
压缩实时传输协议概述
实时传输协议 (RTP) 有助于实现网络音频和视频应用程序的不同实现之间的互操作性。但是,在某些情况下,在使用低速线路(如拨号调制解调器)的网络上,包含 IP、UDP 和 RTP 标头的标头可能太大(大约 40 字节)。可以配置压缩实时传输协议 (CRTP) 以减少低速链路上的网络开销。CRTP 将 IP、UDP 和 RTP 报头替换为 2 字节上下文 ID (CID),从而显著减少了报头开销。
图 1 显示了 CRTP 如何通过将 40 字节标头减少为 2 字节标头来压缩语音数据包中的 RTP 标头。
您可以在链路服务接口上使用 MLPPP 或 PPP 逻辑接口封装配置 CRTP。请参阅 示例:配置 MLPPP 捆绑包。
实时和非实时数据帧在较低速度的链路上一起传输,不会对实时流量造成过多的延迟。请参阅 了解链路分段和交错配置。
按转发类配置分段
为此 lsq-0/0/0
,您可以为特定的转发类指定分段属性。每个转发类上的流量可以是多链路封装的(分段和排序的),也可以是非封装的(散列且无分段)。默认情况下,所有转发类中的流量都是多链路封装的。
如果未为 MLPPP 接口上的队列配置分段属性,则在层次结构级别设置 [edit interfaces interface-name unit logical-unit-number fragment-threshold]
的分段阈值即为 MLPPP 接口内所有转发类的分段阈值。对于 MLFR FRF.16 接口,您在 [edit interfaces interface-name mlfr-uni-nni-bundle-options fragment-threshold]
层次结构级别设置的分段阈值是 MLFR FRF.16 接口内所有转发类的分段阈值。
如果未在配置中的任何位置设置最大分片大小,则当数据包超过捆绑包中所有链路的最小最大传输单元 (MTU) 或最大接收重构单元 (MRRU) 时,数据包仍会被分段。非封装流仅使用一个链路。如果流量超过单个链路,则必须对转发类进行多链路封装,除非数据包大小超过 MTU/MRRU。
即使未在配置中的任何位置设置最大片段大小,也可以通过在或[edit interfaces interface-name mlfr-uni-nni-bundle-options]
层次结构级别包含 [edit interfaces lsq-0/0/0 unit logical-unit-number]
mrru 语句来配置 MRRU。MRRU 类似于 MTU,但特定于链路服务接口。默认情况下,MRRU 大小为 1504 字节,您可以将其配置为 1500 到 4500 字节。
要在队列上配置分片属性,请在层次结构级别包含分片映射语句 [edit class-of-service]
:
[edit class-of-service]
fragmentation-maps { map-name { forwarding-class class-name { fragment-threshold bytes; multilink-class number; no-fragmentation; } } }
要设置每个转发类的分段阈值,请将该 fragment-threshold
语句包含在分段映射中。此语句设置每个多链路片段的最大大小。
要将队列上的流量设置为非封装而不是多链路封装, no-fragmentation
请在分段映射中包含该语句。此语句指定不会在此队列上接收的数据包前附加额外的分片标头,并且使用静态链路负载平衡来确保按顺序传输数据包。
对于给定的转发类,可以包含 fragment-threshold
or no-fragmentation
语句;它们是互斥的。
您可以使用该 multilink-class
语句将转发类映射到多类 MLPPP。对于给定的转发类,可以包含 multilink-class
or no-fragmentation
语句;它们是互斥的。
要将分片映射与多链路 PPP 接口或 MLFR FRF.16 DLCI 关联,请在层次结构级别包含 fragmentation-map
以下语句 [edit class-of-service interfaces interface-name unit logical-unit-number]
:
[edit class-of-service interfaces]
lsq-0/0/0 { unit logical-unit-number { # Multilink PPP fragmentation-map map-name; } }
lsq-0/0/0:channel { # MLFR FRF.16 unit logical-unit-number fragmentation-map map-name; } }
配置链路层开销
由于串行链路上的位填充,链路层开销可能会导致组成链路上的数据包丢弃。位填充用于防止数据被解释为控制信息。
默认情况下,总捆绑带宽的 4% 留作链路层开销。在大多数网络环境中,链路层的平均开销为 1.6%。因此,我们建议使用 4% 作为保障措施。
对于 lsq-0/0/0
在瞻博网络设备上,您可以配置为链路层开销预留的捆绑带宽百分比。为此,请包含链路层开销语句:
link-layer-overhead percent
;
您可以在以下层次结构级别包含此语句:
[edit interfaces interface-name mlfr-uni-nni-bundle-options]
[edit interfaces interface-name unit logical-unit-number]
[edit logical-routers logical-router-name interfaces interface-name unit logical-unit-number]
可以将该值配置为从 0% 到 50%。
链路服务配置概述
准备工作:
安装设备硬件。
建立基本连接。请参阅适用于您设备的入门指南。
对物理和逻辑接口以及瞻博网络接口约定有基本的了解。请参阅 了解接口
规划如何在网络上使用链路服务接口。请参阅 链路服务接口概述。
要在接口上配置链路服务,请执行以下操作:
- 配置链路分段和交错 (LFI)。请参阅 示例:配置链路分段和交错。
- 配置分类器和转发类。请参见 示例:定义分类器和转发类。
- 配置时间表图。请参阅 了解如何定义和应用调度程序图。
- 配置接口整形速率。请参阅 示例:配置接口整形速率
- 配置 MLPPP 捆绑包。请参阅 示例:配置 MLPPP 捆绑包。
- 要配置 MLFR,请参阅 示例:配置多链路帧中继 FRF.15 或示例 :配置多链路帧中继 FRF.16
- 要配置 CRTP,请参阅 示例:配置压缩实时传输协议
验证链路服务接口
确认配置工作正常。
验证链路服务接口统计信息
目的
验证链路服务接口统计信息。
行动
本节中提供的示例输出基于 示例:配置 MLPPP 捆绑包中提供的配置。要验证组成链路是否已正确添加到捆绑包中,以及数据包是否已正确分段和传输,请执行以下操作:
在设备 R0 和设备 R1 上,此示例中使用的两台设备按照 示例:配置 MLPPP 捆绑包中所述配置 MLPPP 和 LFI。
在 CLI 中,输入命令以
ping
验证是否已在 R0 和 R1 之间建立连接。从 R0 到 R1 传输 10 个数据包,每个数据包 200 字节。
在 R0 上,从 CLI 中输入
show interfaces interface-name statistics
命令。
user@R0> show interfaces lsq-0/0/0 statistics detail Physical interface: lsq-0/0/0, Enabled, Physical link is Up Interface index: 134, SNMP ifIndex: 29, Generation: 135 Link-level type: LinkService, MTU: 1504 Device flags : Present Running Interface flags: Point-To-Point SNMP-Traps Last flapped : 2006-06-23 11:36:23 PDT (03:38:43 ago) Statistics last cleared: 2006-06-23 15:13:12 PDT (00:01:54 ago) Traffic statistics: Input bytes : 0 0 bps Output bytes : 1820 0 bps Input packets: 0 0 pps Output packets: 10 0 pps ... Egress queues: 8 supported, 8 in use Queue counters: Queued packets Transmitted packets Dropped packets 0 DATA 10 10 0 1 expedited-fo 0 0 0 2 VOICE 0 0 0 3 NC 0 0 0 Logical interface lsq-0/0/0.0 (Index 67) (SNMP ifIndex 41) (Generation 133) Flags: Point-To-Point SNMP-Traps 0x4000 Encapsulation: Multilink-PPP Bandwidth: 16mbps Bundle options: ... Drop timer period 0 Sequence number format long (24 bits) Fragmentation threshold 128 Links needed to sustain bundle 1 Interleave fragments Enabled Bundle errors: Packet drops 0 (0 bytes) Fragment drops 0 (0 bytes) ... Statistics Frames fps Bytes bps Bundle: Fragments: Input : 0 0 0 0 Output: 20 0 1920 0 Packets: Input : 0 0 0 0 Output: 10 0 1820 0 Link: se-1/0/0.0 Input : 0 0 0 0 Output: 10 0 1320 0 se-1/0/1.0 Input : 0 0 0 0 Output: 10 0 600 0 ... Destination: 10.0.0.9/24, Local: 10.0.0.10, Broadcast: Unspecified, Generation:144
此输出显示接口信息的摘要。验证以下信息:
Physical interface
—物理接口为Enabled
。如果接口显示为Disabled
,请执行以下任一操作:在 CLI 配置编辑器中,删除
disable
配置层次结构级别的语句[edit interfaces interface-name]
。在 J-Web 配置编辑器中,清除页面上的
Disable
Interfaces>interface-name
复选框。
Physical link
—物理链路为Up
。链路状态为 表示Down
接口模块、接口端口或物理连接出现问题(链路层错误)。Last flapped
Last Flapped
- 时间是预期值。时间Last Flapped
指示物理接口上次变为不可用然后再次可用的时间。意外抖动表示可能存在链路层错误。Traffic statistics
— 接口上接收和传输的字节和数据包的数量和速率。验证入站和出站字节和数据包的数量是否与物理接口的预期吞吐量匹配。若要清除统计信息并仅查看新更改,请使用clear interfaces statistics interface-name
命令。Queue counters
- 队列的名称和数量与配置一致。此示例输出显示传输了 10 个数据包,并且没有丢弃任何数据包。Logical interface
—您配置的多链路捆绑包的名称—lsq-0/0/0.0
。Bundle options
—已正确配置分片阈值,并启用了分片交错。Bundle errors
— 捆绑包丢弃的任何数据包和分片。Statistics
— 设备正确接收和传输分片和数据包。对流量方向(输入或输出)的所有引用都是相对于设备定义的。设备接收的输入片段组装成输入数据包。输出数据包被分段为输出片段,以便从设备传输出去。在此示例中,传输了 10 个 200 字节的数据包。由于分段阈值设置为 128 字节,因此所有数据包都分段为两个分段。示例输出显示正确传输了 10 个数据包和 20 个片段。
Link
— 组成链路将添加到此捆绑包中,并正确接收和传输分片和数据包。在组成链路上传输的分片总数必须等于从束传输的分片数。此示例输出显示,捆绑包传输了 20 个片段和两个组成链路se-1/0/0.0
,并se-1/0/1.0.0
正确传输10+10=20
了片段。Destination
和Local
— 多链路束的远程端和多链路束的本地端的 IP 地址。此示例输出显示目标地址是 R1 上的地址,本地地址是 R0 上的地址。
验证链路服务 CoS 配置
目的
验证链路服务接口上的 CoS 配置。
行动
从 CLI 中,输入以下命令:
show class-of-service interface interface-name
show class-of-service classifier name classifier-name
show class-of-service scheduler-map scheduler-map-name
本节中提供的示例输出基于示例:配置 MLPPP 捆绑包中提供的配置。
user@R0> show class-of-service interface lsq-0/0/0 Physical interface: lsq-0/0/0, Index: 136 Queues supported: 8, Queues in use: 4 Scheduler map: [default], Index: 2 Input scheduler map: [default], Index: 3 Chassis scheduler map: [default-chassis], Index: 4 Logical interface: lsq-0/0/0.0, Index: 69 Object Name Type Index Scheduler-map s_map Output 16206 Classifier ipprec-compatibility ip 12
user@R0> show class-of-service interface ge-0/0/1 Physical interface: ge-0/0/1, Index: 140 Queues supported: 8, Queues in use: 4 Scheduler map: [default], Index: 2 Input scheduler map: [default], Index: 3 Logical interface: ge-0/0/1.0, Index: 68 Object Name Type Index Classifier classfy_input ip 4330
user@R0> show class-of-service classifier name classify_input Classifier: classfy_input, Code point type: inet-precedence, Index: 4330 Code point Forwarding class Loss priority 000 DATA low 010 VOICE low
user@R0> show class-of-service scheduler-map s_map Scheduler map: s_map, Index: 16206 Scheduler: DATA, Forwarding class: DATA, Index: 3810 Transmit rate: 49 percent, Rate Limit: none, Buffer size: 49 percent, Priority:low Drop profiles: Loss priority Protocol Index Name Low any 1 [default-drop-profile] Medium low any 1 [default-drop-profile] Medium high any 1 [default-drop-profile] High any 1 [default-drop-profile] Scheduler: VOICE, Forwarding class: VOICE, Index: 43363 Transmit rate: 50 percent, Rate Limit: none, Buffer size: 5 percent, Priority:high Drop profiles: Loss priority Protocol Index Name Low any 1 [default-drop-profile] Medium low any 1 [default-drop-profile] Medium high any 1 [default-drop-profile] High any 1 [default-drop-profile] Scheduler: NC, Forwarding class: NC, Index: 2435 Transmit rate: 1 percent, Rate Limit: none, Buffer size: 1 percent, Priority:high Drop profiles: Loss priority Protocol Index Name Low any 1 [default-drop-profile] Medium low any 1 [default-drop-profile] Medium high any 1 [default-drop-profile] High any 1 [default-drop-profile]
这些输出示例显示了已配置的 CoS 组件的摘要。验证以下信息:
Logical Interface
- 多链路束的名称以及应用于该束的 CoS 组件。示例输出显示多链路捆绑包为lsq-0/0/0.0
,并且对其应用了 CoS 调度程序映射s_map
。Classifier
- 分配给分类器的代码点、转发类和丢失优先级。示例输出显示,默认分类器ipprec-compatibility
已应用于lsq-0/0/0
接口,分类器classify_input
已应用于ge-0/0/1
接口。Scheduler
— 分配给每个调度程序的传输速率、缓冲区大小、优先级和丢失优先级。示例输出显示数据、语音和网络控制计划程序以及所有配置的值。
了解内部接口 LSQ-0/0/0 配置
链路服务接口只是内部接口。它不与物理介质或 PIM 关联。在 SRX 系列防火墙内,数据包将路由到此接口以进行链路捆绑或压缩。
您可能需要升级配置,以使用内部接口 lsq-0/0/0 作为链路服务队列接口,而不是已弃用的 ls-0/0/0。您还可以回滚修改后的配置以使用 ls-0/0/0。
示例:为多链路服务从 ls-0/0/0 升级到 lsq-0/0/0
此示例说明如何为多链路服务从 ls-0/0/0 升级到 lsq-0/0/0(或撤消更改)。
要求
仅当您仍在使用 ls-0/0/0 而不是 lsq-/0/0/0 或者需要恢复到旧接口时,才需要执行此过程。
概述
在此示例中,您将链路服务内部接口从 ls-0/0/0 重命名为 lsq-0/0/0,反之亦然。您可以将配置中所有出现的 ls-0/0/0 重命名为 lsq-0/0/0,并通过不添加任何分段来配置分段映射。如果配置了队列 2,或者在确保转发之后,则在队列 2 的名称之后不指定任何分段。然后,将上一步中配置的分片映射附加到 lsq-0/0/0,并将单元号指定为为其配置交错分片的多链路束的 6。
然后,将配置从 lsq-0/0/0 回滚到 ls-0/0/0。将配置中的所有匹配项从 lsq-0/0/0 重命名为 ls-0/0/0。如果在 [服务等级] 层次结构下配置了分片映射,则删除该分片映射;如果将其分配给 lsq-0/0/0,则删除该分片图。如果多链路最大类配置为 [接口] 层次结构下的 lsq-0/0/0,则可以将其删除。然后,如果链路层开销配置为 [接口] 层次结构下的 lsq-0/0/0,则可以将其删除。
如果未在任何转发类上配置分片,并且分片映射已分配给 lsq-0/0/0,则为 ls-0/0/0 接口配置交错分片。最后,将 LFI 数据包的分类器配置为引用队列 2。(ls-0/0/0 接口将队列 2 视为 LFI 队列。
配置
程序
CLI 快速配置
要从 ls-0/0/0 快速升级到 lsq-0/0/0(或撤消更改),请复制以下命令并将其粘贴到 CLI 中:
For interfaces ls-0/0/0 to lsq-0/0/0 [edit] rename interfaces ls-0/0/0 to lsq-0/0/0 set class-of-service fragmentation-maps map6 forwarding-class assured-forwarding no-fragmentation set class-of-service interfaces lsq-0/0/0 unit 6 fragmentation-map map6
For interfaces lsq-0/0/0 to ls-0/0/0 [edit] rename interfaces lsq-0/0/0 to ls-0/0/0 delete class-of-service fragmentation-maps map6 delete class-of-service interfaces lsq-0/0/0 unit 6 fragmentation-map map6 delete interfaces lsq-0/0/0 unit 6 link-layer-overhead delete interfaces lsq-0/0/0:0 mlfr-uni-nni-bundle-options link-layer-overhead set interfaces ls-0/0/0 unit 6 interleave-fragments
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 在配置模式下使用 CLI 编辑器。
要从 ls-0/0/0 升级到 lsq-0/0/0 或撤消该更改,请执行以下操作:
重命名配置中所有出现的 ls-0/0/0。
[edit] user@host# rename interfaces ls-0/0/0 to lsq-0/0/0
配置分段图。
[edit class-of-service fragmentation-maps] user@host# set map6 forwarding-class assured-forwarding no-fragmentation
指定多链路束的单元号。
[edit class-of-service ] user@host# set interfaces lsq-0/0/0 unit 6 fragmentation-map map6
针对配置中的所有匹配项回滚配置。
[edit] user@host# rename interfaces lsq-0/0/0 to ls-0/0/0
删除服务等级下的分段映射。
[edit] user@host# delete class-of-service fragmentation-maps map6
如果分段映射已分配给 lsq-0/0/0 接口,请将其删除。
[edit class-of-service interfaces] user@host# delete lsq-0/0/0 unit 6 fragmentation-map map6
如果多链路最大类配置为 lsq-0/0/0,请将其删除。
注意:不支持最大多链路类,并且很可能未配置。
如果链路层开销配置为 lsq-0/0/0,请将其删除。
[edit interfaces] user@host# delete lsq-0/0/0 unit 6 link-layer-overhead
如果链路层开销配置为 lsq-0/0/0:0,请将其删除。
[edit interfaces] user@host# delete lsq-0/0/0:0 mlfr-uni-nni-bundle-options link-layer-overhead
为 ls-0/0/0 接口配置交错片段。
[edit interfaces] user@host# set ls-0/0/0 unit 6 interleave-fragments
结果
在配置模式下,输入 show class-of-service
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以进行更正。
[edit]
user@host# show class-of-service
interfaces {
lsq-0/0/0 {
unit 6 {
fragmentation-map map6;
}
}
}
fragmentation-maps {
map6 {
forwarding-class {
assured-forwarding {
no-fragmentation;
}
}
}
}
如果完成设备配置,请从配置模式输入 commit
。
链路服务接口故障排除
要解决链路服务接口上的配置问题,请执行以下操作:
确定将哪些 CoS 组件应用于组成链路
问题
描述
您正在配置多链路捆绑包,但也有没有 MLPPP 封装的流量通过该多链路捆绑包的组成链路。您是否将所有 CoS 组件应用于组成链路,或者将它们应用于多链路束是否足够?
溶液
您可以将调度程序图应用于多链路捆绑包及其组成链路。尽管您可以将多个 CoS 组件与调度器图一起应用,但请仅配置所需的组件。我们建议您保持组成链路上的配置简单,以避免不必要的传输延迟。
表 2 显示了要应用于多链路束及其组成链路的 CoS 组件。
Cos 组件 |
多链路束 |
组成链接 |
解释 |
---|---|---|---|
分类 |
是的 |
不 |
CoS 分类发生在接口的传入端,而不是在发送端,因此组成链路上不需要分类器。 |
转发类 |
是的 |
不 |
转发类与队列相关联,队列通过调度器图应用于接口。队列分配是在构成链路上预先确定的。来自多链路束 Q2 的所有数据包将分配给构成链路的 Q2,来自所有其他队列的数据包将排队到构成链路的 Q0。 |
调度器映射 |
是的 |
是的 |
在多链路束和组成链路上应用时间表图,如下所示:
|
每单元调度程序或接口级调度器的整形速率 |
不 |
是的 |
由于每单元调度仅在端点应用,因此请仅将此整形速率应用于构成链路。之前应用的任何配置都会被组成链路配置覆盖。 |
传输速率精确或队列级整形 |
是的 |
不 |
应用于构成链路的接口级整形将覆盖队列上的任何整形。因此,仅在多链路束上应用传输速率精确整形。 |
重写规则 |
是的 |
不 |
在分片期间,重写位会自动从数据包复制到分片中。因此,您在多链路束上配置的内容将通过分段传送到组成链路。 |
虚拟通道组 |
是的 |
不 |
虚拟通道组通过防火墙过滤器规则进行标识,这些规则仅在多链路捆绑包之前应用于数据包。因此,您无需将虚拟通道组配置应用于构成链路。 |
参见
确定导致多链路束抖动和延迟的原因
确定 LFI 和负载平衡是否正常工作
问题
描述
在这种情况下,您有一个支持多种服务的网络。网络传输数据和对延迟敏感的语音流量。配置 MLPPP 和 LFI 后,请确保语音数据包在网络中传输时延迟和抖动非常小。如何确定语音数据包是否被视为 LFI 数据包,以及是否正确执行了负载平衡?
溶液
启用 LFI 后,数据(非 LFI)数据包将使用 MLPPP 标头封装,并分段为指定大小的数据包。延迟敏感型语音 (LFI) 数据包采用 PPP 封装,并在数据包片段之间交错。对于 LFI 数据包和非 LFI 数据包,排队和负载平衡的执行方式不同。
要验证是否正确执行了 LFI,请确定数据包是否按配置进行分段和封装。知道数据包是被视为 LFI 数据包还是非 LFI 数据包后,可以确认是否正确执行了负载平衡。
Solution Scenario
—假设两台瞻博网络设备 R0 和 R1 通过聚合两条串行链路的多链路束 lsq-0/0/0.0
连接, se-1/0/0
并且 se-1/0/1
.在 R0 和 R1 上,链路服务接口上启用了 MLPPP 和 LFI,分段阈值设置为 128 字节。
在此示例中,我们使用数据包生成器来生成语音和数据流。您可以使用数据包捕获功能捕获和分析传入接口上的数据包。
在多链路束上发送了以下两个数据流:
100 个 200 字节的数据包(大于分段阈值)
500 个 60 字节的数据包(小于分段阈值)
在多链路捆绑包上发送了以下两个语音流:
来自源端口 100 的 100 个 200 字节语音数据包
来自源端口 200 的 300 个 200 字节语音数据包
要确认 LFI 和负载平衡已正确执行,请执行以下操作:
此示例仅显示和描述命令输出的重要部分。
验证数据包分段。在操作模式下,输入命令以
show interfaces lsq-0/0/0
检查大数据包是否正确分段。user@R0#> show interfaces lsq-0/0/0 Physical interface: lsq-0/0/0, Enabled, Physical link is Up Interface index: 136, SNMP ifIndex: 29 Link-level type: LinkService, MTU: 1504 Device flags : Present Running Interface flags: Point-To-Point SNMP-Traps Last flapped : 2006-08-01 10:45:13 PDT (2w0d 06:06 ago) Input rate : 0 bps (0 pps) Output rate : 0 bps (0 pps) Logical interface lsq-0/0/0.0 (Index 69) (SNMP ifIndex 42) Flags: Point-To-Point SNMP-Traps 0x4000 Encapsulation: Multilink-PPP Bandwidth: 16mbps Statistics Frames fps Bytes bps Bundle: Fragments: Input : 0 0 0 0 Output: 1100 0 118800 0 Packets: Input : 0 0 0 0 Output: 1000 0 112000 0 ... Protocol inet, MTU: 1500 Flags: None Addresses, Flags: Is-Preferred Is-Primary Destination: 9.9.9/24, Local: 9.9.9.10
Meaning
— 输出显示在多链路束上传输设备的数据包摘要。验证多链路捆绑包上的以下信息:中转数据包总数 = 1000
传输片段总数 = 1100
分段的数据包数 =100
多链路束上发送的数据包总数 (600 + 400) 与传输数据包数 (1000) 匹配,表示未丢弃任何数据包。
传输分片数比中转数据包数多 100,表示正确分片了 100 个大型数据包。
Corrective Action
— 如果数据包未正确分段,请检查分段阈值配置。小于指定分段阈值的数据包不会分段。验证数据包封装。要确定数据包是被视为 LFI 数据包还是非 LFI 数据包,请确定其封装类型。LFI 数据包使用 PPP 封装,非 LFI 数据包使用 PPP 和 MLPPP 封装。PPP 和 MLPPP 封装具有不同的开销,从而产生不同大小的数据包。您可以比较数据包大小以确定封装类型。
未分段的小型数据包包含一个 PPP 报头和一个 MLPPP 报头。在大型分段数据包中,第一个分段包含一个 PPP 报头和一个 MLPPP 报头,但连续分片仅包含一个 MLPPP 报头。
PPP 和 MLPPP 封装向数据包添加以下字节数:
PPP 封装增加 7 个字节:
4 字节的标头 + 2 字节的帧校验序列 (FCS)+ 1 个空闲或包含标志的字节
MLPPP 封装会增加 6 到 8 个字节:
4 字节 PPP 报头 + 2 到 4 字节多链路报头
图 2 显示了添加到 PPP 和 MLPPP 标头的开销。
图 2:PPP 和 MLPPP 标头对于 CRTP 数据包,封装开销和数据包大小甚至小于 LFI 数据包。有关更多信息,请参阅 示例:配置压缩实时传输协议。
表 3 显示了数据包和语音数据包各 70 字节的封装开销。封装后,数据包的大小大于语音数据包的大小。
表 3:PPP 和 MLPPP 封装开销 数据包类型
封装
初始数据包大小
封装开销
封装后的数据包大小
语音数据包 (LFI)
购买力平价
70 字节
4 + 2 + 1 = 7 字节
77 字节
具有短序列的数据片段(非 LFI)
MLPPP
70 字节
4 + 2 + 1 + 4 + 2 = 13 字节
83 字节
具有长序列的数据片段(非 LFI)
MLPPP
70 字节
4 + 2 + 1 + 4 + 4 = 15 字节
85 字节
在操作模式下,输入
show interfaces queue
命令以显示每个队列上传输的数据包的大小。将传输的字节数除以数据包数,得到数据包的大小并确定封装类型。验证负载平衡。在操作模式下,在多链路束及其组成链路上输入
show interfaces queue
命令,以确认是否对数据包执行相应的负载平衡。user@R0> show interfaces queue lsq-0/0/0 Physical interface: lsq-0/0/0, Enabled, Physical link is Up Interface index: 136, SNMP ifIndex: 29 Forwarding classes: 8 supported, 8 in use Egress queues: 8 supported, 8 in use Queue: 0, Forwarding classes: DATA Queued: Packets : 600 0 pps Bytes : 44800 0 bps Transmitted: Packets : 600 0 pps Bytes : 44800 0 bps Tail-dropped packets : 0 0 pps RED-dropped packets : 0 0 pps … Queue: 1, Forwarding classes: expedited-forwarding Queued: Packets : 0 0 pps Bytes : 0 0 bps … Queue: 2, Forwarding classes: VOICE Queued: Packets : 400 0 pps Bytes : 61344 0 bps Transmitted: Packets : 400 0 pps Bytes : 61344 0 bps … Queue: 3, Forwarding classes: NC Queued: Packets : 0 0 pps Bytes : 0 0 bps …
user@R0> show interfaces queue se-1/0/0 Physical interface: se-1/0/0, Enabled, Physical link is Up Interface index: 141, SNMP ifIndex: 35 Forwarding classes: 8 supported, 8 in use Egress queues: 8 supported, 8 in use Queue: 0, Forwarding classes: DATA Queued: Packets : 350 0 pps Bytes : 24350 0 bps Transmitted: Packets : 350 0 pps Bytes : 24350 0 bps ... Queue: 1, Forwarding classes: expedited-forwarding Queued: Packets : 0 0 pps Bytes : 0 0 bps … Queue: 2, Forwarding classes: VOICE Queued: Packets : 100 0 pps Bytes : 15272 0 bps Transmitted: Packets : 100 0 pps Bytes : 15272 0 bps … Queue: 3, Forwarding classes: NC Queued: Packets : 19 0 pps Bytes : 247 0 bps Transmitted: Packets : 19 0 pps Bytes : 247 0 bps …
user@R0> show interfaces queue se-1/0/1 Physical interface: se-1/0/1, Enabled, Physical link is Up Interface index: 142, SNMP ifIndex: 38 Forwarding classes: 8 supported, 8 in use Egress queues: 8 supported, 8 in use Queue: 0, Forwarding classes: DATA Queued: Packets : 350 0 pps Bytes : 24350 0 bps Transmitted: Packets : 350 0 pps Bytes : 24350 0 bps … Queue: 1, Forwarding classes: expedited-forwarding Queued: Packets : 0 0 pps Bytes : 0 0 bps … Queue: 2, Forwarding classes: VOICE Queued: Packets : 300 0 pps Bytes : 45672 0 bps Transmitted: Packets : 300 0 pps Bytes : 45672 0 bps … Queue: 3, Forwarding classes: NC Queued: Packets : 18 0 pps Bytes : 234 0 bps Transmitted: Packets : 18 0 pps Bytes : 234 0 bps
Meaning
— 这些命令的输出显示在链路服务接口及其组成链路的每个队列上传输和排队的数据包。 表 4 显示了这些值的摘要。(由于传输的数据包数等于所有链路上排队的数据包数,因此此表仅显示排队的数据包。表 4:队列上传输的数据包数 排队的数据包
捆绑包 lsq-0/0/0.0
组成链接 se-1/0/0
组成链接 se-1/0/1
解释
Q0 上的数据包
600
350
350
通过组成链路的数据包总数 (350+350 = 700) 超过了在多链路束上排队的数据包数 (600)。
第 2 季度的数据包
400
100
300
通过组成链路的数据包总数等于捆绑包上的数据包数。
第 3 季度的数据包
0
19
18
通过构成链路的 Q3 的数据包用于在构成链路之间交换的连接消息。因此,没有数据包被计入捆绑包的第 3 季度。
在多链路束上,验证以下内容:
排队的数据包数与传输的数量匹配。如果数字匹配,则不会丢弃任何数据包。如果排队的数据包多于传输的数据包,则会因为缓冲区太小而被丢弃数据包。组成链路上的缓冲区大小控制输出级的拥塞。若要更正此问题,请增加构成链路上的缓冲区大小。
通过 Q0 (600) 的数据包数与多链路束上接收的大数据包数和小数据包数 (100+500) 相匹配。如果数字匹配,则所有数据包都正确传输了 Q0。
在多链路束 (400) 上通过 Q2 的数据包数与在多链路束上接收的语音数据包数相匹配。如果数字匹配,则所有语音 LFI 数据包都正确传输了第 2 季度。
在构成链路上,验证以下内容:
通过 Q0 的数据包总数 (350+350) 与数据包和数据分片的数量 (500+200) 相匹配。如果数字匹配,则分段后的所有数据包都正确传输了构成链路的 Q0。
数据包传输了两个组成链路,表明在非 LFI 数据包上正确执行了负载平衡。
组成链路上通过 Q2 的数据包总数 (300+100) 与多链路束上接收的语音数据包数 (400) 相匹配。如果数字匹配,则所有语音 LFI 数据包都正确传输了第 2 季度。
已
se-1/0/0
传输来自源端口100
的 LFI 数据包,以及来自源端口200
se-1/0/1
的 LFI 数据包。因此,所有 LFI (Q2) 数据包都根据源端口进行哈希处理,并正确传输了两个组成链路。
Corrective Action
— 如果数据包仅传输一个链路,请执行以下步骤来解决问题:确定物理链路是(
up
运行)还是down
(不可用)。不可用链路表示 PIM、接口端口或物理连接存在问题(链路层错误)。如果链路正常运行,请转到下一步。验证是否已为非 LFI 数据包正确定义分类器。确保非 LFI 数据包未配置为排队到 Q2。排队到 Q2 的所有数据包都被视为 LFI 数据包。
验证 LFI 数据包中的以下值中至少有一个不同:源地址、目标地址、IP 协议、源端口或目标端口。如果为所有 LFI 数据包配置了相同的值,则所有数据包都将散列到同一流并传输相同的链路。
使用结果验证负载平衡。