超出LAN容量时OS中的网络优先级


0

我正在尝试开发一个需要实时网络的桌面应用程序。现在,当许多应用程序共享一个NIC并超出操作系统中NIC的整个LAN容量时,我会遇到一些问题。

1)当流量超过NIC容量限制时会发生什么?在Windows中,每个应用程序的速度是否同等降低?或者之前开始的应用程序具有更高的优先级?在Mac或Linux中怎么样?

2)从Internet下载数据时,我认为浏览器会尽快下载它。这个动作对实时应用程序的网络有多大影响?

3)在Windows中,可以配置进程的优先级。是否有可能同样设置网络优先级?再说一下Mac或Linux怎么样? (我知道在Windows中设置网络优先级的第三方应用程序,但操作系统不支持?)

4)每个IP头具有包括优先级设置的TOS字段。我听说大多数操作系统和路由器忽略了这个领域。真的吗?

先感谢您。

(由于超出范围,此帖子已从Stack Overflow中移除)


有关应用程序的更多信息可能会有所帮助。当然,您可以将服务质量(QoS)规则应用于流量,但不确定这是您要求的。
Dave M

我的问题的理想和最近的应用程序是需要最小延迟的在线游戏,并且不可能对每个用户的网络系统构成任何配置和限制。所以我需要尽可能保证速度来设计我的应用程序网络逻辑。
user3288408

Answers:


0

首先, real time 网络根本不存在,因为在任何网络情况下,您都无法保证以“及时”的方式提供您的信息;实时计算经常被混淆 high performance computing。其次,人们不能“超过NIC的容量”,因为如果你向它推出太多位,NIC就不会像水管一样爆裂;您的NIC的“容量”(或带宽)是 物理 限制一个连接接口可以物理“流”比特(上/下)的速度,并以每秒兆比特来衡量(不是大型的比特,因为这是一个常见的误称......仅为了清晰起见)。

1)当流量超过NIC容量限制时会发生什么?在Windows中,每个应用程序的速度是否同等降低?或者之前开始的应用程序具有更高的优先级?在Mac或Linux中怎么样?

您运行的每个请求“网络资源”的应用程序(或软件工程师称之为“套接字”)能够以应用程序“绑定”(监听)的界面的最大速度下载/上载,保持请注意,这种“功能”或多或少与操作系统无关(即Windows中的套接字具有与Linux / Mac中相同的基本限制/概念)。因此,如果一个应用程序(比如一个Web服务器)正在运行,它理论上可以以它正在监听的界面的最大速度“提供”网页(比如说'1'/ 1Gb的'nic 1'),这意味着(理论上)它可以在1秒内接收125MB文件/请求,同时发送125MB文件/响应(如果是全双工)。实际上,虽然速度远远低于许多原因......

鉴于此,请说我们的“完美”Web服务器现在还需要处理FTP请求,因此我们在同一台机器上加载一台FTP服务器,该机器将在同一个NIC上监听(在我们的示例中为“nic 1”)。当FTP服务器应用程序启动时,它也将能够接收和发送 取决于 NIC的理论最大值(在我们的示例中为125MB / s)。对于您运行的任何应用程序(Web浏览器,视频游戏,Netflix / Hulu等等)都是如此。现在我遇到了两个或两个以上的应用程序(在我们的示例中是web和ftp),它们能够使用NIC的最大带宽,那么每个应用程序会发生什么?这是通用网络和操作系统实现的地方。

在我们的例子中,假设有80人从我们的网络服务器以10Mb / s的速度下载(总计800Mb / s),然后又有30人进来并以10MB / s的速度从FTP服务器开始下载,总计1100Mb / s ;理论上应该发生的是,每个应用程序将获得NIC可以物理处理的1000Mb带宽的相等份额(类似于操作系统在运行的应用程序中“共享”CPU的方式,最高可达100%的CPU负载)。实际上有一个 LOT 各种因素将决定哪种应用 使用 在给定时刻的带宽量。这些因素的范围可以从请求资源的用户数量到简单的硬件问题3下游的网络跃点,这些类型的问题超出了您的控制范围以及您的NIC可以执行的操作,还要注意哪个应用程序首先启动或首先连接的应用程序没有区别带宽分配。在这个1100Mb / s的情况下,Web服务器很可能以60%带宽的有效速率运行,而当用户可能丢失或者其他一些网络问题可能发生变化时,FTP将达到40% Web服务器仅使用20%,FTP可以以40%的速率继续运行,从而限制了Web服务器接收端的用户。

请记住,这些都是通用场景,以便更好地理解和“真实世界”案例完全不同,需要大量的规划和设计工作,以确保您可以满足用户群的带宽需求(至少尝试满足) 。

2)从Internet下载数据时,我认为浏览器会尽快下载它。这个动作对实时应用程序的网络有多大影响?

浏览器不能像他们那样快速下载,它们的下载速度与任何其他应用程序一样快,并且它们会影响系统的总带宽,就像任何其他应用程序一样(参见答案1)。

3)在Windows中,可以配置进程的优先级。是否有可能同样设置网络优先级?再说一下Mac或Linux怎么样? (我知道在Windows中设置网络优先级的第三方应用程序,但操作系统不支持?)

可以设置“网络”的“优先级”,但不能与设置进程优先级相同。设置“网络优先级”可能意味着一些事情,例如设置NIC的优先级而不是另一个(可以在Win / Mac / Linux中完成,也称为设置'网络接口度量')。如果您的意图是设置特定进程的网络优先级或“网络流量类型”,则称为 '服务质量(QoS)' 并且也可以应用于Win / Mac / Linux(尽管您平台上的QoS设置和配置超出了本问题/答案的范围)。 QoS允许您限制/评估分配给特定事物的带宽;例如,您可以设置QoS,以便在没有其他任何内容下载时允许Torrent下载的最大带宽,然后在其他网络活动开始时自动将其限制为仅5%的总带宽分配,以确保您的Torrent下载不会占用您的所有带宽当您尝试查看电子邮件或观看YouTube时(仅作为示例)。

4)每个IP头具有包括优先级设置的TOS字段。我听说大多数操作系统和路由器忽略了这个领域。真的吗?

'服务类型' 字段定义 通过这些 2 RFC 从此变成了所谓的“差异化服务代码点”。它是 被忽略了,因为它只是'没用过'。换句话说,仅仅因为设置字段的数据包并不意味着您(作为网络设备的实现者)必须实际“对其做任何事情”,ToS是QoS的一部分,因此您的特定操作系统/设备必须支持ToS / DS字段。话虽这么说,大多数操作系统/网络设备都有一些功能,允许您通过一些QoS策略使用这些字段(至少我不知道任何现代实例, 有某种QoS实现)。

重新迭代,没有“实时网络”这样的符号,而是你会说“低延迟”(甚至“接近实时”),因为“实时”意味着保证时间交付请求/实施操作。您不能保证在网络上执行的任何操作都将具有X的特定时间传递,而您可以说可以保证网络操作在给定节点上没有比X更高/更低的延迟。

我还建议阅读QoS,因为看起来可能是你的问题背后的问题和QoS可能会变得复杂,具体取决于您的需求。

我希望能有所帮助。


谢谢您的回复。我感谢非常详细和有用的答案。对不起我的英语能力差,我还有其他问题。 (1)我总结了你的答案如下:在现实世界的情况下,因为共享NIC的带宽有很多不同的因素,没有人知道哪个应用程序可以获得很多带宽,也无法控制它。所以我们必须针对气质网络系统设计设计,计划和逻辑。那是对的吗?
user3288408

(2)每个应用程序的网络都会影响总带宽。但是因为我们无法控制网络的优先级,下载操作可能会影响我的应用程序的网络,或者可能不会。没人知道。那是对的吗? (4)我正在考虑将QoS应用到我的应用程序中。简单地说,当我的应用程序使用ToS字段对我的数据包给予高优先级而不执行任何其他操作时,操作系统会忽略此设置吗?或者我的数据包可以获得高优先级? (在操作系统中没有进行QoS配置)
user3288408

没问题!回答你的其他问题; 1是正确的,我们(作为工程师)在开发网络应用程序时需要考虑网络“可靠性”。对于Q2,你对每个影响总带宽的应用都是正确的,但你可能不知道其他应用是否会影响你的带宽,回到Q1,如果你把它包含在你的'网络可靠性'设计中它'可能'是争论的焦点。设计低延迟应用程序确实需要一些“市场调查”,以便您可以最好地猜测实际可能产生的延迟(或者应用程序可以“处理”的最大延迟)
txtechhelp

根据问题4,我认为应该是3 :) ..如果你用特定的ToS标志标记你的数据包,操作系统'可能'忽略它,这取决于你是否在相关的操作系统上设置了QoS(只是基本的)实现QoS,而不是任何疯狂的配置,更令人不安的是,一旦您的数据包离开NIC,它现在受制于端点之间的各个节点。节点(至少不在您控制中的节点)可能会或可能不会尊重您的ToS标志,这是主要关注的地方(您不知道节点之间的设备是什么/可以做什么)。
txtechhelp

感谢您的回复,并再次抽出时间!我理解几乎所有的事情都归功于你!
user3288408
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.