Skip to content

Global-scale overlay network router, designed for connecting cloud network infrastructure.

Notifications You must be signed in to change notification settings

CrossMesh/fabric

Repository files navigation

utt

Codacy Badge Build Status codecov

简体中文

Overlay L2/L3 network router, designed for connecting cloud network infrastructure.

UTT focuses on flexibility, simplicity, security and performance, and could be used to connect existing resources such as bare-metals, VMs, containers, virtual switches, VPC, etc.

Features

  • Gossip-based membership and failure detection. Completely decentralized.
  • Layer-2 and Layer-3 ovarlay support.

Planning

  • Metrics.

  • Multiples virtual networks over one set of peers (like VxLAN).

  • UDP Backend.

  • Kubernetes CNI.

  • Dynamic NAT Traversal.


Get Started

build binary

make

build RPM/SRPM

make rpm    # RPM
make srpm   # Source RPM

build docker image

GOOS=linux make docker

Define your network

Edit utt.yml (/etc/utt.yml if OS software package is used)

link:
  # Layer 2 network for example.
  vnet1:
    mode: ethernet
    iface:
      name: vn1
      mac: ea:38:ab:40:00:12
      address: 10.240.3.1/24 # peer IP.
      
    backends:
    - psk: 123456
      encrypt: false
      type: tcp
      params:
        bind: 0.0.0.0:3880
        publish: 192.168.0.161:80
        priority: 1

Start network

utt -c utt.yml edge vnet1

or start with systemd:

systemctl start utt-vnet@vnet1

or start with docker:

docker run -it --cap-add NET_ADMIN --device=/dev/net/tun utt:latest edge vnet1

Seed to Publish yourself

run inside the container or on host machine.

utt net seed vnet1 tcp:121.78.89.11:3880

Enjoy

UTT maintains membership among peers automatically. You have done settings. So enjoy it.

Development Guide

run test

make test

compile protobuf

make proto