跳转到内容

路由、流量控制和防火墙/流量控制

来自 Wikibooks,开放世界中的开放书籍
  Switch>> traffic}>-                                         switch

切换}<block_link_from_fore_poin_/\link

                          \/heck
                        Blocked


流量




    Block traffic network link from the hacker system google

基于 IP 的分组交换网络本质上是无状态的。这意味着流经网络的每个新数据片段理论上都与之前的所有数据片段完全独立处理。这使得从许多独立部分构建大型网络变得非常容易,但在分配有限资源方面存在缺点。如果一个网络用户正在发送网络所能支持的最大数量的数据包,那么其他用户理论上可能最终无法传输任何数据。来自邮件、Usenet 或 DNS 更新的大量低优先级流量可能会淹没像 VoIP 这样的高优先级流量。如果 DNS 刷新或电子邮件延迟 30 秒,没有人会受到影响,但如果 VoIP 数据包发生同样的情况,呼叫可能会被挂断。

流量控制是试图通过对数据进行分类,并根据网络管理员设置的规则来阻止、重定向或限制数据来解决网络这一普遍弱点的一般术语。

基本概念

[编辑 | 编辑源代码]

队列是保留的内存块,可以容纳一定数量的等待顺序处理的对象。队列使用的典型模型是对象从一端推入,从另一端拉出以进行处理。这意味着对象按其进入的顺序完全相同地处理:First In First Out 或 FIFO。在流量控制的上下文中,队列中的对象是网络数据包。

FIFO 队列本身不执行任何流量控制。实际上,网络堆栈的默认行为(没有配置流量控制)是使用单个 FIFO 队列,因为这提供了一种中立的方式来处理网络数据包,不会偏袒任何源。实际上,网络堆栈的实现至少需要一个 FIFO 队列,因为数据包的到达速度可能比网络堆栈处理的速度快得多。在繁忙时,必须有一个缓冲区来存储数据包,否则许多数据包将被丢弃。由于队列是有限的,如果数据包的到达速度过快,持续时间过长,则始终有可能丢失数据包,但如果队列的大小合理,这将成为罕见事件。

为什么网络必须基于 FIFO 队列?FIFO 的相反是 LIFO,或 Last In First Out,通常称为堆栈。考虑一下如果我们将 LIFO 存储用于我们的缓冲区会发生什么。数据包 A、B、C 和 D 紧随其后地到达(数据包 D 在网络堆栈有机会开始处理它们之前到达)。由于我们从最后一个数据包开始,网络堆栈自然会先处理数据包 D,然后处理数据包 C。在链路的另一端,数据包会以不同的顺序到达。虽然更高级别的协议被设计为从乱序到达的数据包中恢复过来,但这会导致数据包丢失并重新发送,因此会浪费资源,并且在有简单方法避免这种情况时,不应该依赖它。

但是,使用堆栈有一个更深层次的问题:如果数据包的到达速度恰好与处理器处理的速度相同,那么我们每次都会处理最新到达的数据包。数据包 A 和 B 将停留在堆栈中,永远不会被处理。最终,两端的客户端将假设数据包已丢失,并(如果使用像 TCP 这样的协议来保证传输)重新发送数据包。这意味着浪费了资源两次发送 A 和 B,并且缓冲区被遗忘的数据包堵塞。

队列倾向于确保每个数据包花费在等待处理上的时间尽可能相似(即最坏情况不会比最好情况差太多,尽管如果流量水平不一致,它仍然会有很大差异)。另一方面,堆栈倾向于导致最坏情况和最好情况相差悬殊,这在网络中从来不是我们想要的。

[1]

令牌和桶

[编辑 | 编辑源代码]

[1]

数据包和帧

[编辑 | 编辑源代码]

数据包这两个术语都指的是跨网络传输的信息块;这两个术语之间的区别仅仅是它们在网络堆栈的不同层使用。在第 2 层(例如以太网)中,被传输的块称为帧,而在堆栈的上一层网络层(例如 IP)中,它们被称为数据包。

在物理链路传输的任何时候,说这两种类型都被传输是同样正确的,一种包含在另一种中(例如,包含在以太网帧中的 IP 数据包),但是为了简化实现模型,通常一次只考虑一种模型。以太网帧包含一些有效负载(实际上可能是 IP 数据包),但是以太网协议实现者可以忽略它所承载数据的实现细节。同样,IP 数据包必须通过某种物理方式传输(实际上可能是通过以太网帧),但是 IP 协议实现者可以忽略这个细节。

您可能会想忽略数据包和帧之间的区别,因为实际上几乎没有歧义。事实上,许多非正式文档和营销材料往往模糊了这种区别。但是,本书将尝试一致地使用这些术语,并鼓励您也这样做。

流量控制的传统元素

[编辑 | 编辑源代码]

Linux 流量控制组件

[编辑 | 编辑源代码]

软件和工具

[编辑 | 编辑源代码]

参考资料

[编辑 | 编辑源代码]
  1. a b http://tldp.org/HOWTO/Traffic-Control-HOWTO/overview.html
  2. a b c d e f 流量控制传统要素
  3. a b c d e f g 流量控制 HOWTO, Linux 流量控制组件
  4. a b 流量控制 HOWTO, 软件和工具
  5. TCNG
华夏公益教科书