简介
#1. 简介
本指南为 DeepFlow 采集器 Vxlan 隧道卸载模式(river/rosen)的部署和配置方法。
当用户的第三方工具不能解析来自 Agent 分发过来的 VxLAN 流量时,river 和 rosen 可用于隧道解封装。二者的差别在于:
- river 可安装于任意 Linux 操作环境下,无任何运行依赖,性能极限为 2Gbps / 200Kpps
- rosen 需要运行于独立的物理或虚拟服务器中,且服务器需要安装 DeepFlow 提供的 Linux 内核,性能极限为 10Gbps / 10Mpps
- 隧道解封装采集器注册
- 从 6.1.8 开始,新部署的隧道解封装采集器需要在页面手工录入。
- deepflow管理界面进入
系统-采集器在列表选项卡中点击齿轮选择新增隧道解封装采集器进行录入。

新增隧道解封装采集器
注意:
- 不支持运行于 DPDK 环境中
- 不支持 VXLAN 以外的协议解封装
#2. 部署安装 - River
将控制器中的river*.rpm复制到分发节点上:
scp deepflow-controller:/usr/local/deepflow/yum/7/river*.rpm /tmp/
安装river:
rpm -ivh /tmp/river*.rpm
添加tap0虚拟口用于发送解隧道后的流量:
ip link add tap0 type dummy
ip link set tap0 up
2
警告
警告:请勿将解封装流量发送到物理接口,有可能会造成网络环路!
修改配置文件/etc/river.yaml:
# 控制器IP
controller-ips:
- 172.20.1.128
enable-profiler: false
# river从该网卡接受vxlan流量
interfaces:
- p4p2
# river将vxlan解封装后,将还原的的流量发送到该网卡
output-interfaces:
- tap0
2
3
4
5
6
7
8
9
10
启动river:
systemctl enable river
systemctl start river
2
#3. 部署安装 - rosen
点击查看
注意:Rosen暂不支持对 IPv6 隧道的解封装。
#3.1 服务器规格
推荐配置:
- CPU:16个逻辑核
- 内存:16G内存
- 磁盘:50G系统盘
- 控制面网口:1xGE
- 数据面网口:2x10GE(一进一出)
上述配置下的物理服务器性能参数:
- 10Mpps / 10Gbps
支持的物理网卡驱动:
- Intel ixgbe* drivers (
支持Intel 82599系列10G网卡) - Intel i40e driver (
不支持Intel X722 10Gb, Intel X710 10Gb 网卡) - Intel ixgbevf driver
- Intel ixgbevf driver
- Mellanox mlx4 driver
- Mellanox mlx5 driver
- Netronome nfp driver
- QLogic (Cavium) qed* drivers
- Broadcom bnxt_en driver
- Cavium thunderx driver
#3.2 部署Rosen
队列设置
如果网卡使用的是82599系列10G网卡执行下面操作,否则跳过此项设置。若部署机器的CPU数量大于48,需要BIOS关闭超线程, 否则不需要设置。
执行完上面步骤之后,若CPU数量大于32,需要设置出接口队列的数量:
ethtool -L <出接口名字> combined <queue_number>1其中 queue_number = 62 - cpu数量
安装包获取
- 如果使用salt部署,从控制器
/usr/local/deepflow/yum/7/获取安装包 - 如果使用docker部署, 从ISO中的
extra-artifaces目录下寻找相应的安装包
- 如果使用salt部署,从控制器
Centos 7
更新内核
安装 rosen 的节点机器需要4.19内核, 如果非4.19内核需要找到
kernel-4.19.*.el7.x86_64.rpm安装包进行内核更新,安装命令如下:# 先把旧版本删除,然后安装新版本。 /usr/bin/rpm -e kernel-4.19.*-*.el7.x86_64 --nodeps rpm -ivh ./kernel-*.rpm1
2
3安装完内核之后重启服务器,确保在
4.19.17内核中运行rosen。找到
rosen-*.el7.*.rpm,bpftool*.rpm,tcpdump*.rpm,libpcap*.rpm复制到分发节点上(复制到/tmp目录下):安装rosen以及依赖项
rpm -ivh /tmp/{rosen,bpftool,tcpdump,libpcap}-*.rpm1
Centos 8
找到
rosen-*.el8.*.rpm复制到分发节点上(复制到/tmp目录下):安装rosen
rpm -ivh /tmp/rosen-*.el8.*.rpm1
修改配置文件
/etc/rosen.confglobal_defs { # 日志文件 log_file /var/log/rosen.log # mtu < 3050 mtu 1500 # 模式设置 # 0: DRV 高性能模式,需要网卡支持,详细支持列表参考用户手册 # 1: SKB 普通模式,对网卡没有要求 mode 0 # 控制器IP:Port, 可以填写多个 如:10.30.1.128:20035,10.33.49.29:3000,10.33.49.23:5000 # 用逗号分割,注意逗号两边不要有空格。 env_sync_addr 10.30.1.128:20035 # 控制器上报时间间隔 unit: second (秒) env_sync_period 60 # 请求超时时间 unit : millisecond (毫秒) sync_timeout 10000 } # 接口定义 interface_defs { # 接口总数量 < 64 # 配置遵循出口写在前面,入口写在后面的顺序。 # 出口配置 <init> interface p2p1 { # 接口不进行转发,转发的目的端口使用'none' int_fwd none } # 入口配置 <init> interface p2p2 { # 接口转发的目的接口,注意:接口都是一对一转发。 int_fwd p2p1 } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44运行
- systemctl enable rosen.service
- systemctl start rosen.service
- 查看版本使用:
rosen -v
#3.3 在虚拟机中部署
点击查看
这里使用出口为veth设备的方式,把数据解封装到虚拟机中进行处理。
- 入口使用驱动为
virtio\_net driver虚拟网卡。可使用ethtool查看设备驱动名称,如:ethtool -i eth0 - 出口使用
vethpair网络设备。执行下面命令创建veth设备,并追加到/sbin/ifup-local中,使其机器重启时能够创建。
#创建 vethpair 设备
ip link add name veth0 type veth peer name veth1
ip link set dev veth0 up
ip link set dev veth1 up
2
3
4
对/sbin/ifup-local设置一下权限:
chmod 755 /sbin/ifup-local
- 修改配置文件
/etc/rosen.conf, 例如:
global_defs {
... ...
# 选用SKB模式
mode 1
... ...
}
interface_defs {
# 出口配置
<init> interface veth0 {
int_fwd none
}
# 入口配置
<init> interface eth0 {
int_fwd veth0
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
点击查看
注意:① 模式选用1,使用 mode 1 ② 可使用tcpdump -i veth1 -ne查看转换后的数据。
#3.4 如何调试
日志文件:/var/log/rosen.log
抓包调试:rosen使用XDP收发包,网卡不再支持tcpdump。额外提供rosen-dump用于抓包调试。
rosen-dump -i interface [OPTS]
OPTS:
-h help
-x Show packet payload
-w file Write the raw packets to file rather than parsing and printing them out.
2
3
4
5
6
注意: 运行rosen-dump,确保禁用SELinux
setenforce 0