Top 23 Go Networking Projects
-
fasthttp
Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http
I went with fasthttp, which provides high performance, zero memory allocations in hot paths and Up to 10x faster than net/http for a large throughput service. Go provides out of the box http support but for a beginner, it felt much easier to go with a framework, thereby ended up using fiber.
-
kcptun
A Stable & Secure Tunnel based on KCP with N:M multiplexing and FEC. Available for ARM, MIPS, 386 and AMD64。KCPプロトコルに基づく安全なトンネル。KCP 프로토콜을 기반으로 하는 보안 터널입니다。
-
Scout
Get performance insights in less than 4 minutes. Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.
-
cilium
eBPF-based Networking, Security, and Observability
cilium/cilium (Go): eBPF-based Networking, Security, and Observability
-
dns
DNS library in Go
Project mention: Go 1.16 will make system calls through Libc on OpenBSD | news.ycombinator.com | 2021-02-01Had a similar problem a couple years ago where I needed to use alternative DNS libraries to troubleshoot issues in a company's infrastructure.
Golang's rules for what implementation to use are found here: https://golang.org/pkg/net/#hdr-Name_Resolution
A really solid alternative DNS client implementation can be found here: https://github.com/miekg/dns. Real easy to read and vet compared to a few other libraries I ran into when working on this problem.
-
httpstat
It's like curl -v, with colours.
-
quic-go
A QUIC implementation in pure go
As you know from carefully reading the paper, it states that they cloned the sites with HTrack and served them on their LAN with "Caddy Server2". Perhaps then we could guess that the version of QUIC they tested is the version of QUIC that Caddy is using: https://github.com/lucas-clemente/quic-go (v0.19.3)
-
gopacket
Provides packet processing capabilities for Go
-
gnet
🚀 gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go./ gnet 是一个高性能、轻量级、非阻塞的事件驱动 Go 网络框架。
-
HTTPLab
The interactive web server
-
cni
Container Network Interface - networking for Linux containers
But if all of these are not an issue, then Containers and an orchestration system like Kubernetes can always take care of workload portability especially with OCI now in place for containers and CSI, CNI, CRI, SMI for storage, networking, runtime and service mesh respectively creating a healthy standards based ecosystem for all thereby enabling workload portability without lock-in since for a workload to be truly portable, all the underlying resources should be portable without any/very limited changes.
-
kcp-go
A Crypto-Secure, Production-Grade Reliable-UDP Library for golang with FEC
-
emitter-io
High performance, distributed and low latency publish-subscribe platform.
-
kubefwd
Bulk port forwarding Kubernetes services for local development.
Project mention: kubefwd tool to bulk port forwarding #Kubernetes services for local development. | reddit.com/r/kubernetes | 2021-01-13For anyone that doesn't want to open youtube for the link to github: https://github.com/txn2/kubefwd
-
gobgp
BGP implemented in the Go Programming Language
-
kuma
🐻 The Universal Service Mesh. CNCF Sandbox Project. (by Kong)
Kuma Kuma, from Kong, prides itself on being a usable service mesh alternative. Kuma is a platform-agnostic control plane built on Envoy. Kuma provides networking features to secure, observe, route, and enhance connectivity between services. Kuma supports Kubernetes in addition to virtual machines.
-
ssh
Easy SSH servers in Golang
-
fortio
Fortio load testing library, command line tool, advanced echo server and web UI in go (golang). Allows to specify a set query-per-second load and record latency histograms and other useful stats.
-
heimdall
An enhanced HTTP client for Go (by gojek)
-
nano
Lightweight, facility, high performance golang based game server framework
Couldn't you use just a vanilla Golang (or any other language) microservice for all of this? If you know what you are doing you can have a bulletproof basic service with all of the above up and running in no time, just add your game logic. Most of your requirements are part and parcel of any modern commercial Docker microservice. Never mind that such frameworks already exist, e.g. nano [0] specifically designed for games.
Scalability is also not an issue. Number of simultaneous players and objects is limited by bandwidth and latency only. There are certainly no barriers to handling multi-million entity databases on any modern server. You're really only limited by how much data you can push out to your users within an update tick. And of course by how much money you're willing to pay for back end compute capacity on an ongoing basis. But those costs are very low these days, especially if you have dedicated servers rather then AWS/Google/Azure.
I think perhaps the issue is not so much that frameworks don't exist, but rather that no single framework has achieved popularity in the game design community. The indie crowd is not likely to want to, or afford to, run servers for years and years, so the demand is not there. The triple-A studios roll their own.
-
mqttPaho
-
gobetween
:cloud: Modern & minimalistic load balancer for the Сloud era
Project mention: What is a Service Mesh - youtube by HashiCorp using Consul | reddit.com/r/LXD | 2021-02-18 -
hubble
Hubble - Network, Service & Security Observability for Kubernetes using eBPF
CNI plugins like Cilium
-
water
A simple TUN/TAP library written in native Go.
Index
What are some of the best open-source Networking projects in Go? This list will help you:
Project | Stars | |
---|---|---|
1 | fasthttp | 14,531 |
2 | kcptun | 12,327 |
3 | cilium | 7,621 |
4 | dns | 5,315 |
5 | httpstat | 5,030 |
6 | quic-go | 4,966 |
7 | gopacket | 3,944 |
8 | gnet | 3,733 |
9 | HTTPLab | 3,658 |
10 | cni | 3,282 |
11 | kcp-go | 2,875 |
12 | emitter-io | 2,760 |
13 | kubefwd | 2,285 |
14 | gobgp | 2,150 |
15 | kuma | 2,096 |
16 | ssh | 1,888 |
17 | fortio | 1,783 |
18 | heimdall | 1,775 |
19 | nano | 1,597 |
20 | mqttPaho | 1,526 |
21 | gobetween | 1,522 |
22 | hubble | 1,231 |
23 | water | 1,188 |