《网络课程设计》TCP拥塞控制算法的主要算法

本文详细介绍了TCP拥塞控制的基本概念,包括慢启动、拥塞避免算法及重传和快重传机制,并通过一个C++程序模拟了拥塞窗口的变化过程。

能造坦克,打飞机,开航母,却拿不到驾照的痛苦你敢信?

上午做完课程设计任务得知悲剧的事实,网络考试已然挂科,询分无果,淡淡的忧伤。

关于TCP的拥塞控制今天也算是略懂皮毛了。

关于给出的阈值,此字读做(yu,第四声),若当前窗口小于阈值则呈倍数增长(double倍),这阶段称之为慢启动。

若大于了阈值则呈线性+1增长,这阶段称之为拥塞控制。

当然然后给出了第几轮产生重传,第几轮产生了快重传。

重传的概念就是阈值为当前拥塞窗口的一半,拥塞窗口变为1,然后重新进行慢启动。

而快重传也是阈值为当前拥塞窗口的一半,但拥塞窗口为当前阈值,进行拥塞控制操作。

唉,就这样了吧。考试就这样挂了,真是意料之外,淡淡的忧伤。。。

//快重传回到阈值,重传回到1
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int a[1000],ss,k,n,m,i;
int main()
{
	cout<<"\t\t\tTCP拥塞控制算法的主要算法(最新版本)"<<endl;
	cout<<"请输入阈值的初值:";
	cin>>ss;
	cout<<endl;
	cout<<"请输入显示的轮次:";
	cin>>k;
	cout<<endl;
	cout<<"请输入第几个轮次发生重传:";
	cin>>n;
	cout<<endl;
	cout<<"请输入第几个轮次发生快重传:";
	cin>>m;
	cout<<endl; 
	long long cwnd=1;
	int flag=1;
	a[0]=1;
	for (i=1;i<=k;i++){
		if (i==n){
			ss=cwnd/2;
			cwnd=1;
			a[i]=cwnd;
			flag=1;
		}else if (i==m){
			ss=cwnd/2;
			cwnd=ss;
			a[i]=ss;
			flag=0;
		}else {
		if (flag){
			cwnd*=2;
			a[i]=cwnd;
			if (cwnd*2>=ss){
				if (i+1!=m && i+1!=n && cwnd<ss){
					a[++i]=ss;
					cwnd=ss;
				}//else cwnd/=2;
				flag=0;
			}
		}else{
			cwnd++;
			a[i]=cwnd;
		}
		}
	}
	cout<<"轮次\t拥塞窗口"<<endl;
	for (i=0;i<=k;i++)
		cout<<i<<"\t"<<a[i]<<endl; 
	return 0;
}


随着计算机和通信技术的发展,人们对 Internet 的需求已经越来越超乎想象,因此更 多、更合理的控制机制对现有网络的顺畅运作起着非常重要的作用,其中最基本、最关键 的就是拥塞控制,即如何有效防止或消除网络出现的拥塞,使网络基本运行在轻度拥塞的 最佳状态。 网络中的拥塞来源于网络资源和网络流量分布的不均衡性,它不会随着网络处理能力 的提高而消除。到目前为止,拥塞问题始终没有一个完美的解决方案。面对各种复杂的网 络环境,拥塞控制算法不但在设计方面存在一定的困难,在算法的性能评价方面也都缺乏 统一的标准。根据拥塞控制算法的实现位置,主要分为源端算法和链路算法两种:源端算 法在主机和网络边缘备中执行,作用是根据反馈信息调整发送速率;链路算法网络 备(如路由器和交换机)中执行,作用是检测网络拥塞的发生,产生拥塞反馈信息。拥塞 控制算法设计的关键问题是如何生成反馈信息和如何对反馈信息进行响应。 TCP 协议是使用最广泛的源端算法,也是目前在 Internet 中使用最广泛的传输协议。 它包括慢启动、拥塞避免、快速重传和快速恢复四个阶段,其核心的拥塞避免算法采用一 种 AIMD(加性增加乘性减少)的窗口调节机制。TCP 协议从提出到现在虽然经历了几个 版本的不断改进,但在高带宽时延乘积网络不断扩大的今天,它的局限性也愈加明显,尤 其是 TCP拥塞控制算法对大的拥塞窗口响应很慢,发生拥塞时又降低窗口过快的问题。 近几年,在 TCP 协议的基础上提出了一些新的改进协议,如:HSTCP、STCP、H-TCP、 Fast-TCP、BIC 和 CUBIC 等,这些协议公布了它们各自的实现机制和算法,并对可扩展 性、带宽利用率、TCP 友好性、稳定性、RTT 公平性等性能进行衡量和评价,使网络的 性能以及解决拥塞问题的灵敏度等方面得到很大程度地改进和提高。虽然这些新的拥塞控 制协议的算法和实现机制各有千秋,但依然还不能说它们中有哪个能很好地解决现在网络 环境中面临的所有问题,真正实现一个简单又鲁棒性更好的拥塞控制协议,因此,端系统拥塞控制协议方面的改进依然在不断深入研究和探索的阶段,尤其在协议参数的修改方 面依然是研究的热点,如何在各个性能之间权衡取舍,以使网络能够运行在最佳状态,仍然值得我们去探讨。 本文从 STCP 和 CUBIC 出发,通过大量不同网络环境下的模拟实验,对它们以及 TCP 协议的性能进 行参照对比,得出各协议的拥塞窗口变化、吞吐量、稳定性、TCP 友好性、RTT 公平性等方面的比较 和分析结果,并从中找到契合点,对总体表现更好些的 CUBIC 协议实施改进。在众多实验结果中我 们发现:基于 CUBIC 协议的运行机制,在 TCP 友好性、RTT 公平性方面都明显优于 STCP,在可扩 展性和稳定性方面也表现出很好的性能,但 CUBIC 的拥塞窗口增长过于保守,且波动幅度与 STCP 相比也相对较大,即 CUBIC 在稳定性方面尚有较大的改进空间。STCP 是以稳定性著称的一种机制简 单的拥塞控制协议,基于其在检测到拥塞后的窗口减小机制与 CUBIC 基本一致,我们想到在保留 CUBIC 原有基本机制的情况下,结合 STCP 的窗口增长机制,将 CUBIC 的窗口增量和 STCP 的窗口 增量糅合,并保持 CUBIC 原有的最大、最小增量的限制机制不变,这样就使 CUBIC 窗口增量在原有 的增量限制范围内做合理且适当的提高,试验证明,这个新改进的算法具有比 CUBIC 更好的稳定性, 并在传承了其在可扩展性、TCP 友好性和 RTT 公平性等优点的同时,也能有所提升,这个改进算法就 叫做——SCUBIC。 主要工作有: 1、阅读参考文献,了解拥塞控制基本理论、发展现状,重点对最近提出的基于端算法的新协议进行理 论分析和总结。 2、利用模拟工具 NS-2 重点对 STCP、CUBIC 协议及 TCP 协议进行模拟实验,并结合理论从其可扩展 性、稳定性、TCP 友好性、RTT 公平性方面进行比较分析。 3、针对 STCP 稳定性和可扩展性比 CUBIC 更加优越的特点,提出一种新的改进算法 SCUBIC。通过 实验验证 SCUBIC 增强了拥塞窗口的稳定和带宽使用的平稳度,较大程度地提高了协议的稳定性,同 时在可扩展性、TCP 友好性和 RTT 公平性方面也有所提升。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值