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.
© 2011 - 2013 Cetin Sert
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.
For more information see source code repository!
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
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:
@ 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"
establish read write
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.
Our initial release beats TeamViewer 6 VPN by completing a download 20x faster!
Compared to certain configurations of the following commercial products:
PortFusion has the following advantages:
Please share your comments by posting to the comments thread of the PortFusion forum or by emailing us directly!