PortFusion™
is a minimalistic, cross-platform, transport-layer distributed reverse /
forward proxy for TCP written in Haskell + LLVM and released under GPLv3.
A single package that makes the most of each platform by tapping into their unique capabilities, combining this power with an intuitive interface, beautiful design and Haskell's excellent support for unprecedented levels of concurrency and parallelism.
It strives for the smallest source code size while delivering maximum throughput with near zero overhead.
PortFusion 1.2.1 ]-[ayabusa Delivers
Since its launch, it has enabled complete independence from network administrators from outside the two institutions and is now actively used for TCP traffic in a multitude of protocols (including HTTP, SPDY, S/FTP, RDP (remote desktop), VNC, and many WCF services) with 0 downtime.
It is PortFusion on the internal machine that establishes duplex communication channels with PortFusion on the public machine via outgoing
connections: the fact that the connection originates from within the
internal network enables 0-configuration firewall penetration.
Connect multiple internal machines to a single PortFusion instance:
.
Fuse multiple ports at two public servers with multiple endpoints accessible from the local area network:
.
establish read write
The extremely small size of PortFusion makes complete rewrites or large refactorings a piece of cake, ensuring continued performance in future versions.
Our initial release beats TeamViewer 6 VPN by completing a download 20x faster!
from http://sourceforge.net/p/portfusion/home/PortFusion/
A single package that makes the most of each platform by tapping into their unique capabilities, combining this power with an intuitive interface, beautiful design and Haskell's excellent support for unprecedented levels of concurrency and parallelism.
It strives for the smallest source code size while delivering maximum throughput with near zero overhead.
PortFusion 1.2.1 ]-[ayabusa Delivers
True Cross-Platform Support and
Native Code Performance
See complete table of changes
PortFusion has been developed at the University of Heidelberg for the Department of Political Science (IPW) to establish high-throughput links to gateway servers at the Interdisciplinary Center for Scientific Computing – circumventing tedious paper work demands (just to open IPW servers to the public) and continued interference of lesser network admins from the general computing center of the same university.Since its launch, it has enabled complete independence from network administrators from outside the two institutions and is now actively used for TCP traffic in a multitude of protocols (including HTTP, SPDY, S/FTP, RDP (remote desktop), VNC, and many WCF services) with 0 downtime.
Features
- Hassle-free firewall penetration via tunneling
- Protocol-neutral design (works with any TCP-based protocol)
- Open-source (you can know exactly what it is doing)
- Simplicity (< 500 lines of code: you can read it in minutes! Now try that with OpenVPN.)
- High performance with multi-threading and asynchronous calls (check speed test videos below)
- No installation process
- Command line interface for easy launch-time configuration
- Distributed, client / server architecture
- Used in production for RDP, SSH, S/FTP, VNC and WCF services
- Support for IPv6+4 (dual stack), IPv6-only and IPv4-only platforms
- Interactive REPL
Examples
Start PortFusion on an internet-facing public server and on an internal one behind a firewall and fuse port 80 at the public server with port 80 at the internal one:@ public > PortFusion ] 4305 [ @internal.1> PortFusion 80 localhost - 4305 public [ 80
Connect multiple internal machines to a single PortFusion instance:
@ public > PortFusion ] 4305 [ @internal.1> PortFusion 80 ::1 - 4305 public [ 80 @internal.2> PortFusion 80 ::1 - 4305 public [ 81
Fuse multiple ports at two public servers with multiple endpoints accessible from the local area network:
@ public.1> PortFusion ] 4305 [ @ public.2> PortFusion ] 4305 [ @internal.1> PortFusion "80 localhost - 4305 public.1 [ 80" "80 internal.2 - 4305 public.1 [ 81" "3389 internal.3 - 4305 public.2 [ 82"
Schema
establish read write
- 1 PortFusion instance started on a publicly accessible server acts as a gateway to the public internet
- 2 PortFusion instances started in networks behind corporate firewalls connect to the public PortFusion instance and establish tunnels for traffic relay
- clients from the public internet connect to the public PortFusion instance
- PortFusion relays all TCP traffic to real hosts behind corporate firewalls and all their replies back to clients from the internet
Performance
PortFusion is designed and constantly tested for maximum performance with best tools available to ensure a perfect fusion between machines.The extremely small size of PortFusion makes complete rewrites or large refactorings a piece of cake, ensuring continued performance in future versions.
Speed Test: TeamViewer VPN vs PortFusion
Our initial release beats TeamViewer 6 VPN by completing a download 20x faster!
Comparison to Commercial Products
Compared to certain configurations of the following commercial products:- TeamViewer VPN
- LogMeIn Hamachi²
- GoAnywhere Gateway™
- WinGate
- complete source code, less than 500 lines
- single unified binary handling both server and client tasks
- transfer speeds as high as your network permits
- no license fees ever
- no restrictions on the duration of your connections
- no restrictions on the number of concurrent clients
- no installation / setup
- no administrative access / confirmation requirement
- free support
Notes
- Developed for Windows, GNU/Linux, OS X and FreeBSD
- Deployed at the University of Heidelberg in large-scale research project networks
Your Comments
Please share your comments by posting to the comments thread of the PortFusion forum or by emailing us directly!Contact
fusion@corsis.eufrom http://sourceforge.net/p/portfusion/home/PortFusion/