语音服务
语音服务概述
自适应服务接口包括一项语音服务功能,允许您指定接口类型 lsq-fpc/pic/port
以容纳 IP 语音 (VoIP) 流量。此接口使用压缩 RTP (CRTP),这在 RFC 2508 中定义, 压缩低速串行链路的 IP/UDP/RTP 报头。
在大多数情况下,CRTP 可将 40 字节 IP/UDP/RTP 报头压缩到 2 到 4 个字节,从而使 VoIP 流量能够更有效地使用低速链路。
AS 和多服务 PIC 上的语音服务支持通过以下物理接口类型发送单链路 PPP 封装的 IPv4 流量:ATM2、DS3、E1、E3、OC3、OC12、STM1 和 T1,包括这些接口的通道化版本。
语音服务不需要单独的服务规则配置。
瞻博网络 M Series 多业务边缘路由器(M320 路由器除外)上的语音服务还支持 LFI。有关配置语音服务的详细信息,请参阅 为语音服务配置服务接口。
仅对于链路服务 IQ 接口 (lsq
),可以使用组播 MLPPP (MCML) 配置 CRTP。MCML 大大简化了使用多个链路时出现的数据包排序问题。如果没有 MCML,属于单个流的所有语音流量都将被哈希处理到单个链路,以避免出现数据包排序问题。使用 MCML,您可以将语音流量分配给高优先级类,并且可以使用多个链路。有关链路服务 IQ 接口上的 MCML 支持的详细信息,请参阅 在服务 PIC 上配置链路服务和 CoS。
为语音服务配置服务接口
您可以通过为由 interface 类型 lsq-
指定的语音服务接口配置语句和值来定义压缩等语音服务属性。您可以包含以下语句:
encapsulation mlppp; family inet { address address; } compression { rtp { f-max-period number; maximum-contexts number <force>; port { minimum port-number; maximum port-number; } queues [ queue-numbers ]; } } fragment-threshold bytes;
您可以在以下层级包含这些语句:
[edit interfaces (lsq | ls)-fpc/pic/port unit logical-unit-number]
[edit logical-systems logical-system-name interfaces (lsq | ls)-fpc/pic/port unit logical-unit-number]
以下章节提供了在服务接口上配置语音服务的详细说明:
配置 MLPPP 捆绑包的逻辑接口地址
要为 MLPPP 捆绑包配置逻辑地址,请包含以下 address
语句:
address address { ... }
您可以在以下层级配置此语句:
[edit interfaces (lsq | ls)-fpc/pic/port unit logical-unit-number family inet]
[edit logical-systems logical-system-name interfaces (lsq | ls)-fpc/pic/port unit logical-unit-number family inet]
address
指定接口的 IP 地址。AS 和多服务 PIC 仅支持 IP 版本 4 (IPv4) 地址,因此在语句下 family inet
配置这些地址。
有关可以配置的不特定于服务接口的其他寻址属性的信息,请参阅 Junos OS 路由设备网络接口库。
配置语音流量的压缩
您可以通过包含以下 compression
语句来指定服务接口如何处理语音流量压缩:
compression { rtp { f-max-period number; maximum-contexts number <force>; port { minimum port-number; maximum port-number; } queues [ queue-numbers ]; } }
您可以在以下层级包含此语句:
[edit interfaces (lsq | ls)-fpc/pic/port unit logical-unit-number]
[edit logical-systems logical-system-name interfaces (lsq | ls)-fpc/pic/port unit logical-unit-number]
以下语句配置指示的压缩属性:
f-max-period number
- 设置在传输完整报头之间插入的最大压缩数据包数。如果不包含语句,则默认为 255 个数据包。maximum-contexts number <force>
- 指定协商期间要接受的最大 RTP 上下文数。可选force
语句要求 PIC 使用为最大 RTP 上下文指定的值,而不考虑协商值。此选项支持与基于链路速度的 RTP 上下文值的 Junos OS 版本进行互作。port
、minimum port-number
和maximum port-number
—指定 RTP 压缩生效的 UDP 目标端口值范围的下限和上限。的值port-number
范围可以从 0 到 65,535。RTP 压缩应用于在指定范围内传输端口的流量。queues [ queue-numbers ]
- 指定一个或多个队列q0
、q1
、q2
和q3
。RTP 压缩将应用于指定队列中的流量。注意:如果同时指定一个端口范围以及一个或多个队列,则在满足任一条件时进行压缩。
配置对延迟敏感的数据包交织
配置 CRTP 时,软件会自动启用链路分段和交织 (LFI)。LFI 通过将长数据包分片为更小的数据包并将它们与实时帧交错,来减少过度延迟。这使得实时和非实时数据帧可以在低速链路上一起传输,而不会对实时流量造成过度延迟。当对等接口收到较小的分段时,会将这些分段重新组合到其原始数据包中。例如,短延迟敏感型数据包(如分组语音)可以抢占较大的延迟不敏感数据包(如通用数据包)。
默认情况下,当您在[edit interfaces interface-name unit logical-unit-number]
层次结构级别包含compression rtp
语句时,LFI 始终处于活动状态。您可以通过在同一逻辑接口上设置fragment-threshold
语句来间接控制 LFI 的作。例如,如果在[edit interfaces interface-name unit logical-unit-number]
层次结构级别包含语fragment-threshold 256
句,则所有大于 256 字节的 IP 数据包都将被分段。
示例:配置语音流量的压缩
使用 MLPPP 封装在 T1 接口上配置压缩。为所有大于 128 字节的 IP 数据包配置分段。
[edit interfaces] t1-1/0/0 { unit 0 { family mlppp { bundle lsq-1/1/0.1; } } } lsq-1/1/0 { encapsulation mlppp; unit 1 { compression { rtp { port minimum 2000 maximum 64009; } } family inet { address 30.1.1.2/24; } fragment-threshold 128; } }
配置语音服务的封装
语音服务接口支持以下逻辑接口封装类型:
多链路点对点协议 (MLPPP),这是默认封装
基于 AAL5 LLC 的 ATM2 IQ MLPPP
帧中继 PPP
有关封装的一般信息,请参阅 路由设备的 Junos OS 网络接口库。您还可以在语音服务接口上配置物理接口封装。
要配置语音服务封装,请包含以下 encapsulation
语句:
encapsulation type;
您可以在以下层级包含此语句:
[edit interfaces interface-name unit logical-unit-number]
[edit logical-systems logical-system-name interfaces interface-name unit logical-unit-number]
对于语音服务接口,变量的 type
有效值为 atm-mlppp-llc
、 frame-relay-ppp
multilink-ppp
。
您还必须使用相应的封装类型(帧中继或 PPP)配置物理接口。以下物理接口类型支持 LSQ 接口:ATM2 IQ、DS3、E1、E3、OC3、OC12、STM1 和 T1,包括这些接口的通道化版本。有关示例,请参阅 示例:配置语音服务。
封装支持 frame-relay-ppp
的唯一协议类型是 family mlppp
。
配置语音服务的网络接口
要完成语音服务接口配置,您需要使用 MLPPP 封装和语音服务捆绑包或 PPP 封装和压缩接口来配置物理网络接口,如以下部分所述:
使用 MLPPP 封装配置语音服务包
对于语音服务接口,可将链路捆绑包配置为通道。物理接口通常连接到能够支持 MLPPP 的网络;语音流量支持的接口类型有 T1、E1、T3、E3、OC3、OC12 和 STM1,包括这些接口的通道化版本。
对于 M Series 路由器和 T Series 路由器,需要注意以下几点:
捆绑接口上支持的最大吞吐量为 45 Mbps。
不支持将 T3 物理接口下的逻辑接口捆绑到相同或不同的捆绑包中。
要为 MLPPP 配置物理接口链路,请添加以下语句:
bundle interface-name;
您可以在以下层级配置此语句:
[edit interfaces interface-name unit logical-unit-number family mlppp]
[edit logical-systems logical-system-name interfaces interface-name unit logical-unit-number family mlppp]
配置 family mlppp
时,不允许进行其他协议配置。有关链路捆绑包的更多信息,请参阅 配置多链路或链接服务捆绑包中的链接。
使用 PPP 封装配置压缩接口
要配置用于 PPP 封装的物理接口,还需要指定用于语音压缩的服务接口:链路服务 IQ (lsq-
) 接口。
要配置压缩接口,请包含语 compression-device
句:
compression-device interface-name;
您可以在以下层级配置此语句:
示例:配置语音服务
使用 T1 物理接口和 MLPPP 捆绑包封装配置语音服务:
[edit interfaces] t1-0/2/0:1 { encapsulation ppp; unit 0 { family mlppp { bundle lsq-1/3/0.1; } } } lsq-1/3/0 { unit 1 { encapsulation mlppp; family inet { address 10.5.5.2/30; } compression { rtp { f-max-period 100; queues [ q1 q2 ]; port { minimum 16384; maximum 32767; } } } fragment-threshold 128; } }
使用帧中继封装(不捆绑)配置语音服务:
[edit interfaces] t1-1/0/0 { encapsulation frame-relay; unit 0 { dlci 100; encapsulation frame-relay-ppp; compression-device lsq-2/0/0.0; } } lsq-2/0/0 { unit 0 { compression { rtp { f-max-period 100; queues [ q1 q2 ]; port { minimum 16000; maximum 32000; } } } family inet { address 10.1.1.1/32; } } }
使用 ATM2 物理接口配置语音服务(为了便于说明,提供了相应的服务等级配置):
[edit interfaces] at-1/2/0 { atm-options { vpi 0; pic-type atm2; # only ATM2 PICs are supported } unit 0 { vci 0.69; encapsulation atm-mlppp-llc; family mlppp { bundle lsq-1/3/0.10; } } unit 1 { vci 0.42; encapsulation atm-mlppp-llc; family mlppp { bundle lsq-1/3/0.11; } } } lsq-1/3/0 { unit 10 { encapsulation multilink-ppp; } # Large packets need to be fragmented. # Fragmentation can also be specified per forwarding class. fragment-threshold 320; compression { rtp { port minimum 2000 maximum 64009; } } } unit 11 { encapsulation multilink-ppp; } fragment-threshold 160; [edit class-of-service] scheduler-maps { sched { # Scheduling parameters apply to bundles on the AS or Multiservices PIC. # Unlike DS3/SONET interfaces, there is no need to create # a separate scheduler map for the ATM PIC. ATM defines # CoS constructs under the [edit interfaces at-fpc/pic/port] hierarchy. ... } } fragmentation-maps { fragmap { forwarding-class { ef { # In this example, voice is carried in the ef queue. # It is interleaved with bulk data. # Alternatively, you could use multiclass MLPPP to # carry multiple classes of traffic in different # multilink classes. no-fragmentation; } } } } interfaces { # Assign fragmentation and scheduling parameters to LSQ interfaces. lsq-1/3/0 { unit 0 { shaping-rate 512k; scheduler-map sched; fragmentation-map fragmap; } unit 1 { shaping-rate 128k; scheduler-map sched; fragmentation-map fragmap; } } }