Author: jesus
Date: Wed Aug 31 02:49:26 2011
New Revision: 1163474

URL: http://svn.apache.org/viewvc?rev=1163474&view=rev
Log:
TS-940

Allow for a proxy.config.http.server_tcp_init_cwnd setting in records.config.
If this is present and the operating system supports it (Solaris 10+ in a
global zone currently), then it will be altered for all inbound connections
from the UA.

Modified:
    trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc
    trafficserver/traffic/trunk/mgmt/RecordsConfig.cc
    trafficserver/traffic/trunk/proxy/http/HttpConfig.cc
    trafficserver/traffic/trunk/proxy/http/HttpConfig.h

Modified: trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc
URL: 
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc?rev=1163474&r1=1163473&r2=1163474&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc (original)
+++ trafficserver/traffic/trunk/iocore/net/UnixNetProcessor.cc Wed Aug 31 
02:49:26 2011
@@ -175,6 +175,16 @@ UnixNetProcessor::accept_internal(
     setsockopt(na->server.fd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &accept_timeout, 
sizeof(int));
   }
 #endif
+#ifdef TCP_INIT_CWND
+ int tcp_init_cwnd = 0;
+ IOCORE_ReadConfigInteger(tcp_init_cwnd, 
"proxy.config.http.server_tcp_init_cwnd");
+ if(tcp_init_cwnd > 0) {
+    Debug("net", "Setting initial congestion window to %d", tcp_init_cwnd);
+    if(setsockopt(na->server.fd, IPPROTO_TCP, TCP_INIT_CWND, &tcp_init_cwnd, 
sizeof(int)) != 0) {
+      Error("Cannot set initial congestion window to %d", tcp_init_cwnd);
+    }
+ }
+#endif
   return na->action_;
 }
 

Modified: trafficserver/traffic/trunk/mgmt/RecordsConfig.cc
URL: 
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/mgmt/RecordsConfig.cc?rev=1163474&r1=1163473&r2=1163474&view=diff
==============================================================================
--- trafficserver/traffic/trunk/mgmt/RecordsConfig.cc (original)
+++ trafficserver/traffic/trunk/mgmt/RecordsConfig.cc Wed Aug 31 02:49:26 2011
@@ -487,6 +487,8 @@ RecordElement RecordsConfig[] = {
   ,
   {RECT_CONFIG, "proxy.config.http.server_max_connections", RECD_INT, "0", 
RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
   ,
+  {RECT_CONFIG, "proxy.config.http.server_tcp_init_cwnd", RECD_INT, "0", 
RECU_DYNAMIC, RR_NULL, RECC_STR, "[0-16]", RECA_NULL}
+  ,
   {RECT_CONFIG, "proxy.config.http.origin_max_connections", RECD_INT, "0", 
RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
   ,
   {RECT_CONFIG, "proxy.config.http.origin_min_keep_alive_connections", 
RECD_INT, "0", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}

Modified: trafficserver/traffic/trunk/proxy/http/HttpConfig.cc
URL: 
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http/HttpConfig.cc?rev=1163474&r1=1163473&r2=1163474&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http/HttpConfig.cc (original)
+++ trafficserver/traffic/trunk/proxy/http/HttpConfig.cc Wed Aug 31 02:49:26 
2011
@@ -1146,6 +1146,7 @@ HttpConfig::startup()
   }
 
   HttpEstablishStaticConfigLongLong(c.server_max_connections, 
"proxy.config.http.server_max_connections");
+  HttpEstablishStaticConfigLongLong(c.server_tcp_init_cwnd, 
"proxy.config.http.server_tcp_init_cwnd");
   HttpEstablishStaticConfigLongLong(c.oride.origin_max_connections, 
"proxy.config.http.origin_max_connections");
   HttpEstablishStaticConfigLongLong(c.origin_min_keep_alive_connections, 
"proxy.config.http.origin_min_keep_alive_connections");
 
@@ -1426,6 +1427,7 @@ HttpConfig::reconfigure()
   params->disable_ssl_parenting = INT_TO_BOOL(m_master.disable_ssl_parenting);
 
   params->server_max_connections = m_master.server_max_connections;
+  params->server_tcp_init_cwnd = m_master.server_tcp_init_cwnd;
   params->oride.origin_max_connections = m_master.oride.origin_max_connections;
   params->origin_min_keep_alive_connections = 
m_master.origin_min_keep_alive_connections;
 
@@ -1616,6 +1618,7 @@ HttpConfig::reconfigure()
 #undef INT_TO_BOOL
 
 // Redirection debug statements
+  Debug("http_init", "proxy.config.http.server_tcp_init_cwnd = %d", 
params->server_tcp_init_cwnd);
   Debug("http_init", "proxy.config.http.redirection_enabled = %d", 
params->redirection_enabled);
   Debug("http_init", "proxy.config.http.number_of_redirections = %d", 
params->number_of_redirections);
 

Modified: trafficserver/traffic/trunk/proxy/http/HttpConfig.h
URL: 
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http/HttpConfig.h?rev=1163474&r1=1163473&r2=1163474&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http/HttpConfig.h (original)
+++ trafficserver/traffic/trunk/proxy/http/HttpConfig.h Wed Aug 31 02:49:26 2011
@@ -603,6 +603,7 @@ public:
   char *outgoing_ip_to_bind;
 
   MgmtInt server_max_connections;
+  MgmtInt server_tcp_init_cwnd;
   MgmtInt origin_min_keep_alive_connections; // TODO: This one really ought to 
be overridable, but difficult right now.
 
   MgmtByte parent_proxy_routing_enable;
@@ -899,6 +900,7 @@ HttpConfigParams::HttpConfigParams()
     incoming_ip_to_bind_saddr(0),
     outgoing_ip_to_bind(0),
     server_max_connections(0),
+    server_tcp_init_cwnd(0),
     origin_min_keep_alive_connections(0),
     parent_proxy_routing_enable(0),
     disable_ssl_parenting(0),


Reply via email to