Connectify Hotspot으로 예전부터 알아왔던 Connectify에서 이번에 로드밸런싱을 소프트웨어적으로 지원하는 프로그램인 Connectify Dispatch를 발표했다. 어떤 방식으로 작동하는지 알기 위해 찾아보다가 아래의 본문을 발견하여 이를 짚어보기로 하였다. http://www.connectify.me/wifi-hotspot-technology-overview/
Connectify Dispatch: A Software Load Balancer on your PC
Connectify Dispatch is PC software that lets you connect to all available Internet connections simultaneously for their combined speed, and increased reliability. You already pay for high-speed Internet at home, data access on your smartphone, and mobile broadband on the go. Now, with Connectify Dispatch, you can combine those expensive connections to get the fastest Internet experience possible.
A multi-WAN router (multiple Wide Area Network) is a router that has multiple network interfaces into which you can plug in Internet connections to have them load balanced. This is traditionally a high-end piece of hardware. Connectify Dispatch turns your existing Windows computer into a multi-WAN router capable of combining and load balancing across all the Internet connections you have available.
Connectify Dispatch gives you all of the bandwidth bonding capabilities of those multi-WAN hardware load balancing routers at a fraction of the cost. No need to waste time and money configuring and carrying around another hardware device. Dispatch is a software-based Internet load balancer that offers premium features like 3G and 4G link bonding, at-a-glance Internet speed testing (via the Dispatch Analytics Dashboard), and much more. One of the great advantages of Dispatch is that it load balances any Internet connection that you have working on your PC, whether they are built-in, USB devices, or Wi-Fi networks. Compare this to a multi-WAN router: you get a couple of Ethernet ports; if your Internet isn’t coming from an Ethernet cable, it can’t help you. If you’re lucky the multi-WAN router might take a 3G or 4G SIM card, but may not work with your existing USB dongle or mobile hotspot, such as a Mi-Fi. On the flip side, Connectify Dispatch is easily expanded to support any network interface that Windows supports. Only have one on-board Wi-Fi adapter, but you have access to two separate access points? Add a second Wi-Fi adapter via USB and Dispatch will start using it. Upgrade your old 3G USB dongle to a new 4G smartphone with tethering without worrying whether the multi-WAN device supports it, because Dispatch will work as long as Windows has drivers for the new hardware.
=> 링크 본딩을 한다고 해서 HA같은것을 사용하나? 하고 생각했다. 왜냐하면 물론 여기에서 말하는 라우터에서는 명령어 몇줄로 로드 밸런싱이 가능하지만 이것은 동일한 연결 네트워크 상에서의 일이기 떄문이다.(route만 바뀐것이기 떄문에) 하지만 wifi, 4G의 경우는 어떤가, 전혀 다른 네트워크이기 때문에 ip 환경상에서는 특별한 조치 없이 소프트웨어만으로 (라우터에서의) 완전한 링크 본딩을 이룰 수 없다. 아무튼 흥미를 돋우는 주제이므로. 계속 보기로 하자.
How Connectify Dispatch Works
Connectify Dispatch takes control of your PC’s Internet connectivity to look at every packet going into and out of your computer. When the packet is intercepted, Connectify Dispatch is able to route it to a desired network adapter. Using proprietary algorithms, Connectify Dispatch is able to determine the best physical adapter to use, and depending on user settings, Dispatch spreads your Internet traffic across available adapters to optimize your experience. The Dispatch user interface works hand-in-hand with this cloaked, low-level networking horsepower to provide load balancing and Internet speed acceleration.
At its core, Connectify Dispatch is built on a patent-pending Reverse Network Address Translation (RNAT) technology. Dispatch allows you to use multiple Internet connections at the same time by load balancing client connections across multiple Internet connections, without any server-side component. Every time a program on your computer (or on a computer connected to your Connectify Hotspot network) creates a new network socket, Dispatch jumps in and makes a decision about how to handle that socket.
As it is done on the client side, each socket is assigned to one of the Internet connections at creation time, and cannot be migrated to another connection. Socket assignment cannot change because the resource connected at the destination would see the IP address change, invalidating the socket. This particular implementation provides potential benefits over a single connection as loads can be distributed.
Connectify Dispatch watches every Internet connection on your computer and continually gathers metrics to quantify the quality of the connection along three pillars of network performance: throughput, reliability, and latency. Based on these metrics, as well as interface priorities set by the user, the rules-based routing engine determines which connection is the best one for each socket.
Once Connectify Dispatch has decided which Internet connection a socket should “live on”, it passes the stream of data to its Reverse NAT. The reverse NAT maintains a network address translation (NAT) table in memory, tracking which local socket has been mapped to each outgoing socket, and what connection that is going out on. As each packet goes through the system, Connectify Dispatch’s network filter driver uses this NAT table to change the headers on the packet, and then direct it out the appropriate network interface.
=> 즉, 각 소켓 생성시 핸들을 붙잡아 놓고 패킷이 나가기 전에 Reverse NAT을 사용하여 헤더를 변경한 후, 적절한 메트릭을 갖는 인터페이스로 패킷을 내보내는 것이다. 물론 요금제 사용자등을 위해 사용자가 지정한 규칙을 적용할 수 있는것 또한 장점이다. 물론 대용량 파일 다운로드등에는 효과가 없겠지만, 아래 글에서 보듯 체감 효과를 높일 수 있는 좋은 아이디어라 생각한다.
What Applications Does Connectify Dispatch work with?
Streaming video applications (like Netflix) typically use a single socket. In this case, Dispatch will usually make a decision to put that socket onto the fastest Internet connection, and then let all your other traffic go over the other Internet connections. So the movie does not get more bandwidth than a single connection can provide, per se, but because it no longer needs to compete with your other traffic, you get smoother playback. The result is a net positive, with your bandwidth-intensive movie streaming having little effect on the download speeds that your other applications are experiencing.
One other special case where Dispatch needs some configuration is when a VPN is involved. VPNs generally work by intercepting all traffic bound to the VPN server and encrypting it so it can be safely transmitted across the Internet. Once this traffic is encrypted, the VPN uses a single socket to transmit that data. In that case it will behave similarly to video streaming by keeping all the traffic destined for the VPN on a single adapter and it can’t be load balanced. Additionally, however, VPNs perform a secure handshake when connecting. This may require more than one socket. If these two sockets end up on separate connections due to Dispatch’s load balancing algorithm, however, the VPN server can be confused into thinking that the client handshake is not valid since the origin of those two sockets don’t match. In this case, however, Dispatch’s application-specific connection assignment allows you to assign your VPN application to a specific network adapter to ensure these sockets remain on the same socket. This allows the handshaking to proceed and doesn’t limit the VPN performance.
=> 위에 작성되었듯, 웹서핑이나 토렌트를 사용하는 경우 상당한 효과가 있을것으로 생각된다. 하지만 세션이 (역시 그 아래에 있듯) VPN과 같이 ip-specific한 경우에 있어서는 오히려 접속 불안을 초래할 수 있다. 이때 사용자가 기능을 비활성화 하여 기존의 연결방식대로 사용할 수 있겠으며, 이때 물론 어플리케이션(혹은 연결)이 하나만 동작하는 것은 아니므로, 약간의 전반적인 성능 향상을 기대할 수는 있다. application-aware 한 기능이 추가가 된다면 더욱 범용적인 소프트웨어가 될 수 있겠지만 아직은 사용자에게 전반적인 인터넷 지식이 갖춰져야 원활히 사용될 수 있을거라 생각한다.
아무튼 이런 아이디어를 짧은 시간내에, 사용자들의 후원을 받으며, 구현해 냈다는 것이 대단하다.(connectify 구현 과정에서 많은 노하우가 축적되었겠지) 하지만 Connectify Dispatch + Hotspot PRO LIFETIME Bundle = ￦100,809 인것처럼, 가격이 좀 부담스러운것이 단점이긴 하다.