Voice Services
Voice Services Overview
Adaptive services interfaces include a voice services feature
that allows you to specify interface type lsq-fpc/pic/port
to accommodate
voice over IP (VoIP) traffic. This interface uses compressed RTP (CRTP),
which is defined in RFC 2508, Compressing IP/UDP/RTP
Headers for Low-Speed Serial Links.
CRTP enables VoIP traffic to use low-speed links more effectively, by compressing the 40-byte IP/UDP/RTP header down to 2 to 4 bytes in most cases.
Voice services on the AS and MultiServices PICs support single-link PPP-encapsulated IPv4 traffic over the following physical interface types: ATM2, DS3, E1, E3, OC3, OC12, STM1, and T1, including the channelized versions of these interfaces.
Voice services do not require a separate service rules configuration.
Voice services also support LFI on Juniper Networks M Series Multiservice Edge routers, except the M320 router. For more information about configuring voice services, see Configuring Services Interfaces for Voice Services.
For link services IQ interfaces (lsq
) only, you can
configure CRTP with multiclass MLPPP (MCML). MCML greatly simplifies
packet ordering issues that occur when multiple links are used. Without
MCML, all voice traffic belonging to a single flow is hashed to a
single link in order to avoid packet ordering issues. With MCML, you
can assign voice traffic to a high-priority class, and you can use
multiple links. For more information about MCML support on link services
IQ interfaces, see Configuring Link Services and CoS on Services PICs.
Configuring Services Interfaces for Voice Services
You define voice service properties such as compression by configuring
statements and values for a voice services interface, specified by
the interface type lsq-
. You can include the following
statements:
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;
You can include these statements at the following hierarchy levels:
[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]
The following sections provide detailed instructions for configuring for voice services on services interfaces:
- Configuring the Logical Interface Address for the MLPPP Bundle
- Configuring Compression of Voice Traffic
- Configuring Delay-Sensitive Packet Interleaving
- Example: Configuring Compression of Voice Traffic
Configuring the Logical Interface Address for the MLPPP Bundle
To configure the logical address for the MLPPP bundle, include
the address
statement:
address address { ... }
You can configure this statement at the following hierarchy levels:
[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
specifies an IP address
for the interface. AS and Multiservices PICs support only IP version 4
(IPv4) addresses, which are therefore configured under the family
inet
statement.
For information on other addressing properties you can configure that are not specific to service interfaces, see the Junos OS Network Interfaces Library for Routing Devices.
Configuring Compression of Voice Traffic
You can specify how a services interface handles voice traffic
compression by including the compression
statement:
compression { rtp { f-max-period number; maximum-contexts number <force>; port { minimum port-number; maximum port-number; } queues [ queue-numbers ]; } }
You can include this statement at the following hierarchy levels:
[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]
The following statements configure the indicated compression properties:
f-max-period number
—Sets the maximum number of compressed packets to insert between the transmission of full headers. If you do not include the statement, the default is 255 packets.maximum-contexts number <force>
—Specifies the maximum number of RTP contexts to accept during negotiation. The optionalforce
statement requires the PIC to use the value specified for maximum RTP contexts, regardless of the negotiated value. This option enables interoperation with Junos OS Releases that base the RTP context value on link speed.port
,minimum port-number
, andmaximum port-number
—Specify the lower and upper boundaries for a range of UDP destination port values on which RTP compression takes effect. Values forport-number
can range from 0 through 65,535. RTP compression is applied to traffic transiting the ports within the specified range.queues [ queue-numbers ]
—Specifies one or more of queuesq0
,q1
,q2
, andq3
. RTP compression is applied to the traffic in the specified queues.Note:If you specify both a port range and one or more queues, compression takes place if either condition is met.
Configuring Delay-Sensitive Packet Interleaving
When you configure CRTP, the software automatically enables link fragmentation and interleaving (LFI). LFI reduces excessive delays by fragmenting long packets into smaller packets and interleaving them with real-time frames. This allows real-time and non-real-time data frames to be carried together on lower-speed links without causing excessive delays to the real-time traffic. When the peer interface receives the smaller fragments, it reassembles the fragments into their original packet. For example, short delay-sensitive packets, such as packetized voice, can race ahead of larger delay-insensitive packets, such as common data packets.
By default, LFI is always active when you include the compression
rtp
statement at the [edit interfaces interface-name unit logical-unit-number]
hierarchy level.
You control the operation of LFI indirectly by setting the fragment-threshold
statement on the same logical interface. For example, if you include
the fragment-threshold 256
statement at the [edit
interfaces interface-name unit logical-unit-number]
hierarchy level, all IP packets larger than 256 bytes
are fragmented.
Example: Configuring Compression of Voice Traffic
Configure compression on a T1 interface with MLPPP encapsulation. Configure fragmentation for all IP packets larger than 128 bytes.
[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; } }
Configuring Encapsulation for Voice Services
Voice services interfaces support the following logical interface encapsulation types:
Multilink Point-to-Point Protocol (MLPPP), which is the default encapsulation
ATM2 IQ MLPPP over AAL5 LLC
Frame Relay PPP
For general information on encapsulation, see the Junos OS Network Interfaces Library for Routing Devices. You can also configure physical interface encapsulation on voice services interfaces.
To configure voice services encapsulation, include the encapsulation
statement:
encapsulation type;
You can include this statement at the following hierarchy levels:
[edit interfaces interface-name unit logical-unit-number]
[edit logical-systems logical-system-name interfaces interface-name unit logical-unit-number]
For voice services interfaces, the valid values for the type
variable are atm-mlppp-llc
, frame-relay-ppp
or multilink-ppp
.
You must also configure the physical interface with the corresponding encapsulation type, either Frame Relay or PPP. LSQ interfaces are supported by the following physical interface types: ATM2 IQ, DS3, E1, E3, OC3, OC12, STM1, and T1, including the channelized versions of these interfaces. For examples, see Examples: Configuring Voice Services.
The only protocol type supported with frame-relay-ppp
encapsulation is family mlppp
.
Configuring Network Interfaces for Voice Services
To complete a voice services interface configuration, you need to configure the physical network interface with either MLPPP encapsulation and a voice services bundle or PPP encapsulation and a compression interface, as described in the following sections:
- Configuring Voice Services Bundles with MLPPP Encapsulation
- Configuring the Compression Interface with PPP Encapsulation
Configuring Voice Services Bundles with MLPPP Encapsulation
For voice services interfaces, you configure the link bundle as a channel. The physical interface is usually connected to networks capable of supporting MLPPP; the interface types supported for voice traffic are T1, E1, T3, E3, OC3, OC12, and STM1, including channelized versions of these interfaces.
For M Series routers and T Series routers, the following caveats apply:
Maximum supported throughput on the bundle interfaces is 45 Mbps.
Bundling of the logical interfaces under a T3 physical interface into the same or different bundles is not supported.
To configure a physical interface link for MLPPP, include the following statement:
bundle interface-name;
You can configure this statement at the following hierarchy levels:
[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]
When you configure family mlppp
, no other protocol
configuration is allowed. For more information on link bundles, see Configuring the Links in a Multilink or Link Services
Bundle.
Configuring the Compression Interface with PPP Encapsulation
To configure the physical interface for PPP encapsulation, you
also need to specify the services interface to be used for voice compression:
a Link Services IQ (lsq-
) interface.
To configure the compression interface, include the compression-device
statement:
compression-device interface-name;
You can configure this statement at the following hierarchy levels:
Examples: Configuring Voice Services
Configure voice services using a T1 physical interface and MLPPP bundle encapsulation:
[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; } }
Configure voice services using Frame Relay encapsulation without bundling:
[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; } } }
Configure voice services using an ATM2 physical interface (the corresponding class-of-service configuration is provided for illustration):
[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; } } }