Sigcomm2022 Retina
实验复现
实验复现使用环境:
- Ubuntu 20.04 LTS (16*[email protected] 256G)
- X710 10G Ethernet Adapter 和 Nvidia Bluefield2 DPU
安装
安装依赖
由于使用DPDK 20.08,meson不能安装0.60以上的版本,否则会导致编译问题。
|
|
安装其他依赖
|
|
安装Mellanox驱动
mellanox的卡还是需要安装MLNX_OFED,可以在Linux InfiniBand Drivers 这里下载,然后执行如下操作:
|
|
安装DPDK
- 下载DPDK 20.08
1
curl -LO https://fast.dpdk.org/rel/dpdk-21.08.tar.xz
- 配置1GB大页内存
修改
/etc/default/grub
文件来保留1G的大页(同时隔离了要使用的CPU核心):更新GRUB并重启服务器1
GRUB_CMDLINE_LINUX="default_hugepagesz=1G hugepagesz=1G hugepages=64 iommu=pt intel_iommu=on isolcpus=1-8"
1 2
sudo update-grub sudo reboot now
- 重启之后挂载大页内存给DPDK使用
1 2
sudo mkdir /mnt/huge sudo mount -t hugetlbfs pagesize=1GB /mnt/huge
- 从源码上安装DPDK
-
解压
1
tar xJf dpdk-21.08.tar.xz
-
设置环境变量
1 2 3
export DPDK_PATH=/home/pengjd/Downloads/dpdk-21.08 export LD_LIBRARY_PATH=$DPDK_PATH/lib/x86_64-linux-gnu export PKG_CONFIG_PATH=$LD_LIBRARY_PATH/pkgconfig
-
编译DPDK
信息视情况而定要不要编译
regex/octeontx2
这个驱动(默认状况下,我的环境会编译这个驱动,但是最后会导致编译不出来),若不需要编译,则可执行下面代码:1 2
# cd $DPDK_PATH/build meson configure -Ddisable_drivers=regex/octeontx2
1 2 3 4 5
meson --prefix=$DPDK_PATH build cd $DPDK_PATH/build ninja sudo ninja install sudo ldconfig
-
绑定网络端口 我们这里绑定的是X710的口2,显示在系统里面是
ens4f1
1 2 3 4
# load the vfio-pci module sudo modprobe vfio-pci # bind sudo $DPDK_PATH/usertools/dpdk-devbind.py --bind=vfio-pci ens4f1
绑定好了可以输入以下命令查看绑定情况:
1
sudo $DPDK_PATH/usertools/dpdk-devbind.py --status
-
安装rust
使用VSCode开发的时候(并使用rust-analyzer),过程宏需要展开,否则会提示报错,需要在rust-analyzer的settings.json
添加:
|
|
此外,由于编译的过程还需要DPDK的支持,因此之前的环境变量要确保成功配置了,否则编译、显示都会有异常。
具体安装Rust请参考Rust官网:https://www.rust-lang.org/zh-CN/
编译Retina
- 克隆代码
1
git clone https://github.com/stanford-esrg/retina.git
- 编译所有应用
1
cargo build --release
- 运行
1
sudo env LD_LIBRARY_PATH=$LD_LIBRARY_PATH RUST_LOG=error ./target/release/my_app
X710相关
我们这里需要更改retina/core/src/port/mod.rs
的295
行代码有关rss_hf
的内容:
|
|
运行示例
基本示例应用
|
|
pcap_dump
应用
离线使用
|
|
在线使用
对应的配置文件online_ens4f1.toml
:
|
|
执行以下语句开始测试:
|
|
论文十问
Q1: 论文试图解决什么问题?
Q2: 这是否是一个新的问题?
Q3: 这篇文章要验证一个什么科学假设?
Q4: 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?
Q5: 论文中提到的解决方案之关键是什么?
Q6: 论文中的实验是如何设计的?
Q7: 用于定量评估的数据集是什么?代码有没有开源?
Q8: 论文中的实验及结果有没有很好地支持需要验证的科学假设?
Q9: 这篇论文到底有什么贡献?
Q10: 下一步呢?有什么工作可以继续深入?
Reference
- Paper source: Retina Analyzing 100 GbE Traffic on Commodity Hardware.pdf
- 项目Github Repo: https://github.com/stanford-esrg/retina