长期支持版本

    社区创新版本

      Gazelle单网卡功能使用说明

      背景介绍

      目前使用 Gazelle 进行应用程序进行加速时,只能处理应用程序使用端口的报文,对网卡接收到的其他报文(如运维命令ssh 等),无法进行处理。

      功能介绍

      对于网卡接收到的所有报文,在 Gazelle 内部进行分流处理。分流原则如下:对于Gazelle 记录端口的报文在 Gazelle 处理后送到应用程序,对未记录端口的报文转送到内核。

      举例:当Gazelle 加速redis时,Gazelle 会在启动时记录redis监听的端口6379。当Gazelle 收到网卡的报文后,进行每个报文进行判断,对于目的端口是6379 的报文送到Gazelle,其余的报文送到内核进行处理。

      使用说明

      虚机场景

      1. 安装dpdk Gazelle 配置大页
      yum install -y dpdk gazelle
      echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
      mkdir -p /mnt/hugepages-lstack
      chmod -R 700 /mnt/hugepages-lstack
      mount -t hugetlbfs nodev /mnt/hugepages-lstack
      

      详细步骤可参考:挂载大页内存

      1. dpdk 绑定网卡

      以网卡绑定 igb_uio 为例

      cd /lib/modules
      my_var=$(find /lib/modules/ -name igb_uio.ko)
      modprobe uio
      # 加载ko
      insmod ${my_var}
      #使用igb_uio
      dpdk-devbind -b igb_uio enp3s0
      

      详细步骤可参考: dpdk绑定网卡

      1. 修改Gazelle配置文件
      flow_bifurcation=1 # 打开分流开关
      
      1. 加速应用程序,启动Gazelle 以加速 redis 为例
      LD_PRELOAD=/usr/lib64/liblstack.so Gazelle_BIND_PROCNAME=redis-server /root/redis-server /root/redis.conf
      

      容器场景

      1. 安装dpdk、配置大页、dpdk 绑定网卡 同上述章节虚拟场景配置
      2. 安装 docker
      yum install -y docker
      
      1. 导入镜像
      docker load -i openEuler-docker.x86_64.tar.xz
      
      host模式
      1. 启动容器
      docker run -d -it --privileged -v /lib/modules:/lib/modules -v /mnt:/mnt -v /dev:/dev -v /sys/bus/pci/drivers:/sys/bus/pci/drivers -v /sys/kernel/mm/hugepages:/sys/kernel/mm/hugepages -v /sys/devices/system/node:/sys/devices/system/node -v /dev:/dev openeuler-22.03-lts-sp4 bash
      
      docker 启动映射文件解释
      -v /lib/modules:/lib/modules 映射内核模块
      -v /mnt:/mnt 映射外部存储设备 文件系统
      -v /dev:/dev 映射内核设备
      -v /sys/bus/pci/drivers:/sys/bus/pci/drivers 映射驱动文件
      -v /sys/kernel/mm/hugepages:/sys/kernel/mm/hugepages 映射大页信息
      -v /sys/devices/system/node:/sys/devices/system/node 映射节点信息
      
      1. 进入容器
      docker exec -it xxxxx bash
      
      1. 安装dpdk Gazelle
      yum install -y dpdk gazele
      
      1. 修改配置文件
      flow_bifurcation=1 # 打开分流开关
      devices="52:54:00:de:2a:57" # 修改mac地址为 dpdk绑定的网卡地址
      
      1. 启动Gazelle 以加速 redis 为例
      LD_PRELOAD=/usr/lib64/liblstack.so Gazelle_BIND_PROCNAME=redis-server /root/redis-server /root/redis.conf
      
      VF 直通模式
      1. 启动容器
      docker run -d -it --network host --privileged -v /lib/modules:/lib/modules -v \
      /mnt:/mnt -v /dev:/dev -v /sys/bus/pci/drivers:/sys/bus/pci/drivers -v \
      /sys/kernel/mm/hugepages:/sys/kernel/mm/hugepages -v \
      /sys/devices/system/node:/sys/devices/system/node -v /dev:/dev  \
      openeuler-22.03-lts-sp4 bash
      
      1. 配置VF 直通网卡
      echo 2 > /sys/class/net/enp130s0f1/device/sriov_numvfs 
      docker ps
      PID=$(docker inspect -f '{{.State.Pid}}' 容器名称)
      mkdir -p /var/run/netns
      ln -s /proc/PID/ns/net /var/run/netns/PID
      ip link set enp129s0f1v0 netns PID
      
      1. 进入容器
      docker exec -it xxx bash
      
      1. 安装dpdk Gazelle
      yum install -y dpdk gazele
      
      1. 修改配置文件
      flow_bifurcation=1 # 打开分流开关
      devices="52:54:00:de:2a:57" # 修改mac地址为VF直通的网卡
      
      1. 启动Gazelle 以加速 redis 为例
      LD_PRELOAD=/usr/lib64/liblstack.so Gazelle_BIND_PROCNAME=redis-server /root/redis-server /root/redis.conf
      

      功能限制

      1. 同节点通信(用户态服务端+内核态客户端 或者 用户态客户端+ 内核态服务端)只支持TCP协议,UDP 协议暂不支持。
      2. 不支持和kni 功能同时开启。
      3. 对不携带端口的报文无法做到分流。
      4. 开启此功能后,性能会下降 2% 左右。
      5. 虚拟环境及容器环境需要支持ip a命令查询网卡信息。若不支持此命令,可能影响虚拟网卡IPV6地址状态,进而影响IPV6通信。

      已支持运维命令

      • ifconfig

      • tcpdump

      • ifconfig

      • ftp/sftp

      • sar

      • netstat

      • ssh -- 需开启ssh 登录,若未开启可按照下面方式开启

      [root@eb2936ebeaaf ~]# yum install openssh-server
      [root@eb2936ebeaaf ~]# vim /etc/ssh/sshd_config
      Port 22 # 开启端口
      PubkeyAuthentication yes # 修改登录验证方式
      [root@eb2936ebeaaf ~]# /usr/sbin/sshd  # 启动ssh服务
      [root@eb2936ebeaaf ~]# netstat -pant | grep sshd # 查询 ssh 服务是否开启
      

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份