Docker Multicast Networking: Maximum Warp Speed
Weave Net is unique among Docker container networking solutions in that it supports multicast networking. In multicast, a sender can transmit data once and have it delivered to multiple receivers in a multicast group. It’s...
Weave Net is unique among Docker container networking solutions in that it supports multicast networking. In multicast, a sender can transmit data once and have it delivered to multiple receivers in a multicast group. It’s popular in software that generates and distributes data feeds for other applications to consume.
Weave Net has always supported multicast because it faithfully emulates a full layer 2 network, just like you’d normally get with a server attached to a standard Ethernet network. It even works when the underlying network (the one connecting the Docker hosts) does not support multicast, as is the case today at public clouds like AWS and Azure.
In the latest Weave Net release multicast is much faster. For maximum efficiency, Weave Net doesn’t touch each individual packet sent or received by a container; it sets up flow rules for the Open vSwitch module inside the Linux kernel to do the heavy lifting. So when we saw high CPU at a customer using multicast, that was a problem.
To cut a long story short, we streamlined packet flow processing for multicast and our customer was able to max out the sending speed of their application at 800 Mbps, which is enough to stream 28 concurrent HD movies. At that point the sending application became the bottleneck. If you have a more challenging case than this let us know!
The new version of Weave Net, 1.4.5, is available immediately from Github and DockerHub, and it works on your laptop, in your data center and in public clouds. It also works with any orchestrator, including Docker Swarm and UCP, Kubernetes, Mesos and Mesosphere DCOS. So go forth and multicast!