ARQ and Flow Control Protocols
PDU(Protocol Data Units)
– DATA:(来自应用层的)请求数据/确认信息
– PCI(protocol control information): header, checksum (CRC)
ARQ(Automatic Repeat Request)(4种)
• Stop-and-wait (Idle-Request)
• Continuous- Request
• Go-back-N
• Selective-retransmit (selective-acknowledgement)
Flow Control(2种)
Reliable Transport
- 全部数据
- 好数据
- 好的顺序
1. Idle Request
Tx:Transmitter
Rx:Receiver
ACK:Acknowledgement
-
流程:
Tx发送一个PDU(因为只发送一个所以没有顺序问题)到Rx,同时启动Timer,Rx收到后检查CRC,如果good:Rx返回ACK到Tx作为之前数据的确认。Timer过时后仍未收到回复,重新发送。 -
问题:
- Rx如何识别重复数据?—>PDU附带一位序列号SN(sequence numbers)(new/re)
- Tx如何识别old ACK:Tx的Timer很短,没收到ACK就过时了,因此Tx重新发送,Tx将迟到的ACK当作对此次重发的回应。—>ACK附带一位序列号(new/re)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5u1V6xj2-1639628007800)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70.png)]
2. Continuous Request
增加信道利用率(Channel utilization)
- pipelining(流水线)
- Capacity of “pipe”: data-rate × RTT(Round Trip Time,PDU+ACK来回的时间)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2asXD3mW-1639628007802)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-16395892701882.png)]
TX produces data faster than Rx can process it?—>使用发送窗口与接收窗口
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q6sYuz0i-1639628007802)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-16395900056024.png)]
Re-transmission strategies
1. Go-back-N
一旦没收到或收到坏PDU,停止返回ACK,直到重新接收
造成传输浪费(重新发送lost/corrupt后的所有数据)
要求modulus>window
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ibtpDpW7-1639628007803)(D:\photo\photolibrary\image-20211216014747767.png)]
此时ACK为积累确认
2. Pure Selective Re-transmission
即使PDU lost,Rx仍然发送后续ACK并等待重传。TX在ACK中看到“洞”,在timer过时后尝试修复洞。RX在交付数据之前等待丢失的PDU(洞后的数据暂存在Rx的缓存中)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZE8uUA1v-1639628007803)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-16395912188456.png)]
此时ACK为非积累确认
减少Tx重发的代价–>增加了ACK的次数
3. Selective Re-transmission Variation(变式)
此时ACK变成了累计确认!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KPPIFfqv-1639628007804)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-16395913912178.png)]
一旦没收到或收到坏PDU(此例为2),停止返回ACK,洞后的数据暂存在Rx的缓存中并“累加”,当2、3、4、5的timer陆续过时后Tx重发, Rx收到2后返回ACK5,表示已收到5及以前的数据,Tx收到ACK后停止重发
要求m>2W-1:
假设序号最大为7即0,1,2,3,4,5,6,7,发送窗口大小为5,当发送窗口发送0,1,2,3,4后,假设接收窗口全部收到,则接收窗口向前移动到5,接收窗口期望接收5,6,7,0,1;若发送窗口并没接收到任何ACK,所以发送窗口重发0,1,2,3,4此时接收窗口会以为重发的0,1是新的分组。
问题
重发前的PDU数据很久之后传输到了, 但是此时编码复用了, 存在问题
解决办法:给PDU设置TTL
Full Duplex ServiceL: 全双工
Flow control
- Rx controls Tx PDU rate
- RNR: Receiver Not Ready(Tx收到后停止发送,直到收到RR)
- RR: Receiver Ready
- HWM: (buffer使用率过高的门限)
– “high” threshold send RNR(receiver not ready) - LWM: (buffer使用率过低的门限)
– “low” threshold send RR(receiver ready)
• HWM: set low for safety(给RNR足够的时间到达Tx),因为如果RNR loss: RX overrun
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6F29hJKl-1639628007805)(D:\photo\photolibrary\image-20211216021030891.png)]
图中黑色柱状图表示buffer可用的剩余空间, 空间少时对应HWM(buffer使用率过高的门限); 空间多时对应LWM(buffer使用率过低的门限);
- Sliding Window 接收方ACK中含有的信息改变发送方的window size
-
Rx发送ACK改变Tx的window size
– reduce window to 1: stop-and-wait
– other window sizes allow selective re-transmit -
ACK from Rx contains:
– SN for data to be acknowledged (A)
– window size for Tx to use (W)
Transport Layer
Router工作在网络层,Bridge工作在链路层
传输层提供end-to-end应用服务,host作为Tx和Rx可以读取传输层报表数据
传输经过很多物理层,传输层提供虚拟的端到端链接
传输层负责end-to-end flow control
TCP/IP Implementation Hierarchy
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x0Xp5fzo-1639628007806)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-163959239235410.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8kgQLQN5-1639628007806)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-163959243037712.png)]
Protocol Mux/Demux协议的复用/分用
多种应用层程序可以复用一个协议; 接收方收到后需要分用复用的协议, 拆给对应的应用层程序
Socket
IP Address + Port Number
A Socket (IP Address + Port Number) identifies a unique process entity on a host
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pVpxIt8p-1639628007807)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-163959267574614.png)]
ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构是一个非营利性的**国际组织**
包括互联网协议(IP)地址的空间分配、协议标识符的指派、通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rzn0ardT-1639628007808)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-163959280406816.png)]
TCP(Transmission Control Protocol)
Connection Oriented Protocol
- Provides reliable End-to-End transmission of transport level
- Segments delivered in order by using sequence numbers
- Retransmission to resend corrupted or lost packets
- Flow Control
- Congestion Control
virtual path:不关心网络层等,只关心终端系统(end system)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fhiz6zML-1639628007808)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-163961789287518.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Q5hpVnD-1639628007809)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-163961794368620.png)]
源端口,目标端口:所有传输层协议都有
SN:第一个随便选,后面的按顺序来。每个byte一个SN,选择第一个byte的SN作为当前段的SN
Acknowledgment Number:期望获得对方的数据的起始地址, 同时也具有对之前的数据的确认收到的功能
flag | full name | meaning |
---|---|---|
URG | urgent | 1代表header中的urgent pointer有意义 |
ACK | acknowledgement | 1代表acknowledgement number有效 |
PSH | push | PSH= 1时就尽快地交付给接收应用进程而不再等到整个缓存都填满后再向上交付 |
RST | reset | 1中止连接并重置 |
SYN | synchronise | 同步SYN= 1表示这是一个连接请求或连接接收报文 。 |
FIN | finish | FIN= 1表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。 |
Features of TCP
• Byte-stream transmission service using full-duplex buffered communication
• Connection-Oriented using 3-way hand-shake to sequence S/N in both directions
• A sliding window mechanism for both reliability through positive acknowledgement retransmission and flow control to prevent receive buffer overrun and to offset transitory network congestion.
• Congestion control
• Flags
Byte-Stream Oriented
发送端缓冲:已读入未发送,已发送未确认,空闲
接收端缓冲:已读入未提取,空闲
三个control
• Flow Control: Algorithms to prevent that the sender overruns the capacity of the receiver
• Congestion Control: Algorithms to prevent that the sender overloads the network
• Error Control: Algorithms to recover or conceal the effects from packet losses
三次握手四次分手 -TCP很体面, 分开需要单独告别,各两次
处于连接状态时, ACK需要一直为1
三次握手
ack是首部里的确认号字段
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YHzcdVYO-1639628007810)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkxNDYwNA==,size_16,color_FFFFFF,t_70-16383657550908.png)]
- seq为序号字段,标明本次报文段数据部分的第一个字节的序号
- **ack**是首部里的
确认号字段
,告诉对方我接下来应该接收的数据是从字节序号ack开始的数据 - ACK是确认位,0时
确认号字段ack
无效,1时确认号字段ack
有效 - SYN是同步位
TCP提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。
- 服务器端的资源是在完成第二次握手时分配的
- 而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NMu13CaA-1639628007810)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkxNDYwNA==,size_16,color_FFFFFF,t_70-163836650429610.png)]
以上攻击也被称为DoS(Denial of service)攻击,使服务器拒绝服务的攻击.
其中D(Distributed)DoS是指通过病毒使得大量主机执行脚本攻击服务器,造成服务器瘫痪.
TCP连接释放----四次握手
参与TCP连接的两个进程中的任何- 一个都能终止该连接。TCP连接释放的过程通常称为四次握手
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3wX9Cxbr-1639628007811)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkxNDYwNA==,size_16,color_FFFFFF,t_70-163841266749512.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QmSAcisv-1639628007812)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkxNDYwNA==,size_16,color_FFFFFF,t_70-163841269482714.png)]
-
客户机打算关闭连接时,向其TCP发送一个连接释放报文段, 并停止发送数据,主动关闭TCP连接,该报文段的FIN标志位被置1,
seq=u, 它等于前面已传送过的数据的最后一个字节的序号加1
(FIN报文段即使不携带数据,也要消耗一个序号)。TCP 是全双工的,即可以想象为一条TCP连接上有两条数据通路。
发送FIN报文时,发送FIN的一端不能再发送数据,即关闭了其中一条数据通路,但对方还可以发送数据。
-
服务器收到连接释放报文段后即发出确认,
确认号是ack=u+1,而这个报文段自己的序号是v,等于它前面已传送过的数据的最后一个字节的序号加1
。但服务器若发送数据,客户机仍要接收,即
从服务器到客户机这个方向的连接并未关闭
。 -
:若服务器已经没有要向客户机发送的数据,就通知TCP释放连接,此时其
发出FIN= 1的连接释放报文段
。 -
客户机收到连接释放报文段后,必须发出确认
。在确认报文段中,ACK字段被置为1,确认号ack=w+1,序号seq=u+1.此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL后,A才进入连接关闭状态
。
TCP连接建立和释放的总结如下
连接建立。分为3步:
①SYN=1, ACK=0, seq=x。
②SYN=1, ACK=1, seq=y, ack=x+1。
③SYN=0, ACK=1,seq=x+1, ack=y+1。
连接阶段 | SYN | ACK | seq序号字段 | ack确认号字段 (希望获得的对方字段值,此前的已经收到) |
---|---|---|---|---|
1(client) | 1 | 0 | x | |
2(server) | 1 | 1 | y | x+1 |
3(client) | 0 | 1 | x+1 | y+1 |
释放连接。分为4步:
①FIN=1, seq= u
②ACK=1, seq=v, ack=u+1。
③FIN=1,ACK=1, seq=w,ack=u+1。
④ACK=1, seq=u+1, ack=w+ 1。
释放阶段 | FIN | ACK | seq序号字段 | ack确认号字段 (希望获得的对方字段值,此前的已经收到) |
---|---|---|---|---|
1(client) | 1 | 0 | u | |
2(server) | 0 | 1 | v | u+1 |
3(server) | 1 | 0 | w | u+1 |
4(client) | 0 | 1 | u+1 | w+1 |
ACK为累计确认(accumulative acknowledgement)
问题1:如果段lost
Rx出现洞,继续接收并返回ACK,将接下来的所有ACK( duplicate acknowledgements)的SN设为洞的SN,尝试修复洞
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kFLDU0cq-1639628007812)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-163961937761322.png)]
问题2:800段比700段先到达(B视角)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T3GcY1em-1639628007813)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-163961948640424.png)]
问题3:700段lost(A视角 )
Tx发出段,同时启动timer,在timer过时前收到ACK,段将从window中移除。没有收到ACK前,将一直保存在缓存中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h6W956wx-1639628007813)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-163961992140226.png)]
Summary
-
The number of segments that can be in-transit at any point in time is governed by a sliding window flow control mechanism.The “width” of the window is set by the effective window parameter
在任何时间点可以传输的段数由滑动窗口流量控制(sliding window flow control)机制控制。窗口的“宽度”由TCP header中的windows有效窗口参数设置
-
Each transmitted segment carries the sequence number of the first byte of data held within that segment.TCP header的sequence number数据的第一个字节的序列号。
-
Assuming the segments are received in order, the destination returns an acknowledgement to the originator containing an acknowledgement number set to the sequence number of the last contiguous byte received plus one
ackonwledged number表示对于对方下一次发送的期望, 同时兼有对之前的数据的确认
-
If segments are received out of sequence, the acknowledgement number returned will remain at the same value for subsequent acknowledgements until the complete sequence is received.This gives rise to duplicate acknowledgements如果段被乱序接收,则返回的确认编号将保持为后续确认的相同值,直到接收到完整序列。这会导致重复确认
Sliding Window
应用于Tx
- Byte-Stream Oriented
- SN for each byte
implement in software
三个指针
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E3dzWTE3-1639628007814)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-163962210005028.png)]
如何设置window size:
effective window size = min(advertised window | congestion window)
Congestion Control
三个phase
SS(Slow Start):从1 开始,每轮指数增加,直到到达预设阈值
AI(Addictive Increase):线性增一,直到出现data lost(Congestion )
MD(Multiplicative Decrease):Time out(SS)或 3ACK(AI)触发
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qy7RVkVi-1639628007814)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkxNDYwNA==,size_16,color_FFFFFF,t_70-163841983551338.png)]
-
TCP Tahoe: 发生Time out(No ACK),重设window size为1,新阈值设为CwndMAX/2(Congestion 发生时的window size的一半),进入SS。
-
TCP RENO: 当timer过时前连续收到三个同样的ACK(RX出现洞),也认为是Congestion ,通过MD进入AI,重设阈值为CwndMAX/ 2,重设Cwnd到阈值。
-
与TCP Tahoe相比,TCP RENO-Fast Retransmit/Fast Recovery
发生data lost/ACK lost时的timer
期望设置timer接近真实RRT(Round-Trip Time)
监视每次的RRT以修正SRTT(Smoothed-RTT (SRTT))。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KhvWVZLp-1639628007815)(D:\photo\photolibrary\20201204203940236.png)]
RTO(Retransmission Time-Out)
比SRTT长一点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Epu8su6c-1639628007816)(D:\photo\photolibrary\20201204204103515.png)]
(β提前确定, 通常为2)
使用Mean Deviation (MDEV平均偏差)改善RTO:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nkPjr4fa-1639628007816)(D:\photo\photolibrary\image-20211216112822058.png)]
Karn’s algorithm
removes ambiguities – ignore retransmitted segments(RRT)因为RRT一直在变化, 此算法移除RRT
问题一:RTO过小
ACK在timer过时后重传到达前抵达Tx,导致RTO过小
问题二:RTO过大
ACK在timer过时后重传到达后,重传的ACK抵达Tx后才到达Tx,导致RTO过大
Silly Window Syndrome(SWS)
- 传递方: 传的数据太少, 一次传输不值得
- 接收方: 接收过慢, 窗口太小(开的不够大)
解决方法:
Nagle algorithm
发送方:在以下条件下发送segment:
- A maximum-sized segment can be sent(数据达到最大segment才传输)
- All outstanding segments have been acked before small segments transmitted(除非其他全部segment已经传输完毕,才能传输小数据)
- The receiving window is at least half open(接收方窗口至少开了一半)
- The Nagle algorithm is disabled(不使用此算法可以随意传输小数据[废话])
接收方:不发送updated window除非:
- 至少开了一半
- 可以装的下一个maximum-sized segment
二、UDP(User Datagram protocol)
传输时才建立连接
非可靠
注重速度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q6Jrco93-1639628007817)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-163962664890632.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SNVhXnVo-1639628007817)(D:\photo\photolibrary\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hlcm1pX2hidw==,size_16,color_FFFFFF,t_70-163962665836534.png)]
TCP in MANET
有线网络异常通常由拥堵(congestion)导致
无限网络由移动(mobility)导致
自组织网络是高阻塞网络
TCP没有辨认阻塞和路由失败
MANET TCP-Feedback(TCP-F)
Snooze state(小睡模式) :to avoid the timeout coming from route reconstruction delay
Snooze state :避免路由重建延迟导致的超时
RFN(Route Failure Notification)/ RRN(Route Re-establishment Notification)
- upstream node (pivoting node) 发现连接中断,发送RFN(Route Failure Notification) back to SRC
- 当SRC收到RFN message,进入SNOOZE state and
- stops transmitting data
- freezes all its timers related to TCP such as retransmission timer
- pivoting node 发送 RRN(Route Re-establishment Notification) 给SRC,通知它成功的路线重新配置。 因此,恢复传输并恢复所有timer和状态变量值(Cwnd size,ssthreshold,RTT estimate)
问题
- 重新建立连接后,timer和之前的参数可能不适用于新的连接。
- RFN lost/RRN lost
MANET TCP Buffering & Sequencing(BuS)
TCP-F升级版:
- Explicit Notifications: It is used to differentiate between network congestion and route failure.(将failure和congestion的通知区分开)
- Reliable Transmission of Control Messages
- Buffering.
- Extension of Timeout Values.
- Selective Fast Retransmission.
Reliable Transmission of Control Messages
ERDN&ERRN
- ERDN (Explicit Route Disconnection Notification):传输层。由pivoting node生成,发送到TCP sender,后者进入Snooze State
- ERRN (Explicit Route Reconstruction Notification):重新建立连接后由pivoting node生成,发送到TCP sender,后者离开Snooze State,回到ESTABLISHED State,恢复timer,重新开始传输
ERRN loss
- 手段1-Source Probe:在接收到ERDN后,SRC周期性地发送探针消息,以检查pivoting node是否成功地获得了到DEST的新的部分路由。
- 手段2-ERRN重传:IN的ERRN_RET_TIMER过期后(没有收到对于ERRN的确认),IN将重传ERRN。
Buffering
连接重新建立后,TCP Receiver返回最后收到的数据段的ACK,还包含自己和中间节点的buffer status
Selective Fast Retransmission
TCP sender根据接收方的反馈恢复传输。INs从其缓冲区恢复传输。
【1,2成功,3丢失(N3不在连接之中)】
INs resume transmission from their buffers
Extension of Timeout Values
在RRC完成后,缓冲段buffered segments are in-transit.。 超时值Timeout values have to be extended at the SRC必须在SRC和路径上的节点上扩展到pivoting node,以考虑路由更改引起的延迟。