Core Emane环境搭建

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
  1. 自动安装脚本install.sh将会执行以下工作

    • 安装安装所需的基础工具python3, pip, pipx, invoke, poetry
    • 为构建Core安装系统依赖
    • clone/build/install OPSF MDR 的工作版本
    • 通过传入参数标志,设定将Core安装到poetry管理的虚拟环境中或真实环境中
    • 根据安装类型来安装适当的Python位置的指向脚本
    • 根据安装类型来安装适当的Python位置的systemd服务
  2. 运行软件安装脚本install.sh报错或无效时会直接停止导致后续命令不执行。

    如果是因为模块已经安装过,打开脚本进行查看对应安装命令,卸载需要删掉的环境模块即可。

  3. 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
    
  4. 关于汉化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)
    
  5. 整个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__)"
  • 配置文件
    • /etc/core/{core.conf, logging.conf}
  • ospf mdr 仓库文件
    • <repo>/../ospf-mdr
  • emane 仓库文件
    • <repo>/../emane

执行文件

安装完成后,它将安装以下脚本。

名称描述
core-cleanup删除工具,帮助删除Core创建的容器,网桥,目录
core-cli运行支持的Core服务器,提供TLV和gRPC api
core-daemonruns 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命令的工具