元经纪 - 元宇宙与人工智能领域相关产品与服务一站式采购平台

400-6166692

BESS:软件交换机的模块化框架

分类:开源 时间:2023-03-15 05:30 浏览:455
概述
内容

概述

BESS(以前称为SoftNIC)是软件交换机的模块化框架。BESS 本身不是虚拟交换机;它既没有预先配置也没有硬编码来提供特定功能,例如以太网桥接或 OpenFlow 驱动的交换。相反,您(或外部控制器)可以通过组合小“模块”来配置您自己的数据包处理数据路径。虽然基本概念与Click类似,但 BESS 不会为了可编程性而牺牲性能。

BESS 由 Sangjin Han 创建,由加州大学伯克利分校和 Nefeli Networks 开发。BESS 的贡献者包括关心高性能和高可定制性网络的学生、研究人员和开发人员。BESS 在 BSD 许可证下是开源的。

BESS的四个关键组成部分

  • bessd:“BESS 守护进程”是核心软件开关。守护进程本身在端口和模块之间传送数据包。
  • 端口:端口是数据包可能进入或退出 bessd 的地方。端口可以​​连接到网络接口、虚拟机、容器化应用程序或在用户空间中运行的正常进程。
  • 模块:模块是允许 bessd 检查或修改数据包的代码块。模块通过输入和输出接收和释放数据包。一些内置模块包括:
    • [hidecontent type="logged" desc="隐藏内容:登录后可查看"]

        • 一个循环模块,它在一个输入门上接收数据包,并在多个输出门上以循环方式释放数据包。
        • ACL 模块,它在一个输入门上接收数据包,并检查数据包头是否与列入黑名单的防火墙规则匹配。匹配黑名单规则的数据包在一个门上发布,不匹配任何黑名单规则的数据包在另一个门上发布。
      • bessctl:这是 bessd 的控制器。bessctl 提供了一个命令行界面,允许管理员配置哪些端口连接到哪些模块,检查 bessd 中的流量在哪里,以及各种其他有用的管理命令。

      BESS 是否在内核中运行?

      不!BESS 完全在用户空间中,并使用 DPDK 直接绑定到网络接口(绕过内核)。避免内核网络堆栈的开销是使 BESS 超快的部分原因。这是与上图相同的图,但现在考虑了内核/用户空间划分。

      如果您是 BESS 的新手,我们建议您从这里开始:

      1. 贝斯概述
      2. 构建和安装 BESS
      3. 编写 BESS 配置脚本
      4. 将 BESS 连接到网络接口、VM 或容器

      要在 Linux 上快速安装 BESS,您可以从Release下载二进制文件。请参阅GCC x86 选项以确定要使用的 tarball。假设bess-core2-linux.tar.gz下载:

      sudo apt-get install -y python python-pip libgraph-easy-perl
      pip install --user protobuf grpcio scapy
      sudo sysctl vm.nr_hugepages=1024  # For single NUMA node systems
      tar -xf bess-core2-linux.tar.gz
      cd bess/
      make -C core/kmod # Build the kernel module (optional)
      bessctl/bessctl

      [/hidecontent]

       
微信客服
返回顶部