linux/net/netfilter/ipvs/ip_vs_nq.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * IPVS:        Never Queue scheduling module
 *
 * Authors:     Wensong Zhang <[email protected]>
 *
 * Changes:
 */

/*
 * The NQ algorithm adopts a two-speed model. When there is an idle server
 * available, the job will be sent to the idle server, instead of waiting
 * for a fast one. When there is no idle server available, the job will be
 * sent to the server that minimize its expected delay (The Shortest
 * Expected Delay scheduling algorithm).
 *
 * See the following paper for more information:
 * A. Weinrib and S. Shenker, Greed is not enough: Adaptive load sharing
 * in large heterogeneous systems. In Proceedings IEEE INFOCOM'88,
 * pages 986-994, 1988.
 *
 * Thanks must go to Marko Buuri <[email protected]> for talking NQ to me.
 *
 * The difference between NQ and SED is that NQ can improve overall
 * system utilization.
 *
 */

#define KMSG_COMPONENT
#define pr_fmt(fmt)

#include <linux/module.h>
#include <linux/kernel.h>

#include <net/ip_vs.h>


static inline int
ip_vs_nq_dest_overhead(struct ip_vs_dest *dest)
{}


/*
 *	Weighted Least Connection scheduling
 */
static struct ip_vs_dest *
ip_vs_nq_schedule(struct ip_vs_service *svc, const struct sk_buff *skb,
		  struct ip_vs_iphdr *iph)
{}


static struct ip_vs_scheduler ip_vs_nq_scheduler =;


static int __init ip_vs_nq_init(void)
{}

static void __exit ip_vs_nq_cleanup(void)
{}

module_init();
module_exit(ip_vs_nq_cleanup);
MODULE_LICENSE();
MODULE_DESCRIPTION();