Core 环境搭建
推荐使用Vscode编辑代码,可以安装对应python扩展跳转定义声明等。
# 更新软件包索引,并且安装依赖软件:
sudo apt update
# 启用 Visual Studio Code 源仓库,输入:
sudo apt install software-properties-common apt-transport-https wget
# 使用 wget 命令插入 Microsoft GPG key :
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
# 启用 Visual Studio Code 源仓库:
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
sudo apt install code
安装抓包工具和ssh等组件
sudo apt-get install
openssh-client openssh-server isc-dhcp-server isc-dhcp-client \
tcpdump openvpn traceroute wireshark iperf3
sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap
sudo adduser $USER wireshark
安装Core
依照手册教程即可:列出遇到的问题。推荐安装core在虚拟环境中(默认选项)
# 更新python和pip
python3 -m pip install -U pip
# 或者直接apt-get
sudo apt install python3 python3-pip
# clone CORE repo
git clone https://github.com/coreemu/core.git
cd core
# 脚本用法: install.sh [-v] [-d] [-l] [-p <prefix>]
# -v enable verbose install
# -d enable developer install
# -l enable local install, not compatible with developer install
# -p install prefix, defaults to /usr/local
# install core to virtual environment
./install.sh -p <prefix>
# install core locally
./install.sh -p <prefix> -l
自动安装脚本install.sh将会执行以下工作
- 安装安装所需的基础工具python3, pip, pipx, invoke, poetry
- 为构建Core安装系统依赖
- clone/build/install OPSF MDR 的工作版本
- 通过传入参数标志,设定将Core安装到poetry管理的虚拟环境中或真实环境中
- 根据安装类型来安装适当的Python位置的指向脚本
- 根据安装类型来安装适当的Python位置的systemd服务
运行软件安装脚本install.sh报错或无效时会直接停止导致后续命令不执行。
如果是因为模块已经安装过,打开脚本进行查看对应安装命令,卸载需要删掉的环境模块即可。
Invok命令的使用:
其实install脚本就是运行invoke对应选项的安装,使用如下教程来进行core的安装卸载
inv --list #list 指令选项: daemon #运行 core-daemon install #安装 core, poetry, scripts, service, ospf mdr install-emane #安装 emane and the python bindings install-scripts #安装 core 脚本执行文件, 修改以利用虚拟环境 install-service #安装 systemd core 服务 test #运行 core tests test-emane #运行 core emane tests test-mock #运行 core tests 使用 mock 来避免以管理员(sudo)来执行 uninstall #卸载 core, scripts, service, virtual environment, 清理 build 目录 #安装的详细帮助信息 inv -h install Usage: inv[oke] [--core-opts] install [--options] [other tasks here ...] Docstring: install core, poetry, scripts, service, and ospf mdr Options: -d, --dev 安装开发模式 -p STRING, --prefix=STRING 设置脚本安装路径,默认是/usr/local -v, --verbose 启用 verbose
关于汉化gui界面的重装
# 先卸载 sudo make uninstall make clean ./bootstrap.sh clean #安装 ./bootstrap.sh ./configure make sudo make install # 上述代码就是早期版本的生成和卸载
# 新版本直接使用invoke卸载重装整个即可,当然有需要可以在invole脚本对应的task.py中添加instal-core,如下所示 @task() def reinstall_core( c, dev=False, verbose=False, local=False, prefix=DEFAULT_PREFIX, install_type=None ): """ reinstall core by LK233 """ hide = not verbose p = Progress(verbose) c.run("sudo -v", hide=True) print(f"uninstalling core with prefix: {prefix}") with p.start("uninstalling core"): c.run("sudo make uninstall", hide=hide) with p.start("cleaning build directory"): c.run("make clean", hide=hide) c.run("./bootstrap.sh clean", hide=hide) print(f"installing core with prefix: {prefix}") with p.start("building core"): build_core(c, hide, prefix) with p.start("installing vcmd/gui"): install_core(c, hide)
整个core套件卸载重装时遇到的问题
由于卸载脚本运行时没有卸载虚拟环境中的poetry,导致之后运行安装脚本invoke报错停止。可以通过在安装脚本添加–force强制安装或卸载脚本添加卸载poetry代码解决,最快的解决办法(core安装在虚拟环境的情况)卸载后在core的根目录执行
pipx uninstall poetry
安装Emane
自动安装脚本安装的Emane版本为1.25,Core虚拟环境安装仅支持Emane1.21以上版本
invoke脚本任务能自动安装Emane,它从源代码来构建安装Emane,但在较老的Protobuf编译器上的系统存在问题。
# 安装Emane到core虚拟环境中
inv install-emane
# 安装到真实python环境
inv install-emane -l
另外,EMANE可以从deb或RPM包或从源代码安装。详见EMANE GitHub。需要注意的是,如果不是本地python环境安装,python需要绑定到CORE的virtualenv中。(Emane安装教程)需要将EMANE python绑定安装到CORE虚拟环境virtualenv中。如下所示:(安装过程与invok脚本安装emane类似)
# 克隆和构建Emane python绑定
git clone https://github.com/adjacentlink/emane.git
cd emane
./autogen.sh
PYTHON=python3 ./configure --prefix=/usr
cd src/python
sudo make
sudo make install
# 安装到core虚拟环境
cd <CORE_REPO>/daemon
poetry run pip install <EMANE_REPO>/src/python
运行core
要测试CORE Network Emulator是否工作,请启动CORE守护进程和GUI。 首先,启动CORE守护进程:
sudo service core-daemon start #直接开新终端运行,方便看日志 sudo core-daemon #守护进程帮助手册 -h -f CONFIGFILE, --configfile CONFIGFILE 读取配置文件CONFIGFILE,默认是/etc/core/core.conf -p PORT, --port PORT 设定port为守护进程监听端口,默认4038 --ovs 启用实验ovs模式,默认为false --grpc-port GRPCPORT 设定GRPCPORT为GRPC监听端口,默认50051 --grpc-address GRPCADDRESS 设定GRPCADDRESS为监听grpc地址;默认本地主机 -l LOGFILE, --logfile LOGFILE 设置LOGFILE为守护进程日志选项,默认为/etc/core/logging.conf,错误日志为core-daemon.log
如果在安装CORE后没有重新启动,此时可能会遇到错误。如果您看到告诉您文件core守护进程的错误。 服务不存在,请重新启动系统。重新启动后,再次尝试启动core守护进程服务。 然后,运行CORE GUI
core-gui
如果你创建自己的python脚本来直接运行CORE或者使用gRPC/TLV api,你需要确保你是在安装的虚拟环境的上下文中运行它们。为了帮助支持这个CORE提供了CORE-python可执行文件。这个可执行文件将允许你进入CORE的python虚拟环境解释器或在其中运行脚本。
core-python <script>
若是安装在真实环境中直接执行
python3 <script>
Core文件介绍
下面是运行自动安装后将安装的文件列表。
**注:**默认的安装前缀是/usr/local,但可以更改如下所示
- 执行文件
<prefix>/bin/{core-daemon, core-gui, vcmd, vnoded, etc}
- tcl/tk gui 文件
<prefix>/lib/core
<prefix>/share/core/icons
- 示例场景 imn 文件
<prefix>/share/core/examples
- python 文件
- poetry 虚拟环境
cd <repo>/daemon && poetry env info
~/.cache/pypoetry/virtualenvs/
- 本地python安装
- default install path for python3 installation of a wheel
python3 -c "import core; print(core.__file__)"
- poetry 虚拟环境
- 配置文件
/etc/core/{core.conf, logging.conf}
- ospf mdr 仓库文件
<repo>/../ospf-mdr
- emane 仓库文件
<repo>/../emane
执行文件
安装完成后,它将安装以下脚本。
名称 | 描述 |
---|---|
core-cleanup | 删除工具,帮助删除Core创建的容器,网桥,目录 |
core-cli | 运行支持的Core服务器,提供TLV和gRPC api |
core-daemon | runs the backed core server providing TLV and gRPC APIs |
core-gui | 运行传统的基于tcl/tk的GUI |
core-imn-to-xml | 帮助自动将.imn文件转换为.xml格式的工具 |
core-manage | 用于添加、移除或检查|中的服务、模型和节点类型的工具 |
core-pygui | 运行新的的基于Python的GUI |
core-python | 运行core虚拟环境内的python |
core-route-monitor | 帮助监控节点间的流量并将其提供给SDT的工具 |
core-service-update | 更新修改遗留服务以匹配当前命名的工具 |
coresendmsg | 从命令行发送TLV API命令的工具 |