<div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">&gt; That&#39;s not necessarily a given.<br>

&gt;<br>&gt; In general though because the TCP connection explicitly signals the<br>&gt; connection closing the mapping will stay in the firewall. With UDP it is<br>&gt; removed after a long period of inactivity. That can cause problems with<br>

&gt; signalling during a phone call unless the endpoints send keepalive packets<br>&gt; often enough.<br>&gt;<br>&gt; TLS will prevent the router helping with SIP ALG - you must have endpoints<br>&gt; capable of doing NAT traversal themselves (STUN). Though that&#39;s a good idea<br>

&gt; in all cases anyway.<br><span style="font-family:arial,sans-serif;font-size:13px">  In my experience with a fairly large network and a number of<br></span><span style="font-family:arial,sans-serif;font-size:13px">endpoints TCP fragmentation is *much* more reliable than UDP<br>

</span><span style="font-family:arial,sans-serif;font-size:13px">fragmentation.  Various stateful firewalls also handle TCP much better<br></span><span style="font-family:arial,sans-serif;font-size:13px">(connection oriented and used by most applications people care about -<br>

</span><span style="font-family:arial,sans-serif;font-size:13px">more testing, etc).  Your points about keepalives and TLS are spot on<br></span><span style="font-family:arial,sans-serif;font-size:13px">although many devices don&#39;t have the &quot;luxury&quot; of keepalives due to<br>

</span><span style="font-family:arial,sans-serif;font-size:13px">issues with battery power.</span></blockquote><div><br></div><div><span style="font-family:arial,sans-serif;font-size:13px">For archival purposes (I suspect you know this)...</span></div>

<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">It solves the signalling issues, but the reason I said &quot;not a given&quot; is that the RTP stream is still UDP. That means a call on hold can still lose the port mapping. You still have the signalling, but that isn&#39;t much use without the audio. </span><span style="font-family:arial,sans-serif;font-size:13px">You still need to obtain the correct ip:port for the SDP to setup the RTP - </span><span style="font-family:arial,sans-serif;font-size:13px">STUN or SIP ALG, and RTP auto-adjust as a workaround for bad addresses in some cases. SIP/TCP solves some of the issues, but not all.</span></div>

<div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 20 September 2013 15:11, Kristian Kielhofner <span dir="ltr">&lt;<a href="mailto:kris@kriskinc.com" target="_blank">kris@kriskinc.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Fri, Sep 20, 2013 at 9:49 AM, Steven Ayre &lt;<a href="mailto:steveayre@gmail.com">steveayre@gmail.com</a>&gt; wrote:<br>


&gt; Because SIP over UDP doesn&#39;t play well with fragmentation. SDP can make<br>
&gt; packets large than the PMTU, leading to fragmented packets, which leads to<br>
&gt; devices ignoring the packet. Removing the unnecessary rtpmap lines means<br>
&gt; smaller SDP so smaller packet so less likelihood of that being an issue.<br>
&gt;<br>
&gt; It shouldn&#39;t be such an issue over TCP.<br>
&gt;<br>
&gt; Devices *should* support it since the standard explicitly say the rtpmap<br>
&gt; isn&#39;t required for static types, but there are some manufacturers who<br>
&gt; ignored that part so there&#39;s the verbose_sdp=true compatibility option for<br>
&gt; them.<br>
<br>
</div>  I&#39;m guessing you didn&#39;t read the post first :).  My questions here<br>
were somewhat rhetorical and certainly not posed by me (seeing as I go<br>
into the same kind of detail you have).  If you included it for list<br>
archival purposes, excellent!<br>
<div class="im"><br>
&gt; That&#39;s not necessarily a given.<br>
&gt;<br>
&gt; In general though because the TCP connection explicitly signals the<br>
&gt; connection closing the mapping will stay in the firewall. With UDP it is<br>
&gt; removed after a long period of inactivity. That can cause problems with<br>
&gt; signalling during a phone call unless the endpoints send keepalive packets<br>
&gt; often enough.<br>
&gt;<br>
&gt; TLS will prevent the router helping with SIP ALG - you must have endpoints<br>
&gt; capable of doing NAT traversal themselves (STUN). Though that&#39;s a good idea<br>
&gt; in all cases anyway.<br>
<br>
</div>  In my experience with a fairly large network and a number of<br>
endpoints TCP fragmentation is *much* more reliable than UDP<br>
fragmentation.  Various stateful firewalls also handle TCP much better<br>
(connection oriented and used by most applications people care about -<br>
more testing, etc).  Your points about keepalives and TLS are spot on<br>
although many devices don&#39;t have the &quot;luxury&quot; of keepalives due to<br>
issues with battery power.<br>
<div class="im"><br>
&gt;&gt; Maybe support deflate encoding?<br>
&gt;<br>
&gt;<br>
&gt; That wouldn&#39;t automatically work. It would need support by both ends and<br>
&gt; protocol changes to support it.<br>
<br>
</div>  I&#39;d hope by now you realize that I understand that - which is why<br>
I&#39;ve raised this point simultaneously on the FreeSWITCH, Kamailio,<br>
Asterisk, and Wireshark mailing lists.  I&#39;m hoping to builder broader<br>
support for these kinds of &quot;standard&quot; features within the open source<br>
ecosystem.<br>
<div class="HOEnZb"><div class="h5"><br>
--<br>
Kristian Kielhofner<br>
<br>
_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
FreeSWITCH-powered IP PBX: The CudaTel Communication Server<br>
<a href="http://www.cudatel.com" target="_blank">http://www.cudatel.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://wiki.freeswitch.org" target="_blank">http://wiki.freeswitch.org</a><br>
<a href="http://www.cluecon.com" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
</div></div></blockquote></div><br></div>