RTP is used to carry the media between endpoints. Its UDP based. SIP is
rapidly moving to TCP (and some to TLS) so the UDP assumption will work now
but unlikly in say 18 months from now.<br>
<br>
The problem you face is that there are other entities in the
network that expect the IP address for the sessions to remain unchanged
- unless specifically redirected. <br>
<br>
The UA's for one will be sending their media to the old IP address of
the Asterisk server (if they were in the path , for a conference or
voicemail or DTMF based feature handling for example). The firewalls in
the path will be expecting media and new requests within the same
dialog to be coming from the old address as well. SBC's will no doubt
reject any attempts to re-use the same session from a different address
... <br>
<br>
There are many problems to solve for a general solution.<br>
<span class="sg">
<br>
Mark</span><br><br><div><span class="gmail_quote">On 9/28/05, <b class="gmail_sendername">Steven Dake</b> <<a href="mailto:sdake@mvista.com">sdake@mvista.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Wed, 2005-09-28 at 18:43 -0500, Mark Aiken wrote:<br>> Steven,<br>><br>> I'm not familiar with AIS but if your plan is to support in-call<br>> handoff to a different IP you have issues at the session layer to deal
<br>> with. That problem I am familiar with and its not easy to keep a SIP<br>> call up and move the IPs of a SIP server than is in the call-control<br>> and/or media path of the session. Especially if the original server
<br>> just dies mid-call. DNS tricks will be of little use mid-call. In<br>> fact, without moving the sessions prior to the switch, I'm not sure<br>> its even possible without 'dialing' back the parties to reestablish
<br>> the sessions. That may be your only viable option, and its not such a<br>> bad one really. Note aslo that wrt SIP, Asterisk is a B2BUA and has 2<br>> call-control (SIP) and often 2 media (RTP) sessions for each call
<br>> between UAs (SIP phones).<br>><br>> Certainly it will be an interesting project.<br>><br>> Mark<br>><br><br>Mark,<br><br><br>Thanks for the feedback.<br><br>I would like to ensure that sessions remain operational and a redial
<br>isn't necessary.<br><br>AIS will checkpoint the entire SIP session state into a data storage<br>area shared by multiple nodes. Since SIP uses UDP, it should be<br>possible to switch the IP address (ip address failover) when the active
<br>becomes standby. Then new operations will be directed to the same IP<br>address, which is now on the newly assigned active node. Then the<br>standby server will have an exact replica of the SIP session state when<br>
it recovers and becomes active. AIS takes care of all of the details of<br>the checkpoint management and assignment of active/standby states. The<br>only trick is to record any changed SIP state data using a checkpoint<br>
write call, and read state data on active assignment using a checkpoint<br>read call. I found sip_pvt which should contain all the private data.<br>Are there other data structures that I should worry about recording?<br>
<br>If that isn't clear, let me give an example with two nodes:<br><a href="http://192.168.1.10">192.168.1.10</a> active<br><a href="http://192.168.1.11">192.168.1.11</a> standby<br><br>The active has a virtual ip address
<a href="http://192.168.1.200">192.168.1.200</a> which is the IP<br>address of the actual SIP server. if <a href="http://192.168.1.10">192.168.1.10</a> fails or is assigned<br>standby, it should delete this virtual ip address. Then
<a href="http://192.168.1.11">192.168.1.11</a><br>will be assigned active, and it should create a virtual ip address<br><a href="http://192.168.1.200">192.168.1.200</a>.<br><br>Regarding the call control (SIP) connections.. Are there 2 at each end,
<br>or just one instance at each end?<br><br>It appears that asterisk contains state data that is passed to some of<br>the operations. The comments indicate it has to do with pbx state<br>management. I assume this is for cli and gui access. Does this
<br>asterisk state contain any other useful information, or could I avoid<br>having to also replicate it, and instead just checkpoint the full SIP<br>session state.<br><br>One final question, I am not familiar with the purpose of RTP. Does it
<br>also have some state that is required for two ip phones to communicate?<br><br>regards<br>-steve<br><br>> On 9/28/05, Steven Dake <<a href="mailto:sdake@mvista.com">sdake@mvista.com</a>> wrote:<br>> Fellow developers,
<br>><br>> I maintain the open source project openais<br>> <a href="http://developer.osdl.org/dev/openais">http://developer.osdl.org/dev/openais</a> which is an open source<br>> version of
<br>> the Service Availability Forum's AIS specification.<br>><br>> This implementation provides checkpointing and application<br>> failover.<br>> I'd like to create an integration between the SIP channel
<br>> module and<br>> openais AMF/checkpointing and perhaps have it integrated into<br>> the<br>> asterisk source base as a proof of concept of AIS.<br>><br>> The integration would allow multiple servers to maintain an
<br>> active/standby the state of all SIP sessions. Then the active<br>> server<br>> for which the IP phone is communicating with would continue to<br>> operate<br>> and maintain its session in the event the active server
<br>> failed.<br>><br>> Would someone be kind enough to point me to the data<br>> structures or<br>> functions where the state of a SIP session is recorded. Is it<br>> possible
<br>> just to record SIPs state, or does the rest of the asterisk<br>> server that<br>> loads the sip module contain state about the SIP session?<br>><br>> In SIP, is an IP phone configured to talk to one specific IP
<br>> address, or<br>> is there a discovery process to determine the SIP server's ip<br>> address?<br>><br>> Finally in do_monitor, I notice there is a ast_sched_wait,<br>> followed by
<br>> an ast_io_wait. ast_io_wait appears to dispatch any pending<br>> i/o events<br>> as derived from poll. I need to plug in here with an<br>> ast_io_add to add<br>> my "healthchecking" for the SIP server. My question is with
<br>> ast_sched_wait.. Will it timeout immediately if there is I/O<br>> waiting?<br>> In other event systems, timers and events are usually<br>> integrated.. I'm<br>> not sure how these two work in asterisk by looking at the
<br>> code.<br>><br>> Thanks for the help<br>><br>> regards<br>> -steve<br>><br>><br>> _______________________________________________<br>> Asterisk-Dev mailing list
<br>> <a href="mailto:Asterisk-Dev@lists.digium.com">Asterisk-Dev@lists.digium.com</a><br>> <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev">http://lists.digium.com/mailman/listinfo/asterisk-dev
</a><br>> To UNSUBSCRIBE or update options visit:<br>> <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev">http://lists.digium.com/mailman/listinfo/asterisk-dev</a><br>><br><br></blockquote>
</div><br>