流量整形,也称为packet shaping,是一种带宽管理策略,它延迟特定网络数据包的流动,以确保更高优先级应用程序的网络性能。它通常用于确保与业务相关的网络流量获得高水平的服务。通过延迟某些数据包,流量整形可以增强或确保性能、减少延迟或增加关键应用程序的可用带宽。
由于网络资源有限,流量整形是网络防火墙的必备功能,可确保时间敏感数据的交付和关键应用程序的性能。它是防御分布式拒绝服务 ( DDoS ) 攻击和确保服务质量的有力方法。它可以保护网络免受网络拥塞、限制滥用客户端并防止网络攻击。
适用于需要限制某些用户的 Internet 带宽,同时为对延迟特别敏感的 IP 语音 (VoIP) 等业务关键型应用程序提供最大带宽的业务场景。
OPNsense 具有极其灵活和可靠的流量整形功能。整形规则与防火墙规则和其他配置分开处理。针对以下情况配置流量整形器:
OPNsense 流量整形是一种非常有用的解决方案,用于确定流量的优先级和限制带宽。此外,它还可以与其他功能相结合,例如强制门户。OPNsense 流量整形器使用 pipes、queues 和相应的配置 rules:
可以根据以下标准设置带宽限制:
OPNsense 流量整形功能允许在所有用户之间平均分配可用带宽,确保始终保持最佳性能。
OPNsense 流量整形器采用 dummynet 和 ipfw 提供可靠的解决方案,CPU 占用率低。Dummynet ipfw 首先使用可以在规则中使用的任意匹配模式对数据包进行分类并将它们划分为流。根据本地策略,流可以包含特定协议类型的数据包、整个子网的数据包、进/出特定主机的数据包、单个 TCP 连接的数据包等。
然后将来自同一流的数据包路由到以下应用流量规则的对象之一:
提示:Weights不是优先事项;即使具有较高权重的流被永久积压,具有较低权重的流仍然可以保证获得其带宽份额。 Pipes可用于设置流可以使用多少带宽的强制限制Queues,而可用于确定不同流如何共享可用带宽。 rules可以在流量整形器的页面中定义整形规则。 |
查看流量整形器是否正常工作,可以导航至Firewall > Shaper > Status。在Status流量整形器的页面中,可以查看以下详细信息:
流量整形状态页面还提供以下选项:
如果总部办公室和托管 VoIP/SIP 服务器的远程数据中心之间存在 SIP 数据包丢失和延迟,可以为 VoIP 流量预留一个专用带宽。假设:
通过以下两个主要步骤,可以轻松地为 VoIP 流量预留专用带宽:
这些步骤将在以下部分中进行简要说明。
创建以下4 个管道:
按照下面的步骤添加管道来保留 VoIP 流量的上传带宽。
导航至Firewall→ Shaper→ Pipes。单击表单右下角的 创建VoIP 上传管道。单击复选框启用。以便启用此管道及其相关的队列和规则。带宽设置640,该管道的总带宽。带宽单位设置为kbit/s。掩码保留为none,因为我们将创建一个具有固定带宽的管道。输入描述,例如640Kbps_VoIP_upload。单击Save。
按照下面的步骤添加管道来保留 VoIP 流量的下载带宽。
导航至Firewall→ Shaper→ Pipes。单击表单右下角 为 VoIP 创建下载管道。单击复选框启用它。带宽设置为640。带宽单位设置为kbit/s。掩码保留为none。输入描述,例如640Kbps_VoIP_download。单击Save。
按照下面的步骤添加除VoIP 之外的所有其他流量的上传限制管道。
导航至Firewall→ Shaper→ Pipes。单击表单右下角的 为其他上传流量创建管道。单击复选框启用它。带宽设置为1984。带宽单位设置为kbit/s。掩码保留为none。输入描述,例如1984Kbps_Other_upload。单击Save。
按照下面的步骤添加除 VoIP 之外的所有其他流量的下载限制管道。
导航至Firewall→ Shaper→ Pipes。单击表单右下角的 为其他下载流量创建管道。单击复选框启用它。带宽设置为19840。带宽单位设置为kbit/s。掩码保留为none。输入描述,例如19840Kbps_Other_download。单击Save。
Pipes选项卡可以查看创建的所有管道。
单击Apply应用更改。
创建下面 4 条流量整形规则:
按照以下步骤为VoIP 上传流量创建流量整形器规则。
单击Rules选项卡。单击 图标。接口设置为WAN。协议设置为ip。源设置为any。源端口设置为any。目标设置为22.33.44.55。目标端口设置为any。目标设置为640Kbps_VoIP_upload。
输入描述 Shape_VoIP_upload。单击Save。
按照以下步骤为VoIP 下载流量创建流量整形器规则。单击“规则”选项卡。单击 图标。接口设置为WAN。协议设置为ip。源设置为22.33.44.55。源端口设置为any。目标设置为any。目标端口设置为any。目标设置为640Kbps_VoIP_download。输入描述 Shape_VoIP_download。单击Save。
按照下面的步骤创建流量整形器规则,来限制网络上所有其他用户的上传带宽。
单击“规则”选项卡。单击 图标。接口设置为WAN。协议设置为ip。源设置为10.10.10.0/24。源端口设置为any。目标设置为any。目标端口设置为any。目标设置为1984Kbps_Other_upload。
输入描述 Shape_Other_upload。单击Save。
按照下面的步骤创建流量整形器规则,来限制网络上所有其他用户的下载带宽。
单击“规则”选项卡。单击 图标。接口设置为WAN。原型设置为ip。源设置为any。源端口设置为any。目标设置为10.10.10.0/24。目标端口设置为any。目标设置为19840Kbps_Other_download。
输入描述 Shape_Other_download。单击Save。
在Rules选项卡中可以查看带宽限制和预留创建的所有规则。
单击Apply以应用更改。
导航到Firewall > Shaper > Status。在Status流量整形器的页面中,可以查看类似于图 14 的流量。
某些用户从 FTP 服务器下载大文件耗尽了Internet带宽,但是因为没有足够的预算来增加 带宽,为了解决这个问题,可以在所有用户之间平均分配带宽。假定:
执行下面 3 个步骤,在所有用户之间平均共享带宽:
创建下面2个管道:
导航至Firewall→ Shaper→ Pipes。单击表单右下角的 流量创建管道。单击复选框启用。带宽设置为2。带宽单位设置为Mbit/s。掩码保留为none。输入描述,例如2Mbps_Internet_upload。
单击Save。
导航至Firewall→ Shaper→ Pipes。单击表单右下角 创建管道。单击复选框启用。带宽设置为20。带宽单位设置为Mbit/s。掩码保留为none。输入描述,例如20Mbps_Internet_download。
单击Save。
可以在Pipes选项卡查看创建的所有管道。
单击Apply以应用更改。
创建2个队列:
导航至Firewall→ Shaper→ Queue。单击表单右下角的 创建队列。单击复选框启用。选择2Mbps_Internet_upload管道。将权重设置为100。(1 最低,100 最高)。将掩码设置为source,在规则的源字段中的所有 IP 地址之间平均共享指定的带宽。这通常用于上传队列。输入描述,例如Queue_2Mbps_Internet_upload。单击Save。
导航至Firewall→ Shaper→ Queue。单击表单右下角的 创建队列。单击复选框启用。选择20Mbps_Internet_download管道。权重设置为100。(1 最低,100 最高)。掩码设置为destination,在规则的目标字段中的所有 IP 地址之间平均共享指定的带宽。管道将20Mbps允许10客户借出2Mbps每个。这通常用于下载队列。输入描述,例如Queue_20Mbps_Internet_download。单击Save。
可以在Queues选项卡查看创建的所有队列。
单击Apply以应用更改。
创建 2 条流量整形规则:
单击“规则”选项卡。单击 图标。接口设置为WAN。协议设置为ip。源设置为10.10.10.0/24。源端口设置为any。目标设置为any。目标端口设置为any。将目标设置为Queue_2Mbps_Internet_upload。输入说明 Shape_Internet_upload。单击Save。
单击“规则”选项卡。单击 图标。接口设置为WAN。原型设置为ip。源设置为any。源端口设置为any。目标设置为10.10.10.0/24。目标端口设置为any。将目标设置为Queue_20Mbps_Internet_download。输入描述 Shape_Internet_download。单击Save。
可以在Rules选项卡,查看所有创建的流量整形规则。
单击Apply以应用更改。
导航到Firewall > Shaper > Status。如果其中一个客户端向/从 Internet 上传或下载大文件,可以在客户端 IP 地址的 Current Activity中看到丢弃的数据包,类似于下图 。
提示:OPNsense流量整形器允许限制 LAN 或访客网络上的互联网带宽使用。那么用户不能消耗比分配更多的 Internet 带宽。 |
假设老板抱怨观看远程办公室摄像头经常出现卡顿,经过调查确定是远程办公室和总部办公室之间的 WAN 连接存在大量视频流丢包,并且 HTTP(S) 连接正在消耗大部分带宽容量。但是老板不出钱增加 WAN 带宽。为了解决这个问题,可以决定优先考虑应用程序。假定:
流量整形器允许通过使用队列来影响管道内的带宽,并基于加权算法为某些应用程序提供比其他应用程序更多的带宽。在本示例中,我们只考虑下载流量,并将视频流应用的权重参数设置为9,HTTP(S) 设置1为S) 流量,那么 HTTP(S) 限制为 1 Mbps带宽,视频流限制为 9 Mbps带宽。
应用 | 权量 | 最小带宽 |
---|---|---|
视频流(端口 37777) | 9 | 9 Mbps |
HTTP (80) / HTTPS (443) | 1 | 1 Mbps |
按照以下步骤确定应用程序的带宽使用优先级:
导航至Firewall→ Shaper→ Pipes。单击表单右下角 创建下载管道。单击复选框启用。带宽设置为10。带宽单位设置为Mbit/s。掩码保留为none。输入描述,例如10Mbps_download。
单击Save。
创建2 个队列:
导航至Firewall→ Shaper→ Queue。单击单右下角的 为视频流创建队列。单击复选框启用。选择10Mbps_download管道。将权重设置为9。将掩码设置为none。输入描述,例如Queue_Video_Streaming。单击Save。
导航至Firewall→ Shaper→ Queue。单击表单右下角的 为 HTTP(S) 流量创建队列。单击复选框启用。选择10Mbps_download管道。权重设置为1。掩码设置为none。输入描述,例如Queue_HTTP。单击Save。
可以在Queues选项卡查看创建的所有队列。
单击Apply应用更改。
创建下面 2 条流量整形规则:
单击“规则”选项卡。单击 图标。接口设置为WAN。协议设置为tcp。源设置为any。源端口设置为37777。目标设置为any。目标端口设置为any。目标设置为Queue_Video_Streaming。输入描述 Shape_Video_Streaming。单击Save。
单击“规则”选项卡。单击 图标。接口设置为WAN。协议设置为ip。源设置为any。源端口设置为HTTP。目标设置为any。目标端口设置为any。目标设置为Queue_HTTP。输入描述Shape_HTTP。
单击Save。
单击“规则”选项卡。单击 图标。接口设置为WAN。协议设置为ip。源设置为any。源端口设置为HTTPS。目标设置为any。目标端口设置为any。目标设置为Queue_HTTPS。设置描述 Shape_HTTPS。单击Save。
可以在Rules选项卡查看创建的所有规则。
单击Apply激活设置。
OPNsense 流量整形器允许根据流量在接口之间移动的方向对流量进行不同的整形。整形规则可以基于两个接口创建。
假设 OPNsense 中有两个本地网络接口,第一个 LAN 用于员工,第二个 GUESTNET 用于为访客提供免费的互联网连接。需要限制 GUESTNET 的互联网使用,以防止客人耗尽互联网连接。假定:
可以按照以下步骤确定应用程序的带宽使用优先级:
创建下面给出的 2 个管道:
导航至Firewall→ Shaper→ Pipes。单击表单右下角的 创建管道。单击复选框启用。带宽设置为1。带宽单位设置为Mbit/s。掩码保留为none。输入描述,例如1Mbps_GUESTNET_upload。
单击Save。
导航至Firewall→ Shaper→ Pipes。单击表单右下角的 创建管道。单击复选框启用。带宽设置为2。带宽单位设置为Mbit/s。掩码保留为none。输入描述,例如2Mbps_GUESTNET_download。
单击Save。
创建 2 条流量整形规则:
单击“规则”选项卡。单击 图标。单击窗口左上角的高级模式切换按钮。接口设置为GUESTNET。接口2 设置为WAN。协议设置为ip。源设置为any。源端口设置为any。目标设置为any。
目标端口设置为any。方向设置为out。目标设置为1Mbps_GUESTNET_upload。设置说明 Shape_GUESTNET_upload。单击Save。
单击“规则”选项卡。单击 图标。单击窗口左上角的高级模式切换按钮。接口设置为WAN。接口 2设置为GUESTNET。协议设置为ip。将源设置为any。将源端口设置为any。目标设置为any。目标端口设置为any。方向设置为in。目标设置为2Mbps_GUESTNET_download。设置说明 Shape_GUESTNET_download。单击Save。
可以在Rules选项卡查看流量整形规则。
单击Apply应用更改。
可以导航到Firewall > Shaper > Status。如果其中一个客户端耗尽了设定的Internet 带宽限制,可以在客户端 IP 地址的Current Activity中看到丢弃的数据包,如图 所示。