网络是怎样连接的——接入网和网络运营商

ADSL 接入网的结构和工作方式

互联网的基本结构和家庭、公司网络是相同的

和家庭、公司网络一样,互联网也是通过路由器来转发包的,而且路由器的基本结构和工作方式也并没有什么不同。因此,我们可以将互联网理解为家庭、公司网络的一个放大版。

当然,互联网也有一些和家庭、公司网络不同的地方,其中之一就是与转发设备间的距离。在家庭、公司网络中,与转发设备之间的距离不过几十米到几百米,在这种情况下,只要延长以太网线就可以到达相邻的转发设备了。然而,互联网可不能这么搞,因为你家到最近的电话局至少也有几公里的距离,而从日本连接到美国甚至要跨越太平洋,用以太网线是无法实现这种连接的。

除了距离之外,路由器在如何控制包的转发目标上也不一样。尽管从基本原理来看,互联网也是根据路由表中的记录来判断转发目标的,但路由表记录的维护方式不同。互联网中的路由器上有超过 10 万条路由记录,而且这些记录还在不断变化,当出现线路故障时,或者新的公司加入互联网时,都会引发路由的变化。人工维护这些路由信息是不现实的,必须实现自动化。公司的路由器也有自动维护路由表的机制,但出于各种原因,互联网中采用的机制和公司有所区别。

距离的不同和路由的维护方式,就是互联网与家庭、公司网络之间最主要的两个不同点。

连接用户与互联网的接入网

网络包通过交换机和路由器的转发一步一步地接近它的目的地,在通过互联网接入路由器之后,就进入了互联网。

路由器的转发操作都是相同的,因此互联网接入路由器的包转发操作和以太网路由器几乎是一样的。简单来说,就是根据包 IP 头部中的接收方 IP 地址在路由表的目标地址中进行匹配,找到相应的路由记录后将包转发到这条路由的目标网关。不过,互联网接入路由器发送网络包的操作和以太网路由器有一点不同,互联网接入路由器是按照接入网规则来发送包的。

所谓接入网,就是指连接互联网与家庭、公司网络的通信线路。一般家用的接入网方式包括 ADSL、FTTH、CATV、电话线、ISDN 等,公司则还可能使用专线。接入网的线路有很多种类,我们无法探索所有这些线路,因此以 ADSL 为例。

ADSL Modem 将包拆分成信元

ADSL 技术使用的接入线路,其内部结构如图。

在这张图中网络包是从右往左传输的。用户端路由器发出的网络包通过 ADSL Modem 和电话线到达电话局,然后到达 ADSL 的网络运营商(即 ISP,互联网服务提供商)。在网络包从用户传输到运营商的过程中,会变换几种不同的形态,整个过程如图。

首先,客户端生成的网络包(①和②)先经过集线器和交换机到达互联网接入路由器(③),并在此从以太网包中取出 IP 包并判断转发目标(④),和以太网路由器的工作方式是一样的。接下来,包发送的操作也很类似。如果互联网接入路由器和 ADSL Modem 之间是通过以太网连接的,那么就会按照以太网的规则执行包发送的操作,发送信号本身的过程跟之前是一样的,但以太网的头部会有一些差异。这部分的具体情况各运营商会有所不同。这里大家先记住,网络包会加上 MAC 头部、PPPoE 头部、PPP 头部总共 3 种头部(⑤),然后按照以太网规则转换成电信号后被发送出去。

互联网接入路由器会在网络包前面加上 MAC 头部、PPPoE 头部、PPP 头部总共 3 种头部, 然后发送给 ADSL Modem(PPPoE 方式下)。

互联网接入路由器将包发送出去之后,包就到达了 ADSL Modem(⑥),然后,ADSL Modem 会把包拆分成很多小格子(⑦),每一个小格子称为一个信元。信元是一个非常小的数据块,开头是有 5 个字节的头部,后面是 48 个字节的数据,用于一种叫作 ATM 的通信技术。

可以将信元理解为一种更小一号的包,原理上跟 TCP/IP 将应用程序的数据拆分成块装进一个个包的过程是一样的。

之所以要将包拆分成信元,原因是这样的。当初开发 ADSL 技术时,通信业比较看好 ATM 技术,各运营商也在 ATM 相关的设备上投入了很多资金。在这样的情况下,如果使用信元来传输数据,就比较容易和其他设备进行整合,可以降低开发投入和设备投入。如果不是出于这样的原因,其实并不需要将包拆分成信元,实际上也有一些 ADSL 运营商使用的 ADSL Modem 是不进行数据拆分的。

ADSL Modem 将包拆分成信元,并转换成电信号发送给分离器。

ADSL 将信元“调制”成信号

将网络包拆分成信元之后,接下来就要将这些信元转换成信号了(⑧)。以太网采用的是用方波信号表示 0 和 1 的方式,这种方式很简单,但同样是将数字信息转换成模拟信号,ADSL 采用的方法要复杂一些。其中有两个原因,一个原因是方波信号的波形容易失真,随着距离的延长错误率也会提高;另一个原因是方波信号覆盖了从低频到高频的宽广频段,信号频率越高,辐射出来的电磁噪声就越强,因此信号频谱太宽就难以控制噪声。

因此,ADSL Modem 采用了一种用圆滑波形(正弦波)对信号进行合成来表示 0 和 1 的技术,这种技术称为调制。调制有很多方式,ADSL 采用的调制方式是振幅调制(ASK)和相位调制(PSK)相结合的正交振幅调制(QAM)方式。下面先来看一下它的两个组成要素。

振幅调制是用信号的强弱,也就是信号振幅的大小来对应 0 和 1 的方式。如图(b),振幅小的信号为 0,振幅大的信号为 1,这是一种最简单的对应关系。在这个例子中,振幅大小只有两个级别,如果增加振幅变化的级别,就可以对应更多的比特。例如,如果将振幅增加到 4 个级别,则振幅从小到大可分别对应 00、01、10 和 11,这样就可以表示两个比特了。这样做可以将单位时间内传输的数据量加倍,也就能够提高速率。以此类推,如果振幅有 8 个级别,就可以表示 3 个比特,16 个级别就可以表示 4 个比特,速率也就越来越高。不过,信号会在传输过程中发生衰减,也会受到噪声影响而失真,如果振幅级别太多,接收方对信号的识别就容易出错,因此振幅级别也不能太多。

另一个组成要素是相位调制,这是一种根据信号的相位来对应 0 和 1 的方式。Modem 产生的信号是以一定周期振动的波,如图,振动的起始位置不同,波的形状也就不同。如果将波的一个振动周期理解为一个圆,则起始位置就可以用 0 度到 360 度的角度来表示,这个角度就是相位,用角度来对应 0 和 1 的方式就叫作相位调制。例如,从 0 度开始的波为 0,从 180 度开始的波为 1,这是一种最简单的对应关系,如图(c)所示。和振幅调制一样,相位调制也可以通过将角度划分为更细的级别来增加对应的比特数量,从而提高速率。但是,角度太接近的时候也容易产生误判,因此这样提升速率还是有限度的。

ADSL 使用的正交振幅调制就是将前面这两种方式组合起来实现的。 图(d)就是将图(b)和图(c)组合起来的一个例子,大家应该一看就明白了。如果信号的振幅可以表示 1 个比特,相位可以表示 1 个比特,那么加起来就可以表示 2 个比特。因此,将两种方式组合起来,正交振幅调制就可以用一个波表示更多的比特,从而提高传输速率。

正交振幅调制中,通过增加振幅和相位的级别,就可以增加能表示的比特数。例如,如果振幅和相位各自都有 4 个级别,那么组合起来就有 16 个级别,也就可以表示 4 个比特的值。当然,和单独使用振幅调制或相位调制的情况一样,级别过多就容易发生误判,因此这种方法提升的速率是有限度的。

ADSL 通过使用多个波来提高速率

实际上信号不一定要限制在一个频率。不同频率的波可以合成,也可以用滤波器从合成的波中分离出某个特定频率的波。因此,我们可以使用多个频率合成的波来传输信号,这样一来,能够表示的比特数就可以成倍提高了。

ADSL 就是利用了这一性质,通过多个波增加能表示的比特数来提高速率的。具体来说,如图,ADSL 使用间隔为 4.3125 kHz 的上百个不同频率的波进行合成,每个波都采用正交振幅调制,而且,根据噪声等条件的不同,每个波表示的比特数是可变的。也就是说,噪声小的频段可以给波分配更多的比特,噪声大的频段则给波分配较少的比特,每个频段表示的比特数加起来,就决定了整体的传输速率。

ADSL 技术中,上行方向(用户到互联网)和下行方向(互联网到用户)的传输速率是不同的,原因也在这里。如果上行使用 26 个频段,下行则可以使用 95 个或者 223 个频段,波的数量不同,导致了上下行速率不同。

当然,下行使用的频段较高,这些信号容易衰减而且更容易受到噪声的影响,因此这些频段可能只能表示较少的比特数,或者干脆无法传输信号。距离越远,频率越高,这种情况也就越显著,因此如果你家距离电话局太远,速率就会下降。

噪声和衰减等影响线路质量的因素在每条线路上都不同,而且会随着时间发生变化。因此,ADSL 会持续检查线路质量,动态判断使用的频段数量,以及每个频段分配到的比特数。具体来说,当 Modem 通电后,会发送测试信号,并根据信号的接收情况判断使用的频段数量和每个频段的比特数,这个过程称为训练(握手),需要几秒到几十秒的时间。

分离器的作用

ADSL Modem 将信元转换为电信号之后,信号会进入一个叫作分离器的设备,然后 ADSL 信号会和电话的语音信号混合起来一起从电话线传输出去。在信号从用户端发送出去时,电话和 ADSL 信号只是同时流到一条线路上而已,分离器实际上并没有做什么事。

分离器的作用其实在相反的方向,也就是信号从电话线传入的时候。这时,分离器需要负责将电话和 ADSL 的信号进行分离。

电话线传入的信号是电话的语音信号和 ADSL 信号混合在一起的,如果这个混合信号直接进入电话机,ADSL 信号就会变成噪音,导致电话难以听清。为了避免这样的问题,就需要通过分离器将传入的信号分离,以确保 ADSL 信号不会传入电话机。具体来说,分离器的功能是将一定频率以上的信号过滤掉,也就是过滤掉了 ADSL 使用的高频信号,这样一来,只有电话信号才会传入电话机,但对于另一头的 ADSL Modem,则是传输原本的混合信号给它。ADSL Modem 内部已经具备将 ADSL 频率外的信号过滤掉的功能,因此不需要在分离器进行过滤。

大家可能会认为分离器的功能只是过滤掉高频信号,防止 ADSL 对电话产生干扰,而实际上它还可以防止电话对 ADSL 产生干扰。如果没有分离器,拿起电话听筒接通电话的状态,和放下听筒挂断电话的状态下,信号的传输方式是不同的。当放下听筒时,电话机的电路和电话线是断开的,当拿起听筒时电话机就和电话线相连,电话机的信号就会传到电话线上。

这两种状态的差异会导致噪声等线路状态的改变,如果 ADSL 通信过程中拿起话筒导致线路状态改变,就需要重新训练(握手),这就会导致几十秒的通信中断,分离器可以防止发生这样的问题。当然,也有一种技术能够快速重新握手,即便没有分离器也不会影响 ADSL 通信,G.992.2 的 ADSL 规格就包含这种技术,但 ADSL 信号还是会影响电话,因此 G.992.2 的 ADSL 规格中一般还是需要使用分离器。

从用户到电话局

从分离器出来,就是插电话线的接口,信号从这里出来之后,会通过室内电话线,然后到达大楼的 IDFA 和 MDFB,外面的电话线在这里和大楼内部的室内电话线相连接。如果是独栋住宅,就可以将室外线和室内线直接连起来。通过配线盘之后,信号会到达保安器。保安器是为了防止雷电等情况下电话线中产生过大电流的一种保护装置,内部有保险丝。

接下来,信号会进入电线杆上架设的电话电缆。电话线是一种直径 0.32~0.9 mm 的金属信号线,这些信号线如图所示被捆绑在一起。

电话电缆在用户住宅附近一般是架设在电线杆上,但中途会沿电线杆侧面的金属管进入地下。由于电话线必须进入很多住宅和大楼,所以电话局附近就会集结数量庞大的电缆,这么多电缆要通过电线杆引入电话局是非常不现实的,电话局周围得密密麻麻地立满了电线杆,而且电线杆上架设过多的电缆,还会产生防灾方面的问题。因此,在电话局附近,电话线都是埋在地下的。由于电话局附近的地下电缆很多,集中埋设电缆的地方就形成了一条地道,这部分称为电缆隧道。通过电缆隧道进入电话局后,电缆会逐根连接到电话局的 MDF 上。

噪声的干扰

电话电缆中的信号也会受到噪声的干扰。虽然电话线和以太网双绞线的结构有所不同,但它们都是用金属信号线传输电信号,本质上是共通的。
也就是说,电话线也会受到来自外部的噪声和来自内部的噪声(串扰)的干扰,导致信号失真。此外,电话线原本的设计并没有考虑到传输 ADSL 这样的高频信号,从这个角度上可以说它比以太网双绞线更容易受到噪声的干扰。

不过,电话线受到干扰的方式和双绞线有些不同。双绞线中只有一路方波信号,信号失真后就无法读取还原成数字信号,于是就会产生错误, 但 ADSL 信号受到干扰后并不会立即造成错误。ADSL 信号分布在多个频段上,只有和噪声频率相同的信号会受到影响而无法读取,即可用的信号数量减少,结果导致速率下降。

因此,电话线架设在噪声比较多的地方时,可能就会导致速率下降,比如电车线路旁边。电车的受电弓(pantograph)从架空接触网获取电力时会产生电火花释放噪声,ADSL 会因此受到干扰,导致速率下降。此外,ADSL 还会受到 AM 电台广播的干扰。

电缆内部产生的噪声也会形成干扰。图 4.8 中的四芯线内部,或者相邻子单元的附近如果同时存在 ADSL 和 ISDN 信号线,ISDN 发出的噪声就会干扰 ADSL。ADSL 刚刚开始普及的时候,大家还都比较关注防止 ISDN 干扰的技术,不过现在防止 ISDN 干扰的技术已经形成了,因此在使用 ADSL 时已经基本上没必要在意 ISDN 线路的问题了。

通过 DSLAM 到达 BAS

信号通过电话线到达电话局之后,会经过配线盘、分离器到达 DSLAMA (图 4.3 ⑨)。在这里,电信号会被还原成数字信息——信元(图 4.3 ⑩)。

DSLAM 通过读取信号波形,根据振幅和相位判断对应的比特值,将信号还原成数字信息,这一过程和用户端的 ADSL Modem 在接收数据时的过程是一样的。因此,如果在电话局里安装一大堆和用户端一样的 ADSL Modem,也可以完成这些工作,只不过安装这么多 Modem 需要占用大量的空间,而且监控起来也非常困难。因此,电话局使用了 DSLAM 设备,它是一种将相当于很多个 ADSL Modem 的功能集中在一个外壳里的设备。
不过,DSLAM 和用户端 ADSL Modem 相比还是有一个不同的地方。

用户端 ADSL Modem 具备以太网接口,可以与用户端的路由器和计算机交互,收发以太网包,而 DSLAM 一般不用以太网接口,而是用 ATM 接口,和后方路由器收发数据时使用的是原始网络包拆分后的 ATM 信元形式。

DSLAM 具有 ATM 接口,和后方路由器收发数据时使用的是原始网络包拆分后的 ATM 信元形式。

信元从 DSLAM 出来之后,会到达一个叫作 BAS 的包转发设备(图 4.3 k)。BAS 和 DSLAM 一样,都具有 ATM 接口,可以接收 ATM 信 元,还可以将接收到的 ATM 信元还原成原始的包(图 4.3 l)。到这里,BAS 的接收工作就完成了,接下来,它会将收到的包前面的 MAC 头部和 PPPoE 头部丢弃,取出 PPP 头部以及后面的数据(图 4.3 m)。MAC 头部和 PPPoE 头部的作用是将包送达 BAS 的接口,当接口完成接收工作后,它们就完成了使命,可以被丢弃了。具有以太网接口的路由器在接收到包之后也会丢弃其中的 MAC 头部,道理是一样的。接下来,BAS 会在包的前面加上隧道专用头部,并发送到隧道的出口(图 4.3 n)。
然后,网络包会到达隧道出口的隧道专用路由器(图 4.3 o),在这里隧道头部会被去掉,IP 包会被取出(图 4.3 p),并被转发到互联网内部(图 4.3 q)。

BAS 负责将 ATM 信元还原成网络包并转发到互联网内部。

光纤接入网(FTTH)

光纤的基本知识

通过 ADSL 接入网和 BAS 之后,网络包就到达了互联网内部,另一种接入网技术叫 FTTH,是一种基于光纤的接入网技术。FTTH 的关键点在于对光纤的使用。

光纤的结构如图所示,它是由一种双层结构的纤维状透明材质(玻璃和塑料)构成的,通过在里面的纤芯中传导光信号来传输数字信息。ADSL 信号是由多个频段的信号组成的,比较复杂,但光信号却非常简单,亮表示 1,暗表示 0。

不过,数字信息并不能一下子变成光信号,而是需要先将数字信息转换成电信号,然后再将电信号转换成光信号。这里的电信号非常简单,1 用高电压表示,0 用低电压表示。将这样的电信号输入 LED、激光二极管等光源后,这些光源就会根据信号电压的变化发光,高电压发光亮,低电压发光暗。这样的光信号在光纤中传导之后,就可以通过光纤到达接收端。接收端有可以感应光线的光敏元件,光敏元件可以根据光的亮度产生不同的电压。当光信号照射到上面时,光亮的时候就产生高电压,光暗的时候就产生低电压,这样就将光信号转换成了电信号。

最后再将电信号转换成数字信息,我们就接收到数据了。这就是光纤的通信原理。

单模与多模

光纤通信的关键技术就是能够传导光信号的光纤。光在透明材质中传导似乎听起来很简单,但实际上光的传导方式是非常复杂的,不同材质的光纤其透光率和折射率也不同,纤芯的直径等因素也会影响光的传导。其中,纤芯的直径对光的传导影响很大,要理解这一点,我们得先来看看光在光纤中是如何传导的。

首先,我们来看看光源发出的光是如何进入纤芯的。光源在所有方向上都会发光,因此会有各种角度的光线进入纤芯,但入射角度太大的光线会在纤芯和包层(纤芯外沿部分)的边界上折射出去,只有入射角较小的光线会被包层全反射,从而在纤芯中前进。

不过,也不是所有入射角小的光线都会在纤芯中传导。光也是一种波,因此光也有相位,当光线在纤芯和包层的边界上反射时,会由于反射角产生相位变化。当朝反射面前进的光线和被反射回来的光线交会时,如果两条光线的相位不一致,就会彼此发生干涉抵消,只有那些相位一致的光线才会继续在光纤中传导。

这个现象和往水面上投一颗石子产生的波纹是一样的。水波也有相位,在石子进入水面的瞬间,波纹中心会产生各种相位的波。不过,相位不同的波会相互干涉。相位不同的波在干涉后会变弱、消失,最后就只剩下相位相同的波向周围扩散开来。石子投入水面后扩散出来的波纹会形成同心圆状,一般大家对这样的现象已经习以为常,实际上只有相位相同的波才会扩散出来被我们看到。

如果周围没有障碍物,水面上的波纹会一直呈同心圆状扩散出去,但如果遇到两侧的墙壁,波纹就会被反射回来。这时,向墙壁前进的波和从墙壁反射回来的波就会相互叠加,其中相位相同的波相互加强,相位不同的波相互抵消。

光纤中的情况也是一样的,只不过和水波不同的是,光在被纤芯和包层的边界反射时,相位会发生变化。这个变化的量随光在反射面的反射角度不同而不同,大多数角度下,都会因为相位不同而被干涉抵消。不过,有几个特定的角度下,向反射面前进的光和反射回来的光的相位是一致的,只有以这些角度反射的光才能继续向前传导。进入光纤的光线有各种角度,但其中,只有少数按照特定角度入射以保持相位一致的光线才会继续传导。

这个角度非常关键,纤芯的直径也是根据这个角度来确定的,而且纤芯的直径大小会极大地改变光纤的性质。根据纤芯直径,光纤可以划分成几种类型,大体上包括较细的单模光纤(8~10 μm)和较粗的多模光纤(50 μm 或 62.5 μm)。单模光纤的纤芯很细,只有入射角很小的光线才能进入,因此在能够保持相位一致的角度中,只有角度最小的光线能进入光纤。

反过来可以说,单模光纤的纤芯直径就是按照只允许相位一致的最小角度的光进入而设计的。多模光纤的纤芯比较粗,入射角比较大的光也可以进入,这样一来,在相位一致的角度中,不仅角度最小的可以在光纤中传导,其他角度更大一些的也可以,也就是说,可以有多条光线在纤芯中同时传导。换句话说,单模和多模实际上表示相位一致的角度有一个还是多个。

单模光纤和多模光纤在光的传导方式上有所不同,这决定了它们的特性也有所不同。多模光纤中可以传导多条光线,这意味着能通过的光线较多,对光源和光敏元件的性能要求也就较低,从而可以降低光源和光敏元件的价格。相对地,单模光纤的纤芯中只能传导一条光线,能通过的光线较少,相应地对于光源和光敏元件的性能要求就较高,但信号的失真会比较小。

信号失真与光在纤芯传导时反射的次数相关。多模光纤中,多条反射角不同的光线同时传导,其中反射角越大的光线反射次数越多,走过的距离也就越长;相对地,反射角越小的光线走过的距离越短。光通过的距离会影响其到达接收端的时间,也就是说,通过的距离越长,到达接收端的时间越长。结果,多条光线到达的时间不同,信号的宽度就会被拉伸,这就造成了失真。因此,光纤越长,失真越大,当超过允许范围时,通信就会出错。

相对地,单模光纤则不会出现这样的问题。因为在纤芯传导的光线只有一条,不会因为行进距离的差异产生时间差,所以即便光纤很长,也不会产生严重的失真。

光纤的最大长度也是由上述性质决定的。单模光纤的失真小,可以比多模光纤更长,因此多模光纤主要用于一座建筑物里面的连接,单模光纤则用于距离较远的建筑物之间的连接。FTTH 属于后者,因此主要使用单模光纤。

通过光纤分路来降低成本

用光纤来代替 ADSL 将用户端接入路由器和运营商的 BAS 连接起来的接入方式就是 FTTH,从形态上可大致分为两种。

一种是用一根光纤直接从用户端连接到最近的电话局(图(a))。

这种类型的 FTTH 中,用户和电话局之间通过光纤直接连接,网络包的传输方式如下。首先,用户端的光纤收发器将以太网的电信号转换成光信号。这一步只进行电信号到光信号的转换,而不会像 ADSL 一样还需要将包拆分成信元,大家可以认为是将以太网包原原本本地转换成了光信号。

接下来,光信号通过连接到光纤收发器的光纤直接到达 BAS 前面的多路光纤收发器。FTTH 一般使用单模光纤,因此其纤芯中只有特定角度的光信号能够反射并前进。然后,多路光纤收发器将光信号转换成电信号,BAS 的端口接收之后,将包转发到互联网内部。

把网络包发送到互联网之后,服务器会收到响应,响应包的光信号也是沿着同一条光纤传输到用户端的。这里,前往互联网的上行光信号和前往用户的下行光信号在光纤中混合在一起,信号会变得无法识别,因此我们需要对它们进行区分,办法是上行和下行信号采用不同波长的光。波长不同的光混合后可通过棱镜原理进行分离,因此光纤中的上行和下行信号即便混合起来也可以识别。像这样在一条光纤中使用不同的波长传输多个光信号的方式叫作波分复用。

另一种光纤的接入方式是在用户附近的电线杆上安装一个名为分光器的设备,通过这个设备让光纤分路,同时连接多个用户(图(b))。在这种方式下,用户端不使用光纤收发器,而是使用一个叫作 ONU 的设备,它将以太网的电信号转换成光信号之后,会到达 BAS 前面的一个叫作 OLT 的设备。光信号的传导方式和直连方式是一样的,但有一点不同,因为多个用户同时收发网络包时信号会在分光器产生碰撞。因此,OLT 和 ONU 中具备通过调整信号收发时机来避免碰撞的功能。具体来说,OLT 会调整信号发送时机并向 ONU 下发指令,ONU 则根据 OLT 的指令来发送数据。反过来,当 BAS 端向用户发送数据时,分光器只需要将信号发给所有用户就可以了,这里并不会发生碰撞,但这样做会导致一个用户收到其他所有用户的信号,造成信息泄露的问题,因此需要在每个包前面加上用于识别 ONU 的信息,当 ONU 收到信号后,会接收发给自己的信号并将其转换成以太网信号。

像这样,FTTH 可以分为直连和分路两种方式,这两种方式只是光信号的传输方式有一些区别,实际传输的网络包是相同的。当使用 PPPoE 来传输包时,其工作过程和刚才讲过的 ADSL 类似。具体来说,就是像图4.3 中的⑤一样,由互联网接入路由器在 IP 头部前面加上 MAC 头部、PPPoE 头部和 PPP 头部,然后由光纤收发器或者 ONU 转换成光信号,并通过光纤到达 BAS 前面的多路光纤收发器和 OLT,最后被还原成电信号并到达 BAS。

接入网中使用的 PPP 和隧道

用户认证和配置下发

用户发送的网络包会通过 ADSL 和 FTTH 等接入网到达运营商的 BAS。

互联网本来就是由很多台路由器相互连接组成的,因此原则上应该是将接入网连接到路由器上。随着接入网发展到 ADSL 和 FTTH,接入网连接的路由器也跟着演进,而这种进化型的路由器就叫作 BAS。

首先是用户认证和配置下发功能。ADSL 和 FTTH 接入网中,都需要先输入用户名和密码,登录之后才能访问互联网,而 BAS 就是登录操作的窗口。BAS 使用 PPPoE 方式来实现这个功能。PPPoE 是由传统电话拨号上网上使用的 PPP 协议发展而来的,所以我们先来看一看 PPP 拨号上网的工作方式。

在使用电话线或者 ISDN 拨号上网时,PPP 是如图 4.17 这样工作的。首先,用户向运营商的接入点拨打电话(图 4.17 ① -1),电话接通后(图 4.17 ① -2)输入用户名和密码进行登录操作(图 4.17 ② -2)。用户名和密码通过 RADIUSF 协议从 RASG 发送到认证服务器,认证服务器校验这些信息是否正确。当确认无误后,认证服务器会返回 IP 地址等配置信息,并将这些信息下发给用户(图 4.17 ② -3)。用户的计算机根据这些信息配置 IP 地址等参数,完成 TCP/IP 收发网络包的准备工作,接下来就可以发送 TCP/IP 包了(图 4.17 ③)。

这个过程的重点在于图 4.17 ② -3 下发 TCP/IP 配置信息的步骤。在接入互联网时,必须为计算机分配一个公有地址,但这个地址并不是事先确定的。因为在拨号连接时,可以根据电话号码来改变接入点,而不同的接入点具有不同的 IP 地址,因此无法事先在计算机上设置这个地址。所以,在连接时运营商会向计算机下发 TCP/IP 配置信息,其中就包括为计算机分配的公有地址。

在以太网上传输 PPP 消息

ADSL 和 FTTH 接入方式也需要为计算机分配公有地址才能上网,这一点和拨号上网是相同的。不过,ADSL 和 FTTH 中,用户和 BAS 之间是通过电缆或光纤固定连接在一起的,因此没有必要验证用户身份,所以实际上并不需要 PPP 的所有这些功能。然而,通过用户名和密码登录的步骤可以根据用户名来切换不同的运营商,这很方便。因此,接入运营商在 ADSL 和 FTTH 中一般也会使用 PPP。

不过,拨号上网的 PPP 是无法直接用于 ADSL 和 FTTH 的,要理解这里的原因,我们先来看看 PPP 协议是如何传输消息的。

传输 PPP 消息的思路和将 IP 包装入以太网包中传输是一样的。PPP 协议中没有定义以太网中的报头和 FCS 等元素,也没有定义信号的格式,因此无法直接将 PPP 消息转换成信号来发送。要传输 PPP 消息,必须有另一个包含报头、FCS、信号格式等元素的“容器”,然后将 PPP 消息装在这个容器里才行。于是,在拨号接入中 PPP 借用了 HDLCC 协议作为容器,而 HDLC 协议原本是为在专线中传输网络包而设计的,拨号接入方式对这一规格进行了一些修正。最终,PPP 消息就是像图 4.18(a)这样来进行传输的。

对于 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 就也可以像拨号上网一样通信了。

PPPoE 是将 PPP 消息装入以太网包进行传输的方式。

通过隧道将网络包发送给运营商

BAS 除了作为用户认证的窗口之外,还可以使用隧道方式来传输网络包。所谓隧道,就类似于套接字之间建立的 TCP 连接。在 TCP 连接中,我们从一侧的出口(套接字)放入数据,数据就会原封不动地从另一个出口出来,隧道也是如此。也就是说,我们将包含头部在内的整个包从隧道的一头扔进去,这个包就会原封不动地从隧道的另一头出来,就好像在网络中挖了一条地道,网络包从这个地道里穿过去一样。
像这样,如果在 BAS 和运营商路由器之间的 ADSL/FTTH 接入服务商的网络中建立一条隧道,将用户到 BAS 的接入网连接起来,就形成了一条从用户一直到运营商路由器的通道,网络包通过这条通道,就可以进入互联网内部了,这样的机制就类似于将接入网一直延伸到运营商路由器。

隧道有几种实现方式,刚才提到的 TCP 连接就是其中一种实现方式(图 4.19(a))。这种方式中,首先需要在网络上的两台隧道路由器 A 之间建立 TCP 连接,然后将连接两端的套接字当作是路由器的端口,并从这个端口来收发数据。换句话说,在路由器收发包时,是基于隧道的规则向隧道中放入或取出网络包,这时,TCP 连接就好像变成了一根网线,包从这里穿过到达另一端。 图 4.19(b)中还介绍了另一种基于封装(encapsulation)的隧道实现方式,这种方式是将包含头部在内的整个包装入另一个包中传输到隧道的另一端。在这种方式中,包本身可以原封不动地到达另一端的出口,从结果上看和基于 TCP 连接的方式是一样的,都实现了一个可供包进行穿梭的通道。

无论任何机制,只要能够将包原封不动搬运到另一端,从原理上看就都可以用来建立隧道。

接入网的整体工作过程

理解了 PPPoE 和隧道的原理之后,下面来看看接入网的整体工作过程。接入网的工作从用户端的互联网接入路由器进行连接操作开始。首先,接入路由器中需要配置运营商分配的用户名和密码 A。然后,接入路由器会根据 PPPoE 的发现机制来寻找 BAS。这一机制和 ARP 一样是基于广播来实现的,过程如下,很简单。

用户询问:“BAS 在不在?在的话请报告 MAC 地址。”
BAS 回答:“我在这里,我的 MAC 地址是 xx:xx:xx:xx:xx:xx。”
这样用户端就知道了 BAS 的 MAC 地址,也就可以和 BAS 进行通信了。大家可以认为前面这个过程相当于拨号上网中拨通电话的动作(图4.17 ① -1 和① -2)。
互联网接入路由器通过 PPPoE 的发现机制查询 BAS 的 MAC 地址。

接下来,如图 4.17 ② -1 到② -4 中所示,进入用户认证和下发配置的阶段。这里的工作过程有点复杂,我们只说重点。第一个重点是用户名和密码如何发送给 BAS。这里有两种方式,一种是将密码进行加密的 CHAPB 方式,另一种是不加密的 PAPC 方式,在互联网接入路由器的设置画面中可以选择。进行加密的 CHAP 方式显然安全性更高,一般也推荐使用这种方式,但也并不是说使用不加密的 PAP 方式密码就立刻会被窃取。

由于明文密码只在 BAS 和用户端路由器之间传输 D,所以如果要窃取密码,要么在路由器和 ADSL Modem 中间进行窃听,要么爬到电线杆上安装窃听装置拾取电缆中泄漏的电磁波。不过,光纤是不会泄漏电磁波的,因此无法通过第二种方式进行窃听。

第二个重点是,在校验密码之后 BAS 如何向用户下发 TCP/IP 配置信息。这里下发的配置信息包括分配给上网设备的 IP 地址、DNS 服务器的 IP 地址以及默认网关的 IP 地址。当使用路由器连接互联网时,路由器会根据这些信息配置自身的参数。这样一来,路由器的 BAS 端的端口就有了公有地址,路由表中也配置好了默认网关,接下来就可以将包转发到互联网中了。
BAS 下发的 TCP/IP 参数会被配置到互联网接入路由器的 BAS 端的端口上,这样路由器就完成接入互联网的准备了。

接下来,客户端就会开始发送用来访问互联网的网络包,比如有人在浏览器里输入了一个网址,这时网络包就开始发送了。这些包的目的地是互联网中的某个地方,这个地方或许在互联网接入路由器的路由表里是找不到的。这时,路由器会选择默认路由,并将这个包转发给默认路由的网关地址,也就是 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 包会沿隧道到达另一端的出口,也就是网络运营商的路由器。
BAS 在收到用户路由器发送的网络包之后,会去掉 MAC 头部和 PPPoE 头部,然后用隧道机制将包发送给网络运营商的路由器。
BAS 在收到用户路由器发送的网络包之后,会去掉 MAC 头部和 PPPoE 头部,然后用隧道机制将包发送给网络运营商的路由器。

不分配 IP 地址的无编号端口

前面介绍了 PPPoE 的工作过程,这里面有一个有趣的问题,就是互联网接入路由器在发送包的时候为什么要加上那些头部呢?头部里面的值基本上都是事先定好的,跟路由表里面的默认网关地址根本没什么关系。当采用一对一连接,也就是两台路由器的端口用一根线直接连起来的情况下,一端发送的包肯定会到达另一端,那么这种情况下就没有必要按照路由表查询默认网关来判断转发目标地址了。如果没有必要判断转发地址,那么网关的地址也就没什么用了;如果网关地址没用,那么目标路由器的端口也用不着分配 IP 地址了。上面的性质对于所有一对一连接都是适用的。

以前,即便是在这样的场景中,还是会为每个端口分配 IP 地址,这是因为有一条规则规定所有的端口都必须具有 IP 地址。然而,当公有地址越来越少时,就提出了一个特例,即一对一连接的端口可以不分配 IP 地址。
现在,在这种场景中按惯例都是不为端口分配 IP 地址的 B,这种方式称为无编号(unnumbered)。这种情况下,BAS 下发配置信息时就不会下发默认网关的 IP 地址。
一对一连接的端口可以不分配 IP 地址,这种方式称为无编号。

互联网接入路由器将私有地址转换成公有地址

前面的介绍里面其实遗漏了一个地方,那就是互联网接入路由器在转发包时需要进行地址转换。刚才我们讲过,BAS 会向用户端下发 TCP/IP 的配置信息,如果将这些信息配置在计算机上,就相当于计算机拥有了公有地址,这种情况下不需要进行地址转换也可以访问互联网。其实 TCP/IP 原本的设计就是这样的。然而,如果使用路由器来上网,BAS 下发的参数就会被配置在路由器上,而且公有地址也是分配给路由器的。这样一来,计算机就没有公有地址了。

这时,计算机会被分配一个私有地址,计算机发送的包需要通过路由器进行地址转换然后再转发到互联网中。Web 和电子邮件等应用程序不会受到地址转换的影响,但有些应用程序会因为地址转换无法正常工作,这一点需要大家注意。这是因为有些应用程序需要将自己的 IP 地址告知通信对象或者告知控制服务器,但在有地址转换的情况下这些操作无法完成。

遇到应用程序因地址转换无法正常工作的情况时,我们可以不使用路由器,而是直接让计算机接收来自 BAS 的 PPPoE 消息,也就是采用最原始的上网方法。这样一来,计算机就具有了公有地址,不需要地址转换也可以上网了。

不过,不用路由器上网也有一点需要注意,因为上网的计算机拥有公有地址,这意味着来自互联网的包可以直接到达计算机,这可能导致计算机被攻击。因此,对于直接上网的客户端计算机,我们应该采取安装防火墙软件等防御手段。

除 PPPoE 之外的其他方式

刚才我们讲的内容都是基于 PPPoE 方式的,实际的接入网还有其他一些方式。下面我们先跑个题,简单介绍一下这些其他的方式。

首先,我们先看看使用 PPPoA 方式的 ADSL 接入网。ADSL 使用 PPPoE 方式时,是先将 PPP 消息装入以太网包中,然后再将以太网包拆分并装入信元,而 PPPoA 方式是直接将 PPP 消息装入信元(图 4.21)。由于只是开头加不加 MAC 头部和 PPPoE 头部的区别,PPP 消息本身是没有区别的,因此密码校验、下发 TCP/IP 配置参数、收发数据包等过程都是和 PPPoE 基本相同的。不过,虽然开头加不加 MAC 头部和 PPPoE 头部看上去只是很小的区别,但却会对用户体验产生一定的影响。 PPPoA 方式不添加 MAC 头部和 PPPoE 头部,而是直接将包装入信元中。

由于 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 就相应变小了,这可能会降低网络的效率。而 PPPoA 不使用以太网包来传输 PPP 消息,因此不会发生 MTU 变小的问题。

PPPoE 会降低网络效率,PPPoA 也有 ADSL Modem 和路由器无法分离的限制,这两个问题其实都是由 PPP 引起的。因此,有一些运营商不使用 PPP,他们使用 DHCPA 协议从 BAS 向用户端下发 TCP/IP 配置信息。
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 和路由器无法分离的问题。
还有一种 DHCP 方式,它不使用 PPP,而是将以太网包直接转换成 ADSL 信号发送给 DSLAM。

网络运营商的内部

POP 和 NOC

现在网络包已经通过接入网,到达了网络运营商的路由器。这里是互联网的入口,网络包会从这里进入互联网内部。

互联网的实体并不是由一个组织运营管理的单一网络,而是由多个运营商网络相互连接组成的。ADSL、FTTH 等接入网是与用户签约的运营商设备相连的,这些设备称为 POP,互联网的入口就位于这里。

网络包通过接入网之后,到达运营商 POP 的路由器。

那么,POP 里面是什么样的呢? POP 的结构根据接入网类型以及运营商的业务类型不同而不同,大体上是下图这个样子。POP 中包括各种类型的路由器,路由器的基本工作方式是相同的,但根据其角色分成了不同的类型。图中,中间部分列出了连接各种接入网的路由器,这里的意思就是根据接入网的类型需要分别使用不同类型的路由器。

我们从上面开始看,首先是专线,这里用的路由器就是具有通信线路端口的一般路由器。专线不需要用户认证、配置下发等功能,因此用一般的路由器就可以了。接下来是电话、ISDN 等拨号方式的接入网,这里使用的路由器称为 RAS。拨号接入需要对用户拨电话的动作进行应答,而 RAS 就具备这样的功能。此外,通过 PPP 协议进行身份认证和配置下发的过程,RAS 也具备这些功能。再往下是 PPPoE 方式的 ADSL 和 FTTH。PPPoE 方式中,ADSL、FTTH 接入服务商会使用 BAS,运营商的路由器则与 BAS 相连。PPPoE 中的身份认证和配置下发操作由接入服务商的 BAS 来负责,运营商的路由器只负责对包进行转发,因此这里也是使用一般的路由器就可以了。如果 ADSL 采用 PPPoA 方式接入,那么工作过程会有所不同,DSLAM 通过 ATM 交换机与 ADSL 的运营商的 BAS 相连,然后再连接到运营商的路由器。用户端传输的信号先经过 ADSL Modem 拆分成 ATM 信元并进行调制,然后 DSLAM 将信号还原成信元,通过 ATM 交换机转发到 BAS,最后 BAS 将信元还原成网络包,再通过运营商的路由器转发到互联网内部。

对于连接接入网的部分来说,由于要连接的线路数量很多,所以路由器需要配备大量的端口,但能传输的网络包数量相对比较少,这是因为接入网的速率比互联网核心网络要低。因此,端口多且价格便宜的路由器适用于这些场景。相对地,图中左侧的路由器用于连接运营商和核心 NOC 以及其他 POP,所有连接接入网的路由器发出的包都会集中到这里,使用的线路速率也比较高,因此这里需要配备转发性能和数据吞吐量高的路由器。

NOCA 是运营商的核心设备,从 POP 传来的网络包都会集中到这里,并从这里被转发到离目的地更近的 POP,或者是转发到其他的运营商。这里也需要配备高性能的路由器。

话说回来,到底需要多高的性能才行呢?我们来看实际产品的参数。

面向运营商的高性能路由器中有些产品的数据吞吐量超过 1 Tbit/s,而一般面向个人的路由器的数据吞吐量也就 100 Mbit/s 左右,两者相差 1 万多倍。当然,路由器的性能不完全是由吞吐量决定的,但从这里可以看出规模和性能的差异。

其实,NOC 和 POP 并没有非常严格的界定。NOC 里面也可以配备连接接入网的路由器,很多情况下是和 POP 共用的。从 IP 协议的传输过程来看,也没有对两者进行区分的必然性,因为无论是哪个路由器,其转发网络包的基本工作原理都是相同的。因此,大家可以简单地认为,NOC 就是规模扩大后的 POP。

室外通信线路的连接

POP 和 NOC 遍布全国各地,它们各自的规模有大有小,但看起来跟公司里的机房没什么太大区别,都是位于一幢建筑物中的,其中的路由器或者通过线路直接连接,或者通过交换机进行连接,这些和公司以及家庭网络都是相同的。只不过,公司的机房一般使用双绞线来连接设备,但运营商的网络中需要传输大量的包,已经超过了双绞线能容纳的极限,因此一般还是更多地使用光纤。

大楼室内可以用线路直接连接,对于距离较远的 NOC 和 POP 来说,它们之间的连接方式可以分为几种。

对于自己拥有光纤的运营商来说,可以选择最简单的方式,也就是用光纤将 NOC 和 POP 直接连接起来。这种方式虽然想法简单,但实现起来却并不简单。光纤需要在地下铺设,需要很大的工程费用,而且当线路发生中断时还必须进行维修,这些维护工作也需要费用。因此,只有有限的几家大型运营商才拥有光纤。

那么,其他运营商怎么办呢?其实也不难,只要从其他公司租借光纤就可以了,但所谓租借并不是光纤本身。

拥有光纤的公司一般都会提供光纤租用服务。以电话公司为例,电话公司会在其拥有的光纤中传输语音数据,但一条光纤并不是只能传输一条语音数据,光纤是可以复用的,一条语音数据只占其通信能力的一部分。
换句话说,电话公司可以将自己的光纤的一部分通信能力租借给客户。对于客户来说,只要支付一定的费用就可以使用其中的通信能力了。对于电话公司来说,其拥有的光纤不会全部自己使用,通过租借的方式也可以带来一定的收益,无论其业务本质是电话还是互联网,这一点都是共通的。

这种服务就叫作通信线路服务。

不拥有光纤的运营商则可以使用租借通信线路的方式将相距较远的 NOC 和 POP 连接起来。电话使用的通信线路(电话线)只能传输语音这种单一形式的数据,但运营商使用的通信线路则种类繁多。首先,在速率上就分为很多种,其中比较快的种类,其速率为电话线的 100 万倍左右。除了速率之外,数据的传输方式也分为很多种。以前,将多条电话线捆绑在一起的方式比较主流,现在我们有了各种类型的通信线路,其中也有一些公司不对光纤进行细分,而是直接将整条光纤租借出去。不同的通信方式和速率对应着不同的价格,对于不拥有光纤的运营商来说,需要根据需要从中进行选择。

跨越运营商的网络包

运营商之间的连接

让我们重新回到运营商内部,看一看到达 POP 路由器之后,网络包是如何前往下一站的。首先,如果最终目的地 Web 服务器和客户端是连接在同一个运营商中的,那么 POP 路由器的路由表中应该有相应的转发目标。

运营商的路由器可以和其他路由器交换路由信息,从而自动更新自己的路由表,通过这一功能,路由信息就实现了自动化管理。于是,路由器根据路由表中的信息判断转发目标,这个转发目标可能是 NOC,也可能是相邻的 POP,无论如何,路由器都会把包转发出去,然后下一个路由器也同样根据自己路由表中的信息继续转发。经过几次转发之后,网络包就到达了 Web 服务器所在的 POP 的路由器,然后从这里被继续转发到 Web 服务器。

那么,如果服务器的运营商和客户端的运营商不同又会怎样呢?这种情况下,网络包需要先发到服务器所在的运营商,这些信息也可以在路由表中找到,这是因为运营商的路由器和其他运营商的路由器也在交换路由信息。这个信息交换的过程稍后再讲,我们暂且认为路由表中能找到对方运营商的路由信息,这时网络包会被转发到对方运营商的路由器。

总之,对于互联网内部的路由器来说,无论最终目的地是否属于同一家运营商,都可以从路由表中查到,因此只要一次接一次按照路由表中的目标地址来转发包,最终一定可以到达 Web 服务器所在的 POP。这样一来,我们就可以把包发到任何地方,包括地球的另一面。

运营商之间的路由信息交换

只要路由表中能够查到,我们当然可以把包发到任何地方,包括地球的另一面,但这些路由信息是如何写入路由表的呢?如果路由表中没有相应的路由信息,路由器就无法判断某个网络的位置,也就无法对包进行转发,也就是说,仅仅用线路将路由器连起来,是无法完成包转发的。

下面我们来看看运营商之间是如何交换路由信息,并对路由器进行自动更新的。

其实方法并不难。如图所示,只要让相连的路由器告知路由信息就可以了。只要获得了对方的路由信息,就可以知道对方路由器连接的所有网络,将这些信息写入自己的路由表中,也就可以向那些网络发送包了。

获得对方的路由信息之后,我们也需要将自身的路由信息告知对方。

这样一来,对方也可以将发往我们所在子网的包转发过来。这个路由信息交换的过程是由路由器自动完成的,这里使用的机制称为 BGP。

根据所告知的路由信息的内容,这种路由交换可分为两类。一类是将互联网中的路由全部告知对方。例如图中,如果运营商 D 将互联网上所有路由都告知运营商 E,则运营商 E 不但可以访问运营商 D,还可以访问运营商 D 后面的运营商 B、A 和 C。然后,通过运营商 D 就可以向所有的运营商发送包。像这样,通过运营商 D 来发送网络包的方式称为转接。

另一种类型是两个运营商之间仅将与各自网络相关的路由信息告知对方。这样,只有双方之间的网络可以互相收发网络包,这种方式称为非转接,也叫对等。
互联网内部使用 BGP 机制在运营商之间交换路由信息。

与公司网络中自动更新路由表机制的区别

路由器之间相互交换信息自动更新路由表的方式在公司网络中也会用到,不过公司内部和运营商之间在路由交换方式上是有区别的。

公司中使用的方式是寻找与目的地之间的最短路由,并按照最短路由来转发包,因此,周围的所有路由器都是平等对待的。

公司内部采用这样的方式没问题,但运营商之间就不行了。假设某个运营商拥有一条连接日本和美国的高速线路,那么要访问美国的地址时,可能这条线路是最短路由。如果单纯采用最短路由的方式,那么其他运营商的包就都会走这条线路,这时,该运营商需要向其他运营商收取相应的费用,否则就成义务劳动了。在这种情况下,如果使用最短路由的方式,就无法区分哪个运营商交了费,哪个运营商没交费,也就是说无法阻止那些没交费的运营商使用这条线路,这样就很难和对方进行交涉了。正是出于这样的原因,互联网中不能单纯采用最短路由,而是需要一种能够阻止某些来源的网络包的机制,互联网的路由交换机制就具有这样的功能。

首先,互联网中可以指定路由交换的对象。公司中,路由信息是在所有路由器间平等交换的,但运营商之间的路由交换是在特定路由器间一对一进行的。这样一来,运营商就可以只将路由信息提供给那些交了费的运营商,那些没交费的运营商也就无法将网络包发送过来了。

其次,在判断路由时,该机制不仅可以判断是否是最短路由,还可以设置其他一些判断因素。例如当某个目的地有多条路由时,可以对每条路由设置优先级。

运营商之间需要对交换路由信息的对象进行判断和筛选,但这样一来,对于没有交换路由信息的运营商网络,我们就无法将网络包发送过去了,如果要访问的 Web 服务器就在那个运营商网络中,我们不就访问不了了吗?其实不用担心,运营商在进行路由交换时会避免出现这样的情况。互联网中有很多运营商,每个运营商都和其他多个运营商相互连接。因此,如果一个运营商走不过去,可以走另一个运营商,无论网络包要发送到什么地方,都会确保能够获取相应的路由信息。如果某个运营商做不到这一点,那它也就该倒闭了。

IX 的必要性

对于两个运营商来说,一对一的连接是最基本的一种连接方式,现在也会使用这种方式。但这种方式有个不方便的地方,如果运营商之间只能一对一连接,那么就需要像下图(a)这样将所有的运营商都用通信线路连接起来。现在光日本国内就有数千家运营商,这样连接非常困难。对于这种情况,我们可以采用下图(b)的方式,设置一个中心设备,通过连接到中心设备的方式来减少线路数量,这个中心设备就称为 IX。

运营商如何通过 IX 互相连接

首先是 IX 的部署场所。为了保证在遇到停电、火灾等事故,以及地震等自然灾害时,路由器等网络设备还能继续工作,IX 所在的大楼都装有自主发电设备,并具有一定的抗震能力。其实这样的要求也不仅限于 IX,运营商的 NOC 也是一样。拥有如此高安全性的大楼其实并不多,因此符合这样要求的大楼里面都可能会有 NOC 和 IX。运营商和 IX 运营机构会租下大楼中的一块地方用于放置 NOC 和 IX 的设备,换句话说,IX 就在这些大楼中某一层的某个角落中。

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 地址,就可以向任何运营商的路由器发送包。不过实际上,要成功发送包还需要正确的路由信息,对于没有进行路由交换的运营商,我们是无法向其发送包的。

这需要运营商之间通过谈判签订合约,然后按照合约来交换路由信息,实现网络包的收发。

运营商之间可以直接连接,也可以通过 IX 连接,无论是哪种方式,最终网络包都会到达服务器所在的运营商,然后通过 POP 进入服务器端的网络。

打赏
  • Copyrights © 2017-2023 WSQ
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信