lkml.org 
[lkml]   [2009]   [Apr]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectGoogle Summer of Code 2009: Student applies to optimize netfilter
Hi,

at the Linux Foundation we got the application shown below. For me it
looks like a good application which should be considered and not fail
due to lack of a suitable mentor.

The student wants to optimize netfilter, which is clearly a kernel
project. So I need a kernel developer who does the mentoring of this
student, preferably from the area of netfilter.

It would be also nice to know perhaps if he should better also apply at
other mentoring organizations and at which once to find a mentor more
easily.

The student did not include his e-mail address in the application. To
contact him directly you need to apply as a mentor on
http://socghop.appspot.com/ (this does not oblige you to actually mentor
a student) and select the Linux Foundation (link ID: LF) as the
mentoring organization. If you do so, you can still be a mentor or admin
at other orgs in parallel but not apply as a student any more. Note that
student application deadline is Friday, April 3, noon PDT or 7pm UTC, so
contact him well before that date if you want to recommend him to apply
at an additional org.

Till

-------------------------------------------------------------------------

Title: Optimized netfilter implementation
Student: Shreyas Bhatewara
Mentor: No mentor assigned
Possible Mentors: None
Abstract:
netfilter is used for packet filtering and mangling and thus is used to
implement firewalls. Since every packet passing networking stack must be
processed by netfilter it is extremely important to ensure that this
code is not the bottleneck of the pipeline. This project will attempt to
improve the packet classification in netfilter in order to improve its
performance. The project will strive at understanding expensive
operations in packet filtering and suggest optimized improvements for
the same
Content:


* Name : Shreyas N Bhatewara
* University / current enrollment : University of Texas at Dallas
* Short bio / overview of your background :

I completed my bachelor in Computer Engineering from University of Pune.
I got quite interested in Linux and kernel programming during my senior
year project (Driver verifier and Fault injection test harness for
Linux). After completion of bachelor degree I worked for a couple of
years in area of networking, systems, Linux/Solaris kernel, Device
driver development, C and C++. I got to work on many interesting
projects during this time
(http://utdallas.edu/~snb071000/profession.html). Most of the
development was for clients of the company. I started my Masters in
Computer Science in Fall 2007. I was an intern at VMware for 7 months in
2008. I learned a lot their and enjoyed my work thoroughly.

* Tell us your IRC nick with which you will use the group's IRC
channel : shreyasbforu
* Your Coding Skills :

My coding skill set include the following:

Programming Languages: C, C++, Java, SQL(Oracle), COBOL, Lisp, ML,
Prolog, VC++, HTML, DHTML, XML, ASP, PHP, J2EE

Scripting: shell script, awk, sed, javascript

Tools: Wireshark, Dtrace, SVN/CVS/Perforce systems, GNU make and system,
iperf, netperf

Microprocessor arch.: i386, 8085, 8086, 80386, 8051 Micro controller.

Operating Systems: MS- DOS, Unix. Linux and Solaris – Kernel and user
space programming.

Fields of Interests: Computer Networks, Distributed/Cluster Computing,
Operating Systems, High performance computing and storage.



In your application let us know

* What platform do you use to code? Hardware specifications and
operating system :

I used to code in C, C++. For Intel architectures (32 and 64 bit). For
Linux and Solaris OSs.

* Did you ever code in C or C++/Perl/python/..., yes/no? what is
your experience?

Yes I have coded in C/C++ for more than 8 years. (3 years
professionally, others academically).

I have not coded much in Perl/python, I learned them once though.

* If you apply for a project on our ideas list, have you experience
in the areas listed under "Desired knowledge"?

Yes, I do have the desired knowledge (C, netfilter/iptables, Linux
kernel, build system) for this project.

Set yourself up

* Set up your platform to build a Bazaar/GIT/Subversion snapshot of
the current state of the project you are interested in.
* If you need help, ask on the mailing list of the appropriate
group, or in the IRC.
* Report success on the mailing list or IRC.

You and Us

* Were you involved in development in the project's group in the
past? What was your contribution?

No, I was not.

* Were you involved in other OpenSource development projects in the
past? which, when and in what role?

No, I was not. This will be my first time.

* Why have you chosen your development idea and what do you expect
from your implementation?

Performance optimization has always enticed me. I have spent a lot of
time optimizing a Solaris NIC device driver which I had ported from
Linux. I used Dtrace, lockstat and other tools for profiling. I did
quite a good job at it. I have also taken courses related to synthesis,
optimization and computer networking in my Masters program. I am hoping
to apply some knowledge from those courses too.

Secondly I know much about Linux networking stack to have a comfort
level for this project. I am confident that I will get upto speed and
conclusively complete this project.

I need not even mention this but at the basic I expect from my
implementation not to break anything which exists right now. I will test
thoroughly to ensure so. Further I expect to find faster alternatives to
current packet classification code. May be multiple filtering rules can
be combined in some efficient way. I expect to improve the performance
of net filters



Your Project

* What do you want to achieve?

I expect to find faster alternatives to current packet classification
code. May be multiple filtering rules can be combined in some efficient
way. I expect to improve the performance of netfilters when multiple
rules are applied at the same time. If there is some syntactic/semantic
redundancy of operations being performed to apply these rules, I will
try to eliminate it.

* If you have chosen an idea from our list, why did you choose this
specific idea?

Performance optimization has always enticed me. I have spent a lot of
time optimizing a Solaris NIC device driver which I had ported from
Linux. I used Dtrace, lockstat and other tools for profiling. I did
quite a good job at it. I have also taken courses related to synthesis,
optimization and computer networking in my Masters program. I am hoping
to apply some knowledge from those courses too.

Secondly I know much about Linux networking stack to have a comfort
level for this project. I am confident that I will get upto speed and
conclusively complete this project.

* What makes you suited to carry the project?

My past experience in working with similar projects, my educational
background and my enthusiasm for the work at hand makes me a good
candidate for this project. Although I do not know how exactly I can
improve the netfilter performance as of now, I think I am in good
position to understand and propose a solution to the problem during the
project. I understand how open source communities work, and what role an
individual developer plays. I also understand the high quality of code
required to get into the code base.

* How much time do you plan to invest in the project before, during
and after the Summer of Code (We expect full time 40h/week during GSoC,
but better make this explicit)?

I expect to invest 40 hours or more during the project. Even after the
end of the project I will strive to be answerable to the suggested
changes and if possible get the code into the main tree. I look forward
to this project as an opportunity to start working for an open source
community for a long term.

* Please provide a schedule of how this time will be spent on
subtasks of the project. While this is only preliminary, you will be
required to provide a detailed plan latest at the beginning of GSoC and
during the project you will issue weekly progress reports against that plan.

According to my knowledge the preliminary schedule will be as follows.

Week 1: Understanding the netfilter implementation thoroughly and
getting acquainted with the code base and build system. Devote time to
understand work done until now towards performance improvement and
design decisions thus taken.

Week 2: Setup environment to measure performance and profile netfilter
code, understand the metric involved, establish benchmarks.

Week 3-8 : Research alternatives for packet classification code.
Implement them, profile the modified code. Conclude and again think for
improvements.

Week 9 and 10: Testing and bugfixing. Send out a code review request
(may be to the netfilter-devel list)

Week 11: Improvements & incorporating suggestions from code review.
Start Documentation.

Week 12: Documenting and packaging deliverables.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2009-04-01 09:57    [W:0.211 / U:0.188 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site