Cisco IOS XR Session Border Controller Configuration Guide Release 3.6
Implementing SBC Firewall Traversal and NAT

Table Of Contents

Implementing SBC Firewall Traversal and NAT

Contents

Prerequisites for Implementing Firewall Traversal and NAT

Information About Firewall Traversal and NAT

Implementing Firewall Traversal and NAT

Configuration Example of Implementing Firewall Traversal and NAT

Additional References

Related Documents

Standards

MIBs

RFCs

Technical Assistance

Related Command Summary


Implementing SBC Firewall Traversal and NAT


The SBC enables VoIP signaling and media to be received from and directed to a device behind a firewall and NAT (Network Address Translator) at the border of an adjacent network, without requiring the device or firewall to be upgraded. In brief, the SBC achieves this by rewriting the IP addresses and ports in the call signaling headers and the SDP blocks attached to these messages. SBC does not support options for keeping pinholes open. Instead, SBC registers messages for signaling pinhole maintenance and RTP packets for media.

SBC supports the SIP extension for Symmetric Response Routing (RFC 3581). (There is currently no support for H.323.)


Note For a complete description of commands used in this chapter, refer to the Cisco IOS XR Session Border Controller Command Reference. To locate documentation for other commands that appear in this chapter, use the command reference master index, or search online.


Feature History for Implementing SBC Firewall Traversal and NAT

Release
Modification

Release 3.3.0

This feature was introduced on the Cisco XR 12000 Series Router.

Release 3.4.0

No modification.

Release 3.5.0

No modification.

Release 3.5.1

Modified the NAT implementation feature.

Release 3.6.0

No modification.


Contents

Prerequisites for Implementing Firewall Traversal and NAT

Information About Firewall Traversal and NAT

Implementing Firewall Traversal and NAT

Configuration Example of Implementing Firewall Traversal and NAT

Additional References

Related Command Summary

Prerequisites for Implementing Firewall Traversal and NAT

The following prerequisites are required to implement SBC firewall traversal and NAT:

You must be in a user group associated with a task group that includes the proper task IDs for SBC commands being used. For detailed information about user groups and task IDs, see the Configuring AAA Services on Cisco IOS XR Software module of the Cisco IOS XR System Security Configuration Guide.

You must install and activate the package installation envelope (PIE) for the SBC software.

For detailed information about PIE installation, refer to the Upgrading and Managing Cisco IOS XR Software module in the Cisco IOS XR Getting Started Guide.

Before implementing interworking DTMF, the SBC must already be created. See the procedures described in the "SBC Configuration Prerequisites" module.

Adjacencies must be configured before implementing firewall traversal and NAT. See the procedures described in the "Implementing SBC Adjacencies" module.

Information About Firewall Traversal and NAT

The SBC enables VoIP signaling and media to be received from and directed to a device behind a firewall and NAT (Network Address Translator) at the border of an adjacent network, without requiring the device or firewall to be upgraded. In brief, the SBC achieves this by rewriting the IP addresses and ports in the call signaling headers and the SDP blocks attached to these messages.

Firewalls prevent unwanted traffic from entering, or leaving, a network by performing basic packet filtering. Firewalls filter packets purely by examining packet headers, and do not parse or understand the payload of the packets. Therefore, they do not filter out all types of unwanted traffic. For example, firewalls do not perform Call Admission Control—the SBC application does.

Firewalls, however, are valuable because they efficiently filter out large categories of unwanted traffic, leaving application-aware devices such as SBCs with much less work to do. An external firewall filters packets from the external network, but allows all packets from an internal network to pass through unfiltered. An internal firewall filters packets from the internal network, but allows all packets from the external network to pass through unfiltered (since they have already passed the external firewall).

Firewalls by default do not accept packets from the network, but are configured with rules that allow them to select and accept certain packets. Therefore, packets are admitted to (or from) the network based on explicit configuration, and not on default configuration.

The SBC application also incorporates the NAT function. With the enhancements of Release 3.5.1, the SBC now automatically detects whether an endpoint is behind a NAT device. NATs separate a network into distinct address spaces. The NAT component of the SBC separates the internal network address space from the external network address space. The NAT maintains a table of mappings from {external address, port} to {internal address, port} and vice versa. The table is a dual-index table, so a particular mapping can be looked up given either the internal or external addressing information. The NAT uses this table to rewrite the headers of the IP packets that it forwards.

On receiving an IP packet from the external network, the NAT looks in its table for the destination address and port of the packet (which will be an address from the external address space). If a mapping is found, then the destination address header in the IP packet is changed to contain the corresponding internal address and port from the table, and the packet is forwarded towards the internal network. If no mapping is found, the packet is discarded.

On receiving an IP packet from the internal network, the NAT looks in its table for the source address and port of the packet (which will be an address from the internal address space). If a mapping is found, then the source address header in the IP packet is changed to contain the corresponding external address and port from the table, and the packet is forwarded towards the external network. If no mapping is found, then a new mapping is created: the NAT dynamically allocates a new external address and port from the external address space for the packet (and all future packets from this source address and port tuple).

SBC does not support options for keeping pinholes open. Instead, SBC registers messages for signaling pinhole maintenance and RTP packets for media. The key to solving this problem is the fact that the customer's NAT has to open pinholes to allow the IP phone to send signaling packets and media packets to the public network, and the customer's firewall has to allow these packets through.

Inbound signaling and media from the public network can therefore be made to traverse the customer's firewall and NAT by directing them at the pinhole's address and port on the public network side of the customer's NAT. The pinholes for signaling and media have different lifetimes.

The signaling pinhole, once created, is reused for all call signaling.

The media pinhole is created anew for each media stream, because the source and destination ports of the media stream are dynamically allocated per call.

The signaling pinhole is ideally created when the IP phone first comes online, and then kept open until the phone goes offline again. Media pinholes are created when the IP phone first sends a media packet on each established media session.

Figure 14 illustrates the data path for support of firewall traversal and NAT with the SBC.

Figure 14 Firewall Traversal and NAT

Implementing Firewall Traversal and NAT

This task implements firewall traversal and configures the SBC to assume that all endpoints of the adjacency are behind a NAT device.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. adjacency sip adjacency-name

5. nat force-on

6. signaling-address ipv4 ipv4_IP_address

7. signaling-port port_num

8. remote-address ipv4 ipv4_IP_address/prefix

9. signaling-peer [gk] peer_name

10. signaling-peer-port port_num

11. show

12. commit

13. attach

14. commit

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

RP/0/0/CPU0:router# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

RP/0/0/CPU0:router(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

RP/0/0/CPU0:router(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

adjacency sip adjacency-name

Example:

RP/0/0/CPU0:router(config-sbc-sbe)# adjacency sip SIP_7301_1

Enters the mode of an SBE SIP adjacency.

Use the adjacency-name argument to define the name of the service.

Step 5 

nat force-on

Example:

RP/0/0/CPU0:router(config-sbc-sbe-adj-sip)# nat force-on

Configures the SBC to assume that all endpoints are behind a NAT device. To configure the SBC to assume that all endpoints are not behind a NAT device, use the nat force-off command.

Step 6 

signaling-address ipv4 ipv4_IP_address

Example:

RP/0/0/CPU0:router(config-sbc-sbe-adj-sip)# signaling-address ipv4 10.1.0.2

Specifies the local IPv4 signaling address of the SIP adjacency.

Step 7 

signaling-port port_num

Example:

RP/0/0/CPU0:router(config-sbc-sbe-adj-sip)# signaling-port 5000

Specifies the local signaling port of the SIP adjacency.

Step 8 

remote-address ipv4 ipv4_IP_address/prefix

Example:

RP/0/0/CPU0:router(config-sbc-sbe--adj-sip)# remote-address ipv4 1.2.3.0/24

Restricts the set of remote signaling peers contacted over the adjacency to those with the given IP address prefix.

Step 9 

signaling-peer [gk] peer_name

Example:

RP/0/0/CPU0:router(config-sbc-sbe-adj-sip)# signaling-peer athene

Specifies the remote signaling peer for the SIP adjacency to use.

Step 10 

signaling-peer-port port_num

Example:

RP/0/0/CPU0:router(config-sbc-sbe--adj-sip)# signaling-peer-port 123

Specifies the remote signaling-peer port for the adjacency to use.

Step 11 

show

Example:

RP/0/0/CPU0:router(config-sbc-sbe--adj-sip)# show

Displays the current configuration.

Step 12 

commit

Example:

RP/0/0/CPU0:router(config-sbc-sbe-adj-sip)# commit

Saves configuration changes. Use the commit command to save the configuration changes to the running configuration file and remain within the configuration session.

Step 13 

attach

Example:

RP/0/0/CPU0:router(config-sbc-sbe-adj-sip)# attach

Attaches the adjacency.

Step 14 

commit

Example:

RP/0/0/CPU0:router(config-sbc-sbe-adj-sip)# commit

Saves configuration changes. Use the commit command to save the configuration changes to the running configuration file and remain within the configuration session.

Configuration Example of Implementing Firewall Traversal and NAT

The following example implements firewall traversal and NAT:

configure
sbc mysbc
sbe
adjacency sip SIP_7301_1
nat force-on
signaling-address ipv4 88.88.121.102 
signaling-port 5060 
remote-address ipv4 10.10.111.0/24 
signaling-peer 10.10.111.41 
signaling-peer-port 5060 
commit
attach
commit

Additional References

The following sections provide references related to implementing SBC firewall traversal and NAT.

Related Documents

Related Topic
Document Title

Cisco IOS XR master command reference

Cisco IOS XR Master Commands List

Cisco IOS XR SBC interface configuration commands

Cisco IOS XR Session Border Controller Command Reference

Initial system bootup and configuration information for a router using the Cisco IOS XR Software

Cisco IOS XR Getting Started Guide

Cisco IOS XR command modes

Cisco IOS XR Command Mode Reference


Standards

Standards
Title

No new or modified standards are supported by this feature, and support from existing standards has not been modified by this feature.


MIBs

MIBs
MIBs Link

To locate and download MIBs using Cisco IOS XR software, use the Cisco MIB Locator found at the following URL and choose a platform under the Cisco Access Products menu:

http://cisco.com/public/sw-center/netmgmt/cmtk/mibs.shtml


RFCs

RFCs
Title

RFC 3581

An Extension to the Session Initiation Protocol (SIP) for Symmetric Response Routing


Technical Assistance

Description
Link

The Cisco Technical Support website contains thousands of pages of searchable technical content, including links to products, technologies, solutions, technical tips, and tools. Registered Cisco.com users can log in from this page to access even more content.

http://www.cisco.com/techsupport


Related Command Summary

This section provides an alphabetical list of the commands related to firewall traversal and NAT configuration on the Cisco XR 12000 Series Router. For more information about the commands, see the Cisco IOS XR Session Border Controller Command Reference.

Command
Purpose

adjacency sip adjacency-name

Enters the mode of an SBE SIP adjacency.

nat-enable

Enables NAT support on a SIP adjacency.

signaling-address ipv4 ipv4_IP_address

Specifies the local IPv4 signaling address of the SIP adjacency.

signaling-port port_num

Specifies the local signaling port of the SIP adjacency.

remote-address ipv4 ipv4_IP_address/prefix

Restricts the set of remote signaling peers contacted over the adjacency to those with the given IP address prefix.

signaling-peer [gk] peer_name

Specifies the remote signaling peer for the SIP adjacency to use.

signaling-peer-port port_num

Specifies the remote signaling-peer port for the adjacency to use.