diff options
Diffstat (limited to 'community/gsoc/project_ideas/tcp_ip_stack.mdwn')
-rw-r--r-- | community/gsoc/project_ideas/tcp_ip_stack.mdwn | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/community/gsoc/project_ideas/tcp_ip_stack.mdwn b/community/gsoc/project_ideas/tcp_ip_stack.mdwn new file mode 100644 index 00000000..331336ac --- /dev/null +++ b/community/gsoc/project_ideas/tcp_ip_stack.mdwn @@ -0,0 +1,42 @@ +[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU Free Documentation License|/fdl]]."]]"""]] + +[[!meta title="Hurdish TCP/IP Stack"]] + +The Hurd presently uses a [[TCP/IP_stack|hurd/translator/pfinet]] based on code from an old Linux version. +This works, but lacks some rather important features (like PPP/PPPoE), and the +design is not hurdish at all. + +A true hurdish network stack will use a set of [[hurd/translator]] processes, +each implementing a different protocol layer. This way not only the +implementation gets more modular, but also the network stack can be used way +more flexibly. Rather than just having the standard socket interface, plus some +lower-level hooks for special needs, there are explicit (perhaps +filesystem-based) interfaces at all the individual levels; special application +can just directly access the desired layer. All kinds of packet filtering, +routing, tunneling etc. can be easily achieved by stacking components in the +desired constellation. + +Implementing a complete modular network stack is not feasible as a GSoC +project, though. Instead, the task is to take some existing user space TCP/IP +implementation, and make it run as a single Hurd server for now, so it can be +used in place of the existing pfinet. The idea is to split it up into +individual layers later. The initial implementation, and the choice of a TCP/IP +stack, should be done with this in mind -- it needs to be modular enough to +make such a split later on feasible. + +This is [[!GNU_Savannah_task 5469]]. + +Possible mentors: zhengda + +Exercise: You could try making some improvement to the existing pfinet +implementation; or you could work towards running some existing userspace +TCP/IP stack on Hurd. (As a normal program for now, not a proper Hurd server +yet.) |