160 likes | 342 Views
A. B. 2. 滑动窗口流量控制. 工作原理. 支持有连接的 LLC 服务. 两个站 (A,B) 通过全双工链路连接 每个站为 n 个帧分配缓冲区 为每个发送的帧分配一个序号. 发送窗口 (W T ) :允许发送方连续发送的序号表; 接收窗口 (W R ) :允许接收方接收的序号表; 序号空间:序号的取值范围。. 如序号用二进制 n 位表示, 则取值范围: 0,1,2,….2 n -1. 连续 ARQ 协议的工作原理: 在发送完一个数据帧后,不是停下来等待应答帧,而是连续 再发送若干个数据帧 ……. 时 间. 重传. t f.
E N D
A B 2.滑动窗口流量控制 • 工作原理 支持有连接的LLC服务 • 两个站(A,B)通过全双工链路连接 • 每个站为n个帧分配缓冲区 • 为每个发送的帧分配一个序号 发送窗口(WT) :允许发送方连续发送的序号表; 接收窗口(WR):允许接收方接收的序号表; 序号空间:序号的取值范围。 如序号用二进制n位表示, 则取值范围:0,1,2,….2n-1
连续ARQ协议的工作原理: 在发送完一个数据帧后,不是停下来等待应答帧,而是连续 再发送若干个数据帧……... 时 间 重传 tf tout 0 1 3 4 5 2 3 4 2 5 6 A B 送主机 丢弃 送主机
因为接收方丢弃了所有的后续帧 连续ARQ协议的吞吐量: tAV=tf(1-p)+(1-p)p(tT+tf )+(1-p)p (2tT +tf )+(1-p)p (3tT +tf )…….. tAV= tf(1-p)+(1-p)p[tT(1+2p+3p ………)+tf(1+p+pp+ppp…] 1+2p+3p ………=1 /(1-p) tAV= tf(1-p)+ptT /(1-p)+ptf =tf + ptT /(1-p) 其中 tT 略大于tf+tout 吞吐量 : =1/ tAV 归一化吞吐量 = tf p的取值一般为 0.01 对于广域网 tframe=125ms, tprop=1ms. 对于卫星 tprop=250ms, tframe=250ms 2 3 2 2 2
已发送的帧 可发送帧 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 可接收帧 已接收的帧 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 • 发送窗口与接收窗口 发送的最后帧序号 发出一帧后窗口的下限前移一格 收到确认后窗口的上限前移 序列号 最后确认的帧 接收一帧后窗口的下限前移 发出确认后窗口的上限前移
RR: receive-ready RNR: receive-not-ready • 流量控制方式 RRn:准备接收从n开始的PDU; RNRn:已接收直到n-1的所有PDU,但不能再接收了。 控制发送 控制接收 发送窗口 接收窗口 每个站都保持两个窗口 双方既发数据又发确认
捎带确认与累计确认 • 捎带技术 既有数据又有确认时,将两者合在一个PDU中发送; PDU:顺序号+确认号 • 累计确认 收方可对K帧(K<WT)发一个ACK告知发方已正确接收前(k-1)帧并期待第K帧。 • 当收到的帧数大到某个值或从接收第一帧开始等待的时间超过某一定值时,要单独发ACK,以免发方超时重发。 • 当收到的第i帧有错时,则马上用NAK应答
源系统A 目标系统B 0 1 2 3 4 5 6 7 0 1 2 3 0 1 2 3 4 5 6 7 0 1 2 3 0 1 2 3 4 5 6 7 0 1 2 3 t1 t2 0 1 2 3 4 5 6 7 0 1 2 3 t3 0 1 2 3 4 5 6 7 0 1 2 3 t4 0 1 2 3 4 5 6 7 0 1 2 3 t5 0 1 2 3 4 5 6 7 0 1 2 3 0 1 2 3 4 5 6 7 0 1 2 3 0 1 2 3 4 5 6 7 0 1 2 3 t6 累计确认 0 1 2 3 4 5 6 7 0 1 2 3 F0 t0 F1 F2 RR3 F3 F4 F5 F6 RR4
7 0 7 0 7 0 6 1 6 1 6 1 5 2 5 2 5 2 4 3 4 3 4 3 连续发0~4 收到ACK1 收到ACK4 7 0 7 0 7 0 6 1 6 1 6 1 5 2 5 2 5 2 4 3 4 3 4 3 准备接收1 准备接收0 准备接收4 假设:发送窗口WT=5;接收窗口WR=1 • 滑动窗口的大小 发送窗口 接收窗口
发送窗口WT与接收窗口WR的关系 if WT >1, WR =1, then 滑动窗口协议 = 回退-N if WT >1, WR >1, then 滑动窗口协议 = 选择重传 if WT =1, then 滑动窗口协议 = 停等式
回退N协议 发送端连续发出N个帧,接收端以流水线方式顺序接收各个帧,并进行差错检测。 一旦某个帧有错,则丢弃该帧和它之后所收到的所有帧。
超时 WT 发方 0 1 2 3 4 m-1 0 1 0 1 2 3 4 m-1 0 1 收方 0 ? 回退N协议的最大发送窗口大小 假设 模m =2n,最大序号Smax = m-1 = 2n – 1 发送序号:0, 1, 2, 3, ……... 2n – 1 丢失 丢失 丢失 ACK1 ACK2 ACKm
回退N协议的最大发送窗口大小 • WT=m • WT=m-1 • WT<m-1 当确认全部丢失时易造成混肴 发送序号:0,1,2,···,m-2; 重发的第一个序号是0,而下一轮发送的第一个序号是m-1; 更不会混淆 最大发送窗口为:WT = 2n – 1 = m - 1
选择重传协议 在回退N-ARQ基础上,当接收端发现其中有出错的帧时,它有选择地反馈要求重发的信息,使发送端只重发出错的帧,其余(N-1)个正确帧被接收端先存储起来。
重传 1 2 3 4 5 6 7 3 8 9 10 7 11 12 13 14 正常传输 重传 ACK NAK 1 2 3 4 5 6 7 3 8 9 10 7 11 12 出错 选择重传协议 发方 NAK7 ACK2 NAK3 收方
超时 WT 重传w个帧 发方 0 1 2 3 4 w-1 0 1 w-1 收方 0 1 2 3 4 w-1 0 1 w-1 等待接收 允许接收w个 WR 选择重传协议的最大发送窗口大小 假设: 模m =2n,最大序号Smax = m-1 = 2n – 1 序号空间:0, 1, 2, 3, ……... 2n – 1(m-1); WT=WR = w; 丢失 丢失 丢失 ACK1 ACK2 ACKm 0 w,(w+1),(w+2), … 2w-1
选择重传协议的最大发送窗口大小 发站发出w个帧(0,1,…w-1)后等待应答;接收站正确收到W个帧后给出ACK; 接收窗口成为w~2w-1;再收到落在w~2w-1之间的帧都认为是合法编号的新帧。 If 0 ~ w-1帧的 ACK丢失, then 发送端超时重发0, 1... w-1;为了避免序号混淆,应使 m – 1 ≥2w - 1(即2w - 1不能重复以前的序号) 收发窗口的最大值:w ≤ m/2 = 2n-1