GithubHelp home page GithubHelp logo

mc36 / freertr Goto Github PK

View Code? Open in Web Editor NEW
76.0 9.0 11.0 70.75 MB

freeRouter - networking swiss army knife

Home Page: http://www.freertr.org

Shell 0.31% Scilab 46.63% HTML 5.13% Tcl 0.34% Batchfile 0.01% C 1.80% Java 41.79% PLSQL 0.01% Python 2.04% GLSL 0.02% Perl 0.01% Makefile 0.01% P4 1.76% Dockerfile 0.01% CSS 0.01% Visual Basic 6.0 0.01% Rust 0.14%
bgp ospf rip eigrp babel olsr pim msdp mpls vpls

freertr's Introduction

freeRouter source tree

freeRouter is a router stack which can export the computed tables to external dataplanes

yet another routing/forwarding network stack made by highly skilled network/electrical/engineers

more about the project at www.freertr.org

you can find the same source tree at various locations, normally all should be the same:

part of the subdirectories under misc/ are somewhere else too:

dependencies

you'll need an up to date debian sid with a jdk installed

for natives, you'll need clang, dpdk, libpcap, libbpf, libmnl and libcrypto

directory structure

the following directories could be found here:

  • src contains the main sources
  • cfg contains the self tests
  • misc contains some smaller subprojects, see below

the following directories will appear here:

  • img vm images used for interop and dataplane testing
  • binDwn packages used for demo vm creation
  • binDsk rootfs used for demo vm creation
  • binMnt rootfs mounted for demo vm creation
  • binImg outcome of demo vm creation
  • binOut output of compilation
  • binTmp output of testing

directories under misc folder

  • native: dpdk, xdp, pcap and mnl based dataplanes
  • p4bf: tofino based dataplane
  • p4lang: bmv2 based dataplane
  • bogon: web based bogon originator
  • lookingglass: web based looking glass
  • captures: script to stream captures
  • sniffer: web based packet capture
  • mailer: web based mail reader
  • paster: web based pastebin service
  • gallery: web based album viewer
  • motion: web based alarm/recorder
  • player: web based music player/streamer/receiver
  • temper: web based thermostat/controller
  • trackmap: web based monitoring
  • voice: an answering machine
  • snmp: some snmp definitions
  • rfcs: rfc series renamer
  • consistency: old style check definitions
  • tests: some volumentric generators
  • check: some check definitions
  • sensor: some sensor definitions
  • prometheus: some grafana definitions
  • netconf: some yang definitions
  • image: demo vm iso creator
  • img2ova: demo vm ova creator
  • service: install script

getting started

there is no build system in use, but you'll find shell scripts:

  • d.sh to clean up
  • c.sh to compile
  • r.sh to run
  • t.sh to selftest

as a first start to get your routers up, do the following:

  • cd src
  • ./c.sh
  • ./tw.sh rout-bgp001
  • telnet 127.0.0.1 20001
  • telnet 127.0.0.1 20002
  • telnet 127.0.0.1 20003
  • telnet 127.0.0.1 20004

contributing

to start coding on the project, take a look on the following:

  • grep me-the in the sources to see how to add a show command
  • grep ifcHdlc to see how to add a new interface encapsulation
  • take a look on rtrDownload to see an exmaple routing protocol
  • find out how to add a new game to the command line interface
  • try to solve a puzzle from the todo.txt in the source tree
  • in most of the folders there is a class to extend or implment
  • your eyes will bleed because of the mix of c, p4 and java
  • first you should take a look at the todo.txt and the changelog.txt
  • try first reordering the todo.txt if you have nothing better idea

feel free to reach us on the mailing lists with your patches, ideas, feature requests, etc

additional information

freertr's People

Contributors

jordiortizlab avatar mc36 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

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.