Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| summerofcode2018projects:extensionstonetmap [2018/07/19 13:51] – StefanoDuo | summerofcode2018projects:extensionstonetmap [2018/10/27 11:20] (current) – StefanoDuo | ||
|---|---|---|---|
| Line 22: | Line 22: | ||
| ==== Per-ring fixed offsets ==== | ==== Per-ring fixed offsets ==== | ||
| - | Given the fixed nature of this type of offsets, the approach I have been followed is to let netmap internally handle offset math, thus giving directly the " | + | Given the fixed nature of this type of offsets, the approach I have followed is to let netmap internally handle offset math, thus giving directly the " |
| From the userland perspective a buffer is obtained through the '' | From the userland perspective a buffer is obtained through the '' | ||
| - | From the kernel perspective a buffer logical (and physical) address is obtained through '' | + | From the kernel perspective a buffer logical (and physical) address is obtained through '' |
| - | Finally a new option | + | |
| + | Finally a new option | ||
| ==== Per-buffer variable offsets ==== | ==== Per-buffer variable offsets ==== | ||
| - | It follows the same scheme | + | It follows the same idea of per-ring fixed buffer offsets |
| + | |||
| + | Kernel side '' | ||
| + | |||
| + | From the userspace perspective this type of offset needs to be handled explicitly by the application. It cannot be handled transparently by the '' | ||
| ==== Testing framework ==== | ==== Testing framework ==== | ||
| - | functional.c (from the netmap repository) is a CLI tool already capable of sending and receiving UDP packets with specified length and a few of other possible options. | + | functional.c (from the netmap repository) is a CLI tool already capable of sending and receiving UDP packets with specified length and a few of other possible options. |
| - | For more complex | + | |
| + | For more complex | ||
| + | |||
| + | Furthermore i wrote a bash library which eases and shortens the time required to write a test script. It provides wrappers around the most common operations executing during a test, reducing the amount of boilerplate code needed. The wrappers provided to create VALE persistent ports and VETH interfaces and attach/ | ||
| + | |||
| + | ===== Notes ===== | ||
| + | |||
| + | ==== Per-ring fixed offset behavior ==== | ||
| + | This type of offset is usually applied to the rings specified by the register request but there are some exceptions. | ||
| + | * netmap pipes: the offset is applied to every ring of both ends of the pipe. This is needed because the exchange buffers through zero-copy. | ||
| + | * netmap monitors: the offset cannot be specified by the application, | ||
| ===== Deliverables ===== | ===== Deliverables ===== | ||
| - | * Implement an external kernel module which extends VALE switches to support virtual lans (IEEE 802.1Q standard) and a CLI tool to easily manage vlan configurations. | + | * Implement an external kernel module which extends VALE switches to support virtual lans (IEEE 802.1Q standard) and a CLI tool to easily manage vlan configurations. |
| - | * Implement the testing framework as a CLI tool with a set of basic functionalities which will be used to write a suite of tests for netmap. | + | * Implement the testing framework as a CLI tool with a set of basic functionalities which will be used to write a suite of tests for netmap. |
| - | * Extend netmap to support per-adapter | + | * Extend netmap to support per-ring buffer offsets and make use of the inside the vlan external module; then add support for per-buffer offsets. |
| ===== Milestones ===== | ===== Milestones ===== | ||
| * May 14th: Start of coding | * May 14th: Start of coding | ||
| - | * Write a kernel module which implements an hardcoded vlan configuration. | + | * Write a kernel module which implements an hardcoded vlan configuration. |
| * May 21st: Week 2 | * May 21st: Week 2 | ||
| - | * Allow configurations to be managed through system calls instead of being hardcoded. | + | * Allow configurations to be managed through system calls instead of being hardcoded. |
| * May 28th: Week 3 | * May 28th: Week 3 | ||
| - | * Write a CLI tool to manage configurations. | + | * Write a CLI tool to manage configurations. |
| * June 4th: Week 4 | * June 4th: Week 4 | ||
| - | * Bug fixing and documentation. | + | * Bug fixing and documentation. |
| * June 11th - June 15th: Mid-term Evaluations #1 | * June 11th - June 15th: Mid-term Evaluations #1 | ||
| * June 18th: Week 6 | * June 18th: Week 6 | ||
| - | * Extend functional.c to manage file descriptors of interfaces. | + | * Extend functional.c to manage file descriptors of interfaces. |
| * June 25th: Week 7 | * June 25th: Week 7 | ||
| - | * Extend functional.c with functionalities needed to compose tests. | + | * Extend functional.c with functionalities needed to compose tests. |
| * July 2nd: Week 8 | * July 2nd: Week 8 | ||
| - | * Write a suite of tests through the new framework. | + | * Write a suite of tests through the new framework. |
| * July 9th - July 13th: Mid-term Evaluations #2 | * July 9th - July 13th: Mid-term Evaluations #2 | ||
| * July 9th: Week 9 | * July 9th: Week 9 | ||
| - | * Extend netmap to support per-adapter | + | * Extend netmap to support per-ring buffer offsets. |
| * July 16th: Week 10 | * July 16th: Week 10 | ||
| - | * Extend the VALE vlan kernel module to make use of buffer offsets. | + | * Extend the VALE vlan kernel module to make use of buffer offsets. |
| * July 23rd: Week 11 | * July 23rd: Week 11 | ||
| - | * Extend netmap to support per-buffer offsets. | + | * Extend netmap to support per-buffer offsets. |
| * August 6th: End of coding (soft) | * August 6th: End of coding (soft) | ||
| - | * Clean up code and documentation. | + | * Clean up code and documentation. |
| * August 14th: End of coding (hard) | * August 14th: End of coding (hard) | ||
| Line 77: | Line 92: | ||
| https:// | https:// | ||
| - | ===== Notes ===== | + | ===== Future Contributions |
| - | + | Update netmap specific NIC drivers to be offset aware, as they currently do not support any type of offset. | |
| - | Nothing at the moment. | + | |
| - | ===== Useful | + | ===== Useful |
| * [[http:// | * [[http:// | ||
| * [[http:// | * [[http:// | ||