⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsredq.h

📁 区分服务的路由算法
💻 H
字号:
/* * Copyright (c) 2000 Nortel Networks * All rights reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *      This product includes software developed by Nortel Networks. * 4. The name of the Nortel Networks may not be used *    to endorse or promote products derived from this software without *    specific prior written permission. *  * THIS SOFTWARE IS PROVIDED BY NORTEL AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL NORTEL OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * Developed by: Farhan Shallwani, Jeremy Ethridge *               Peter Pieda, and Mandeep Baines * Maintainer: Peter Pieda <ppieda@nortelnetworks.com> */#ifndef dsredq_h#define dsredq_h//#include "dsred.h"#define MAX_PREC 3	// maximum number of virtual RED queues in one physical queueenum mredModeType {rio_c, rio_d, wred, dropTail};/*------------------------------------------------------------------------------struct qParam    This structure specifies the parameters needed to be maintained for eachRED queue.------------------------------------------------------------------------------*/struct qParam {	edp edp_;		// early drop parameters (see red.h)	edv edv_;		// early drop variables (see red.h)	int qlen;		// actual (not weighted) queue length in packets	double idletime_;	// needed to calculate avg queue	bool idle_;		// needed to calculate avg queue};/*------------------------------------------------------------------------------class redQueue    This class provides specs for one physical queue.------------------------------------------------------------------------------*/class redQueue {public:	int numPrec;	// the current number of precedence levels (or virtual queues)	int qlim;	mredModeType mredMode;	redQueue();	void config(int prec, const char*const* argv);	// configures one virtual RED queue	void initREDStateVar(void);		// initializes RED state variables	void updateREDStateVar(int prec);	// updates RED variables after dequing a packet        // enques packets into a physical queue	int enque(Packet *pkt, int prec, int ecn);	Packet* deque(void);			// deques packets	double getWeightedLength();	int getRealLength(void);		// queries length of a physical queue        // sets packet time constant values        //(needed for calc. avgQSize) for each virtual queue	void setPTC(double outLinkBW);        // sets mean packet size (needed to calculate avg. queue size)	void setMPS(int mps);private:	PacketQueue *q_;		// underlying FIFO queue        // used to maintain parameters for each of the virtual queues	qParam qParam_[MAX_PREC];	void calcAvg(int prec, int m); // to calculate avg. queue size of a virtual queue};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -