{"repo":"porech/engarde","free":true,"listed":false,"github":"https://github.com/porech/engarde","clone":"git clone https://github.com/porech/engarde.git","description":"A go network utility to create a reliable IP tunnel over multiple connections","language":"Go","stars":360,"topics":["engarde","wireguard","tunnel","wireguard-ip","bandwidth","failover","wireguard-tunnel","packet"],"license":"GPL-2.0","category":"networking-infra","readme_excerpt":"engarde - Don't lose that packet! Official Facebook page What is engarde? engarde is a network utility specifically designed to create a point-to-point tunnel over multiple network (typically Internet) connections, ensuring that the tunnel stays up and healty without a single delay or package loss, as long as at least one of the connections is working. How is it possible? engarde relies on the encryption and the de-duplication technology of the underlying WireGuard connection. It takes every UDP packet that is emitted by WireGuard and sends it through every avaliable connection. So, the first package that reaches its destination wins, and the others are silently discarded by WireGuard itself. In the same way, every response packet is sent to all the connected sockets, reaching the origin through all the connections. Doesn't WireGuard already support roaming between different connections? It does, it's awesome and it's one of the things engarde relies on. WireGuard, however, sends its UDP packets over the default system interface for a specific route, usually the one used to access the Internet. If this interface goes down or loses access to the network, it's up to the operating system to detect it and change the routing table accordingly - and it doesn't always do it right. So, is it a failover/bonding connection mechanism? In some way, engarde is similar to a failover mechanism, but it doesn't switch the connection when a problem occurs: this would inevitably lead to a delay","default_branch":null,"files":null,"tree":[],"storefront":"/r/porech","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/porech/engarde/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}