4 ms·
Anyone know of anything like this but at the TCP level? I would love to have a way of simulating network partitions and different message delays for distributed
by anonymousDan 5y ago
Anyone know of anything like this but at the TCP level? I would love to have a way of simulating network partitions and different message delays for distributed algorithms implemented in Elixir. In an ideal world I'd be able to hook the elixir send/receive primitives to intercept messages between processes even in a single node.
- kevin_nisbet 5y agoMay or may not be what you're looking for, but you can do lots of this in linux by using tc. https://man7.org/linux/man-pages/man8/tc.8.html https://man7.org/linux/man-pages/man8/tc.8.html Requires care to use and understand, so may not be applicable, but allows introducing latency, jitter, packet loss, etc.
- touisteur 5y agoPrecisely tc and netem. To give an idea how powerful and tuneable netem can be, we had a piece of network gear that lost messages if they were too close in time to each other (less than N microseconds). Probably some 'copy packet during interrupt' stuff. We couldn't change anything in the applications or the network gear. The solution was (on the sender side) to 1) classify with tc the specific packet sequence and 2) delay the second message in the sequence. It's a large command-line, it does the job perfectly. It's marvelous.
- zamadatix 5y ago+1 for tc. Used to run a network testing lab of about 12 racks of network gear and tc was my go-to for simulating network level performance impacts for both small and large test scenarios.
- tfigment 5y agoI used to use WanEm but it was never really maintained but great for my manual networking tests. Would like something similar now but updated.
- StarBrilliant 5y agoNot sure if this software satisfies your need: https://github.com/tylertreat/Comcast https://github.com/tylertreat/Comcast
- buzzier 5y agohttp://jagt.github.io/clumsy/ http://jagt.github.io/clumsy/ (windows)
- redprince 5y agohttps://www.freebsd.org/cgi/man.cgi?dummynet https://www.freebsd.org/cgi/man.cgi?dummynet The dummynet system facility permits the control of traffic going through the various network interfaces, by applying bandwidth and queue size limitations, implementing different scheduling and queue management policies, and emulating delays and losses. ... The dummynet facility was initially implemented as a testing tool for TCP congestion control by Luigi Rizzo, as described on ACM Computer Communication Review, Jan.97 issue.
- mixtur2021 5y agoIsn't this already at a TCP level? HTTP is only used for management of the proxy?
- Mavvie 5y agoYeah, all the other replies confuse me. Toxiproxy _is_ a TCP proxy. You can use it for Redis, MySQL, or anything else that runs on TCP.
- anonymousDan 5y agoAh, I see, my bad. If I understand correctly though it's mostly for hooking client/server architectures? I'm interested more in things like hooking comms between replicas of a replicated database or an implementation of paxos. Would it be useable for that? For example, can I take a list of processes running on different ports and set up a proxy per connection (assuming they are connected all-to-all)? Maybe I should just RTFM :)
- koudelka 5y agoYou might be interested in Partisan's fault injector. I don't know if @cmeiklejohn is still working on it, but it's really cool nonetheless. https://www.youtube.com/watch?v=KrwhOkiifQ8 https://www.youtube.com/watch?v=KrwhOkiifQ8 https://github.com/lasp-lang/partisan https://github.com/lasp-lang/partisan
- fluential 5y agoIptables random module
- gaul 5y agoVaurien can do this: https://github.com/community-libs/vaurien https://github.com/community-libs/vaurien