IEC62439PRP滑动下拉窗口丢包算法详解
来源:互联网 发布:软件测试员工资 编辑:程序博客网 时间:2024/04/28 15:33
IEC62439PRP滑动下拉窗口丢包算法详解
IEC 62439
Edition 1.0 2008-05
6.1.6.3.6 丢包算法
接收者假设来自DANP的帧是按递增序列号发送的。期待接收的下一帧的序列号保存在变量ExpectedSeqA。对于B网类似,为变量ExpectedSeqB。
在接收处,正确的序列号可以通过比较ExpectedSeqA进行检测,它是包含在接收RCT中的序列号,视为当前序列号,名为CurrentSeqA。无论结果如何,ExpectedSeqA都会被设置成比CurrentSeqA大一的值,以便在该线路上检测下一个期待的序列号。这同样适用于LAN_B线路上的ExpectedSeqB 和CurrentSeqB变量。
在两个网络上都各自保持了一个连续序列号的滑动下拉窗口,其上界是ExpectedSeqA(局域网上下一个期待的序列号),不包括ExpectedSeqA,下界为StartSeqA(导致在此局域网上要丢弃的最低序列号),图27显示了LAN_A滑动下拉窗口,LAN_B类似。
图 27 – PRP LAN_A上的下拉窗口
检测了正确的序列号后,接收者决定是否丢弃帧。假设LAN_A建立了一个非空下拉窗口dropWinodwA(如图27),一个从LAN_B接收的其当前序号CurrentSeqB落在LAN_A的dropWinodwA中帧被丢弃(图27中的dropB),所有其他情形,该帧被保留并转发到上面的协议层(图27中的keepB)。
丢弃帧(图27中的dropB)会缩小LAN_A的下拉窗口,直到没有更多来自B的带有较早序列号的帧,于是StartSeqA被增加到接收的CurrentSeqB大一的值。而且,B的下拉窗口被重置为大小0(StartSeqB = ExpectedSeqB),因为B明显落后A,因此没有来自A的帧被丢弃,如图28所示。
Figure 28 – PRP 丢弃后窗口减小示意图
在图28中的情形下,如果一些按顺序到来的帧超过同一个LAN_A,而LAN_B没有,
从他们的CurrentSeqA超出LAN_B的下拉窗口起,他们会一直保持,且LAN_A的下拉窗口会增加一个位置(译注:应该是说ExpectedSeqA会不断增长,从而导致窗口位置增加,而StartSeqA因为超出dropWindowB,会一直保持,直到如后的情形)。如果只有超过LAN_A的帧到来而没有LAN_B的,当下拉窗口达到最大尺寸时,StartSeqA也会增加到滑动下拉窗口。(以使滑动窗口不超过最大尺寸)。
当一个接收的帧在其他LAN的下拉窗口之外时,它被保持并且该线上的下拉窗口的尺寸被减小到1,意思为其他线上仅会有一个相同序号的帧会被丢弃,而其他线路的下拉窗口被复位为0,也就是说没有帧被丢弃。如图29所示。
Figure 29 – PRP 来自 LAN_B的帧不会被丢弃
最常见的情形是两条线路是同步的且下拉窗口都被减小为0,意思为最先到来的帧被保持而其下拉窗口打开为1,从而仅允许一个相同序列号的帧作为已经收到的帧(译注:一条线路打开了一个窗口,另一个相同序列号的帧将落在这个窗口里,从而被丢弃)。如图30所示。
Figure 30 – PRP 同步LANs
序列号为16位,下拉窗口的最大尺寸为32768,一个大到足以满足在最坏情况下的网络延迟和最高帧速率下,序列号不会环绕。当序列号超出时算法不必改变。有时候,这种方法可能会失败,比如有结点故障恢复或网络失效后重连,但在有疑问的情况下,重复是可接受的,而帧并没有丢失。
- IEC62439PRP滑动下拉窗口丢包算法详解
- 滑动窗口算法
- 滑动窗口算法
- 算法:数组+滑动窗口
- 滑动窗口详解
- TCP/IP详解--流量控制机制 滑动窗口 Nagle算法 糊涂窗口综合征
- TCP/IP详解--滑动窗口、拥塞窗口、慢启动、Negle算法
- [玩转算法]滑动窗口
- TCP 滑动窗口协议详解
- TCP 滑动窗口协议 详解
- TCP 滑动窗口协议 详解
- 滑动窗口数据结构和发送算法
- A003-算法-滑动窗口队列(未测试)
- redis+lua脚本实现滑动窗口算法
- 算法系列——滑动窗口最大值
- TCP/IP中的滑动窗口详解
- 计算机网络 TCP 滑动窗口协议 详解
- 滑动窗口协议、拥塞窗口与拥塞避免算法
- C++命名空间的使用举例
- Java SE 精萃
- uiimageview 异步加载图片
- 程序员真的很懒
- Android下拉刷新实例
- IEC62439PRP滑动下拉窗口丢包算法详解
- caller 与callee的区别
- 常用的转移字符,以及区别
- Java 白皮书
- 使用ActivityGroup时,如何保存Activity状态、如何使用子Activity的Menu?
- Java中的深拷贝和浅拷贝
- 使用PLSQL连接远程的Oracle数据库
- poj Optimal Keypad
- Linux netstat命令详解