Tinynet
A lightweight instant virtual network for rapid prototyping SDN
Install / Use
/learn @John-Lin/TinynetREADME
tinynet
A lightweight instant virtual network for rapid prototyping SDN
Tinynet provides a simple network library with Go and uses for emulating any network to prototype Software Defined Networks.
Prerequisite
Installation from Debian Packages
$ sudo apt-get install openvswitch-switch
Install
$ go get -u github.com/John-Lin/tinynet
API Reference
https://godoc.org/github.com/John-Lin/tinynet
Features
- Go API for creating any networks topology
- Integrate with docker containers as a host
- A
cleanupcommand for removing virtual interfaces, network namespace and bridges
Example
package main
import (
tn "github.com/John-Lin/tinynet"
log "github.com/sirupsen/logrus"
)
// Custom topology example
// Host1 --- Switch1 --- Host2
func main() {
// add a switch as a Switch1
sw1, err := tn.AddSwitch("br0")
if err != nil {
log.Fatal("failed to AddSwitch:", err)
}
// setup Host1 network configuration through NewHostConfig constructor
// parameters: name, address, interface name, MTU, isDocker, docker image
hc1 := tn.NewHostConfig("h1", "10.0.0.102/24", "eth2", 1500, true, "library/busybox")
// add a docker container host as a Host1
h1, err := tn.AddHostWithConf(hc1)
if err != nil {
log.Fatal("failed to AddHost:", err)
}
// setup Host2 network configuration
hc2 := tn.NewHostConfig("h2", "10.0.0.101/24", "eth1", 1500, true, "library/busybox")
// add a docker container host as a Host2
h2, err := tn.AddHostWithConf(hc2)
if err != nil {
log.Fatal("failed to AddHost:", err)
}
// add Link for Switch1 - Host1
if err := tn.AddLink(sw1, h1); err != nil {
log.Fatal("failed to AddLink:", err)
}
// add Link for Host2 - Switch1
if err := tn.AddLink(h2, sw1); err != nil {
log.Fatal("failed to AddLink:", err)
}
}
more complicated example that you might see in a examples folder
Cleanup command
cleanup command to remove interfaces, network namespaces and bridges.
$ sudo python clean.py
Related Skills
node-connect
346.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
346.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
346.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
