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:19] – 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 26: | Line 26: | ||
| *May 19th: Coding starts. | *May 19th: Coding starts. | ||
| - | *I will start building a firewall, or adapting netmap-ipfw and start writing | + | *Once the example (bpfjit), has been studied and understood, |
| *Jun 23th: Mid-term evaluations. | *Jun 23th: Mid-term evaluations. | ||
| - | *By this point, we should | + | *By this point, we should |
| *Aug 11th: Suggested " | *Aug 11th: Suggested " | ||
| - | *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. | + | *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. |
| *Aug 18th: Firm " | *Aug 18th: Firm " | ||
| Line 39: | Line 39: | ||
| ===== 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:// | ||