sipb / spike Goto Github PK
View Code? Open in Web Editor NEWImplementing a packet level software network load balancer
License: MIT License
Implementing a packet level software network load balancer
License: MIT License
Currently spike always sends the encapsulated packets as IPv4. We should be able to emit both IPv4 and IPv6 packets.
We can't tell the difference between packets being dropped and taking a long time to process. We should find a way to eliminate the timing dependence from tests.
Spike needs to report its own health somehow.
We need to be able to handle fragmented IP packets.
We need a way of passing configuration options into spike.
Line 20 in 71e4eae
"consistent" should not be there.
We should enforce that the maglev table size is prime in the constructor.
https://github.com/sipb/spike/blob/master/maglev/maglev.go#L40-L44
Snabb is single-threaded by default, but is capable of multithreading. We should run multiple packet handling threads if possible.
So far, we have made progress on consistent hashing, connection tracking, and server health checks.
consistent hashing: https://github.com/jma100/spike (jingweim)
server health checks: https://github.com/CatherineZeng/spike (yczeng)
connection tracking: https://github.com/ed1d1a8d/spike/blob/lru-testing/lru-test/lru-test.go (twang6)
We are trying to put together the modules atm.
issues: writing tests for consistent hashing module: (dkogut, gh1)
Backends should be able to report three possible states:
Right now all packets get forwarded to a single backend pool
The health checker doesn't account for the health endpoint itself being down. It should treat the service as down if the endpoint is unreachable.
Test that spike behaves correctly on pcap files
We should fuzz spike to increase our confidence that it can handle malformed packets.
Spike should expose a method of reconfiguring itself live, remotely.
Test that spike behaves correctly on real hardware.
A guide containing the required dependencies as well as dev setup instructions would be nice.
We need to advertise routes to the router somehow.
Add connection tracking instead of looking up the connection with consistent hashing every time.
I propose that we get rid of the function Add:
https://github.com/sipb/spike/blob/master/maglev/maglev.go#L109-L111
I think it complicates the api. I feel things would be simpler if only SetWeight were used.
We need to bound the amount of packet fragments that we store. Relatedly, we should have a way of disabling support for packet fragmentation altogether.
Currently spike reads and writes pcap files. We should get it working with an actual NIC.
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.