Latest (beta) version: 0.3.9 / Release notes: Link / News at: LinkedIn
🚀 Features:
- Modular tree-style CLI with tab autocompletions and '?' helper.
- Shell/Dispatcher/Modules/Plugins architecture.
- Complete Interface management.
- GPLv3 License.
- Add & delete sub.interfaces (QinQ / dual-tags supported) (v0.2)
- TWAMP (RFC5357) implementation for End-to-End L3 tests. (ipv4 & ipv6, sender/responder modes). (v0.3)
- Pypi (pip) packaging. (v0.3.1)
- Remote Management via vMark. (v0.3.4)
- XDP-Switch (eBPF) based MEF-compliant transparent Ethernet switching (v0.3.9)
Feature roadmap
- Ethernet OAM. (IEEE 802.1ag / Y.1731)
- Timing protocols support (ITU-T G.8262 Sync-E and IEEE 1588v2)
- Automated MEF3 Service WAN failover.
- Remote loop testing with automatic timeout.
- RFC2544 Service Activation testing and reflector.
- open-BFDD implementation for service session assurance.
- fiber-interface management and optic levels monitoring.
- SNMP Support.
- Multi-vendor IPSec Tunnel support.
- VXLAN Tunneling.
- DPDK/VPP

vMark-node is a software-based open-source Ethernet demarcation NID designed for flexibility and democratization in the Carrier industry.
The "-node"** refers to this being the client-side of vMark server. (vMark-node doenst need vMark to work).
Shell: Provides command-line auto-completion, some help-related features and dynamically builds the command tree based on the modules and installed plugins. This enables a modular, scalable and re-usable interactive CLI experience.
Dispatcher: Interprets user commands, determines the appropriate module to handle each command, and routes execution accordingly. The dispatcher acts as the central coordinator between the shell and the available modules/plugins, Web-UI and API interactions talk directly with the Dispatcher.
Modules: Shell modules encapsulate core command logic and define the command tree structure. Examples: 'show', 'config', and 'system', each representing a set of related commands and subcommands with item descriptions.
Plugins: Integrate external libraries or tools to extend functionality. For example, plugins can provide access to third-party systems such as OpenBFDD, allowing seamless integration with external services.
-
Python 3.9+
-
bpftool
-
pkg-config
-
libnl-3-dev and libnl-route-3-dev (Debian/Ubuntu)
-
libnl3-devel (Fedora/RHEL/CentOS)
-
Ubuntu/Debian:
sudo apt update
sudo apt install -y python3.9 python3.9-venv python3-pip build-essential pkg-config libnl-3-dev libnl-route-3-dev python3-dev ethtool
- Fedora/RHEL/CentOS:
sudo dnf install -y python3.9 python3-pip gcc pkgconfig libnl3-devel python3-devel ethtool
git clone https://github.com/xmas-ar/vMark-node
cd vMark-node/vMark-node
pip3 install -r requirements.txt
python3 main.py
(Might need one of these two lines previous to install pip:)
sudo dnf install -y pkgconfig libnl3-devel gcc python3-devel
sudo apt install -y pkg-config libnl-3-dev python3-dev build-essential
Then do:
pip install vmark-node
~/.local/bin/vmark-node
To ensure vmark-node
stays running in the background (e.g., to keep the API server accessible by vMark
), you can use systemd
or tmux
.
- Create a service file:
bash
sudo nano /etc/systemd/system/vmark-node.service
Paste this configuration:
[Unit]
Description=vMark-node Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/vmark-node
WorkingDirectory=/opt/vmark-node
Restart=always
RestartSec=3
User=nobody
[Install]
WantedBy=multi-user.target
- Enable and start the service:
sudo systemctl daemon-reload
sudo systemctl enable vmark-node
sudo systemctl start vmark-node
- Useful commands:
sudo systemctl status vmark-node
sudo journalctl -u vmark-node -f
- Install tmux and launch vmark (after installed with pip):
sudo apt install tmux
tmux
vmark-node
- Then press:
Ctrl + B, then D
👉 That detaches the session, leaving vmark-node running.
- To resume later:
tmux attach