{"action":"created","issue":{"url":"https://api.github.com/repos/ipfs/ipfs/issues/324","repository_url":"https://api.github.com/repos/ipfs/ipfs","labels_url":"https://api.github.com/repos/ipfs/ipfs/issues/324/labels{/name}","comments_url":"https://api.github.com/repos/ipfs/ipfs/issues/324/comments","events_url":"https://api.github.com/repos/ipfs/ipfs/issues/324/events","html_url":"https://github.com/ipfs/ipfs/issues/324","id":320274598,"number":324,"title":"Use multiple connections to a node simultaneously, with dynamic load balancing based on speed","user":{"login":"MirceaKitsune","id":825418,"avatar_url":"https://avatars2.githubusercontent.com/u/825418?v=4","gravatar_id":"","url":"https://api.github.com/users/MirceaKitsune","html_url":"https://github.com/MirceaKitsune","followers_url":"https://api.github.com/users/MirceaKitsune/followers","following_url":"https://api.github.com/users/MirceaKitsune/following{/other_user}","gists_url":"https://api.github.com/users/MirceaKitsune/gists{/gist_id}","starred_url":"https://api.github.com/users/MirceaKitsune/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MirceaKitsune/subscriptions","organizations_url":"https://api.github.com/users/MirceaKitsune/orgs","repos_url":"https://api.github.com/users/MirceaKitsune/repos","events_url":"https://api.github.com/users/MirceaKitsune/events{/privacy}","received_events_url":"https://api.github.com/users/MirceaKitsune/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-05-04T13:26:31Z","updated_at":"2018-05-07T12:52:56Z","closed_at":null,"author_association":"NONE","body":"I recently started a discussion on the forum and the IPFS subreddit, in the wake of which I decided to open an issue here as well. The subject was out-of-the-box LAN support, and it spawned further discussion about IPFS being able to use multiple connections at once.\r\n\r\nhttps://discuss.ipfs.io/t/communication-via-lan-rather-than-just-internet\r\n\r\nI wanted to suggest the ability for IPFS nodes (go-ipfs and js-ipfs) to use multiple network connections simultaneously (over LAN and internet alike), even when communicating with the same node. I believe this can be used to further decrease bandwidth and increase networking speeds, by distributing the load to all possible sources that can be used to network data.\r\n\r\nTo offer a practical example: Let's presume that I have two computers in my house, both connected to the same WiFi router (192.168.1.1 and 192.168.1.2). Both are connected to the internet, however they can also communicate through the LAN cable connecting them... for the sake of example let's say they are also connected through WiFi. Both computers therefore have the following 3 connections:\r\n\r\n- An internet connection (10 MB/s).\r\n- A local cable connection with each other (100 MB/s).\r\n- A local wireless connection with each other (50 MB/s).\r\n\r\nNext the IPFS node on one computer wants to download something from the IPFS node on the other computer. From what I understand, IPFS can detect and is thus able to use any of those 3 connections (LAN + internet), so the question is about how it will use them.\r\n\r\n- Current functionality: IPFS will ping all 3 connections and see which replies first. The first that answers (cable LAN @ 100 MB/s) is considered the fastest and wins, the others are ignored. From what I understand, IPFS will stick to that connection indefinitely for that communication.\r\n- Proposed functionality: IPFS will ping all 3 connections and take note of how fast each one replies. It will then transfer bits of the data through all of them, distributing the load so that the fastest handles the most traffic. New pings occur in the background every few seconds, re-determining the speeds and re-adjusting the balance dynamically. In this case: The 100 MB/s connection handles 60% of the load, the 50 MB/s connection handles 30%, the 10 MB/s connection handles the remaining 10%.\r\n\r\nI'm inclined to believe that proportionally distributing traffic across all available connections to another node is faster than using only the fastest connection detected, granted the distribution formula is efficient enough. The impact shouldn't be great, however even a small difference can often have a noticeable effect for the end user."},"comment":{"url":"https://api.github.com/repos/ipfs/ipfs/issues/comments/387054860","html_url":"https://github.com/ipfs/ipfs/issues/324#issuecomment-387054860","issue_url":"https://api.github.com/repos/ipfs/ipfs/issues/324","id":387054860,"user":{"login":"Kubuxu","id":2259282,"avatar_url":"https://avatars3.githubusercontent.com/u/2259282?v=4","gravatar_id":"","url":"https://api.github.com/users/Kubuxu","html_url":"https://github.com/Kubuxu","followers_url":"https://api.github.com/users/Kubuxu/followers","following_url":"https://api.github.com/users/Kubuxu/following{/other_user}","gists_url":"https://api.github.com/users/Kubuxu/gists{/gist_id}","starred_url":"https://api.github.com/users/Kubuxu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Kubuxu/subscriptions","organizations_url":"https://api.github.com/users/Kubuxu/orgs","repos_url":"https://api.github.com/users/Kubuxu/repos","events_url":"https://api.github.com/users/Kubuxu/events{/privacy}","received_events_url":"https://api.github.com/users/Kubuxu/received_events","type":"User","site_admin":false},"created_at":"2018-05-07T12:52:56Z","updated_at":"2018-05-07T12:52:56Z","author_association":"MEMBER","body":"@Cole128 we don't rely on DHT, in local network IPFS with use mDNS to discover peer. When we are connected to a peer we can fetch the content from it directly without using DHT."}}
{"actor":{"display_login":"Kubuxu"}}