传送层的信息流控制问题在某些方面与数据链路层中的信息流控制问题是相同的,二者都需要一个流量控制机构,以使高速的发送机不至淹没慢速的接收机。传送层中的流量控制问题比数据链路层更为复杂,处理起来更困难,主要原因为:
②传送层的信息流控制要涉及传送用户、传送实体及网络服务排队等,并受到下层服务和上层用户的制约和影响,如图6.2.2所示;
③传送实体间的传送延迟要比实际传输时间长,而且是可变的。这是因为传送层的流量控制受到下层流控的影响。下层不繁忙时,传送延迟就短,下层忙碌时,传送层的数据流可能受到网络服务流控的阻滞,致使后发的数据报却先到。因此,传送层的流量控制须采用不同于数据链路层流控的某些方法,但终究还是归结于对缓冲器的分配和使用的问题。当发送方送来的数据充满了缓冲器后,就要有一定的方法停止或减慢发送方的发送速率以防缓冲器溢出。因为在发送方和接收方之间存在着令人讨厌的时间差,这一点难以做到。
图6.2.2 面向连接的数据传送队列
进行信息流控制的最普遍的方法是利用在数据链路层中已经讨论过的滑窗机制。它的主要特点是在数据单位上使用序号、固定大小的窗口及窗口采用循环推进的方法。但是,在传送层中的连接数比数据链路层所管理的实际线路数要多得多,对缓冲器的管理也要复杂得多。例如,在选择重发滑窗协议中,发送机和接收机要管理的缓冲器个数为(Maxseq+1)/2×线路数。在传送层中,若最多可用64个连接 ,且每一连接上可用4个比特的顺序号,那么采用这种信息流控制方法时,发送方和接收方将各需要64×8=512个缓冲器,这对于传送层流量控制来说是不太合适的。采用设置公用缓冲区的方法可解决这个问题。若子网不能保证可靠的传输,例如在A2、A3型网络中可能会丢失少量分组,为了能在传送层进行差错恢复,在接收主机(目的)确认之前,发送主机(源)必须缓冲所有发出的报文,这样才有可能在需要的时候由源点重发有关的报文。由于源点已经缓冲了所有未确认的报文,目的点就不必分配与源点一样多的专用缓冲区,而可以采用单一的公用缓冲区供所有的连接共享。若缓冲区不足,可以丢弃报文,因为源会超时重传。但这种方法有引起重装配死锁的可能。若子网是可靠的,并且能让源主机了解到目的主机总有空闲缓冲区,则源主机就不需要保存它已发报文的副本。但有些情况下,即使子网可以保证送达,目的主机仍有可能接收不了,此时源点仍需要设立缓冲区。
动态的公用缓冲区可以采用以下三种组织方法:①链式固定大小缓冲器组;②链式可变大小缓冲器组;③每一连接指定一个大的循环缓冲器,如图6.2.3所示。第一种组织方法适应于报文等长的情况,但缓冲器在报文不等长时利用率不高;第二种可适应报文不等长的情况,但管理的开销过大;第三种方法可以结合前两种方法的优点,但在负荷不重时,缓冲区的容量利用得也不充分。
采用滑窗协议可以在传送层上实施流量控制,但须对缓冲器数量进行动态的调整,这可以采用信用量的方法来实现,此时它实质上是一种可变窗口大小的滑窗方法。信用量(credit)方案中,为接收方提供了较大的对数据流控制的权力。虽然对于可靠的网络服务这不是绝对必需的,但却能产生一个较为平滑的通信流,使传送层的流控受下层服务制约的影响减少;同时,对于不可靠的服务,它是更为有效的方案。
前面已经提及,若传送层采用滑窗协议,则对每一个数据单位的应答都意味着释放一批缓冲器,若扣住应答,则会引起超时重发。但无论对缓冲器的管理还是对重发的延迟间隔选择都较为困难,特别是在不可靠的子网中,传送实体很难确定这种无应答的现象是由于流量控制还是由于丢失了某一数据单位而引起的。在信用量方案中,从应答信号中分离出了接收方同意给予的缓冲要求,这样就可以对某一个数据单位进行应答而不用新的信用量(即缓冲),或者分配新的信用量而不对某一个数据单位进行应答,从而消除了应答对信息流控制的影响。而在固定滑窗方法中,应答和缓冲要求是一回事。
(www.xing528.com)
图6.2.3 公用缓冲区织方法
在简单传送站例中,已经采用了信用量进行流控。图6.2.4又给出一个建立在A1型网络服务基础上的例子。此例采用3位顺序号,其余的与滑窗方法相似。注意,这里使用数据单位这个词,是为了明确所发的是数据,因为报文包括数据单位报文和控制报文,而控制报文是不需要缓冲的。
从该例中可以看出应答和缓冲要求的分离,及在没有足够缓冲时用更改信用量的方法使发送方减慢或停止发送新的数据单位。发方在每次传送时推进其窗口的下沿(即收缩),而在得到应答时才推进上沿,以收到的信用量作为其发送窗口的大小。较为保守的方案中,允许发送的数据单位数(信用量)达到收方可用缓冲数的上限,这时,信用量和缓冲器数一一对应。但这种保守的方案在子网的传送延迟较长时会限制传送连接的吞吐量,这时可以给出接受方还不具备的信用量空间(即使信用量大于缓冲数),来潜在地提高吞吐量。这种流控方法有时很有效,而有时会造成重发,致使协议复杂化。
现再来分析一下在A2、A3及B、C型网络服务支持下的传送流控情况。最典型的A2、A3型网络就是可靠的数据报网络,在这种网络中,报文的交付不一定按顺序,而B、C型网络还允许丢失报文,这都会对流控带来一些影响。
图6.2.4 信用量流控
交付不按顺序有可能颠倒信用量的分配次序,使后面的分配先于前一个分配到达,从而使资源的分配失真。例如,先分配的信用量为7且已发出,后分配的信用量为3,如后一个分配先于前一个到达,将使发方误以为收方前一次分配为3,而最近的一次分配为7.解决这个问题的办法是给信用量分配报文按顺序编号。丢失的报文中可能包括对信用量的分配报文,但这种丢失所产生的害处比较小,因为另一次应答会使协议重新同步,即使没有新的应答到来,发送方也会超时并重发数据单位,并由此引起新的应答。但其可能导致死锁,例如以下情况:
在第3步,一方面因为A在等待发送机会,而B因已分配给A新的信用量而认为已给了A这样的机会;另一方面,由于所有数据单位都已应答,已不会引起超时,从而使双方都等待,造成死锁。使用一个定时器,以定时地发出控制报文,即可打破死锁的局面,使双方协议都处于活跃状态。
所以,即使是B、C型网络服务,传送层流控采用信用量方案,仍然可以很好地工作。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。