简介

流量整形,也称为packet shaping,是一种带宽管理策略,它延迟特定网络数据包的流动,以确保更高优先级应用程序的网络性能。它通常用于确保与业务相关的网络流量获得高水平的服务。通过延迟某些数据包,流量整形可以增强或确保性能、减少延迟或增加关键应用程序的可用带宽。

由于网络资源有限,流量整形是网络防火墙的必备功能,可确保时间敏感数据的交付和关键应用程序的性能。它是防御分布式拒绝服务 ( DDoS ) 攻击和确保服务质量的有力方法。它可以保护网络免受网络拥塞、限制滥用客户端并防止网络攻击。

适用于需要限制某些用户的 Internet 带宽,同时为对延迟特别敏感的 IP 语音 (VoIP) 等业务关键型应用程序提供最大带宽的业务场景。

OPNsense 具有极其灵活和可靠的流量整形功能。整形规则与防火墙规则和其他配置分开处理。针对以下情况配置流量整形器:

  • 为实时流量(例如 VoIP)保留专用带宽
  • 在客户端之间平均共享 Internet 带宽
  • 优先考虑关键应用程序
  • OPNsense 中基于网络接口的流量整形

OPNsense 中的流量整形器是什么?

OPNsense 流量整形是一种非常有用的解决方案,用于确定流量的优先级和限制带宽。此外,它还可以与其他功能相结合,例如强制门户。OPNsense 流量整形器使用 pipes、queues 和相应的配置 rules:

  • 管道(pipes):管道用于定义允许的带宽。
  • 队列(queues):队列在管道内设置权重。可以通过创建队列并为其分配权重来确定流量的优先级。换句话说,当总可用带宽有限时,权重较高的应用程序可能会比其他应用程序消耗更多的带宽。
  • 规则(rules):规则将整形应用于特定的数据包流。

可以根据以下标准设置带宽限制:

  • 接口
  • IP源和目标,
  • 流量方向(进/出)
  • 端口号(应用程序)

OPNsense 流量整形功能允许在所有用户之间平均分配可用带宽,确保始终保持最佳性能。

OPNsense 中的流量整形器如何工作?

OPNsense 流量整形器采用 dummynet 和 ipfw 提供可靠的解决方案,CPU 占用率低。Dummynet ipfw 首先使用可以在规则中使用的任意匹配模式对数据包进行分类并将它们划分为流。根据本地策略,流可以包含特定协议类型的数据包、整个子网的数据包、进/出特定主机的数据包、单个 TCP 连接的数据包等。

然后将来自同一流的数据包路由到以下应用流量规则的对象之一:

  • 管道:管道模拟具有指定带宽、队列大小、传播延迟和丢包率的连接。当网络数据包离开分类器时,它们在管道前面排队,然后根据管道的参数传输到管道。
  • 队列:队列是用于实现WF2Q (Worstcase Fair Weighted Fair Queueing)策略的抽象。每个流由队列分配一个权重和一个参考管道。连接到同一管道的所有积压流与其权重成比例地共享管道的带宽。

提示:Weights不是优先事项;即使具有较高权重的流被永久积压,具有较低权重的流仍然可以保证获得其带宽份额。

Pipes可用于设置流可以使用多少带宽的强制限制Queues,而可用于确定不同流如何共享可用带宽。

rules可以在流量整形器的页面中定义整形规则。

如何在 OPNsense 中查看流量整形状态或统计数据?

查看流量整形器是否正常工作,可以导航至Firewall > Shaper > Status。在Status流量整形器的页面中,可以查看以下详细信息:

  • 配置管道、队列和规则。
  • 自上次重新启动服务以来通过它们的流量。
  • 发生时的时间戳。

流量整形状态页面还提供以下选项:

  • 显示活动流:通过选中Show active flows选项查看活动流详细信息;在修改后需要重新刷新视图。
  • 显示规则:由于 ipfw 按规则跟踪数据,可以选中Show rules选项来启用规则以更轻松地识别错误配置。

如何为实时流量预留专用带宽?

如果总部办公室和托管 VoIP/SIP 服务器的远程数据中心之间存在 SIP 数据包丢失和延迟,可以为 VoIP 流量预留一个专用带宽。假设:

  • HQ Office WAN 连接有 20 Mbps下载和 2 Mbps上传带宽。
  • HQ Office 有 10 个 64 kbps 的未压缩语音通道,总带宽为 640 kbps。
  • 总部 LAN 使用10.10.10.0/24IP 地址。
  • VoIP/SIP 服务器 IP 地址为 22.33.44.55。

通过以下两个主要步骤,可以轻松地为 VoIP 流量预留专用带宽:

  1. 创建上传和下载管道
  2. 创建流量整形规则

这些步骤将在以下部分中进行简要说明。

创建上传和下载管道

创建以下4 个管道:

  • 到 VoIP/SIP 服务器的上传管道限制为 640 kbps。
  • 从VoIP/SIP 服务器下载管道限制为 640 kbps。
  • 除VoIP外的所有上传流量的管道,限制为2048-640= 1.984 kbps。
  • 除VoIP外的所有下载流量的管道,限制为20480-640=19.840 kbps

创建VoIP上传管道

按照下面的步骤添加管道来保留 VoIP 流量的上传带宽。

导航至Firewall→ Shaper→ Pipes。单击表单右下角的 创建VoIP 上传管道。单击复选框启用。以便启用此管道及其相关的队列和规则。带宽设置640,该管道的总带宽。带宽单位设置为kbit/s。掩码保留为none,因为我们将创建一个具有固定带宽的管道。输入描述,例如640Kbps_VoIP_upload。单击Save。

为 640 Kbps VoIP 上传带宽预留创建管道

创建VoIP下载管道

按照下面的步骤添加管道来保留 VoIP 流量的下载带宽。

导航至Firewall→ Shaper→ Pipes。单击表单右下角 为 VoIP 创建下载管道。单击复选框启用它。带宽设置为640。带宽单位设置为kbit/s。掩码保留为none。输入描述,例如640Kbps_VoIP_download。单击Save。

为 640 Kbps VoIP 下载带宽预留创建管道

创建除VoIP外所有其他上传流量的限制管道

按照下面的步骤添加除VoIP 之外的所有其他流量的上传限制管道。

导航至Firewall→ Shaper→ Pipes。单击表单右下角的 为其他上传流量创建管道。单击复选框启用它。带宽设置为1984。带宽单位设置为kbit/s。掩码保留为none。输入描述,例如1984Kbps_Other_upload。单击Save。

为 1984 Kbps 其他上传流量带宽限制创建管道

创建除VoIP外所有其他下载流量的限制管道

按照下面的步骤添加除 VoIP 之外的所有其他流量的下载限制管道。

导航至Firewall→ Shaper→ Pipes。单击表单右下角的 为其他下载流量创建管道。单击复选框启用它。带宽设置为19840。带宽单位设置为kbit/s。掩码保留为none。输入描述,例如19840Kbps_Other_download。单击Save。

为 19840 Kbps VoIP 下载带宽限制创建管道

Pipes选项卡可以查看创建的所有管道。

为带宽预留创建的管道

单击Apply应用更改。

创建流量整形规则

创建下面 4 条流量整形规则:

  1. VoIP到VoIP/SIP 服务器上传的流量规则。
  2. VoIP从VoIP/SIP 服务器下载的流量规则。
  3. LAN 中所有其他上传流量的规则。
  4. LAN 中所有其他下载流量的规则。

为VoIP上传流量创建规则

按照以下步骤为VoIP 上传流量创建流量整形器规则。

单击Rules选项卡。单击 图标。接口设置为WAN。协议设置为ip。源设置为any。源端口设置为any。目标设置为22.33.44.55。目标端口设置为any。目标设置为640Kbps_VoIP_upload。
输入描述 Shape_VoIP_upload。单击Save。

在 OPNsense 中为 VoIP 上传带宽预留创建流量整形器规则

为VoIP下载流量创建规则

按照以下步骤为VoIP 下载流量创建流量整形器规则。单击“规则”选项卡。单击 图标。接口设置为WAN。协议设置为ip。源设置为22.33.44.55。源端口设置为any。目标设置为any。目标端口设置为any。目标设置为640Kbps_VoIP_download。输入描述 Shape_VoIP_download。单击Save。

在 OPNsense 中为 VoIP 下载带宽预留创建流量整形器规则

为其他所有上传流量创建规则

按照下面的步骤创建流量整形器规则,来限制网络上所有其他用户的上传带宽。

单击“规则”选项卡。单击 图标。接口设置为WAN。协议设置为ip。源设置为10.10.10.0/24。源端口设置为any。目标设置为any。目标端口设置为any。目标设置为1984Kbps_Other_upload。
输入描述 Shape_Other_upload。单击Save。

在 OPNsense 中为所有其他 WAN 上传带宽限制创建流量整形器规则

为其他所有下载流量创建规则

按照下面的步骤创建流量整形器规则,来限制网络上所有其他用户的下载带宽。

单击“规则”选项卡。单击 图标。接口设置为WAN。原型设置为ip。源设置为any。源端口设置为any。目标设置为10.10.10.0/24。目标端口设置为any。目标设置为19840Kbps_Other_download。
输入描述 Shape_Other_download。单击Save。

在 OPNsense 中为所有其他 WAN 下载带宽限制创建流量整形器规则

在Rules选项卡中可以查看带宽限制和预留创建的所有规则。

在 OPNsense 中为带宽预留和限制创建的规则

单击Apply以应用更改。

验证VoIP/SIP流量

导航到Firewall > Shaper > Status。在Status流量整形器的页面中,可以查看类似于图 14 的流量。

在 OPNsense 中验证 VoIP/SIP 流量的带宽预留
如何在客户端之间平均共享 Internet 带宽

某些用户从 FTP 服务器下载大文件耗尽了Internet带宽,但是因为没有足够的预算来增加 带宽,为了解决这个问题,可以在所有用户之间平均分配带宽。假定:

  • 公司互联网有20 Mbps下载和2 Mbps上传带宽。
  • 公司LAN 网络为10.10.10.0/24。

执行下面 3 个步骤,在所有用户之间平均共享带宽:

  1. 创建上传和下载管道
  2. 创建队列
  3. 创建流量整形规则

创建上传和下载管道

创建下面2个管道:

  • 2 Mbps上传流量的管道。
  • 20 Mbps下载流量管道。

创建上传管道

导航至Firewall→ Shaper→ Pipes。单击表单右下角的 流量创建管道。单击复选框启用。带宽设置为2。带宽单位设置为Mbit/s。掩码保留为none。输入描述,例如2Mbps_Internet_upload。
单击Save。

为 2Mbps 其他 Internet 上传流量创建管道

创建下载管道

导航至Firewall→ Shaper→ Pipes。单击表单右下角  创建管道。单击复选框启用。带宽设置为20。带宽单位设置为Mbit/s。掩码保留为none。输入描述,例如20Mbps_Internet_download。
单击Save。

在 OPnsense 中为 20 Mbps 互联网下载创建管道

可以在Pipes选项卡查看创建的所有管道。

在 OPNsense 中为 Internet 带宽分配创建的管道

单击Apply以应用更改。

创建上传和下载队列

创建2个队列:

  • 权重为100的上传队列。
  • 权重为100的下载队列。

创建上传队列

导航至Firewall→ Shaper→ Queue。单击表单右下角的 创建队列。单击复选框启用。选择2Mbps_Internet_upload管道。将权重设置为100。(1 最低,100 最高)。将掩码设置为source,在规则的源字段中的所有 IP 地址之间平均共享指定的带宽。这通常用于上传队列。输入描述,例如Queue_2Mbps_Internet_upload。单击Save。

在 OPNsense 中为 Internet 上传创建流量整形队列

创建下载队列

导航至Firewall→ Shaper→ Queue。单击表单右下角的 创建队列。单击复选框启用。选择20Mbps_Internet_download管道。权重设置为100。(1 最低,100 最高)。掩码设置为destination,在规则的目标字段中的所有 IP 地址之间平均共享指定的带宽。管道将20Mbps允许10客户借出2Mbps每个。这通常用于下载队列。输入描述,例如Queue_20Mbps_Internet_download。单击Save。

在 OPNsense 中为 Internet 下载创建流量整形队列

可以在Queues选项卡查看创建的所有队列。

在 OPNsense 中为 Internet 带宽分配创建的队列

单击Apply以应用更改。

创建流量整形规则

创建 2 条流量整形规则:

  • 上传流量规则。
  • 下载流量规则。

创建上传流量整形规则

单击“规则”选项卡。单击 图标。接口设置为WAN。协议设置为ip。源设置为10.10.10.0/24。源端口设置为any。目标设置为any。目标端口设置为any。将目标设置为Queue_2Mbps_Internet_upload。输入说明 Shape_Internet_upload。单击Save。

在 OPNsense 中创建流量整形规则以在 LAN 用户之间均匀分配 Internet 上传流量带宽

创建下载流量整形规则

单击“规则”选项卡。单击 图标。接口设置为WAN。原型设置为ip。源设置为any。源端口设置为any。目标设置为10.10.10.0/24。目标端口设置为any。将目标设置为Queue_20Mbps_Internet_download。输入描述 Shape_Internet_download。单击Save。

在 OPNsense 中创建流量整形规则以在 LAN 用户之间均匀分配 Internet 下载流量带宽

可以在Rules选项卡,查看所有创建的流量整形规则。

为在 OPNsense 中的 LAN 用户之间平均分配 Internet 下载流量带宽而创建的规则

单击Apply以应用更改。

验证是否平均分配

导航到Firewall > Shaper > Status。如果其中一个客户端向/从 Internet 上传或下载大文件,可以在客户端 IP 地址的 Current Activity中看到丢弃的数据包,类似于下图 。

在 OPNsense 中验证 LAN 用户之间的 Internet 带宽分布均匀

提示:OPNsense流量整形器允许限制 LAN 或访客网络上的互联网带宽使用。那么用户不能消耗比分配更多的 Internet 带宽。

如何使用队列

假设老板抱怨观看远程办公室摄像头经常出现卡顿,经过调查确定是远程办公室和总部办公室之间的 WAN 连接存在大量视频流丢包,并且 HTTP(S) 连接正在消耗大部分带宽容量。但是老板不出钱增加 WAN 带宽。为了解决这个问题,可以决定优先考虑应用程序。假定:

  • WAN 有10 Mbps下载带宽。
  • 公司总部 LAN 网络为10.10.10.0/24。
  • 摄像机使用端口TCP/37777进行视频流的传输。

流量整形器允许通过使用队列来影响管道内的带宽,并基于加权算法为某些应用程序提供比其他应用程序更多的带宽。在本示例中,我们只考虑下载流量,并将视频流应用的权重参数设置为9,HTTP(S) 设置1为S) 流量,那么 HTTP(S) 限制为 1 Mbps带宽,视频流限制为 9 Mbps带宽。

应用权量最小带宽
视频流(端口 37777)99 Mbps
HTTP (80) / HTTPS (443)11 Mbps

按照以下步骤确定应用程序的带宽使用优先级:

  • 创建下载管道
  • 创建队列
  • 创建流量整形规则

创建下载管道

导航至Firewall→ Shaper→ Pipes。单击表单右下角 创建下载管道。单击复选框启用。带宽设置为10。带宽单位设置为Mbit/s。掩码保留为none。输入描述,例如10Mbps_download。
单击Save。

在 OPnsense 中为 10 Mbps 下载流量创建管道

创建视频流和 HTTP(S)队列

创建2 个队列:

  • 权重为9的视频流流量队列。
  • 权重为1的 HTTP(S) 流量队列。

设置视频流队列

导航至Firewall→ Shaper→ Queue。单击单右下角的 为视频流创建队列。单击复选框启用。选择10Mbps_download管道。将权重设置为9。将掩码设置为none。输入描述,例如Queue_Video_Streaming。单击Save。

在 OPNsense 中为视频流下载创建流量整形队列

创建HTTP(S)流量队列

导航至Firewall→ Shaper→ Queue。单击表单右下角的 为 HTTP(S) 流量创建队列。单击复选框启用。选择10Mbps_download管道。权重设置为1。掩码设置为none。输入描述,例如Queue_HTTP。单击Save。

在 OPNsense 中为 HTTP(S) 流量创建流量整形队列

可以在Queues选项卡查看创建的所有队列。

在 OPNsense 中为应用程序优先级创建的队列

单击Apply应用更改。

创建流量整形规则

创建下面 2 条流量整形规则:

  • 视频流下载流量规则。
  • HTTP/WEB 下载流量规则。
  • HTTP(S)/WEB 下载流量规则

创建视频流下载规则

单击“规则”选项卡。单击 图标。接口设置为WAN。协议设置为tcp。源设置为any。源端口设置为37777。目标设置为any。目标端口设置为any。目标设置为Queue_Video_Streaming。输入描述 Shape_Video_Streaming。单击Save。

为 OPNsense 中的视频流流量优先级创建流量整形器规则

创建HTTP流量规则

单击“规则”选项卡。单击 图标。接口设置为WAN。协议设置为ip。源设置为any。源端口设置为HTTP。目标设置为any。目标端口设置为any。目标设置为Queue_HTTP。输入描述Shape_HTTP。
单击Save。

在 OPNsense 中创建流量整形器规则以对 HTTP 流量进行优先级排序

创建HTTPS流量规则

单击“规则”选项卡。单击 图标。接口设置为WAN。协议设置为ip。源设置为any。源端口设置为HTTPS。目标设置为any。目标端口设置为any。目标设置为Queue_HTTPS。设置描述 Shape_HTTPS。单击Save。

为 OPNsense 中的 HTTPS 流量优先级创建流量整形器规则

可以在Rules选项卡查看创建的所有规则。

在 OPNsense 中为应用程序优先级创建的规则

单击Apply激活设置。

如何在OPNsense中基于网络接口塑造流量

OPNsense 流量整形器允许根据流量在接口之间移动的方向对流量进行不同的整形。整形规则可以基于两个接口创建。

假设 OPNsense 中有两个本地网络接口,第一个 LAN 用于员工,第二个 GUESTNET 用于为访客提供免费的互联网连接。需要限制 GUESTNET 的互联网使用,以防止客人耗尽互联网连接。假定:

  • Internet 有10 Mbps下载带宽。
  • LAN 网络可以不受限制。
  • 访客网络将被限制为总共 2 Mbps 下载和 1 Mbps 上传带宽。

可以按照以下步骤确定应用程序的带宽使用优先级:

  • 创建上传和下载管道
  • 创建流量整形规则

创建上传和下载管道

创建下面给出的 2 个管道:

  • GUESTNET 具有1 Mbps带宽上传流量管道。
  • GUESTNET 具有2 Mbps带宽下载流量管道。

为GUESTNET创建上传管道

导航至Firewall→ Shaper→ Pipes。单击表单右下角的 创建管道。单击复选框启用。带宽设置为1。带宽单位设置为Mbit/s。掩码保留为none。输入描述,例如1Mbps_GUESTNET_upload。
单击Save。

在 OPnsense 中为 1Mbps GUESTNET 上传流量创建管道

为GUESTNET创建下载管道

导航至Firewall→ Shaper→ Pipes。单击表单右下角的 创建管道。单击复选框启用。带宽设置为2。带宽单位设置为Mbit/s。掩码保留为none。输入描述,例如2Mbps_GUESTNET_download。
单击Save。

在 OPnsense 中为 2 Mbps 互联网下载流量创建管道

创建流量整形规则

创建 2 条流量整形规则:

  • GUESTNET上传流量规则。
  • GUESTNET 下载流量规则。

为GUESTNET创建上传规则

单击“规则”选项卡。单击 图标。单击窗口左上角的高级模式切换按钮。接口设置为GUESTNET。接口2 设置为WAN。协议设置为ip。源设置为any。源端口设置为any。目标设置为any。
目标端口设置为any。方向设置为out。目标设置为1Mbps_GUESTNET_upload。设置说明 Shape_GUESTNET_upload。单击Save。

在 GUESTNET-1 中创建用于限制 Internet 上传流量带宽的流量整形器规则

在 GUESTNET-2 中创建用于限制 Internet 上传流量带宽的流量整形器规则

创建下载流量规则

单击“规则”选项卡。单击 图标。单击窗口左上角的高级模式切换按钮。接口设置为WAN。接口 2设置为GUESTNET。协议设置为ip。将源设置为any。将源端口设置为any。目标设置为any。目标端口设置为any。方向设置为in。目标设置为2Mbps_GUESTNET_download。设置说明 Shape_GUESTNET_download。单击Save。

在 GUESTNET-1 中创建用于限制 Internet 下载流量带宽的流量整形器规则

在 GUESTNET-2 中创建用于限制 Internet 下载流量带宽的流量整形器规则

可以在Rules选项卡查看流量整形规则。

在 OPNsense 中为限制 GUESTNET 用户的 Internet 使用而创建的规则

单击Apply应用更改。

验证测试

可以导航到Firewall > Shaper > Status。如果其中一个客户端耗尽了设定的Internet 带宽限制,可以在客户端 IP 地址的Current Activity中看到丢弃的数据包,如图 所示。

在 OPNsense 中验证 GUESTNET 用户的互联网带宽限制

  • 无标签

0 评论

你还没有登录。你所做的任何更改会将作者标记为匿名用户。 如果你已经拥有帐户,请登录