流控制传输协议(SCTP)的研究及NS2仿真实现

更新时间:2023-06-12 05:29:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南京邮电学院

硕士学位论文

流控制传输协议(SCTP)的研究及NS2仿真实现

姓名:郭云霞

申请学位级别:硕士

专业:计算机应用

指导教师:曾鹏

20040401

南京邮电学院硕上学位论文摘要

摘要

随着IP网络和现有电信网络(PslN,ISDN,移动网等)的融合,必然需要在IP网络上传输ss7信令,IP网络是一个尽力而为的网络,而ss7具有高可靠性低时延的严格要求。为了更好地实现信令的互通,因特网工程任务组(IETF)特地成立了信令传送工作组(sIGTRAN)来负责设计和制定IP网上传送PSTN信令的标准协议,其中包括流控制传输协议(ScTP)。

本文首先研究了SCTP协议发展的背景和历史,然后简单介绍了sCTP不同于以往传输层协议的新特征和分组格式,关联建立和关闭,校验和的变迁等。在阐述了C00kie机制,路径最大传输单元的发现,拥塞控制算法等问题之后,着重介绍了SCTP在快速重传算法中出现的问题,这主要是由SCTP多宿性特征引起的,当主机在地址空间进行切换的时候会引起数据的不必要重传以及拥塞窗口错误增长的问题,之后给出了详细的模型分析,并对相应的快速重传算法提出了改进,然后通过网络仿真软件Ns2对改进的算法进行了仿真。

最后,分析了SCTP在FTP协议中的应用以及在下一代网络中的应用等,并对存在的安全问题和未来的发展空间进行了探讨。关键词:SCTP、多宿性、多流性、NS2、切换

南京邮电学院硕士学位论文ABSTRACT

ABSTRACT

WiththeconvergenceofIPnetworkandsomeeXis妇gtelecommunicationsnetworks(suchasPSTN,ISDNandMobileNetworks),itisnecessarytotrallsportSS7signalingmessageoVerIPnetwork,whichisabest-e肋rtnetwork,butSS7requiresstringentneedonreliabilityandreal-timedeliVery.Inordertoachievetheimemetworkingofthesignaling,theSignalingTrallspon(SIGTm≮N)、vorkinggroupoftheIntcmetEngineering1bkForce(IETF)was印eciallyfoundedtobeincha蝎eofdesigningthestandardsfortraIIsponingPS’INsignalingovorIPnetwork,includingtheStre锄ControlTrallsponProtoc01(SCTP).

First,thepaperintroducesthcbackgroundandhistoryofSCTPa工ldbrienydescribesmeuniquecharacteristicsofSCTP,itsfornlatofpackets,&initializationandterrninationofassociation,theev01utionofChecksumA190rith,etc.ARerdiscussingsomeimportalltissues,suchasthcmechaIlismofCookie,thediscoveryofmePathMaximumTYansmissionUnitandthecongestionavoidancemechallism,tllispaperpresentstheproblemsinmefastretransmissionofSCTPwhenthehostdoeschangeoverintheaddressspace.Theproblemisdlletotllemuhi-homing,andresultsinu1111ecessaryretraJlsmissionsandove玛ro研hofmecongestion谢ndowduringcertainchallgeovercond“ions.Thenadetailedanalysisispresented,someimproVementofthefastretra璐missionisgiVen.TheimpmVementisemulatedbyusingtheNS2(NetworkSimulator).

Atlast,thispaperanalysessomeapplicationsusingSCTP,suchasFTPoVerSCTPaIlditsroleinNGN(NeXtGenerationNetwork),anddiscussesitssecuritymechanismanditsfuturedevcIopment.

Keywords:SCTP,Multi.homing,Multi-streamin&NS2,changeoverll

V.628955

南京邮电学院学位论文独创性声明

本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得南京邮电学院或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均己在论文中作了明确的说明并表示了谢意。

研究生签名:日期

南京邮电学院学位论文使用授权声明

南京邮电学院、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布(包括刊登)论文的全部或部分内容。论文的公布(包括刊登)授权南京邮电学院研究生部办理。

研究生签名:——导师签名:臼期:——

南京邮电学院硕士学位论文第一章引言

第一章引言

1.1SCTP的发展背景

在过去的几年中,PSTN/IsDN网络和IP网络的融合的趋势越来越强劲,特别是v0IP(voiceOverIP)应用。PSTN(PublicSwitchedTelecommunicationNet、Ⅳork)网络和Inter兀et网络是两个独立的网络,提供不同的业务。PSTN是用于基于电路交换的,用来传输语音业务,而Internet是基于分组交换的,用来传输数据业务。随着不同业务之间的交叉渗透,一方面,电话用户需要涉及Inter八et提供的业务,而另一方面,IP网络提供的业务需要服务质量的保证.使IP网络更适合传输对时延敏感的业务。

为了减少通信代价,目前普遍采用广域IP网络来传输语音。可是,PST'N网络的大部分重要业务都需要SS7信令网的支持,SS7网络是一个共路信令网,它所传输的信令和Psn4传输的语音是相互独立的,SS7网络是用来承载电路连接的建立和释放消息,计费消息,路由消息等的专用网络。PSTN提供的业务主要来自于SS7信令网,它提供的功能范围很广,从简单的呼叫方识别到比较复杂的智能网业务。为了实现真正的IP电话,除了在v0IP网关之间传输纯语音流,还需要在IP网络上传输ss7信令消息。因此只有提供较好的ss7和IP的互通,VoIP业务才会广泛地被用户接纳。

移动通信的发展也是及其迅速的,现在正在研究的第三代网络的主要目标是成为全球移动通信系统,并且提供多媒体业务。目前有IMT一2000(InternationalMobileTelephony2000)芹口UMTS(U八iversalMobileTeleco唧unicationsystem)。uMTs后向兼容GsM,能提供高达1,920Kbps的速率支持多媒体应用,并且仍旧使用ss7网络传输信令。在3GPP中,提出了全IP的概念,要求传输网络尽可能的使用IP网络,根据3GPPR5,实现的移动网络将是一个端到端的交换分组蜂窝网络,并使用IP替代SS7。但是基于IP的网络仍旧支持电路交换业务,uMTS必须后向兼容GSM,因此,新的3G网络需要在IP网上承载SS7消息。

南京邮电学院硕J:学位论文第一章引言1.2SCTP的产生过程

scTP的产生经历了很多协议的比较和筛选,最初用一个比较通用的CTP(CommonTrallsportProtoc01)表示,它有很多要求:

口传输各种scN(switchedCircuitNet、vork)协议类型,例如MTP3,ISUP,SCCP,

TcAP等,并且能识别特定的SCN协议。

口能和IP一起,提供原先ScN低层所提定的相关功能,包括:流量控制,消

息的有序发送,差错检测,治愈能力,重传,纠错,以及检测对端实体的状态等。

口支持复用功能,即在单个信令传输会话中传输多个高层scN会话。

口能提供安全机制;针对网络拥塞,拥有一套拥塞避免的方案。

为了不使整个过程复杂化,最初幂望采用目前广泛使用TcP[4],因为它几乎在所有的操作系统上实现了,并且已经十分成熟,但是它本身的固有缺陷并不适合PSTN信令在IP上的传送:在初始化的过程中容易受到Dos(DenialofService)攻击;由于线头阻塞(head—of一1ine)而引入不必要的时延;TcP套接字不支持多宿性;TCP的扩展性受到内核的限制等。

在TCP上修改以满足CTP的要求显得异常困难,所以SIGTRAN工作组成员们决定重新设计一种新的传输协议,直接运行于uDP[5]上,并且对cTP提出了新的要求:能探测PMTU(PathMaximumTransferUnit);支持多流性(Multi—Streaming):能绑定多个用户消息在单个包中。

在1998年orlandolETF会议上,提出了几个方案:

≯RUDP(ReliableUDP):支持数据确认和重传机制,没有提供拥塞避免算法,

也不支持多宿性(Multi.Homing)。

》T,uDP(UDPforTCAP):支持流量控制和可靠数据传输

》SSTP(simpleSCCPTurmelingProtoc01):由CSIP(ConnectionlessSCCPoverIP

Ad印tationLayer)发展而来,可以在UDP或TCP上运行。

≯PuRDET:运行在UDP之上,提供序列发送,流量控制,协议标示符,差错重

传和链路检测。

这些协议最终都没有被采用,sIGTRAN工作组同时也考虑了ITu—T的一些协议,如sscOP(servicespecificcorulection.OrientedProtoc01)、H.323附录E、甚2

南京邮屯学院硕士学位论文第一章引言至是RTP,但也都没有被选中。

接着,由RalldaIlR.stewan和QiaobingXie提交的MDTP(Multi-Net’ⅣorkData甜amTransmissionPro幻c01)被sIGTRAN工作组选中。MDTP是在1997年设计的,独立于sIGTRAN工作组,它用来解决TcP存在的一些弱点。在最初的设计中,MDTP是运行在uDP之上的应用层协议,不过刚好能满足cTP的大部分要求,它是唯一支持多宿性并能避免HOL阻塞的协议,而且已经有了性能类似TcP的实现。在后来的10个月中,MDTP经历了8个版本的更新,但最终未能成为RFc。

最后,sIGTRAN工作组在MDTP的基础上制定了scTP来替代∞TP,sCTP开始是simpleco“trolTransportProtocol的缩略词,因为sCTP其实不简单而且也并不仅用于控制消息的传输,所以更改为Si印alingCommonTr锄sponProtoc01,然而在第9个版本,最终命名为stre锄ControlTralls口onProtocol。

从MDTP演变到SCTP,协议内容发生了很大变动。相对于MDTP,ScTP完全改变了协议数据报头,内部的数据结构变得更具扩展性,采用cookie机制来有效抵御攻击,继承了TCP的拥塞控制策略,在流协商、消息绑定、数据分段等方面也作了修改。2000年1月,sIGTRAN对scTP再次作了很大的变动,直接将scTP置于IP层上,这表明scTP可以在操作系统内核中实现。scTP的第一个版本草案在1999年9月发布,到2000年lO月SCTP的第14版本正式作为RFC2960[2]发布。随后,在不断的实现和应用过程中,对SCTP的修改部分将出现在implementerguide[8]中。2001年2月,对SCTP协议的讨论从SIGTRAN工作组

Areaw。rking转移到IETF的另一个工作组TsVwG(TransportGroup),scTP也

从一个专门传输信令的协议变为一个通用的传输层协议,并且可以被广泛的应用程序使用。

南京邮电学院硕士学位论文第二章scTP协议概述

第二章SCTP协议概述

2.1SCTP的主要特征

scTP作为传输层协议,具有一些独特的特征使得它在传输层的竞争中占有一席之地,其中两个显著特征是:多宿性(Multi-homing)和多流性(Multi—stre锄ing)[3]。

上层用户考个凄

,,、、J.。层用户

JIJUL,,、,JU“

‘ 一4

SCTF~+SCTP关联…SCTP

痈《面溶:.

IPTp

跫《堕9节

多个接d

图2.1scTP端点的多宿性和多流性

2.1.1多宿性(Multi-homing)

类似于TcP连接,scTP中两个端点之间的通信关系称作关联(Association)。在TcP中,连接(Connection)是由一对传输层地址(IP地址和端口号)来识别的,一个应用程序只能绑定一个IP地址到一个主机,所以当该IP地址对应的网卡接口发生故障,那么这个TCP连接就中断了,需要重新建立新的TCP连接才能继续通信,这样就大大降低了TCP连接的可靠性。

SCTP多宿性就是支持SCTP端点可以有多个IP地址,在关联初始化的过程中,ScTP端点会交换IP地址列表,其中每个地址都可以用来发送和接受消息,而且会在地址列表中选择一个地址作为主地址,所有数据块在正常传输情况下都发送到这个目的地址。当发送到主地址的数据连续失败超过系统规定的某个闽值后(见3.4节),主地址就会被认为是不可达,然后从备用地址中选择一个可用地址作为新的主地址,重传发送失败的数据。ScTP的多宿性提供了一定的冗余度,避免了端点之间建立的关联受到潜在网络故障的影响,当某条路径或对端的某个接口出

南京邮电学院硕士学位论文第二章scTP协议{既述现故障时,ScTP端点可以将流量切换到另一个IP地址上,提高了数据传输的连续性和可靠性,并且减少了延时。

2.1.2多流性(Multi_streaming)

在RFc2960[2]中,流(Stre锄)的定义就是关联中的一个单向逻辑信道,可以顺序传送用户消息,也可以提供无序传送业务。多流性就是可以将用户数据分发到单个关联中的多个scTP流中传输,这些流都是相互独立。

虽然TcP能提供有序发送,但是它的过于严格的有序数据发送对于某些应用来说是个限制。TcP是面向字节流的,无法识别各个消息的首尾,所以只能对整个消息流进行统一管理,而且必须严格按照发送时的顺序将数据发送到对端的上层用户。如果TcP流中前面的消息丢失了,那么后面的消息即使是不相关的也会被阻塞,这种情况就是线头阻塞(HOL,Head.Of-Line)。

scTP避免了HOL阻塞,不同的消息在不同的流中传输,如果某个流中消息丢失,它会缓冲已经接收到的数据,直到收到重传的数据,而不会影响关联中的其他流的传输。

如果在网上冲浪,向一个HTTP服务器请求下载一个web页面,其中通常包括几种不同的文件类型,文本,图像或者声音。如图2.2,假设,作为响应,服务器发送3个小文件到客户机,每个文件由两个报文组成,其中文件1的第一个报文丢失了。如果三个文件都在一个TCP连接中发送,因为第一个报文丢失了,所以即使后面的报文都到达客户机,按照TcP的严格有序发送的规定,文件2和3也不能发送到上层用户。这就出现了线头阻塞。

咖。田田△△靴

圈2.2单个TcP连接传输web页面

一般,在处理HTTP请求时,客户机会向服务器打开多个TcP连接(图2.3)。每个独立的连接传输一个文件,文件传输完毕就关闭。这种情况下,不会出现线

南京邮电学院硕士学位论文第二章ScTP协议概述头阻塞,除了文件l,其他文件都能发送到客户机的上层用户。可是,多个TCP连接不仅在打开和关闭的时候引入了时延,而且浪费了系统和网络资源。每个服务器同时能进行的TCP连接是有限的,一个客户机占用多个TcP连接降低了服务器能服务的总的客户机数。

TCP甩户TcP用户

23

口面

田△

田△

己发送已发送

图2.3多个TcP连接传输w曲页面

在scTP中,可以使用一个关联中的多个流来传输不同的文件(图2.4)。这样可以节省资源,每个客户机最多只占用~个关联,而且所有的流属于同一个关联,他们共享相同的拥塞控制机制。对于TCP所建立的多个连接来说,每个连接都不知道和它相关的其它连接的存在,所以需要维持不同的拥塞控制参数,而且使得客户机占用过多的带宽。

SCTP用户

嘟流O流1流3

口口

曰△

④田△

缓冲已发送已发送

圈2.4单一scTP关联(多个流)传输web页面

scTP关联可以包括多个呼叫,分别在不同的流中传输不同呼叫的信令消息,各个呼叫信令消息的延时和丢失情况不会影响关联中的其他呼叫。在电视会议中,可以在不同的流中传输语音和图像,即使网络链路没有足够带宽传输图像,也可以先听到语音。

scTP不仅可以提供有序的传输,也可以提供无序数据传输,同样可以解决线头阻塞问题。在DATA块中,有三个标志位,其中一个U标志就是无序标志。在发端一收到u比特置位的消息,就表明是无序消息,可以直接发送给上层用户。

南京邮电学院硕士学位论文第二章sCTP协议概述这种功能类似于uDP,而且这些无序消息可以进行分段并且在目的地正确重组。

综上所述,ScTPDATA块(见2.2.1节)可以在三个层次上有序发送:

用户消息层:依赖于DATA块中的B(Beginning)比特、E(Ending)比特以及

TsN(传输序列号),所有的DATA块包含了一个大的用户消息的不同部分,在目的端排序后送往上层用户。

流层:依赖于ssN(流序列号)和流标示符,DATA块中的用户消息在流中有

序发送。不同流的DATA块之间没有关系,所以不需要有序发送,而无序消息总是一到目的地就被送往上层用户,所以也不需要排序。

关联层:依赖于TsN,所有的DATA块可以在同一个关联中有序发送。

基于这三种不同层次的有序发送,不管用户消息是不是需要分段,都可以严格有序,或者部分有序,或者完全无序地发送到收端。

2.2ScTP包格式

SCTP公共头

块类型块标志块长度J块1

块数据块/数据块)

类型=0保留.UBE长度J

传输序列号(TSN)

流标示符流序列号(SSN)(数据块)

负载协议标示符

用户数据1

图2.5ScTP包格式

TcP是面向比特流的,它总是将数据传输当作是没有结构的字节序列。因此应用程序必须在消息中加入自己的记录来标记TCP字节流的边界,增加了应用程

南京邮电学院硕士学位论文第二章SCTP协注概述序的复杂性。而ScTP是面向消息的,在不同的各个消息边界之间允许定帧。

每个SCTP包都是由一个公共头和N(N>=1)块(包括控制块和数据块)所构成的,N是由网络的MTu(见3.2节)所决定的,控制块必须在数据块的前面。公共头包括四个部分(图2.5):源端口号,日的端口号,验证标签和校验和(见Z.6节)。其中32位的验证标签是用来验证接收到的scTP包的有效性。每个块都由四个域组成:块类型域,块标志域,块长度域和块数据域。

表2.1中列出了scTP协议中所有的块名称和块类型值之间的对应关系。

块类型块名称块类型值

INIT0xOl

关INITACK0x02

联COOKI£ECHOOxOA

控C00KIEACK0x0B

制SHUTDOWN0x07

消SHUTDO轷NACKOx08

息SHUTDOWNCOMPLETEOx0E

ABORT0x06

数据传DATAOx。o

送消息SACKOx03

路径管HEARTBEATOx04

理消息HEARl’BEATACKOx05

异常消息ERROR0x09

ASCoNF0xCl

扩展消息ASCONFACK0x80

FORWARDTSN0xC0

表2.1scTP块名称和块类型值之间的对应关系

如图2.5所示,DATA数据块的类型值为O。标志域占1个字节,其中保留域的5比特赋值为全零,其他3比特依次为u(unordered)比特、B(Beginning)

南京邮电学院硕士学位论文第二章scTP协议概述比特和E(Ending)比特。u比特表示消息时否要求顺序发送,如果U=1,表明这是一个无序的数据块,那么它就没有流序列号(SSN),接收端可以忽略SSN域。B比特和E比特一起用来表示用户数据分段的情况,如表2.2。

BE分段在源用户消息中的位置

10用户消息的第一片分段

OO用户消息的中间分段

Ol用户消息的最后一片分段

11用户消息没有进行分段

表2.2DATA块中的分段标志

TsN的范围在0到(2”一1)之间,它保证数据发送和接收顺序的一致性,SCTP的TSN类似于TCP的序列号,但是前者是以DATA块来计数的,而TCP的序列号是以字节来计数的。流标识和流序列号的使用则保证了上层用户发送和接收数据的一致性。如果用户数据分段,各段消息块中的流标识和流内序列号不变。

负载协议标示符用来标识scTP上层用户。用户数据就是确切上层用户想发送的消息。目前,根据SIGTRAN定义(见5.3.2节),scTP支持以下一些适配层协议,它们对应的负载协议标示符值见表2.3。

适配层协议负载协议标示符值

M2PA5

M2UA2

M3UA3

IUAl

TUA4

V5UA6

DUAlO

表2.3适配层协议及其对应标示符值

TsN和sSN使得SCTP在数据传输和数据发送之间实现了相互独立。TSN管理消息的传输和发现消息的丢失;另一个是流标识符/SsN对,用于决定接收数据的发送序列号。这种独立性机制能让接收者立即发现传输序列中出现的间隙,如果某个流收到的消息出错了,接收者仍然可以将未出错的流中的信息发送到上层9

南京邮电学院硕士学位论文第二章scTP协议概述用户,将出错流中的消息存储,直到收到重传的新的数据。

2,2.2初始化消息(INIT)和初始化确认消息(INITAcK)

INIT和INITAcK的消息结构一样,它们都有必备参数:初始标签,接收窗口(arwnd),出流数,入流数,初始TSN以及可选参数列表。两者的不同之处就是可选参数。

J初始标签l

1接收窗口(a_rwnd)l

I初始TsNf

【可选/可变长度参数列表l

图2.6INIT和INITAcK的消息结构

初始标签:它是随机产生的不为零的值,如果接收端收到初始标签为零的

scTP包就将视其为错误,并随后发送ABORT消息(见2.2.6)来中止关联。在关联建立之后,这个初始标签值必须放在每个scTP包中。

接收窗口(a—rwnd):表示本端为该次建立的关联所预留的接收缓冲区的大

小,以字节为单位;

●出流数(Os,OutboundStream):发送端希望在新关联中创建的出流的数目,

不能为0值;

●入流数(MIS,MaximumInboundStream):允许对端创建的最大出流的数日,

不能为O值:

●初始TSN(InitialTransmissionSequenceNumber):可以设曼为初始标签

的值,范围为0到4294967295(2”一1)。

可选参数

INIT消息包括“IPv4地址参数”、“IPv6地址参数”、“Cookie生命期增量参数”、“主机名地址参数”、“支持地址类型参数”这5个可选参数。INIT—AcK消息可选参数中不包括Cookie生命期增量参数,增加了“状态C00kie”参数和“参

南京邮电学院硕士学位论文第二章scTP协议概述数不能识别”两个参数。

一个INIT消息中可以包含多个“IPv4地址参数”和“IPv6地址参数”,这

些地址结合分组头中的端口号就构成了传输地址列表。

“支持地址类型参数”中罗列了所有本地scTP端点支持的地址的类型,其

中,IPv4标识为5,IPv6标识为6,主机名地址标识为“。

●“主机名地址参数”只能有一个,而且不能和其他地址类型一起用,如果接

收端同时收到主机名地址参数和其他地址类型参数,会忽略后者。

●“cookie生命期增量参数”是INIT的发送者因为Cookie过期错误而导致关

联建立失败之后,重新进行初始化时发送的,它建议对方使用一个更长的状态Cookie生命期。

“状态cookie参数”中记录了建立关联所需要的所有状态和参数信息,还

包含计算得到的消息认证码(MAc)字段(见2.4.3节)。

“参数不能识别”参数返回给INIT的发送者INIT块中无法识别的参数TLV

值。

在INIT和INIT—AcK消息交互过程中,两端完成了出流数的协商。如果发现对端的最大入流数小于本地原来预备创建的出流数,则本端自动将出流数减少至对端的最大入流数,并立即向上层用户汇报,由用户来决定是否要中止关联。2.2.3C00KIEECHO消息和C00KIEACK消息

scTP采用的四次握手初始化关联的过程中,除了上面介绍的INIT和INITACK之外,还有C00KIEEcHO消息和C∞KIEACK消息。它们的类型值分别为lO和1l。COOKIEECHO消息中的数据就是INITACK中的状态cookie参数。CooKIEAcK消息的块数据域是空的,它是cOoKIEEcHO的确认消息。

2.2.4心跳消息(HEARTBEAT)和心跳确认消息(HEARTBEATAcK)

HEARTBEAT和HEARTBEATACK消息用来探测路径和端点的可达性。它们都只包含一个心跳信息参数,心跳信息参数包括心跳消息发送的时间和目的端的传输地址等等,HEARTBEAT消息的发端可以利用这些信息来计算往返时间(RTT),从而更新给定目的地址的重传超时时间(RTO)。

南京邮电学院硕士学位论文第二章scTP协议概述2.2.5选择性确认消息(SACK)

不管是否TSN是否连续,SACK消息对接收到的所有数据消息都进行确认。SACK中的累积TSN确认点类似于TCP中的确认序号,但是相对于TCP确认的是字节来说,SCTP确认的是包括这个TSN在内的所有之前的DATA块。

SAcK中的不连续确认块的总数目及其每个块的起始和终止TsN用来确认失序到达的DATA,那么即使在累积TSN确认点中没有包括这些TSN,也不需要重传,提高了带宽利用率,并且可以以此判断哪些TSN表示的DATA块已经丢失,只需重传那些丢失的TSN。不连续块的起始和终止TSN是相对累积TSN确认点的差值。

SACK消息给出的若干重复TSN可以帮助SACK的接收端从输出队列中删除这些已重复发送的TsN。另外,a_rwnd可以协助SACK的接收端准确估算发送端的接收能力。

块长度I类型=3I块标志I【.。....,......,,..,...........I............................I..........,,.,.—.。。.................。....,...........Jl

I累积TsN确认点l

l接收窗口(虬rwnd)

重复的TsN数xI|不连续确认块数NII

I—-—-—-—-……

I块N的起始TsNl块1的起始TsNll块1的终止TsNI块N的终止TsNlIl

lI—————————————-…

|重复TsNx重复TsN1

图2.7SACK块的消息格式

2.2.6异常关闭消息(ABORT)和错误消息(ERROR)

ABORT消息用来紧急关闭关联。其标志域的最后比特用来指示发端是否拥有传输控制块(TCB),此消息中数据部分包括导致ABORT消息发送的若干差错原因参数。ERROR消息格式与ABORT相同。它们的块类型值分别为6和9。

南京邮电学院硕士学位论文第二章scTP协议概述

差错原因参数类型包括:无效的流标识符、缺少必备参数、c00kie过期、资源不足、地址无法解析、消息类型无法识别、无效的必备参数类型、参数类型无法识别、没有用户数据以及关联关闭过程中接收到cookie等等。

2.2.7正常关闭消息(SHUTDoWN、SHUTDoWNACK和SHUTDoWNCoMPLETE)

这三个消息协作完成关联正常关cjl的过程,它们的块类型值分别为7,8和14。SHUTDo_lvN消息中包含有累积TSN确认点参数,后两者没有消息体,SHUTDOwNACK为SHuTDOwN的确认,SHUTDOwNCOMPLETE为SHUTD0wNACK的确认。2.2.8动态地址配置消息(Asc0NF和Asc0NFAcK)

Asc0NF和AScONFAcK消息是SCTP新增的两个消息[9],用于重新配置(增加/删除)IP地址或者请求对端重新设置主路径,它们的块类型值分别为Oxcl和Ox80。ASCONF消息体包括序列号、地址参数以及ASCONF参数列表。序列号唯一标识AscONF消息,是连接AscONFAcK消息与ASc0NF消息的纽带;地址参数表明ASCONF消息的发送者:AScoNF参数以T—L—V的形式请求各种地址操作,包括增加IP地址、删除IP地址、修改主要目的地址等等。ASCoNFACK消息体包括序列号和若干AScONF响应参数。ASCoNF响应参数,就是对ASCONF消息中提出的地址操作结果的通告,或者成功,或者失败的理由。

2,2.9转发累积TSN块(FORwARDTSN)

FORwARDTSN消息是在SCTP部分可靠性扩展中提出的[10],它的块类型值为0xC0。它是数据的发送者用来通知接收者将它的累积TSN确认点往后调整,因为某些数据块中的TSN发送者不需要传输或考重传。

南京邮电学院硕上学位论文第二章scTP协泌概述

I堕!I堕堕壁型量!I

:一一一一一一一一一一

t:1

图2.8转发累积TsN块

2.3SC1.P的有限状态机模型

和大多数协议一样,SCTP可以用一个理论模型来解释,那就是有限状态机。图2.9就是scTP的有限状态机,其中,圆表示状态,箭头表示状态之间的转移,每个转移上的标签表示ScTP所接收到的引起转移的原因以及所作出的响应,“/”前面的内容为接收到的控制块,“/”后面的内容为响应控制块,“【】”中的为原语调用。

sCTP有限状态机一共有8个状态:cLOSED、COOKIE—wAIT、CooKIE—EcHOED、ESTABLISHED、SHUTDOWN—PENGDING、SHUTDOWN—RECEIVED、SHUTDOWN—SENT、sHuTDOwN—ACK—sENT。在整个SCTP关联的生命周期中,SCTP端点根据不同的事件从一个状态过渡到另一个状态,完成了关联的建立,数据的传输以及最后的关闭关联的过程。

其中,会引起SCTP端点状态过渡主要有三个原因:

●SCTP用户的原语调用,例如,[ASSOCIATE]、[ABORT]、[SHuTDowN]等。●接收到各个控制块,例如,INIT、CooKIEECHO、ABORT、SHuTDOwN等。 各种超时事件,SCTP有几个计时器:T卜init计时器,T卜Cookie计时

器、T2一shutdown计时器以及T3一rtx计时器。14

南京邮电学院硕士学位论文第二章scTP协议概述

S删TDoj州1)SHUTDowN

ACK/COMPLETE/

SHUTDOWN

CoMPLETE

2)SHUTDOWN

ACK/

S删TD0wN

COMPLETE

图2.9s口P的有限状态机

2.4SCTP关联的建立和关闭过程

2,4.1关联建立过程

TCP初始化采用的是“三次握手”,但是经常遇到各种DoS(Denialof15

南京邮电学院硕士学位论文第二蕈SCTP协议概述service)攻击(见3.1.4节),为了防止Dos,SCTP采用了“四次握手”t并引入了“Cookie”机制,其中涉及到四个消息序列:INIT,INITAcK,COOKIEEcHO,cooKIEAcK。scTP初始化过程如图2.10所示,假设两个端点都是初始处于CLOS肋状态:

在时间点l,scTP的上层用户调用Ass0CIATE原语初始化关联,端点A发送INIT块给端点z。在INIT块中,必须提供它的初始标签Tag_A。发送INIT后,端点A启动T卜init计时器,并进入cOOKIE—wAIT状态。

在时间点2,端点Z建立临时TcB和cookie—Z,立即发送lNITACK块给端点A。在INITAcK块中,端点z必须设置它的验证标签为Tag—A,同时提供它自己的初始标签Tag—z,最重要的是必须包括Cookie-Z,然后删除临时TCB。该INITAcK块的目的IP地址必须设置为所响应的INIT块的源IP地址,

在时间点3,端点A收到端点z的INITACK块,端点A立即取消T卜init计时器并且离开状态cooKIE—wAIT,然后发送c00KIEECH0块,其中必须包括在INITAcK块中接收到的Cookie—z,同时启动T1一cookie计时器。最后进入状态COOKIE—ECHOED。

在时间点4,端点Z接验证端点A发出的C00KIEECHO块。建立TCB,进入状态EsTABLIsHED,发送cooKIEAcK包。通知上层用户关联初始化成功。

圈2.10SCTP初始化过程的“四次握手”

在时间点5,端点A接收到端点Z发出的C00KIEACK。端点A从状态

南京邮电学院硕士学位论文第-_二章scTP凯议概述cOOKIE—EcHOED到状态EsTABLIsHED,取消T卜cookie计时器。通知上层用户关联初始化成功。

为了支持端点多宿性,在INIT块和INITACK块中交换了各自端点的主、备用地址列表。

2.4.2关联关闭过程

SCTP有两种关闭关联的方法:异常关闭(ABORT)和正常关闭。

异常关闭是当错误情况发生时,立即关闭关联,终止数据发送,会丢失关联两端等待队列中需要发送的所有数据。ABORT不能和任何DATA块绑定。ABORT的接收端也不能对ABORT的发送端有任何响应,在检验了验证标签后,删除相应关联的TCB,释放资源,并向上层用户报告“异常关闭”。

正常关闭是把关联两端点各自队列中等待发送的数据发送完毕并且接收成功后才关闭关联,采用3个消息的过程:SHUTDOwN,SHUTDowNACK,SHUTD0wNCoMPL£TE。sCTP关联正常关闭过程如图2.“所示,假设两个端点正在交换数据,都是处于ESTABLISHED状态:

在时间点l之前,端点A的上层用户希望终止和端点Z的关联,发出SHuTDOwN原语。端点A迸入状态SHUTDOwN—PENDING,停止接收来自上层用户的数据,检查输出队列中是否有数据等待发送,若有,继续发送队列中的数据以及需要重传的数据。

在时间点2,端点A接收到端点z的确认包。当所有的数据都被确认后,端点A发送SHUTDowN块给端点z,其中的累积TSN确认点为端点A从端点Z接收到的最后的TSN。然后启动T2一shutdown计时器,进入状态SHUTDowN—SENT。如果TSN中有间隙或有重复的TSN,可以和SHUTD0wN块一起发送SACK块。

在时间点3,端点Z接收到SHuTDOwN块,进入状态SHUTDOwN—REcEIVED,停止接收来自上层用户的数据,验证是否还有数据在等待队列中需要发送以及已发出的数据是否都有确认,如果还有数据需要发送或者需要重传数据,则继续发送数据。

本文来源:https://www.bwwdw.com/article/g4b1.html

Top