snom voip primer christian stredicke june 2003. v1.0 2 2. h.323 3. sip 4. snom technology suite 5....
TRANSCRIPT
snom VoIP PrimerChristian Stredicke
June 2003
2
V1.0
2. H.323
3. SIP
4. snom technology suite
5. Installation of snom 4S
6. Conclusion
7. Test
1. Introduction to VoIP
3
V1.0
The Internet evolved from a research network into a real-time communications network
UDP
ftp
TCPDHCP
POP3
HTTP
SMTP (Email)
TLS
SIP
SNMP
IPv6 WAP
IM
Presence
PBX
RSVPDiffSrv
PPP
PPPoEPPTP
NATIPv4 DNS
RIP
AAAA
SRV
NAPTRENUM
SOAP
4
V1.0
The Internet Protocol (IP) is based on sending packets
EthernetHeader IP UDP RTP G.711 Ethernet
Checksum
Example anatomy of an audio packet
•Preamble•6 Byte Src•6 Byte Dst•2 Byte Type
•Version•Length•DiffSrv•ID•Flags•Fragment•Time to live•Protocol•Checksum•Source•Destination•20 Bytes
•Source Port•Dest Port•Length•Checksum•8 bytes
•Version•Padding•Extension•Source IDs•Marker•Payload Type•Sequence Number•Timestamp•Sync ID
• RTP = “Real-time transport protocol”• 54 Bytes header for every audio packet = 21.6 kBit @ 20 ms!• Packets can easily be viewed with Ethereal (www.ethereal.com)
5
V1.0
Sending voice packets is like sending freight with forwarders*
Sender in Germany
Receiver in India
LH901
LH710
Local Forwarder
Local Forwarder
Packet are sent with
Priority tag
May take different routes
May get lost during
transportation
Arrive with jitter, out of
order
* Just faster!
6
V1.0
Computer networks are designed for high bandwidth, but no delivery guarantee
• ISDN BRI = 128 kBit/s
• Ethernet 10 BT = 78 BRI
• Ethernet 100 BT = 781 BRI– At 39 € for a PC card!
• Ethernet 1000 BT = 7812 BRI
• WLAN 802.11– 11 MBit/s = 85 BRI– 54 MBit/s = 421 BRI
• 802.16
7
V1.0
RTP sometimes has to pass bottlenecks, especially on the network “edges”
Phone
DSL LineBackbone
TCP (http) may block B‘s RTP
traffic
Router
Customer can control outgoing
traffic
Router
TCPOther
RTP
RTP
Bandw
idt
h
Distance
Other
8
V1.0
Amongst the attempts to get telephony working on a IP-based network SIP seems to be the best
H.323
H.450
SIP (RFC2543)
SIP (RFC3261 ff.)
H.323v2
H.323v4
(Avaya etc.)
MGCP
MEGACO
(Skinny)ISDN over IP
9
V1.0
H.323 and SIP fight for customer acceptance
SIPH.323
• „Official“ standard
• Some devices in the market already („legacy devices“)
• Most devices do not support supplementary services (H.450)
• Similar to HTTP
• Less requirement on program space than H.323
• Suitable for large operators
• Cisco and Microsoft support SIP
• Darling of the Internet society
• Almost everybody jumping on the train
10
V1.0
Microsoft XP is going for the VoIP industry
• Getting Microsoft Windows XP means getting a SIP client
– 70 ms latency end to end, kernel support– Acoustic echo cancellation („hands free speaking“)– Presence list– Stability is ok– Microsoft-like nice user interface
• Windows XP embedded and Windows Pocket PC– Includes SIP stack as well as other features– Many gateways and stand alone equipment will this stuff
11
V1.0
2. H.323
3. SIP
4. snom technology suite
5. Installation of snom 4S
6. Conclusion
7. Test
1. Introduction to VoIP
12
V1.0
Basic elements of an H.323 system
• Terminals– Telephones– Videophones– IVR devices– Voicemail systems– Softphones
• Gateways
• Gatekeepers
• Multipoint Control Units (MCUs)
13
V1.0
Gateways
• Gateways interface an H.323 network to other networks (ISDN,PSTN etc).
• Composed of Media Gateway Controller (MGC) and Media Gateway (MG).
– MGC handles all the call signaling functions. – MG handles the media related functions.
14
V1.0
Gatekeepers
• Optional Component of an H.323 system.
• Responsible for Registration, Address translation, Admission control, Bandwidth control and Zone management functions (RAS).
• Logical component of an H.323 system but Can be co-located within a gateway.
• Can perform direct or routed call signaling.
15
V1.0
Media Control Units (MCUs)
• Responsible for managing multipoint conferences (two or more endpoint engaged in a conference).
• The MCU contains a Multipoint Controller (MC) that manages the call signaling and may optionally have Multipoint Processors (MPs) to handle media mixing, switching, or other media processing.
16
V1.0
A typical H.323 network
17
V1.0
A simple H.323 call
18
V1.0
The big problem: H.323 is not really interoperable
Eff
ort
Features
ROSE
openh323
ASN.1
H.323
SIP
Proprietary
Private Small Business Professional• Most vendors are stuck in interoperability problems
• ASN.1 reduces productivity
• Most „implementers“ used openh323
• The star is falling
• Software concept works for stand alone PC, but can not be used on embedded systems
19
V1.0
2. H.323
3. SIP
4. snom technology suite
5. Installation of snom 4S
6. Conclusion
7. Test
1. Introduction to VoIP
20
V1.0
3. SIP
3.1 User Point of View
3.2 Architecture
3.3 Registration
3.4 Basic Call
3.5 Call Control
3.6 PSTN interoperability
21
V1.0
The URL is the unique description of a telephony contact
• New URL types:– „Christian Stredicke“ <sip:[email protected]>– „Christian Stredicke“ <tel:[email protected]>
• Entering URL in hard phones is not so much fun– Some tricks to ease the pain– Automatic appending of domain– Address book, redial– Using TAPI for dialing from PC– Clever number setup („cs“, „np“, „tb“, ...)
• URL must always start with the “sip” scheme– May contain a large range of characters like +, -, %, .– Display names are encoded using UTF-8 (Unicode)
22
V1.0
SIP proxies search for the right person
• Registration includes information about probability of presence
– Moving the mouse changes the probability to 1.0– Leaving the mouse untouched lowers continuously the
probability– Mailbox has low probability (but above 0.0)
• Sequential forking:– Ringing one potential endpoint after another
• Parallel forking– Calling several parties at the same time– The first one picking up the call gets the call
• Phones can register for several accounts with different probabilities
23
V1.0
3. SIP
3.1 User Point of View
3.2 Architecture
3.3 Registration
3.4 Basic Call
3.5 Call Control
3.6 PSTN interoperability
24
V1.0
The SIP architecture looks like a mixture of HTTP and Email
„Intranet“
„VPN“
Registrar 1
Registrar 2
Proxy 1
„Internet“
Proxy 2
Gateway 1
Gateway 2
UA
UA UA UAUA
UA
25
V1.0
The SIP proxy can be compared to a HTTP proxy: Taking complexity away from the client
• Finding a destination– Comparable to HTTP proxy– But real-time
• Requests may be redirected to other proxies
• Stateless proxies– Just forwarding packets
• Stateful proxies– Taking care of a call
• Other functions– Billing– Maintenance
• “Outbound proxy” handles all traffic of a dumb phone
26
V1.0
A stateless proxy just forwards packets to the right destination
Proxy
(1) INVITE(2) INVITE
(3) 100 Trying
(5) 180 Ringing
(4) 100 Trying
(6) 180 Ringing
(7) 200 Ok(8) 200 Ok
(9) ACK(10) ACK
27
V1.0
A stateful proxy may fork a call to multiple destinations
Proxy
(1) INVITE
(3a) INVITE(2) 100 Trying
(4b) 180 Ringing
(4a) 100 Trying
(5) 180 Ringing
(7) 200 Ok(8) 200 Ok
(10) ACK
(9) ACK
(3b) INVITE
(6a) 100 Trying
(6b) 180 Ringing
28
V1.0
Registrars remember where users can be found
• Close relationship with proxies– Usually registrar and proxy are the same program
• Registrars keep a list of registrations– One user can be found in different locations– Comparable to gatekeeper registration
29
V1.0
User agents (UA) are the endpoints of a SIP call
• Usually a hard or soft phone
• Gateways are user agents as well
• UA client (UAC) initiates something
• UA server (UAS) answers something
• UAS and UAC may change during a call– From and To-Fields are exchanges in this case
30
V1.0
SIP URLs provide a powerful way to describe a contact and its parameters
• Like HTTP URL
• Examples:– sip:[email protected]: Simple URL– <sip:[email protected]:5061>: Adding port number– “Fred F. Feuerstein” <sip:[email protected]>: Real name– <sip:[email protected]>;q=1.0: Probability of presence– <sip:[email protected]:5061;transport=tls>: Transport
layer– <sip:[email protected]>;q=1.0;expires=360: Several
parameters– sip:[email protected]?subject=project%20x&priority=urgent
• Details in RFC 3261
31
V1.0
Messages are encoding using ASCII characters (bit hackers go home!)
• printf() instead of ASN.1-Compiler
• Line termination with \r\n (tribute to MS-DOS)
• Double line termination means end of message body
• Attachments may follow of Content-Length indicates so
• Line continuation if new line starts with space
• See Email and HTTP.
Example:
REGISTER sip:[email protected] SIP/2.0From: „Christian Stredicke“ <sip:[email protected]> ;q=1.0To: „Christian Stredicke“ <sip:[email protected]>;q=1.0Cseq: 1 REGISTERContent-Language: enUser-Agent: snom V1.8bContent-Type: image/jpegContent-Length: 376
Jg45tzw49tz59p q3tz erihgisrgz dfkjh skdfgh hfg sdlfjgh sdfgjh sldfghsfghsdfhg lsfhg lskfgh sfkgh sfkgh slkfdg
32
V1.0
Principle of communication between entities
• Requests– Initiate something– Have something like „REQUEST sip:address SIP/2.0“ in the
first line of the message
• Response– Responds to a request– Look like „SIP/2.0 486 Busy Here“ in the first line– Codes < 200 are intermediate responses– Codes >= 200 and < 300 are success responses– Codes >= 300 are failure responses
• Acknowledge– Stands a little bit out in the communication– Terminates an INVITE transaction
33
V1.0
„Via“ headers trace the path of a request and allow a respond to travel that path back
• Every instance tags the path of a request taken so far by adding a via field
• Replies must be send back popping Via fields off the message
• Forking proxies add branch parameters to the via fields to tag different branches
Via: host1
Via: host2Via: host1
Via: host3;branch=123.1Via: host2Via: host1
Via: host3;branch=123.2Via: host2Via: host1
34
V1.0
„Record-Route“ fields are used to ensure that some proxies are part of subsequent requests
• SIP does not mandate that requests between two UA take the same path
– Actually, SIP encourages taking a direct path even for ACK
– That causes problems with stateful proxies and billing systems
• Record-Route ensures that proxies that add themselves to the route are in the message chain in future requests
1
2
3
4
Route: h2, h4
Route: h4
5
Contact: h1
Record-Route: h2Contact: h1
Record-Route: h2Contact: h1
Record-Route: h2, h4Contact: h1
1st request Subsequent requests
35
V1.0
Every message has a sequence number
• CSeq field– CSeq: 1 REGISTER– CSeq: 1 INVITE
• Sequence numbers are kept within:– A call– A registration– A notify, subscribe, ...
• UAC and UAS keep their own sequence numbers for requests
• If a client receives a message with an CSeq number less or equal to the one received, it is takes an message repetition
– Relevant for UDP
36
V1.0
SIP can be transported over UDP, TCP and TLS
• UDP– Messages may get lost– Mandatory– Repetition of messages:
– Requests until a response arrives (same CSeq)– Responses if a request repetition arrives– ACK if a response arrives twice
• TCP– Like HTTP– Content-Length becomes very important
• TLS– Is a SSL (Secure Socket Layer) version– Keeps SIP traffic secure– Like TCP– Different port to avoid misunderstandings (e.g. 5061)
37
V1.0
To save some space, short names of header fields are available
• Saving space makes up 0.000143 % of an average call
– In other words, does not make sense– May help to keep the UDP message size boundary
(but not really)
• However, feature is mandatory– From = f– To = t– Content-Length: l– Call-ID: I
• See draft
38
V1.0
3. SIP
3.1 User Point of View
3.2 Architecture
3.3 Registration
3.4 Basic Call
3.5 Call Control
3.6 PSTN interoperability
39
V1.0
Registration is a simple mechanism to give the UA an identity
• UA sends REGISTER request to registrar (or outbound proxy)
• Registrar answer with response– 200 Ok: Registration is ok– 404 Not Found: User may not register here– 403 Not Found: User is not known– 100 Trying: Intermediate response– 401 Authentication Required: UA has to provide a
password– Any Response!
40
V1.0
Example 1: Successful registration
• Phone wants to register as “1” at registrar “62.254.248.7”
• Address does not need to be a dots-and-number address
• Registrar returns all registrations for this number
• Expiry time indicates how long the registration will last and is determined by the registrar
• Example taken from Cisco proxy registration
REGISTER sip:62.254.248.7 SIP/2.0From: <sip:[email protected]>To: <sip:[email protected]>Call-ID: [email protected]: Thu, 16 Aug 2001 17:29:22 GMTCSeq: 1 REGISTERContact: <sip:[email protected]:5060;transport=udp>Via: SIP/2.0/UDP 62.254.248.56:5060Expires: 3600Content-Length: 0
SIP/2.0 200 OKVia: SIP/2.0/UDP 62.254.248.56:5060Call-ID: [email protected]: <sip:[email protected]>To: <sip:[email protected]>CSeq: 1 REGISTERContact: <sip:[email protected]:5060;transport=udp>;expires="Thu, 16 Aug 2001 15:31:14 GMT"Contact: <sip:[email protected];method=INVITE>;description="OPEN";expires="Thu, 16 Aug 2001 21:57:01 GMT"Expires: 3600Content-Length: 0
41
V1.0
Example 2: Failed registration
• Phone wants to register as “1” at registrar “a1.sipbakeoff.org”
• Registrar responds with intermediate message 100 Trying
• 400 Code indicates that something went wrong
• 403 means that there was no account set up at the registrar
REGISTER sip:a1.sipbakeoff.org SIP/2.0From: <sip:[email protected]>To: <sip:[email protected]>Call-ID: [email protected]: Thu, 16 Aug 2001 17:29:01 GMTCSeq: 1 REGISTERContact: <sip:[email protected]:5060;transport=udp>Via: SIP/2.0/UDP 62.254.248.56:5060Expires: 3600Content-Length: 0
SIP/2.0 100 TryingVia: SIP/2.0/UDP 62.254.248.56:5060From: sip:[email protected]: sip:[email protected]: [email protected]: 1 REGISTERContent-Length: 0
SIP/2.0 403 - ForbiddenVia: SIP/2.0/UDP 62.254.248.56:5060From: sip:[email protected]: sip:[email protected]: [email protected]: 1 REGISTERContent-Length: 0
42
V1.0
Example 3: Authentication challenges the UAC with a 401/407 response
• Registrar denies registration with 401 Authentication Required
• 401 contains challenge that must be answered by UAC
• UAC tries again with Authentication-Field
• Seconds register is new request, therefore CSeq is increased
• In general, every request can be challenged
– Multiple times, multiple lines
– Digest mandatory, Basic discouraged
REGISTER sip:a1.sipbakeoff.org SIP/2.0From: <sip:[email protected]>...Cseq: 1 REGISTERContent-Length: 0
SIP/2.0 401 Authentication RequiredWWW-Authenticate: Digest realm="a.com",domain="sip:[email protected]:7072;maddr=62.254.248.14",nonce="aWGQ03+9PIZNYfTthPUSlA==",algorithm=MD5Cseq: 1 REGISTERContent-Length: 0
REGISTER sip:a1.sipbakeoff.org SIP/2.0From: <sip:[email protected]>...Authorization: Digest username="01",realm="a.com",nonce="9wTTyVG1WlOwkdpHBEmioQ==",response="d39db66212c999fbb0f1c767364479eb",uri="sip:62.254.248.14:5070"Cseq: 2 REGISTERContent-Length: 0
SIP/2.0 200 Ok...Cseq: 2 REGISTERContent-Length: 0
43
V1.0
Which information does a client has to set up for port forwarding in NAT equipment?
• Router needs information where to send packets in private network
– Map port to private address and port
– By default packets will be rejected or sent to DMZ
• Router needs hint for security checking
– Accept packets from any destination
– Accept packets only from associated host
– Accept packets only from associated host and port
12
3.1
23
.12
3.1
23
19
2.1
68
.0.1
Router
Client
Client
44
V1.0
STUN uses the digging hole trick to set up port associations
• Initialization procedure checks environment– Goal: Check if STUN is needed– Type of NAT does actually not really matter because user
is not interested in failure reason
• SIP port kept alive by sending packets every 15-60 s
• RTP ports are allocated dynamically when starting a call
– Otherwise keep-alive traffic would be double– RTCP port can not be allocated because next port
allocation is unlikely– Long ringing and putting caller on hold is problematic (no
port refresh during this time)
45
V1.0
How does port forwarding in UPnP work?
• Find the Internet access device– Broadcast messages (no user setup required)– Download the description of the UPnP device via http
• Retrieve the public IP address from the router
• Set up port mapping explicitly– http requests using XML (SOAP) attachments
• Other commands also available– UPnP is much more than setting up port forwarding on
routers
46
V1.0
Registering Procedure of the snom phones
1. Send a REGISTER message with the IP unchanged identity (coming from DHCP or static setup)– Includes a rport parameter in the top via– This parameter get completed if the proxy receives the packet
from a IP address that is different from the unchanged identity– The proxy sends the packet to the port indicated by rport (that’s
how the packet makes it back to the phone)– If the phone does not receive the changed rport back, the
registration is done (public IP address, ALG, inside private network registration)
2. If there is a rport parameter returned, the phone will try to do UPnP or STUN– Default policy is to try UPnP first, then STUN– Can be changed in the settings
3. If the public IP address has been determined, the phone will register with this– Then there is no more checking NAT method
47
V1.0
3. SIP
3.1 User Point of View
3.2 Architecture
3.3 Registration
3.4 Basic Call
3.5 Call Control
3.6 PSTN interoperability
48
V1.0
INVITE is used to establish a call
(1) INVITE
(2) 100 Trying
(3) 180 Ringing
(4) 200 Ok
(5) ACK
• UAC sends INVITE
• UAS may respond with 100 Trying
– If expected answer takes a while
• UAS may respond with a 180 Ringing
– Indicates that the UAS is ringing the user
• UAS sends 200 Ok if the connection is set up
• UAC sends ACK to confirm that session has been set up
49
V1.0
Example 4: Successful INVITE: Sending out the INVITE
• First line contains destination
– May contain tags
• UAC tags from-field that contains the origin
– however this address is not used for reaching the originator
• Call-ID should be unique in universe
• Contact field indicates where requests may be sent
• SDP attachment describes where audio may be sent
INVITE sip:[email protected] SIP/2.0From: <sip:[email protected]:7071>;tag=hsuiykhtpfTo: sip:[email protected]: SIP/2.0/UDP 62.254.248.56:5060Call-ID: [email protected]: 1 INVITEContact: <sip:[email protected]:5060;transport=udp>User-Agent: snomAccept-Language: enAccept: application/sdpSupported: sip-cc, sip-cc-01, timerSession-Expires: 120Content-Type: application/sdpContent-Length: 236
v=0o=root 26500 26500 IN IP4 62.254.248.56s=Call from 62.254.248.56c=IN IP4 62.254.248.56t=0 0m=audio 5000 RTP/AVP 0 3 8 101a=rtpmap:0 pcmu/8000a=rtpmap:3 gsm/8000a=rtpmap:8 pcma/8000a=rtpmap:101 telephone-event/8000
50
V1.0
Example 4: Successful INVITE: Receiving provisional responses
• 100 Trying– Probably came from proxy– Stops repeating UDP
messages
• To field still untagged in this case
– It may be tagged and then we have a call leg
– If tagged the call splits into main call (untagged) and legs
• 180 Ringing– UA may play ring back now
• Provisional responses may be acknowledged by PRACK
– Capability to receive PRACK has to be indicated in Allow header
SIP/2.0 100 TryingTo: sip:[email protected]: <sip:[email protected]:7071>;tag=7q30roe94yVia: SIP/2.0/UDP 62.254.248.56:5060Call-ID: [email protected]: 1 INVITEContent-Length: 0
SIP/2.0 180 RingingTo: sip:[email protected]: <sip:[email protected]:7071>;tag=7q30roe94yVia: SIP/2.0/UDP 62.254.248.56:5060Call-ID: [email protected]: 1 INVITEContent-Length: 0
51
V1.0
Example 4: Successful INVITE: Receiving 200 Ok
• To field now contains a tag– Call now being split up into
legs
• Contact field indicates where further requests may be sent
• SDP attachment contains media data
SIP/2.0 200 OK To: sip:[email protected];tag=150148666From: <sip:[email protected]:7071>;tag=7q30roe94yVia: SIP/2.0/UDP 62.254.248.56:5060Call-ID: [email protected]: 1 INVITEContact: sip:[email protected]: application/sdpContent-Length: 153
v=0o=deepa 134278 968037671 IN IP4 62.254.248.105s=IPNessc=IN IP4 62.254.248.105t=0 0m=audio 5000 RTP/AVP 0a=rtpmap:0 PCMU/8000a=ptime:30
52
V1.0
Example 4: Successful INVITE: Sending ACK
• CSeq number remains unchanged
– ACK is not a new request
• In this case the ACK is directly sent to the address given in the Contact field
– Obviously, no proxy requested Record-Routing
ACK sip:[email protected] SIP/2.0Via: SIP/2.0/UDP 62.254.248.56:5060From: <sip:[email protected]:7071>;tag=7q30roe94yTo: sip:[email protected];tag=150148666Call-ID: [email protected]: 1 ACKUser-Agent: snomContent-Length: 0
53
V1.0
Example 4: Successful INVITE: Hanging up
• BYE request directly sent to Contact
– Alternative would be using outbound proxy
• To and From-fields just copied
– If other party hangs up, To and From has to be exchanged
• CSeq in increased– But only on the UAC side!
• All other requests except INVITE and not acknowledged by ACK
BYE sip:[email protected] SIP/2.0Via: SIP/2.0/UDP 62.254.248.56:5060From: <sip:[email protected]:7071>;tag=7q30roe94yTo: sip:[email protected];tag=150148666Call-ID: [email protected]: 2 BYEContent-Language: enContent-Length: 0
SIP/2.0 200 OK To: sip:[email protected];tag=150148666From: <sip:[email protected]:7071>;tag=7q30roe94yVia: SIP/2.0/UDP 62.254.248.56:5060Call-ID: [email protected]: 2 BYEContent-Length: 0
54
V1.0
Example 5: Canceling a call (1)
• INVITE, 100 Trying and 180 Ringing like before
• User decides to cancel call, UAC sends out CANCEL
– CSeq number remains unchanged but method becomes CANCEL
– To field does not contain tag
• UAC receives 200 Ok on CANCEL
– This is only on the CANCEL!
CANCEL sip:[email protected] SIP/2.0Via: SIP/2.0/UDP 62.254.248.56:5060From: <sip:[email protected]:7071>;tag=qnbibiw4zjTo: sip:[email protected]: [email protected]: 1 CANCELContent-Language: enContent-Length: 0
SIP/2.0 200 OkTo: sip:[email protected]: <sip:[email protected]:7071>;tag=qnbibiw4zjVia: SIP/2.0/UDP 62.254.248.56:5060Call-ID: [email protected]: 1 CANCELContent-Length: 0
55
V1.0
Example 5: Canceling a call (2)
• UAC receives 487 on INVITE– Therefore, the INVITE
failed
• If UAC receives 200 Ok on INVITE, the call is established
• Anyway, the UAC has to acknowledge the final result with an ACK
SIP/2.0 487 Request TerminatedTo: sip:[email protected]: <sip:[email protected]:7071>;tag=qnbibiw4zjVia: SIP/2.0/UDP 62.254.248.56:5060Call-ID: [email protected]: 1 INVITEContent-Length: 0
ACK sip:[email protected] SIP/2.0Via: SIP/2.0/UDP 62.254.248.56:5060From: <sip:[email protected]:7071>;tag=qnbibiw4zjTo: sip:[email protected]: [email protected]: 1 ACKUser-Agent: snomContent-Length: 0
56
V1.0
3. SIP
3.1 User Point of View
3.2 Architecture
3.3 Registration
3.4 Basic Call
3.5 Call Control
3.6 PSTN interoperability
57
V1.0
Hold is just a modification of the SDP record that has been sent to the other party
• To put the other party on hold, either party may send a re-INVITE
– The IP address 0.0.0.0 indicates the other party that it should stop sending media
• Re-INVITE must be replied to with a 200 Ok
– 100 Trying not necessary– 180 Ringing not allowed
here
• UAC answers with ACK
• 200 Ok may contain SDP record as well
– In order to allow music on hold, it should not do that
INVITE sip:[email protected]:5060;transport=udp SIP/2.0Via:SIP/2.0/UDP 62.254.248.6:5060;branch=bw.62.254.248.6From:<sip:[email protected]>;tag=247792666-997982268876To:<sip:[email protected]:5060>;tag=oe94ywxqnbCall-ID:[email protected]:774927797 INVITEContact:<sip:62.254.248.6:5060>Allow:ACK,BYE,CANCEL,INFO,INVITE,PRACK,REFERSupported:100rel,timerContent-Length:210Content-Type:application/sdp
v=0o=CiscoSystemsSIP-IPPhone-UserAgent 6734 5093 IN IP4 62.254.249.87s=SIP Callc=IN IP4 0.0.0.0t=0 0m=audio 16392 RTP/AVP 0 101a=rtpmap:0 PCMU/8000a=rtpmap:101 telephone-event/8000a=fmtp:101 0
58
V1.0
Call forwarding is implemented using 301 and 302 responses
• 301 and 302 are treated like error codes
– Transaction is acknowledged and over
– That implies that the new transaction may have a new CSeq
• A new INVITE is sent to the given contact
• 301 and 302 are business of proxies
– In the context of parallel and sequential forking
– Multiple contacts cause trouble on most UA
INVITE sip:[email protected] SIP/2.0From: <sip:[email protected]:5060>;tag=nxawl7blpmTo: sip:[email protected]: SIP/2.0/UDP 62.254.248.57:5060Call-ID: [email protected]: 1 INVITEContact: <sip:[email protected]:5060>;transport=UDP...
SIP/2.0 302 Moved temporarilyVia: SIP/2.0/UDP 62.254.248.57:5060From: <sip:[email protected]:5060>;tag=nxawl7blpmTo: sip:[email protected]: 1 INVITECall-ID: [email protected]: sip:[email protected]
ACK sip:[email protected] SIP/2.0...
INVITE sip:[email protected] SIP/2.0From: <sip:[email protected]:5060>;tag=nxawl7blpmTo: sip:[email protected]: SIP/2.0/UDP 62.254.248.57:5060Call-ID: [email protected]: 1 INVITE...
59
V1.0
Transferring a call using REFER (1)
(1) INVITE (hold)
(6) INVITE
(9) NOTIFY
(7) 200 Ok
(2) 200 Ok
(3) ACK
(4) REFER
(5) 202 Accepted
(8) ACK
(10) 200 Ok
(11) BYE
(12) 200 Ok
60
V1.0
Transferring a call using REFER (2)
• First put the call on hold (1-3)– Otherwise the other phone could get into trouble having
only one media stream (would have to put the call on hold as well)
• Request a transfer with REFER– 202 Response stops retransmission of the request– Other party now tries to set up the requested call
• Notify originator about transfer result– REFER request is already over, so a new request must be
initiated be the other party– Attachment contains result
• If everything went ok, the original call can be closed– If not, the original call be be reactivated
61
V1.0
To know which state another UA is in, UA should subscribe to Dialog-State
• Similar to presence, but more phone specific– States for ringing and on hold
• XML-Based coding– State information– Call-ID, From, To
• Important for Call Pickup
• Important for LED control
62
V1.0
Music on hold, call park, call pick & friends
• Are implemented using the methods above
• Music on hold invites the media server to the other party
• Call park initiates transfer to park server– Sometimes this is also called “hold”
• Call pick is done by a INVITE with the Replaces header– Information known by dialog state-subscription
• No introduction of new messages for call control
63
V1.0
NOTIFY is a simple and powerful way to send information to a UAS
• NOTIFY carries “attachment”– Could be the result of a REFER– Could be presence status
• Type is indicated in Content-Type
• Uses the transport mechanism of SIP like all other messages
• Has From, To, Call-ID, CSeq, Content-Length like all other messages
• Is subject to the message repeating mechanism like all other messages
64
V1.0
Message waiting indication (MWI) is a good example for the usage of the NOTIFY mechanism
• NOTIFY goes through proxy as unknown message
– All registered users (including mailbox) receives NOTIFY
– All users answer and effectively stop sender from repeating
• Whoever reads the message responds with a 200 Ok
NOTIFY sip:[email protected] SIP/2.0Via: SIP/2.0/UDP 62.254.248.89:5060From: <sip:[email protected]>;tag=19140-10589-62.254.248.89To: <sip:[email protected]>CSeq: 21911 NOTIFYCall-ID: [email protected]: application/simple-message-summaryEvent: simple-message-summaryContent-Length: 48
Message-Waiting: yesVoicemail: 3/0Fax: 1/0
SIP/2.0 200 OKFrom: <sip:[email protected]>;tag=19140-10589-62.254.248.89To: <sip:[email protected]>Via: SIP/2.0/UDP 62.254.248.89:5060Call-ID: [email protected]: 21911 NOTIFYUser-Agent: snom V1.6cContent-Length: 0
65
V1.0
3. SIP
3.1 User Point of View
3.2 Architecture
3.3 Registration
3.4 Basic Call
3.5 Call Control
3.6 PSTN interoperability
66
V1.0
Overlap dialing is implemented using the 484 response
(1) INVITE (CSeq = 1)
(6) INVITE
(7) 180 Ringing
(2) 484 Address Incomplete
(3) ACK
(12) ACK
ProxyGateway
(4) INVITE (CSeq = 2)
(5) 100 Trying
(11) ACK
(8) 180 Ringing
(9) 200 Ok(10) 200 Ok
„IAM“ Initial Address Message
„SAM“ Subsequent Address MessageTimeout
67
V1.0
Provisional acknowledge (PRACK)
• Problem: Provisional responses (1xx) are not reliable in UDP
– This important because temporary provisional media streams need acknowledge
• Solution: Acknowledge them with PRACK
• PRACK has its own sequence number (RSeq)
• See example
INVITE sip:[email protected] SIP/2.0Supported: 100rel...Content-Type: application/sdpContent-Length: 236
SIP/2.0 183 ProceedingRequire: 100relRSeq: 776655...CSeq: 1 INVITEContent-Length: 0
PRACK sip:[email protected] SIP/2.0RAck: 776655 1 INVITE...CSeq: 2 PRACK
SIP/2.0 200 OKVia: SIP/2.0/UDP saturn.bell-tel.com...CSeq: 2 PRACK
68
V1.0
Temporary provisional media streams (183)
(1) INVITE (sdp = …)
(2) 100 Trying
(3) 183 Session Progress
Gateway
(4) PRACK
(5) 200 Ok (PRACK)
(Ringback RTP)
(6) 200 Ok
(7) ACK
(2 way audio)
• Initial INVITE indicates where audio is expected
• Gateway sends 183 Session Progress and starts playing audio one way
• UAC confirms provisional with PRACK
• When other party picks up, 200 Ok is send and UAC starts sending audio as well
69
V1.0
2. H.323
3. SIP
4. snom technology suite
5. Installation of snom 4S
6. Conclusion
7. Test
1. Introduction to VoIP
70
V1.0
The snom 4S consists of a real-time part (media server) and a call control part
Fast, but not too
intelligent
Intelligent, but
sometimes takes a
little timeProxy
MediaServer
71
V1.0
The proxy consists of several components that are necessary for SIP
Registrar Proxy Location Server
Scripting
Web Interface
Billing
DNSXML
Logging
72
V1.0
The proxy runs different domains completely separately
• Like renting a hotel room– Different customers with different domains (snom.com, bnc.co.jp)– Test and productive system
• Customers may access the proxy with their private password
• Data is kept separate– Customer A cannot see what customer B is doing
• Enables central IP services
73
V1.0
Stateful information is permanently stored in the file system
• Stateful Information– Registration Information– Messages– But not ongoing calls
• XML– Human readable/editable format– Can be used together with revision control systems
(CVS)
• Allows large scalability– 1 Million users fit easily on modern hard disk– Performance then is the problem
74
V1.0
The scripting makes customization and programming of the proxy simple and safe
• Copy success story of PHP (Apache)– Easy to understand– Extremely flexible– Cannot crash proxy so easily
• No CPL (Call Processing Language)!– Too complicated– Not powerful enough
• Web Interface sets variables that are interpreted by default script
– Quick setup for most typical cases– No programming necessary
75
V1.0
NAT support has great important in practical usage
• Reject private address registration– Give a hint using the rport parameter– Frustrating history of users trying to register their phone
behind NAT
• STUN server included– Only necessary functionality
• Support of path registrations– Clients register with a list of addresses instead on only one
76
V1.0
Instant messaging is not the job of the proxy; however the proxy does its best to support it
• Normal request handling rules– Implements full IM functionality
• Store & Forward– Store messages on file system until user registered again– Simple & effective
• Welcome Message – When users sign in first time they get a greeting message
77
V1.0
Presence can be done on the user agents; caution has to be taken about performance
• Number of presence updates can easily kill the proxy– 10000 users with 50 contacts each changing their state
every hour generate more than 100 transactions per second!
– Questions the presence promise
• We wait until a feasible solution for this problem has been identified
• When user agents support presence (like Microsoft Messenger) proxy can handle it
78
V1.0
Billing: One of these tricky issues…
• Has been “forgotten” by SIP in the beginning
• Interfaces:– Plain file (named pipe, …)– XML billing notifications via SIP– RADIUS
• Problems– Bypassing proxy (solution for PSTN termination: gateway
setup)– Caller information– Hangup upon account expiration
79
V1.0
ENUM allows the lookup of telephone numbers to DNS names
• Simple mechanism– tel:+493039833401– 1.0.4.3.3.8.9.3.0.3.9.4.arpa.net– Service pointer for this DNS entry
• Today there are some problems– Overlap dialing does not work with ENUM– Security is hard to ensure (redirecting to expensive PSTN
numbers)
• snom 4S offers ENUM– Secure DNS missing (will be available at end of March)
80
V1.0
The user may access the proxy to see the call list, messages, redirection settings, passwords, etc.
• See missed calls even if not registered
• Independent from location where phone is
• Simple redirection– Simple setup for redirecting to cell phone– Voice mail integration with different account number
81
V1.0
The media server is based on a generic XML-programmable subsystem
• Simple description of the various media types– Variables– Substitutions for date, number of messages etc– Simple commands like store message
• Programming errors cannot crash the media server
• Performance is very good– XML is converted to internal table
• Users can set up their own media types– Adding new language– Modifying existing types– Creating new types
• Subsystem supports transcoding– Conference between different codec calls
• Using the snom phone SIP stack
82
V1.0
We offer the most typical media types in the standard installation
Mailbox Auto Attendant
Conference
Music, Error
Calling Card
Sample mailbox with different modes (personal greeting, standard greeting, absence, etc.)
Auto attendant initiates transfer of existing call or early media call (REFER or 3xx redirect).
Simple conference bridge with or without authentication of users. Can also be used for callback and click-to dial and B2BUA.
Music on hold server. Reading error explanations.
Simple Calling Card application with precise billing.
83
V1.0
Performance measurements have shown good performance for G.711 and caution for G.729A
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1
2 G729
4 G729A
20 G711
30 G711
10 G711 Conf
750 MHz Pentium II
84
V1.0
Calling Cards…
• Main problem: What happens when card becomes empty?
– User continues talking– User is not warned– User may want to hear a gong for every coin he uses
• Solution: Calling Card in media server– Media server keeps track on used coins– No multiple call problem– Media server generates tones for billing information
85
V1.0
Scaling snom 4S
• SIP can inherently be scaled– If user agents support DNS SRV– Proxy supports database replication
• Performance is not the issue on the proxy– 1 Mio calls per day results in a approx. 50 transactions per
second (no problem)
• Media Server needs to
86
V1.0
We run our proxy and media server for more than a year now at snom.com
• Several domains– snom.info for snom 200 phones Plug & Play– snomag.de as free proxy for everyone who wants to try– snom.com for our telephony traffic– stredicke.de for sip:[email protected]
• Pubic media accounts– sip:[email protected] for sample conferencing– sip:[email protected] for test calls– sip:[email protected] for Internet music on hold– Plug & Play setup of snom.info mailboxes
• Exposed to the public Internet– We had a few DoS attacks– But no problems with the proxy stability
• Performance seems not to be an issue– Currently, approx. 1000 users are actively using the proxy
87
V1.0
The snom 105 is a small-size phone with a graphical display
• Optimized design for VoIP– Connectors on the back– 128 x 64 B/W display
• Cellular phone like functions– Function keys– Animated menus– Message display
• Asian character support
• Multiple registrations, multiple calls
88
V1.0
The snom 200 is a office phone with a two-line display
• Phone for business area– LED keys– Dedicated keys for special
functions– Large handset, good audio
performance– 2-line display
• More simple to produce
• Smart functions– Number guessing– Remote state indication
89
V1.0
The embedded web server make access to the proxy easy
• Complex setup can be done via the web browser– Line registrations– Diagnostics– Remote management– Address book management
• Dialing from the web browser– Helpful for SIP URL
• Web browser allows remote control– Also from other applications– E.g. TAPI (Outlook)
90
V1.0
“Plug and Play” support makes mass deployment easy
• Large installations must have a mechanism that automatically installs the phones
• No new mechanism should be used for SIP and VoIP
• snom uses http for transporting the configuration data– Existing infrastructure can be used (Apache, mysql)– Simple ASCII based format– Tunnels trough firewalls and NAT– Settings can be made read-only
• Phones can be put into operators realm– Redirect according to MAC address– Users may select operator realm from web interface
• Automatic software update
91
V1.0
2. H.323
3. SIP
4. snom technology suite
5. Installation of snom 4S
6. Conclusion
7. Test
1. Introduction to VoIP
92
V1.0
Installation on Windows Platforms can be done easily if you follow some rules
• Just follow the dialog and the manual!
• Be sure to be administrator– Otherwise you might have problems adding the proxy as a
new service– In this case, the proxy does not start automatically
• You don’t need to reboot the machine– Manually starting from the service manager– But make sure that after a reboot the proxy is coming up
• Check the event log for extraordinary messages
93
V1.0
Windows stores some basic information in the registry and then reads the rest from the files
• Get the root directory from the registry– HKEY_LOCAL_MACHINE/SOFTWARE/snom/proxy is the root
path– reg_dir contains the root directory for the proxy– html_port_number and sip_port_number define the ports
• Other configuration information is stored in config.xml– Configuration of the “admin” account– Domains are stored in the domain directories– Don’t edit this file when the proxy is running (changes will
overwrite it)
94
V1.0
Updating the Windows service is not so easy, you have to follow some voodoo-tricks (warp II)
• Mark the service for manual starting– Keeps Windows from using this file after reboot
• Reboot
• Uninstall the old software– Is now safe because image is not being used
• Install the new software– Start it in the service manager
• Check the version number and the build– If they did not change you have a problem
95
V1.0
The install.sh script simplifes the Linux installation for SuSE and RedHat
• Follow the descriptions in the manual
• Make sure you are “root”
• The script sets up run level information and copies the executable into the /usr/sbin directory
– Be careful with name mixing (rcsnomproxy, snomproxy)– Old proxy was named sip-proxy, new has name snomproxy
96
V1.0
RedHat startup procedure
• /etc/snomproxy.conf contains the variables for startup information
– START_SNOMPROXY: yes or no– SNOMPROXY_OPTS contains the command line interface
arguments– This usually contains the html/sip port and the startup
directory– snomproxy.conf is overwritten during (re-)installation
• Use /etc/init.d/snomproxy stop/start for controlling the proxy
97
V1.0
Should the customer use Linux or Windows?
• If the customer has a preference, don’t try to convince him
– Proxy runs fine on both platforms– Performance is good on both systems
• Linux is easier to access with telnet/SSH– For operators that can be an advantage– SuSE is “European” style, RedHat “American”– We had some trouble with RedHat, now it’s a well
supported platform– Try to stay away from other distributions as we don’t
support them
• Windows can be managed by most administrators– For companies that can be an advantage
98
V1.0
Licensing keeps people from using illegal copies of our software
• Licensing is bound to the IP address– The current IP address of the proxy can be seen on the
Licensing Web page (on the top)
• The proxy must match the IP address to one of the hostnames
– All license names must be in the hostname list– Later we do DNS resolution on the hostnames as well
• If the proxy is not licensed it rejects all requests with “500 License Expired”
– But the rest of the proxy is operative
99
V1.0
You can go to the domain by clicking on the link or by logging in
Log in as:•Administrator•Domain Administrator•User
100
V1.0
Checking if the SIP proxy is up & running
• Check the product version– Version 2.xy (x = major, y = minor release)– Version 2.xyz (z = beta release indicator)
• Check if the service comes up after reboot
• Check if the product is licensed
101
V1.0
First you should make sure that the fundamental settings are ok
Choose Ports
Use this only if theproxy runs on several
IP addresses
Logging helps identifying problems
Set a password
Leave this emptyin the beginning
102
V1.0
Before you can start operating the proxy, you need to set up a domain
Click here to go to the domain
Enter a domain name here to create a new
domain
Edit or remove an
existing domain
103
V1.0
Take a look at the domain settings first and set the password for the domain administrator
Set your domainpassword here
Enter the linkto the mediaserver (see
below)
104
V1.0
Define the way the proxy handles registrations
Allow only knownusers to register
Define the expiration
Default probability for user agents
Avoid problems with devices behind NAT
105
V1.0
Set up your first user account
Name of the account Name for authentication (usually
the same as the account name)
Choose password that cannot be guessed easily
Other names for the account
Single registration avoids problems
when clients register with
changing addresses
106
V1.0
Check if your account has been set up
Name of the accountClick here to edit this
account
Number of current registrations on this
account
Remove the accountAccounts can be
enabled or disabled
107
V1.0
On the phone, set up the registration information as well (credentials first)
Define the expiration
Default probability for user agents
Define for which lines the line is valid
Typically the domain name
Username as defined on the proxy (not the
account!)
Password
108
V1.0
Enter the account information in the SIP/Line Settings menu on the phone web interface
Choose on of the accounts
Put your „real“ name in here
The account name of the
proxy (not the username)
Domain name
Leave as is Leave as is
Mailbox address (leave empty for
now)
Probability that user can be found
on this phone
109
V1.0
Check if the registration succeeded
Current local time
How the phone can be reached, maybe including the path to the
user agent
Phone type
„Real“ name
Domain
Remove this registration (account is not deleted)
Duration of registrationAccount name
110
V1.0
Looking at the SIP trace you also get an idea what's going on
Local time of reception
IP addressPacket behind
link
UDP or TCP
Rx = Received (normally)Tx = Send (normally)Rr = Repetition receivedTa = Send automatic answerTr = Send message repetitionTf = Send failed
„Good“ registration
„Good“ registration,
message repetition
111
V1.0
After making your first call, you should see the call in the call trace
Local time of callSource; clicking
here show details of the call
Destination
Duration
112
V1.0
A typical call flow includes forking the request to several destination
Initial Invite
Phones show that they are ringing
Forking to phone and
mailbox
Mailbox picks the calls up
Proxy cancels the call to the phone
Hang up
Acknowledgement of cancel
113
V1.0
A simple dial plan for a office with a single gateway
Mode is always forward
All calls with at least 4 digits go to the gateway
Redirect calls to the FAX to
another number
Incomplete incoming calls (at
least 5 digits) go to central number
114
V1.0
Before operating the media server, you should check the fundamental settings
Make sure the IP address is correct If you want to use
Email, enter the server information here
Making entering number more
simple
Make sure these ports are available
Avoid CPU overload
115
V1.0
The stack settings of the media server normally need no change
Only necessary if you are using NAT
Set during installation
Switching between transport layers
Automatic hang-up when clients don’t
reconnect
Message repetition (in ms)
116
V1.0
Also, the codec settings normally don’t need to be changed
U-law has best quality, but high bandwidth
Packet delay is important only for
conferencing
Media server automatically
detects DTMF, this setting is about indicating thisPayload type is
normally negotiated
Force a specific codec
117
V1.0
The currently known accounts on the media server
Name of the account Delete an account
Type of the account
Edit an account
118
V1.0
You can add accounts by selecting its type and account name
Name of the account Type of the account
119
V1.0
The music on hold account type just plays music; the user may select the type with DTMF
Authentication information
All accounts have a language setting
Location of the music files
All accounts have a password
Where the account should register
120
V1.0
The conferencing account mixes the audio streams of all participants
Authentication information
If password is present, the caller is
prompted for the password before he
can join the conference
121
V1.0
The conferencing account mixes the audio streams of all participants
Time until the mailbox picks up
Authentication information
If this matches the To-header, the
mailbox does not ask for the password
After recording a message, the
mailbox sends a MWI to this destination
Maximum recording length
122
V1.0
<?xml version ="1.0" standalone="yes"?><media_definition> <!-- global options for the mailbox --> <option name="x-type">Mailbox2</option> <option name="x-conference">false</option> <option name="x-msg_send_mwi">true</option> <option name="x-msg_send_email_summary">true</option> … <option name="email_url"></option> <option name="email_name"></option> <option name="x-email_file"></option>
<!-- find the start state --> <start condition="equal ${owner} true">welcome_main_menu</start> <start condition="equal ${x-mailbox_mode} mb_name">mailbox_enabled_name</start> <start>mailbox_enabled_stand</start> <!-- default -->
<!-- Welcome to the voicemail system of 123. Leave your message after the beep --> <state name="mailbox_enabled_stand"> <!-- define the audio output: --> <audio type="file">${audio}/${lang}/mb_you_have_reached_the_voicemail_system.wav</audio> <audio type="file">${audio}/${lang}/mb_leave_msg_after_tone_two_minutes.wav</audio> <audio type="file">${audio}/${lang}/bi_beep.wav</audio>
<!-- define the behavior: --> <event name="audio_end"><cmd>msg_create</cmd><cmd>goto record_message</cmd></event> <event name="0-9"><cmd>set collect ${digit}</cmd><cmd>goto collect_digits</cmd></event> <event name="#"><cmd>set collect</cmd><cmd>goto collect_digits</cmd></event> <event name="*"><cmd>set collect</cmd><cmd>goto collect_digits</cmd></event> </state>…
User defined account types may implement all kinds of media-related services like calling-card
Hidden settings
Web settings
Find the initial state
Description of the audio
State
State transition description
123
V1.0
2. H.323
3. SIP
4. snom technology suite
5. Installation of snom 4S
6. Conclusion
7. Test
1. Introduction to VoIP
124
V1.0
Conclusion
• Voice over IP is a complex technology!
• However, has huge potentials– Using computer infrastructure instead of specialized
equipment– Integration with computer network makes things easier
(web browser, email-notification, etc.)
• SIP is getting mature– Most of the services known from PSTN are possible– Many new features that were not possible with PSTN
• snom offers phones and SIP proxy, media server
• VoIP technology can be integrated with any vendor– Quality is important
125
V1.0
2. H.323
3. SIP
4. snom technology suite
5. Installation of snom 4S
6. Conclusion
7. Test
1. Introduction to VoIP
126
V1.0
Examination
© 2003 snom technology Aktiengesellschaft
Written by:Dr. Christian StredickeVersion: 1.0
The author has made his best effort to prepare this document. The content is based upon latest information whenever possible. The author makes no representation or warranties of any kind with regard to the completeness or accuracy of the contents herein and accept no liability of any kind including but not limited to performance, merchantability, fitness for any particular purpose, or any losses or damages of any kind caused or alleged to be caused directly or indirectly from this document.
For more information, mail [email protected], Pascalstr. 10B, 10587 Berlin, Germany.