语音服务
语音服务概述
自适应服务接口包括语音服务功能,通过该功能可以指定接口类型 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 多服务边缘路由器上的 LFI,M320 路由器除外。有关配置语音服务的详细信息,请参阅 为语音服务配置服务接口。
仅对于链路服务 IQ 接口 (lsq),您可使用组类 MLPPP (MCML) 配置 CRTP。MCML 极大地简化了使用多个链路时出现的数据包排序问题。如果没有 MCML,属于单个流的所有语音流量都会被散列到单个链路,以避免数据包排序问题。借助 MCML,您可以将语音流量分配给高优先级类,并且可以使用多个链路。有关链路服务 IQ 接口上的 MCML 支持的更多信息,请参阅 在服务 PIC 上配置链路服务和 CoS。
为语音服务配置服务接口
您可以通过为语音服务接口配置语句和值(由接口类型 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 上下文指定的值,而不考虑协商的值。此选项支持与 Junos OS 版本互作,这些版本的 RTP 上下文值基于链路速度。port、minimum port-number、和maximum port-number— 指定 RTP 压缩生效的 UDP 目标端口值范围的下限和上限。的port-number值范围可以从 0 到 65,535。RTP 压缩应用于在指定范围内通过端口的流量。queues [ queue-numbers ]- 指定一个或多个队列q0、q1、q2q3和 。RTP 压缩将应用于指定队列中的流量。注意:如果同时指定端口范围以及一个或多个队列,则在满足任一条件时进行压缩。
配置延迟敏感型数据包交织
配置 CRTP 时,软件会自动启用链路分段和交织 (LFI)。LFI 通过将长数据包分片成更小的数据包并将它们与实时帧交织来减少过度延迟。这使得实时和非实时数据帧能够在较低速链路上一起传输,而不会对实时流量造成过多延迟。当对等接口收到较小的分片时,它会将这些分片重组到其原始数据包中。例如,对延迟敏感的短数据包(如分组化语音)可能会领先于对延迟不敏感的较大数据包(如普通数据包)。
默认情况下,当您在层次结构级别包含compression rtp[edit interfaces interface-name unit logical-unit-number]该语句时,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;
}
}
}