porech / engarde

A go network utility to create a reliable IP tunnel over multiple connections
GNU General Public License v2.0
275 stars 41 forks source link

Can this be user for Live Video Streaming ? #87

Open gaamaaresosa opened 1 year ago

gaamaaresosa commented 1 year ago

Hi ale-rinaldi,

First of all thank you so much for your wonderful project.

I am trying this on engarde server on Ubuntu VPS engarde cliner on Window 10

What ever I try I see internet becoming dead slow after injecting engarde. Other wise WireGuard alone works fine.

The installation guide is not clear to understand. But some how understood the flow and started.

Btw, can we use this for live video streaming ?

ale-rinaldi commented 1 year ago

Hello @gaamaaresosa ,

I can confirm you can use this for video streaming, as for whatever else.

Sorry if the guide is not clear, I know and I'd like to have more time to refactor the code and create a simpler setup flow. I'm sure it will happen one day.

As for the Internet becoming dead slow, the first thing I'd do is to make sure you excluded the Wireguard interface itself from Wireguard, as well as the other interfaces that are not connected to the Internet.

Please let me know if this is useful.

Thanks

gaamaaresosa commented 1 year ago

Thank you so much for quick reply. I doubt my cloud vps show having eth1 (Local IP) May be that could be the issue. I will try changing another could vps.

ale-rinaldi commented 1 year ago

I don't think this is the issue: can you please enable the webui on engarde client and share with me a screenshot of what you see in it?

gaamaaresosa commented 1 year ago

Client

Here is the client UI But I couldn't take Server UI because once I starting engarde client the internet becoming very slow.

This is ping report after starting engarde client:

ping 8.8.8.8 -t

Pinging 8.8.8.8 with 32 bytes of data: Reply from 8.8.8.8: bytes=32 time=237ms TTL=114 Reply from 8.8.8.8: bytes=32 time=244ms TTL=114 Reply from 8.8.8.8: bytes=32 time=245ms TTL=114 Request timed out. Reply from 8.8.8.8: bytes=32 time=252ms TTL=114 Request timed out. Request timed out. Request timed out. Reply from 8.8.8.8: bytes=32 time=241ms TTL=114

Ping statistics for 8.8.8.8: Packets: Sent = 9, Received = 5, Lost = 4 (44% loss), Approximate round trip times in milli-seconds: Minimum = 237ms, Maximum = 252ms, Average = 243ms

This is my cloud VPS :

gbonding@199:~$ ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 68.XXX.161.199 netmask 255.255.255.255 broadcast 0.0.0.0 inet6 fe80::5054:fdff:fed7:2d4b prefixlen 64 scopeid 0x20 ether 52:54:fd:d7:2d:4b txqueuelen 1000 (Ethernet) RX packets 26246115 bytes 22197690764 (22.1 GB) RX errors 0 dropped 1 overruns 0 frame 0 TX packets 88842407 bytes 72111525017 (72.1 GB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (Local Loopback) RX packets 127028441 bytes 84878347254 (84.8 GB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 127028441 bytes 84878347254 (84.8 GB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1423 inet 10.0.0.1 netmask 255.255.255.255 destination 10.0.0.1 unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC) RX packets 5359467 bytes 3997983915 (3.9 GB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 23698227 bytes 14947911497 (14.9 GB) TX errors 0 dropped 34 overruns 0 carrier 0 collisions 0

ale-rinaldi commented 1 year ago

Sorry, I can't understand exactly what are the different interfaces that are connected to the Internet. For what I see, only HATWAY_ONBOARD. At this point, using Wireguard directly is enough.

For the Internet drop, just try adding engarde_Bonding to the exclusions, I think it will do it.

Marctraider commented 1 year ago

Did you account for MTU on endpoints? Tunnel for ipv4 is 1440, ipv6 1420 iirc.

gaamaaresosa commented 1 year ago

MTU = 1440 is maditory on both client and server of WireGuard ? First I am re testing WireGuard tunnel p2p alone without Engarde. Its working... When I ping from client to 10.0.0.1 (wg server) I get responce. But when I ping from server to 10.0.0.2 (wg client) I don't get responce. The ping from server to client is must right ? I changed DigitalOcean VPS also and I see same issue. I even pulled out HATWAY_ONBOARD main ISP on ethernet and used Mobile tethering as main internet. Still reverse ping from server to client (10.0.0.2) not happening. First I need to fix it, then only I should try Engarde

Marctraider commented 1 year ago

Not sure about the rest, but everything that gets pushed over the tunnel needs to adjust it's MTU to 1420/1440 respectably.

Otherwise packets will get fragmented and this is primarily causing TCP protocol to fragment packets, can cause throughput issues.

I.e all my windows boxes required lowering MTU with powershell or cmd on network adapter.

For devices where this is harder to accomplish (i.e. android phone), I had to use TCP MMS clamping in firewall.

With decent cpu (older i5/i7 or celeron ~ 2.6ghz) thoughput should easily be a few hundred megabit. (Assuming two connections)

gaamaaresosa commented 1 year ago

Hi ale-rinaldi,

I think I am managing to make engarde to work on my Ubuntu Server/Windows Client. AVG Firewall keep blocking WireGuard interface on every start/stop. I am allowing on firewall. But most of the time my internet not working after activating the WireGuard+Engarde.

Please clear me these doubts : 1) I am connecting 3 SIM card based USB dongles for internet with 1Mbps upload speed each. I see 3 interfaced on Encarde Client UI. I need to do live video streaming (upload) with 2.5Mbps bandwidth. Can I get all these 3 dongles internet aggregated and get 2.5 to 3Mpbs ?

2) Is this technology does Channel Bonding, Internet Aggregation, Load Balancing and Failover on the live video streaming ?

3) If I disconnect and reconnect one of these USB dongle while live video stream, what will happen ? The live video stream goes black for a while and restarts or seamlessly works with other 2 USB dongle internet ?

4) In short can we use it as an alternate solution for speedify.com ?

5) WireGuard tunnel suppose to bypass Firewalls, but why so must trouble I face on evert Stop/Start Firewall produce new instance named networks and that manually I have to unblock every time ?

I appologies for these long questions and thanks in advance.

gaamaaresosa commented 1 year ago

On my several hours of experiments the "Engarde Windows Clients (engarde-client_Windows_amd64.exe)" could not transfer the pockets to destination WireGuard client.

I use AVG Internet Security software in which I see only WireGuard interface Allow/Block option. I set Allow and complete chain till server no issue only if I bypass "Engarde Windows Clients".

May be "Engarde Windows Client" has some bug or Windows 10 blocking "Engarde Windows Client" somewhere.

If any one faced this issue and fixed, please help me.

Marctraider commented 1 year ago

This application is not for aggregating of multiple internet connections to get higher speed.

ale-rinaldi commented 1 year ago

Sorry @gaamaaresosa , at the moment engarde can aggregate multiple connections only for stability, not to improve speed. That's like the "reduntant mode" bonding of Speedify. I'm planning to add the other mode, to improve speed, but I'm struggling to find time to do that (contributions are always appreciated, btw ;D). I promise I will one day.

gaamaaresosa commented 1 year ago

Hi ale-rinaldi, That would be a great news. You are a genius can do the addons easily, but as you said the time availability. Thanks a ton !

TalalMash commented 1 year ago

Sorry @gaamaaresosa , at the moment engarde can aggregate multiple connections only for stability, not to improve speed. That's like the "reduntant mode" bonding of Speedify. I'm planning to add the other mode, to improve speed, but I'm struggling to find time to do that (contributions are always appreciated, btw ;D). I promise I will one day.

Engarde is a very useful tool and works well with livestreaming (added it to SmoothWAN for Speedify redundant alternative) thanks for making this public.

The advantages/disadvantages compared to Speedify redundant from my tests if it's any use: Engarde:

ale-rinaldi commented 1 year ago

Thanks for your feedback @TalalMash, I hope to be able to provide the classic bonding to improve speed, I feel like it would be useful for SmoothWAN :)

About packet ordering, it's not guaranteed by Engarde itself, it's Wireguard that will drop packets which are not in order. In some specific situation this may lead to some packet loss; in fact I usually do stuff with TCP over Wireguard over Engarde :)