Hi George,

There are advantages and disadvantages for each protocol you use:

UDP is much lighter as protocol for the OS (100K UDP end points -> only one socket, 100K TCP end points -> 100K sockets) and also for the application (OpenSIPS) - managing TCP connection is more resource intensive rather than UDP sockets

UDP also have some advantages as it a framed protocol - a SIP packages and delimited at protocol level (in a single datagram), while in TCP, where everything is streamed, the reading application cannot "see" at transport level where a SIP package end and a new one starts - it has to do SIP parsing just to figure out where it ends.

Nevertheless, TCP has better NAT penetration (as it is connection oriented) - this is why all mobile devices do prefer TCP over UDP. Also UDP has problems when comes to size, as it is limited to 65K (not to mention poor UDP fragmentation on several stacks) - again, TCP solves this problem as it is stream oriented.

Best regards,

Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 12.09.2014 17:13, george wu wrote:
I am not sure if I should start another thread or not.
I have similar question.
The client is android linphone. it says it needs to send keep-alive message for firewall traversal. For tcp it only needs to send every 10 minutes while for udp it needs to send every 10 seconds.
It is obviously tcp is much better for the clients.
However from thread here, it is better to use udp.

Now can anybody give me some clue how to do tradeoff between tcp and udp.
Thanks.

George





At 2014-09-12 09:38:04, "Bogdan-Andrei Iancu" <[email protected]> wrote:

    Hi Jayesh,

    There are 2 aspects here :
        - first, configure proper limits when starting OpenSIPS - like
    max number of fds per process, etc.
        - secondly, when comes to opensips itself, you need to look into :
            * enough memory (TCP uses a lot)
            * set proper timeouts in TCP (connect, write, read
    timeouts) to avoid blocking
            * properly handle the TCP lifetime to get to a compromise
    between the number of ongoing connections and seting/closing
    connections
            * really good control over when OpenSIPS should open new
    TCP conns - you can do this from script, depending on the target
    (like never try to open conns towards end-user, let them connect
    to you).

    Regards,

    Bogdan-Andrei Iancu
    OpenSIPS Founder and Developer
    http://www.opensips-solutions.com

    On 10.09.2014 14:55, Jayesh Nambiar wrote:
    Hello,
    I am in process of designing opensips which can handle a million
    users, hypothetically 200,000 registrations and 500CPS capacity.
    I've been reading a lot and learnt that TCP design is blocking
    and not suitable for huge volumes.
    My requirement was to have TLS between endpoints and Opensips and
    hence riding over TCP is the only option. I needed some expert
    suggestions on what things should be taken care of when planning
    a large deployment over TCP.
    I have built similar stuff on UDP and I trust it heavily as it
    has performed perfectly as expected. But when it comes to TCP I'm
    a bit clueless.
    I've read about lot of global parameters that is now available
    for asynchrous tcp operations. Is it really helpful when planning
    for scalable environments??

    Thanks for any suggestions !!

    W/regards,
    Jayesh


    _______________________________________________
    Users mailing list
    [email protected]
    http://lists.opensips.org/cgi-bin/mailman/listinfo/users





_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to