All Projects → jwbensley → Etherate

jwbensley / Etherate

Licence: mit
Linux CLI Ethernet and MPLS Testing Tool

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Etherate

Packetnet
Official repository - High performance .Net assembly for dissecting and constructing network packets such as ethernet, ip, tcp, udp etc.
Stars: ✭ 230 (+76.92%)
Mutual labels:  network-analysis, ethernet
packetnet
Official repository - High performance .Net assembly for dissecting and constructing network packets such as ethernet, ip, tcp, udp etc.
Stars: ✭ 343 (+163.85%)
Mutual labels:  ethernet, network-analysis
network-pipeline
Network traffic data pipeline for real-time predictions and building datasets for deep neural networks
Stars: ✭ 36 (-72.31%)
Mutual labels:  ethernet, network-analysis
Gemini
💀💀💀[DEPRECATED] Use hermione
Stars: ✭ 1,505 (+1057.69%)
Mutual labels:  testing-tools
Pytest Socket
Pytest Plugin to disable socket calls during tests
Stars: ✭ 117 (-10%)
Mutual labels:  testing-tools
Ava Playback
📼 🚀 Record and playback http requests from your ava tests
Stars: ✭ 124 (-4.62%)
Mutual labels:  testing-tools
Awesome Community Detection
A curated list of community detection research papers with implementations.
Stars: ✭ 1,874 (+1341.54%)
Mutual labels:  network-analysis
Nose Timer
A timer plugin for nosetests (how much time does every test take?)
Stars: ✭ 116 (-10.77%)
Mutual labels:  testing-tools
Superagent Mocker
Pretty simple in-browser mocks for CRUD and REST API
Stars: ✭ 127 (-2.31%)
Mutual labels:  testing-tools
Nload
Real-time network traffic monitor
Stars: ✭ 121 (-6.92%)
Mutual labels:  network-analysis
Depthmapx
depthmapX is a multi-platform Spatial Network Analysis Software
Stars: ✭ 120 (-7.69%)
Mutual labels:  network-analysis
Networkdata
R package containing several network datasets
Stars: ✭ 119 (-8.46%)
Mutual labels:  network-analysis
Scott
Never debug a test again: Detailed failure reports and hassle free assertions for Java tests - Power Asserts for Java
Stars: ✭ 125 (-3.85%)
Mutual labels:  testing-tools
Mockey
Mockey is a tool for testing application interactions over http, with a focus on testing web services, specifically web or native applications that consume XML, JSON, and HTML. Mockey's purpose is to be a simple front end to writing mock-test-responses to the file system for persistence to git.
Stars: ✭ 117 (-10%)
Mutual labels:  testing-tools
Spatstat
Development version of 'spatstat' package ..............................
Stars: ✭ 128 (-1.54%)
Mutual labels:  network-analysis
Capybara discoball
Spin up an external server just for Capybara
Stars: ✭ 116 (-10.77%)
Mutual labels:  testing-tools
Catmaid
Collaborative Annotation Toolkit for Massive Amounts of Image Data
Stars: ✭ 126 (-3.08%)
Mutual labels:  network-analysis
Ts Mocha
Mocha thin wrapper that allows running TypeScript tests with TypeScript runtime (ts-node) to get rid of compilation complexity
Stars: ✭ 119 (-8.46%)
Mutual labels:  testing-tools
Nsubstitute
A friendly substitute for .NET mocking libraries.
Stars: ✭ 1,646 (+1166.15%)
Mutual labels:  testing-tools
Dynamometer
A tool for scale and performance testing of HDFS with a specific focus on the NameNode.
Stars: ✭ 122 (-6.15%)
Mutual labels:  testing-tools

Etherate

Build Status PayPal Donate < buy me a coffee!
Bitdeli Badge

What is it

Etherate is a Linux CLI application for testing layer 2 Ethernet and MPLS
connectivity. It can generate various Ethernet and MPLS frames for testing
different devices such as switches/routers/firewalls etc, to test
traffic parsing/matching/filtering/forwarding.

Why was it made

Programs such as iPerf/jPerf/Ostinato/PathEth/Scapy/PtkGen/MoonGen (to name
just a few) are excellent! They can saturate a link to measure throughput,
or simulate congestion, or allow the user to set custom DSCP values to test
QoS, etc. They usually operate at layer 3 or 4 of the OSI model using either
TCP or UDP for data transport. Some of them use sockets defined by the OS
that rely on a convoluted OS TCP/IP stack, others use 3rd party libraries
(such as libpcap, NetMap etc).

These programs are great for testing over a layer 3 boundary such as across
the Internet, home broadband, client to server diagnostics etc. Etherate
uses raw sockets within Linux operating directly over layer 2 to provide
low level network analysis for Ethernet and MPLS connections without using
any 3rd party libraries or kernel bypass techniques.

The aim is free Ethernet and MPLS testing program that allows for advanced
network analysis. With any modern day CPU and off the shelf NIC it should
saturate up to a 10GigE link using 1500 byte frames and allow for the
testing of various metro and carrier Ethernet features (such tag swapping,
802.1p QoS, ethertype parsing, and so on). This should all be achievable
without the need to install any 3rd party libraries (see INSTALL for
details). Etherate can simply be compiled and executed from the folder it
was downloaded to and provide "quick and dirty" tests or advanced bespoke
testing using custom frame files.

Current version

1.18 (2018-06)

Current features

Having moved from alpha, to beta, and now to production version 1.x the
focus now is to finish the remaining features of Etherate, then provide bug
fixes only. This is to support the development of EtherateMT instead.

Currently working features which all operate directly over layer 2:

  • Any EtherType
  • Any Source MAC and/or Destination MAC
  • Any VLAN ID
  • Any priority (PCP) value
  • Supports double tagging (any inner and outer VLAN ID, any PCP)
  • Toggle DEI bit
  • Toggle frame acknowledgement
  • Optional speed limit in Mbps, MBps or Frames/p/s
  • Optional frame payload size
  • Optional transfer limit in MBs/GBs
  • Optional test duration
  • L2 storm (BUM) testing
  • One way delay measurement (at layer 2!)
  • Perform sweeping MTU test
  • Perform link quality tests (RTT & jitter, at layer 2!)
  • Simulate MPLS label stacks
  • Insert MPLS pseudowire control word
  • Load a custom frame from file for transmission
  • Some examples are provided to simulate BPDUs, ARP, ICMP, TCP

Development plan

Etherate is developed primarily for use on Ubuntu and CentOS as these are
the authors day to day platforms. If it doesn't work on your bedroom Linux
based OS, it's unlikely I'll have time help you. If it doesn't work on some
other major Linux based OS I'll try and find the time to spin up a VM and
replicate your issues. Ubuntu and CentOS are the main focus though.

The features currently being worked upon can be seen in the issues section:
https://github.com/jwbensley/Etherate/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement

The Etherate code is partially object orientated, single threaded and only
uni-directionl so once the outstanding features are completed development will
cease (except for bug fixes), a new multi-threaded version is currently
being developed called EtherateMT: https://github.com/jwbensley/EtherateMT
EtherateMT aimes to be a simple high performance traffic generator with less
features than Etherate, aimed at testing network and device load rather
than specific traffic properties like Etherate.

Contributing

There is a Code of Conduct for contributing to the project in any way,
but no specific guidlines about how to contribute.
Ultimately, just be friendly and I'll do my best to accept patches and
accept bug fixes etc:

https://github.com/jwbensley/Etherate/blob/master/CODE_OF_CONDUCT.md

https://github.com/jwbensley/Etherate/blob/master/CONTRIBUTING.md

Technical details

Etherate is a single threaded application, despite which 10G throughput
can be achieved on a 2.4Ghz Intel CPU with 10G Intel NIC using 1500 byte
frames. Etherate is not currently using NetMap, DPDK, VPP or other similar
frameworks as it is intended to test the OS's native capabilities and be
easily usable without any 3rd party requirements (apart from a recent
Kernel!). If you want 64 byte packet line rate performance on Nx10G or
Nx100G etc then Etherate is not for you. There are some great projects such
as MoonGen and PtkGen which Etherate cannot compete with for performance.
DPDK and PktGen or MoonGen require additional setup time and complexity
which is the trade-off with Etherate. Etherate can load a custom frame from
a file to transmit and test a traffic parsing graph or fill a specific ASIC
queue with minimal effort.

Documentation (usage info, examples, FAQs etc.):

http://null.53bits.co.uk/index.php?page=etherate

Who made it (where to send your hate mail or nude pics)

James Bensley [jwbensley at gmail dot com]

Major credit is due for their code review and bug fixing efforts, to;

  • Bradley Kite
  • Bruno de Montis
  • Christophe Lucas
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].