Simbricks简介

什么是Simbricks欸

总的来说,它就是一个模拟器,详细点就是模拟器框架。
它能干啥呢,能实现对现代的网络系统做端到端模拟,包括运行完整软件的多台服务器,其中甚至有操作系统(一般就是Linux,毕竟代码里的Image就是)、PCI、NET等网络拓扑和设备、应用程序以及现成的和定制的硬件组件。
Simbricks可不是从头开始的新的模拟器,它类似于一个桥梁,将多个现有的模拟器组合连接成一个完整的模拟系统。
simbricks
这图片是不是很形象?形象就对了,毕竟是从git上弄的

包含了哪些模拟器

好了,说完了Simbricks大概是啥,就来说说它到底给哪几个模拟器搭桥了吧

  1. QEMU ,快速的主机模拟(跑用例的时候确实快,应该是性能模拟吧);
  2. gem5 灵活详细的主机模拟(跑用例超慢的,怕不是功能模拟);
  3. ns3 灵活的网络模拟器(模拟了交换机啊啥的,具体代码还没看);
  4. OMNeT++ INET 反正也是灵活的网络模拟器(没见过,不知道,别问我);
  5. Intel Tofino SDK Simulator 供应商提供的用于Tofino P4交换机的闭源模拟器;
  6. FEMU NVME SSD的相关模拟;
  7. Verilator Verilog RTL模拟(你会Verilog吗?反正我不会);

如何开始

simbricks的安装

sudo docker run -it simbricks/simbricks /bin/bash

不能加-rm,会在退出后删除刚刚的容器。
当然要加也可以,如果要改源码啥的会给你难受死,哦对,我一开始还傻乎乎的在终端里面用vim改容器里的代码,后面再说;
一个image可以生成不同的container,要是次次都用这个命令,容器会多到起飞的!
记得删除(确信)后面也有其他办法就是

docker的启动方法(使用ssh连接,能保存文件修改的方式)

PS.当然要是,不是远程连服务器,那无所谓ssh
sudo docker ps -a 查看正在运行的容器

如果容器已经关闭,用
sudo docker start 容器名称 打开容器(别跟着在终端里敲一个容器名称啊,查看运行的容器!)

然后就可以起飞辣(不是)用
sudo docker exec -it 容器名称 /bin/bash 进入正在运行的容器内(同上)
可以对容器进行修改,修改会自动保存。下次再进入同样名称的容器内时修改还存在。
(毕竟没删除不是)

使用ssh连接

①创建一个加有端口映射的容器(端口设为20022)
sudo docker run --it  -p 20022:22 simbricks/simbricks /bin/bash
②安装ssh server:
apt update 
apt install passwd openssl openssh-server openssh-client -y
③配置ssh server:vim /etc/ssh/sshd_config

#添加下面两行

PermitRootLogin yes
PasswordAuthentication yes

上面注意的一点是sshd_config 而不是ssh_config,一定不能混淆了。

④添加后设置密码

输入passwd命令设置密码
后面登录的密码就是现在设置的密码

⑤重启sshd

service ssh restart

⑥然后就可以在远程登录了

本地电脑上可以测试一下连接服务器到这个docker
ssh root@ip -p 20022

有时候ssh服务会莫名其妙关闭,要重启
在根目录下: /etc/init.d/service ssh status
重启ssh服务: /etc/init.d/ssh restart
上面这个命令不行的话得运行下面这个 sudo /etc/init.d/ssh restart

使用vscode通过ssh打开代码

docker配置好端口后就相当于连接一个远程服务器。
已经有其他大佬写好了VScode连接远程服务器辣,我就不献丑了(Ubuntu输入法我受不了了)
VSCode上装些杂七杂八的扩展,docker、python、Dev Containers
装了,基本上就能很方便的改容器内的代码了

运行gem5_i40e_pair.py

①在/simbricks目录下运行
make convert-images-raw 命令
毕竟你不跑这个命令,gem5相关的用例全部木大哒!(欧拉!)
②在/simbricks/experiments目录下运行
simbricks-run --verbose --force pyexps/gem5_i40e_pair.py命令

Simbricks简单介绍结束!

我这篇文章属于是听君一席话,如听一席话,感觉好像啥也没讲。有大佬愿意接手继续详细将将源码啊,内部脚本是怎么通过代码去调用其他模拟器的啊。就好了,毕竟我也还在看。
下次有机会写写Adapter(咕咕咕)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值