Title: SIP( Session Initiation Protocol)
1SIP( Session Initiation Protocol)
- 2006. 6. 8 (?)
- ? ? ?
- hufs96mk_at_hufs.ac.kr
2Contents
- SIP Introduction
- History of SIP
- SIP Overview
- Generating the Request
- Successful Session Establishment
- Skype P2p Overlay Network
3SIP Introduction
- Why SIP?
- SIP isnt simply voice
- It supports services that provide Integrated
Personal Communications Environments that include
voice - SIP Session Initiation Protocol
- Signaling protocol for initiating, modifying, and
terminating interactive sessions - A session can be voice, video, data or any
combination tied together by SIP - SIP enables any kind of communication everywhere
at any time
4History of SIP
- IETF MMSUIC WG
- ????? ????? ?? ??? ?? SIP ??
- 1999? 3? RFC 2543?? ??
- 1999? 9? SIP WG ??
- IETF SIP WG
- ??? ???? ???? ?? ? ?? ???? ????
- 2002.06 RFC 3261 ? 2006.1 RFC 3853,RFC 4320
- Real-time Applications and Infrastructure Area
2006.1 - Avt, ecript, emun, geopriv, ieprep, iptel,
megaco, mmusic, sigtran, simple, sip, sipping,
speechs, sepeermint, xcon - Top Issue
- Skype? voip? ???? ??????, ?? ????? ??? ??
5IETF WGs Related to SIP
- SIPPING WG
- Header or method? ?? ??? ????? ????.
- SIMPLE WG
- ??? ??? ??? ??
- P2P SIP BOF
- SKYPE? ???? ?? WG
- SPEERMINT WG
- ??? ??? ??
- ENUM
6SIP Overview
- ?? ?? ?? ????
- ????? ?? ??, ??, ??? ?? ??
- ?? ?? ?? ????? ???
- UDP, TCP, SCTP
- Secure transport TLS over TCP, IPSec
- HTTP ??
- ??? ?? ????
- URIs(Uniform Resource Indicators) ??
- SIP-URI ?? siphufs96mk_at_hufs.ac.kr
- Personal Mobility ??
- ??? SIP ??, ?? ??(??)
- ?? ???? ?? ??,??, ??, ?? ??
- ??? ??(forking)?? ??
- ??? ??? ?? ??
- Voice, video, gaming, instant messaging,
presence, call control, etc
7Terminology Definitions
- Call
- Identified by a globally unique call-id
- Created with sending INVITE
- Dialog
- Peer-to-peer relationship between two UAs
- Call-ID, TO tag, FROM tag? ???? ??
- Transaction
- Client? Server?? Request? ?? Final Response? ??
???? ?? ?? ?? - Call-ID, CSeq, To tag, From Tag? ???? ??
8Loose Routing(1/2)
- Strict routing was too strict. Service logic
could not affect routing of the initial request - Strict routing conflates the request target with
the next hop destination. - Strict route processing throws away the
information in the received Request-URI - Behavior of UAs with default-outbound-proxies
problematic. - Brittle system failure if any element misroutes.
INVITE BRoute C,D
INVITE CRoute D
INVITE D
C
A
B
D
9Loose Routing(2/2)
- Define Routing the right way
- Keep request target and next route destination
separate - Allow each route destination to determine when it
has been reached - Then add mechanism to provide backwards-compatibil
ity with strict routing SIP elements - Support for loose routing is indicated through an
lr parameter
INVITE DRoute B,C
INVITE DRoute C
INVITE D
A
C
B
D
10SIP Basic Flow
11SIP Elements (1/2)
- Proxy Server
- UAC? UAS ???? SIP ??? ???? ???? ??
- Example Outbound Proxy, Inbound Proxy
- UA (User Agent)
- UAC(User Agent Client)
- SIP ?? ???? ???? ??? ????
- SIP transaction? ????, ?? Transaction ???? ??
UAC? ?? - UAS(User Agent Server)
- ??? SIP ?? ???? ???? ???? ???? ??? ????
- ?? ??? ??, ??, ?????
- Location Server (Registrar)
- SIP? Personal Mobility ??? ???? ?? ??
- Database of locations of SIP User Agents
- Queried by Proxies in routing
- Updated by User Agents by Registration
- DNS Server
- SRV(Service) Records used to located Inbound
Proxy Servers
12SIP Elements (2/2)
- Redirect Server
- ?? ???? ?? 3XX ??? ???? UAS
- 3XX ??? ?? ????? ????? ???? ?? URIs ??
- Back-to-Back User Agent(B2BUA)
- ??? SIP ?? ???? ?? ?? ???? ???? ??? ????
- ?? ??? ??? ?? ??? ?? UAC?? ??
- Proxy ???? ??, ????? ???? ??
13SIP Architecture
14SIP Uniform Resource Indicators (URIs)
- E-Mail ??? ?? user_at_domain
- Two URI schemes
- SIP URI
- Sipsunok_at_etri.re.kr
- Secure SIP URI
- Sipssunok_at_etri.re.kr
- RFC 3261?? ??? ??? ??
- TLS over TCP
- Two types of SIP URIs
- Address of Record (AOR) (identifiers user)
- sipsunok_at_etri.re.kr
- etri.re.kr ???? SIP ??? ???? ?? DNS SRV record
?? - Contact ( identifies a device, FQDN)
- sipsunok_at_129.354.100.34 or sipsunok_at_pc233.etri.r
e.kr - SIP URI Addressing Example
- sipsunok_at_etri.re.kr3000transporttcp
15Dialog(1/2)
- Creation of a Dialog
- Created through the generation of specific
responses to INVITE request - Specific responses
- 2XX response Dialog
- 101199 response with a To tag Early Dialog
- Dialog State (in UAC, UAS)
- Example Media Session
16Dialog State
17SIP Message(1/2)
- Request Message UAC ? UAS
- Response Message UAC ? UAS
18SIP Message(2/2)
- Request Message
- Response Message
19SIP Response(1/3)
20SIP Response(2/3)
21SIP Response(3/3)
22Generating the Request(1/9)
- Mandatory Header
- From, To, CSeq, Call-ID, Max-Forwards, Via
- Content-Length TCP ??? MUST, UDP??? SHOULD
- UAC??? ??? ?? ??
- Dialog ?? ??(Outside of a Dialog)
- UAC?? ????? ??
- Dialog ?? ??(Within a Dialog)
- ???? ?? Dialog ?? ????? ???? ??? ??
- From
- Request ??? ??? SIP-URI
- Tag Parameter
- ??? ????? ??, tag? ???? ??
- Globally unique value 32bit ???
- To
- Request ??? ??? SIP-URI
- Tag Parameter
- Outside of a dialog ????? ??
- Within a Dialog
- ???? ?? Dialog ?? ?? ???? ??
23Generating the Request(2/9)
- CSeq
- Sequence number, Method
- 32bit unsigned integer
- Dialog ?? Transaction? ?? ? ??? ??? ? ??
- Outside of a Dialog
- 231?? ?? ? ??? ??? ?? (non-REGISTER Request)
- Within a Dialog
- MUST be incremented by one
- ???? ???? ?? ? ??
- UAS? Dialog?? ??? Request? ?? ?? CSeq? ??
- ?? ??? ?? ? ?? 4XX(Client Error) ?? ??
- ?? 1 ?? ??? ???? ??
- Call-ID
- Globally unique identifier
- NO Reuse
- ??? ????? ??
- ????? localid_at_host? ?? ??
- Within a dialog
- ???? ?? Call-ID ??? ??
24Generating the Request(3/9)
- MAX-Forwards
- Value 70
- If value is 0 before the request reaches its
destination, - 483(Too Many Hops) error response
- Proxy?? Max-Forwards ?? ??
- Contact
- INVITE/200(OK) ????? ??? ????? ?
- ???? ?? ?? ??? ????? ???
- SIP-URI? ???, ?? ?? ??? FQDN ??? SIP-URI
- INVITE/200(OK) ??? ??? ???? Proxy ?? ?? ??
Contact?? ??? ???? ?? ?? ?? - Record-Route ??? ???? ?? ????? ?? ?? ??
- Content-Type
- Internet media type of Message Body
- May be used multipart MIME type
25Generating the Request(4/9)
- Via
- Request ???? ?? ??
- ? Transaction? Response/Request ?? ?? ??
- Branch parameter
- Mandatory??, Magic cookie(z9hG4bk)? ????? ?
(Must) - Branch Parameter ??? Request Processing? ??? ???
?? ???? ???? ???? ? - To tag, From tag, Call-ID, Request-URI, CSeq,
Proxy-Require, Proxy-Authorization, Route ? - ??? Loop ??? ?? ???
- Loop ?? ??
- ??? ???? Via? ??? ??? ?? ?? ??
- ??? branch param? ?? ?? ??? branch param? ? ??
- ????, Loop
- ??? ???, Sprial
- Response ?? ?? ???(topmost) Via ?? ??
- ??? Via ??? ?? ?? Via ?? ?? ?? ?? ??
26Generating the Request(5/9)
- Record-Route
- Initial INVITE ???, Proxy ??? ???? ??
- Initial INVITE ???, Dialog ?? ???? ???? ????
????? ? ??, Proxy ??? ???? ?? - Proxy ??? ???, lr ???? ??(MUST)
- UAC ?? ??
- Initial INVITE? ?? Final response? 200 ??? ??? ??
- Record-Route ??? ???? Route set ??(in reverse
order) - UAS ?? ??
- Initial INVTE? Record-Route??? Response? ??
- Record-Route ??? ???? Route set ??(in order)
- Content-Length
- Body? ?? ??
- Header? Body? ???? CRLF? ??? ?? ?? ??
- 0??? ?? ??
- Body? ?? ???? 0
- Content-Length? ?? ???? ?? ???? ?
- ?? ?? Body? ??? ?? ?? 400 Bad Request ?? ??
- TCP ??? Mandatory
27Generating the Request(6/9)
- Request-URI, Route
- Outside of Dialog
- Initial Request-URI SHOULD be set value of To
Header - Route Pre-existing route set
- RECOMMAND Pre-existing route set? ???? Outband
Proxy ?? - Within a Dialog route set ??
- Route set? Empty
- Request_URI remote target URI (MUST)
- Route Header empty(MUST)
- Route set? not empty??, route set? first URI? lr
????? ????, - Request_URI remote target URI (MUST)
- Route header route set( in order, including all
parameters) (MUST) - Route set? not empty??, route set? first URI? lr
????? ???? ???, - Request_URI route set? first URI (Request_URI??
???? ?? ?? ?????? ??) (MUST) - Route header(MUST)
- First URI? ??? ??? route set
- Remote target URI? Route header? last value? ??
28Generating the Request(7/9)
- Request-URI, Route
- Strict Routing Example
29Generating the Request(8/9)
- Request-URI, Route
- SIP Loose Routing Example 1
30Generating the Request(9/9)
- Request-URI, Route
- SIP Loose Routing Example 2
31SIP Routing Mechanism(1/5)
32SIP Routing Mechanism(2/5)
33SIP Routing Mechanism(3/5)
34SIP Routing Mechanism(4/5)
35SIP Routing Mechanism(5/5)
36Successful Session Establishment(1/5)
- Alice completes a call to Bob directly
37Successful Session Establishment(2/5)
38Successful Session Establishment(3/5)
39Successful Session Establishment(4/5)
40Successful Session Establishment(5/5)
41Call Setup Attempt Scenario Successful
42?? ???? ?? ? ??
ltSession ??? ??gt
ltDB ??gt
43Skype P2p Overlay Network
- A peer-to-peer client developed by kaZaa in 2003
in 2003 - Skype can
- Work almost seamlessly across NATS and firewalls
- Has better voice quality than the MSN and Yahoo
IM application - Encrypts calls end-to-end, and stores user
information in a decentralized fashion
44SIP? ?? Peer-to-Peer SIP
- Two Layers
- SIP layer call processing
- P2P overlay layer location service