REG::Zero Window in opensips 1.11.5

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

REG::Zero Window in opensips 1.11.5

Ravitez Ravi

Hi All,

                Good Day,

                I’m using opensips V1.11.5-TLS and facing a problem with Zero Window.

                Here’s the scenario :

                                                                NOTIFY

Opensips client ---------------------------à App server

                                                200 OK

Opensips          ß---------------------------- App Server

 

Now lets assume this

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                200 OK|200 ok | 200 ok | 200 ok

Opensips          ß---------------------------- App Server

 

Assuming the size of response if 5000 bytes.

tcp_main detects data in the buffer and passes on to the child process to read the data from the buffer,

child(buffer size 65535 ) now reads the data from the socket

tcp_read_req()

-          tcp_read_headers()

-          Loops until all the sip messages are extracted and forwarded/processed

-          Releases the connection to tcp_main

 

Tcp_main attaches  to IO

 

During the timer interval where  system reads the data from the socket and process  the data there would be new data pipelined in the socket, this gradually  results in Zero window L

Would like to know if there’s a way to process the next available data on the socket once its been read.Thank you for your time J



Regards,

Ravitez.D


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: REG::Zero Window in opensips 1.11.5

Liviu Chircu

Hi Ravi,

The TCP/TLS code is not optimized to dispatch/parallelize the SIP messages read by a single worker on a heavily reused TCP connection. They will be processed serially, one at a time (possibly not by the same TCP worker, but that's irrelevant). However, SIP message processing in OpenSIPS is super fast and your TCP read buffers should never get filled up, unless maybe your kernel buffer sizes are too low. See this tutorial [1] for some tuning tips.

On a different note, the more blocking ops you do in your script, the more chances for your box to start advertising TCP zero window to the  app server. If that's your case, then your best bet is to move to a 2.2+ OpenSIPS, and make those statements asynchronous.

[1]: https://www.cyberciti.biz/faq/linux-tcp-tuning/

Liviu Chircu
OpenSIPS Developer
http://www.opensips-solutions.com
On 09.06.2017 07:00, Ravitez Ravi wrote:

Hi All,

                Good Day,

                I’m using opensips V1.11.5-TLS and facing a problem with Zero Window.

                Here’s the scenario :

                                                                NOTIFY

Opensips client ---------------------------à App server

                                                200 OK

Opensips          ß---------------------------- App Server

 

Now lets assume this

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                200 OK|200 ok | 200 ok | 200 ok

Opensips          ß---------------------------- App Server

 

Assuming the size of response if 5000 bytes.

tcp_main detects data in the buffer and passes on to the child process to read the data from the buffer,

child(buffer size 65535 ) now reads the data from the socket

tcp_read_req()

-          tcp_read_headers()

-          Loops until all the sip messages are extracted and forwarded/processed

-          Releases the connection to tcp_main

 

Tcp_main attaches  to IO

 

During the timer interval where  system reads the data from the socket and process  the data there would be new data pipelined in the socket, this gradually  results in Zero window L

Would like to know if there’s a way to process the next available data on the socket once its been read.Thank you for your time J



Regards,

Ravitez.D



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


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: REG::Zero Window in opensips 1.11.5

Ravitez Ravi
Hello Liviu,
Good Day,
Thank you, Tuning the window size worked :)

Regards,
Ravitez.D

On Fri, Jun 9, 2017 at 4:45 AM, Liviu Chircu <[hidden email]> wrote:

Hi Ravi,

The TCP/TLS code is not optimized to dispatch/parallelize the SIP messages read by a single worker on a heavily reused TCP connection. They will be processed serially, one at a time (possibly not by the same TCP worker, but that's irrelevant). However, SIP message processing in OpenSIPS is super fast and your TCP read buffers should never get filled up, unless maybe your kernel buffer sizes are too low. See this tutorial [1] for some tuning tips.

On a different note, the more blocking ops you do in your script, the more chances for your box to start advertising TCP zero window to the  app server. If that's your case, then your best bet is to move to a 2.2+ OpenSIPS, and make those statements asynchronous.

[1]: https://www.cyberciti.biz/faq/linux-tcp-tuning/

Liviu Chircu
OpenSIPS Developer
http://www.opensips-solutions.com
On 09.06.2017 07:00, Ravitez Ravi wrote:

Hi All,

                Good Day,

                I’m using opensips V1.11.5-TLS and facing a problem with Zero Window.

                Here’s the scenario :

                                                                NOTIFY

Opensips client ---------------------------à App server

                                                200 OK

Opensips          ß---------------------------- App Server

 

Now lets assume this

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                                NOTIFY

Opensips client ---------------------------à App server

                                200 OK|200 ok | 200 ok | 200 ok

Opensips          ß---------------------------- App Server

 

Assuming the size of response if 5000 bytes.

tcp_main detects data in the buffer and passes on to the child process to read the data from the buffer,

child(buffer size 65535 ) now reads the data from the socket

tcp_read_req()

-          tcp_read_headers()

-          Loops until all the sip messages are extracted and forwarded/processed

-          Releases the connection to tcp_main

 

Tcp_main attaches  to IO

 

During the timer interval where  system reads the data from the socket and process  the data there would be new data pipelined in the socket, this gradually  results in Zero window L

Would like to know if there’s a way to process the next available data on the socket once its been read.Thank you for your time J



Regards,

Ravitez.D



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


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



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