Giter VIP home page Giter VIP logo

dilithium's People

Contributors

alrs avatar dovholuknf avatar michaelquigley avatar plorenz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

alrs lyedc

dilithium's Issues

Westworld v0.2.2

Develop a parallel implementation of westwood supporting the lockless model.

Blaster v0.1

Implement a v0.1 version of the paired TCP+UDP protocol.

Reliable Blast UDP

Survey:

RBUDP is a data transport tool and protocol specifically designed to move very large files over wide area high-speed networks (on the order of gigabits per second). This is a simple replacement for FTP which tends to do poorly over long distance high-speed networks.

Reliable Blast has two goals. The first is to keep the network pipe as full as possible during bulk data transfer. The second goal is to avoid TCP’s per-packet interaction so that acknowledgments are not sent per window of transmitted data, but aggregated and delivered at the end of a transmission phase.

https://www.evl.uic.edu/cavern/RBUDP/Reliable%20Blast%20UDP.html

txPortal High/Low Limits

Implement high and low limits for txPortal sizing. There are likely corner cases where the current implementation can starve itself of portal size and die.

RTT 2

Current RTT time average is accumulated over a fixed 8-RTT window. Make window length configurable.

RTT probes currently at 1 second intervals. Make configurable. Higher RTT probe resolution may allow more efficient retx behavior.

Metrics Instrument

Implement a "metrics" instrument, which is able to capture changing data over time, for visualization.

2->3 Phase Hello

Modify our Hello protocol to include a final acknowledgement.

Stats -> Trace

Incorporate stats into the trace instrument, creating the uber-instrument for development.

MSS

Implement packetization according to a MSS.

fablab Dilithium Proving Grounds

Implement a proving grounds for comparing protocols across varyous WAN links, with multiple types of virtual machines, in fablab.

Metrics Summarizer

We're producing a lot of metrics data. Need to summarize this into something easier to visualize and work with.

Lockless State Management

Minimize the burn on runtime.futex. Get state management working without sync.Mutex and sync.Cond.

Inline Acknowledgement

Iterate our basic v0.1 protocol to support "inline" acknowledgement. Inline acknowledgements are also cumulative, and indicate an acknowledgement "high water mark".

Slightly tricky in that we'll have to send acknowledgements even when there is no outbound data ready for shipment.

RETX RTT 1

We're currently using a hard-coded RETX timeout.

Compute expected ACK arrival time based on observed RTT. If ACK does not arrive in window, RETX.

Configurable MSS

Implement basic MSS packetization. Currently relying on os-level fragmentation.

Fractional txPortal Increase

Experiment with using the size of the admitted data payload as a scaling factor for increasing the txPortal size, instead of a static increase.

Load & Veracity Tooling

iperf is nice and all, and people seem to respect that it's an arbiter of "truth" in terms of the performance of network pipes... but we also need a performance measurement tool, which verifies the integrity of the data traveling across the network.

Probably will look something like the loop2 tool in the ziti fabric.

Analyzer Configuration Annotations

Capture westworld2 configuration details alongside the metrics output. Use these details to create configuration annotations that are available in the analyzer.

Memory Pooling 2

Next iteration of westworld/wb and the pooled buffer system behind them.

Automated Metrics Ingest (dilithium influx)

Modularize the dilithium influx code, such that it continues to work from the dilithium cmd, but make it embeddable so that it can be inserted into fablab to automate retrieval of remote metrics and insertion into the analyzer.

Tunnel Performance Metrics

Capture and analyze perceived tunnel performance at the client and server, regardless of underlying protocol. This will allow us to produce metrics and graphs regardless of protocol.

TCP Westwood[+]

What can we learn from the Westwood[+] implementation of TCP?

TCP Westwood significantly increases fairness wrt TCP (New) Reno in wired networks and throughput over wireless links.

Soft-Start & Congestion 1

Implement a pluggable soft-start and congestion control implementation for proving grounds testing.

APAC Proving Grounds

Head to the APAC regions with the most onerous conditions, and square off with tcp.

Externalize Configuration Profile

We're going to want to run various configurations of westworld against one another, without having to recompile our dilithium executable. Externalize the various tunables, such that we can run different variants of the configuration against one another for comparison.

Every-N Retx/DupAck Signalling

I have a theory that the jumbo frame "cheat" is ultimately adjusting down the sensitivity of the portal scaling. Introducing an "every-n" sensitivity adjustment to portal scaling events might achieve the same effect.

Random Starting Sequence / Sequence Rollover

Implement random starting sequence numbers. The hello portion of the protocol already supports starting from a non-zero sequence number.

Ensure that sequence number rollover is operating correctly (it most certainly is not, currently).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.