在过去的几年里,我一直在我的计算机上使用一个简单的软件带宽监视器来跟踪我每月的带宽使用情况。它运行良好(或多或少;数字与我的 ISP 的在线跟踪器略有不同)。
这适用于单台计算机,但是当我母亲将她的笔记本电脑连接到我的路由器时,或者如果我使用第二台计算机,那么监控和管理带宽就会变得更加困难。
我考虑过在每个要连接的系统上运行带宽监控软件,并(以某种方式)将日志传输到中央系统以(再次以某种方式)合并到中央日志文件中,但毫不奇怪,这充其量只是一场噩梦。
我还考虑了路由器解决方案(如前所述,但它需要易于使用和定制)。
是否有一种简单的方法来监视和记录总带宽使用情况(即来自多个系统)?它不应该要求所有被监控的系统在任何特定时间都处于开启状态,也不应该让所有系统通过另一个系统连接(即,它们应该能够直接连接到 Internet 连接)。
此外,它应该能够区分本地和远程流量,以便在两个本地系统之间传输文件不计入 Internet 带宽使用。
我们有许多 Windows XP 计算机共享一个 Internet 连接。这些机器设置为下载所有可用的自动更新,然后提示用户安装它们。
每当补丁星期二推出时,我们的互联网使用量就会停止,并且在一天的大部分时间里都保持这种状态,有时会持续到下周三。这很伤人!
我仍然希望机器在更新可用时立即开始下载更新,但是如果要到周四或周五才能下载最后一次更新,那仍然比我们现在看到的延迟和连接断开要好互联网连接瓶颈。
我能做些什么来限制每台机器下载更新的速度,同时仍然让它们在更新可用时立即开始下载过程?我不想运行 WSUS 服务器。此外,只要没有要下载的更新,互联网连接就足够了。
前提:
农村地区,高带宽互联网连接的选择不多。迄今为止最快的是卫星互联网,但它很昂贵(设备和每月费用,并且有延迟缺点),因此多个家庭希望共享它。
这本身很简单 - 为每个家庭(VLAN 或物理端口)设置一个带有子网的路由器,阻止它们之间的流量,然后将调制解调器配置为路由到这些子网或设置双 NAT。
问题:
TCP 正常工作的方式意味着每个 TCP 连接或多或少会获得可用带宽的 1/n,其中 n 是连接数。因此,如果一个家庭/用户创建了大量连接,他们将在整体连接中获得更大份额。这并不是特别公平——在饱和链接的情况下,每个家庭都应该获得平等的份额。另一方面,当没有其他人使用连接时,应该可以使用全部带宽。
例如,假设有 4 个家庭共享 12Mbit/s 下行连接。如果其中之一正在下载/流式传输/其他任何内容,他们应该能够使用完整的 12Mbit/s(或足够接近)。如果2户使用连接,每户应该得到6Mbit/s,无论是一户下载1个文件,另一户11个。(没有任何带宽管理,在这种情况下,每个文件下载速度大约为1Mbit/s) 3户各获得 4Mbit/s,依此类推。
到目前为止我已经解决了:
实施此类策略(对于下游)的最佳位置是窄管道的另一端,即 ISP。显然,在这种情况下这是不可能的,所以能够以某种方式近似它会很好。但是如何?是否有支持此类功能的现成路由器?我可以配置 Linux 或 BSD 机器来执行此操作吗?它不必是防弹的——行为不端的 TCP 服务器或激进的 UDP 服务大概可以规避我在我最后可以做的任何事情——但它应该适用于大多数流量的常见情况,包括大量符合 RFC 的TCP 连接。
明确地说,我不是在谈论优先考虑特定应用程序,而是聚合进出特定以太网设备或 IP 地址范围的流量。为某些流量赋予比其他流量更高的优先级似乎得到了很好的支持,但在尝试为流量类别平均分配带宽时,情况就不太清楚了。
网络上有很多关于流量整形的写得很糟糕/不经意地反刍/其他不知情的信息。关于路由器硬件的文档非常不具体,所以我似乎在兜兜转转。
据我了解,让 TCP 以这种方式运行的方法实际上是模拟一个比实际可用的管道稍窄的管道,并人为地丢弃数据包以使其退出。所以我认为通过人为地丢弃任何额外的数据包,在上面的例子中为每个人提供 3Mbit/s 是相当简单的。这并没有真正有效地使用连接,因为大多数时候都有空闲容量。
有没有办法做我要问的?我这样做错了吗?我(或者更确切地说,有问题的家庭)愿意为此花钱——无论是价格适中的现成路由器/设备,还是运行 Linux 或 BSD 发行版的通用机器。
我正在寻找一种在 linux 机器上获取当前总带宽使用情况的好方法。我试过iftop, nethogs,但与系统监视器相比,它们没有显示真正的带宽使用情况;它们不适合我的项目需要。我想要一个我执行的命令,它返回上传和下载的当前使用情况,没有别的。
我还想在不安装任何东西的情况下使用本机 Linux 工具来做到这一点。事实上,我正在制作一个监控应用程序,我希望它能够监控计算机,而无需在用户想要监控的每台计算机上安装一些东西,那太好了!
出于 Web 开发目的,我希望能够限制 Chrome 使用的带宽,尤其是对于本地主机连接。
我知道附加组件“Firefox Throttle”在 Firefox 中可以做到这一点;有没有办法在 Chrome 中使用 Web 开发工具或扩展程序做同样的事情?
这似乎是一个简单的问题,但我找不到明确的答案。我有四个设备连接到千兆交换机,如下图所示:

我可以在 CD 最大化其链接时同时从 AB 获得完整的 GBit 带宽吗?或者,一般来说,他们是否通过交换机“共享”带宽?
具体来说,我希望对呼叫本身中的scp或sftp会话(或其他任意网络呼叫)进行速率限制。
例如,假设我想将 100MB 复制到一台服务器,将 1GB 复制到另一台服务器。我希望能够同时运行这两个,但保持“正常”计算机使用的 QoS - 有点类似于您如何限制 bittorrent 的速率。
有没有办法在不接触网络硬件的情况下做到这一点?
我正在设想类似于:
magic-qos-tool 'scp file user@host:/path/to/file'
Run Code Online (Sandbox Code Playgroud)
或者..
scp -rate 40kbps file user@host:/path/to/file
Run Code Online (Sandbox Code Playgroud) 我通过 SpeedTest.net 运行我的互联网连接,它声称它找出了实际的互联网速度,远低于我的 ISP 承诺的速度。
但是——在下载时——速度远低于测试结果。即使使用 Internet Download Manager 等下载管理器,也没有太大区别。
某些后台应用程序是否占用了我的 Internet 带宽?如果是这样,我如何将所有带宽转向一个应用程序?
bandwidth ×10
networking ×6
linux ×2
monitoring ×2
qos ×2
router ×2
browser ×1
command-line ×1
display ×1
download ×1
internet ×1
rsync ×1
scp ×1
sftp ×1
switch ×1
throttling ×1
windows ×1