|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: Zero-copy TCP stacks (Was: Avoiding deadlock in iSCSI)I don't know how relevant this thread is. I assume that most DMA mechanism will not have any trouble starting at any boundary but will have trouble crossing page boundaries in system that use some form of mapping for either protection or virtual memory or both. Those have good scather-gather mechanisms might work in those cases too. Julo Stephen Byan <Stephen.Byan@quantum.com> on 18/09/2000 19:44:46 Please respond to Stephen Byan <Stephen.Byan@quantum.com> To: ips@ece.cmu.edu cc: (bcc: Julian Satran/Haifa/IBM) Subject: RE: Zero-copy TCP stacks (Was: Avoiding deadlock in iSCSI) I may be merely increasing the noise floor; if so, I beg forgiveness in advance... Randall R. Stewart [mailto:randall@stewart.chicago.il.us] wrote: > Prasenjit Sarkar/Almaden/IBM wrote: > > BTW, zero-copy TCP/IP stacks have a lot of caveats (e.g. > memory alignment > > etc) which > > is why they have never made it to any operating system. > There are rough > > implementations > > in Solaris, BSD and Linux but none of them are particularly > close to being > > robust > > (I have tried them all). > > Prasenjit: > > I have used a zero-copy TCP/IP stack (if I recall correctly) > in VxWorks > or was it VRTX... I will grant you these are NOT *NiX systems and > are just recently beginning to become PosiX compliant... but I > seem to remember the zero-copy symenatics and I don't think there > was a memory alignment requriement.. it has been a while so I > may be mis-remembering.. :) I'm no TCP expert, but I think the difference between Randall's experience and Prasenjit's experience relates to the extent of the memory protection and security guarantees offered by the operating system. Embedded OS's such as VxWorks and VRTX do not provide separate memory address spaces for each task (aka process). Consequently there's no security problem in handing a pointer to an arbitrary memory buffer to a task - it can already see all of memory anyway. "Real OS's (TM)" do provide separate memory address spaces for each process (aka task). Consequently there is a security problem in handing a pointer to an arbitrary memory buffer to a task - the process could potentially view packets which happen to share the same memory page but which belong to other processes. To solve this problem, the TCP buffers must be aligned to a page boundary, and at most one buffer can be allocated per page. Regards, -Steve P.S. to the TCP experts - did I get this right? Steve Byan <stephen.byan@quantum.com> Design Engineer MS 1-3/E23 333 South Street Shrewsbury, MA 01545 (508)770-3414 fax: (508)770-2604
Home Last updated: Tue Sep 04 01:07:02 2001 6315 messages in chronological order |