SCTP协议详解.docx
《SCTP协议详解.docx》由会员分享,可在线阅读,更多相关《SCTP协议详解.docx(12页珍藏版)》请在冰点文库上搜索。
![SCTP协议详解.docx](https://file1.bingdoc.com/fileroot1/2023-6/9/368873cc-b580-4729-b2d4-e92b48a46309/368873cc-b580-4729-b2d4-e92b48a463091.gif)
SCTP协议详解
SCTP»«ff解
SCTP被視为一个传输层协SL它的上层为SCTP用户应用•下层作为分组网络。
在SIGTRAN应用中,SCTP上层用户是S信令的适配模ft{»M2UA.M3UA)9下层是IP网。
•SCTP相关术培
•sctpa能
•SCTP基本信令潼程
耳三JS
SCTP相关术培
1.传送地址
传送堆址由IP堆址、传输层协放类型和传输层端口号定义。
由于SCTP在IP上传输,所以一个SCTP传送览址由一个IP堆址加一个SCTP竭口号决定oSCTP常口号就是SCTP用来识别同一堆址上的用户•和TCP端口号是一个H念。
比如IP%址10.105.28.92和SCTP竭口号1024标识了一个传送地址,而10.105.28.93和1024剧标识了另外一个传送地址,同祥,10.105.28.92和鶴口号1023也标识了一个不同的传送览址。
2.主机和舞点
主机(HOST)主机配有一个或多个IP地址,是一个典型的精理实体。
端点(SCTPEndpoint)
端贞是SCTP的基本逻辑様念,是数据报的逻辑发送者和接收者,是一个興型的逆辑实体。
一个传送堆址(IP堆址+SCTP竭口号)唯一标识一个竭点。
一个靖点可以由多个传送堆址进行定义,但对于同一个目的常戌而言,这些传送堆址中的IP堆址可以配置成多个.但必须便用相同的SCTP端口。
例联(ASSOCIATION)(8联就是两个SCTP鶴点通过SCTP协仪规定的4步握手机卸建立起来传注的逻辑联系或者通道。
SCTP廉放規定在任何时刻两个甫点之同能且仅能建立一个例联。
由于備联由两个端点的传送地址来定义,所以通U数据配置本堆IP堆址、本itSCTP端口号、对端IP堆址、对SSCTP端口号等四个参数,可以唯一标识一个SCTP假联。
正因为如此,在GTSOFTX3000中,假联可以被看成是一条M2UA讎路或M3UAfifto
潼(Stream)灌是SCTP协玫的一个箝色术培。
SCTP偎联中的流用来指示需要按顺序递交到高的用户消息的序刃,在同一个流中的消息需要按照其触序进打递交。
严格地说,“沆”就是一个SCTP倒联中,从一个竭点對另一个常贞的单向逆Si£o-个假联是由多个单向的流组成的。
各个«20相对微立,使用流ID进fiSiH,每个浹可以单菽发送数据而不受其他浦的影咽。
4.通路(Path)和首选通路(PrimaryPath)
)1路(Path)通路是一个端点稱SCTP分组发送到对竭常康特定目的传送堆址的路由。
如果分组发送到对竭竭虑不同的目的传送览址时,不需要配置单独的通路。
首选通B(PrimaryPath)首选通路是在KikffiXT,目的堆址、浪堆址在SCTP分组中发到对酬貝的通路。
如果可以便用多个目»1«址作为到一个竭点的目的堆址,團这个SCTP竭点为多HMo如果发出SCTP分组的端点U于多归厲节贞时,如果定义了目的地址、««址,能够更好控胃响应数据挟返回的埴路利数据內被发送的接口。
一个SCTP例联的两个SCTPS点aniua置多个IP览址,沁样一个働联的两个竭点之间具有多条通路,这就是SCTPfl联的多览址性。
SCTP偶联的多堆址性是SCTP与TCP最大的不同。
一个備坎可U0g多条通路,但只有一个首选通路。
如图1所示,MGC(如GTSOFTX3000)一个端贞包插两个传送堆址(10.11.23.14:
2905和10.11.23.15:
2905),而SG一个鵡点也0SH个传送堆址(10.11.23.16:
2904#10.11.23.17:
2904)。
图1SCTPjRflH
lit两个SI胃决定了一个例联,该条通路(PathO、Path仁Path2和Path3)o根摇数据配置可以績定此4条通路的选聲方式,如图2所示。
图中定义了4条通路.而且首览通路为PathO:
PathO:
本竭传送堆址1(10.11.23.14:
2905)发送SCTP分组到对鶴传送堆址1(10.11.23.16:
2904)o
Pathl:
本竭传送堆址1(10.11.23.14:
2905)发送SCTP分组到对竭传送堆址2(10.11.23.17:
2904)o
Path2:
本端传送堆址2(10.11.23.15:
2905)发送SCTP分组到对竭传送堆址1(10.11.23.16:
2904)o
Path3:
本端传送览址2(10.11.23.15:
2905)发送SCTP分组男对竭传送堆址2(10.11.23.17:
2904)0
端贞发送的SCTP工作原理为:
本竭点传送堆址A发送的SCTP0jiS首选ii路发8對对端端点。
当首选通路出aaiB后,SCTP可以自动切換男其他备用通路上,优先切换对肃竭点的传送堆址,再次切換本竭38虑的传送堆址。
SCTP定义了0践消息(HeartBeat)。
当某条通路空用时,本SSCTP用户娶来SCTP生成相应的o践消息并通asi路发送到对常曙点,而对竭竭点必须立即发回对应的心践爾汰消息。
这种机胃放用来精簡濾量回路时1RTT(RoundTripTime)F而且可以随时监视假尿的可用情加和保持SCTPIB联的澈活状态。
图2谕定通路览择方式曲数据配置
5.TSN和SSN
传输K序号TSN(TransmissionSequenceNumber)SCTP使用TSN机胃实现敷据的请从传输。
一个(S联的一幫为本曙发送的毎个数据块ii序分配一个基于初始TSN的32位顺序号,以便对常收到时进TSN是基于护的。
液IS序号SSN(StreamSequenceNumber)
SCTP为本端在这个潼中发送的毎个数据块H序分配一个16位SSN,以便保if潼的顺序传递。
衽假联建立时,所有流中的SSN褂是从0开始。
当SSN81465535后,剧接下来的SSN为0。
TSN和SSN的分配是相互独立的。
6.拥塞窗口CWND(ConoestionWindow)
SCTP也是一个滑动窗口»«,捌塞窗口是针对每个目的览址錐护的,它会根据网络状况调节。
当目的堆址的发送未址实消息长figil其CWND时,竭胃葡停止向这个览址发送8So
7.接收窗口RWND(ReceiveWindow)
RWND用来描述一个(8联对竭的接收媛冲区大小。
假联建立垃程中,双方僉交换披ft的初始RWND。
RWND会根据数摒发送、证实的情况即时划变化。
RWND的大小限制了SCTP可以发送的数据的大小。
当RWND等于0时,SCTP还可以发送一个数据报,以便通iiil实消息得知对方缓冲区的变化,直到ISaCWND的限匍。
8.传输控HftTCB(TransmissionControlBlock)
TCB是一种部数据结构,是一个SCTP漏点为它与其他常点之同巳经启动的每一个假联生成的。
TCBggS点的所有状态、操作信息,便于维护和管理相瓯的假联。
SCTPft能
如图所示,SCTP的功能主耍包詰:
例联的建立和关团、流消息顺序递交.用户数据分段.证实和邀免JI塞、消息块绑定、分组的有效性和通路管理。
流内顺序递交
偶联的建立和关闭
用户数据分段
证实和谨免拥塞
数据块绑定
分组的有效性
通路管理
SSCTP功能示意图
仁例联的建立利关閒
(S联的建立是由SCTP用户(JDM2UA、M3UA等)发起靖*来启动的。
而且建立fi程相对于TCP连接而言比较复杂,是个“皿次提手”过程,并用對了“COOKIE”的机胃。
COOKIE是一个含有端点初始信息和91密信息的数据块,通信的双方在关联建立时需娶处理并交换,从而flttftsi的安全性,防止拒鋭股务和伪装等漕在曲攻击。
sctp提供了对ASflS的正常的关闲程序,它必须根据SCTP用户的堵求来执行.当懿SCTP也提桃一种菲正常(即中止)程序,中止程序的执打质可以根ffiSCTP用户的鎮来来启动,也可以由SCTP林放检査出差错来中止。
SCTP不支持半扌J开狀态(即一常可以在另一甫结東后址续发送S«)o无论是耶个竭点执行了关团程序・例联的两第部应停止接受从SCTP用户发来球求原垮。
2、流消息顺序递交
SCTP提Staffi报的顺序传递,顺序传連的数据报助须放在一个“ST中传递。
潼是
K序传1S的基石。
通08,sctp稱数据的iUfl传输的有序递交分fit两种不同IISosctp使用TSNJi羁实STSffi的确汰传输,使用流号和SSN(S«序号)剧实a®ffi的有序递交。
当SCTP收到数据的SSN连续的时候,SCTP聽可以將数据向SCTP用户递交.而不用等到数摒的TSN号连续以后才fiSCTP用户迪交。
当一个蘆被团塞时,期里的下一个连续的SCTP用户消息可以从另外的液上进行递交。
SCTP也提供非顺序递交的业务,接收男的用户消息可以便用这神方衣立即递交到SCTP用户,而不需娶保证其接收JI序。
3s用户数据分段
SCTPitit对传JSSBlt大PMTU(PathMaximumTransmissiONUnit)的检澳,实现在SCTP层将超大用户数据分片打內,魅免在IP层的多次分片、重组,可以减少IP层的数据负担。
在发送竭,SCTP可以对大的用户数据报进打分片以爾保SCTP数据报传递到低层时适合通路MTU(MaximumTransmissionUnit)©
在按收竭,SCTP稱分片重组为完整的用户数据报,然后传递给SCTP用户。
4、证实和厳免拥塞
证实和重传是»«8证传«nJR性的第略,SCTP也一样。
证实机制是SCTP保证传输可靠性的基石。
避免册塞(0袭了TCP的窗口机制,递行合适的潼II控劃。
?
?
SCTP在1?
数ffi(SS分片或未分片的用户数据报)发送给麻层之前顺序堆为之分配一个发送Iff#(TSNh
TSN和SSN($R序号)是相互独立的,TSN用于保11传输的可靠性,SSN用于保证流消息的II序传递。
TSN和SSN在功能上使可靠传迪和H序传递分开。
接收端11实所有收到的TSNs,即使其中有些尚未收到。
內重发功能负贾TSN的证实,还负贡拥塞消険。
5、消息块绑定
如果长度很短的用户很大一个SCTP消恩头,其传递效率会很低,因此,SCTP將几个用户数竭绑定在一个SCTP报文里面传输,以提髙带宽的利用率。
SCTP分组由公共分组头和一个/多个18息块组成,信息块可以是用户数据,也可以是SCTP控胃信息。
SCTP用户能侈可选堆使用議绑助能,决定是否将多个用户数据报攔绑在一个SCTP分组中。
为提高效率,拥塞/重发时,攔绑助能可能仍彼执行,即便用户巳经禁止H绑。
6、分组的有效性
分组的有效性是SCTP提供无差第传输的基石。
SCTP分组的公共分组头包含一个验证标签(VerificATIonTag)和一个可选的32位校验码(Checksum)。
验证标签的值由僧联两肃在例联启动时选择。
如果收男的分组中如果没有期望的骏if标签值,按收幫将丢弃这个分组,以阻止攻击和失效的SCTP分组。
校验玛由SCTP分组的发送方按置,以提供附10的保护,用来避免由网络造质的数据差策。
接收竭将丢弃內含无效的SCTP分组。
7s通路管理
发送端的SCTP用户能鸟使用一组传送地址作为SCTP分组的目的览。
SCTP管理ft能可以根据SCTP用户的指令和当甫合格的目的堆集合的可这性狀矗,为每个发送的SCTP分组选择一个目的堆传送览址。
当其他分组业务量不能完全表明可迭性时,通路管理功能可以逋址心践消息来监视對某个目的地堆址的可达性,并当任何对甫传送堆址的可达性发生变化时.向SCTP用户提通路功能也用来在IS联建立时.向对舞报告合格的本竭传送堆址集合,并扭从对竭返回的传送堆址报告给本堆的SCTP用户。
在假联建立BL为毎个SCTPis点定义一个首选通路,用来正常情况下发送SCTP分组。
在接收常,通路管理功能在处理SCTP分组前,用来動证入同的SCTP分组)8于的fl联是否存在。
SCTP基本信令浦程
1例联的建立和发送潼程
SCTP常点A启动建立債欢,并向端点B发送一个用户消息,H后箱点B向A发送两个用户消息。
(假定这些消息没有關绑和分段)。
信令沆程如图1所示。
图1倒坎建立st程消息交互图
(1)SSA必建一个数据结构TCB(传输控制块)来越述即将发起的这个假联(包含基本信息),於后向常点B发gINIT数据块。
INIT数据块中主要內詰如下參敬:
启动标签(InitiateTag):
对删证标签,如设为Tag_AoTajA是All34294967295中的一个廠机数。
输岀浹数量(OS):
本靖点期望的最大出局潼的数量。
输入SSI(MIS):
本常贞允幷入局潼的最大数量。
(2)幫点B收SINIT消息后,立即用INITACK应。
INITACK数据块中劫须
带有如下参数:
目曲堆IP堆址:
按置ffilNIT数竭块的起源IP地址。
启动标签(InitiateTag):
按置成Tag_Bo
狀态COOKIE(STATECOOKIE):
根摇例联的基本信息生fij—个TCB,不过这个TCB是一个WTCBofi个TCB生成以后,将其中的必要信息(包含一个COOKIE生成的时同戳、COOKIE的生命期)和一个本端的密钥通过RFC2401描述的算法廿算fit—个32MAC(这种廿算是不可逆的)。
功要信息和MAC组合成STATECOOKIE参数。
本常点传送堆址。
最大入局滝的数量。
最大岀局這的数量。
(3)SSA收到INITACK后,首先停止INIT定WJfCOOKIE-WAIT状去,S
后发送COOKIEECHO数据块,稠收到INITACK数据块中的STATECOOKIE参数原封带回。
最后竭点A启动COOKIE定时器并进入COOKIE-ECHOED状态。
(4)端点B收到COOKIEECHOfi据块后,进UCOOKIE»So»STATECOOKIE中的TCB部分利本端密钥根ffiRFC2401«MAC算法进打廿算.得出的MAC和STATECOOKIE中携带的MAC进行比较。
如果不同U丢弃这个消息;如果相同,J8取出TCB部分的时间欲,和当看时间是否巳经讯过TCOOKIE的生命期。
如果是,同样丢弃。
否)1根ffiTCB中的信息建立一个和端A的例联。
端点B務状态旺入ESTABLISHED,并发出COOKIEACK8据块。
竭点B0SCTP用户发送SMUNCIATIONUP通知。
(5)端戌A向螺点B发送一个DATA启3T3-RTS定时器。
DATA数据块中
必痕带有如下参数:
TSN:
DATA数据块的初始TSN。
滝标观符(StreamIdentifier,:
用户于的流,假坦澹标识符为0。
隕序鸥(StreamSequenceNumber):
所在浦中的用户数据的触序。
垓字段从0S65535o
用户数竭(UserData):
携带用户荷。
(6)端点B收SDATA数摇块后,®0SACK数抿块。
SACK数据块中必须带有如下参数:
累积证实TSN标签(CumulativeTSNAck):
竭点A的初始TSN。
间隔块(GapAckBlock):
此値为0。
甫点A收9SACK數据块后,停止T3-RTX定时器。
(7)端贞B向端贞A发送第一个DATA数据块。
DATA中必须带有如下参ft:
TSN:
常贞B发岀DATA的初始TSN。
潼标iR(StreamIdentifier):
用户于的流,标观符为0。
it隕序雪(StreamSequenceNumber):
gj在流中的用户数摒的顺序。
序玛为0。
用户数霍(UserData):
携带用户数摇曲荷。
(8)端点B向端贞A发送第二个DATA败据块。
DATA数据块中必须带有如卞参ft:
TSN:
甫点B发出DATA数摇块的初始TSN+1。
潼标Mff(StreamIdentifier):
用户XKfl于的流,标识符为0。
汕序B(StreamSequenceNumber):
R在it中的用户序。
JltHXK序玛为1。
用户数Jg(UserData):
携带用户荷。
(9)端胃A收SDATA数据块后,£0SACK数据块。
SACK数据块中必须带有如下tft:
累稅证实TSN标签(CumulativeTSNAck):
竭点B的初始TSN。
同隔块(GapAckBlock):
比值为0。
2例联关BJiS程
一个竭点退出IS务时,需要停止它的例联。
例联的停止使用S»»g:
假联的中止»程(非正常关冈)和假联的正常关冈潼程。
例联的中止(非正常关ffl)nJ以在任何未完fit期同进行,IS联的两竭蜀舍弃数据并且不提交到对端。
就种方法不考虏数摇曲安全。
的中止步骤比较简单:
发起38点向对甫曙点发送ABORT敬据块,发送的SCTP分组中助须填上对端竭虑的险证标签,而且不在ABORT数据块中搁绑任何DATA数摇;接收端点收到ABORT»据块后,进行验加标签的检査。
如果验证标签与本鶴骏证标签相同,接收常点从记录上渭除该U联,并向SCTP用户报告例联的停止。
例联的正常关团:
任何一个端点执fiiE®关0)程序时,假联的两58將停止接受从其SCTP用户发来的新数掘.并且在发送或接收到SHUTDOWN数据块时,JC分组中的数据迪交SSCTP用户。
例联的关血可以保证所有两竭的未发送、发送未证实数据得到发送和证实后再冥jtflSo
Erxipoint
(1)SHUTDOWN"
w⑵SHUTDOWNACK
⑶SHUTDOWNCOMPLETE
ErxipcMntA
图2備坎正常关团消息交互图
例联的正常关团步«®T:
(1)假联关团发起竭点A的SCTP用户BSCTP发送萌求SHUTDOWN原因。
SCTPfl联UESTABLISHED状SffASHUTDOWN-PENDING状态。
在这个状&SCTP不接受SCTP用户在这个債联上的任何数摒发送JJ求。
同Bt等待曙点A所有发送未ii实曲数竭得舅端克B的证实。
当所有幫点A发送未证实数据得男证实•!
!
旬竭胃B发送SHUTDOWN数据块。
常点A启动T2-shutdown定时器进入SHUTDOWN-SENT状态。
启3T2-shutdown定时器的目的是等待竭贞B发回的SHUTDOWN-ACK数据块,如果定时器超时,剧端点A必须重新发送SHUTDOWNSSfto
(2)常贞B收到SHUTDOWN消息后,进入SHOUTDOWN-RECEIVED状&不再接收从SCTP用户发来的的新数据.并且检査SStt的累积TSNACK字段,验证所有未完成的DATA数据块已经»SHUTDOWN的发送方接收。
当常点B所有未发送数据和发送未址实数据得到发送和证实后,发送SHUTDOWNACK数据块并启动本$T2-SHUTD0WN定时器,并且进入SHUTDOWN-ACK-SENT状杏。
如果定时器讯时了,端点BJS重新发送SHUTDOWNACK数掘块。
(3)鶴点A收到SHUTDOWNACK消息后,停止T2-shutdown定时器,并且向期点B发送SHUTDOWNPLETE数据块,并清除例联的所有圮录。
常点B收到SHUTDOWNPLFE9据块后,吻证是否处于SHUTDOWN-ACK-SENT状态。
如果不是处于垓状奈,剧丢弃该数据块;如果常点处于SHUTDOWN-ACK-SENT状态■端点B则停止T2-shutdown定时器并清除例联的所有记录,进入CLOSED狀态。