RE: HTTP over SCTP

2009-04-01 Thread Preethi Natarajan
 

 -Original Message-
 From: Paul Querna [mailto:p...@querna.org] 
 Sent: Tuesday, March 31, 2009 4:54 PM
 To: dev@httpd.apache.org
 Cc: d...@apr.apache.org; Jonathan Leighton; Preethi Natarajan 
 (prenatar)
 Subject: Re: HTTP over SCTP
 
 
 Please post the patches, preferablly against trunk:
 http://httpd.apache.org/dev/patches.html
 
 Once we see the patches we will be in a much better position 
 to give feedback,
 

Paul,

Sometime ago, we were directed to do the same. You can find a report (and
patch) here -- https://issues.apache.org/bugzilla/show_bug.cgi?id=37202.

Breifly, the mods to httpd/APR are:
- new Listen directive to include the transport information (I believe this
piece created some discussion and we didn't arrive at any conclusion).
- changes to configure files to detect sendmsg and recvmsg in the system to
send/recv on specific SCTP streams. 

We would also like to explore the possibility of introducing new send and
recv APIs that can have the SCTP stream ID as another argument -- kind of
wrappers for sctp_sendmsg and sctp_recvmsg. 

Thanks,
Preethi




HTTP over SCTP

2009-03-31 Thread Preethi Natarajan
Hello folks,
 
We are trying to adapt HTTP to work over SCTP streams
(http://tools.ietf.org/html/draft-natarajan-http-over-sctp-01). Since this
proposal was received warmly at the httpbis WG, we are contemplating on a
more formal specification of HTTP over SCTP.
 
The current HTTP over SCTP design exploits SCTP streams to avoid
head-of-line blocking. SCTP also offers other services unavailable in TCP
such as unordered delivery, partially reliable transmission, message based
transfer, multihoming support, more secure connection establishment with a
cookie mechanism and so on. We plan on adapting our design proposal to
leverage some/all of these SCTP services in the future. 
 
We implemented HTTP over SCTP streams in Apache and Firefox. Experiments
show significant improvements to end user performance in networks with high
latency and/or lossy paths. (I can point you to relevant material if you are
interested in knowing more.)
 
We are interested in submitting our code changes to APR and httpd. We'd very
much appreciate guidance from httpd and APR developers on our mods and the
submission process. 
 
Thanks!
Preethi


Re: Apache with SCTP streams.

2005-10-28 Thread Preethi Natarajan

On Tue, 25 Oct 2005, Ruediger Pluem wrote:



As Joe mentioned in its bugzilla comment, these changes must be done to the 
trunk
first. So I would propose the following approach:

1. Provide your httpd part of the patch as a patch against trunk.
2. For the apr part of the patch I would suggest that you check if there is
  a released version of apr which handles your requirements without further 
patches.
  If there is no such released version of apr I guess the next step depends:

If there is a version which should work (provides all features that you 
need) but
actually does not work, I would regard this as a bug that should be fixed 
in this
apr branch. So you should file an apr bug report including the fix patch.

If you find no apr version that contains the features you need, I guess the 
apr
patches should be also done against the trunk. I guess this would also 
require
further discussion on the apr dev list.



I discussed with APR developers list and :
1. I will patch my changes to APR against the main APR trunk.
2. Given that, I will patch changes to httpd against the trunk.

Hope this is fine. Let me know if otherwise,
Preethi


Apache using SCTP streams

2005-10-26 Thread Preethi Natarajan

Hello,

I've been working on this patch to make apr and httpd work with SCTP 
streams.


Stream Control Transmission Protocol (SCTP - RFC2960) is a transport 
layer

protocol capable of providing reliable (in-order, no loss, no duplicates,
 no error) message oriented service to application.
Other interesting features of SCTP include multistreaming (many logical 
pipes
in 1 SCTP association to transfer independent data like web objects 
without
head of line blocking problem) and multihoming (ability to support more 
than

1 interface/IP address at a SCTP endpoint).

The idea was to enable httpd to receive HTTP request on a particular SCTP 
stream
and send the HTTP response on the same stream. Using different SCTP 
streams
for independent objects might improve performance (preventing HOL as 
mentioned

above).

To give an outline of the implementation with the files involved:

o I created apr_socket_send_sctp and apr_socket_recv_sctp which take an 
extra

parameter - SCTP stream id. The recv function uses recvmsg function call
and gets the SCTP stream id on which the request came in. Similarly, 
sendmsg

call is used in apr_socket_send_sctp (sendrecv.c in network_io/unix).
o I didnt want to change the signature of any other function so I decided 
to

use buckets to pass the stream id info to and fro. The socket bucket read
puts the stream id (from recv) in a heap bucket and the caller takes
the responsibility of retrieving this. (apr_buckets_socket.c, 
apr_brigade.c,

core_input_filter - core.c).
o core_input_filter stores the stream id in a field in the core_net_rec,
which is used by core_output_filter while sending response.
o Also, I changed Listen directive to take the transport layer protocol
as an extra argument so that web admin can choose SCTP or TCP.

Currently, I have this patch working for httpd-2.0.55/apr-0.9.6.

Would appreciate any feedback,
Preethi



Apache with SCTP streams.

2005-10-25 Thread Preethi Natarajan

Hello,

I've been working on this patch to make apr and httpd work with SCTP streams.

Stream Control Transmission Protocol (SCTP - RFC2960) is a transport layer
protocol capable of providing reliable (in-order, no loss, no duplicates,
 no error) message oriented service to application.
Other interesting features of SCTP include multistreaming (many logical pipes
in 1 SCTP association to transfer independent data like web objects without
head of line blocking problem) and multihoming (ability to support more than
1 interface/IP address at a SCTP endpoint).

The idea was to enable httpd to receive HTTP request on a particular SCTP 
stream and send the HTTP response on the same stream. Using different SCTP 
streams for independent objects might improve performance (preventing HOL 
as mentioned above).


apr-0.9.2 included recognition and support for SCTP from Randall Stewart.
I did my changes on top of this.

To give an outline of the implementation with the files involved:

APR:

o I created apr_socket_send_sctp and apr_socket_recv_sctp which take an 
extra parameter - SCTP stream id. The recv function uses recvmsg function 
call and gets the SCTP stream id on which the request came in. Similarly, 
sendmsg call is used in apr_socket_send_sctp (sendrecv.c in 
network_io/unix).
o I didnt want to change the signature of any other 
function so I decided to use buckets to pass the stream id info to and 
fro. The socket bucket read puts the stream id (from socket recv) in a 
heap bucket and the caller takes the responsibility of retrieving this. 
(apr_buckets_socket.c, apr_brigade.c).


HTTPD:

o core_input_filter retrieves and stores the stream id in a field in the 
core_net_rec, which is used by core_output_filter-APR while sending 
response.

o Also, I changed Listen directive to take the transport layer protocol
as an extra argument so that web admin can choose SCTP or TCP.

Currently, I have this patch working for httpd-2.0.55/apr-0.9.6.

Would appreciate any feedback,
Preethi

PS: Should I send this mail to apr dev mailing list as well or will that 
be spamming?