All Projects → logingood → bagpipe-cni

logingood / bagpipe-cni

Licence: Apache-2.0 License
CNI plugin for BaGPipe BGP

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to bagpipe-cni

hybridnet
A CNI plugin, provides networking environment where overlay and underlay containers can run on the same node and have cluster-wide bidirectional network connectivity.
Stars: ✭ 188 (+1242.86%)
Mutual labels:  bgp, vxlan, cni-plugin
freeRouter
freeRouter - networking swiss army knife
Stars: ✭ 26 (+85.71%)
Mutual labels:  bgp, evpn
Frr
The FRRouting Protocol Suite
Stars: ✭ 2,009 (+14250%)
Mutual labels:  bgp, evpn
pathman-sr
Pathman SR is an open-source app to compute paths and deploy routes in Segment Routing-enabled network.
Stars: ✭ 79 (+464.29%)
Mutual labels:  bgp
fastcli
CLI tool powered by Nornir 3.0 for network automation fast configuration. Support BGP, OSPF, EIGRP, RIP auto-configuration.
Stars: ✭ 38 (+171.43%)
Mutual labels:  bgp
gocast
GoCast is a tool for controlled BGP route announcements from a host
Stars: ✭ 55 (+292.86%)
Mutual labels:  bgp
bgpkit-parser
MRT/BGP data parser written in Rust.
Stars: ✭ 43 (+207.14%)
Mutual labels:  bgp
BGP-Ranking
BGP ranking is a free software to calculate the security ranking of Internet Service Provider (ASN)
Stars: ✭ 49 (+250%)
Mutual labels:  bgp
amazon-ecs-cni-plugins
Networking Plugins repository for ECS Task Networking
Stars: ✭ 81 (+478.57%)
Mutual labels:  cni-plugin
ansible-frr
No description or website provided.
Stars: ✭ 28 (+100%)
Mutual labels:  bgp
ansible-avd-cloudvision-demo
A demo to run Arista Validated Design with CloudVision deployment - From Powerup to EVPN Fabric
Stars: ✭ 21 (+50%)
Mutual labels:  evpn
cni-plugins
CNI Plugins compatible with nftables
Stars: ✭ 29 (+107.14%)
Mutual labels:  cni-plugin
terraform-metal-k3s
Manage K3s (k3s.io) region clusters on Equinix Metal
Stars: ✭ 41 (+192.86%)
Mutual labels:  bgp
neteng-roadmap
Network Engineering at Scale Roadmap/Landscape
Stars: ✭ 53 (+278.57%)
Mutual labels:  bgp
butterfly
Butterfly connects Virtual Machines and control their traffic flow
Stars: ✭ 48 (+242.86%)
Mutual labels:  vxlan
vrnetlab
Run virtual routers with docker
Stars: ✭ 879 (+6178.57%)
Mutual labels:  bgp
pathvector
Declarative routing platform that automates BGP route optimization and control plane configuration with secure and repeatable routing policy.
Stars: ✭ 110 (+685.71%)
Mutual labels:  bgp
balanced
BalanceD is a Layer-4 Linux Virtual Server (LVS) based load balancing platform for Kubernetes.
Stars: ✭ 34 (+142.86%)
Mutual labels:  bgp
ripeatlastracepath
A JavaScript/Python web-app which reads results from RIPE Atlas traceroute measurements (both IPv4 and IPv6) and shows the Autonomous Systems and Internet Exchange Points that probes traverse to reach the target.
Stars: ✭ 26 (+85.71%)
Mutual labels:  bgp
ebook
Third edition of the Computer Networking: Principles, Protocols and Practice ebook
Stars: ✭ 64 (+357.14%)
Mutual labels:  bgp

BaGPipe BGP CNI plugin

Overview

This plugins allows to confiure container networking with VXLAN and advertise container's network as VXLAN + IP + Mac object using EVPN BGP route. You must have bagpipe-bgp installed on the host machine:

BaGPipe BGP

Probably have a route reflector (BGP router that supports AFI=25 SAFI=70) because bagpipe-bgp allows only to run two nodes without RR.

Nice example of go-based RR: GoBGP and EVPN lab example can be found here EVPN with BaGPipe BGP and GoBGP RR

Install

Option 1

Use go get:

go get github.com/murat1985/bagpipe-cni

package would be installed into your $GOBIN path, e.g.:

/usr/local/go/bin

Bare in mind if you are going to use it with Kubernetes plugin should reside in /opt/cni/bin

Option 2

The second way to install plugin altogether with other CNI plugins and IPAM plugins. Clone CNI repositority: CNI

Make sure that GOPATH environment variable is set

cd $GOPATH
git clone https://github.com/containernetworking/cni
cd cni/plugins/main

Clone bagpipe CNI plugin into plugins/main/bagpipe

git clone https://github.com/murat1985/bagpipe-bgp bagpipe
cd ../../

Build plugins

./build

Example configuration

Supported IP manager plugins:

Just put the example below in file /etc/cni/net.d/10-mynet.conf

{
  "name": "mynet",
  "type": "bagpipe",
  "importrt": "64512:90",
  "exportrt": "64512:90",
  "isGateway": false,
  "ipMasq": false,
  "mtu": "1500", 
    "ipam": {
      "type": "host-local",
      "subnet": "10.1.2.0/24",
      "routes": [
        { "dst": "0.0.0.0/0" }
      ]
    }
}

Network configuration reference

  • name (string, required): the name of the network.
  • type (string, required): "bagpipe".
  • importrt (string, required): import community
  • exportrt (string, required): export community
  • mtu (integer, optional): explicitly set MTU to the specified value. Defaults to the value chosen by the kernel.

Usage with Kubernetes

I have published a blog post, where described PoC: BaGPipe CNI and Kubernetes

Usage with Docker

Assuming that cni installed in the $GOPATH/cni and bagpipe CNI plugin is installed in plugins/main/bagpipe docker-run.sh script could be found in scripts directory of CNI repository

cd $GOPATH/cni
CNI_PATH=`pwd`/bin
./build; cd scripts; CNI_PATH=$CNI_PATH ./docker-run.sh busybox ifconfig eth0 ; cd ..

Adding and Deleting of bagpipe tunnels along with container links fully implemented.

Diagram

alt text

TODO

  1. GW allocation (relying on BaGPipe BGP as it is responsible to create a bridge and vxlan interfaces)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].