亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tcp-reno.cc

?? Ns2 TCP 協議改進 版本 提高goodput
?? CC
字號:
/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- *//* * Copyright (c) 1990, 1997 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Lawrence Berkeley Laboratory, * Berkeley, CA.  The name of the University may not be used to * endorse or promote products derived from this software without * specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */#ifndef lintstatic const char rcsid[] =    "@(#) $Header: /nfs/jade/vint/CVSROOT/ns-2/tcp/tcp-reno.cc,v 1.42 2005/07/13 03:51:32 tomh Exp $ (LBL)";#endif#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include "ip.h"#include "tcp.h"#include "flags.h"static class RenoTcpClass : public TclClass {public:	RenoTcpClass() : TclClass("Agent/TCP/Reno") {}	TclObject* create(int, const char*const*) {		return (new RenoTcpAgent());	}} class_reno;int RenoTcpAgent::window(){	//	// reno: inflate the window by dupwnd_	//	dupwnd_ will be non-zero during fast recovery,	//	at which time it contains the number of dup acks	//	int win = int(cwnd_) + dupwnd_;	if (frto_ == 2) {		// First ack after RTO has arrived.		// Open window to allow two new segments out with F-RTO.		win = force_wnd(2);	}	if (win > int(wnd_))		win = int(wnd_);	return (win);}double RenoTcpAgent::windowd(){	//	// reno: inflate the window by dupwnd_	//	dupwnd_ will be non-zero during fast recovery,	//	at which time it contains the number of dup acks	//	double win = cwnd_ + dupwnd_;	if (win > wnd_)		win = wnd_;	return (win);}RenoTcpAgent::RenoTcpAgent() : TcpAgent(), dupwnd_(0){}void RenoTcpAgent::recv(Packet *pkt, Handler*){	hdr_tcp *tcph = hdr_tcp::access(pkt);	int valid_ack = 0;        if (qs_approved_ == 1 && tcph->seqno() > last_ack_)		endQuickStart();        if (qs_requested_ == 1)                processQuickStart(pkt);#ifdef notdef	if (pkt->type_ != PT_ACK) {		fprintf(stderr,			"ns: confiuration error: tcp received non-ack\n");		exit(1);	}#endif        /* W.N.: check if this is from a previous incarnation */        if (tcph->ts() < lastreset_) {                // Remove packet and do nothing                Packet::free(pkt);                return;        }	++nackpack_;	ts_peer_ = tcph->ts();	if (hdr_flags::access(pkt)->ecnecho() && ecn_)		ecn(tcph->seqno());	recv_helper(pkt);	recv_frto_helper(pkt);	if (tcph->seqno() > last_ack_) {		if (last_cwnd_action_ == CWND_ACTION_DUPACK)			last_cwnd_action_ = CWND_ACTION_EXITED;		dupwnd_ = 0;		recv_newack_helper(pkt);		if (last_ack_ == 0 && delay_growth_) {			cwnd_ = initial_window();		}	} else if (tcph->seqno() == last_ack_) {		if (hdr_flags::access(pkt)->eln_ && eln_) {			tcp_eln(pkt);			return;		}		if (++dupacks_ == numdupacks_) {			dupack_action();			if (!exitFastRetrans_)				dupwnd_ = numdupacks_;		} else if (dupacks_ > numdupacks_ && (!exitFastRetrans_ 		     || last_cwnd_action_ == CWND_ACTION_DUPACK )) {			++dupwnd_;	// fast recovery		} else if (dupacks_ < numdupacks_ && singledup_ ) {			send_one();		}	}        if (tcph->seqno() >= last_ack_)                // Check if ACK is valid.  Suggestion by Mark Allman.                valid_ack = 1;	Packet::free(pkt);#ifdef notyet	if (trace_)		plot();#endif	/*	 * Try to send more data	 */        if (valid_ack || aggressive_maxburst_)		if (dupacks_ == 0 || dupacks_ > numdupacks_ - 1)			send_much(0, 0, maxburst_);}intRenoTcpAgent::allow_fast_retransmit(int last_cwnd_action_){	return (last_cwnd_action_ == CWND_ACTION_DUPACK);}/* * Dupack-action: what to do on a DUP ACK.  After the initial check * of 'recover' below, this function implements the following truth * table: *   *      bugfix  ecn     last-cwnd == ecn        action   *   *      0       0       0                       reno_action *      0       0       1                       reno_action    [impossible] *      0       1       0                       reno_action *      0       1       1                       retransmit, return   *      1       0       0                       nothing  *      1       0       1                       nothing        [impossible] *      1       1       0                       nothing  *      1       1       1                       retransmit, return */     voidRenoTcpAgent::dupack_action(){	int recovered = (highest_ack_ > recover_);	int allowFastRetransmit = allow_fast_retransmit(last_cwnd_action_);        if (recovered || (!bug_fix_ && !ecn_) || allowFastRetransmit) {		goto reno_action;	}	if (ecn_ && last_cwnd_action_ == CWND_ACTION_ECN) {		last_cwnd_action_ = CWND_ACTION_DUPACK;		/* 		 * What if there is a DUPACK action followed closely by ECN		 * followed closely by a DUPACK action?		 * The optimal thing to do would be to remember all		 * congestion actions from the most recent window		 * of data.  Otherwise "bugfix" might not prevent		 * all unnecessary Fast Retransmits.		 */		reset_rtx_timer(1,0);		output(last_ack_ + 1, TCP_REASON_DUPACK);		dupwnd_ = numdupacks_;		return; 	}	if (bug_fix_) {		/*		 * The line below, for "bug_fix_" true, avoids		 * problems with multiple fast retransmits in one		 * window of data.		 */		return;	}reno_action:	// we are now going to fast-retransmit and will trace that event	trace_event("RENO_FAST_RETX");	recover_ = maxseq_;	last_cwnd_action_ = CWND_ACTION_DUPACK;	slowdown(CLOSE_SSTHRESH_HALF|CLOSE_CWND_HALF);	reset_rtx_timer(1,0);	output(last_ack_ + 1, TCP_REASON_DUPACK);	// from top        dupwnd_ = numdupacks_;	return;}void RenoTcpAgent::timeout(int tno){	if (tno == TCP_TIMER_RTX) {		dupwnd_ = 0;		dupacks_ = 0;		if (bug_fix_) recover_ = maxseq_;		TcpAgent::timeout(tno);	} else {		timeout_nonrtx(tno);	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美不卡视频一区| 成人的网站免费观看| 国产精品毛片无遮挡高清| 久久婷婷国产综合精品青草| 日韩午夜精品电影| 日韩欧美一区二区视频| 538在线一区二区精品国产| 91国内精品野花午夜精品| 国产原创一区二区三区| 日韩av午夜在线观看| 亚洲成人在线免费| 亚洲精品免费视频| 中文字幕亚洲欧美在线不卡| 国产精品美日韩| 国产精品人成在线观看免费| 精品国产乱码久久久久久影片| 91在线国产观看| 国产乱色国产精品免费视频| 国产成人免费视| 天天综合日日夜夜精品| 午夜激情久久久| 日本中文在线一区| 日本女优在线视频一区二区 | 亚洲精品视频在线观看网站| 国产精品国产自产拍在线| 国产精品毛片高清在线完整版| 国产色产综合色产在线视频| 欧美韩国日本一区| 国产精品久久久久久久久果冻传媒 | 色婷婷久久综合| 日本精品一级二级| 欧美日韩精品专区| 日韩欧美国产精品| 欧美成人国产一区二区| 久久影院午夜片一区| 亚洲欧美综合色| 亚洲午夜一二三区视频| 热久久免费视频| 国产成人午夜99999| 色综合咪咪久久| 欧美精品aⅴ在线视频| 26uuu色噜噜精品一区| 国产精品久久久久影院色老大| 亚洲综合久久久| 久久不见久久见免费视频7| 国产自产2019最新不卡| 色综合天天综合网天天看片| 欧美精品自拍偷拍动漫精品| 精品国产乱码久久| 亚洲精品国产a| 美国av一区二区| 色综合久久99| 亚洲精品一线二线三线| 亚洲精品视频免费看| 视频一区视频二区中文字幕| 国精品**一区二区三区在线蜜桃| 9久草视频在线视频精品| 欧美探花视频资源| 久久久无码精品亚洲日韩按摩| 久久综合99re88久久爱| 亚洲欧美在线aaa| 毛片av中文字幕一区二区| 91国偷自产一区二区使用方法| 欧美成人国产一区二区| 婷婷久久综合九色综合伊人色| 国产91精品一区二区| 欧美一区二区福利视频| 亚洲免费观看高清在线观看| 国产一区二区三区蝌蚪| 欧美日韩精品一区二区三区 | 99久久久久久| 欧美va在线播放| 亚洲一区二区三区四区的| 从欧美一区二区三区| 日韩欧美激情四射| 日日夜夜精品视频天天综合网| 国产99精品在线观看| 日韩色视频在线观看| 青青草97国产精品免费观看 | 国产成人啪免费观看软件| 欧美一区二区视频在线观看| 亚洲一区二区三区视频在线 | 日本一区二区三区dvd视频在线| 日本三级亚洲精品| 91.麻豆视频| 天涯成人国产亚洲精品一区av| 欧美中文一区二区三区| 亚洲欧美一区二区三区极速播放| 国产精品一区一区三区| 久久久久综合网| 午夜亚洲福利老司机| 日本大香伊一区二区三区| 亚洲欧洲国产专区| 99国产一区二区三精品乱码| 中文字幕va一区二区三区| 国产电影一区在线| 中文字幕第一区二区| www.一区二区| 亚洲精品日日夜夜| 欧美精品v日韩精品v韩国精品v| 亚洲激情综合网| 欧美日韩一区二区三区在线看| 亚洲电影欧美电影有声小说| 欧美精品亚洲一区二区在线播放| 亚洲午夜久久久久久久久久久 | 欧美日韩大陆一区二区| 爽好久久久欧美精品| 日韩三级视频在线看| 激情综合亚洲精品| 亚洲国产成人一区二区三区| 9久草视频在线视频精品| 亚洲国产一区二区三区青草影视| 欧美精品成人一区二区三区四区| 奇米亚洲午夜久久精品| 久久精品一区二区| 91丨九色丨黑人外教| 亚洲一区二区三区在线| 精品久久久久一区| 久久精品久久久精品美女| 欧美极品aⅴ影院| 欧美亚日韩国产aⅴ精品中极品| 日韩av一区二区三区四区| 日本一区二区三级电影在线观看| www.66久久| 美国三级日本三级久久99| 国产精品久久二区二区| 7777精品伊人久久久大香线蕉完整版| 久久成人免费日本黄色| 中文字幕一区二区三区色视频| 欧美人伦禁忌dvd放荡欲情| 韩国v欧美v日本v亚洲v| 国产精品视频看| 欧美一区二区免费| 91免费看片在线观看| 精品一区二区三区香蕉蜜桃| 亚洲视频1区2区| 337p日本欧洲亚洲大胆精品| 在线观看中文字幕不卡| 国产一区欧美二区| 亚洲123区在线观看| 国产精品久久免费看| 欧美另类z0zxhd电影| 国产成人啪免费观看软件| 中文字幕一区三区| 中文字幕av资源一区| 精品av久久707| 7777精品伊人久久久大香线蕉的 | 欧美日高清视频| av中文字幕在线不卡| 精品一区二区在线播放| 午夜电影网亚洲视频| 亚洲另类春色校园小说| 国产精品欧美一区二区三区| 精品久久人人做人人爰| 91精品中文字幕一区二区三区| 91在线视频网址| gogogo免费视频观看亚洲一| 国产美女视频91| 国产成人自拍高清视频在线免费播放| 视频一区免费在线观看| 久久久久久毛片| 久久久国产一区二区三区四区小说 | 在线视频亚洲一区| 成熟亚洲日本毛茸茸凸凹| 激情国产一区二区| 免费在线一区观看| 国产精选一区二区三区| 国产精品一区2区| 黄色小说综合网站| 国产精品123| 国产精品99久久久久久似苏梦涵 | 欧美aaaaaa午夜精品| 五月婷婷激情综合网| 亚洲自拍偷拍欧美| 亚洲高清中文字幕| 日韩电影在线免费| 老司机免费视频一区二区三区| 另类小说欧美激情| 国产剧情一区二区| 成人av电影观看| 91片在线免费观看| 国产精品1区2区3区在线观看| 成人av网站在线观看免费| 99精品视频在线观看| 欧洲av一区二区嗯嗯嗯啊| 欧美三级视频在线观看| 欧美一区永久视频免费观看| 精品国精品自拍自在线| 国产丝袜欧美中文另类| 日韩美女精品在线| 亚洲成av人片在www色猫咪| 日本中文字幕一区二区视频| 精品一区免费av| 波多野结衣一区二区三区| 欧美在线不卡视频| 欧美不卡视频一区| 亚洲欧洲日韩一区二区三区| 亚洲一区中文日韩| 国产一区二区精品久久91| 色综合天天综合网天天狠天天|