Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| summerofcode2015:ne2000emulationforbhyve [2015/08/23 20:02] – AlexTeaca | summerofcode2015:ne2000emulationforbhyve [2015/08/23 20:17] (current) – AlexTeaca | ||
|---|---|---|---|
| Line 43: | Line 43: | ||
| ===== Final Results ===== | ===== Final Results ===== | ||
| - | I've implemented the NE2000 emulation in the bhyve hypervisor under both PCI and LPC attachements. The full implementation is located in: | + | I've implemented the NE2000 emulation in the bhyve hypervisor under both PCI and LPC attachments. The full implementation is located in: |
| - | / | + | /// |
| In order to use the device in bhyve, you need to configure it in the parameters list as: | In order to use the device in bhyve, you need to configure it in the parameters list as: | ||
| Line 54: | Line 54: | ||
| In the guest operating system you will see the network interfaces as: | In the guest operating system you will see the network interfaces as: | ||
| + | |||
| + | < | ||
| ed0 at port 0x310-0x32f irq 10 on isa0 | ed0 at port 0x310-0x32f irq 10 on isa0 | ||
| ed0: Ethernet address: 00: | ed0: Ethernet address: 00: | ||
| Line 59: | Line 61: | ||
| ed1: Ethernet address: 00: | ed1: Ethernet address: 00: | ||
| - | ed0: flags=8802%%<%%BROADCAST, | + | ed0: flags=8802< |
| - | ether 00: | + | ether 00: |
| - | nd6 options=29%%<%%PERFORMNUD, | + | nd6 options=29< |
| - | media: Ethernet 10baseT/ | + | media: Ethernet 10baseT/UTP < |
| - | ed1: flags=8802%%<%%BROADCAST, | + | ed1: flags=8802< |
| - | ether 00: | + | ether 00: |
| - | nd6 options=29%%<%%PERFORMNUD, | + | nd6 options=29< |
| - | media: Ethernet 10baseT/ | + | media: Ethernet 10baseT/UTP < |
| - | Any ne2000 device attached under the PCI bus will be probed as the ed2, ed3 ... network | + | Any ne2000 device attached under the PCI bus will be probed as the ed2, ed3 ... network |
| - | Note0: For the LPC attachements | + | ''' |
| hint.ed.0.at=" | hint.ed.0.at=" | ||
| hint.ed.0.port=" | hint.ed.0.port=" | ||
| Line 76: | Line 78: | ||
| hint.ed.1.at=" | hint.ed.1.at=" | ||
| hint.ed.1.port=" | hint.ed.1.port=" | ||
| - | hint.ed.1.irq=" | + | hint.ed.1.irq=" |
| + | |||
| + | == Test Plan == | ||
| + | All these tests have passed successfully: | ||
| + | * transmit/ | ||
| + | * stop, start the ED interface during the traffic is running | ||
| + | * transmit/ | ||
| + | * enable promiscuous mode with the tcpdump enabled, so all packets are accepted | ||
| + | |||
| + | == Performance Tests == | ||
| + | In order to measure the N2000 emulation performance I've used the iperf tool running as server and client in two virtual machine instances.{{{ | ||
| + | guest1: ifconfig ed0 inet 192.168.0.1 | ||
| + | guest2: ifconfig ed1 inet 192.168.0.2}}} | ||
| + | |||
| + | In order to make connectivity between them, I've attached their tap interfaces in a bridge. For example: | ||
| + | ifconfig bridge create | ||
| + | ifconfig bridge0 addm tap0 addm tap1 | ||
| + | ifconfig bridge0 inet 192.168.0.10}}} | ||
| + | |||
| + | For the UDP traffic I've run these iperf commands: | ||
| + | guest2: iperf -s -u | ||
| + | guest1: iperf -c 192.168.0.2 -f Mbyte -u -b 7m | ||
| + | ------------------------------------------------------------ | ||
| + | Client connecting to 192.168.0.2, | ||
| + | Sending 1470 byte datagrams | ||
| + | UDP buffer size: 0.01 MByte (default) | ||
| + | ------------------------------------------------------------ | ||
| + | [ 3] local 192.168.0.1 port 54052 connected with 192.168.0.2 port 5001 | ||
| + | [ ID] Interval | ||
| + | [ 3] 0.0-10.0 sec 7.09 MBytes | ||
| + | [ 3] Sent 5057 datagrams | ||
| + | [ 3] Server Report: | ||
| + | [ 3] 0.0-10.0 sec 7.09 MBytes | ||
| + | [ 3] 0.0-10.0 sec 1 datagrams received out-of-order}}} | ||
| + | |||
| + | For the TCP traffic I've run these iperf commands: | ||
| + | guest2: iperf -s | ||
| + | guest1: iperf -c 192.168.0.2 -f Mbyte | ||
| + | ------------------------------------------------------------ | ||
| + | Client connecting to 192.168.0.2, | ||
| + | TCP window size: 0.03 MByte (default) | ||
| + | ------------------------------------------------------------ | ||
| + | [ 3] local 192.168.0.1 port 31221 connected with 192.168.0.2 port 5001 | ||
| + | [ ID] Interval | ||
| + | [ 3] 0.0-10.0 sec 6.75 MBytes | ||
| - | ===== Test Plan ===== | + | ''' |
| - | (List of steps you plan to use to test your work, as discussed with your mentor) | + | == The Code == |
| - | ===== The Code ===== | + | * https:// |
| + | * https:// | ||
| - | * https:// | + | == Useful links == |
| - | * https:// | + | |
| - | ===== Useful links ===== | + | * [0] http:// |
| + | * [1] https:// | ||
| + | * [2] http:// | ||
| - | * [0] http:// | + | </code> |
| - | * [1] https:// | + | |
| - | * [2] http:// | + | |