Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Dialog info not shared at failover

mariana
2012-02-03
2013-05-09
  • mariana
    mariana
    2012-02-03

    Hi guys!

    I'm facing some problems with dialog information while working with OpenSIPS for load balancing and failover.

    We are using an OpenSIPS as the load balancer and another 2 OpenSIPS as proxies. We want to make sure that if the load balancer chooses proxy #1 as the destination for a new call and the proxy #1 goes down during the call, load balancer would redirect the BYE to proxy #2 and proxy #2 would be able to handle it, as both proxies are using the same database for dialog information and we have set the db_mode dialog parameter to 1 (REALTIME - any dialog information changes will be reflected into the database immediately). Instead, what happened is proxy #2 was not aware of the dialog and gave us a 500 Server error occurred message. Here are the log errors:

    /usr/local/sbin/opensips: New request: BYE
    /usr/local/sbin/opensips: The request has TO tag
    /usr/local/sbin/opensips: ***************** cannot match request to a dialog
    /usr/local/sbin/opensips: ***************** in-dialog valid request - <null> !
    /usr/local/sbin/opensips: loose_route() performed, rr headers were decoded
    /usr/local/sbin/opensips: ERROR:core:parse_uri: uri too short: <0> (1)
    /usr/local/sbin/opensips: ERROR:core:parse_sip_msg_uri: bad uri <0>
    /usr/local/sbin/opensips: ERROR:tm:new_t: uri invalid
    /usr/local/sbin/opensips: ERROR:tm:t_newtran: new_t failed
    /usr/local/sbin/opensips: Could not execute t_relay()

    To better understand this issue, we have run the following test:

    UAC sends an INVITE to LB
    LB redirects the call to proxy #1
    Proxy #1 does not write every dialog information to the DB immediately
    Proxy #1 is restarted and the dialog information is now in the DB
    UAC sends the BYE to LB
    LB redirects the BYE to proxy #2
    Now proxy #2 knows everything about this dialog and the call is finished successfully

    Apparently, the dialog module is not saving all dialogs information to the database right away. Could that be the reason why proxy #2 is sending us the "500 Server error" message? How can we work through this?

    Thanks in advance.
    Mariana.

     
  • mariana
    mariana
    2012-02-03

    Please consider the following log messages instead of the ones posted previously:

    /usr/local/sbin/opensips: New request: BYE
    /usr/local/sbin/opensips: The request has TO tag
    /usr/local/sbin/opensips: cannot match request to a dialog
    /usr/local/sbin/opensips: ERROR:dialog:w_validate_dialog: null dialog
    /usr/local/sbin/opensips: in-dialog bogus request
    /usr/local/sbin/opensips: validate_dialog return: -4
    /usr/local/sbin/opensips: loose_route() performed, rr headers were decoded
    /usr/local/sbin/opensips: ERROR:core:parse_uri: uri too short: <0> (1)
    /usr/local/sbin/opensips: ERROR:core:parse_sip_msg_uri: bad uri <0>
    /usr/local/sbin/opensips: ERROR:tm:new_t: uri invalid
    /usr/local/sbin/opensips: ERROR:tm:t_newtran: new_t failed
    /usr/local/sbin/opensips: Could not execute t_relay()

    Thanks.