All Projects → smartbgp → Yabgp

smartbgp / Yabgp

Licence: apache-2.0
Yet Another BGP Python Implementation

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Yabgp

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 (+6.21%)
Mutual labels:  bgp, sdn
pathman-sr
Pathman SR is an open-source app to compute paths and deploy routes in Segment Routing-enabled network.
Stars: ✭ 79 (-55.37%)
Mutual labels:  bgp, sdn
Ryu-SDN-IP
SDN-IP project implemented by Ryu SDN framework.
Stars: ✭ 33 (-81.36%)
Mutual labels:  bgp, sdn
Corebgp
CoreBGP is a BGP library written in Go that implements the BGP FSM with an event-driven, pluggable model.
Stars: ✭ 124 (-29.94%)
Mutual labels:  bgp, sdn
pilot
Simple web-based SDN controller for family and friends
Stars: ✭ 33 (-81.36%)
Mutual labels:  bgp, sdn
Kathara
A lightweight container-based network emulation system.
Stars: ✭ 139 (-21.47%)
Mutual labels:  bgp, sdn
Axios Actions
Bundle endpoints as callable, reusable services
Stars: ✭ 172 (-2.82%)
Mutual labels:  api
Of Watchdog
Reverse proxy for STDIO and HTTP microservices
Stars: ✭ 175 (-1.13%)
Mutual labels:  api
Csgofloat Inspect
Source Code that Powers the CSGOFloat Inspect Link API
Stars: ✭ 172 (-2.82%)
Mutual labels:  api
Github.swift
Unofficial GitHub API client in Swift
Stars: ✭ 171 (-3.39%)
Mutual labels:  api
Youtubeshop
Youtube autolike and autosubs script
Stars: ✭ 177 (+0%)
Mutual labels:  api
Laravel Api Debugger
Easy debug for your JSON API.
Stars: ✭ 175 (-1.13%)
Mutual labels:  api
Go Reddit
Go library for accessing the Reddit API.
Stars: ✭ 175 (-1.13%)
Mutual labels:  api
Graphene Django Subscriptions
This package adds support to Subscription's requests and its integration with websockets using Channels package.
Stars: ✭ 173 (-2.26%)
Mutual labels:  api
Musicapi
网易云音乐网页版API接口
Stars: ✭ 175 (-1.13%)
Mutual labels:  api
Shiny geoip
IP to location API service
Stars: ✭ 172 (-2.82%)
Mutual labels:  api
Stratum
Stratum is an open source silicon-independent switch operating system for software defined networks.
Stars: ✭ 176 (-0.56%)
Mutual labels:  sdn
Spider Less
Web spider as a service, spider on serverless
Stars: ✭ 172 (-2.82%)
Mutual labels:  api
Rails api base
API boilerplate project for Ruby On Rails 6
Stars: ✭ 172 (-2.82%)
Mutual labels:  api
Api
Learn how to use ZenHub's API.
Stars: ✭ 175 (-1.13%)
Mutual labels:  api

简体中文_

.. _简体中文: README-zh.rst

YABGP

|Docker| |Version| |License| |Build Status| |Code Health| |Documentation Status| |Test Coverage| |Downloads|

What is yabgp?


YABGP is a yet another Python implementation for BGP Protocol. It can be used to establish BGP connections with all kinds
of routers (include real Cisco/HuaWei/Juniper routers and some router
simulators like GNS3) and receive/parse BGP messages for
future analysis.

Support sending BGP messages(route refresh/update) to the peer through RESTful API. YABGP can't send any BGP update messages
by itself, it's just a agent, so there can be many agents and they can be controlled by a contoller.

We write it in strict accordance with the specifications of RFCs.

This software can be used on Linux/Unix, Mac OS and Windows systems.

Features
~~~~~~~~

-  It can establish BGP session based on IPv4 address (TCP Layer) in
   active mode(as TCP client);

-  Support TCP MD5 authentication(IPv4 and does not support Windows
   now);

-  BGP capabilities support: 4 Bytes ASN, Route Refresh(Cisco Route Refresh), Add Path send/receive;

-  Address family support:

   - IPv4/IPv6 unicast

   - IPv4/IPv6 Labeled Unicast

   - IPv4 Flowspec(limited)

   - IPv4 SR Policy(draft-previdi-idr-segment-routing-te-policy-07)

   - IPv4/IPv6 MPLSVPN

   - EVPN (partially supported)

-  Decode all BGP messages to json format and write them into files in local disk(configurable);

-  Support basic RESTFUL API for getting running information and sending BGP messages.

Quick Start
~~~~~~~~~~~

We recommend run ``yabgp`` through python virtual-env from source
code or pip install

Use yabgp from source code:

.. code:: bash

    $ virtualenv yabgp-virl
    $ source yabgp-virl/bin/activate
    $ git clone https://github.com/smartbgp/yabgp
    $ cd yabgp
    $ pip install -r requirements.txt
    $ cd bin
    $ python yabgpd -h

Use pip install

.. code:: bash

    $ virtualenv yabgp-virl
    $ source yabgp-virl/bin/activate
    $ pip install yabgp
    $ which yabgpd
    /home/yabgp/yabgp-virl/bin/yabgpd
    $ yabgpd -h

For example:

.. code:: bash

    $ yabgpd --bgp-local_addr=1.1.1.1 --bgp-local_as=65001 --bgp-remote_addr=1.1.1.2 --bgp-remote_as=65001 --bgp-afi_safi=ipv4

Use Docker container

.. code:: bash

    $ docker run -it smartbgp/yabgp:latest --bgp-afi_safi=ipv4 --bgp-local_as=65022 --bgp-remote_addr=10.75.44.219 --bgp-remote_as=65022

More docker image tags, please reference https://hub.docker.com/r/smartbgp/yabgp/tags/

Documentation
~~~~~~~~~~~~~

More information please see the documentation http://yabgp.readthedocs.org

Related Projects

Routewatch brings automated alerting to YABGP. https://github.com/nerdalize/routewatch

A BGP update generator based on YaBGP https://github.com/trungdtbk/bgp-update-gen

Support


Please join our Slack_ for questions, discussion, suggestions, etc

Send email to [email protected], or use GitHub issue system.


Contribute

Please create Github Pull Request https://github.com/smartbgp/yabgp/pulls

More details please read HACKING.rst.

Thanks


For core files like fsm, protocol, we copy some of the code from
https://github.com/wikimedia/PyBal/blob/master/pybal/bgp.py,

and message parsing, we reference from
https://github.com/Exa-Networks/exabgp

.. |License| image:: https://img.shields.io/hexpm/l/plug.svg
   :target: https://github.com/smartbgp/yabgp/blob/master/LICENSE
.. |Build Status| image:: https://travis-ci.org/smartbgp/yabgp.svg?branch=master
   :target: https://travis-ci.org/smartbgp/yabgp

.. |Code Health| image:: https://landscape.io/github/smartbgp/yabgp/master/landscape.svg?style=flat
   :target: https://landscape.io/github/smartbgp/yabgp/master

.. |Documentation Status| image:: https://readthedocs.org/projects/yabgp/badge/?version=latest
   :target: https://readthedocs.org/projects/yabgp/?badge=latest

.. |Test Coverage| image:: https://coveralls.io/repos/smartbgp/yabgp/badge.svg?branch=master
   :target: https://coveralls.io/r/smartbgp/yabgp

.. |Version| image:: https://img.shields.io/pypi/v/yabgp.svg?
   :target: http://badge.fury.io/py/yabgp

.. |Downloads| image:: https://img.shields.io/pypi/dm/yabgp.svg?
   :target: https://pypi.python.org/pypi/yabgp

.. |Docker| image:: https://img.shields.io/docker/automated/jrottenberg/ffmpeg.svg?style=plastic   
   :target: https://hub.docker.com/r/smartbgp/yabgp/
   
.. _Slack: https://join.slack.com/t/smartbgp/shared_invite/enQtNzQwNjgzNTA5NjA3LTY3YzFkODMzYWFjODI1ZmE3NDRkMTQwYTY0MWZiMmE3M2NiMzM0ZTI3NjNjY2RkNDAzMmFkZWJkOTE2M2VjOWU
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].