通信网络与IP网络底层传输技术梳理(SONET/SDH/OTN/ATM/Ethernet/MPLS/PTN...)

前言

很多计算机专业出身的人在学习网络的时候,都只是注意到了IP层以及TCP,UDP,HTTP,DNS等协议的存在,而真正的传输网却很少有人在意。这是因为网络技术圈子本身就分两个,一个是计算机圈子,另一个是通信圈子,这两个圈子几乎是隔离的,自从计算机专业和通信专业各自的教科书上了解到以IP为界将网络分为了资源子网和通信子网之后,很多学计算机的就再也没有接触过底层的传输网,学通信的也很少涉及上层的业务网。但是如今似乎有融合二者的趋势。
        计算机网络通常处在网络的边缘,比如数据中心,它在乎的是互联互通的结果以支撑业务的平稳高效运行,而通信网络则处在网络的中心,比如各种交换机,路由器,它在乎的是如何实现互联互通。近几年来随着数据中心网络技术以及虚拟化的发展,越来越多的计算机侧的研发者开始自己实现通信侧的路由寻址机制,比如自研交换协议,使用VxLan,LISP等技术直接互联数据中心等。

        用以往的观点来看,网络本来就是比较难学的,按如今的观点来看,结合了虚拟化和云计算之后,网络变得更加复杂而不易理解。空中楼阁不可行,所以想学好网络必须要有扎实的基本功。本文抛砖引玉,帮大家梳理一下网络的传输技术,这是网络的最底层,没有这些,所有的上层技术将都是奢望。底层传输技术是复杂的,也是最容易被混淆的,所以有必要写一篇文章来澄清。

        作为一个程序员,也许你会觉得根本就没有必要去学习什么传输网,不是说精通了TCP/UDP socket编程就可以了么?毕竟这本来就是一个专业化分工越来越细的年代。但我是不赞同这种观点的,学习传输网的来龙去脉并不意味着你必须去做相关的事情,而是旨在构建一个相对完整的知识体系,否则,只能算是一个熟练工。其实我们可以看到很多不懂网络原理但是却可以通过熟练调用API编写APP的,而且工资还不少...这种人的知识体系构不成闭环,是及其脆弱,他们也是相对容易被取代的那类,因为熟练调用API只需要不断强化训练即可,很多培训机构都可以胜任出产熟练工的任务,而构建完整的知识体系却是需要独立思考的,当然填鸭式记诵也未必不好,不是背会唐诗三百首,不会写来也会偷么,前提是你必须花大量时间去记诵,去练习。反过来,如果你是一名网络管理员,整日跟各种线缆,接口打交道,那么对协议栈另一个极端的学习和理解对于构建完整知识体系是必要的,比如如果一个网管仅仅满足于“能ping通”,那么他仅仅是做到了保持网络连通性,持续优化网络的传输效率需要网络对业务的流量模式有充分的把控,比如HTTP长连接和HTTP短连接,TCP突发流量,UDP视频流等。所以说,我的建议就是写socket的有必要了解一下传输网,而配网络设备的也有必要了解一下TCP和应用层,关于后者,我会另外写一篇文章,本文主要针对传输网。

        以往针对传输网的讲解都是先讲电路交换和分组交换,这也是一种以技术切入技术的方式,但是这很难让人真正理解这些技术的本质。本文尝试以历史发展的视角分析这些技术的来龙去脉,不会深入技术细节,旨在抛砖引玉,只想澄清某些技术为什么会出现,以及预测其结局会怎样。我先以一个常识开始,即旧瓶装新酒。

旧瓶装新酒

要想理解以太网,SONET,SDH,ATM,帧中继,X.25之间错综复杂的关系,首先要明白 “旧瓶装新酒”这个道理。
        一般而言,新酒在酿造出来的时候,不会立即给它设计一个新瓶,所以还是要用旧瓶来装,过了一段时间以后,才会有专门为新酒设计出来的新酒瓶出现。这个道理非常容易理解,在现实生活中,很多这样的例子,比如高铁,动车。
        当和谐号动车组刚被设计出来的时候,高速铁路网还没有开始建设,当时的动车组列车不得不跑在传统的电气化铁路干线上,和货车,绿皮车,K字头,T字头,Z字头列车混跑,后来才逐步建设了完全适合高速和谐号动车组的专用高架线路,和谐号跑在上面就是G字头高铁了。这里不必区分D字头动车和G字头高铁,因为传统电气化线路固有的速度物理上限,所以上面跑的列车即便是先进的和谐号动车组,也只能跑相对底的速度,这就叫做D字头动车,这并不是列车本身的差异导致了命名的差异,而是线路的差异使然。如果你坐过高铁从广东到四川,就会发现在武汉一直到四川的这一段,即便是高铁也跑不到300的速度,而只有不到200的速度,这并不是列车换了,列车还是那辆列车,只是路换了。这里我们可以看到动车组 over 电气化线路和动车组 over 专用高架线路的区别,这种区别非常类似于我马上要提到的IP over SDH和IP over Ethernet之间的区别。
        那么,跑在传统电气化线路上的D字头动车组如何与稍微慢一些的货车,K/T/Z字头传统列车混跑呢?答案就是优先级分时调度,比如传统列车必须停在一些小站避让D字头动车,使其先过,这会造成本来就慢的传统列车的延迟进一步加大,随着D字头动车组的增加,会进一步饿死传统列车,因此结论就是,传统的电气化线路根本不适合跑先进的和谐号动车组,必须修建其专用线路,这就是现在遍布全国的高架高速铁路网,与传统电气化线路彻底分开了,随着科技的发展,成本的降低,传统的铁路会逐渐被高铁所取代。
        如果你觉得T字头,K字头,Z字头,D字头,G字头列车之间的关系比较混乱,那是正常的,因为它本身就是旧瓶装新酒的渐进式过程,当然,我不是铁路专家,所以即便D字头和G字头的列车在列车结构和性能上有所差异,也不妨碍我解释这个观点,但我相信,即便有所差异,D字头列车和G字头列车的差异也是微小的。
        另外一个例子就是,我们中国人喜欢把普通的道路叫做柏油马路,虽然上面已经找不到一匹马,但是几乎不会把高速公路叫做马路,其实本质都一样。旧瓶就是以前跑马匹的道路,新酒就是汽车,然后逐渐的发现有必要设计汽车专门的道路,以发挥其最大性能,于是全封闭全立交的高速公路,城市快速路等新瓶就设计出来了。
        回归正题,以太网,SONET,SDH,ATM,帧中继,X.25之间的差异和以上铁路列车之间差异非常类似。
        在以TCP/IP为基础的互联网之前,电话网已经存在了100余年,这个电话网一直以来都是电信网甚至网络本身的代名词,直到现在依然没有退役。想轻松理解各种网之间的关系,类比上面高铁的例子,把列车和铁路分开来看是大有裨益的。我们把IP业务理解成和谐号动车组列车,而把以太网,SONET,SDH等理解成铁路就好了。IP业务跑在SONET,SDH上(IP over SONET/SDH)就是D字头动车组,IP业务跑在以太网上(IP over Ethernet)就是G字头高铁,那么传统的电话语音,短信等业务就是K/T/Z字头列车。照这么个类比法,全网逐渐以太网化就是一个自然而然的过程了。
---------------------------

传统时分复用的电话语音网络

SONET,SDH等都是老式的链路(其实也不算老,我是相对于目前的PTN,电信级以太网说的)了,它们的前身主要承载的是语音等传统业务,这类业务的特点是带宽小,延迟敏感。然而很多书上会说,SONET/SDH的带宽会非常大,达到上百G。其实之所以在承载带宽需求不大的传统语音业务时依然需要大的带宽,更多是考虑这种链路“同时可以承载多少路的业务”,而不是要满足“一个业务需要很大带宽”这个需求的。这就好比北京长安街,非常宽,但是车辆却跑不快,它如此宽的意义在于,可以并行跑10辆以上的汽车,反例就是两车道的高速公路,很窄,但是一辆车可以跑过120的速度。
        SONET和SDH其实是一回事,只是不同的标准化组织制定的不同标准,想理解纯粹技术的没必要刻意区分它们,所以后文我可能会混说SONET和SDH,但这无伤大雅。
---------------------------
在网络中,当多个网络流同时汇集到一条链路的时候,就需要仲裁谁先过,怎么过。技术上的术语就是复用,问题是采用什么样的复用技术。我们看到的目前只有两种复用技术, 一种是严格复用,一种是统计复用。
        我们先看下SDH是怎么复用的。
        前面我说过,SDH等技术是专门为电话等传统语音业务而生的,时间回退到几十年以前,我们看看当时需要解决的核心问题是什么。我们想象一个典型的场景,如下图所示:




当两路甚至N路电话同时要通过同一个链路的时候,该怎么办?这是摆在面前的一个大问题。最直接的解法就是构建N个节点之间两两互联的全网状拓扑网络,但这是不切实际的,仅在布线上就不可能,这就跟高楼大厦不可能会每一个人都安装一部电梯是一样的。那么此难题如何解呢?能不能排队呢?让一路先过,另外的语音流等待。问题是语音流不可分割的最小粒度是什么,如果粒度就是从拨号到一方挂断,那么粒度过长,等待方将不可接受,所以必须按照统一的标准切割整个通话的语音流。为了回答如何实施这种切割,首先要看一下语音流在链路上的传输形式。
        电话语音来源于人声,如何把人声变成语音流是一个典型的编码问题。标准化组织将人声分为了255种,可以区分音调的高低,音色等等,那么1个字节就可以编码所有的人声,如果按照每秒采集8000次人声,即采集8000字节的话,对于理解人声的语义是完全足够了,注意,电话系统不是一个高保真系统,只为理解说话者说的话,并不是为了精确还原说话者的声音。
        那么一路电话每秒采集8000字节,也就是64k的比特。当一路电话拨通后,为了保持声音可以互相传递给对方,电话线上将会产生64kbps的比特流,这就是一路电话需要的带宽:




这种64kbps的带宽在SDH上又被称为DS0,当两路或者多路这种64kbps的语音流要汇集到一条链路的时候,排队的办法就很明确了,粒度就是字节,按照字节交叉错开传输:




注意,以上的图示有一个隐含的假设,就是这条大家共享的链路也是64kbps的带宽,这显然是不合理的,如果N很大的话,每一路的语音流都将引入不可接受的排队延迟,最终的效果就是当说话者说“温州皮鞋”这个词的时候,接听者听到的将会是“温---州---皮---鞋”。有没有办法解决这个问题呢?
        回到一路语音流的情景,每秒发送8000字节,意味着125微秒发送一个字节,然而电子设备的字节发送能力远不止每125微秒只发送一个字节!在汇集处如果设备每125/2微秒即62.5微秒发送一个字节的话,在125微秒结束的时候,就可以发送2个字节的语音编码字节。以2路语音流为例,一秒钟这个汇集设备可以将8000*2字节的数据同时发到对端,这意味着对于每一路语音流的话,其带宽依然是64kbps,这就是说,完全可以将2路语音真正意义的同时在这条64*2kbps的链路上传输,唯一要做的就是,将汇集点的发送速率从128微秒每字节提高到62.5微秒每字节,并且将汇集的语音流按照某种规则排好序以便对端设备正确分离语音流:




这就是电话交换机的主要原理,分属于不同语音流的传输时间段叫做时隙,所以说,这种技术也就叫做时分复用技术,即TDM,TDM是严格复用的一种。
        好了,多米诺骨牌已经推倒了第一块,剩下的事就水到渠成了。
        问题是,汇集点最快能以多快的速率发送一个字节,如果能做到1微秒发送一个字节的话,那么它就可以承载128个语音流同时传输,带宽为128*64kbps。其实汇集点设备的发送能力可以更高,可以形成高达40Gbps的带宽!见到那些类似E1,T1,STM-N,OC-N等术语,其实都是拿这64kbps的带宽做加法(或者乘法,但绝不是指数级)。
        由于SDH这种传输技术需要划分严格的时隙,这就意味着链路上必须存在某种模式的载波,所谓的载波其实就是一种高频的驱动信号,需要传输的数据被调制到载波上,对端通过载波频率来识别时隙,这非常像火车车厢运货物的情形,哪个货物在火车的哪里,正是车厢号来定位的,正是因为广域网很多都采用了SDH之类的TDM传输技术,所以说也有人会把广域网称为载波网络。

我来总结一下,其实上面讲的这个技术就是SONET,SDH的本质。为了更好地进行话路复用以及高速传输,SDH,SONET规定了超级多的标准规范,比如能不能将多个字节捆绑在一起发送,收发端如何识别某些字节属于哪个话路,传输的字节中每个位的含义是什么,怎么利用它们等等,总之规范非常复杂,但却不是重点,个人认为如今这些规范意义已经不大,因为早晚SDH这种技术会被淘汰掉,以太网统一传输的局面迟早会到来,而且正在到来!我个人在2004年到2006年前后,曾经熟记了关于SDH,SONET的很多细节,比如SDH/SMT-N的成帧规范,SONET/OC-N的细节,GFP协议,块帧的结构,开销字节等等,当时的教科书上还在大讲特讲这种技术,不管是计算机网络技术,还是通信网络技术,都要讲到这些东西,目前看来,这类内容的比重越来越少了,不过还是感谢那段时光的学习过程,虽然这些技术可能永远都不会再接触到了,但并没有白学,至少是让我从下而上地饱览了网络的整体架构。
        由上我们可以看出,SDH这种技术基本上就是为电话语音传输量身定做的,然而由于它本质上传输的是比特形成的字节,当20世纪80年代TCP/IP出现以后,IP数据报文也是可以在SDH上传输的,直到最近,基于TCP/IP的互联网广域网的底层都是采用类似SDH这种链路。随着IP业务越来越多,IP流量已经超过了电话语音的流量,那么在构建完全承载IP报文的底层链路之前,如何优化SDH就是一个亟待解决的问题了。
        先看下SDH有何缺陷。

1.时隙浪费

SDH将底层链路划分成了固定的时隙,每个时隙内的传输数据量是固定的,然而IP报文的长度是变长的,这就需要在传输前先将IP报文切割成固定大小的段,然而每一个段放入一个时隙内进行传输。如果放不满,就意味着其它的时隙被浪费了,如果超过了可以承载的最多时隙,那就要等到下一波传输。这种固定的时隙划分非常不适合变长的IP数据报的传输。

2.能源浪费

即便是被浪费的时隙,也是需要电路回路来用载波驱动的,也就是说它们必须存在,这就好比一个可以载物300件的固定速率的传送带,即便上面没有货物或者只有一件货物,这个传送带依然要保持速率持续传送。另一个类比就是火车或者固定发车间隔的地铁,就算空车空跑,也还是要跑。这增加了调度设计的复杂度。

3.不必要的开销

由于SDH是针对固定采样编码的语音设计的,当面对变长数据的时候,就需要复杂的成帧机制,这相当于多了一层适配的开销,越来越不适合高速IP业务。高速IP业务所依托的技术越直接越高效,能扁平就不垂直,这也是为什么高速公路上的收费站饱受诟病的原因。成帧意味着多了一层工作,需要把一个IP报文切割成适合时隙传输的固定大小的段,加上开销段之后形成帧,如下图所示:




显然,最终的帧本身由于开销段就会造成延迟,成帧过程本身也会有不小的时间开销,所以说,这个步骤能省则省。
        面对上述的缺陷,为了提高带宽,基于SDH技术本质的传输链路逐步发展起用DWDM技术来优化的传输技术,即密集型光波复用,试图通过光波波长的复用叠加更多的传输带宽,这可以突破纯粹SDH技术面对的物理极限的限制,即发送一个比特的最快速率会有物理上限:




OTN在DWDM优化的基础上作为另一种优化技术,则试图统一帧大小而不是统一帧频率来减少时隙的浪费。OTN的本质是,对于同一条链路,当只需要发送很少数据的时候,就降低设备发送速率,而不是像SDH那样时隙空载空跑。DWDM是做了一个加法优化,优化极限取决于能无串扰的分离出多少波长,说白了就是加量方式的优化,一个不足就两个,还是不够就四个,多核心处理器系统就是类似的思想。OTN的优化与DWDM优化完全不同,它是SDH架构上的改变,OTN采用了固定的帧长不同的发送频率就可以造就不同的发送速率,也就是不同的带宽,这样一来传输带有突发性质的IP报文的时候便可以只传输实际的数据而不必浪费时隙,与传统时分复用的SDH相比,OTN更加适合传输TCP/IP数据而不是电话语音,然而OTN由于还是诞生自SDH的基本思路,只不过把固定时隙改成了固定帧长,时隙还是存在,依然没有摆脱根本的问题,这也许就是基因的作用,不管怎么变,根植于电话网的基因不会变。
---------------------------
虽然基于严格时分复用的传输技术经过了SONET/SDH,DWDM,OTN等优化已经成为了TCP/IP网络的标准广域网传输技术,这并非说TCP/IP一定要借助于SDH之类的传输网络才能够联网,而是说要想在物理范围很广的区域内快速实现TCP/IP联网,不得不借力使用现有的已经成熟的传输技术,这一方面是因为TCP/IP并没有规范化传输层和物理层导致了传输技术的缺失,分层模型因此并不完整也没有OSI/RM模型优雅,但是另一方面,也正是因为TCP/IP模型没有规定具体的底层传输设施,才可以使其可以利用现有的电话网快速实现互联互通(注意“快速”二字的重要性!),如果假设当时的TCP/IP规定了底层的传输技术,比如说必须使用以太网技术,那么在互联TCP/IP节点之前,就不得不先构建一个基于电信级的以太网技术的新型广域网,这将完全拖慢TCP/IP联网的部署进度,实则一种阻碍,完全违背工程学上“先跑起来”的原则,不得不说,TCP/IP的最终胜利实际上是工程派之于学院派的胜利啊,工程派崇尚实用主义-新技术构建于现有的可直接利用的技术之上,而非追求完美的模型-实施之前先构建一套逻辑完备的技术体系。

在TCP/IP技术的处女地,在局域网这个领域却经历了完全不同的事情。

TCP/IP专用的以太网

局域网指的是物理范围有限的局部TCP/IP网络,这里无需大规模挖沟布线,只需要用最直接的方式把若干台彼此接近的电脑连接起来即可,因此这里不存在规模化的问题,也就无需借用现有传输技术也能快速实现联网了。我曾经经常把几台设备搬到一个桌子上,然后机房里捡几根网线,再借一个交换机或者Hub,一个局域网就成了,非常简单。举个例子,局域网就好像中世纪欧洲的分封给各领主的小片采邑,每一个小片领地可以各自为政,逐步壮大,不存在规模化的规划,等级化问题,而广域网则类似罗马帝国,有很多规模化的事情要做,要守卫漫长的边境线,要维护庞大的道路网,这些都不是可以快速实施的,需要庞大精密的税收体系。
        新酒TCP/IP已经酿造了出来,要想将其运到更远的地方大规模出售,需要瓶子,新瓶子还没有设计出来,只能用旧瓶子来装,可是对于酿造地本地的小规模品尝,则无需旧瓶子,直接舀着喝就好了。
        没有了电话网这个帮了忙又掣肘的技术,局域网可以全身心发展一种适合TCP/IP的底层传输技术了。局域网的数据源与电话网的数据源不同,不是人声,不需要采样编码,TCP/IP的数据源本身就是计算机里面的数据,因此TCP/IP网络要解决的第一个问题不是如何采样与编码的问题,而是如何尽可能保持数据原貌的问题,前面说过,最直接的方式比优雅而迂回的方式更好。
        由于数据是由业务产生的,业务的多样性造成数据长度是变长的,最直接的传输策略就是有多长的数据就发多长的数据,不切割,不适配,直接发,在体会这种方式之前,我们先看下电话语音网的传输方式:




然后再看看TCP/IP网络中数据是怎样传输的:




和电话语音流的问题一样,当解决了如何构建数据帧之后,下一个问题就是当两个或者多个数据帧汇集到同一条链路的时候,如何解决复用问题。第一代的以太网是共享链路的以太网,即所有的节点均接在同一条总线上,任何两个数据帧不能同时传输,必须先获得仲裁许可之后才可以传输,这就是CSMA/CD机制:




具体细节我就不多说了,都懂。之所以可以采用这种看似低效的仲裁机制,是因为以太网一开始面对的就不是广域网那种大规模互联互通的传输问题,以太网诞生于局域网环境,一开始的通信节点规模是很小的。这是一个良性的开始,简单且直接的仲裁机制,简单且直接的帧结构,小规模的互联需求,一切都是原点。可以说CSMA/CD机制的出现就是以太网的那第一块多米诺骨牌。
        接下来以太网的发展过程是站在这个良性的起点一步一步满足应对越来越大规模互通需求的过程。随着通信节点的增多,CSMA/CD这种总线仲裁机制便成了发展的瓶颈,因为冲突域越大,冲突就越容易发生,由于冲突消耗的带宽就越多,必须隔离冲突域!隔离的办法就是使用真正的存储/转发机制!因此,以太网交换机产生了,以太网自然而然地从共享总线的仲裁时代进化到了交换式以太网时代,这次进化意义非常重大,是一次典型的蜕变:




以太网交换机和双绞线完全隔离了冲突域,交换机成了唯一的一个仲裁设备,仲裁的方式就是存储转发。交换机集中式地调度所有收到的数据帧,然后有它来调度把哪个数据帧从哪个端口发送出去,发送的方式是直接地发送,不分割,不适配。当数据帧被发出之后,并不用担心帧在线缆上会和其它帧冲突,这是由双绞线的两个线对保证的:




这就是以太网的本质。带有存储功能的交换结构以及双绞线两者彻底解放了以太网。这两者合力意味着全双工高速通信的可能性。以太网从此不再需要一个明确地仲裁者,能否发数据,何时发数据,全部在于交换机自己的策略,如果多个帧同时要发出去,那么交换机一定有策略绝对谁先走,一旦帧发了出去,就不必担心任何事了,因为对端只有一个功能为收的模块。还记得上学时老师讲的交叉线,直连线的区别吗?同种设备用交叉,异种设备用直连,Why?通过上图,我想你应该明白了吧。
        注意,所谓的本质并不含任何意义的优化,所以如果你拿千兆万兆以太网所使用的双绞线对数以及同种设备也可以用直连线来较真是不当的,我当然知道千兆线会用光所有的线对以及自协商机制。

以太网与统计复用

可以看到,以太网的效率直接取决于交换机的背板带宽而不是发帧的频率,帧的大小,发帧的速度等因素。而背板带宽的利用率则取决于交换机内部的交换结构,比如Crossbar结构等,不管是哪种交换结构,原则很简单,就是存储转发,核心只有两点:
1.如果从一个端口输入帧,要发送到另一个端口,如果输出端口没有其它帧要输出,则立即输出该帧;
2.如果从一个端口输入帧,要发送到另一个端口,如果输出端口同时也要输出另外的帧,则必须排队;

第一点很容易实现,第二点则需要一个好的调度算法,或者说排队算法。不管怎样,这都是可以用软件解决的问题。
        从我上面的解释,可以看到以太网和传统的电话网从一开始实现的初衷就是不同的。
        电话网的SDH类似的技术传输电话语音流,而语音流是由一种固定的采样编码方式生成的,所以这种网络处理的都是固定的数据帧或者固定的时隙,这意味着电话网的交换设备运行着可以硬件化的固定算法,这种算法可以固化为时分复用,频分复用等技术,然而以太网一开始处理的就是计算机内不同业务生成的变长的数据帧,所以无法用统一的电路来处理转发逻辑,在电路实现上就变得比较复杂,但是复杂意味着技术含量,难道不是吗?
        以太网的复用策略是统计复用,这种复用方式和存储转发的分组交换网是分不开的,可以说,以太网是真正纯粹的分组交换网实现方式。如果问到底什么是分组交换的统计复用,答案其实很简单,那就是统计复用依托于运气,它是激进的,在一条汇集10条分支的10Gbps的链路上,它相信不可能10条分支同时会发送10Gbps的流量,它相信流量的突发性与随机性,如果真的发生了同时10条链路汇集100G流量,那么只能排队,然而如果同样的场景发生在电话网络中,额外的流量只能丢弃,没有排队的概念。比如一条链路能承载100条语音话路,此时正好有100对通话者在打电话,如果有第101对通话者试图打电话,系统只能提示占线忙音,而不是等待。与以太网的统计复用分组交换所对应,SDH类的网络实施的则是时分复用电路交换, 分组交换是激进的,电路交换是保守的,这意味着分组交换要么满足你的需求,要么延迟你的需求,而电路交换则是要么完全满足你的需求,要么就拒绝你的需求。
        结论就是,以太网的速率指的是它最大的传输速率,而SDH的传输速率则是其恒定的载波速率。
        可以看得出,以太网虽然适合传输计算机产生的数据,但是却不适合传输电话语音,虽然不会明确地丢帧,但以太网的不定长帧会带来固定速率语音流的抖动,如下图所示:




以太网帧大小不固定,这种完全统计复用的方式会影响语音等实时业务,就好像一条路上大卡车,超长货车,小轿车,电瓶车,超宽货车,双层巴士一起跑在同一条道路上,那么遇到超长货车转弯或者急停的时候,后面所有车全部要停下来等,搞不好还会碾成事故,如果此时有一个结婚的车队,那么这个车队势必会被大卡车和红绿灯冲散,影响的是新婚夫妇以及家属们的心情和愿景。姑且不说婚车车队,如果有救护车,救火车,警车这种特种车辆,典型的实时业务车辆,也会被这种大型超长的货车所延迟。如果一路电话经过了这样的网络,在电话的一头有人说“温州皮鞋”的话,在电话的另一头,听到的将是“温---州------------------皮--鞋”。
        为了让以太网式的分组交换网支持实时语音业务,势必需要一种带宽和时延的保证。
---------------------------

OTN,ATM,MPLS与TCP/IP

当以太网扩张到广域网的时候,势必会遭遇无法满足语音实时性需求的问题,如何解决这个问题呢?
        花开两朵,各表一枝。在传统电信网和以太网之间,为了综合承载电话语音和TCP/IP业务数据,还有一个叫做ATM的技术。电话语音业务需要的是低时延,对带宽需求量并不高,而数据业务则相反,它需要高带宽,对时延反而不在乎,ATM声称可以无缝适配它们俩。
        ATM与以太网的交集并不多,毕竟简单直接的局域网环境用不到它,当以太网企图扩张到广域网的时候,它俩才会碰撞,但这是后话了,ATM只是试图统一适配语音业务和IP业务,这意味着它在以太网之前早就看出了以太网追究会遇到的问题!这么说吧,ATM结合了存储转发的分组交换网络和固定时隙复用的电路交换网络的优点,那么如果没有电话网,ATM的存在意义就尴尬了。和OTN一样,ATM采用了固定长度的信元,然而它却可以和固定的时隙解耦合。ATM使用了一种叫做虚电路的技术,旨在把无连接无状态的IP路由网络变成更加高效的类似电路交换的网络,省去每跳路由表的查找。可见,ATM是专门为了把IP数据报文适配在任意的底层传输链路上的技术,如果你通读ATM技术规范,会发现它真的是一种复杂且高大上的技术,仅ATM本身就分为三个层,其中AAL子层非常复杂,在学院派看来,这种叫做ATM的技术一定会取代所有的传输技术,坐拥第一把交椅,曾经有人预测,将来所有的设备上的网卡都将是ATM网卡。
        这种预测有些早了点,当工程派发现有一种类似的技术可以直接处理IP数据报文且而无需将其是适配给更低层的具体技术时,ATM的危机就到了。
        这种技术就是MPLS技术。和ATM一样,MPLS也是基于IP路由将路由变成了类似电路交换的过程,ATM的VP/VCI(虚通道/虚路径)交换和MPLS的标签交换本质上是一致的,都是试图将整个网络变成一个连接在一起的有状态网络,在交换机上,只要数据从某个端口进来,那么它一定从特定的端口转发出去,但MPLS比ATM更直接,更加可以和IP报文契合。MPLS是IP技术的子集,而ATM则是IP技术的外援,哪个亲缘关系更近,谁都看得出来吧!
        就算没有MPLS,我们看看ATM声称的交换技术真的比IP路由更快吗?其实IP路由只是IP的理念,具体实现方式完全没有任何约束,即便是标准的IP路由,Cisco不也是发展出了CEF这种高速转发机制了么?具体来讲就是在标准的IP路由器上分离控制平面和数据平面就好了,也就是分离路由和转发,路由用CPU完成,生成硬件转发表注入线卡,转发直接在线卡上做。这种方式比ATM这样的仅仅声称(看起来很好,事实上试试才知道...)很高效但却及其复杂的机制好多了。在IP的大框架下将转发逻辑分离到快速路径上要比引入一个新的协议更直接,也更简单。
        ATM就这样,输了。
        其实,类似这种标签交换或者快速交换的技术早就有了。曾经我一直不知道邮政编码的作用,后来学了网络才知道,邮政编码就是类似MPLS标签的作用,它可以适配任何地址格式完成快速定位的功能。
        行文到现在,我们还是不知道以太网是怎么赢得面对电话网时的胜利的。答案是以太网还没有完全胜利。其实,仔细看一下全局就会明白,以太网技术并不是自己在奋斗,它的周边还有MPLS,DWDM,QoS,数据包调度算法等技术在助攻,综合起来就是所谓的TE(流量工程)技术。我不想继续再讲下去了,因为接下来有很多的话题,比如如果TE不给力,不还是有SDN么?总之,想要在IP网络上统一处理定长的语音帧和变长的数据帧,办法多了去了!实在不行,TCP/IP的底层会给电话语音流预留带宽出来,这些带宽不会移作他用的。这就是统计复用的存储转发机制比较灵活的地方,在存储转发网络中,预留带宽仅仅意味着保留一些队列缓存并优先调度,而这种事情在严格复用的电话网(比如SDH骨干环)中,却是需要针对电路进行固定程式编程的,你不可能将一条1000kbps的链路换成10kbps的链路,虽然OTN可以做到,但是它却会遇到另外的问题。
        SDN?嗯,是的,如果有一天SDN真的像它声称的那般,那么IP也可以废掉了吧!事实上,IP和以太网都是赢在理念,这个理念就是统计复用,存储转发。即便上层不用IP了,底层不用以太网了,比如又出现了一种新的帧格式,也再也不会退回到严格时分复用的载波时代了。新时代的理念造就了PTN这个新型的传输技术。
        接着电话网一族的OTN继续说,其实OTN离PTN只有一步之遥了,但依然没有突破它的限制。SDH是严格时分复用的,不管你有没有数据传输,带宽都是固定的,而OTN可以根据实际流量动态调节发送速率,因此它的带宽是可变的,这不正符合统计复用分组交换的原则吗?然而OTN的帧长是固定的,这意味着如果传输变长的IP报文,还是要有一个成帧的适配过程,比如一个IP数据报长度为10000字节,而OTN的固定帧长为1800字节,那么就必须有一种机制将10000字节长度的报文拆分为5份1800字节的帧,外加一份1000字节长度的帧,剩余的800字节要么作为填充字节,要么合并其它IP报文,不管怎样都要定义一个边界以便接收端还原IP数据报文,如果没有帧长固定这个约束,这些动作就完全是没有必要的,OTN没有突破这最后一步!
        PTN作为完全的为传输变长IP数据报文而生的传输技术,接管了OTN后面的一切。我们来看下OTN和PTN的区别:





有人问,PTN这么牛逼,它是怎么突破物理极限的呢?答案是它并没有突破物理极限,因为根本就没有必要,这也是统计复用的最基本原则!
        以太网也没有突破物理极限,但它可以统计复用以应付突发。比如10G链路上有N个节点同时有传输速率10G的需求,那么在类似SDH这种底层链路,就必须构建N*10G个时隙,而这已经突破了物理极限,要想解决问题,就必须构建复杂的交换机内部回路。但是在以太网看来,不需要N*10G,只要1*10G即可,交换机的内部缓存,排队机制足以安全调度所有的数据到达目的地。

        PTN的理念和以太网完全一致!不过请不要把DWDM技术看作是电话网SDH时代的产物,在PTN时代,DWDM依然是重要的,毕竟它是物理/逻辑,电路/分组之外的另一个维度。感谢物理学,感谢光波色散!


形而上的感慨

本节的最后,我来形而上地评价一下OTN,ATM,以太网之间的关系。
        ATM取消了时隙的概念,但是采用固定长度的信元来进行存储转发式的分组传输,走上了统计复用的道路,加上AAL层自带了承载不同类型业务的适配层这就解决了以太网变长帧导致时延敏感业务抖动的问题,另一方面,ATM带有突发特性的统计复用分组交换,又解决了传统时分复用网络传输IP业务的效率问题,几乎所有人都认为ATM是未来的希望,然而人们对ATM抱有如此期望有个前提,那就是基于时析的话音业务和IP业务是对等的,但情况并非如此!此后,随着IP业务流量开始迅速碾压语音流量,天平开始朝着分组业务这边倾斜,也就是说,ATM不再合时宜,它要么必须改变,要么被其他技术取代。
        ATM其实并没有完全退出,它的灵魂还在。它的灵魂更多地是被以太网技术吸收了,从而助力了以太网技术从局域网走向更大的范围。
        前面说过,OTN距离PTN只有一步之遥,但是由于OTN依然没有摆脱时隙的概念,造成了它注定会功败垂成。而这个时隙的限制被新生的希望ATM摆脱了,ATM号称自己是真正的统计复用的分组交换技术,然而如上段所述,ATM最终又被以太网吸收了,最终形成了广泛部署的MPLS以及将要一统天下的PTN。But why?
        ATM的命运根植于它诞生的广域网环境,该场所本就混战多年,它必须一下子抓住要害一击制胜,根本就没有持续进化的空间和时间,周围全是压力,哪有时间和精力潜心?!ATM一开始的目标就是统一所有业务的传输于自身,它显然无法精准预测它试图融合的这些业务的比重变化趋势,这是一种老好人的方式,但一旦站错了队,后果将是灾难性的。后来IP业务迅速膨胀,让语音业务边缘化到可以被忽略不计,这就显得ATM的“和解式统一技术”毫无必要了。
        以太网则诞生于毫无压力的局域网,可以说这里是一个襁褓,它可以得到足够的保护自己慢慢发展壮大。以太网的目标不是什么融合,它根本就无视那个传统电话网的存在,它就是专门为IP而生的。
        我来用一个例子结束这令人伤感的小节,该例子来自公元前1世纪混乱的古罗马。
ATM代表西塞罗,他试图让所有的敌对方统一在他自己虚构的罗马共和国。
SDH代表加图,他是旧势力的典型,他为了200年前的罗马共和国宁愿献出自己的一切,当然他最终献出了生命。
以太网代表恺撒,恺撒是新势力的初始,让人们初识了什么是罗马帝国,并且他保证这是罗马的未来:我来,我见,我征服。
OTN代表庞陪,庞培是一个可怜的角色,虽然也是新势力的代表,但他的出身注定让他无法突破最后一步。
IPRAN代表安东尼,安东尼是典型的恺撒派,最终的角逐者,虽然失败,但其理念融合进了最终的罗马帝国。
PTN代表吴大维,最终的统一者,他并没有独创什么,他只是做了一件收摊子的事而已。
历史总是一再地重复发生过的事情。
---------------------------

其它传输技术

至于帧中继,X.25,DDN等,不必多说了,都差不多。只说一点,如果当初TCP/IP出世时没有电话网,那么以太网早就成为一开始的传输标准了,但是肯定的是,互联网进化的速度会比现在慢很多。正是因为有了已经存在了70余年的电话网技术,才使得TCP/IP技术可以快速部署,虽然也正是电话网技术掣肘了TCP/IP网络技术在成功部署后的快速发展!

        成也电话网。败也电话网!

        这种局面也不是十分的可悲,就像高铁一样,如果没有跑K/T字头列车的电气化线路,如果根本就没有铁道线路,那么就很难研发出动车组列车,即便研发出来了,也不会大量部署,因为根本就没有铁轨!列车的设计是集中式的,而铁轨的铺设则是分布式的,不可能很短时间完成,这意味着要想快速试验动车组,就必须要有先有的线路。修路是根本,要想富,先修路,这是绝对的真理!

接入网

本来,我还想介绍一下接入网的情况。接入网也是最混乱,技术多样性最丰富的地方。但是我觉得如果你理解了旧瓶装新酒这个道理,接入网的混乱情况便不必花篇幅介绍了。
接入网与广域网骨干不同。如果说骨干网是一次性投资建设的话,接入网则分布在各地是分批次建设的,铜缆和光纤不可能同时拉到每家每户!因此到了20世纪末和21世纪初每户都能上网的时候,大家的接入方式不可能相同,都是只能利用当时连到家里的线缆,有什么用什么,要么用电话线,要么同轴,也有专线...不管怎样,这些接入方式都只是利用了现有的线缆接入互联网。如果没有这些线缆,有联网需求的就不得不等到运营商实地施工将线缆铺设到你家里的时候才可以如愿联网。直到如今,也不能保证所有的用户都能光纤接入,直接光纤入户的也仅仅局限于商品房小区作为房屋配套实施的,对于一般的老旧房屋,除非你平摊施工费用,否则还是只能用传统的方式接入互联网吧。
---------------------------

如今的情况如何?

如今使用TCP/IP技术来传输传统的电话语音已经不是问题了,缺陷都已经得到了一定程度的弥补。以太网已经横扫到了数据中心,以太网已经走出了局域网,走向了城域网,乃至广域网。在传统载波网络逐渐成为传输瓶颈的同时,SDN,虚拟化技术也在助力以太网的进一步拓张,这是很激动人心的。

        我现在可以稍微总结一下以太网成功的经验,首先它一开始仅仅试图解决小规模的问题,将大规模的部署仅仅作为实验来持续改进,其次它解决且仅解决TCP/IP数据的传输问题,简单直接地处理帧的发送,并没有任何的适配动作,以太网甚至根本就没有意识到有电话网的存在。但电话网毕竟是真实存在的,当二者相遇时,注定会爆发一场较量,结局如何,让我们拭目以待。

        说说SDN,如果SDN真的如它自己声称的那般,企业就可以直接租用裸线和价格低廉的傻瓜交换机即可,所有的控制功能全部自己用软件实现,运营商真正成了仅仅租用基础设施的,类似IaaS,PaaS那帮公司的业务一样。这样整个网络就真正的完全“虚拟化”了,不过情况永远都不是像设计者一开始想象的那般完美的,最远的一个例子是上帝创世纪,结果夏娃偷吃了禁果,最近的一个例子就是清明假期第一天深圳共享单车挤爆深圳湾公园。同样的理念,最终的效果却是南辕北辙,我预测,SDN也会遭遇相同的令人尴尬的局面。


后记

和之前几篇文章一样,本文的后记写于第二天早上。在这个后记中,我大概分了以下几个话题:

1.以计算机的视角看网络

计算机的视角是比较豪的。以计算机的视角看网络就相当于以汽车的视角看道路。当你拥有一辆宝马而你的邻居拥有的是一辆奥拓的时候,你们同时去一个地方,给人的印象是宝马会先到,毕竟人家车好啊,跑得快,牌子响,人也显得屌,碰到别车时,身高165的宝马男司机可以怒瞪身高190的江淮同悦男司机...然而事实上呢?谁先到还真不一定。因为站在车的角度,人们普遍会关注单车性能,系统参数等,以车的视角,很难看到上路后道路的实际情况以及其它车的实际影响。

        同样的道理,你说从一个Nginx服务器上下载问题和从同一机房的另一个Apache服务器上下载同一个文件,谁快?其实是说不准的,这也是很多号称多么牛逼的服务器实测下来并非如此的原因。所谓的高性能服务器中的高性能,指的不是其网络传输性能,而是其主机处理性能。

        反过来,以网络的视角看主机,也会有很奇怪的结论。这就好比以道路的视角看数据包,不管你是宝马发出来的,还是奥拓发出来的,违规了照样给你个Drop。

        在理解网络技术的时候,基本就是两种视角,归纳起来就是资源子网的视角和通信子网的视角,视角不同,侧重点自然不同。程序员往往把网络看成是黑盒子,不关注其实际走线这类细节,甚至程序员都很少使用traceroute这种命令,ping倒是用得很多,一旦网络不通,程序员不会关心到底是哪里不通。而网络管理员也往往把数据包看作黑盒子,他们不会关注数据包里的数据来自哪类业务,网管们经常使用traceroute命令但却很少使用netstat,因为netstat是针对主机业务的。

2.时隙和分时调度系统

说到分时机制,这是一种非常古老的策略了,说白了就是轮流共享同一个资源。如果你对计算机操作系统的任务调度系统非常熟悉的话,就会联想到任务调度系统和时分复用实施起来是非常类似的。

        当前或者以后,基于时分复用的载波电路逐渐退出了历史舞台,但这并不意味着时分复用本身退出了历史舞台,退出的只是固定时隙的载波链路。时分复用机制从整条链路集成到了链路的两端,变成了数据包调度系统,如今我们经常见到的各种队列的dequeue机制,就是古老时隙的遗留下来的灵魂。

        以前的SONET/SDH基于SerDes,现在的千兆,万兆以太网也可以基于SerDes,而SerDes就是一种时分复用的通信技术,区别在于这个时分复用作用的范围和周期。在SONET/SDH链路上,时分复用的载波是永恒存在的,只要配置好了,就永远会有固定的载波在链路上,而对于以太网而言,载波只有在有数据要发送的时候才会存在。

3.补遗

这篇文章的初稿是我在清明节假期去清远连州自驾游时写的,当时到了目的地之后,比较失望,没有找到像样的美食,所以只是吃了一碗不那么正宗的螺蛳粉,晚上看完瑶族表演之后,买了瓶米酒就回酒店了,时间还早就写了一篇文章,这就是本文的前身:

以太网是按需发送数据的,有数据的时候就发送,没有数据的时候,链路便空闲。当然,我说的是交换式以太网,和之前共享式以太网是不同的。在共享式以太网中,大家要一起仲裁链路是否可用,然后才能使用链路发送数据,这就是CSMD/CD机制,在那个年代,你发出的数据可能会由于冲突和被淹没,这是真正的统计复用分组交换的数据传输方式。
-----------------------
但是在以太网开始之前,甚至在计算机开始之前,早就有了一种叫做电话网的东西,这种网络支撑的是电路交换应用,我们先看下它是怎么构建起来的。
        上学的时候,网络课的老师会讲到电路交换,两个人打电话,他们之间会接通一个回路,直到他们挂断电话之前,这条回路被他们独占,这就是电路交换,但是课程上讲的也就到这里点到为止。但是为了理解SDH,OTN,PTN,以太网这些鱼龙混杂的概念,就必须继续往下说电路交换。
        我们想4个人同时打电话怎么办?其中两个主叫在北京,两个被叫在深圳,北京和深圳之间只有一根线缆,到底谁能用?这就涉及到了如何复用电路的问题,在电话网中,复用电路的技术就是时分复用,类似电脑操作系统调度里的时间片轮转的技术。你用一会儿,我用一会儿,这就解决了共同打电话的问题。在具体实施上就是规定按每秒8000次的频率往线缆上发送帧,每帧的发送间隔为125微秒,电话网为了传送话音,这个参数足够了。那么如果提高发帧的速率,则可以在125微秒发送N个帧,这就意味着可以把N路电话回路全部塞入一个物理线缆中。
        一个电话回路就是一条E1链路,容量是64k,如果100个电话回路塞入到一条物理线缆,那就是E100,容量上就是6400k...当然在电话网络上不这么叫,也不这么捆绑电话回路。在真实的电话网,E1还是叫E1,但是并不是捆绑任意数量的E1成一个新的链路的,而是按照规则的倍速关系(比如4倍速)递增电话回路的数量,最终达到物理极限。PDH,SDH就是以这种方式组织起来的物理链路。
        比如一条SDH链路捆绑了100条E1(这里只是举例),姑且还叫它E100吧,那么当有人打电话的时候,交换机会从这100条回路中选一条当前未被占用的回路,然后两边交换机槽位一捆绑,直到挂断电话,这条回路就归他们使用了。总体来讲,不管是PDH,SDH,其原理如下:
###此图并没有机会画完。
我们注意到,这里面的时隙并非时时刻刻都能用满的,即便用不满,空载波也要发送,这就好比铁路客运,没有乘客,空车也要发车,但乘客超出了火车的运载能力,多一个也不行(当然,在中国,多几千个都没问题,我只是说理论上)。
        这就是最初的网络,我们可以看到,这种网络也是可以承载IP数据报文的。事实上,它就是个底层的车皮,并没有规定上面运什么东西,它的问题在于,时隙的空载浪费以及物理极限难以突破。到此为止,我们已经看到了第一种传输网络,即严格的时隙复用网络,链路时隙数量固定。
        另一种传输网的传输方式是针对第一种方式的优化,不再固定时隙,而是固定帧长,如果你需要的速率更大,那就发快一点,反之,就发慢一点。

.....................................


所以一般的道路上会有相关规定,比如非机动车禁止上高速,城市快速路白天不能跑货运等。计算机网络也是这么解决问题的,把硬性的时隙构建而成的严格保证质量的电路交换变成了基于管理的网络。

ATM的n^n互联问题如何解,ATM与MPLS如何...

........................................

都是偏理啊。我之所以把自己的思绪过程贴出来,不是为了记录,而是想表达一种偏差啊。有人问为什么唐诗都很短,我觉得吧,喝了酒之后,人能保持清醒且有创造力的时间段也就最多半小时,半小时前创造力没有被激发,半小时后直接就喝晕了,所以只有这半小时是最佳的创作时期,所以很多的诗人就在这半小时中写出了各种律诗,绝句。



©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值