I have a situation where an SBC is handling non symmetric signalling on REGISTER process. (1) The UAC sends REGISTER with Expires=600 to SBC and then SBC sends it to real Registrar. (2) The Real Registrar rejects the REGISTER with a 423 Interval too brief and sends back a Min-Expires=1800, SBC forwards the 423 Response back to UAC with Min-Expires=1800. (3) The UAC re-sends the REGISTER with Expires=1800 to SBC and this to real Registrar. (4) The real Registrar sends back 200OK with expires=1800 to SBC (5) SBC forwards the 200OK to the UAC but changes the expires=600 (6) UAC gets registered.
What value the UAC should use in Expires header on the next REGSITER refresh? UAC1 behaves like this: It is clear SBC wants the access side to refresh the Contact bind before 600 seconds, so the UAC will send the next REGISTER let's say in 300 seconds (half the indicated expires time) to refresh the Contact binding, but since the registrar indicated the Min-Expires allowed is 1800, the Expires header should be send as 1800. SBC will not forward this REGSITER to the real registrar and answers 200OK back to the UAC. Only when elapsed time from first REGISTER reaches 1500 seconds then the SBC will forward the REGSITER to real registrar to refresh the Contact binding on the core side UAC2 behaves like this: UAC2 sends next REGISTER also in the next 300 seconds to refresh the Contact binding, but it sets the Expires=600 as received in 200OK from previous REGISTER. The SBC considers the UAC did not receive the 423 Response or reinitiated because is not using the Min-Expires time and forwards the REGSITER to real Register which in turn obviously answers again with 423 Interval too brief and the initial REGSITER sequence repeats for ever, having a 423 response every Register. What can be done to avoid the overhead signaling of 423 responses all the time? Thank you / Juan _______________________________________________ Sip-implementors mailing list [email protected] https://lists.cs.columbia.edu/mailman/listinfo/sip-implementors
