{"id":852,"date":"2022-11-04T16:03:20","date_gmt":"2022-11-04T08:03:20","guid":{"rendered":"https:\/\/www.myvoipapp.com\/blog\/?p=852"},"modified":"2022-11-04T17:16:27","modified_gmt":"2022-11-04T09:16:27","slug":"reliability-of-provisional-responses","status":"publish","type":"post","link":"https:\/\/www.myvoipapp.com\/blog\/2022\/11\/04\/reliability-of-provisional-responses\/","title":{"rendered":"Reliability of Provisional Responses"},"content":{"rendered":"\n<p>As we know, <a rel=\"noreferrer noopener\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc3262.html\" target=\"_blank\">RFC3262<\/a> defines SIP reliability of provisional responses. It is an old feature and miniSIPServer ( both local versions and cloud versions) can support it for a long time. When working with traditional telcom carriers, this feature is mandatory, that means carriers will reject all incoming calls if they cannot support reliability of provisional responses.<\/p>\n\n\n\n<p>RFC3262 defines a &#8220;100rel&#8221; parameter to indicate reliability of provisional responses, so we call it &#8220;100rel&#8221; capability. In normal, when invoking a call, the caller should make itself clearly that it can support &#8220;100rel&#8221; capability, and of course, the callee side should also make itself clearly that it <strong>requires<\/strong> to use &#8220;100rel&#8221; capability. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/normal.png\"><img loading=\"lazy\" decoding=\"async\" width=\"575\" height=\"535\" src=\"https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/normal.png\" alt=\"Basic call flow with 100rel\" class=\"wp-image-853\" srcset=\"https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/normal.png 575w, https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/normal-300x279.png 300w, https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/normal-290x270.png 290w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><\/a><figcaption class=\"wp-element-caption\">Basic call flow with 100rel<\/figcaption><\/figure>\n<\/div>\n\n\n<p>In the RFC3262, we can get following details:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>&#8230;&#8230; the initial request contained a Supported or Require header field listing 100rel, and that there is a provisional response to be sent reliably. &#8230;&#8230; <\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>UAS core \u2026 MUST contain a Require header field containing the option tag 100rel, and MUST include an RSeq header field.<\/p>\n<\/blockquote>\n\n\n\n<p>Then both sides can establish reliability of provisional responses. Above figure describes the basic call flow. When UAC receives a 18x message which is a provisional response, UAC should send a PRACK message back to tell UAS that UAC has received its 18x message. <\/p>\n\n\n\n<p>This is not a complex call procedure. We thought it wasn&#8217;t until several days ago. One of our cloud miniSIPServer customers reported he cannot make calls out. Then we traced his calls and get following call flow described below.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/405.png\"><img loading=\"lazy\" decoding=\"async\" width=\"580\" height=\"448\" src=\"https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/405.png\" alt=\"405 error in a 100rel procedure\" class=\"wp-image-857\" srcset=\"https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/405.png 580w, https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/405-300x232.png 300w, https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/405-350x270.png 350w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><figcaption class=\"wp-element-caption\">405 error in a 100rel procedure<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Unbelievable &#8230;&#8230; this voip provider requires &#8220;100rel&#8221; in its 183 messages, but once miniSIPServer sends PRACK messages to confirm that, it returns &#8220;405 method not allowed&#8221; to reject them, and it causes every call failed.<\/p>\n\n\n\n<p>Why?! If it cannot accept or support PRACK messages, why does it <strong>require <\/strong>&#8220;100rel&#8221; in its provisional responses?<\/p>\n\n\n\n<p>It is quite easy to fix that. Just remove its &#8220;require 100rel&#8221; from 18x messages, miniSIPServer will not send PRACK messages back. But unfortunately, the team of this voip provider doesn&#8217;t know how to do that. <\/p>\n\n\n\n<p>Our customer is blocked and his service has to be stopped. In another way, I personally think some VoIP providers use public open source servers, such as Asterisk, FreeSwitch, and so on, to build their solutions, maybe they don&#8217;t have enough experts to understand what they built.<\/p>\n\n\n\n<p>So we update miniSIPServer to add an option in external lines configuration to disable reliability of provisional responses. Please refer to the figure below.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/extLine.png\"><img loading=\"lazy\" decoding=\"async\" width=\"957\" height=\"305\" src=\"https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/extLine.png\" alt=\"Disable 100rel capability\" class=\"wp-image-858\" srcset=\"https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/extLine.png 957w, https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/extLine-300x96.png 300w, https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/extLine-768x245.png 768w, https:\/\/www.myvoipapp.com\/blog\/wp-content\/uploads\/2022\/11\/extLine-604x192.png 604w\" sizes=\"auto, (max-width: 957px) 100vw, 957px\" \/><\/a><figcaption class=\"wp-element-caption\">disable reliability of provisional responses<\/figcaption><\/figure>\n<\/div>\n\n\n<p>If you check this item,  the INVITE messages sent from miniSIPServer will not have &#8220;support 100rel&#8221; parameter. Once you meet such a ridiculous VoIP provider, you can try this.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As we know, RFC3262 defines SIP reliability of provisional responses. It is an old feature and miniSIPServer ( both local versions and cloud versions) can support it for a long time. When working with traditional telcom carriers, this feature is mandatory, that means carriers will reject all incoming calls if they cannot support reliability of provisional responses. RFC3262 defines a &#8220;100rel&#8221; parameter to indicate reliability of provisional responses, so we call it &#8220;100rel&#8221; capability. In normal, when invoking a call,&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.myvoipapp.com\/blog\/2022\/11\/04\/reliability-of-provisional-responses\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35,34,137],"tags":[220,337,338,222,221,10],"class_list":["post-852","post","type-post","status-publish","format-standard","hentry","category-minisipserver","category-minisipserver_cloud","category-tech-documents","tag-100rel","tag-337","tag-338","tag-ims","tag-prack","tag-voip"],"_links":{"self":[{"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/posts\/852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/comments?post=852"}],"version-history":[{"count":6,"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/posts\/852\/revisions"}],"predecessor-version":[{"id":861,"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/posts\/852\/revisions\/861"}],"wp:attachment":[{"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/media?parent=852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/categories?post=852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.myvoipapp.com\/blog\/wp-json\/wp\/v2\/tags?post=852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}