<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
>

  <channel rdf:about="http://lwn.net/headlines/169961/">
    <title>LWN: Comments on "Van Jacobson's network channels"</title>
    <link>http://lwn.net/Articles/169961/</link>
    <description>
This is a special feed containing comments posted
to the individual LWN article titled &quot;Van Jacobson's network channels&quot;.

    </description>

    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>2</syn:updateFrequency>
    <items>
      <rdf:Seq>
	<rdf:li resource="http://lwn.net/Articles/171598/rss" />
	<rdf:li resource="http://lwn.net/Articles/171255/rss" />
	<rdf:li resource="http://lwn.net/Articles/171074/rss" />
	<rdf:li resource="http://lwn.net/Articles/171046/rss" />
	<rdf:li resource="http://lwn.net/Articles/171045/rss" />
	<rdf:li resource="http://lwn.net/Articles/170962/rss" />
	<rdf:li resource="http://lwn.net/Articles/170677/rss" />
	<rdf:li resource="http://lwn.net/Articles/170668/rss" />
	<rdf:li resource="http://lwn.net/Articles/170599/rss" />
	<rdf:li resource="http://lwn.net/Articles/170596/rss" />
	<rdf:li resource="http://lwn.net/Articles/170471/rss" />
	<rdf:li resource="http://lwn.net/Articles/170469/rss" />
	<rdf:li resource="http://lwn.net/Articles/170432/rss" />
	<rdf:li resource="http://lwn.net/Articles/170431/rss" />
	<rdf:li resource="http://lwn.net/Articles/170406/rss" />
	<rdf:li resource="http://lwn.net/Articles/170401/rss" />
	<rdf:li resource="http://lwn.net/Articles/170385/rss" />
	<rdf:li resource="http://lwn.net/Articles/170318/rss" />
	<rdf:li resource="http://lwn.net/Articles/170316/rss" />
	<rdf:li resource="http://lwn.net/Articles/170291/rss" />
	<rdf:li resource="http://lwn.net/Articles/170285/rss" />
	<rdf:li resource="http://lwn.net/Articles/170272/rss" />
	<rdf:li resource="http://lwn.net/Articles/170270/rss" />
	<rdf:li resource="http://lwn.net/Articles/170269/rss" />
	<rdf:li resource="http://lwn.net/Articles/170268/rss" />
	<rdf:li resource="http://lwn.net/Articles/170267/rss" />
	<rdf:li resource="http://lwn.net/Articles/170265/rss" />
	<rdf:li resource="http://lwn.net/Articles/170262/rss" />
	<rdf:li resource="http://lwn.net/Articles/170261/rss" />
	<rdf:li resource="http://lwn.net/Articles/170259/rss" />
	<rdf:li resource="http://lwn.net/Articles/170260/rss" />
	<rdf:li resource="http://lwn.net/Articles/170256/rss" />
	<rdf:li resource="http://lwn.net/Articles/170195/rss" />
	<rdf:li resource="http://lwn.net/Articles/170183/rss" />
	<rdf:li resource="http://lwn.net/Articles/170181/rss" />
	<rdf:li resource="http://lwn.net/Articles/170179/rss" />
	<rdf:li resource="http://lwn.net/Articles/170146/rss" />
	<rdf:li resource="http://lwn.net/Articles/170141/rss" />
	<rdf:li resource="http://lwn.net/Articles/170137/rss" />
	<rdf:li resource="http://lwn.net/Articles/170129/rss" />
      
      </rdf:Seq>
    </items>

  </channel>
    <item rdf:about="http://lwn.net/Articles/171598/rss">
      <title>VERY interesting - but security implications to others?!?</title>
      <link>http://lwn.net/Articles/171598/rss</link>
      <dc:date>2006-02-11T09:33:37+00:00</dc:date>
      <dc:creator>efexis</dc:creator>
      <description>
      If my memory serves me correctly, there are one or two servers out there on the internet that run linux. I know it's not very common, but some of them actually rent space/bandwidth/etc so that people can host their own websites, and they allow these users to run code (cgi scripts) or even have shell access via telnet/ssh.&lt;br&gt;
&lt;p&gt;
You obviously don't see this practice taking off, but even so, I think if you told someone who offers shared hosting, not to bother protecting against ways unprivilidged users can cause havock, because somebody &quot;can simple break into the datacenter with a boot CD or laptop&quot;... you'd probably get an incredibly sarcastic response.&lt;br&gt;
&lt;p&gt;
But no, you stick to talking about how to improve the performance of a 10Gig heavy loaded network interface --on a workstation-- where it'll really count.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/171255/rss">
      <title>Van Jacobson's network channels</title>
      <link>http://lwn.net/Articles/171255/rss</link>
      <dc:date>2006-02-09T09:05:59+00:00</dc:date>
      <dc:creator>burki99</dc:creator>
      <description>
      After reading this article I immediately though: Wow, maybe I should finally subscribe after years of reading LWN a week delayed. This is the kind of article that differentiates this publication from the hundreds of other publications that just grabb a quote from LKML (Linus says no to GPL3) and add no insight at all.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/171074/rss">
      <title>VERY interesting - but security implications to others?!?</title>
      <link>http://lwn.net/Articles/171074/rss</link>
      <dc:date>2006-02-08T13:14:41+00:00</dc:date>
      <dc:creator>jzbiciak</dc:creator>
      <description>
      I wonder if you can still get most of the benefits of network channels if you limit their accessibility to special user IDs, and then require non-privileged applications to use cooperating threads--one privileged, one not--to send packets.&lt;br&gt;
&lt;p&gt;
That way, the TCP/IP implementation can be stored away in a fixed implementation that root checks in on (and the kernel may even checksum at lauch time), but the processing still lives in userspace.  It looks a little like the priv-sep that sshd uses.&lt;br&gt;
&lt;p&gt;
Granted, with two cooperating threads, you get back to some of the context switching issues, but still it feels a little more flexible than keeping it in kernel space.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/171046/rss">
      <title>Interrupt Latencies?</title>
      <link>http://lwn.net/Articles/171046/rss</link>
      <dc:date>2006-02-08T09:02:50+00:00</dc:date>
      <dc:creator>csamuel</dc:creator>
      <description>
      Erm, actually VJ was removing code from the interrupt context - he gave &lt;br&gt;
the example of the e1000 driver going from ~700 lines of code executed in &lt;br&gt;
an interrupt context down to ~400 lines. &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/171045/rss">
      <title>Van Jacobson's network channels &amp; 10 Gb/s ethernet</title>
      <link>http://lwn.net/Articles/171045/rss</link>
      <dc:date>2006-02-08T08:57:44+00:00</dc:date>
      <dc:creator>csamuel</dc:creator>
      <description>
      Yes, this is about TCP, not just pushing datagrams out..   &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170962/rss">
      <title>Van Jacobson's network channels</title>
      <link>http://lwn.net/Articles/170962/rss</link>
      <dc:date>2006-02-07T18:15:32+00:00</dc:date>
      <dc:creator>arafel</dc:creator>
      <description>
      Well, y'know, I'm sure Ulrich's not got enough to do these days... ')&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170677/rss">
      <title>Exokernels</title>
      <link>http://lwn.net/Articles/170677/rss</link>
      <dc:date>2006-02-05T01:47:51+00:00</dc:date>
      <dc:creator>lutchann</dc:creator>
      <description>
      On the other hand, most connection-oriented application protocols these days have a timeout mechanism above the TCP.  If you suspend your IMAP or XMPP client for more than a minute or two you're likely to have a broken connection when you foreground the application again.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170668/rss">
      <title>Exokernels</title>
      <link>http://lwn.net/Articles/170668/rss</link>
      <dc:date>2006-02-04T19:44:33+00:00</dc:date>
      <dc:creator>kbob</dc:creator>
      <description>
      It would be unfortunate if TCP became incompatible with job control.  I often suspend network jobs for various reasons, secure in the knowledge that the kernel will keep the TCP connection alive indefinitely.&lt;br&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170599/rss">
      <title>Van Jacobson's network channels - how about network failovers?</title>
      <link>http://lwn.net/Articles/170599/rss</link>
      <dc:date>2006-02-03T19:00:53+00:00</dc:date>
      <dc:creator>caitlinbestler</dc:creator>
      <description>
      Why wouldn't you be able to create a net channel&lt;br&gt;
to a non-physical netdevice? You still have &lt;br&gt;
removed the L4 processing from the kernel and&lt;br&gt;
gotten the same reduction in context switching.&lt;br&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170596/rss">
      <title>VERY interesting - but security implications to others?!?</title>
      <link>http://lwn.net/Articles/170596/rss</link>
      <dc:date>2006-02-03T18:57:50+00:00</dc:date>
      <dc:creator>caitlinbestler</dc:creator>
      <description>
      The same filter rules that route inbound packets&lt;br&gt;
can be used to validate outbound packets. You&lt;br&gt;
simply do not accept packets from a channel if&lt;br&gt;
the response packet would not be routed to &lt;br&gt;
the matching channel.&lt;br&gt;
&lt;p&gt;
So the privileged end of the channel can validate&lt;br&gt;
that every packet on it is for a TCP connection&lt;br&gt;
that is actually assigned to that channel.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170471/rss">
      <title>Sneaky indeed!</title>
      <link>http://lwn.net/Articles/170471/rss</link>
      <dc:date>2006-02-03T05:48:33+00:00</dc:date>
      <dc:creator>xoddam</dc:creator>
      <description>
      Ok, freely mapped memory doesn't cut it then.  I wonder what the &lt;br&gt;
performance impact of changing packet buffers' page permissions would be, &lt;br&gt;
relative to copying (and relative to keeping the TCP implementation in &lt;br&gt;
kernel space)? &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170469/rss">
      <title>protocol validity checks</title>
      <link>http://lwn.net/Articles/170469/rss</link>
      <dc:date>2006-02-03T04:15:47+00:00</dc:date>
      <dc:creator>zblaxell</dc:creator>
      <description>
      kernel can check it out in place...while the user, maybe on another CPU, switches a few bits just after the kernel check but before the network card picks up the data.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170432/rss">
      <title>Interrupt Latencies?</title>
      <link>http://lwn.net/Articles/170432/rss</link>
      <dc:date>2006-02-03T00:34:14+00:00</dc:date>
      <dc:creator>xoddam</dc:creator>
      <description>
      &lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; This way work is moved from kernel threads into userspace and   &lt;/font&gt;&lt;br&gt;
&lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; into the interrupt handler.   &lt;/font&gt;&lt;br&gt;
   &lt;br&gt;
Packet handling isn't currently done in kernel threads, it's done in  &lt;br&gt;
tasklets (OK, tasklets do run in a softirqd thread with the RT patch).  &lt;br&gt;
That's a great way to hog a CPU, and the channel implementation fixes the  &lt;br&gt;
problem by passing work to a thread, just as you suggest!  In the slides  &lt;br&gt;
you'll see that the example channel 'producer' code wakes the listening  &lt;br&gt;
thread, so the 'consumer' is necessarily a task (but not necessarily a &lt;br&gt;
userspace one). &lt;br&gt;
  &lt;br&gt;
An O(log n) search algorithm in the isr would indeed have high latency  &lt;br&gt;
with a very large number of channels to choose from -- but there is no  &lt;br&gt;
reason why the isr would have to select the final target amongst millions  &lt;br&gt;
of user sockets; channels are just as good for intermediate queueing  &lt;br&gt;
within the kernel as they are for delivery to userspace.  &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170431/rss">
      <title>Van Jacobson's network channels</title>
      <link>http://lwn.net/Articles/170431/rss</link>
      <dc:date>2006-02-02T23:56:18+00:00</dc:date>
      <dc:creator>xoddam</dc:creator>
      <description>
      &lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; Wouldn't it lead to code duplication? &lt;/font&gt;&lt;br&gt;
 &lt;br&gt;
Yes.  So does inlining :-) &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170406/rss">
      <title>Van Jacobson's network channels</title>
      <link>http://lwn.net/Articles/170406/rss</link>
      <dc:date>2006-02-02T21:46:51+00:00</dc:date>
      <dc:creator>iabervon</dc:creator>
      <description>
      I don't see any reason that all of the channels would have to go to userspace. If a packet is to a kernel NFS client, it would end up in the kernel code, but without all the copies between the network and the VFS.&lt;br&gt;
&lt;p&gt;
Of course, the kernel would have to keep a TCP implementation, but that's not surprising, since static binaries that use sockets should continue to work.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170401/rss">
      <title>Van Jacobson's network channels</title>
      <link>http://lwn.net/Articles/170401/rss</link>
      <dc:date>2006-02-02T20:53:05+00:00</dc:date>
      <dc:creator>caitlinbestler</dc:creator>
      <description>
      Connections can be channelized *after* they have&lt;br&gt;
passed netfilter inspection.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170385/rss">
      <title>Van Jacobson's network channels</title>
      <link>http://lwn.net/Articles/170385/rss</link>
      <dc:date>2006-02-02T20:12:50+00:00</dc:date>
      <dc:creator>jonabbey</dc:creator>
      <description>
      Please, someone tell me they're not re-inventing STREAMS.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170318/rss">
      <title>Interrupt Latencies?</title>
      <link>http://lwn.net/Articles/170318/rss</link>
      <dc:date>2006-02-02T13:04:32+00:00</dc:date>
      <dc:creator>simlo</dc:creator>
      <description>
      This way work is moved from kernel threads into userspace and into the interrupt handler. The amount of work needed to be done in interrupt context is probably also dependent on the number of channels, i.e. number of open network sockets. Wouldn't we open the machine up to an effective DDOS attack: Spam the network with small packets. If the machine has a lot of network sockets open the each interrupt takes a long time to excecute and at some point there isn't any cpu left. &lt;p&gt;
This issue is not so much problem if you run the handling in a thread (ksoftirqd) which will get lower priority as it starts to eat a lot of CPU. That way packets are dropped, but the rest of the system can run.
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170316/rss">
      <title>Van Jacobson's network channels</title>
      <link>http://lwn.net/Articles/170316/rss</link>
      <dc:date>2006-02-02T12:29:41+00:00</dc:date>
      <dc:creator>samj</dc:creator>
      <description>
      If it doesn't cost anything, why not? You'd just plug netfilter in before the app and map packet buffers into its address space first. This can all be done  in a separate security context too. Looks to me like it would mean a lot less in the way of protocol specific handling and would allow you to chain such tasks easily (eg netfilter-&amp;gt;ipsec or netfilter-&amp;gt;reverse proxy-&amp;gt;web server etc.).&lt;br&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170291/rss">
      <title>Exokernels</title>
      <link>http://lwn.net/Articles/170291/rss</link>
      <dc:date>2006-02-02T11:55:05+00:00</dc:date>
      <dc:creator>csamuel</dc:creator>
      <description>
      &lt;p&gt;VJ said that the only reason that TCP/IP was done in the kernel in 
Multics  
in the first place was because that was the only place you could be  
guaranteed not to get paged out for two minutes at a stretch. &lt;/p&gt; 
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170285/rss">
      <title>Van Jacobson's network channels</title>
      <link>http://lwn.net/Articles/170285/rss</link>
      <dc:date>2006-02-02T09:57:15+00:00</dc:date>
      <dc:creator>NAR</dc:creator>
      <description>
      Wouldn't it lead to code duplication? For example, a box doing NAT would need a (limited?) TCP/IP implementation in kernel space, while the host running e.g. an FTP client would need the full TCP/IP implementation in user space.
&lt;P&gt;
&lt;CENTER&gt;Bye,NAR&lt;/CENTER&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170272/rss">
      <title>Van Jacobson's network channels - how about network failovers?</title>
      <link>http://lwn.net/Articles/170272/rss</link>
      <dc:date>2006-02-02T07:11:57+00:00</dc:date>
      <dc:creator>jiri.hlusi</dc:creator>
      <description>
      The throughput gain numbers presented are certainly interesting. But does it affect e.g. network failovers (bonding) as well? There is loads of useful stuff [potentially] done in the kernel space, if one only sees the need for using it. Moving lots of the add-on functionality to the user space libraries might put own price tag to the complexity of those libraries as such.&lt;br&gt;
&lt;p&gt;
&lt;p&gt;
-- Jiri&lt;br&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170270/rss">
      <title>Van Jacobson's network channels</title>
      <link>http://lwn.net/Articles/170270/rss</link>
      <dc:date>2006-02-02T05:45:08+00:00</dc:date>
      <dc:creator>xoddam</dc:creator>
      <description>
      The phased implementation described only moves packet processing to &lt;br&gt;
userspace at the very last stage.  At the 'ends' of the network this is &lt;br&gt;
appropriate for efficiency.  But even before that stage, channels are a &lt;br&gt;
better way to pass packets around within the kernel.  The task-oriented &lt;br&gt;
interface (using wakeups instead of soft interrupts) would probably mean &lt;br&gt;
netfilter no longer runs in tasklet context.  We might instead see &lt;br&gt;
several netfilter kernelspace daemons (like kswapd and friends), one for &lt;br&gt;
each CPU. &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170269/rss">
      <title>HURD fast?</title>
      <link>http://lwn.net/Articles/170269/rss</link>
      <dc:date>2006-02-02T05:36:51+00:00</dc:date>
      <dc:creator>xoddam</dc:creator>
      <description>
      Not with Linux evolving at this rate :-) &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170268/rss">
      <title>Van Jacobson's network channels &amp; 10 Gb/s ethernet</title>
      <link>http://lwn.net/Articles/170268/rss</link>
      <dc:date>2006-02-02T05:35:19+00:00</dc:date>
      <dc:creator>bos</dc:creator>
      <description>
      Plenty of Linux networking gear can drive 10Gbps hardware at line rate, and I'm not even talking about fancy TOE hardware in all cases.&lt;br&gt;
&lt;p&gt;
Not having been at the talk, I don't know what circumstances he was talking about (perhaps specifically TCP at 10Gbps?), so I'm not picking a nit with his assertion, just pointing out that something along those lines can be done without scads of memory bandwidth.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170267/rss">
      <title>That's not the only meaning of that statement</title>
      <link>http://lwn.net/Articles/170267/rss</link>
      <dc:date>2006-02-02T05:28:22+00:00</dc:date>
      <dc:creator>Ross</dc:creator>
      <description>
      If you're only point is that security shouldn't depend on the network not being compromised I agree.  However malicious users with unfettered physical access are not at all equivalent to malicious processes running under unpriviledged ids and that anything which makes them equivalent is decreasing security.  Does it matter for well designed programs?  No.  But unfortunately tons of commonly used software is not well designed.  If you can't trust IPs, port numbers, etc. many things break down.  If you can't trust a program a user downloaded you should worry, but your network is not automatically compromised unless there is something which can be exploited on the system.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170265/rss">
      <title>reinvention?</title>
      <link>http://lwn.net/Articles/170265/rss</link>
      <dc:date>2006-02-02T04:53:50+00:00</dc:date>
      <dc:creator>bcd</dc:creator>
      <description>
      Not quite true: STREAMS had built-in facilities to help avoid data copies.  It is a heavily layered model, and the queueing is not extremely efficient, but byte-for-byte copies are minimal in a properly configured STREAMS system.&lt;br&gt;
&lt;p&gt;
These channels are a totally different concept, though, and address a different problem entirely.&lt;br&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170262/rss">
      <title>VERY interesting - but security implications to others?!?</title>
      <link>http://lwn.net/Articles/170262/rss</link>
      <dc:date>2006-02-02T04:11:33+00:00</dc:date>
      <dc:creator>jamesh</dc:creator>
      <description>
      There isn't much problem with this model on the receive end, assuming that the kernel correctly classifies packets and sends them to the right process.&lt;br&gt;
&lt;p&gt;
As for sending, all that is necessary is a packet verifier, that makes sure the packet is appropriate for the given socket (which should be a lot simpler than a full TCP send implementation).  If the packet shouldn't be getting sent from the socket, the kernel doesn't transmit it.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170261/rss">
      <title>Exokernels</title>
      <link>http://lwn.net/Articles/170261/rss</link>
      <dc:date>2006-02-02T04:11:15+00:00</dc:date>
      <dc:creator>ttfkam</dc:creator>
      <description>
      Reading about moving the network stack out to userspace made me think of the design of &lt;a href=&quot;http://en.wikipedia.org/wiki/Exokernel&quot;&gt;MIT's Exokernel OS&lt;/a&gt;.
&lt;p&gt;
Just as Ingo Molnar's work in migrating the scheduler to an O(1) algorithm was a taste of more extensive implementation of O(1) algorithms in the kernel, perhaps elements of the exokernel will find their day in various parts of Linux.

      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170259/rss">
      <title>That's not the only meaning of that statement</title>
      <link>http://lwn.net/Articles/170259/rss</link>
      <dc:date>2006-02-02T04:05:48+00:00</dc:date>
      <dc:creator>elanthis</dc:creator>
      <description>
      And my point remains... what is that unprivileged process going to do that you couldn't do by plugging in a laptop or some other device onto the network?&lt;br&gt;
&lt;p&gt;
If you are implicitly trusting every packet sent by some 'trusted' host (which, if it were truly trusted, would never be running any malicious code anyhow), or trusting anything running on port 1024 down, you're not running a very secure network at all.&lt;br&gt;
&lt;p&gt;
There is no security at the IP level at all.  If you want trust and security, you have to put it all in higher layers.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170260/rss">
      <title>Van Jacobson's network channels -- Microkernel?</title>
      <link>http://lwn.net/Articles/170260/rss</link>
      <dc:date>2006-02-02T04:05:14+00:00</dc:date>
      <dc:creator>atai</dc:creator>
      <description>
      So the Hurd still has hope for speed?&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170256/rss">
      <title>Van Jacobson's network channels -- Microkernel?</title>
      <link>http://lwn.net/Articles/170256/rss</link>
      <dc:date>2006-02-02T02:13:12+00:00</dc:date>
      <dc:creator>jwb</dc:creator>
      <description>
      In this case, the advantage is also that protocol processing is being done 1) in parallel, on an SMP machine; and 2) in the same cache space as the interested user process.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170195/rss">
      <title>Van Jacobson's network channels -- Microkernel?</title>
      <link>http://lwn.net/Articles/170195/rss</link>
      <dc:date>2006-02-01T20:48:38+00:00</dc:date>
      <dc:creator>JoeBuck</dc:creator>
      <description>
      It's not really so surprising.  The cost being avoided in both cases is context switching.  The default way of doing things is that the lower-level processing is in the kernel and the higher-level processing is in userspace. Either moving almost everything into the kernel, or moving almost everything out, reduces the overhead.

      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170183/rss">
      <title>Van Jacobson's network channels -- Microkernel?</title>
      <link>http://lwn.net/Articles/170183/rss</link>
      <dc:date>2006-02-01T20:12:39+00:00</dc:date>
      <dc:creator>NAR</dc:creator>
      <description>
      Isn't it ironic that khttpd/tux sped up web server perfomance by moving protocol processing &lt;B&gt;into&lt;/B&gt; the kernel, but now Van Jacobson can speed up web server perfomance by moving protocol processing &lt;B&gt;out&lt;/B&gt; of the kernel :-)
&lt;P&gt;
&lt;CENTER&gt;Bye,NAR&lt;/CENTER&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170181/rss">
      <title>VERY interesting - but security implications to others?!?</title>
      <link>http://lwn.net/Articles/170181/rss</link>
      <dc:date>2006-02-01T20:08:44+00:00</dc:date>
      <dc:creator>NAR</dc:creator>
      <description>
      &lt;I&gt;Absolutely nothing stops a user from booting their workstation with a LiveCD that they have root access to.&lt;/I&gt;
&lt;P&gt;
Except the fact that this user can be an unauthorized one who've just cracked into the system from an other continent using the latest bug in a PHP BBS and his processes are running as 'nobody' user. He'd have hard time putting a live CD into the computer, but still we really don't want him to send arbitrary packets into the network.
&lt;P&gt;
&lt;CENTER&gt;Bye,NAR&lt;/CENTER&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170179/rss">
      <title>Van Jacobson's network channels</title>
      <link>http://lwn.net/Articles/170179/rss</link>
      <dc:date>2006-02-01T20:00:21+00:00</dc:date>
      <dc:creator>NAR</dc:creator>
      <description>
      I'm not sure I fully understand this, but it seems that these channels are used when there is a socket to the user space, i.e. an application running on the host sends/receives data to/from the network. But what about the case when there's no application? As far as I know, in routers the IP packets usually don't get to user space, but if protocol processing is moved to user space (netfilter), it might degrade performance, mightn't it?
&lt;P&gt;
&lt;CENTER&gt;Bye,NAR&lt;/CENTER&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170146/rss">
      <title>reinvention?</title>
      <link>http://lwn.net/Articles/170146/rss</link>
      <dc:date>2006-02-01T16:39:59+00:00</dc:date>
      <dc:creator>vmole</dc:creator>
      <description>
      Streams were about introducing lots of layers, each doing some sort of processing on the packets (or whatever), and each layer involving copying the data. VJ's channels are about getting the data into user space as quickly as possible, minimizing the actual processing and layering.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170141/rss">
      <title>Users don't always WANT to attack</title>
      <link>http://lwn.net/Articles/170141/rss</link>
      <dc:date>2006-02-01T16:35:22+00:00</dc:date>
      <dc:creator>dwheeler</dc:creator>
      <description>
      Sure, if a user is malicious, they can boot the system into some OS where they're fully privileged and attack.  Or just unplug the network, plug in their own laptop where they have all privileges, and attack.
&lt;p&gt;
That's not the point.  Not all users are malicious.  Sometimes they run programs that APPEAR to do one thing, but do another.  Sometimes systems run servers (like web servers) that an attacker can somehow subvert. In THOSE cases, I'd like the system to still limit what the attacker can do, INCLUDING limits on how the attacker can attack other systems.
&lt;p&gt;
Sure, all systems should be invulnerable to all attackers.  But they aren't.  Anyone who's managed a big network knows how hard it is to keep EVERYTHING secure, ESPECIALLY since there are some vendors who do not release patches for KNOWN vulnerabilities (names withheld, but Google can help you find them rather quickly).  So you really need defense-in-depth: you need to try to make it so that attackers have to break down MULTIPLE barriers to get the goods.
&lt;p&gt;
Limiting the network-level actions of unprivileged accounts is not the be-all of security.  But it's one of the few mechanisms we CURRENTLY have deployed widely that slow the spread of attacks across a network.  Diseases that spread rapidly are often unstoppable, because you just don't have enough time to react.  Slowing the spread of a disease is key to countering it.  Similarly, in the network world, slowing down attack vectors is also key to countering it.
&lt;p&gt;
I'd like to see that packets from untrusted user apps are still FORCED to obey certain limits on what they can send.
You don't need a system-wide lock to do that kind of checking; after a call to the kernel, the memory could be mapped out and checked WITHOUT harming the cache lines of other systems.
For most systems it'd just involve checking a few bytes... nothing expensive, and certainly taking less time than sending something down any network port.


      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170137/rss">
      <title>reinvention?</title>
      <link>http://lwn.net/Articles/170137/rss</link>
      <dc:date>2006-02-01T15:51:16+00:00</dc:date>
      <dc:creator>macc</dc:creator>
      <description>
      I had the same feeling of similarity.&lt;br&gt;
&lt;p&gt;
could you elaborate on the differences?&lt;br&gt;
&lt;p&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/170129/rss">
      <title>Van Jacobson's network channels -- Microkernel?</title>
      <link>http://lwn.net/Articles/170129/rss</link>
      <dc:date>2006-02-01T15:41:37+00:00</dc:date>
      <dc:creator>smoogen</dc:creator>
      <description>
      From a 10,000 m view, this looks either like the days of DOS where every application had its own TCP stack :), or a better take on microkernels. The kernel sets up the basic stuff for the machin, and the channels for the smaller daemons that then handle things like iptables, the stack etc. Each of these would be a herd of daemons interconnecting between each other. &lt;br&gt;
&lt;p&gt;
[I am sorry for the hurd joke.. it was a very long night and I found it funny.]&lt;br&gt;
      
      </description>
    </item>
</rdf:RDF>

