1 / 15

Non-INVITE Transaction Issues

Non-INVITE Transaction Issues. Robert Sparks dynamicsoft. The Race Condition. UAS. UAC. Request. 64*T1. 64*T1. Response. Timeout. The Race Condition. UAS. UAC. Request. UAS believes it responded in time UAC and UAS have different ideas of the result of the transaction

rue
Download Presentation

Non-INVITE Transaction Issues

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Non-INVITE Transaction Issues Robert Sparks dynamicsoft

  2. The Race Condition UAS UAC Request 64*T1 64*T1 Response Timeout

  3. The Race Condition UAS UAC Request • UAS believes it responded in time • UAC and UAS have different ideas of the result of the transaction • UAS has no way to know how much its transaction has been offset from the UAC • Each proxy makes the race easier to lose 64*T1 64*T1 Response Timeout RESULT: UAS Non-INVITE transactions must complete immediately!

  4. 408 is Not Useful UAS UAC Request 64*T1 64*T1 Timeout 408 Request Timeout

  5. 408 is Not Useful Proxy Proxy Proxy UAS UAC Request Request Request Request 64*T1 64*T1 408 408 408 408 408 408 408 408 408 408

  6. 408 is Not Useful Proxy Proxy Proxy UAS UAC Request Request Request Request 64*T1 64*T1 200 408 408 200 408 200 200

  7. Non-INVITE Timeouts Doom Forking Proxies Proxy Proxy UAS1 UAS2 UAC Request 415 64*T1 408 415 415 UAS2’s failure to respond forces both proxies to lose the race

  8. Failure to Respond Gets You Blacklisted • RFC 3263 discusses moving to next SRV on a no-response timeout (or explicit transport failure) • Non-INVITE can’t use next SRV on this request – transaction is already over • If failure isn’t cached (address temporarily blacklisted), next request is doomed to the same failure.

  9. Non-INVITE Provisional Responses • Arguments for Banning • Wasteful since transaction must complete immediately • (Early) provisionals harm recovery from lost final responses • Arguments Against • No response causes blacklisting • Losing the race is the same as not responding at all Should they be banned?

  10. Proposals • Proposal A • Make minor changes to use of current Non-INVITE transaction • Proposal B • Reform the Non-INVITE transaction to allow it to pend indefinitely

  11. Proposal A • Disallow non-100 provisionals • Disallow 100 Trying before Timer E reaches T2 • Encourage 100 Trying if no final response after Timer E reaches T2 • Disallow 408 to non-INVITE requests • Absorb late non-INVITE responses

  12. Proposal A • Disallow non-100 provisionals • Disallow 100 Trying before Timer E reaches T2 • Encourage 100 Trying if no final response after Timer E reaches T2 • Prevents blacklisting • Doesn’t harm lost final response recovery • Doesn’t allow reliable provisional responses

  13. Proposal A • Disallow 408 to non-INVITE requests • Currently they waste network • Absorb late non-INVITE responses • Don’t statelessly forward after the transaction times out

  14. Proposal B • Allow Non-INVITEs to pend (no timer F) • Allow CANCEL • ACK is not needed • Backwards safe

  15. Contrast • Proposal A • Removes waste from the network • Improves recovery from a failed node • UAS NI transactions still have to complete immediately or risk losing the race • Does not address proxy doom • Proposal B • 408s become useful again • Relieves proxies from timeout doom • Still need to address harmful provisionals for UDP • Either deprecate UDP or take Proposal A 1-3

More Related