Skip to content

code-with-bgp-XD/infrastructure

Repository files navigation

infrastructure

工具 官网 说明
docker https://www.docker.com/ 🐋
frr https://frrouting.org/ 在linux/unix平台上的互联网路由协议套件
containerlab https://containerlab.dev/ 为docker搭建网络拓扑的工具(yaml配置文件)
containernet https://containernet.github.io/ 支持sdn/docker的网络拓扑搭建工具(python代码实现)
ryu https://ryu-sdn.org/ python实现的sdn控制器,支持bgp
os-ken https://github.com/openstack/os-ken/ python实现的sdn控制器,支持bgp, 为ryu的后续维护版本
研究目的 工具 说明
- docker 必须
frr docker容器必须,源码可选(如果你需要修改源码重新编译为容器)
sdn+ovs containernet 可选
ryu
单独研究frr containerlab 可选

安装教程

本教程是基于ubuntu22.04进行的,python版本为3.10.12 python版本为3.10(很重要),因为部分代码需要做些修改 containerlab/containernet/ryu 都是通过源码安装

工具 安装步骤 补充说明
Docker https://github.com/docker/docker-install containernet 会帮你安装docker
frr docker pull quay.io/frrouting/frr:10.2.1 docker镜像地址
frr源码修改教程:todo
containerlab https://containerlab.dev/install/ -

os-ken 容器

1. 拉取镜像

docker pull ghcr.io/code-with-bgp-xd/infrastructure-osken:latest

2. 与containerlab配合使用

在本机安装好containerlab的情况下

参考 https://github.com/code-with-bgp-XD/frr-utilities/blob/main/ryu-bgpspeaker/os-ken/p2p/osken.clab.yaml

sdn+ovs

1. clone 本仓库

选择合适的地方创建虚拟环境并安装相关工具

mkdir -p ~/research && cd ~/research
git clone https://github.com/code-with-bgp-XD/infrastructure.git
cd ./infrastructure
git submodule update --init --recursive
cd ..

2. 创建python虚拟环境并激活

用于环境隔离,防止打乱本机python环境

当前目录为

reseach
└── infrastructure
python3 -m venv .venv
或者是
pip install -U virtualenv
virtualenv .venv
# 假设你使用的是bash
source .venv/bin/activate
# fish
. .venv/bin/activate.fish

3.安装containernet和ryu

如果pip安装太慢可以考虑使用国内pip镜像源

当前目录为

reseach
├── .venv
└── infrastructure

安装containernet

sudo apt-get install ansible
sudo ansible-playbook -i "localhost," -c local ./infrastructurecontainernet/ansible/install.yml
# 如果你想修改代码立刻生效,通过此方法安装
pip install -e ./infrastructure/containernet --no-binary :all:
# 普通安装模式
pip install ./infrastructure/containernet

测试containernet

参考:https://github.com/containernet/containernet?tab=readme-ov-file#running-a-basic-example

如有遇到权限问题可以试试 sudo -E env PATH=$PATH python3

安装ryu

# 回退setuptools版本
pip install setuptools==67.6.1
pip install ./infrastructure/ryu-patch

测试ryu

ryu-manager --version

可能遇到的问题

  1. 使用ryu-manager时提示dns/....py出现问题,collections.Mapping
  • collections.Mapping 改为 collections.abc.Mapping (python3 >= 3.10)

About

installation guide for network research tools (docker, frr, containernet(mininet), ryu, containerlab)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages