Professional Documents
Culture Documents
What are
their differences?
When ever a dynamic payload type is used in the sdp or when ever
additional information is required to decode, the additional
information
should be given in
a=rtpmap:<payload type> <encoding name>/<clock rate>[/<encoding
parameters>]
a=fmtp:<format> <format specific parameters>
This attribute allows parameters that are specific to a
particular format to be conveyed in a way that SDP doesn't
have
to understand them. The format must be one of the formats
specified for the media
a-line in the sdp is an optional field and fmtp is a a-line attribute
which points any specific media attribute.
for example, you can use fmtp as a media attribute to negotiate media
parameters for dtmf.
annex-b is just a variation of G729 codec with Voice Activity
Detection and Comfort Noise Generation support.
The interoperability between G729 B variations;
G.729 Annex-B and G.729A Annex-B
G.729 Annex-B and G.729 Annex-B
G.729A Annex-B and G.729A Annex-B
If initial invite is only support G729 Annexb, you should response it
1 of the codecs above.
Yes.
The UAS MAY send a final response to the initial request before
In SIP call flow when TCP come into picture and when it'll be
changed from UDP to TCP??explain me with some examples...
Govindraj: By default SIP uses UDP as trnsport layer protocol. Still
it depends upon the number of octets per message. If the message size
is less than or equal to 1000 octets then SIP uses UDP only. If the
message size just above the 1000 octets then sip statck itself try to
adjust it in 1000 octets by compressing technique ( ex: via = v,
call-id = c). Still if the size is beyond 1000 octets then SIP has to
use TCP.
If UAC send BYE during calll setup phase then what would be the
response
for BYE method.
Scenario is:UAC
INVITE- <- - - -<- - - -BYE - --
UAS,
-- - - --- - - -- - - - -- - - --- --
-- - - - ---- - ---- - - - --
-- - - -- - - -- ->
- -- - -- --- - -- - - 100 Trying
- -- - -- --- - -- - - 180 Ringing
- - -- - - -- ->
??????
According to RFC3261, UAC should send Cancel if 200 OK is not
received for a
A UAS first processes the BYE request according to the general UAS
processing described in Section 8.2.
A UAS core receiving a BYE request checks if it matches an existing
dialog. If the BYE does not match an
existing dialog, the UAS core SHOULD generate a 481 (Call/Transaction
Does Not Exist) response and pass
that to the server transaction. This rule means that a BYE sent
without
tags by a UAC will be rejected.
HI All,
If UAC send BYE during calll setup phase then what would be the
response for BYE method.
Scenario is:UAC
INVITE- <- - - -<- - - -BYE - --
UAS,
-- - - --- - - -- - - - -- - - --- --
-- - - - ---- - ---- - - - --
-- ->
- -- - - 100 Trying
- -- - - 180 Ringing
->
Bob
|
|
|
INVITE F1
|
|----------------------->|
|
180 Ringing F2
|
|<-----------------------|
|
|
|
BYE F3
|
|----------------------->|
|
200 OK(BYE) F4
|
|<-----------------------|
|
487 F5
|
|<-----------------------|
|
ACK F6
|
|----------------------->|
|
|
|
|
In this scenario, Alice establishes an early dialog with the
receiving
180 response. Alice sends a BYE on the early dialog. According to
1.
Proxies:- Having capability to route the request/response
to the destination, it can also maintain the status of call (depend
on the stateless/statefull proxies).
2.
UAS:- Other party network element, UAS will get a request
from UAC and will send response for this request. Or simply we can
say a logical entities that generate a response to a sip request.
3.
Redirect Server: is responsible for 3xx response. For
example a person has moved from one network to other network either
permanently/temporarily. So redirect
server will send 301/302 response for that.
4.
Registrar: is used for registration/location update
purpose. for every new equipment in the sip network first we have to
send a REGISTER request to Registrar and registrar will update your
location and contact in the location server.
http://www.voipsa.org/Resources/tools.php
that focus on packet creation and flooding. There's also one on
there called "Spitter" designed for SIP bulk call genarator for
regression and load testing.
We (VoIP Security Alliance)
make this list available so that people can do exactly what you are
doing and regression-test their products with the various securityrelated tools out there.
You already stated the solution, and it was the whole point of SIP
from the beginning: end-to-end communications without the need for
service providers or network equipment in the network.
Proxies have always been for route discovery when the calling party
does not know the actual address of the called party. The initial
idea
was the email model, where you might know that Foo works at Example,
so you would try sip:foo at example.com. It is up to example.com's
proxy
to expand that to foos-phone-at-home at phone.example.net. If you
know
the address directly, there is nothing to stop you in the Internet
from sending a message directly to that address. HOWEVER, many folks
break the Internet model by putting in firewalls, NATs, and SBC's. By
definition, to gain access to those poor people cut-off from the
Internet, you will have to go through their B2BUA's. Then again, the
address of the B2BUA is the endpont from your perspective, so if you
know that address (which would be something like sip:user at
sbc.example.net)
then you still do not need a proxy.
2.
Left click on udp packets and convert a stream to RTP.
Look
for packet into msw from ingress and then out of msw to egress. Also
locate packets in the opposite direction and convert them to RTP.
3.
Identify all RTP streams in trace:
Statistics
---> RTP Streams ---> Show All and hit enter
Analyze --->
4.
Follow instructions on screen by selecting forward stream
(left click) and reverse stream (hold shift key down and left click
stream). Notice how it selected the streams.
5.
Click Analyse button on screen. Make sure the streams are
selected or nothing will happen. Now click Save Payload button and
it
will give you a screen to create the audio file. Give the file a
name
and with the extension .au.
6.
file.
Bring up the file with file manager and double click the
It will start your media player and play the file.
Kaushal
Can any one tell me the difference between Via header and RouteSet
header.
Via header is used to send the response to a request, but route
header
is used to send a new request within the dialog.
Is Contact header mandatory in register request ?
The REGISTER without contact header is used to fetch the bindings.
So, Contact is not mandatory.
6.2.28 Route
The Route header field is used to provide routing information for
requests. RFC 3261 introduces two types of routing: strict and loose
routing, which have similar meaning as the IP routing modes of the
same name. In strict routing, a proxy must use the first URI in the
Route header field to rewrite the Request-URI, which is then
forwarded. In loose routing, a proxy does not re-write the RequestURI, but either forwards the request to the first URI in the Route
header field or it may forward the request to another loose routing
element. In loose routing, the request must route through every
server in the Route list (but may also route through other servers)
before it may be routed based on the Request-URI. In strict routing,
the request must only route through the set of servers in the Route
header field with the Request-URI being rewritten at each hop. A
proxy or UAC can tell if the next element in the route set supports
loose routing by the presence of a lr parameter. An example is:
Route: <sip:proxy at example.com;lr>
Chapter 10 contains an example of the use of the Record-Route and
Route header fields. Examples of Route header fields constructed from
the example Record-Route header fields in Section 6.2.12 are:
Route: <sip:firewall33.corporation.com;lr>,
<sip:proxy1.carrier.com;lr>
Route: <sip:139.23.1.44 ;lr>
6.1.10 Record-Route
The Record-Route header field is used to force routing through a
proxy for all subsequent requests in a session between two user
agents. Normally, the presence of a Contact header field allows user
agents to send messages directly bypassing the proxy chain used in
the initial request (which probably involved database lookups to
locate the called party). A proxy inserting its address into a
Record-Route header field overrides this and forces future requests
to include a Route header field containing the address of the proxy
that forces this proxy to be included.
A proxy, such as a firewall control proxy, wishing to implement this
inserts the header field containing its own URI, or adds its URI to
an already present Record-Route header field. The URI is constructed
so that the URI resolves back to the proxy server. The UAS copies the
Record-Route header field into the 200 OK response to the request.
The header field is forwarded unchanged by proxies back to the UAC.
The UAC then stores the Record-Route proxy list plus a Contact header
field if present in the 200 OK for use in a Route header field in all
subsequent requests. Because Record-Route is bidirectional, messages
in the reverse direction will also traverse the same set of proxies.
Chapter 10 contains an example of the use of the Record-Route and
Route header fields. The lr parameter is new to RFC 3261 and
indicates that the proxy server supports "loose routing". Older RFC
2543 compliant proxy servers create Record-Route URIs that instead of
the lr parameter often contain the maddr parameter with an address or
host that resolves to that proxy server.
Examples are:
Record-Route: <sip:proxy1.carrier.com;lr>,
<sip:firewall33.corporation.com;lr>
Record-Route:<sip:139.23.1.44;lr>
Diff
NAT functions at network layer of the OSI model, any NAT device hides
your ip layer information, doesnt hide your sip layer information,
since SIP works at Layer 5. ALG does that.
As described, NAT simply does address translation at network layer,
however, ALG is capable of altering SIP messages at application layer
as well. In other words, when a SIP message goes through an ALG, you
will notice that all IP addresses and ports in both SIP headers and
SDP are modified.
If you are developing your proprietary NAT traversal logic, you need
to pay extra attention to detect ALG's.
why UAS MUST NOT attempt to send a 100 (Trying) response reliably ..
The 100 trying response is hop-by-hop, that is each proxy on the
signalling path can generate the 100 trying response. Whereas the
non-100 trying response (181, 183) are end to end that is the proxy
only forward the response form UAS to UAC. The reliability mechanism
described in RFC3261 end-to-end, so the 100-trying response, which is
hop-by-hop, is kept out of it.
Record route also added by proxy and that have influence on the
routing of future requests (or responses).
Hi ,
The difference between Path and Record-Route is that Path
applies to REGISTER and 200 class responses to REGISTER. RecordRoute doesnt, and can't be defined in REGISTER for reasons of
backward
compatibility. Furthermore, the vector established by
Record-Route
applies only to requests within the dialog that
established that Record-Route, whereas the vector established by Path
applies to future dialogs.
>
> Requests within a dialog MUST contain strictly monotonically
>
Increasing and contiguous CSeq sequence numbers (increasing-byone) in each direction.
>
> It is possible for the > CSeq sequence number to be higher than
the remote sequence number by more than one.
>
> So based on what is said above, the CSeq number MUST be higher
between
> multiple requests. Now does this rule hold on the direction of
> requests in a dialog. Example as follows:
>
> A--------------Invite( Cseq = 101 )------------>B
>
<-------------200OK--------------------------->
----------------ACK----------------------------->
> At this point, B wants to change the session parameter and sends a
new
> offer.
>
> <----------------Re-Invite ( CSeq = 101 )-------> --------------------------200OK------------------------->
> <-----------------------ACK----------------------------->
Each end of the dialog has its own CSeq sequence. They are
independent.
The first time B (in your example) sends an in-dialog request, it
makes a new CSeq up that has nothing to do with the CSeq that A
chose.
After that it increments its CSeqs as it goes and makes sure the ones
from A keep going up as well.
Search for the phrases "remote sequence" and "local sequence" in
RFC3261 sections 12.1 and 12.2 for more detail.
Early media in fact is exchange of sdp parameters through 183 session
progress message before getting the final 200 OK message. One typical
use of
it would be to play a music for the calling party by the proxy server
whenever it sees a call by a given party. So that means when the call
is in
progress (i.e. ringing at the called party), the calling party hears
the
music as decided by the proxy server as there is an early media
session
established between the proxy and the calling party. When the called
party
eventually answers the call, the early media session is closed and
the final
sdp exchange happens between the calling party and the called party
(as in
the 200 OK message), based on which media streams are opened.
Another use of early media would be to have a complete session
description
exchanged through 183 session progress message between the calling
and the
called party, and open the media stream immediately after getting the
200 OK
response (200 OK does not carry sdp normally in this case as its
already
been conveyed through the 183 session progress), this avoids
processing the
sdp after receiving 200 OK and thus establishes the call more
quickly.
No, early media is not necessary unless you have some specific
requirements
to do so.
Any 1xx message except 100 Trying is an end-to-end message. If the
INVITE forks, the client
will receive ALL 1xx > 100 sent by any receiving endpoint.
In particular, if the request forks to three places and they each
send 183s, the client is going to
receive three different 183s (and likely early media from all three
locations).
The relevant section of the spec is RFC3261 section 16.7 subsection 5
(see page 109).
As an aside - the 1xx messages have no built in recovery from
transport failure for unreliable transports (UDP).
There is an extension named 100rel (see RFC3262) that adds a
mechanism to ensure those provisional
messages get delivered if they are really important to the
application.
Note that a 405 (Method Not Allowed) is sent when the server
recognizes the request method, but that method is not allowed or
supported.
Some times you will get 501 not implemented due to codec support too,
and If
your invite sending double codec request in SDP it's also return 501(
If
terminating gateway not accept double codec request)
Sipp is a great free tool for bulk call generation.
Wireshark, ngrep, tcpdump for packet analysis.
As far as commercial products; Empirix Hammer and Ixia traffic
generators
are extremely powerful tools.
there are many SIP testing tool are there in the open source (GPL
License), that can simulate SIP call flow with any number of
instance. I
have used miTester for SIP is the SIP testing tool to simulate a SIP
call flow for my testing. You could also try with miTester for SIP
downloading from source forge site. Here is the Link to download a
miTester for SIP
http://sourceforge.net/projects/mitesterforsip/files/
,you can download which OS you are using.
-An SDP session description consists of a session-level section
followed
by zero or more media-level sections. The session-level part starts
with
a "v=" line and continues to the first media-level section. Each
media-level section starts with an "m=" line and continues to the
next
media-level section or end of the whole session description. In
general,
session-level values are the default for all media unless overridden
by
an equivalent media-level value.
Some lines in each description are REQUIRED and some are OPTIONAL,
but
all MUST appear in exactly the order given here (the fixed order
greatly
enhances error detection and allows for a simple parser). OPTIONAL
items
are marked with a "*".
Session description
v= (protocol version)
o= (originator and session identifier)
s= (session name)
i=* (session information)
u=* (URI of description)
e=* (email address)
p=* (phone number)
c=* (connection information -- not required if included in all media)
b=* (zero or more bandwidth information lines)
One or more time descriptions ("t=" and "r=" lines; see below) z=*
(time
zone adjustments)
k=* (encryption key)
a=* (zero or more session attribute lines)
Zero or more media descriptions
Time description
t= (time the session is active)
r=* (zero or more repeat times)
Media description, if present
m= (media name and transport address)
i=* (media title)
c=* (connection information -- optional if included at session level)
b=* (zero or more bandwidth information lines)
k=* (encryption key)
I just wanted to know that in case to UA's are are talking with each
other
> using voip network and their registration times expire than what
will
> happen? Is call drops or UA will again sends a refresh Registration
request
> to the registrar?
UAs shall refresh registration before registration times out.
The registration request is sent to the UAS to identify UAC as part
of the
registered user in the SIP registrar server..It has timer inbuilt
within and
starts the counter after initial registration..It depends upon the UA
client what is the expiry counter set..During the call setup, the UA
client has to be registered with UAS to establish the call, if the
client is not registered you will get 403 forbidden. It wont
disconnect the call already been setup while the UAC was registered.
Is it good idea to send DTMF inband when using codecs like G.723?
Please advice.
It is not a good idea to send DTMF using lowbit rate codec.
Port 5060 is standard SIP TCP/UDP signalling port and port 5061 is
the
standard TLS SIP signalling port.
Hi,
In Your case UA1 should normally construct initial INVITE with SDP
offer containing this particular codec specification. Despite any
other non-media related reasons UA2 will reject INVITE with 488/606
(Not Acceptable Here) response in case the session description is not
acceptable or will accept session offer by sending a final 2xx
response with SDP answer containing the same codec
Specification. Provisional responses can also contain the same SDP
contents as final 2xx one.
> Hello All,
>
> UA1 can open channel only with one codec, so it need to negotiate
with > one codec
> I will take you to the example straight.
>
>
>
>
>
UA1
UA2
-----INVITE(Offer m =0 8 18)----------->
<-------200OK(Answer m=18 8)------------------INVITE(offer m=18)------------->
<-------200OK(Answer m=8 18)------------
> what should be the behaviour?? is there any standard stating the
> behaviour
>
> Hi,
Particular media and supported codecs are placed within media line
in SDP field within INVITE request. So if Your UA1 supports only one
> If I understood well than I hope you are saying that the UA1 should
send
> Offer with 8 in media line,
>
> now suppose 200OK still has multiple codec (like 18 8) in answer ?
>
> So my question is that does it seem correct to send INVITE always.
>
> as it could be a unlimited exchange of messages
>
>
>
> Your opinion please
>
>
>
> Regards
> In Your case UA1 should normally construct initial INVITE with SDP
offer containing this particular codec specification. Despite any
other non-media
> related reasons UA2 will reject INVITE with 488/606 (Not Acceptable
Here) > response > in case the session description is not acceptable
or will accept session offer by sending a final 2xx response with
SDP answer containing the same codec specification.
Provisional responses can also contain the same SDP contents as final
2xx one.
Moving further
Answer to question one:
If I consider A,B,C are all UAC then no as because C would not be
ready to receive a response for the request it never generated and
would discard it.
Such a scenario can be seen where A receives a Request from C and
then generates the Invite towards B on behalf of C.
Answer to question two:
Call-id, to tag, from tag are session wise unique in the space and
time, they might not be used by other clients as they would be used
to identify dialog and session between agents.
Subject: [SIPForum-discussion] a question about re-invite
Hi all?
my understanding of a SIP re-invite is that it modifies the media
session. Is it capable of modifying the address of the send too? for
example? A is talking to B, can A send a re-invite to B with C's
address instead of its own address?
another example ?
A is talking to B? recorded as dialog1, C knows the
Information of the dialog1, can C sends a re-invite to B instead of
the dialog1, the dialog between C and B has the same Call-ID, fromtag, to-tag as dialog1?
SIP RE-Invite method is a mechanism of refreshing the session
primarily and not changing the session itself.
Moreover if suppose A and B are in session and somehow B wants A to
talk to C then the method refer would be used.
There are other implementations where a re-invite is sent to achieve
the same objective. This depends upon implementation largely.
The fact all such cases where re-invite is used in place of refer to
achieve similar functionalities there are serious resource
compromises to mitigate.
You need to install cygwin to run sipp in the windows environment and
sipp windows version.
Hello,
Why does the 2xx gets a unique handling for ACK messages? When client
transaction receives a 300-699 message, it creates an ACK message and
sends it out and informs TU about it. But if the client tx receives
2xx message, it cannot generate ACK message. It has to let the UAC
core to send the ACK message. Can someone explain why the difference?
Thanks,
Nick
The ACK for a non-2xx response is a hop-by-hop message and is easily
constructed from the request in the client transaction (i.e. it will
have the same Request-URI and Route headers as the INVITE request.
The ACK for a 2xx response is an in-dialog request that goes end-toend. It needs to be passed to the TU which has to update the dialog
state and populate the Request-URI with the remote target, and the
Route headers from the route-set. Also, if the INVITE did not contain
SDP, the TU will need to put SDP in the ACK.
Subject: [SIPForum-discussion] ACK handling in 2xx and non-2xx
messages
Transaction, dialog and session they are like one makes the other.
In a normal call flow
UAC
UAS
INVITE-------------------------->
Trying<-------------------------180<--------------------------200ok<------------------------ACK---------------------------->
BYE<---------------------------200OK------------------------->
-------------------------------------------------------------------Dialog:
-------------------------------------------------------------------When UAC sends INVITE to UAS, it contains From-tag and Call-ID in the
Message.
In response UAC receives 200 OK, and in 200 OK, To-tag will be
present.
* In SIP the From-tag, To-tag, Call-ID makes a Dialog.
So when there is a successful INVITE and its response, then a Dialog
is
established.
* A Dialog is a sequence of Transactions.
--------------------------------------------------------------------------------------------------------------------------------------Transaction
-------------------------------------------------------------------Every Request and its corresponding Responses makes a Transaction
Eg:
Transaction x: REGISTER and 200 OK
Transaction y: Bye and 200 OK
In case of INVITE, Transaction is as follows:
If UAC receives a successful response that is 200 OK for the INVITE
it
sends then the transaction includes ACK.
That is
Transaction is: INVITE---- 1xx responses -- 200 OK --- ACK
In case UAC receives a non Success response (anything other than 2xx)
transaction doesnot include ACK.
That is
Transaction is: INVITE --- a non 200 response
And ACK will be another transaction.
* In SIP Transaction is identified by the "CSeq number" in a Dialog
--------------------------------------------------------------------
-------------------------------------------------------------------Session
-------------------------------------------------------------------With every INVITE -- 200 OK -- ACK, a session is established, that is
the two clients have a session to exchange media. That's a session.
-------------------------------------------------------------------Hope it's clear.
I think NetHawk EAST can help you in this regard. It's very flexible
and easy-to-use tool which is very inteligent for load testing. For
more details please visit following link:
https://www.nethawk.fi/
>
> I want to know what error code the UAS must give to client for
calling to a
> switched off mobile phone?
>
If mobile phone is switched off, that means it is not registered and
no message will reach it. The domain node serving the unreachable
user,
implementing location service will answer any request targeted to
that user
with 480 temporarily Unavailable response.
Most devices that send both 180 and 183 for one transaction send
them
in that order: first 180, then 183. There's no temporal coupling
between 180 and 183: they can occur in either order. (AFAIK.)
But beware if you use 183 with SDP, then start streaming RTP to the
calling endpoint, and then send a 180 to the UAC, you may get odd
results (such as overlapped ringback).
Yes, a Dialog ID is composed of Call ID, Remote Tag and Local tag.
When
an INVITE is sent we have the Local tag and Call ID.
The moment we get Remote Tag in 200 OK or 18x a DIALOG is
established. A
Remote tag in 18x is called Early Dialog.
Guess, only INVITE, REFER and SUBSCRIBE are the Dialog creating
methods
You do not appear to be offering the telephone-event type in the
media line of the INVITE message i.e. your m = line should read:
m=audio [auto_media_port] RTP/AVP 8 101
Hi All,
</send>
<recv response="200" crlf="true">
</recv>
<!-definition of the response time repartition table (unit is ms)
-->
<ResponseTime Repartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
<!-definition of the call length repartition table (unit is ms)
-->
<CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</scenario>
Rely on the user to hang up thereby sending a CANCEL to the far end
- interesting. So does your statement imply that on receiving a
provisional response, we must STOP TIMER B?
A related query - Any idea how the "session-expires" header works in
conjunction with this scenario? The client I use supports this header
and uses a default value of 1800 seconds. Does that mean the SIP
stack starts another timer for 30mins and hypothetically if the user
never ends the call, should this tear down the transaction? Or is
this timer only started for Confirmed Dialogs?
>
2. Is it implied that Timer B is only stopped/canceled on
receiving a final response?
>
3. What happens when Timer B fires?
> Should the client send a CANCEL or just kill the transaction?Thanks
for any inputs in this regard.
>
- Tomasz Zieleniewski
A
PRACK
is generated by a UAC when a provisional response has been
received containing a
RSeq
reliable sequence number and a
Supported:100rel
header. The
PRACK
echoes the number in the RSeq
and the
CSeq
of the response in a
RAck
header
>
- If UAC supports PRACK and not including 100rel means that it
supports but not interested to handle PRACK. and server should assume
that uac is not supporting this extension. RFC 3262 says
>
"If the request did not include either a Supported or Require
header field indicating this feature, the UAS MUST NOT send the
provisional response reliably."
>
>
even if UAC receives Rseq from sip server, it means that server
is not behaving as per RFC recommendations. so you are free to
support sip server on your risk :-) and you can send a PRACK but is
not recommended. I think better way is to send CANCEL and send a new
request with supported header containing 100rel.
>
>
- If UAC includes supported header containing 100rel means that
it supports this extension and provides flexibility to uas. UAS may
send 1xx with RSeq or may not. Depends upon sip server interests. :-)
>
>
- If UAC includes require header containing 100rel means that it
is forcing to
> > plz go through the two state ment ......n i think definitely u
wil get ur ans................
Not only timer A is used for re-transmission but there are some
other simlar timer are used for un-reliable delivery like D, E etc.
is that make sense ?
Hi,
1. Yes, BYE messages are retransmitted given that unreliable
transport(UDP)
is being used
2. again yes CANCEL messages are retransmitted given that unreliable
transport(UDP) is being used
The flow is valid and usually what the offerer do also. Check section
10.2 of rfc 3264 and you will get your answer. When the answer
carries a
list of codec, the original offerer would "usually" send a new offer
in
Transaction, dialog and session they are like one makes the other. No
dialog without transaction and no session without a dialog. But there
can be transactions without dialogs and dialogs without sessions.
Transaction: every request and response pair would make a
transaction.
[Please note that when I say that I mean a request and a successful
response for that request. In case there is a failure response for a
particular request then the transaction is not over till it receives
message which can clearly tell that the UAC to kill the transaction]
Basically transaction is a way of keeping a track of UAS and the UAC
interactions done independently.
Register--->
<-------200 OK
is a complete transaction.
Invite --->
<------3xx,4xx,5xx
ACK------> is also a transaction.
[3261] Dialog: Dialog can only be formed by the INVITE request when
there is a non-failure [101-199]/ [200] response for it.
Further RFC3265 also explains how subscribe notify pair can also form
a
dialog. I think it is never wrong to consider a dialog as special
transaction which merely matures as a dialog. Dialog can have states.
Invite----->
<--------100 {optional}
<--------200
Ack ----->
is a full dialog [but it has two transactions]
Sessions: we use sip just for signalling. It is not a complete
protocol
within itself to serve any purpose. So sip itself works with other
protocols like rtp and sdp to inform the two ends about the type of
conversation that can be possible. So plainly whenever a dialog
(couple
of transactions) or a sequence of message exchange are capable of
educating the other end about the required information regarding the
intended conversation the dialog can support a session where the
protocols like RTP or SRTP would be used to facilitate the service
for
which all the signaling was done.
So we can easily say (in a crude way) when a sip signaling
facilitates
the two ends to exchange information by using some other protocol
(whose
information was carried by SIP signals) we have a session.
A session would always have some capabilities which would be conveyed
by
the dialog which made it possible.
So far I have always seen Sessions in dialogs initiated by the INVITE
method only and I think it can be only that way. [Anyone else in the
forum if has some other experiences please put in your views]
Further RFC3261 is equipped with definitions of all these but what
Transaction:
Transaction is a request sent by a client transaction (using the
transport
layer) to a server transaction, along with all responses to that
request
sent from the server transaction back to the client. Any task that a
user
agent client (UAC) accomplishes takes place using a series of
transactions.
Session:
A *session* refers to all
make to
a server in the course of
application. Sessions are
the
application. As a result,
session and has access to
Hi Gopa,
I depends on how the UAS configured policy/behaviour when handling
misbehaving UAC that attempts to register at lower interval even
after
423 response is sent. It is implementation dependent as mentioned
previously by Abhishek. For example, I configured my sip server to
response with 488 whenever UAC misbehave after 423. Any client-server
based is subjected to DOS attacks, and SIP-VoIP is not spared from
this.
Gopalarathnam Sambasivan wrote:
> Hi Abhishek, All,
> Thanks, My query is mainly for protecting the UAS from frequent
> re-register bursts as RFC does not explicitly
> state a method of handling this scenario case2. RFC just states
that
> it is the resposibility of UAC to refresh the
> bindings and it has to do so before the expires of the earlier
> register (not when (duration)??).
>
> Please let me know a mechanism for protecting UAS from re-register
bursts.
> I could not find a solution compliant with RFC.
>
> Please do note that UAC need not be a SIP phone but a MGC which
> serves several GWs (subscrs) using SIP.
> consider every 1 min re- register (2hr expires) coming from UAC to
UAS
> (valid according 2 RFC) for all subscrs not in
> call. Re-registers need to be sent before expiry to have bindings
and
> have a continuos service, which is a must from
> UAC (MGC) perspective.
>
> Case 2 is a client side error and correct possible error codes can
be
> (But these does not have the retry-after header)
>
>
400 Bad Request
>
406 Not Acceptable
>
423 Interval Too Brief
>
488 Not Acceptable Here
>
> 20.33 Retry-After
>
>
The Retry-After header field can be used with a 500 (Server
Internal
>
Error) or 503 (Service Unavailable) response to indicate how
long the
>
service is expected to be unavailable to the requesting client
and
>
with a 404 (Not Found), 413 (Request Entity Too Large), 480
>
(Temporarily Unavailable), 486 (Busy Here), 600 (Busy), or 603
>
(Decline) response to indicate when the called party anticipates
>
being available again. The value of this field is a positive
integer
>
number of seconds (in decimal) after the time of the response.
>
>
An optional comment can be used to indicate additional
information
>
about the time of callback. An optional "duration" parameter
>
indicates how long the called party will be reachable starting
at the
>
initial time of availability. If no duration parameter is
given, the
>
service is assumed to be available indefinitely.
>
>
Examples:
>
>
Retry-After: 18000;duration=3600
>
Retry-After: 120 (I'm in a meeting)
>
> Case1.
>
> UAC sends a REGISTER with expires=1800 to UAS which has say
>
> min-expires=3600.
>
[Abhishek] I think Min-Expires: 3600 is too large value,
anyways RFC
>
does not disallow this value so it is OK.
>
> UAS rejects the REGISTER with 423 (Interval Too Brief) with
>
> min-expires=3600 - OK.
>
> A retry of register with min-expires accepted by the server
is
>
> successful.
>
>
>
> Case2.
>
> UAC sends a REGISTER with expires=7600 to UAS which has say
>
> min-expires=3600.
>
> There is no subscribe notify for subsequent registrations and
hence
>
> REGISTER is sent after
>
> random time interval between 1 and expires.
>
>
>
> Say there is re- REGISTER s with expires=7600, coming every x
secs
>
> which is less than the
>
> configured min-expires in the registrar.
>
>
>
> Question 1.
>
> Can the server reject these frequent re-registers within
>
registration
>
> expiry with 423 response?
>
> The min-expires seems to be available for the server to avoid
>
flooding
>
> of incoming registers.
>
> But according to RFC3261 sec 10.3 it cannot be done. so what
can be
>
> done?
>
> what is expected from perspective of UAS testing?
>
[Abhishek] No, registrar cannot reject REGISTER with 423 for
frequent
>
registrations. Registrar can send 423 only if registration
expiry is
>
less than its configured value.
>
>
>
> Question 2.
>
> From the perspective of UAC testing, can it be ensured that
Re>
> REGISTERS are sent only after min-expiry - 3600 on safer side
and
>
> before Expires - so that UAS will always treat the REGISTER
without
>
> overload?
>
[Abhishek] Unfortunately it is implementation dependent.
Usually sip
>
phone sends registration refresh slightly before session expiry
(or on
>
session expiry).
>
>
>
> Thanks & Best Regards,
>
> Gopalarathnam.
>
>
>
>
>
> REGISTER which is repeated after every x secs < configured
>
> min-expires:
>
> ===========================================================
>
> REGISTER sip:registrar.biloxi.com
<http://registrar.biloxi.com>
>
SIP/2.0
>
>
Via: SIP/2.0/UDP bobspc.biloxi.com:5060
>
<http://bobspc.biloxi.com:5060>;branch=z9hG4bKnashds7
>
>
Max-Forwards: 70
>
>
To: Bob <sip:bob at biloxi.com <mailto:sip:bob at
biloxi.com>>
>
>
From: Bob < sip:bob at biloxi.com
>
<mailto:sip:bob at biloxi.com>>;tag=456248
>
>
Call-ID: 843817637684230 at 998sdasdh09
>
>
CSeq: 1826 REGISTER
>
>
Contact: <sip:bob at 192.0.2.4 <mailto:sip:bob at
192.0.2.4>>
>
>
Expires: 7200
>
>
Content-Length: 0
>
>
>
> Part from RFC3261 sec 10.3 Processing REGISTER Requests:
>
> ==============================================
>
>
The registrar MAY choose an expiration less than the
>
> requested
>
>
expiration interval. If and only if the requested
>
expiration
>
>
interval is greater than zero AND smaller than one
hour AND
>
>
less than a registrar-configured minimum, the
registrar
>
MAY
>
>
reject the registration with a response of 423
>
(Interval Too
>
>
Brief). This response MUST contain a Min-Expires
header
>
> field
>
>
that states the minimum expiration interval the
>
registrar is
>
>
willing to honor. It then skips the remaining
steps.
>
>
>
>
>
>
Can any one tell why a 3 way handshake is required for INVITE ???even though SIP
can be tramitted over TCP
I assume you are talking about a TCP 3 way handshake when you refer
to the SIP over TCP. That 3 way handshake establishes communication
at the network transport layer and not at the SIP application layer.
To establish a call, you will still need a SIP 3 way handshake at the
application layer.
Hi,
There could be several reasons for three way handshake needed for
INVITE. Some of them are:
1. Three way handshake is a procedure to synchronize requests and
responses. It is used even in TCP as well.
Hi all
Standards Track
SIP: Session Initiation Protocol
[Page 131]
June 2002
Hi All
I have installed SIPp on my machine. I have installed Asterix on my
machine.
The machine runs on Windows XP.Is it possible to replicate the bellow
scenario from
a single machine using OPENSER or ASTERIX for learning/testing
purpose.
<SIPp UAC>-----<OPENSER(Proxy)>--------<SIPp UAS>
Yes. It is possible to run SIPp UAC, SIP Proxy and SIPp UAS in same
machine provided they use different UDP ports.
SIPP has command line options where we can mention next level IP
address and port to be contacted. It may be need to configure XML
files provided by SIPp.
Rgds,
Narasimham.
405 vs 501
> <<21.5.2 501 Not Implemented
>
>
The server does not support the functionality required to
fulfill
request. This is the appropriate
response when a UAS does not
>
recognize the request method and is not capable of supporting it
for
>
any user. (Proxies forward all requests regardless of method.)
>
>
Note that a 405 (Method Not Allowed) is sent when the server
>
recognizes the request method, but that method is not allowed or
>
supported.>>
It does appear that that last sentence isn't written quite corectly.
Clearly, the intention is that 501 means "this user agent does not
implement that method" and 405 meand "this user agent implements that
method, but this request is not alloed".
A better phrasing of the last sentence would be
something like:
>
>
>
Note that a 405 (Method Not Allowed) is sent when the server
recognizes the request method, but that method is not allowed or
supported in this request.>>
Andreas,