Circuit Switch与Packet Switch

来源:互联网 发布:百度云域名注册免费 编辑:程序博客网 时间:2024/05/19 00:40

原blog  http://blog.csdn.net/wangjron/article/details/48817801

Circuit Switching

Circuit switching的最大特点是终端系统之间需要预约传输线路资源才可以进行持续的通讯,在通讯过程中传输速率保持在一个常数值。也就是说,circuit switching是一种电路资源预分配的方式,由于资源已经预先分配,因此在通讯结束之前,不管用户之间是否一直在传输信息,这条电路始终被这一对用户占用。

Circuit的实现有两种方式,分别是frequency-division multiplexing(FDM)以及time-division multiplexing(TDM)。

FDM:

将传输信号通道(link)的总带宽分成若干频带,每个频带给一个持续的通讯连接(duration connection)使用,频带间互不干扰,如给每个频带4KHz的宽度,如下图所示:

FDM

TDM:

将提供给整个信号通道传输信息的时间划分成若干帧(frame),每一帧上有若干时间槽(time slot),每一个时间槽固定地给一个持续的通讯连接使用,“固定”指的是不同的帧中同一位置的时间槽均给某一持续通讯连接使用。在TDM中,一个电路(circuit,即connection)的传输速率等于传输帧的速率乘以一个时间槽中含有的比特数。

TDM

计算1:

如果现在有一个640000bits的文件需要从A传到B。若使用TDM,假设在网络中的所有连接都需要24个时间槽且这个网络的比特传输速率为1.536Mbps,在传输数据前建立一个端对端电路需要500msec。请问需要多少时间传输这样一个文件?

解析:

由于每个连接需要24个时间槽,所以这个网络的传输时间被分为24个帧,所以每个帧的传输速率为:1.536Mkps/24 = 64kbps,这就是一个连接的传输速率。则传输这个文件需要时间:640000bits/64kbps = 10s,加上建立时间,总时长为 10 + 0.5 = 10.5s

计算2:

现有一条传输速率为1 Mbps的线路,假设每一个用户有10%的时间是传输数据且速率为100 kbps,有90%时间是空闲的。若使用TDM,每一个帧被分为10个槽,每个帧为1s,则每一个槽为100ms。问,平均每个槽传输多少比特?

解析:

100ms*100kbps*10%=1000 bits

Packet Switching

跟circuit switching不同,packet switch是不需要预约的,则每个connection是竞争关系,对于线路资源先到先得。就好像我们外出餐馆吃饭,进去餐馆看到有空位就坐下,把这个位置占了,没有空位就只能等了;而circuit switching则是要先预约座位,去到餐馆凭着预约号直接坐下。

Packet:

在packet switching中,传输方(source)会将要传输的长信息分成若干小块,即数据包(packet),在传输过程中按数据包传输。

大多数的packet switching采取store-and-forward的传输策略,则在发送数据包的第一个比特之前,交换机(switch)必须已经接收到这个数据包的所有比特,即接收到完整的一个包。于是在这个过程中,就会因为switch需要等待整个包的到来才发送数据而产生一个延时。举个例子:

假设在一个使用packet switching的网络中,host A需要传输一个长度为L bits的数据包给B,在A、B之间有Q条线路,每条线路的传输速率为R bps,令这个数据包是这个网络中唯一传输的数据。

因为A、B之间有Q条线路,所以A、B间共有Q-1个routers,即算上A,这个数据包一共要被发送Q次,每一次都会发生store-and-forward,因此每一次都会产生一个延时,延时时间为L/R s。为什么是L/R呢?L/R表示的是传输这样一个长度为L bits的数据包需要的时间,很容易可以想到,当数据包的第一个bit被发送到下一个router,这个router收集到一个完整数据包的时间就是L/R秒,也就是这个bit就要等待L/R的时间,而且这是这个数据包的比特要等待的最长时间,因此延时时间就是L/R秒。所以,整个过程的总延时时间为:Q*L/R s。

Output Buffer (Output Queue):

在packet switching中,每一个switch会与多条线路连接。Switch为每条线路的数据传输提供一个输出缓冲区(output buffer,也称output queue),当多条线路都有数据包传出时,第一个到达switch的数据包会立刻被发送,其余数据包就会按照到达顺序进入缓冲区,然后根据先进先出策略发送出去。因此这里也会产生一个延时,称为queuing delay。如果当这个缓冲区满了后仍有数据包到达switch,这个数据包或者缓冲区中的某一数据包就会被丢弃,至于丢弃谁就要根据特定策略,这个丢弃的过程就称为queue loss。