周报(2)

首先是Reliable Multicast这篇文章,介绍了一种叫做可靠的流协议(RSP, Reliable Stream Protocol),它对比了PGM,指出了PGM的主要问题在于收发双方的速率可能不一致,这样就会导致断线。而文中推荐的做法是RSP,它的机制是根据接收者放缓发送者的速率,并通过主动 ACK(并配合滑动窗口)以保证连接的可靠性。

我觉得它的项目可能并不需要很高的实时性才能这么做,总的来说还是没有很好地解决如何在保证实时性的前提下提供可靠连接(也就是说既要快速又不能断线)。

还有一篇Reliable Multicast Protocols and Applications,年代貌似比较久远了,不过还是能带来一些启发的,内容除了一些网络的基本概念,有些东西我倒是第一次听说(主要是对于可靠多播的情况来说的):

  1. 为了优化网络性能,网络中的ACK/NAK以及重传就必须得尽量减少,要把发送者的负担减轻,因此有个办法是让组里的成员(接收者)自己维护重传,也就是一旦某个接收者丢包,它就会请求其他接收者(而不是发送者)对它进行重传。
  2. 文中的PGM (Pretty Good Multicast)其实就是现在的PGM (Pragmatic General Multicast),基于NAK来做可靠性处理。(查了一下,好像是因为商标问题后来改名了。)
  3. MFTP通过牺牲实时性来为大规模的可靠多播提供可能,它同样是基于NAK的,不同的是它每次发送一个大的数据包(分成一串block),接收者在接收发生错误的时候仅对那些没有成功接收的block进行反馈NAK,而发送者在收到这些NAK的时候也不马上重发,而是累计到一定数目(将网络中不同接收者的NAK进行或操作)之后再组成一个大的数据包发送。

随后,又找到了2003年的The PGM reliable multicast protocol这篇文章,算是上面的文章经过数年之后的成果,运用了上面提出的概念,标志着PGM成熟并成为标准。

好了,上面的话题结束。因为这周有处理课程的作业,加上实验室设备检修,就只看了几篇文章,还有一些尝试性的工作,启发是有的,不过工作进展不大。