ISP 如何跟踪个人用户数据下载并回落到较低的 mbps?

网络工程 服务质量 带宽 网络服务商
2022-02-25 12:02:02

我从事路由器软件开发工作。所以,我知道路由器中的 QoS,我们可以在其中对流量进行调度和监管。

然而,一个问题仍然存在于我的脑海中,即 ISP 如何跟踪订户下载了多少数据,因为订户太多,而且他们都将与客户边缘路由器连接。

接下来,一旦他们在数据下载方面达到最大使用限制,他们的互联网速度将如何降低。就像,它们是否排入优先级较低的路由器队列中。但是,这不会总是限制较低的速度。他们是否放置了一个出口接口,其端口速度较低?

我要求这是一个正常的用例,其中 ISP 将运行 IS-IS 或 OSPF 协议作为 IGP 和 BGP 以连接到其他 ISP。

2个回答

所以,有几种不同的方法可以用来实现这一点,但我会坚持使用我熟悉的方法。

在 PPPoE(oA) 环境(例如:xDSL)中,每个用户都通过路由器上的专用逻辑接口进行跟踪,该接口跟踪字节输入/字节输出,并且可以根据使用情况单独应用监管器。

在使用 IPoE 的环境中(例如:通过 DHCP 跟踪用户),应用类似的规则 - 创建逻辑用户接口以响应 DHCP 事务(例如:为每个 IP 地址创建一个逻辑接口),然后在这些情况下应用过滤器接口超出带宽配额。

在更简单的环境中,我还看到使用 NetFlow/SFlow 跟踪带宽,然后根据 IP 地址应用专用监管器,但这些通常不能很好地扩展。

这两种方法都需要支持分层排队机制的路由器 - 例如:它们能够按用户(IP 地址)排队,而不仅仅是按子接口 (VLAN) 或物理接口。

您是对的,任何 ISP 的网络中通常都有太多的用户,以至于他们的路由器无法对其进行全面分析和整形。如果他们有更多果汁的路由器,他们将拥有更多的订阅者!;) 这就是深度数据包检测发挥作用的地方。

(我从未为任何 ISP 工作过,但多年来我一直深入 DPI,在此期间,我与各种服务提供商合作,从小型大学校园网络,到小型(约 1000 个子)本地 ISP,直至拥有超过 100 万用户的国家有线电视提供商和移动运营商。只是说。)

对于前两个 OSI 层,我们通常位于客户网络聚合点的某个地方,位于任何铜缆或光纤链路上。吞吐量方面,我们通常可以处理每个充满汁液的机箱约 500 Gbps。如果您将 DPI 引擎放在两个边缘路由器旁边或之间的某个位置,效果最佳。通过这种方式,我们可以在所有流量到达 NAT 或防火墙之前看到它。从那里开始,一切都与引擎和配置中的逻辑有关。

从最基础开始,您的公共 IP(或 CPE 的任何外部 IP)是任何小型有线网络中的第一标识符。知道您的 CPE MAC 地址或自己交付 CPE 的大学校园网络或 ISP 会在您通过第一个 DHCP 请求进入网络的那一刻识别您的 MAC 地址,然后可以将此信息提供给引擎,以便您无论您收到什么 IP,都被重新识别为订阅者。容易的东西。

当您是移动网络运营商时,事情通常会有点棘手。其中,DHCP 租约要短得多,经常更改,并且来自网络中许多不同的位置和方向。在这种情况下,您通常连接到外部供应系统,使用 RADIUS 馈送或 DHCP 窥探器在订户上线或断开连接时做出反应。这可能需要几秒钟,但我们通常会在您出现在网络上的最初几千字节内识别出您。在我们将您识别为有效订阅者之前,我们甚至可以降低您的吞吐率。

还有一些更复杂的网络,例如具有重叠本地 IP 的多个 VLAN。我们的引擎可以配置为通过 VLAN+IP 对或任何其他方式识别订户 - L2TP 隧道 ID、MPLS 标签 + 本地 IP 等等。

通过这种方式,我们可以真正实时识别每个订阅者。而且由于我们家里有一些好的 CPU 和大量内存,我们可以做一些很棒的事情,比如调整吞吐量、数据包或每秒连接速率。

[在你为网络中立大喊大叫之前,请允许我解释一下网络中的好坏塑造。我同意允许某些应用程序付费“快速通道”的供应商是不好的塑造。非洲东部国家经常控制和阻止 VoIP 应用程序的方式也是如此。但是,如果告诉一个拥有 1000 个客户和 10 Gbps 上行链路的 ISP,他无法塑造,那么你就会让他破产。允许他公平地共享网络上的主机之间的链接,或者将网络中的总 BitTorrent 调整为一些合理的值,他的所有客户都可以愉快地使用他们的网络,而不会出现任何实际问题。给 Skype 和游戏更高的优先级,再也不会听到关于网络滞后的抱怨。严重地。我们确实有客户在我们之后打电话给我们

至于塑形的工作原理,有两种方法。一种是修改和控制 TCP 窗口大小,这样 HTTP 下载等服务每秒不会发送太多字节。但是,这仅适用于 TCP 流量并且不是很干净,因为它正在动态重写数据包。更好的解决方案是将数据包排队并以受控方式将它们发送出去,或者如果整形队列太接近配置的最大值,则丢弃它们。

DPI引擎内部具体发生的事情是每个公司的秘密,所以我不能谈论太多。我可以告诉你,在它的基础上,我们通常使用我们自己的已知算法实现,比如 Blue ( https://en.wikipedia.org/wiki/Blue_(queue_management_algorithm) )。这些工作的方式是将数据包排队并在达到最大吞吐量之前开始缓冲它们,以便能够对链路上的任何流量突发做出反应。它比仅仅丢弃多余的流量更具启发性,所以如果你有兴趣,我建议你更广泛地阅读它。

最后,我从未见过两个 ISP 对其边缘路由器之间的链路进行任何真正的整形。我希望受人尊敬的做法是他们每个人都坚持不超过对邻居的链接速度。除非你知道这种做法的例子?我很想知道细节。