资讯频道

如何玩转数据中心以太网技术

  以太网技术从诞生到现在已经走过了41年。在这41年里,从粗同轴电缆上运行2.94Mbps网络,到今天运行在光纤、铜或无线上的40G/100G网络,四十多年来,以太网不断向前发展、演进。以太网已经成为数据中心网络内部必选的网络技术,成为局域网领域的网络标准。翻开以太网的RFC文档,里面对各种协议做了详实的描述,到现在已经有了6476篇,这些协议构成了今天复杂多样的网络。随着各种应用层出不穷,以太网协议也让人看得愈加复杂,尤其是在数据中心里,这里充满着各种软硬件设备,如何让这些系统互联并高效工作,就全要靠以太网技术了,久而久之以太网技术已经衍生成为一门网络学科,成为网络技术人员必须要掌握的基础技术。然而要完全掌握以太网技术,不是那么简单的事情,没有谁能将6000多篇的RFC文档吃透,甚至根本没有精力去将所有的RFC文档读完,关于以太网技术的讲解书籍更是琳琅满目,让人眼花缭乱。其实任何人都不可能全部掌握以太网技术,但是却可以领悟出其实现的精髓,本文将分析以太网技术的综合特点,让大家真正地认识以太网技术,从而玩转以太网技术。

  以太网这个名字起源于一个科学假设:声音是通过空气传播的,那么光呢?在外太空没有空气光也能传播,所以有人说光是通过一种叫以太的物质传播,从而以太网技术就出现了,当然实际上世界上根本就不存在以太这种物质。以太网技术最初诞生时就是一种局域网技术,使用CSMA/CD技术,用于PC的互连。PC之间实现互访和传送数据就需要两者之间遵循一定的标准,以太网就是来制定这样传输标准的技术。以太网将网络分为7层,不同的网络层传输不同的网络协议,从而完成不同层次的数据转发。在RFC文档中对不同层次的协议都有明确定义,这6000多份的标准协议有两个共同的特点,几乎是所有的网络协议都要遵守的,就是报文格式和状态机。

  首先就是报文格式,两个通过网络互连的设备要传送数据,那么发送端设备发出的数据格式,接收端设备一定要能识别才能完成传送,所以两者要遵循相同的以太网标准。比如对于TCP数据传输,发送端设备发出的一定都是TCP报文,而接收端设备要能识别TCP报文,这样才能完成传输。一个数据流到底是TCP还是UDP、ICMP等,就是通过以太网标准来定义的。对于不同的协议,以太网定义了不同的报文格式,通过不同字段来标识不同的协议,这样发送端将要传送的数据之前加上报文头进行数据封装,通过报文头来表明数据本身所具有的特征,然后接收端设备收到后,就知道是什么协议,从而遵循协议标准进行解封装,得到数据包。不管是新提出的协议,还是老掉渣的协议都是遵循着这样的标准,之所以新的协议还是不断出现,更多的是发现原有的标准定义的格式都有缺陷,新的协议是来进行优化的。

  其次有了报文格式还不行,发送端设备不能说想什么时候发送就什么时候发送,要和接收端建立好链接关系,这样接收端设备才能知道。比如做FTP下载,传送的是TCP流量,那么就需要在发送端设备和接收端设备之间建立TCP链接,建立好了之后,数据流量才能由发送端发往接收端。由于网络环境不是一成不变的,总是会有波动,所以为了能够更好地完成数据传送,还需要适时监控链接的状态,一旦出现问题自动进行网络调整,这就是状态机。也就是发送端和接收端只有在一定的状态下才可能完成数据传输,当出现异常状态时,数据传输也会终止。状态机是以太网技术的精髓,不管哪种协议都有状态机,比如OSFP、STP、VRRP等等,RFC详细定义了各种协议的状态机状态和工作原理。比如OSPF协议,当两台网络设备之间要互通、要共享路由信息,就会用到OSFP协议,这个是域内广泛使用的路由技术,除此之外还有ISIS、BGP,并称以太网三大路由技术。两台网络设备要共享路由,则要先建立OSPF邻居,建立邻居要经历Init/Exstart/Full等状态机的变化,才能建立邻居,一旦邻居建立起来,就周期性地通过Hello报文维持邻居状态。在邻居状态正常的情况下,可以进行路由计算、路由学习和切换。对于二层环路协议STP也如此,有Block/Discarding/Forwarding等状态机,通过这些状态机,网络设备就知道了其它设备的工作状态,并通过周期性地发送监控消息,来保持状态的整网同步。

  以太网的协议报文格式定义了设备之间传输数据内容的标准,让所有的设备都要遵从。而协议状态机则定义了设备之间如何进行数据传输,任何一种协议都是由报文格式和状态机构成的,区别仅在于格式定于的区别和状态机定义的差异。所以一旦明白了这个道理,人人都可以设计以太网协议标准,都可以提交RFC,不过如果这样那RFC的标准就会更多了。其现有的数千条协议标准已经将以太网技术发挥到了极致,再提出新的协议困难很大。原因在于新提出的协议一定要比原有的协议有很大的改进,经过40多年的发展,以太网已经发展得很完善,可改进的空间越来越小。还有最大的限制就是报文格式的长度是一定的,为了减少传输的效率,报文头长度越短,传输的效率就越高。现有的协议已经将报文能变化的BIT都派上用场了,除非再增加长度。对于IPV4报文头长度是固定的,无法再增加,对于IPV6报文头可以增加Option选项来增加长度,但是每增加一个字节意味着网络开销就要增加不少,因为每个数据包都要增加一个字节,原本数据要1000字节的100个数据包转送完,数据包长度增加一个字节就要多传送100个字节,增加了网络开销。另外报文格式设计得越复杂也不利于传输数据,比如传送一个数据,接收设备每接收到一个报文都要检查目的MAC、目的IP、端口号、协议特征等这些信息是否与自己想要接收的数据相符,这些检查和判断大大增加了接收设备的计算负载,所以报文格式越简化越好。所以报文格式和状态机的设计本不是难事,但是要考虑到网络开销和计算花费,就不是那么容易设计的事了。

  不管怎样,只要掌握了报文格式和状态机,就对这个协议的工作机制有了了解,迅速掌握了这个协议的工作原理,将以太网技术玩转于掌间就不难了。基于这样的思路再去看以太网协议以及RFC文档,就会发现都是千变一律,反复都是在描述这个协议的报文格式和状态机的工作方式,只要关注这个协议具有区别于别的协议的格式和状态机特征就可以了。现有的协议有数千种,除了处于不同网络层的工作原理差别较大外,处于同一网络层次的协议报文格式和状态机差别不大,学习了一种协议,然后举一反三,在短时间内就可掌握多种网络协议。参透了这点,迅速会有一种“会当凌绝顶,一览众山小”的感觉,玩转数据中心以太网技术。

文章版权归西部工控xbgk所有,未经许可不得转载。