27
1 VoIP + NAT

NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

Embed Size (px)

Citation preview

Page 1: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

1

VoIP + NAT

Page 2: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

2

References

“SIP, NAT and Firewalls”, Fredrik TherneliusBaruch Sterman and David Schwartz, “NAT Traversal in SIP”, Deltathree“STUN – Simple Traversal of UDP Through Network Address Translators”, RFC 3489, IETF“An Extension to the SIP for Symmetric Response Routing”, RFC 3581, IETF

Page 3: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

3

Outline

IntroductionThe Problem of VoIP + NATPossible Solutions for VoIP + NAT

Page 4: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

4

What is NAT?NAT - Network Address Translation

RFC 3022 - Traditional IP Network Address Translator (Traditional NAT)RFC 1918 - Address Allocation for Private Internets (BCP 5)RFC 2993 - Architectural Implications of NATRFC 3027 - Protocol Complications with the IP Network Address TranslatorRFC 3235 - Network Address Translator (NAT)-Friendly Application Design Guidelines

Convert Network Address (and Port) between private and public realmWorks on IP layerTransparent to Application

Page 5: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

RouterRouter

39.39.88.9

Packet8765SP

80DP

54.38.54.4SA

39.39.88.9DA

Packet80SP

8765DP

39.39.88.9SA

54.38.54.4DA

54.38.54.4

Page 6: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

39.39.88.9

54.38.54.49

DA DP SA SPDA DP SA SP

39.39.88.9 80 192.168.5.2 8765

DA DP SA SP

39.39.88.9 80 192.168.5.2 8765

Packet80SP8765DP39.39.88.9SA192.168.5.2DA

192.168.5.2

Packet8765SP

80DP

192.168.5.2SA

39.39.88.9DAPacket

8765SP80DP54.38.54.49SA39.39.88.9DA

54.38.54.49

Packet80SP8765DP39.39.88.9SA54.38.54.49DA

Page 7: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

7

Flavors of NAT [1/3]

Static NATRequiring same number of globally IP addresses as that of hosts in private environment Mapping between internal IP addresses and external addresses is set manually

This mapping intends to stay for a long period of time

Page 8: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

8

Flavors of NAT [2/3]

Dynamic NAT

Collect the public IP addresses into an IP address poolA host connecting to the outside network is allocated an external IP address from the address pool managed by NAT

Page 9: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

9

Flavors of NAT [3/3]

NAPT (Network Address and Port Translation)A special case of Dynamic NAT

Use port numbers as the basics for the address translation

The mechanism most commonly used

Page 10: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

10

Types of NAT

Full ConeRestricted ConePort Restricted ConeSymmetric

Page 11: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

11

Full Cone NATClient sends a packet to public address A.NAT allocates a public port (12345) for private port (21) on the client.Any incoming packet (from A or B) to public port (12345) will dispatch to private port (21) on the client.

ClientIP: 10.0.0.1

Port: 21

NAT

IP: 202.123.211.25Port: 12345

Mapping Table10.0.0.1:21 <-> 12345

Computer AIP: 222.111.99.1

Port: 20202

Computer BIP: 222.111.88.2

Port: 10101

Page 12: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

12

Restricted Cone NAT [1/2]Client sends a packet to public address A.NAT allocate a public port (12345) for private port (21) on the client.Only incoming packet from A to public port (12345) will dispatch to private port (21) on the client.

ClientIP: 10.0.0.1

Port: 21

NAT

IP: 202.123.211.25Port: 12345

Mapping Table10.0.0.1:21 <-> 12345 (for A)

Computer AIP: 222.111.99.1

Port: 20202

Computer BIP: 222.111.88.2

Port: 10101

Page 13: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

13

Restricted Cone NAT [2/2]Client sends another packet to public address B.NAT will reuse allocated public port (12345) for private port (21) on the client.Incoming packet from B to public port (12345) will now dispatch to private port (21) on the client.

ClientIP: 10.0.0.1

Port: 21

NAT

IP: 202.123.211.25Port: 12345

Mapping Table10.0.0.1:21 <-> 12345 (for A)10.0.0.1:21 <-> 12345 (for B)

Computer AIP: 222.111.99.1

Port: 20202

Computer BIP: 222.111.88.2

Port: 10101

Page 14: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

14

Port Restricted Cone NATClient sends a packet to public address A at port 20202.NAT will allocate a public port (12345) for private port (21) on the client.Only incoming packet from address A and port 20202 to public port (12345) will dispatch to private port (21) on the client.

ClientIP: 10.0.0.1

Port: 21

NATIP: 202.123.211.25Port: 12345

Computer AIP: 222.111.99.1

Port: 20202Port: 30303

Mapping Table10.0.0.1:21 <-> 12345 (for A : 20202)10.0.0.1:21 <-> 12345 (for A : 30303)

Page 15: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

15

Symmetric NATNAT allocates a public port each time the client sends a packet to different public address and portOnly incoming packet from the original mapped public address and port will dispatch to private port on client

ClientIP: 10.0.0.1

Port: 21NAT

IP: 202.123.211.25Port: 12345

Computer AIP: 222.111.99.1

Port: 20202

Computer BIP: 222.111.88.2

Port: 10101IP: 202.123.211.25Port: 45678

Mapping Table10.0.0.1:21 <-> 12345 (for A : 20202)10.0.0.1:21 <-> 45678 ( for B : 10101)

Page 16: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

16

VoIP Protocol and NATNAT converts IP addresses on IP layerProblem 1:

SIP, H.323, Megaco and MGCP are application layer protocol but contain IP address/port info in messages, which is not translated by NAT

Problem 2:Private client must send a outgoing packet first (to create a mapping on NAT) to receive incoming packet

Page 17: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

17

Solving NAT Traversal ProblemsObjectives

Discover mapped public IP & port for private IP & portUse mapped public IP & port in application layer messageKeep this mapping valid

IssuesNAT will automatically allocate a public port for a private address & port if needed.NAT will release the mapping if the public port is “idle”

No TCP connection on the port No UDP traffic on the port for a period (1 min~5 min)

Keep a TCP connection to destinationSend UDP packets to destination every specified interval

Page 18: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

18

NAT SolutionsIPv6 (Internet Protocol Version 6)UPnP (Universal Plug-and-Play)

UPnP Forum - http://www.upnp.org/Proprietary protocol by NAT/Firewall

SIP ALG (Application Level Gateway)No standard now

SIP extensions for NAT traversalRFC 3581 Works for SIP only, can not help RTP to pass through NAT

STUN (Simple Traversal of UDP Through Network Address Translators)RFC 3489Works except symmetric NAT

TURN (Traversal Using Relay NAT)draft-rosenberg-midcom-turn-04for symmetric NAT

Page 19: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

19

Two Distinct Cases – NAT Deployment [1/2]

Case I : SIP Provider is the IP Network Provider

Page 20: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

20

Two Distinct Cases – NAT Deployment [2/2]

Case II : SIP Provider is NOT IP Network Provider

Page 21: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

21

Solution for Case I – ALG [1/2]

Separate Application Layer NAT from IP Layer NAT

SIP

Control

RTP

Proxy Server/ALG

Firewall/NATPacket Filter

Decomposed Firewall/NATLike MEGACO Decomposition

MG = Packet Filter

MGC = Firewall Control Proxy

AdvantageBetter scaling

Load balancing

Low cost

Expertise problem solved

Page 22: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

22

Solution for Case I – ALG [2/2]

INVITEBIND REQ

BINDING

INVITE

200 OK200 OK

OPEN

ACK

ACK

Pro

xy

Fire

wal

l/NA

T

PC

Control Protocol Between Application Layer NATsand IP Layer NATsMain Requirements

Binding Request: give a private address and obtain a public addressBinding ReleaseOpen Hole (firewall)Close Hole (firewall)

Page 23: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

23

Proposed Solution for Case II

Much harder problemNo way to control firewall or NATCascading NATsVariable firewall NAT behaviors

Proposed SolutionMake SIP “NAT-Friendly”

Minor extensionsAddress the issues for SIP only, not RTPAccepted by IETF (RFC 3581)

Develop a protocol for traversal of UDP through NATWork for RTPAlso support other applications

Page 24: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

24

SIP Extension to NAT Friendly

Client Behavior

Include an “rport” parameter in the Via header

This parameter MUST have no valueIt serves as a flag

The client SHOULD retransmit its INVITE every 20 seconds

Due to UDP NAT binding period and to keep the binding fresh

Page 25: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

25

SIP Extension to NAT Friendly [2/2]

Server Behavior

Examine the Via header field value of the request.

If it contains an “rport” parameter,A “received” parameterAn “rport” parameter

The response MUST be sent to the IP address listed in the “received” parameter, and the port in the “rport” parameter.

Page 26: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

26

Example [1/2]Client A: 10.1.1.1Proxy B: 68.44.10.3NAT C: 68.44.20.1

A issues requestINVITE sip:user@domain SIP/2.0Via: SIP/2.0/UDP 10.1.1.1:4540;rport;branch=z9hG4bKkjshdyff

A C (mapping port 9988) BINVITE sip:user@domain SIP/2.0Via: SIP/2.0/UDP proxy.domain.com;branch=z9hG4bKkjsh77Via: SIP/2.0/UDP 10.1.1.1:4540;received=68.44.20.1;rport=9988;branch=z9hG4bKkjshdyff

Page 27: NAT + VoIP - 國立臺灣大學acpang/course/voip_2004/slides/NAT_SIP_1.pdf · 4 What is NAT? NAT - Network Address Translation RFC 3022 - Traditional IP Network Address Translator

27

Example [2/2]3) Server B receives the response

SIP/2.0 200 OKVia: SIP/2.0/UDP proxy.domain.com;branch=z9hG4bKkjsh77Via: SIP/2.0/UDP 10.1.1.1:4540;received=68.44.20.1;rport=9988;branch=z9hG4bKkjshdyff

3) B (68.44.10.3:5060) C (68.44.20.1:9988) ASIP/2.0 200 OKVia: SIP/2.0/UDP 10.1.1.1:4540;received=68.44.20.1;rport=9988;branch=z9hG4bKkjshdyff