outscale / butterfly Goto Github PK
View Code? Open in Web Editor NEWButterfly connects Virtual Machines and control their traffic flow
License: GNU General Public License v3.0
Butterfly connects Virtual Machines and control their traffic flow
License: GNU General Public License v3.0
The goal is to be able to launch all Butterfly tests using Jenkins (or other tool) at each Pull Request
We would really need this feature from Packetgraph and integrate it in butterfly.
See vxlan-soe issue and IP frag issue
useful for debuging
nic_id in function request is never used.
Line 252 in d842c98
The goal is to be able to get a server build ID when running a --help command.
This will permit to easily identify the commit from where the server where built
We already have some tests with tcp/udp ports (#45), here we add a few more tests:
This scenario fails:
network_connect 0 1
server_start 0
client_add_nic 0 1 42
client_add_nic 0 2 42
qemu_start 1
qemu_start 2
ssh_ping 1 2
ssh_ping 2 1
qemu_stop 1
client_add_nic 0 1 42
qemu_start 1
ssh_ping 1 2
ssh_ping 2 1
qemu_stop 1
qemu_stop 2
server_stop 0
network_disconnect 0 1
return_result
This should ease debug and can be used in API tests
Initial setup:
Tests that:
Change setup:
Test that:
Change setup:
Test that:
In graph.h there is struct using the linux style:
struct my_struct {...};
struct my_struct variable;
We should use google style instead:
struct MyStruct {...};
MyStruct variable;
Vhost-user performances are quite poor as it still need a packet copy between guest and host.
This ticket is a reminder to work in this issue (which is heavily related to packetgraph)
We should add set -e
in tests/function.sh and check if errors are expected or not.
We should also do this in api/test
rebase NPF to the last version in packetgraph
check that iperf/iperf3 TCP and UDP tests works (not really for benchmarking)
We would like to check if exotic protocol filtering like sctp are managed by Butterfly.
Butterfly will also be able to manage SCTP port ranges.
Note: this issue has already been 95% done with tests/scenario_34/ except that setup/test is not done
Initial setup:
Test that:
Change setup:
Test that:
Change setup:
Test that:
Change setup:
Test that:
We currently have -r option for more details, we should have a --version to show butterfly's version
todo:
When exiting (normal or by signal), Butterfly should clean allocated hugepages by invoking pg_stop()
iperf3 by default fragments IP packets (8k) in UDP. Firewall probably don't let those packets pass.
We can test it by removing -l 1400
from iperf3 tests
Note: if we support vhost offloading, fragmentation should not occurs anymore
Those tests must be added to check if changing security groups change all rules
Here we would like to test rules based on members of security groups.
Test setup:
Check that:
Change setup:
Check that:
Change setup:
Check that:
Option already exists in API (sniff_target_nic_id) and should be implemented.
We may use a combination of hub + diode + vhost bricks:
We must dynamically tweak thread priorities to have a nice packet throughput
Currently, VNI is fixed a NIC creation.
If needed, we can add a call to dynamically change VNI (NicUpdateReq)
Maybe we can replace dpdk options by defaults ones
Instead of always installing the same software on test vm, we should:
And then update butterfly scripts (and packetgraph)
--dpdk-help is broken
We detected a Butterfly crash located in vtep de-capsulation (see packetgraph's bug)
this branch (last test) make VM machine stuck.
network_connect 0 1
server_start 0
client_add_nic 0 1 42
client_add_nic 0 2 42
qemu_start 1
qemu_start 2
ssh_ping 1 2
ssh_ping 2 1
client_del_nic 0 1
client_del_nic 0 2
ssh_no_ping 1 2
ssh_no_ping 2 1
client_add_nic 0 1 42
client_add_nic 0 2 42
ssh_no_ping 1 2
ssh_no_ping 2 1
qemu_stop 1
qemu_stop 2
qemu_start 1 <------ VM stuck here
qemu_start 2
ssh_ping 1 2
ssh_ping 2 1
server_stop 0
network_disconnect 0 1
return_result
VM don't produce any log, vnc socket is not created, we can't ssh it nor connect to console.
Maybe a particular state in message passed through socket to the new VM.
If a SG contains one rule and this rule is removed. A new filter is built with this rule: ( )
This rule does not compile in NPF (but a rule containing only spaces build).
The goal is to provide some basic tests concerning security groups. We must test that:
Just a reminder
The goal is to run Butterfly benchmarks on Outscale's test servers for each commit on master.
Graph::nic_add create a lot of new brick, using shared_ptr, but there is no check to know if
the creation has been successful.
we should use that: http://www.cplusplus.com/reference/memory/shared_ptr/operator%20bool/
In scenarios, we should add a test to check if you can communicate in TCP and UDP between two VMs:
We should also make the same tests with IPv6
We (at Outscale) have physical machines with Intel NICs to test DPDK capabilities.
We would like to easily run benchmarks tests without always hacking our test machines.
Script will build a packaged version of Butterfly and install it on remote machines before running benchmarks on the two machines.
We currently write butterfly server PID but we don't really use it.
We don't want to disallow launching several butterfly (usefull for testing) but we should warn the user through logs instead of failing dpdk init.
typedef std::shared_ptr<struct pg_brick> Brick
is not very explicit, because we don't understand we're dealing with a share_ptr, we need to find a more explicit name(BrickPtr).
BTW: in C++ typedef std::shared_ptr<struct pg_brick> Brick
and
typedef std::shared_ptr<pg_brick> Brick
is the same.
We must check when VM disconnect so we can remove vhost nic and it's branch
We should clean script usages with options and clear --help (like in benchmarks)
We should do this in:
The idea is to allocate bricks in the processing thread.
This should locally allocate memory for better performances (numa).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.