Giter VIP home page Giter VIP logo

inetb's Introduction

inetb

Build Status

inetb is a benchmarking tool for BGP RIB / FIB convergence

Output

result

Overview

inetb assumes a test environment below:

setup

  • router to be tested(DUT) has 2 eBGP sessions to gobgpds
    • gobgpds are configured with different ASNs
    • gobgpds run on the same server

inetb counts BGP updates:

  • inetb controls gobgpds via gRPC
    • Make gobgpds send and receive many BGP updates to and from the router(DUT)
  • inetb monitors which prefixes are advertised or withdrawn on peering interfaces with libpcap, without interrupting gobgpd behaviors

Then inetb dumps the results with timestamp to JSON files.

You can draw charts with your favorite libraries. An example of convergence time charts is included in this repository.

Scenario 1: The router(DUT) receives new routes

  1. gobgpd1 advertises new routes to the router(DUT)
  • inetb counts NLRIs in BGP updates passed through router(DUT) - gobgpd1 peer
  1. After router(DUT) gets converged for the new NLRI, it should advertise the same NLRIs to gobgpd2
  • inetb also counts NLRIs on router(DUT) - gobgpd2 peer

Scenario 2: The router(DUT) receives stronger routes

  1. gobgpd2 advertises stronger routes to the router(DUT)
  • inetb counts NLRIs in BGP updates passed through router(DUT) - gobgpd2 peer
  1. After router(DUT) gets converged for the new NLRI, it should advertise the same NLRIs to gobgpd1
  • inetb also counts NLRIs on router(DUT) - gobgpd1 peer

Scenario 3: The router(DUT) receives withdrawals of stronger routes

  1. gobgpd2 sends withdrawals of stronger routes to the router(DUT)
  • inetb counts withdrawn prefixes in BGP updates passed through router(DUT) - gobgpd2 peer
  1. After router(DUT) gets converged for the withdrawn BGP updates, it should send the same withdrawals back to gobgpd1
  • inetb also counts withdrawals on router(DUT) - gobgpd1 peer

Scenario 4: The router(DUT) receives withdrawals of the rest

  1. gobgpd1 sends withdrawals of all routes to the router(DUT)
  • inetb counts withdrawn prefixes in BGP updates passed through router(DUT) - gobgpd1 peer
  1. After router(DUT) gets converged for the withdrawn BGP updates, it should send the same withdrawals back to gobgpd2
  • inetb also counts withdrawals on router(DUT) - gobgpd2 peer

Installation

go get github.com/codeout/inetb

How to Use

1 . Start 2 gobgpds with different ASNs.

โš ๏ธ NOTE:

  • gobgpds should be configured with local-address so that inetb can identify the 2 BGP sessions
gobgpd -f gobgpd1.conf --disable-stdlog
gobgpd -f gobgpd2.conf --disable-stdlog --api-hosts :50052

2 . Download MRT File

Table dump v2 for full routes is available at Route Views Project for instance.

3 . Start inetb

inetb rib.20170707.1200

It will examine 4 test scenarios above and then dump JSON reports in report/ directory.

Tips

Disable MRAI

  • After router(DUT) receives routes and get settled, it may unexpectedly wait for a while until advertises routes to other peers when MRAI is implemented
  • Try out-delay option in Juniper or advertise-interval in Cisco to disable it

Create Chart

Run

ruby $GOPATH/src/github.com/codeout/inetb/report/make.rb report

And open report/chart.html.

Features to be implemented

  • FIB convergence benchmark

Copyright and License

Copyright (c) 2017 Shintaro Kojima. Code released under the MIT license.

Code includes a part of gobgp which is distributed in the Apache License 2.0.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.