Section outline

  •         此课程针对 SEED 互联网仿真器的基础知识和如何使用进行说明。我们提供了两种形式的仿真器: Python 代码和容器文件。这些容器文件是Python 代码生成的,但学生需要从 GitHub 上安装 SEED 仿真器的源代码才可以运行 Python代码。而容器文件则可以直接使用,无需安装仿真器源代码。希望定制仿真器的教师可以修改 Python 代码、生成自己的容器文件,并将文件提供给学生替换实验提供的文件。

      •        请从每个实验的实验环境小节部分下载 Labsetup.zip 文件并解压缩。output 文件夹内的文件是从 Python 脚本 mini-internet.py  生成的实际仿真文件(容器文件)。

      •        我们将直接使用 output 文件夹中的容器文件。进到该文件夹,运行以下 Docker 命令来构建并启动容器。我们建议在提供的 SEEDUbuntu20.04 虚拟机中运行仿真器,但只要安装了 Docker 软件,也可以在一个通用的 Ubuntu20.04 操作系统上进行操作。

        $ docker-compose build
        $ docker-compose up
        
        // 在SEED VM 中的别名命令(仅在 SEED VM 中可用)
        $ dcbuild       # 别名: docker-compose build
        $ dcup          # 别名: docker-compose up
        $ dcdown        # 别名: docker-compose down
  • mapgui

            仿真器内的每台计算机(主机或路由器)都是一个 Docker 容器。用户可以通过使用 Docker 命令来访问这些计算机,例如在容器内部获取shell。仿真器还附带了一个 Web 应用程序,可以可视化所有主机、路由器和网络。启动仿真器后,可以从以下 URL 访问地图:http://localhost:8080/map.html 。参见上图。用户可以通过此地图进行交互操作,例如从容器中获取终端,禁用 BGP 会话。如下图所示。

    detail

          此外,还可以设置过滤器来可视化网络流量。过滤器的语法与 tcpdump 的相同,实际上,这些过滤器直接传递给仿真器上所有节点上的 tcpdump 程序。

  •         为了使用户能够容易地识别仿真实验中的各个节点的角色,我们创建了一套给各种节点分配不同编号时要遵循的约定。这些约定仅适用于仿真实验,在现实世界中并不适用。
           • 自治系统号码(ASN)分配:

                     –  ASN 2- 9:大型中转自治系统(例如国家骨干网)。

                     –  ASN 10- 19:较小的中转自治系统。

                     –  ASN 100- 149:互联网交换所(IX)。

                     –  ASN 150- 199: Stub 自治系统(Stub AS)。
           • 网络前缀和 IP 地址:

                     – 对于自治系统N,其第一个内部网络的前缀为 10.N.0.0/24,第二个内部网络为 10.N.1.0/24,依此类推。

                     – 在每个网络中,地址从 200 到 255 都是路由器的IP地址。对于非路由器(主机),其 IP 地址从 71 开始。   例如,在 AS-155 中,10.155.0.255 是一个 BGP 路由器,而 10.155.0.71 则是一个主机。