Skip to main content

Library for testing network virtual appliances using Docker

Project description


Test network virtual appliance using Docker containers

This project is a Python library for testing network virtual appliances.

The appliance being tested is referred to as a device under test or DUT.

This repository includes scripts and modules to build a simple appliance called Rabbit. Rabbit is Alpine Linux with a few packages pre-installed. Having this simple DUT allows to quickly test the alpy library and to demonstrate its features.

The tests for the Rabbit device share a lot of code so the code is organized as a library. The library is called carrot.

Network design

The DUT communicates with containers attached to each of its network links.

Guest network adapters are connected to the host via tap devices.

Each tap device lives in its network namespace. This namespace belongs to a dedicated container - a node. The node's purpose is to keep the namespace alive during the lifetime of a test.

For an application to be able to communicate with the DUT the application is containerized. The application container must be created in a special way: it must share network namespace with one of the nodes.

This sharing is supported by Docker. All we have to do is to create the application container with the --network=container:NODE_NAME Docker option. For example, if we want to send traffic to the DUT via its first link, we create a traffic generator container with Docker option --network=container:node0.


Alexey Bogdanenko


Alpy is licensed under:

SPDX-License-Identifier: GPL-3.0-or-later

See COPYING for more details.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for alpy, version 0.12.0
Filename, size File type Python version Upload date Hashes
Filename, size alpy-0.12.0-py3-none-any.whl (22.3 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size alpy-0.12.0.tar.gz (8.5 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page