Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| summerofcode2014:convertingipfwrulesets [2014/05/27 20:09] – DanielPeyrolon | summerofcode2014:convertingipfwrulesets [2014/09/25 08:45] (current) – DanielPeyrolon | ||
|---|---|---|---|
| Line 12: | Line 12: | ||
| ===== Approach to solve the problem ===== | ===== Approach to solve the problem ===== | ||
| - | *Understand bpdjit. | + | *Understand bpdjit. |
| - | *Understand netmap-ipfw. | + | *Understand netmap-ipfw. |
| - | *Isolate and refactor the netmap-ipfw rules so that each rule is mapped ideally with a single function | + | *Isolate and refactor the netmap-ipfw rules so that each rule is mapped ideally with a single function. ✔ |
| - | *Add JIT-compiling of these functions inside netmap-ipfw. | + | *Add JIT-compiling of these functions inside netmap-ipfw. |
| - | *Test and evaluate the final system. | + | *Test and evaluate the final system. |
| ===== Deliverables ===== | ===== Deliverables ===== | ||
| Line 25: | Line 25: | ||
| ===== Milestones ===== | ===== Milestones ===== | ||
| - | Aug 18th: Firm " | + | *May 19th: Coding starts. |
| - | * June 17: Start of coding | + | *Once the example (bpfjit), has been studied and understood, I will start adapting netmap-ipfw and refactored |
| - | * We will start building the firewall, | + | *Jun 23th: Mid-term |
| - | * July 29-August 2: Mid-term | + | *By this point, we should |
| - | * By this point, we should | + | *Aug 11th: Suggested " |
| - | * September 16: End of coding (soft) | + | *By this point the firewall should be finished. It would be the time to test it, and quantify the gain of performance compared to the traditional ipfw/kernel net stack implementations. |
| - | * By this point the firewall should be finished, and we would be able to JIT-compile the rules. It would be the time to test it, and quantify the gain of performance compared to the traditional ipfw/kernel net stack implementations. | + | *Aug 18th: Firm " |
| - | * September 23: End of coding (hard) | + | |
| ===== Test Plan ===== | ===== Test Plan ===== | ||
| - | The test plan for this project is to test individual rules and its working inside the JIT-compiler | + | The test plan for this project is to test individual rules and its working inside the JIT-compiler |
| ===== The Code ===== | ===== The Code ===== | ||
| - | My code can be found [[https:// | + | My code can be found [[https:// |
| + | |||
| + | ===== Results ===== | ||
| + | |||
| + | For now, I encountered a bug on netmap that prevented the filtration of any more than 1000 packets. | ||
| + | I benchmarked that in the worst case scenario (just one rule), and I got a 7x faster firewall. | ||
| + | |||
| + | The firewall is not completed yet (there are some rules to implement yet, but that is easy). | ||
| + | Before finishing it, I'll port it to the C LLVM API. | ||
| ===== Useful links ===== | ===== Useful links ===== | ||
| - | *[[http:// | + | *[[http:// |
| + | *[[http:// | ||
| + | *[[http:// | ||
| *[[http:// | *[[http:// | ||
| *[[http:// | *[[http:// | ||
| + | |||
| *[[http:// | *[[http:// | ||
| - | *[[https:// | + | *[[https:// |
| *[[http:// | *[[http:// | ||