BBR(Bottleneck Bandwidth and Round-trip propagation time)加速的背景下,FQ、FQ_PIE、CAKE 是不同的队列调度算法,它们各自有不同的特点,适用于不同的网络场景,以下为你详细介绍:

区别

算法原理

 

  • FQ(Fair Queueing,公平队列):其核心是将网络流量分成多个队列,为每个流(可以理解为一个网络连接)分配一个独立的队列,保证各个流在使用网络带宽时能够公平竞争,避免某个大流占用过多带宽而影响其他小流。它通过轮转调度的方式,依次为每个队列中的数据包提供服务,使得每个流都有机会发送数据。
  • FQ_PIE(Fair Queueing with Proportional Integral controller Enhanced,带比例积分控制器增强的公平队列):是在 FQ 的基础上结合了 PIE(Proportional Integral controller Enhanced,比例积分控制器增强)算法。PIE 算法主要用于主动队列管理,通过监控队列的长度和延迟,动态调整丢包概率,以控制队列的平均长度,从而减少网络拥塞和延迟。
  • CAKE(Common Applications Kept Enhanced,通用应用增强):采用了更为复杂的算法,它不仅考虑了流量的公平性,还对不同类型的流量进行分类处理,例如区分实时流量(如语音、视频)和非实时流量(如文件下载),并为不同类型的流量提供不同的优先级和服务质量保证。同时,CAKE 还能够自适应网络环境的变化,动态调整队列参数。

性能特点

 

  • FQ:主要优势在于保证流量的公平性,能够有效避免某个或某几个大流量连接独占带宽资源,使得各个小流量连接也能获得足够的带宽进行数据传输。然而,它对队列长度和延迟的控制能力相对较弱,在网络拥塞较为严重的情况下,可能会出现较高的延迟和丢包率。
  • FQ_PIE:继承了 FQ 的公平性,同时通过 PIE 算法对队列长度和延迟进行了更好的控制。它能够在保证公平性的前提下,有效地降低网络拥塞时的延迟和丢包率,提高网络的整体性能。不过,由于引入了 PIE 算法的动态调整机制,其配置和调优相对复杂一些。
  • CAKE:具有非常好的综合性能,它能够在保证公平性的同时,对不同类型的流量进行精细化管理,提供较好的服务质量保证。尤其适用于对延迟和抖动较为敏感的实时应用,如视频会议、在线游戏等。但是,CAKE 算法的计算复杂度较高,对系统资源的消耗相对较大。

适用场景

 

  • FQ:适用于网络中存在大量小流量连接,且对流量公平性要求较高的场景。例如,在一个共享网络环境中,有多个用户同时进行网页浏览、邮件收发等小流量操作,使用 FQ 算法可以确保每个用户都能获得相对公平的网络带宽。
  • FQ_PIE:适合于大多数普通网络环境,特别是那些对延迟和丢包率有一定要求,同时又希望保证流量公平性的场景。比如家庭网络中,既有视频播放、在线游戏等对延迟敏感的应用,又有文件下载等大流量操作,FQ_PIE 能够在两者之间取得较好的平衡。
  • CAKE:更适用于对网络服务质量要求较高的场景,特别是实时应用场景。例如,企业的视频会议系统、数据中心之间的高速互联等,CAKE 能够通过对流量的精细管理和调度,为这些应用提供低延迟、低抖动的网络环境。

哪种更好用

 

不存在绝对更好用的算法,需要根据具体的网络环境和需求来选择:

 

  • 如果网络中流量较为单一,且主要关注流量公平性,对延迟和丢包率要求不是特别苛刻,那么 FQ 是一个不错的选择。
  • 对于大多数常见的网络环境,特别是家庭网络和小型企业网络,FQ_PIE 通常能够提供较好的综合性能,既能保证公平性,又能有效控制延迟和丢包率,是一种比较通用的选择。
  • 当网络中存在大量对延迟和抖动敏感的实时应用,且系统资源允许的情况下,CAKE 算法能够提供更好的服务质量保证,更适合这种对网络性能要求较高的场景。