OPNsense用户手册-流量管理

本文摘要流量整形(也称为“分组整形”)是计算机网络流量的控制,以通过延迟满足特定标准的分组来优化或保证性能,降低延迟和/或增加可用带宽。更具体地,流量整形是对一组分组的任意动作,通过对这些分组施加额外的延迟,使得它们符合某些预定的约束。概述OPNsense的流量整形非常灵活,围绕管道,队列和相应的规则进行组织。管道定义允许的带宽,队列可用于在管道内设置权重,最后使用规则将整形应用于某个数据包流。整形规则独...

流量整形(也称为“分组整形”)是计算机网络流量的控制,以通过延迟满足特定标准的分组来优化或保证性能,降低延迟和/或增加可用带宽。更具体地,流量整形是对一组分组的任意动作,通过对这些分组施加额外的延迟,使得它们符合某些预定的约束。

流量整形示意图

概述

OPNsense的流量整形非常灵活,围绕管道,队列和相应的规则进行组织。管道定义允许的带宽,队列可用于在管道内设置权重,最后使用规则将整形应用于某个数据包流。整形规则独立于防火墙规则和其他设置进行处理。

OPNsense流量整形是限制带宽或确定流量优先级的可靠解决方案,可与其他功能(如强制网络门户或高可用性(CARP))结合使用。

可以基于接口、ip源和目的地、流量方向(输入/输出)和端口号(应用)来定义带宽限制。

可用带宽可以在所有用户上均匀分配,这样可以始终获得最佳性能。

还可以通过添加队列和定义权重来确定流量的优先级。严格来说,流量并不是真正的优先级,但是当总的可用带宽有限时,具有较高权重的应用可能比其他应用消耗更多带宽。

流量整形是使用IPFW和dummynet来提供具有低CPU容量的现代可靠解决方案。

Dummynet & ipfw

Dummynet首先使用防火墙对数据包进行分类,然后使用可在ipfw规则中使用的任意匹配模式将数据分成流。根据本地策略,流可以包含单个TCP连接的数据包,或从(到)给定主机,整个子网或协议类型等的数据包。

然后将属于同一流的数据包传递给两个不同对象中的任意一个,从而实现流量调节:

管道
: 管道模拟具有给定带宽,传播延迟,队列大小和丢包率的链路。当数据包从分类器中出来时,数据包在管道前面排队,然后根据管道的参数传输到管道。

队列
: 队列是用于实现WF2Q (Worstcase公平加权公平排队)策略的抽象,该策略是WFQ策略的有效变体。队列将权重和引用管道关联到每个流,然后链接到同一管道的所有积压(排队的流量)流共享管道的带宽与其权重成比例。请注意,权重不是优先级; 即使权重较高的流量被永久积压,具有较低权重的流量仍可保证获得其带宽的一部分。

实际上,管道可用于设置流可以使用的带宽的硬限制,而队列可用于确定不同的流如何共享可用带宽。

可以在流量整形的规则部分中定义整形规则。

设置流量整形

如何设置流量整形,我们将分别研究以下不同的场景:

  1. 为实时流量保留专用带宽,例如(托管)IP语音(VOIP)服务器。
  2. 在用户之间均匀分享互联网带宽
  3. 限制用户可以使用的最大Internet带宽
  4. 使用队列确定应用程序的优先级(加权)
  5. 用于GuestNet的多接口整形

保留专用带宽

在这种情况下,我们将创建一个专用于进出实时应用程序的流量的管道。下面,我们假设SIP中继或托管的IP语音(VOIP)服务器。

对于这个例子,我们假设需要4个64Kbps的未压缩语音信道,总需求带宽为256Kbps。此示例中的Internet连接有10Mbps下载和1Mbps上载速度。

网络拓扑图-保留专用带宽

导航到 Firewall->Shaper->Settings

第1步 – 创建上传和下载管道

在“管道”选项卡上,单击右下角的 按钮。将弹出一个空的“编辑管道”页面

创建上传管道(到我们的VOIP服务器)

| 启用 | 选中 | 设置以便启用管道 |
| 带宽 | 256 | 所需带宽的数值 |
| 单位 | Kbit/s | 与数值一起使用的度量标准 |
| 掩码 | (留空) | 用于自动排队 |
| 描述 | PipeUp-256Kbps | 输入描述性内容 |

创建上传管道(其他流量= 1024Kbps – 256Kbps = 768Kbps)

| 启用 | 选中 | 设置以便启用管道 |
| 带宽 | 768 | 所需带宽的数值 |
| 单位 | Kbit/s | 与数值一起使用的度量标准 |
| 掩码 | (留空) | 用于自动排队 |
| 描述 | PipeUp-768Kbps | 输入描述性内容 |

创建下载管道(来自我们的VOIP服务器)

| 启用 | 选中 | 选中以启用管道 |
| 带宽 | 256 | 所需带宽的数值 |
| 单位 | Kbit/s | 与数值一起使用的度量标准 |
| 掩码 | (留空) | 用于自动排队 |
| 描述 | PipeDown-256Kbps | 输入描述性内容 |

创建下载管道(其他流量= 10240Kbps – 256Kbps = 9984Kbps)

| 启用 | 选中 | 选中以启用管道 |
| 带宽 | 9984 | 所需带宽的数值 |
| 单位 | Kbit/s | 与数值一起使用的度量标准 |
| 掩码 | (留空) | 用于自动排队 |
| 描述 | PipeDown-9984Kbps | 输入描述性内容 |

第2步 – 创建规则

在“规则”选项卡上,单击右下角的 按钮。将弹出一个空的编辑规则页面。

为指向VOIP服务器(上传)的流量创建规则。

| 序列 | 11 | 自动生成的数字,仅在需要时覆盖 |
| 接口 | WAN | 选择连接到互联网的接口 |
| 协议 | IP | 在我们的示例中选择协议ip |
| | any | 源ip,选any |
| 源端口 | any | 源端口,选any |
| 目标 | 172.10.2.1 | 我们的VOIP服务器的IP地址 |
| 目标端口 | any | 如果是静态的,请使用任意目标端口 |
| 管道或队列 | PipeUP-256Kbps | 选择上传256Kbps管道 |
| 描述 | ShapeVOIPUpload | 输入描述性名称 |

为来自VOIP服务器的流量创建规则(下载)。

| 序列 | 21 | 自动生成的数字,仅在需要时覆盖 |
| 接口 | WAN | 选择连接到互联网的接口 |
| 协议 | IP | 在我们的示例中选择协议ip |
| | 172.10.2.1 | 我们的VOIP服务器的IP地址 |
| 源端口 | any | 源端口,选any |
| 目标 | any | 选any |
| 目标端口 | any | 选any |
| 管道或队列 | PipeDown-256Kbps | 选择下载256Kbps管道 |
| 描述 | ShapeVOIPDown | 输入描述性名称 |

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

| 序列 | 31 | 自动生成的数字,仅在需要时覆盖 |
| 接口 | WAN | 选择连接到互联网的接口 |
| 协议 | IP | 在我们的示例中选择协议ip |
| | 192.168.1.0/24 | 源IP,我们的LAN网络 |
| 源端口 | any | 源端口,选any |
| 目标 | any | 目标地址,选any |
| 目标端口 | any | 如果是静态的,请使用any目标端口 |
| 管道或队列 | PipeUp-768kbps | 选择上传768Kbps管道 |
| 描述 | ShapeUpload | 输入描述性名称 |

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

| 序列 | 41 | 自动生成的数字,仅在需要时覆盖 |
| 接口 | WAN | 选择连接到互联网的接口 |
| 协议 | IP | 在我们的示例中选择协议ip |
| | any | 源地址,选any |
| 源端口 | any | 源端口,选any |
| 目标 | 192.168.1.0/24 | 我们的lan网络 |
| 目标端口 | any | 目标端口,选any |
| 管道或队列 | PipeDown-9984Kbps | 选择下载9984Kbps管道 |
| 描述 | ShapeDown | 输入描述性名称 |

注意顺序!确保将正确的流量传递到正确的管道非常重要。

现在按 应用 以激活流量整形规则。完成后如下图所示:

流量整形规则列表1

均匀分享带宽

我们假设我们希望在所有用户之间均匀分享10Mbps下载和1Mbps上载的互联网连接。

网络拓扑图-均匀分享带宽

导航到 Firewall->Shaper->Settings

第1步 – 创建上传和下载管道

在“管道”选项卡上,单击右下角的 按钮。将弹出一个空的“编辑管道”页面

创建上传管道

| 启用 | 选中 | 选中以启用管道 |
| 带宽 | 1 | 所需带宽的数值 |
| 单位 | Mbit/s | 与数值一起使用的度量标准 |
| 掩码 | 留空 | 选择目标以共享带宽 |
| 描述 | PipeUp-1Mbps | 输入描述性内容 |

创建下载管道

| 启用 | 选中 | 选中以启用管道 |
| 带宽 | 10 | 所需带宽的数值 |
| 单位 | Mbit/s | 与数值一起使用的度量标准 |
| 掩码 | 留空 | 选择目标以共享带宽 |
| 描述 | PipeDown-10Mbps | 输入描述性内容 |

第2步 – 创建队列

在“队列”选项卡上,单击右下角的 按钮。将弹出一个空的编辑队列页面

创建上传队列

| 启用 | 选中 | 选中以启用管道 |
| 管道 | PipeUp-1Mbps | 选择我们的管道 |
| 权重 | 100 | 与数值一起使用的权重 |
| 掩码 | 源 | 每个来源都创造一个匹配 |
| 描述 | QueueUp-1Mbps | 输入描述性内容 |

创建下载队列

| 启用 | 选中 | 选中以启用管道 |
| 管道 | PipeDown-10Mbps | 选择我们的管道 |
| 权重 | 100 | 与数值一起使用的权重 |
| 掩码 | 目标 | 每个来源都创造一个匹配 |
| 描述 | QueueDown-10Mbps | 输入描述性内容 |

第3步 – 创建规则

在“规则”选项卡上,单击右下角的 按钮。将弹出一个空的编辑规则页面

为指向互联网的流量创建规则(上传)。

| 序列 | 11 | 自动生成的数字,仅在需要时覆盖 |
| 接口 | wan | 选择连接到互联网的接口 |
| 协议 | IP | 在我们的示例中选择协议ip |
| | 192.168.1.0/24 | 选择局域网网络 |
| 源端口 | any | 源端口,选any |
| 目标 | any | 选any |
| 目标端口 | any | 如果是静态的,请使用any目标端口 |
| 管道或队列 | QueueUp-1Mbps | 选择Upload 1Mbps Queue |
| 描述 | ShapeUpload | 输入描述性名称 |

为来自互联网的流量创建规则(下载)。

| 序列 | 21 | 自动生成的数字,仅在需要时覆盖 |
| 接口 | wan | 选择连接到互联网的接口 |
| 协议 | IP | 在我们的示例中选择协议ip |
| | any | 源地址,选any |
| 源端口 | any | 整形的源端口,选any |
| 目标 | 192.168.1.0/24 | 对目标ip进行整形,选择局域网 |
| 目标端口 | any | 要成型的目标端口,请保留任意内容 |
| 管道或队列 | QueueDown-10Mbps | 选择下载10Mbps队列 |
| 描述 | ShapeDownload | 输入描述性名称 |

现在按 应用 以激活流量整形规则。完成后如下图所示:

流量整形规则列表2

限制每个用户的带宽

我们将在互连用户之间划分互联网下载流量,将每个用户的带宽限制在1Mbps的速率。

网络拓扑图-限制每个用户的带宽

导航到 Firewall->Shaper->Settings

第1步 – 创建上传和下载管道

在“管道”选项卡上,单击右下角的 按钮。将弹出一个空的“编辑管道”页面

创建下载管道

| 启用 | 选中 | 选中以启用管道 |
| 带宽 | 1 | 所需带宽的数值 |
| 单位 | Mbit/s | 与数值一起使用的度量标准 |
| 掩码 | 目标 | 选择目标以限制每个客户端的带宽 |
| 描述 | PipeDown-1Mbps | 输入描述性内容 |

第2步 – 创建规则

在“规则”选项卡上,单击右下角的 按钮。将弹出一个空的编辑规则页面。

为来自互联网的流量创建规则(下载)。

| 序列 | 21 | 自动生成的数字,仅在需要时覆盖 |
| 接口 | wan | 选择连接到互联网的接口 |
| 协议 | IP | 在我们的示例中选择协议ip |
| | any | 源地址,选any |
| 源端口 | any | 选any |
| 目标 | 192.168.1.0/24 | 选择局域网 |
| 目标端口 | any | 选any |
| 管道或队列 | PipeDown-1Mbps | 选择下载1Mbps管道 |
| 描述 | ShapeDownload | 输入描述性名称 |

注意:如果要限制单个IP的流量,则只需在目标字段中输入IP地址,而不是整个LAN网络范围。

现在按 应用 来激活流量整形规则。完成后如下图所示:

流量整形规则列表3

优先使用队列

通过利用队列,我们​​可以影响管道内的带宽,并且基于加权算法为某些应用提供比其他应用更多的带宽。

假设我们有一个10Mbps的管道和2个应用程序,例如smtp(电子邮件)和http(s)。http(s)流量的权重为1,smtp流量的权重为9,当我们管道的所有容量都在使用时,电子邮件流量的带宽将比我们的http流量多9倍,从而达到1Mbps用于http(s),9Mbps用于smtp。

在下面这个示例中,我们仅检查下载流量,但可以对上传流量执行完全相同的操作。

| 应用 | 权重 | 最小带宽 |
| SMTP(端口25) | 9 | 9Mbps |
| HTTP(80) / HTTPS(443) | 1 | 1Mbps |

导航到 Firewall->Shaper->Settings

第1步 – 创建下载管道

在“管道”选项卡上,单击右下角的 按钮。将弹出一个空的“编辑管道”页面。

创建下载管道(10Mbps)

| 启用 | 选中 | 选中以启用管道 |
| 带宽 | 10 | 所需带宽的数值 |
| 单位 | Mbit/s | 与数值一起使用的度量标准 |
| 掩码 | (空) | 留空 |
| 描述 | PipeDown-10Mbps | 输入描述性内容 |

第2步 – 创建队列

在“队列”选项卡上,单击右下角的 按钮。将弹出一个空的编辑队列页面。

为SMTP创建队列

| 启用 | 选中 | 选中以启用管道 |
| 管道 | PipeDown-10Mbps | 选择我们的管道 |
| 权重 | 9 | 与数值一起使用的权重 |
| 掩码 | (空) | 留空 |
| 描述 | Queue-SMTP | 输入描述性内容 |

为HTTP创建队列

| 启用 | 选中 | 选中以启用管道 |
| 管道 | PipeDown-10Mbps | 选择我们的管道 |
| 权重 | 1 | 与数值一起使用的权重 |
| 掩码 | (空) | 留空 |
| 描述 | Queue-HTTP | 输入描述性内容 |

第3步 – 创建规则

在“规则”选项卡上,单击右下角的 按钮。将弹出一个空的编辑规则页面。

为smtp下载流量创建规则(电子邮件)

| 序列 | 11 | 自动生成的数字,仅在需要时覆盖 |
| 接口 | wan | 选择连接到互联网的接口 |
| 协议 | IP | 在我们的示例中选择协议ip |
| | any | 源地址,选any |
| 源端口 | SMTP | 源端口,smtp或25 |
| 目标 | any | 选any |
| 目标端口 | any | 目标端口,请保留为任意 |
| 管道或队列 | Queue-SMTP | 选择SMTP队列 |
| 描述 | ShapeSMTPDownload | 输入描述性名称 |

为http下载流量创建规则

| 序列 | 21 | 自动生成的数字,仅在需要时覆盖 |
| 接口 | wan | 选择连接到互联网的接口 |
| 协议 | IP | 在我们的示例中选择协议ip |
| | any | 源地址,选any |
| 源端口 | HTTP | http或80 |
| 目标 | any | 目的地ip,选any |
| 目标端口 | any | 目标端口,请保留为任意 |
| 管道或队列 | Queue-HTTP | 选择HTTP队列 |
| 描述 | ShapeHTTPDownload | 输入描述性名称 |

为https流量添加额外规则很简单,因为我们可以使用相同的http队列:

| 序列 | 31 | 自动生成的数字,仅在需要时覆盖 |
| 接口 | wan | 选择连接到互联网的接口 |
| 协议 | IP | 在我们的示例中选择协议ip |
| | any | 源地址,选any |
| 源端口 | HTTPS | 源端口,https或443 |
| 目标 | any | 目的地ip,选any |
| 目标端口 | any | 目标端口,请保留为任意 |
| 管道或队列 | Queue-HTTP | 选择HTTP队列 |
| 描述 | ShapeHTTPSDownload | 输入描述性名称 |

这样,http和https流量将被视为相同(总计1Mbps)。

现在点击 应用 以激活流量整形规则。完成后如下图所示:

流量整形规则列表4

访客网络的多接口整形

OPNsense流量整形器的一个选项是它能够根据两个接口添加整形规则。此选项允许您根据流量在接口之间移动的方向来不同地调整流量。

在下面这个示例中,我们将使用此功能在主LAN网络和访客网络之间共享对称的10Mbps Internet连接。

LAN网络不受限制,来自我们的访客网络上的用户的流量将限制为总共2Mbps的下载和1Mbps的上传。

网络拓扑图-访客网络的多接口整形

第1步 – 创建上传和下载管道

在“管道”选项卡上,单击右下角的 按钮。将弹出一个空的“编辑管道”页面。

创建上传管道(GuestNet – em2)

| 启用 | 选中 | 选中以启用管道 |
| 带宽 | 1 | 所需带宽的数值 |
| 单位 | Mbit/s | 与数值一起使用的度量标准 |
| 掩码 | (空) | 留空 |
| 描述 | PipeUp-1Mbps | 输入描述性内容 |

创建下载管道(GuestNet – em2)

| 启用 | 选中 | 选中以启用管道 |
| 带宽 | 2 | 所需带宽的数值 |
| 单位 | Mbit/s | 与数值一起使用的度量标准 |
| 掩码 | (空) | 留空 |
| 描述 | PipeDown-2Mbps | 输入描述性内容 |

第2步 – 创建规则

在“规则”选项卡上,单击右下角的 按钮。将弹出一个空的编辑规则页面。

重要 – 继续之前! 首先将模式更改为高级,在对话框左上角的进行切换。单击一下即可将其从红色(禁用)切换为绿色(启用)。

为下载流量创建规则

| 序列 | 11 | 自动生成的数字,仅在需要时覆盖 |
| 接口 | wan | 选择连接到互联网的接口 |
| 接口2 | GuestNet | 选择与您的GuestNet匹配的接口 |
| 协议 | IP | 在我们的示例中选择协议ip |
| | any | 源地址,选any |
| 源端口 | any | 源端口,选any |
| 目标 | any | 目的地ip,选any |
| 目标端口 | any | 目标端口,请保留为任意 |
| 方向 | 进 | 匹配入站的数据包(下载) |
| 管道或队列 | PipeDown-2Mbps | 选择下载管道 |
| 描述 | GuestNetDownload | 输入描述性名称 |

为上传流量创建规则

| 序列 | 21 | 自动生成的数字,仅在需要时覆盖 |
| 接口 | wan | 选择连接到互联网的接口 |
| 接口2 | GuestNet | 选择与您的GuestNet匹配的接口 |
| 协议 | IP | 在我们的示例中选择协议ip |
| | any | 源地址,选any |
| 源端口 | any | 源端口,选any |
| 目标 | any | 目的地ip,选any |
| 目标端口 | any | 目标端口,请保留为任意 |
| 方向 | 出 | 匹配出站的数据包(上传) |
| 管道或队列 | PipeUp-1Mbps | 选择上传管道 |
| 描述 | GuestNetUpload | 输入描述性名称 |

现在按 应用 来激活流量整形规则。

觉得内容不错?我要

评论 暂无评论
暂无评论,快来抢沙发吧~