配置链路服务接口
瞻博网络设备支持链路服务队列接口上的 lsq-0/0/0
链路服务,其中包括 MLPP、MLFR 和 CRTP 等多链路服务。以下主题讨论链路服务概述、配置详细信息以及 SRX 系列防火墙上链路服务的验证。
链路服务接口概述
链路服务包括多链路服务、多链路点对点协议 (MLPPP)、多链路帧中继 (MLFR) 和压缩实时传输协议 (CRTP)。瞻博网络设备在链路服务队列接口上 lsq-0/0/0
支持链路服务。
您可以在瞻博网络设备上配置链路服务队列接口 (lsq-0/0/0
) 以支持多链路服务和 CRTP。
SRX 系列防火墙上的链路服务队列接口由瞻博网络 M Series 和 T Series 路由平台上的以下接口提供的服务组成:多链路服务接口 (ml-fpc/pic/port
)、链路服务接口 ()ls-fpc/pic/port
和链路服务智能队列接口 (lsq-fpc/pic/port
)。虽然 M Series 和 T Series 路由平台上的多链路服务、链路服务和链路服务智能排队 (IQ) 接口安装在物理接口卡 (PIC) 上,但 SRX 系列防火墙上的链路服务队列接口只是内部接口,不与物理介质或 物理接口模块 (PIM) 关联。
(ls-fpc/pic/port
) 在 SRX 系列防火墙上不受支持。
本节包含以下主题。
链路服务接口上可用的服务
链路服务接口是默认可用的 逻辑接口 。 表 1 总结了接口上的可用服务。
服务业 |
目的 |
更多信息 |
---|---|---|
通过 MLPPP 和 MLFR 封装实现的多链路束 |
将多个组成链路聚合到一个更大的逻辑束中,以提供额外的带宽、负载平衡和冗余。
注意:
链路服务接口不支持动态呼叫接入控制 (DCAC) 配置。 |
|
链路分段和交织 (LFI) |
通过分解大型数据包并将对延迟敏感的语音数据包与由此产生的较小数据包交错,减少链路上的延迟和 抖动 。 |
|
压缩实时传输协议 (CRTP) |
减少实时传输协议 (RTP) 对语音和视频数据包造成的开销。 |
|
服务等级 (CoS) 分类器、转发类、调度程序和调度器图以及整形速率 |
通过配置 CoS,为延迟敏感型数据包提供更高的优先级,例如:
|
链路服务例外
SRX 系列防火墙上的链路和多链路服务实施与 M Series 和 T Series 路由平台上的实施类似,但存在以下例外:
接口上支持链路和多链路服务
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 报头。
Junos OS 实现的组播 MLPPP 不支持压缩公共报头字节。
组播 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 类的映射,请在[edit class-of-service fragmentation-maps forwarding-class class-name]
层次结构级别包含语multilink-class
句:
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
,可以对 LFI 和非 LFI 数据包应用 CRTP。由于 CRTP,他们的队列号不会有任何变化。
在组成链路的 Q2 上排队
在多链路捆绑包上使用 服务等级 时,根据根据数据包的源地址、目标地址和IP协议计算出的散列,来自多链路捆绑包的所有Q2流量将排队到组成链路的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 lsq-0/0/0 unit logical-unit-number]
[edit interfaces interface-name mlfr-uni-nni-bundle-options]
或层次结构级别包含 mrru 语句来配置 MRRU。MRRU 类似于 MTU,但特定于链路服务接口。默认情况下,MRRU 大小为 1504 字节,你可以将其配置为 1500 到 4500 字节。
要在队列上配置分段属性,请在 [edit class-of-service]
层次结构级别包含 fragmentation-maps 语句:
[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
或 no-fragmentation
语句;它们是互斥的。
您可以使用语 multilink-class
句将转发类映射到多类 MLPPP。对于给定的转发类,可以包含 multilink-class
或 no-fragmentation
语句;它们是互斥的。
要将分段映射与多链路 PPP 接口或 MLFR FRF.16 DLCI 相关联,请在[edit class-of-service interfaces interface-name unit logical-unit-number]
层次结构级别包含以下fragmentation-map
语句:
[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,则删除该分片映射。如果在 [interfaces] 层次结构下为 lsq-0/0/0 配置了 multilink-max-classes,则可以将其删除。如果在 [interfaces] 层次结构下为 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 配置了多链路最大类,请删除该类。
注意:不支持 Multilink-max-classes,并且很可能未配置。
如果为 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)
PPP
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)。
Q2 上的数据包
400
100
300
通过组成链路传输的数据包总数等于捆绑包上的数据包数。
Q3 上的数据包
0
19
18
通过组成链路的 Q3 传输的数据包用于在组成链路之间交换的激活消息。因此,捆绑包的第 3 季度未计入数据包。
在多链路捆绑包上,验证以下内容:
排队的数据包数与传输的数据包数匹配。如果数字匹配,则不会丢弃任何数据包。如果排队的数据包多于传输的数据包,则数据包会因缓冲区太小而被丢弃。组成链路上的缓冲区大小控制输出级的拥塞。若要更正此问题,请增加组成链路上的缓冲区大小。
通过 Q0 (600) 传输的数据包数与多链路捆绑包上接收的大小数据包数 (100+500) 匹配。如果数字匹配,则所有数据包均正确传输 Q0。
多链路捆绑包 (400) 上通过 Q2 的数据包数与多链路捆绑包上接收的语音数据包数匹配。如果数字匹配,则所有语音 LFI 数据包均正确传输 Q2。
在构件链路上,验证以下内容:
通过 Q0 传输的数据包总数 (350+350) 与数据包和数据片段的数量 (500+200) 匹配。如果数字匹配,则分段后的所有数据包都能正确通过组成链路的 Q0。
数据包在两个组成链路中传输,表明在非 LFI 数据包上正确执行了负载平衡。
在组成链路上传输 Q2 的数据包总数 (300+100) 与多链路捆绑包上接收的语音数据包数 (400) 相匹配。如果数字匹配,则所有语音 LFI 数据包均正确传输 Q2。
来自源端口
100
的 LFI 数据包已传输se-1/0/0
,以及来自源端口200
的 LFI 数据包已传输se-1/0/1
。因此,所有 LFI (Q2) 数据包都基于源端口进行散列处理,并正确传输两个组成链路。
Corrective Action
- 如果数据包仅传输一个链路,请执行以下步骤来解决问题:确定物理链路
up
是(可作)还是down
(不可用)。链路不可用表示 PIM、接口端口或物理连接存在问题(链路层错误)。如果链路正常运行,请转到下一步。验证是否为非 LFI 数据包正确定义了分类器。确保未将非 LFI 数据包配置为排队至 Q2。排队到 Q2 的所有数据包都被视为 LFI 数据包。
验证 LFI 数据包中是否至少有以下一个值不同:源地址、目标地址、IP 协议、源端口或目标端口。如果为所有 LFI 数据包配置相同的值,则所有数据包都将散列到同一流中,并通过同一链路传输。
使用结果验证负载平衡。