博客为参考《网络是怎样连接的》一书,自己所做的读书笔记。
本文为原创文章,未经本人允许,禁止转载。转载请注明出处。
1.前言
👉热身问答,下列说法是正确的还是错误的:
- 第一个采用包机制的网络就是互联网的前身ARPANET。
- ADSL方式中,从家里到电话局的线路费用包含在电话费中,因此可以降低上网费。
- 光纤的通信速率之所以更快,是因为光信号的传播速度比电信号要快。
👉答案:
- 正确。
- 正确。ADSL的线路费用包含在电话费中,光纤的线路费用包含在上网费中,因此光纤的上网费高,电话费便宜。
- 错误。电信号和光信号传播的速度大体上相同,之所以电缆不如光纤通信速率高,是因为电信号在提升通信速率的同时,其衰减率也会提高(信号在传播过程中减弱),导致信号无法传到目的地。相对地,光信号本来的衰减率就很低,提高通信速率也并不会提高衰减率。此外,光纤还不受电磁噪声的影响,因此光纤能够进行高速通信。
2.ADSL接入网的结构和工作方式
2.1.互联网的基本结构和家庭、公司网络是相同的
互联网是一个遍布世界的巨大而复杂的系统,但其基本工作方式却出奇地简单。和家庭、公司网络一样,互联网也是通过路由器来转发包的,而且路由器的基本结构和工作方式也并没有什么不同(图4.1)。因此,我们可以将互联网理解为家庭、公司网络的一个放大版。
当然,互联网也有一些和家庭、公司网络不同的地方,其中之一就是与转发设备间的距离。在家庭、公司网络中,与转发设备之间的距离不过几十米到几百米,在这种情况下,只要延长以太网线就可以到达相邻的转发设备了$^1$。然而,互联网可不能这么搞,因为你家到最近的电话局至少也有几公里的距离,而从日本连接到美国甚至要跨越太平洋,用以太网线是无法实现这种连接的。
- 双绞线的极限距离是100米,但光纤的连接距离可以长达几公里。
除了距离之外,路由器在如何控制包的转发目标上也不一样。尽管从基本原理来看,互联网也是根据路由表中的记录来判断转发目标的,但路由表记录的维护方式不同。互联网中的路由器上有超过10万条路由记录,而且这些记录还在不断变化,当出现线路故障时,或者新的公司加入互联网时,都会引发路由的变化。人工维护这些路由信息是不现实的,必须实现自动化。公司的路由器也有自动维护路由表的机制,但出于各种原因,互联网中采用的机制和公司有所区别。
距离的不同和路由的维护方式,就是互联网与家庭、公司网络之间最主要的两个不同点。
2.2.连接用户与互联网的接入网
上一章已经讲过,网络包通过交换机和路由器的转发一步一步地接近它的目的地,在通过互联网接入路由器之后,就进入了互联网$^1$。
- 如果网络包的目标服务器位于家庭、公司网络中的话,那么就不需要通过互联网接入路由器,而是直接转发给目标服务器,也不会进入互联网。
刚才讲过,路由器的转发操作都是相同的,因此互联网接入路由器的包转发操作也和第3章讲过的以太网路由器几乎是一样的。简单来说,就是根据包IP头部中的接收方IP地址在路由表的目标地址中进行匹配,找到相应的路由记录后将包转发到这条路由的目标网关。不过,互联网接入路由器发送网络包的操作和以太网路由器有一点不同,互联网接入路由器是按照接入网规则来发送包的。
所谓接入网,就是指连接互联网与家庭、公司网络的通信线路$^1$。一般家用的接入网方式包括ADSL$^2$、FTTH$^3$、CATV、电话线、ISDN等,公司则还可能使用专线。接入网的线路有很多种类,我们无法探索所有这些线路,因此下面先介绍一个比较有代表性的例子——ADSL。
- 接入网这个词表示的是通信线路的用法,而并不表示通信线路的结构。例如公司里使用的专线,当它用来连接互联网时就叫作接入网,而用来连接总公司和分公司时就不叫接入网。此外,接入网这个词也不仅限于互联网,当使用运营商提供的通信服务时,一般都会将用户与运营商之间的线路叫作接入网。
- ADSL:Asymmetric Digital Subscriber Line,不对称数字用户线。它是一种利用架设在电线杆上的金属电话线来进行高速通信的技术,它的上行方向(用户到互联网)和下行方向(互联网到用户)的通信速率是不对称的。
- FTTH:Fiber To The Home,光纤到户。指的是将光纤接入家庭的意思。
2.3.ADSL Modem将包拆分成信元
ADSL技术使用的接入线路,其内部结构如图4.2所示,在这张图中网络包是从右往左传输的。用户端路由器$^1$发出的网络包通过ADSL Modem$^2$和电话线到达电话局,然后到达ADSL的网络运营商(即ISP,互联网服务提供商)。在网络包从用户传输到运营商的过程中,会变换几种不同的形态,整个过程如图4.3所示。
- 有些情况下会使用集成了互联网接入路由器和ADSL Modem的多功能ADSL Modem(也叫路由型ADSL Modem),其实就是把路由器和ADSL Modem装到一个外壳里而已。
- 中文全称为“调制解调器”。
首先,客户端生成的网络包(图4.3的①和②)先经过集线器和交换机到达互联网接入路由器(图4.3③),并在此从以太网包中取出IP包并判断转发目标(图4.3④),上面这一部分刚才已经讲过,和第3章介绍的以太网路由器的工作方式是一样的。接下来,包发送的操作也很类似。如果互联网接入路由器和ADSL Modem之间是通过以太网连接的,那么就会按照以太网的规则执行包发送的操作,发送信号本身的过程跟之前是一样的,但以太网的头部会有一些差异。这部分的具体情况各运营商会有所不同,而且还需要一些关于BAS$^1$(位于接入网另一端的包转发设备)的知识,因此相关的细节我们在探索BAS的时候再具体讲解。这里大家先记住,网络包会加上MAC头部、PPPoE头部、PPP$^2$头部总共3种头部(图4.3⑤),然后按照以太网规则转换成电信号后被发送出去$^3$。
- BAS:Broadband Access Server,宽带接入服务器。它也是一种路由器。
- PPP:Point-to-Point Protocol,点到点协议。它是电话线、ISDN等通信线路所使用的一种协议,集成了用户认证、配置下发、数据压缩、加密等各种功能。
- 这是后面将会讲到的PPPoE方式所规定的。
互联网接入路由器会在网络包前面加上MAC头部、PPPoE头部、PPP头部总共3种头部,然后发送给ADSL Modem(PPPoE方式下)。
互联网接入路由器将包发送出去之后,包就到达了ADSL Modem(图4.3⑥),然后,ADSL Modem会把包拆分成很多小格子(图4.3⑦),每一个小格子称为一个信元。信元是一个非常小的数据块,开头是有5个字节的头部,后面是48个字节的数据,用于一种叫作ATM$^1$的通信技术。大家可以将信元理解为一种更小一号的包,原理上跟TCP/IP将应用程序的数据拆分成块装进一个个包的过程是一样的(参见:第2章)。
- ATM:Asynchronous Transfer Mode,异步传输。它是在以电话线为载体的传统电话技术基础上扩展出来的一种通信方式。它的数据传输是以“信元”为单位来进行的,这和以包为单位传输数据的TCP/IP很像,但这种方式并不适用于计算机通信。
其实之所以要将包拆分成信元,原因是这样的。当初开发ADSL技术时,通信业比较看好ATM技术,各运营商也在ATM相关的设备上投入了很多资金。在这样的情况下,如果使用信元来传输数据,就比较容易和其他设备进行整合,可以降低开发投入和设备投入。如果不是出于这样的原因,其实并不需要将包拆分成信元,实际上也有一些ADSL运营商使用的ADSL Modem是不进行数据拆分的。
ADSL Modem将包拆分成信元,并转换成电信号发送给分离器。
2.4.ADSL将信元“调制”成信号
将网络包拆分成信元之后,接下来就要将这些信元转换成信号了(图4.3⑧)。我们在第2章的图2.27中介绍过,以太网采用的是用方波信号表示0和1的方式,这种方式很简单,但同样是将数字信息转换成模拟信号,ADSL采用的方法要复杂一些。其中有两个原因,一个原因是方波信号的波形容易失真,随着距离的延长错误率也会提高;另一个原因是方波信号覆盖了从低频到高频的宽广频段,信号频率越高,辐射出来的电磁噪声就越强,因此信号频谱太宽就难以控制噪声。
因此,ADSL Modem采用了一种用圆滑波形(正弦波)对信号进行合成来表示0和1的技术,这种技术称为调制。调制有很多方式,ADSL采用的调制方式是振幅调制(ASK)和相位调制(PSK)相结合的正交振幅调制(QAM)$^1$方式。下面先来看一下它的两个组成要素。
- 也被称为正交调幅。
振幅调制是用信号的强弱,也就是信号振幅的大小来对应0和1的方式。如图4.4(b),振幅小的信号为0,振幅大的信号为1,这是一种最简单的对应关系。在这个例子中,振幅大小只有两个级别,如果增加振幅变化的级别,就可以对应更多的比特。例如,如果将振幅增加到4个级别,则振幅从小到大可分别对应00、01、10和11,这样就可以表示两个比特了。这样做可以将单位时间内传输的数据量加倍,也就能够提高速率。以此类推,如果振幅有8个级别,就可以表示3个比特,16个级别就可以表示4个比特,速率也就越来越高。不过,信号会在传输过程中发生衰减,也会受到噪声影响而失真,如果振幅级别太多,接收方对信号的识别就容易出错,因此振幅级别也不能太多。
另一个组成要素是相位调制,这是一种根据信号的相位来对应0和1的方式。Modem产生的信号是以一定周期振动的波,如图4.5所示,振动的起始位置不同,波的形状也就不同。如果将波的一个振动周期理解为一个圆,则起始位置就可以用0度到360度的角度来表示,这个角度就是相位,用角度来对应0和1的方式就叫作相位调制。例如,从0度开始的波为0,从180度开始的波为1,这是一种最简单的对应关系,如图4.4(c)所示。和振幅调制一样,相位调制也可以通过将角度划分为更细的级别来增加对应的比特数量,从而提高速率。但是,角度太接近的时候也容易产生误判,因此这样提升速率还是有限度的。
ADSL使用的正交振幅调制就是将前面这两种方式组合起来实现的。图4.4(d)就是将图4.4(b)和图4.4(c)组合起来的一个例子。如果信号的振幅可以表示1个比特,相位可以表示1个比特,那么加起来就可以表示2个比特。因此,将两种方式组合起来,正交振幅调制就可以用一个波表示更多的比特,从而提高传输速率。
正交振幅调制中,通过增加振幅和相位的级别,就可以增加能表示的比特数。例如,如果振幅和相位各自都有4个级别,那么组合起来就有16个级别,也就可以表示4个比特的值。当然,和单独使用振幅调制或相位调制的情况一样,级别过多就容易发生误判,因此这种方法提升的速率是有限度的。
2.5.ADSL通过使用多个波来提高速率
图4.4的例子中的信号是一个频率的波,实际上信号不一定要限制在一个频率。不同频率的波可以合成,也可以用滤波器从合成的波中分离出某个特定频率的波。因此,我们可以使用多个频率合成的波来传输信号,这样一来,能够表示的比特数就可以成倍提高了。
ADSL就是利用了这一性质,通过多个波增加能表示的比特数来提高速率的。具体来说,如图4.6所示,ADSL使用间隔为4.3125kHz(个人注解:频率间隔(也称子载波间隔),表示各个频率波之间的距离)的上百个不同频率的波进行合成,每个波都采用正交振幅调制,而且,根据噪声等条件的不同,每个波表示的比特数是可变的。也就是说,噪声小的频段(个人注解:频段指的是频率范围)可以给波分配更多的比特,噪声大的频段则给波分配较少的比特$^1$,每个频段表示的比特数加起来,就决定了整体的传输速率。
- 一般情况下,一个波可表示几个比特到几十个比特。
ADSL技术中,上行方向(用户到互联网)和下行方向(互联网到用户)的传输速率是不同的,原因也在这里。如果上行使用26个频段,下行则可以使用95个或者223个频段,波的数量不同,导致了上下行速率不同。
当然,下行使用的频段较高,这些信号容易衰减而且更容易受到噪声的影响,因此这些频段可能只能表示较少的比特数,或者干脆无法传输信号。距离越远,频率越高,这种情况也就越显著,因此如果你家距离电话局太远,速率就会下降。
噪声和衰减等影响线路质量的因素在每条线路上都不同,而且会随着时间发生变化。因此,ADSL会持续检查线路质量,动态判断使用的频段数量,以及每个频段分配到的比特数。具体来说,当Modem通电后,会发送测试信号,并根据信号的接收情况判断使用的频段数量和每个频段的比特数,这个过程称为训练(握手),需要几秒到几十秒的时间。
2.6.分离器的作用
ADSL Modem将信元转换为电信号之后,信号会进入一个叫作分离器的设备,然后ADSL信号会和电话的语音信号混合起来一起从电话线传输出去。在信号从用户端发送出去时,电话和ADSL信号只是同时流到一条线路上而已,分离器实际上并没有做什么事。
分离器的作用其实在相反的方向,也就是信号从电话线传入的时候。这时,分离器需要负责将电话和ADSL的信号进行分离(图4.7)。电话线传入的信号是电话的语音信号和ADSL信号混合在一起的,如果这个混合信号直接进入电话机,ADSL信号就会变成噪音,导致电话难以听清。为了避免这样的问题,就需要通过分离器将传入的信号分离,以确保ADSL信号不会传入电话机。具体来说,分离器的功能是将一定频率以上的信号过滤掉,也就是过滤掉了ADSL使用的高频信号,这样一来,只有电话信号才会传入电话机,但对于另一头的ADSL Modem,则是传输原本的混合信号给它。ADSL Modem内部已经具备将ADSL频率外的信号过滤掉的功能,因此不需要在分离器进行过滤$^1$。
- 电话局端也有分离器,功能是一样的。
大家可能会认为分离器的功能只是过滤掉高频信号,防止ADSL对电话产生干扰,而实际上它还可以防止电话对ADSL产生干扰。如果没有分离器,拿起电话听筒接通电话的状态,和放下听筒挂断电话的状态下,信号的传输方式是不同的。当放下听筒时,电话机的电路和电话线是断开的,当拿起听筒时电话机就和电话线相连,电话机的信号就会传到电话线上。这两种状态的差异会导致噪声等线路状态的改变,如果ADSL通信过程中拿起话筒导致线路状态改变,就需要重新训练(握手),这就会导致几十秒的通信中断,分离器可以防止发生这样的问题。当然,也有一种技术能够快速重新握手,即便没有分离器也不会影响ADSL通信,G.992.2的ADSL规格就包含这种技术,但ADSL信号还是会影响电话,因此G.992.2的ADSL规格中一般还是需要使用分离器。
2.7.从用户到电话局
从分离器出来,就是插电话线的接口,信号从这里出来之后,会通过室内电话线,然后到达大楼的IDF$^1$和MDF$^2$,外面的电话线在这里和大楼内部的室内电话线相连接。如果是独栋住宅,就可以将室外线和室内线直接连起来。通过配线盘之后,信号会到达保安器。保安器是为了防止雷电等情况下电话线中产生过大电流的一种保护装置,内部有保险丝。
- IDF:Intermediate Distribution Frame,中间配线盘。
- MDF:Main Distribution Frame,主配线盘(总配线架)。
接下来,信号会进入电线杆上架设的电话电缆。电话线是一种直径0.32~0.9mm$^1$的金属信号线,这些信号线如图4.8所示被捆绑在一起。
- 信号线的直径不同,信号衰减率等特性也不同,线越细衰减率越高,因此距离电话局近的地方使用细线,当需要延伸较远的距离时使用粗线。
电话电缆在用户住宅附近一般是架设在电线杆上,但中途会沿电线杆侧面的金属管进入地下。由于电话线必须进入很多住宅和大楼,所以电话局附近就会集结数量庞大的电缆,这么多电缆要通过电线杆引入电话局是非常不现实的,电话局周围得密密麻麻地立满了电线杆,而且电线杆上架设过多的电缆,还会产生防灾方面的问题。因此,在电话局附近,电话线都是埋在地下的。由于电话局附近的地下电缆很多,集中埋设电缆的地方就形成了一条地道,这部分称为电缆隧道(如照片4.1)。通过电缆隧道进入电话局后,电缆会逐根连接到电话局的MDF上。
2.8.噪声的干扰
电话电缆中的信号也会受到噪声的干扰。虽然电话线和以太网双绞线的结构有所不同,但它们都是用金属信号线传输电信号,本质上是共通的。也就是说,电话线也会受到来自外部的噪声和来自内部的噪声(串扰$^1$)的干扰,导致信号失真。此外,电话线原本的设计并没有考虑到传输ADSL这样的高频信号,从这个角度上可以说它比以太网双绞线更容易受到噪声的干扰。
- 串扰:信号线本身泄漏电磁波而产生的噪声对电缆内部相邻信号线产生干扰。
不过,电话线受到干扰的方式和双绞线有些不同。双绞线中只有一路方波信号,信号失真后就无法读取还原成数字信号,于是就会产生错误,但ADSL信号受到干扰后并不会立即造成错误。ADSL信号分布在多个频段上,只有和噪声频率相同的信号会受到影响而无法读取,即可用的信号数量减少,结果导致速率下降。
因此,电话线架设在噪声比较多的地方时,可能就会导致速率下降,比如电车线路旁边。电车的受电弓(pantograph)从架空接触网获取电力时会产生电火花释放噪声,ADSL会因此受到干扰,导致速率下降。此外,ADSL还会受到AM电台广播的干扰。
电缆内部产生的噪声也会形成干扰。图4.8中的四芯线内部,或者相邻子单元的附近如果同时存在ADSL和ISDN信号线,ISDN发出的噪声就会干扰ADSL。ADSL刚刚开始普及的时候,大家还都比较关注防止ISDN干扰的技术,不过现在防止ISDN干扰的技术已经形成了,因此在使用ADSL时已经基本上没必要在意ISDN线路的问题了。
2.9.通过DSLAM到达BAS
信号通过电话线到达电话局之后,会经过配线盘、分离器到达DSLAM$^1$(图4.3⑨)。在这里,电信号会被还原成数字信息——信元(图4.3⑩)。DSLAM通过读取信号波形,根据振幅和相位判断对应的比特值,将信号还原成数字信息,这一过程和用户端的ADSL Modem在接收数据时的过程是一样的。因此,如果在电话局里安装一大堆和用户端一样的ADSL Modem,也可以完成这些工作,只不过安装这么多Modem需要占用大量的空间,而且监控起来也非常困难。因此,电话局使用了DSLAM设备,它是一种将相当于很多个ADSL Modem的功能集中在一个外壳里的设备。
- DSLAM:DSL Access Multiplexer,数字用户线接入复用设备。它是一种电话局用的多路ADSL Modem,可以理解为将多个ADSL Modem整合在一个外壳里的设备。
不过,DSLAM和用户端ADSL Modem相比还是有一个不同的地方。用户端ADSL Modem具备以太网接口,可以与用户端的路由器和计算机交互,收发以太网包,而DSLAM一般不用以太网接口,而是用ATM接口,和后方路由器收发数据时使用的是原始网络包拆分后的ATM信元形式$^1$。
- 也有一些DSLAM是不将网络包拆分成ATM信元的,而是直接以网络包的状态转换成ADSL信号,这样的DSLAM在和后方路由器收发数据时也是使用包的形式。
信元从DSLAM出来之后,会到达一个叫作BAS的包转发设备(图4.3⑪)。BAS和DSLAM一样,都具有ATM接口,可以接收ATM信元,还可以将接收到的ATM信元还原成原始的包(图4.3⑫)。到这里,BAS的接收工作就完成了,接下来,它会将收到的包前面的MAC头部和PPPoE头部丢弃,取出PPP头部以及后面的数据(图4.3⑬)。MAC头部和PPPoE头部的作用是将包送达BAS的接口,当接口完成接收工作后,它们就完成了使命,可以被丢弃了。具有以太网接口的路由器在接收到包之后也会丢弃其中的MAC头部,道理是一样的。接下来,BAS会在包的前面加上隧道专用头部$^1$,并发送到隧道的出口(图4.3⑭)。
- 一般情况下使用的隧道技术为L2TP,在这种情况下就会加上L2TP头部。
然后,网络包会到达隧道出口的隧道专用路由器(图4.3⑮),在这里隧道头部会被去掉,IP包会被取出(图4.3⑯),并被转发到互联网内部(图4.3⑰)。
BAS负责将ATM信元还原成网络包并转发到互联网内部。
3.光纤接入网(FTTH)
3.1.光纤的基本知识
通过ADSL接入网和BAS之后,网络包就到达了互联网内部,在继续探索之前,我们再来介绍另一种接入网技术,它的名字叫FTTH,是一种基于光纤的接入网技术。FTTH的关键点在于对光纤的使用,所以我们先来介绍一些光纤的基本知识。
光纤的结构如图4.9所示,它是由一种双层结构的纤维状透明材质(玻璃和塑料)构成的,通过在里面的纤芯中传导光信号来传输数字信息(图4.10)。ADSL信号是由多个频段的信号组成的,比较复杂,但光信号却非常简单,亮表示1,暗表示0。
3.2.单模与多模
光纤通信的关键技术就是能够传导光信号的光纤。光在透明材质中传导似乎听起来很简单,但实际上光的传导方式是非常复杂的,不同材质的光纤其透光率和折射率也不同,纤芯的直径等因素也会影响光的传导。其中,纤芯的直径对光的传导影响很大,要理解这一点,我们得先来看看光在光纤中是如何传导的。
首先,我们来看看光源发出的光是如何进入纤芯的。光源在所有方向上都会发光,因此会有各种角度的光线进入纤芯,但入射角度太大的光线会在纤芯和包层(纤芯外沿部分)的边界上折射出去,只有入射角较小的光线会被包层全反射,从而在纤芯中前进(图4.11)。
不过,也不是所有入射角小的光线都会在纤芯中传导。光也是一种波,因此光也有如图4.5中那样的相位,当光线在纤芯和包层的边界上反射时,会由于反射角产生相位变化。当朝反射面前进的光线和被反射回来的光线交会时,如果两条光线的相位不一致,就会彼此发生干涉抵消,只有那些相位一致的光线才会继续在光纤中传导。
这个现象和往水面上投一颗石子产生的波纹是一样的。水波也有相位,在石子进入水面的瞬间,波纹中心会产生各种相位的波。不过,相位不同的波会相互干涉,图4.12中相位相反的情况是最容易理解的。相位不同的波在干涉后会变弱、消失,最后就只剩下相位相同的波向周围扩散开来。石子投入水面后扩散出来的波纹会形成同心圆状,一般大家对这样的现象已经习以为常,实际上只有相位相同的波才会扩散出来被我们看到。
如果周围没有障碍物,水面上的波纹会一直呈同心圆状扩散出去,但如果遇到两侧的墙壁,波纹就会被反射回来。这时,向墙壁前进的波和从墙壁反射回来的波就会相互叠加,其中相位相同的波相互加强,相位不同的波相互抵消。
光纤中的情况也是一样的,只不过和水波不同的是,光在被纤芯和包层的边界反射时,相位会发生变化。这个变化的量随光在反射面的反射角度不同而不同,大多数角度下,都会因为相位不同而被干涉抵消。不过,有几个特定的角度下,向反射面前进的光和反射回来的光的相位是一致的,只有以这些角度反射的光才能继续向前传导(图4.13)。进入光纤的光线有各种角度,但其中,只有少数按照特定角度入射以保持相位一致的光线才会继续传导。
这个角度非常关键,纤芯的直径也是根据这个角度来确定的,而且纤芯的直径大小会极大地改变光纤的性质。根据纤芯直径,光纤可以划分成几种类型,大体上包括较细的单模光纤(8~10μm)和较粗的多模光纤(50μm或62.5μm)。单模光纤的纤芯很细,只有入射角很小的光线才能进入,因此在能够保持相位一致的角度中,只有角度最小的光线能进入光纤。反过来可以说,单模光纤的纤芯直径就是按照只允许相位一致的最小角度的光进入而设计的。多模光纤的纤芯比较粗,入射角比较大的光也可以进入,这样一来,在相位一致的角度中,不仅角度最小的可以在光纤中传导,其他角度更大一些的也可以,也就是说,可以有多条光线在纤芯中同时传导。换句话说,单模和多模实际上表示相位一致的角度有一个还是多个(图4.14)。
单模光纤和多模光纤在光的传导方式上有所不同,这决定了它们的特性也有所不同。多模光纤中可以传导多条光线,这意味着能通过的光线较多,对光源和光敏元件的性能要求也就较低,从而可以降低光源和光敏元件的价格。相对地,单模光纤的纤芯中只能传导一条光线,能通过的光线较少,相应地对于光源和光敏元件的性能要求就较高,但信号的失真会比较小。
信号失真与光在纤芯传导时反射的次数相关。多模光纤中,多条反射角不同的光线同时传导,其中反射角越大的光线反射次数越多,走过的距离也就越长;相对地,反射角越小的光线走过的距离越短。光通过的距离会影响其到达接收端的时间,也就是说,通过的距离越长,到达接收端的时间越长。结果,多条光线到达的时间不同,信号的宽度就会被拉伸,这就造成了失真。因此,光纤越长,失真越大,当超过允许范围时,通信就会出错(图4.15)。
相对地,单模光纤则不会出现这样的问题。因为在纤芯传导的光线只有一条,不会因为行进距离的差异产生时间差,所以即便光纤很长,也不会产生严重的失真。
光纤的最大长度也是由上述性质决定的。单模光纤的失真小,可以比多模光纤更长,因此多模光纤主要用于一座建筑物里面的连接,单模光纤则用于距离较远的建筑物之间的连接。FTTH属于后者,因此主要使用单模光纤。
3.3.通过光纤分路来降低成本
用光纤来代替ADSL将用户端接入路由器和运营商的BAS连接起来的接入方式就是FTTH$^1$,从形态上可大致分为两种。
- FTTH和ADSL一样也有不同的衍生规格,主流规格是和ADSL一样采用PPPoE方式进行接入。
一种是用一根光纤直接从用户端连接到最近的电话局(图4.16(a))。这种类型的FTTH中,用户和电话局之间通过光纤直接连接,网络包的传输方式如下。首先,用户端的光纤收发器$^1$将以太网的电信号转换成光信号。这一步只进行电信号到光信号的转换,而不会像ADSL一样还需要将包拆分成信元,大家可以认为是将以太网包原原本本地转换成了光信号。接下来,光信号通过连接到光纤收发器的光纤直接到达BAS前面的多路光纤收发器。FTTH一般使用单模光纤,因此其纤芯中只有特定角度的光信号能够反射并前进。然后,多路光纤收发器将光信号转换成电信号,BAS的端口接收之后,将包转发到互联网内部。
- 将以太网的电信号转换成光信号的设备,也叫“终端盒”。
把网络包发送到互联网之后,服务器会收到响应,响应包的光信号也是沿着同一条光纤传输到用户端的。这里,前往互联网的上行光信号和前往用户的下行光信号在光纤中混合在一起,信号会变得无法识别,因此我们需要对它们进行区分,办法是上行和下行信号采用不同波长的光。波长不同的光混合后可通过棱镜原理进行分离,因此光纤中的上行和下行信号即便混合起来也可以识别。像这样在一条光纤中使用不同的波长传输多个光信号的方式叫作波分复用。
另一种光纤的接入方式是在用户附近的电线杆上安装一个名为分光器的设备,通过这个设备让光纤分路,同时连接多个用户$^1$(图4.16(b))。在这种方式下,用户端不使用光纤收发器,而是使用一个叫作ONU$^2$的设备,它将以太网的电信号转换成光信号之后,会到达BAS前面的一个叫作OLT$^3$的设备。光信号的传导方式和刚才介绍的直连方式是一样的,但有一点不同,因为多个用户同时收发网络包时信号会在分光器产生碰撞。因此,OLT和ONU中具备通过调整信号收发时机来避免碰撞的功能。具体来说,OLT会调整信号发送时机并向ONU下发指令,ONU则根据OLT的指令来发送数据。反过来,当BAS端向用户发送数据时,分光器只需要将信号发给所有用户就可以了,这里并不会发生碰撞,但这样做会导致一个用户收到其他所有用户的信号,造成信息泄露的问题,因此需要在每个包前面加上用于识别ONU的信息,当ONU收到信号后,会接收发给自己的信号并将其转换成以太网信号。
- 通过光纤分路连接多个用户的光纤接入模式统称为PON(Passive Optical Network,无源光网络),可分为GE-PON、WDM-PON、B-PON、G-PON等多种方式,现在大多使用最高速率为1 Gbit/s的GE-PON方式。
- ONU:Optical Network Unit,光网络单元。它和光纤收发器一样,可以将电信号转换成光信号,除此之外还具有和电话局的OLT相互配合避免信号碰撞的功能。这个设备有时也被叫作终端盒,因此终端盒这个词本身是对光纤收发器和ONU等光纤终端设备的统称。
- OLT:Optical Line Terminal,光线路终端。
像这样,FTTH可以分为直连和分路两种方式,这两种方式只是光信号的传输方式有一些区别,实际传输的网络包是相同的。当使用PPPoE来传输包时,其工作过程和刚才讲过的ADSL类似。具体来说,就是像图4.3中的⑤一样,由互联网接入路由器在IP头部前面加上MAC头部、PPPoE头部和PPP头部,然后由光纤收发器或者ONU转换成光信号$^1$,并通过光纤到达BAS前面的多路光纤收发器和OLT,最后被还原成电信号并到达BAS。
- 不使用信元,而是将以太网包原原本本地转换成光信号。
4.接入网中使用的PPP和隧道
4.1.用户认证和配置下发
刚才已经简单讲过,用户发送的网络包会通过ADSL和FTTH等接入网到达运营商的BAS$^1$。
- 电话局中有专门用来安装BAS的地方,运营商会将BAS安装在这个地方,DSLAM等设备也是一样的。
互联网本来就是由很多台路由器相互连接组成的,因此原则上应该是将接入网连接到路由器上。随着接入网发展到ADSL和FTTH,接入网连接的路由器也跟着演进,而这种进化型的路由器就叫作BAS。
首先是用户认证和配置下发功能。ADSL和FTTH接入网中,都需要先输入用户名和密码$^1$,登录之后才能访问互联网,而BAS就是登录操作的窗口。BAS使用PPPoE$^2$方式来实现这个功能$^3$。PPPoE是由传统电话拨号上网上使用的PPP协议发展而来的,所以我们先来看一看PPP拨号上网的工作方式。
- 这里指的就是和运营商签约时由运营商分配给用户的上网用户名和密码。
- PPPoE:Point-to-Point Protocol over Ethernet,以太网的点对点协议。
- 也有一些运营商使用后面会提到的PPPoA方式。
在使用电话线或者ISDN拨号上网时,PPP是如图4.17这样工作的。首先,用户向运营商的接入点拨打电话(图4.17①-1),电话接通后(图4.17①-2)输入用户名和密码进行登录操作(图4.17②-2)。用户名和密码通过RADIUS$^1$协议从RAS$^2$发送到认证服务器,认证服务器校验这些信息是否正确。当确认无误后,认证服务器会返回IP地址等配置信息,并将这些信息下发给用户(图4.17②-3)。用户的计算机根据这些信息配置IP地址等参数,完成TCP/IP收发网络包的准备工作,接下来就可以发送TCP/IP包了(图4.17③)。
- RADIUS:Remote Authentication Dial-in User Service,远程认证拨号用户服务。
- RAS:Remote Access Server,远程访问服务器。
这个过程的重点在于图4.17②-3下发TCP/IP配置信息的步骤。在接入互联网时,必须为计算机分配一个公有地址,但这个地址并不是事先确定的。因为在拨号连接时,可以根据电话号码来改变接入点,而不同的接入点具有不同的IP地址,因此无法事先在计算机上设置这个地址。所以,在连接时运营商会向计算机下发TCP/IP配置信息,其中就包括为计算机分配的公有地址。
4.2.在以太网上传输PPP消息
ADSL和FTTH接入方式也需要为计算机分配公有地址才能上网,这一点和拨号上网是相同的。不过,ADSL和FTTH中,用户和BAS之间是通过电缆或光纤固定连接在一起的,因此没有必要验证用户身份,所以实际上并不需要PPP的所有这些功能。然而,通过用户名和密码登录的步骤可以根据用户名来切换不同的运营商,这很方便$^1$。因此,接入运营商在ADSL和FTTH中一般也会使用PPP$^2$。
- 通过输入用户名和密码,可以掌握是谁在访问互联网,从网络管理的角度来看,这对于运营商来说也是很方便的。
- 也有一些运营商不使用PPP,而是使用DHCP方式来向客户端下发IP地址等配置信息。
不过,拨号上网的PPP是无法直接用于ADSL和FTTH的,要理解这里的原因,我们先来看看PPP协议是如何传输消息的。
传输PPP消息的思路和将IP包装入以太网包中传输是一样的。PPP协议中没有定义以太网中的报头和FCS等元素,也没有定义信号的格式,因此无法直接将PPP消息转换成信号来发送。要传输PPP消息,必须有另一个包含报头、FCS、信号格式等元素的“容器”,然后将PPP消息装在这个容器里才行。于是,在拨号接入中PPP借用了HDLC$^1$协议作为容器,而HDLC协议原本是为在专线中传输网络包而设计的,拨号接入方式对这一规格进行了一些修正。最终,PPP消息就是像图4.18(a)这样来进行传输的。
- HDLC:High-level Data Link Control,高级数据联接控制。
对于ADSL和FTTH,如果可以和前面一样借用HDLC来作为容器,PPP协议就可以直接使用了。但是,ADSL和FTTH并不能使用HDLC,因此需要寻找另一个机制作为替代。于是,如图4.18(b)③和图4.18(c)③所示,我们用以太网包代替HDLC来装载PPP协议。此外,以太网和PPP在设计上有所不同,为了弥补这些问题就重新设计了一个新的规格,这就是PPPoE。
于是,ADSL和FTTH也可以像拨号上网一样传输PPP消息了。图4.18只展示了图4.17②-2部分,其他部分也是一样的。总之,只要将PPP消息装入以太网包中进行传输,ADSL和FTTH就也可以像拨号上网一样通信了。
4.3.通过隧道将网络包发送给运营商
BAS除了作为用户认证的窗口之外,还可以使用隧道方式来传输网络包。所谓隧道,就类似于套接字之间建立的TCP连接。在TCP连接中,我们从一侧的出口(套接字)放入数据,数据就会原封不动地从另一个出口出来,隧道也是如此。也就是说,我们将包含头部在内的整个包从隧道的一头扔进去,这个包就会原封不动地从隧道的另一头出来,就好像在网络中挖了一条地道,网络包从这个地道里穿过去一样。
像这样,如果在BAS和运营商路由器之间的ADSL/FTTH接入服务商的网络中建立一条隧道,将用户到BAS的接入网连接起来,就形成了一条从用户一直到运营商路由器的通道,网络包通过这条通道,就可以进入互联网内部了,这样的机制就类似于将接入网一直延伸到运营商路由器。
隧道有几种实现方式,刚才提到的TCP连接就是其中一种实现方式(图4.19(a))。这种方式中,首先需要在网络上的两台隧道路由器$^1$之间建立TCP连接,然后将连接两端的套接字当作是路由器的端口,并从这个端口来收发数据。换句话说,在路由器收发包时,是基于隧道的规则向隧道中放入或取出网络包,这时,TCP连接就好像变成了一根网线,包从这里穿过到达另一端。
- 只要具备隧道功能,是不是路由器无所谓,有时也会使用服务器来建立隧道。
图4.19(b)中还介绍了另一种基于封装(encapsulation)的隧道实现方式,这种方式是将包含头部在内的整个包装入另一个包中传输到隧道的另一端。在这种方式中,包本身可以原封不动地到达另一端的出口,从结果上看和基于TCP连接的方式是一样的,都实现了一个可供包进行穿梭的通道。
通过前面的介绍大家可以发现,无论任何机制,只要能够将包原封不动搬运到另一端,从原理上看就都可以用来建立隧道。
4.4.接入网的整体工作过程
理解了PPPoE和隧道的原理之后,下面来看看接入网的整体工作过程。接入网的工作从用户端的互联网接入路由器进行连接操作开始。首先,接入路由器中需要配置运营商分配的用户名和密码$^1$。然后,接入路由器会根据PPPoE的发现机制来寻找BAS。这一机制和ARP一样是基于广播来实现的,过程如下,很简单。
- 如果不使用路由器而是从计算机直接上网的情况下,需要在计算机中配置用户名和密码,这时计算机会代替路由器完成PPPoE操作,实际上这才是最初的原始方式。
用户询问:“BAS在不在?在的话请报告MAC地址。”
BAS回答:“我在这里,我的MAC地址是xx:xx:xx:xx:xx:xx。”
这样用户端就知道了BAS的MAC地址,也就可以和BAS进行通信了。大家可以认为前面这个过程相当于拨号上网中拨通电话的动作(图4.17①-1和①-2)。
接下来,如图4.17②-1到②-4中所示,进入用户认证和下发配置的阶段。这里的工作过程有点复杂,我们只说重点。第一个重点是用户名和密码如何发送给BAS。这里有两种方式,一种是将密码进行加密的CHAP$^1$方式,另一种是不加密的PAP$^2$方式,在互联网接入路由器的设置画面中可以选择。进行加密的CHAP方式显然安全性更高,一般也推荐使用这种方式,但也并不是说使用不加密的PAP方式密码就立刻会被窃取。由于明文密码只在BAS和用户端路由器之间传输$^3$,所以如果要窃取密码,要么在路由器和ADSL Modem中间进行窃听,要么爬到电线杆上安装窃听装置拾取电缆中泄漏的电磁波。不过,光纤是不会泄漏电磁波的,因此无法通过第二种方式进行窃听。
- CHAP:Challenge Handshake Authentication Protocol,挑战握手认证协议。
- PAP:Password Authentication Protocol,密码验证协议。
- 从BAS向认证服务器发送密码时使用RADIUS协议,无论用户拨入使用CHAP还是PAP,RADIUS都是加密的。
第二个重点是,在校验密码之后BAS如何向用户下发TCP/IP配置信息。这里下发的配置信息包括分配给上网设备的IP地址$^1$、DNS服务器的IP地址以及默认网关的IP地址。当使用路由器连接互联网时,路由器会根据这些信息配置自身的参数。这样一来,路由器的BAS端的端口就有了公有地址$^2$,路由表中也配置好了默认网关,接下来就可以将包转发到互联网中了。
- 互联网中使用的公有地址。
- 局域网端口一般是由用户分配一个私有地址。
接下来,客户端就会开始发送用来访问互联网的网络包,比如有人在浏览器里输入了一个网址,这时网络包就开始发送了。这些包的目的地是互联网中的某个地方,这个地方或许在互联网接入路由器的路由表里是找不到的。这时,路由器会选择默认路由,并将这个包转发给默认路由的网关地址,也就是BAS下发的默认路由。这里的操作过程和第3章介绍的路由器转发包的过程相同,只不过在通过路由表判断转发目标之后,包不是按照以太网规则转发,而是按照PPPoE规则转发,具体的过程如下。首先,如图4.20,要发送的包会被加上头部信息,并设置相应的字段。第一个MAC头部中,接收方MAC地址填写通过PPPoE发现机制查询到的BAS的MAC地址,发送方MAC地址填写互联网接入路由器的BAS端的端口的MAC地址,然后以太类型填写代表PPPoE的8864(十六进制)。接下来是PPPoE头部和PPP头部,它们包含的字段如图4.20所示,其中除了载荷长度之外,其他的值都是可以事先确定的,载荷长度就是需要传输的包的长度。再往后的部分就是包含IP头部在内的原始网络包。可以说,这里的转发操作中基本上不需要根据头部中的信息进行判断,只要将事先准备好的头部加上去就可以了。然后,网络包会被转换成信号,从相应的端口发送出去。
接下来,网络包会到达BAS,而BAS会将MAC头部和PPPoE头部去掉,取出PPP头部以及后面的部分,然后通过隧道机制将包发送出去。最后,PPP包会沿隧道到达另一端的出口,也就是网络运营商的路由器。
4.5.不分配IP地址的无编号端口
前面介绍了PPPoE的工作过程,这里面有一个有趣的问题,就是互联网接入路由器在发送包的时候为什么要加上那些头部呢?头部里面的值基本上都是事先定好的,跟路由表里面的默认网关地址根本没什么关系。当采用一对一连接,也就是两台路由器的端口用一根线直接连起来的情况下,一端发送的包肯定会到达另一端,那么这种情况下就没有必要按照路由表查询默认网关来判断转发目标地址了。如果没有必要判断转发地址,那么网关的地址也就没什么用了;如果网关地址没用,那么目标路由器的端口也用不着分配IP地址了。上面的性质对于所有一对一连接都是适用的$^1$。
- PPPoE是工作在以太网上的协议,可以通过集线器与路由器和BAS连接,因此从物理层面的连接形态来看并不是一对一的。不过,通过发现机制开始和BAS通信后,逻辑层面上就是一对一通信,因此这一性质也是适用的。
以前,即便是在这样的场景中,还是会为每个端口分配IP地址,这是因为有一条规则规定所有的端口都必须具有IP地址。然而,当公有地址越来越少时,就提出了一个特例,即一对一连接的端口可以不分配IP地址。现在,在这种场景中按惯例都是不为端口分配IP地址的$^1$,这种方式称为无编号(unnumbered)。这种情况下,BAS下发配置信息时就不会下发默认网关的IP地址。
- 如果不应用特例而是照常分配IP地址也是没有问题的。
4.6.互联网接入路由器将私有地址转换成公有地址
前面的介绍里面其实遗漏了一个地方,那就是互联网接入路由器在转发包时需要进行地址转换。刚才我们讲过,BAS会向用户端下发TCP/IP的配置信息,如果将这些信息配置在计算机上,就相当于计算机拥有了公有地址,这种情况下不需要进行地址转换也可以访问互联网。其实TCP/IP原本的设计就是这样的。然而,如果使用路由器来上网,BAS下发的参数就会被配置在路由器上,而且公有地址也是分配给路由器的。这样一来,计算机就没有公有地址了。
这时,计算机会被分配一个私有地址,计算机发送的包需要通过路由器进行地址转换然后再转发到互联网中。Web和电子邮件等应用程序不会受到地址转换的影响,但有些应用程序会因为地址转换无法正常工作,这一点需要大家注意。这是因为有些应用程序需要将自己的IP地址告知通信对象或者告知控制服务器,但在有地址转换的情况下这些操作无法完成$^1$。
- 网络电话、聊天、对战游戏等需要客户端之间直接收发网络包的应用程序都需要将自己的IP地址告知对方。这些应用程序会受到地址转换的影响,但现在已经有很多解决方案,因此不能说这些应用程序全都不能正常工作。对于某个应用程序来说,如果不知道它是否采用了相应的解决方案,就无法判断它是否会受到地址转换的影响。
遇到应用程序因地址转换无法正常工作的情况时,我们可以不使用路由器,而是直接让计算机接收来自BAS的PPPoE消息$^1$,也就是采用最原始的上网方法。这样一来,计算机就具有了公有地址,不需要地址转换也可以上网了$^2$。
- 只要将计算机直接连接到ADSL Modem、光纤收发器、ONU等设备,或者是通过集线器连接到这些设备,计算机就可以直接接收PPPoE消息了。
- 有一些面向公司提供的服务,如IP8、IP16等,可以分配多个公有地址,但这种服务非常昂贵。
不过,不用路由器上网也有一点需要注意,因为上网的计算机拥有公有地址,这意味着来自互联网的包可以直接到达计算机,这可能导致计算机被攻击。因此,对于直接上网的客户端计算机,我们应该采取安装防火墙软件等防御手段。
4.7.除PPPoE之外的其他方式
刚才我们讲的内容都是基于PPPoE方式的,实际的接入网还有其他一些方式。
首先,我们先看看使用PPPoA$^1$方式的ADSL接入网$^2$。ADSL使用PPPoE方式时,是先将PPP消息装入以太网包中,然后再将以太网包拆分并装入信元,而PPPoA方式是直接将PPP消息装入信元(图4.21)。由于只是开头加不加MAC头部和PPPoE头部的区别,PPP消息本身是没有区别的,因此密码校验、下发TCP/IP配置参数、收发数据包等过程都是和PPPoE基本相同的。不过,虽然开头加不加MAC头部和PPPoE头部看上去只是很小的区别,但却会对用户体验产生一定的影响。
- PPPoA:Point-to-Point Protocol over ATM。
- PPPoA不能用于FTTH,因为FTTH不使用ATM信元。
由于PPPoA没有MAC头部,所以PPP消息是无法通过以太网来传输的,这就意味着需要和BAS收发PPP消息的设备,也就是计算机和路由器,必须和ADSL Modem是一体的,否则PPP机制就无法工作了。这个一体化的方式主要有以下两种。
第一种是将计算机和ADSL Modem用USB接口连接起来,这样ADSL Modem就和计算机成为一体了。不过,这种方式最终并没有普及。另一种方式是像图4.21所示的这样,将ADSL Modem和路由器整合成一台设备。这种方式和PPPoE中使用路由器上网的方式基本没什么区别,因此得到了广泛的普及。不过,正如我们刚才提到的,当由于地址转换产生问题时,这种方式就不容易处理了,因为我们无法抛开路由器用计算机直接上网。
当然,PPPoA和PPPoE相比也有一些优势。PPPoE方式中,如图4.18所示,需要添加PPPoE头部和PPP头部,这意味着MTU就相应变小了$^1$,这可能会降低网络的效率。而PPPoA不使用以太网包来传输PPP消息,因此不会发生MTU变小的问题。
- PPPoE一般还会和隧道技术一起使用,这时还需要加上隧道头部,MTU就更短了。
PPPoE会降低网络效率,PPPoA也有ADSL Modem和路由器无法分离的限制,这两个问题其实都是由PPP引起的。因此,有一些运营商不使用PPP,他们使用DHCP$^1$协议从BAS向用户端下发TCP/IP配置信息。
- DHCP:Dynamic Host Configuration Protocol,动态主机配置协议。
DHCP经常用于通过公司网络向客户端计算机下发TCP/IP配置信息,其原理如图4.22所示,首先客户端请求配置信息(图4.22①),然后DHCP服务器下发配置信息(图4.22②),非常简单,不需要像PPP(图4.17)那样需要多个步骤,也不需要验证用户名和密码。没有用户名和密码,就意味着无法通过用户名来切换运营商网络,但这种方式也有优势,它可以单纯地直接传输以太网包,不需要添加额外的PPP头部,因此不会占用MTU。
此外,采用DHCP的运营商使用的ADSL Modem也和PPPoE、PPPoA方式不同,这种ADSL Modem不使用信元,而是直接将以太网包调制成ADSL信号,因此没有ADSL Modem和路由器无法分离的问题$^1$。
- 使用信元的PPPoE和PPPoA方式中,BAS需要配备比较昂贵的ATM接口,因此不使用信元还可以控制成本。
5.网络运营商的内部
5.1.POP和NOC
下面回到正题,现在网络包已经通过接入网,到达了网络运营商的路由器。这里是互联网的入口,网络包会从这里进入互联网内部$^1$。
- 简单来说,此后网络包的传输轨迹就是通过路由器的不断转发向目的地前进,基本过程和我们之前介绍的内容大同小异。
互联网的实体并不是由一个组织运营管理的单一网络,而是由多个运营商网络相互连接组成的(图4.23)。ADSL、FTTH等接入网是与用户签约的运营商设备相连的,这些设备称为POP$^1$,互联网的入口就位于这里。
- POP:Point of Presense,中文一般叫作“接入点”。
网络包通过接入网之后,到达运营商POP的路由器。
那么,POP里面是什么样的呢?POP的结构根据接入网类型以及运营商的业务类型不同而不同,大体上是图4.24中的这个样子。POP中包括各种类型的路由器,路由器的基本工作方式是相同的,但根据其角色分成了不同的类型。图4.24中,中间部分列出了连接各种接入网的路由器,这里的意思就是根据接入网的类型需要分别使用不同类型的路由器。
我们从上面开始看,首先是专线,这里用的路由器就是具有通信线路端口的一般路由器。专线不需要用户认证、配置下发等功能$^1$,因此用一般的路由器就可以了。接下来是电话、ISDN等拨号方式的接入网,这里使用的路由器称为RAS。拨号接入需要对用户拨电话的动作进行应答,而RAS就具备这样的功能。此外,之前我们讲过通过PPP协议进行身份认证和配置下发的过程,RAS也具备这些功能。再往下是PPPoE方式的ADSL和FTTH。PPPoE方式中,ADSL、FTTH接入服务商会使用BAS,运营商的路由器则与BAS相连。PPPoE中的身份认证和配置下发操作由接入服务商的BAS来负责,运营商的路由器只负责对包进行转发,因此这里也是使用一般的路由器就可以了。如果ADSL采用PPPoA方式接入,那么工作过程会有所不同,DSLAM通过ATM交换机$^2$与ADSL的运营商的BAS相连,然后再连接到运营商的路由器。用户端传输的信号先经过ADSL Modem拆分成ATM信元并进行调制,然后DSLAM将信号还原成信元,通过ATM交换机转发到BAS,最后BAS将信元还原成网络包,再通过运营商的路由器转发到互联网内部。
- 专线是固定连接线路,不需要进行身份认证,参数是根据传真、书面等方式下发后进行手动配置的,因此也不需要PPP、DHCP等机制。其实,这就是最古老的互联网接入方式。
- ATM交换机是转发ATM信元的设备,负责将DSLAM输出的信元转发给BAS。
对于连接接入网的部分来说,由于要连接的线路数量很多,所以路由器需要配备大量的端口,但能传输的网络包数量相对比较少,这是因为接入网的速率比互联网核心网络要低。因此,端口多且价格便宜的路由器适用于这些场景。相对地,图中左侧的路由器用于连接运营商和核心NOC以及其他POP,所有连接接入网的路由器发出的包都会集中到这里,使用的线路速率也比较高,因此这里需要配备转发性能和数据吞吐量高的路由器。
NOC$^1$是运营商的核心设备,从POP传来的网络包都会集中到这里,并从这里被转发到离目的地更近的POP,或者是转发到其他的运营商。这里也需要配备高性能的路由器。
- NOC:Network Operation Center,网络运行中心。
话说回来,到底需要多高的性能才行呢?我们来看实际产品的参数。面向运营商的高性能路由器中有些产品的数据吞吐量超过1Tbit/s$^1$,而一般面向个人的路由器的数据吞吐量也就100Mbit/s左右,两者相差1万多倍。当然,路由器的性能不完全是由吞吐量决定的,但从这里可以看出规模和性能的差异。
- T表示$10^{12}$。
其实,NOC和POP并没有非常严格的界定。NOC里面也可以配备连接接入网的路由器,很多情况下是和POP共用的。从IP协议的传输过程来看,也没有对两者进行区分的必然性,因为无论是哪个路由器,其转发网络包的基本工作原理都是相同的。因此,大家可以简单地认为,NOC就是规模扩大后的POP$^1$。
- 运营商内部似乎只要有路由器就行了,但实际上POP和NOC中的设备不只有路由器。因为运营商还会提供如网站、邮件等各种服务,所以机房里面还会配备各种服务器。
5.2.室外通信线路的连接
POP和NOC遍布全国各地,它们各自的规模有大有小,但看起来跟公司里的机房没什么太大区别,都是位于一幢建筑物中的,其中的路由器或者通过线路直接连接,或者通过交换机进行连接,这些和公司以及家庭网络都是相同的。只不过,公司的机房一般使用双绞线来连接设备,但运营商的网络中需要传输大量的包,已经超过了双绞线能容纳的极限,因此一般还是更多地使用光纤$^1$。
- 光纤基本上和FTTH没有区别,只不过在大楼内部短距离连接时,一般采用多模光纤。
大楼室内可以用线路直接连接,对于距离较远的NOC和POP来说,它们之间的连接方式可以分为几种。
对于自己拥有光纤$^1$的运营商来说,可以选择最简单的方式,也就是用光纤将NOC和POP直接连接起来。
- 比如,电话公司由于自身业务需要,通过电线杆等方式铺设了很多光纤,那么这些公司属于拥有光纤的。电力公司通过继承电线杆上架设的光纤来开展通信业务,也算是自己拥有光纤的。此外,高速公路沿途铺设的光纤也会归一些公司所有,因此拥有光纤的方式是多种多样的。
这种方式虽然想法简单,但实现起来却并不简单。光纤需要在地下铺设,需要很大的工程费用,而且当线路发生中断时还必须进行维修,这些维护工作也需要费用。因此,只有有限的几家大型运营商才拥有光纤。
那么,其他运营商怎么办呢?其实也不难,只要从其他公司租借光纤就可以了,但所谓租借并不是光纤本身。
拥有光纤的公司一般都会提供光纤租用服务。以电话公司为例,电话公司会在其拥有的光纤中传输语音数据,但一条光纤并不是只能传输一条语音数据,光纤是可以复用的,一条语音数据只占其通信能力的一部分。换句话说,电话公司可以将自己的光纤的一部分通信能力租借给客户。对于客户来说,只要支付一定的费用就可以使用其中的通信能力了。对于电话公司来说,其拥有的光纤不会全部自己使用,通过租借的方式也可以带来一定的收益,无论其业务本质是电话还是互联网,这一点都是共通的$^1$。这种服务就叫作通信线路服务。
- 互联网之外的其他通信线路服务在本质上都是一样的。
不拥有光纤的运营商则可以使用租借通信线路的方式将相距较远的NOC和POP连接起来。电话使用的通信线路(电话线)只能传输语音这种单一形式的数据,但运营商使用的通信线路则种类繁多。首先,在速率上就分为很多种,其中比较快的种类,其速率为电话线的100万倍左右。除了速率之外,数据的传输方式也分为很多种。以前,将多条电话线捆绑在一起的方式比较主流,现在我们有了各种类型的通信线路,其中也有一些公司不对光纤进行细分,而是直接将整条光纤租借出去$^1$。不同的通信方式和速率对应着不同的价格,对于不拥有光纤的运营商来说,需要根据需要从中进行选择。
- 这种服务称为Dark Fibre,中文一般叫作“直驳光纤”。
6.跨越运营商的网络包
6.1.运营商之间的连接
让我们重新回到运营商内部,看一看到达POP路由器之后,网络包是如何前往下一站的。首先,如果最终目的地Web服务器和客户端是连接在同一个运营商中的,那么POP路由器的路由表中应该有相应的转发目标。运营商的路由器可以和其他路由器交换路由信息,从而自动更新自己的路由表,通过这一功能,路由信息就实现了自动化管理。于是,路由器根据路由表中的信息判断转发目标,这个转发目标可能是NOC,也可能是相邻的POP,无论如何,路由器都会把包转发出去,然后下一个路由器也同样根据自己路由表中的信息继续转发。经过几次转发之后,网络包就到达了Web服务器所在的POP的路由器,然后从这里被继续转发到Web服务器。
那么,如果服务器的运营商和客户端的运营商不同又会怎样呢?这种情况下,网络包需要先发到服务器所在的运营商,这些信息也可以在路由表中找到,这是因为运营商的路由器和其他运营商的路由器也在交换路由信息。我们暂且认为路由表中能找到对方运营商的路由信息,这时网络包会被转发到对方运营商的路由器。
总之,对于互联网内部的路由器来说,无论最终目的地是否属于同一家运营商,都可以从路由表中查到,因此只要一次接一次按照路由表中的目标地址来转发包,最终一定可以到达Web服务器所在的POP。这样一来,我们就可以把包发到任何地方,包括地球的另一面。
6.2.运营商之间的路由信息交换
只要路由表中能够查到,我们当然可以把包发到任何地方,包括地球的另一面,但这些路由信息是如何写入路由表的呢?如果路由表中没有相应的路由信息,路由器就无法判断某个网络的位置,也就无法对包进行转发,也就是说,仅仅用线路将路由器连起来,是无法完成包转发的。下面我们来看看运营商之间是如何交换路由信息,并对路由器进行自动更新的。
如图4.25所示,只要让相连的路由器告知路由信息就可以了。只要获得了对方的路由信息,就可以知道对方路由器连接的所有网络,将这些信息写入自己的路由表中,也就可以向那些网络发送包了。
获得对方的路由信息之后,我们也需要将自身的路由信息告知对方。这样一来,对方也可以将发往我们所在子网的包转发过来。这个路由信息交换的过程是由路由器自动完成的,这里使用的机制称为BGP$^1$。
- BGP:Border Gateway Protocol,边界网关协议。
根据所告知的路由信息的内容,这种路由交换可分为两类。一类是将互联网中的路由全部告知对方。例如图4.26中,如果运营商D将互联网上所有路由都告知运营商E,则运营商E不但可以访问运营商D,还可以访问运营商D后面的运营商B、A和C。然后,通过运营商D就可以向所有的运营商发送包。像这样,通过运营商D来发送网络包的方式称为转接。
另一种类型是两个运营商之间仅将与各自网络相关的路由信息告知对方。这样,只有双方之间的网络可以互相收发网络包,这种方式称为非转接,也叫对等$^1$。
- 对等的英文是peer,BGP规格中将互相交换路由信息的节点都称为peer,但BGP的peer实际上包含了转接和非转接两种节点,但“对等”的peer仅包括非转接的节点,它们的意思不同,请不要混淆。
6.3.与公司网络中自动更新路由表机制的区别
路由器之间相互交换信息自动更新路由表的方式在公司网络中也会用到,不过公司内部和运营商之间在路由交换方式上是有区别的。
公司中使用的方式是寻找与目的地之间的最短路由,并按照最短路由来转发包,因此,周围的所有路由器都是平等对待的。
公司内部采用这样的方式没问题,但运营商之间就不行了。假设某个运营商拥有一条连接日本和美国的高速线路,那么要访问美国的地址时,可能这条线路是最短路由。如果单纯采用最短路由的方式,那么其他运营商的包就都会走这条线路,这时,该运营商需要向其他运营商收取相应的费用,否则就成义务劳动了。在这种情况下,如果使用最短路由的方式,就无法区分哪个运营商交了费,哪个运营商没交费,也就是说无法阻止那些没交费的运营商使用这条线路,这样就很难和对方进行交涉了。
正是出于这样的原因,互联网中不能单纯采用最短路由,而是需要一种能够阻止某些来源的网络包的机制,互联网的路由交换机制就具有这样的功能。
首先,互联网中可以指定路由交换的对象。公司中,路由信息是在所有路由器间平等交换的,但运营商之间的路由交换是在特定路由器间一对一进行的。这样一来,运营商就可以只将路由信息提供给那些交了费的运营商,那些没交费的运营商也就无法将网络包发送过来了。
其次,在判断路由时,该机制不仅可以判断是否是最短路由,还可以设置其他一些判断因素。例如当某个目的地有多条路由时,可以对每条路由设置优先级。
运营商之间需要对交换路由信息的对象进行判断和筛选,但这样一来,对于没有交换路由信息的运营商网络,我们就无法将网络包发送过去了,如果要访问的Web服务器就在那个运营商网络中,我们不就访问不了了吗?其实不用担心,运营商在进行路由交换时会避免出现这样的情况。互联网中有很多运营商,每个运营商都和其他多个运营商相互连接。因此,如果一个运营商走不过去,可以走另一个运营商,无论网络包要发送到什么地方,都会确保能够获取相应的路由信息。如果某个运营商做不到这一点,那它也就该倒闭了。
6.4.IX的必要性
图4.26中有一个叫作IX$^1$的东西,我们来说说它是干什么用的。对于两个运营商来说,像图4.26中运营商D和运营商C这样一对一的连接是最基本的一种连接方式,现在也会使用这种方式。但这种方式有个不方便的地方,如果运营商之间只能一对一连接,那么就需要像图4.27(a)这样将所有的运营商都用通信线路连接起来。这样连接非常困难。对于这种情况,我们可以采用图4.27(b)的方式,设置一个中心设备,通过连接到中心设备的方式来减少线路数量,这个中心设备就称为IX。
- IX:Internet eXchange,中文一般叫作“互联网交换中心”。
6.5.运营商如何通过IX互相连接
下面我们来探索一下IX。首先是IX的部署场所。为了保证在遇到停电、火灾等事故,以及地震等自然灾害时,路由器等网络设备还能继续工作,IX所在的大楼都装有自主发电设备,并具有一定的抗震能力。其实这样的要求也不仅限于IX,运营商的NOC也是一样。
IX的核心是具有大量高速以太网端口的二层交换机(图4.28)。二层交换机的基本原理和一般交换机相同,大家可以认为IX的核心就是大型的、高速的交换机。
接下来就是将各个运营商的路由器连接到IX核心交换机上,连接方法有几种。首先,当运营商NOC和IX位于同一幢大楼里时,只要从NOC中将光纤延长出来接到IX交换机就可以了(图4.28①)。这种情况和公司、家庭网络中的路由器与交换机的连接方法是相同的。这种方法很简单,但如果NOC和IX不在同一幢大楼里又该怎么办呢?我们可以用通信线路将路由器和交换机连起来。这种情况下有两种连法,一种是从路由器延伸出一根通信线路并连接到IX交换机上(图4.28②),另一种是将路由器搬到IX机房里,用通信线路将路由器和NOC连起来,再将路由器连到IX交换机上(图4.28③)。
以前IX交换机都是放在一个地方的,也就是呈点状分布的。现在这些点状设施已经逐步扩张,在数据中心等网络流量集中的地方一般都会设置IX终端交换机,各运营商的路由器在这里连接到终端交换机上(图4.28④)。IX已经从点扩张到线,甚至到面了。
下面我们来看一看网络包具体是如何传输的。其实这里并没有什么特别需要解释的,因为IX的交换机和一般的交换机在工作方式上没有区别,路由器发送网络包时,先通过ARP查询下一个路由器的MAC地址,然后将其写入MAC头部发送出去即可。只要填写了正确的MAC地址,就可以向任何运营商的路由器发送包。不过实际上,要成功发送包还需要正确的路由信息,对于没有进行路由交换的运营商,我们是无法向其发送包的。这需要运营商之间通过谈判签订合约,然后按照合约来交换路由信息,实现网络包的收发。