Re: Multiplexing sessions possible?
"Jeroen van Bemmel" <[email protected]> Mon, 23 Apr 2007 20:36:12 +0200
| Newsgroups | gmane.comp.voip.nist-sip |
|---|---|
| Message-ID | <001b01c785d6$45fca7f0$0601a8c0@BEMBUSTER> |
Lebing, As I said, perhaps I misunderstood the call flow. In general there are 3 places to keep state: 1 - Contact URI 2 - Record-Route URI 3 - Via param (1) can only be used by an endpoint (UAC or UAS or B2BUA), (2) is typically used by a proxy, (3) can be used by both but scope is limited to current transaction Regards, Jeroen Lebing Xie wrote: > Hi, Jeroen > > I am not agree with the idea putting CallID into contact header. > According to RFC, Contact header can be used to contact the party even > after this call is terminated, say some later time. I thought a better > idea is put call id as parameter into RecordRouter or VIA header for > diglog/transaction level mapping. > > urs Lebing > > > On Fri, 2007-04-20 at 23:11 +0200, Jeroen van Bemmel wrote: >> Andrew, >> >> It would be better to maintain a lookup table of dialogs, rather than >> ServerTransactions. If you keep a reference to the >> ServerTransaction, the associated state (including SIP message >> received, etc.) does not get freed by the garbage collector. >> >> Be sure to cleanup state properly, i.e. remove it upon BYE and >> perhaps periodically remove dead dialogs >> >> If you want to be picky, a better place to put the call-id would be >> a URI parameter in the Contact header your concentrator forwards to >> the receiver. You will get it back as a parameter in the request URI >> for mid-call requests. That way, you could interwork with any >> standard client as receiver. >> >> For step 5, if by "message back" you mean a response, a suggestion >> would be to use Transaction.setApplicationData to store a reference >> to the upstream Dialog. >> >> Regards, >> Jeroen >> >> Andrew T Gin wrote: >>> Hi >>> Is there a simple way to multiplex or aggregate sip sessions onto a >>> single session? >>> for example >>> Client1 Client2 >>> | | >>> concentrator >>> | >>> Receiver >>> >>> That is, Client 1 and Client 2 have sessions with the concentrator. >>> The concentrator has 1 session with the receiver and forwards >>> messages from Client 1 and Client 2 to the Receiver. Forwarding data >>> is easy, but what about forwarding data back to the clients (sent by >>> the receiver)? Is there a way to recover a dialog by knowing the >>> call ID? >>> The way im doing it now is: >>> 1. Concentrator sets up a single session with the receiver >>> 2. Concentrator then waits for invites from clients >>> 3. When a client sends an invite with the concentrator, a session is >>> established between the concentrator and client; the concentrator >>> does not have any interaction with the receiver in terms of invites >>> from clients. >>> 4. When the session between a client and concentrator is >>> established, the client begins to send data. The concentrator then >>> forwards this data to the receiver. I store the call-ID in a >>> callInfo header in the message sent to the receiver. I also store >>> the call-ID and the associated serverTransaction in a lookup table >>> in the concentrator >>> 5. the Receiver sends a message back to the concentrator, with the >>> call-ID in the callInfo header. >>> 6. The concentrator looks up the serverTransaction (based on the >>> call-ID), and calls serverTransaction.getDialog to recover the call >>> id and local(from) and remote(to) tags. >>> >>> I know my way is quite ugly and clunky, but is there a more elegant >>> way of doing it? >>> >>> Thanks >>> Andrew >>> _______________________________________________ >>> nist-sip mailing list >>> [email protected] >>> http://www-x.antd.nist.gov/mailman/listinfo/nist-sip >> >> _______________________________________________ >> nist-sip mailing list >> [email protected] >> http://www-x.antd.nist.gov/mailman/listinfo/nist-sip