路由和交换是网络世界中两个重要的概念。传统的交换发生在网络的第二层,即数据链路层,而路由则发生在第三层,网络层。在新的网络中,路由的智能和交换的性能被有机的结合起来,三层交换机和多层交换机在园区网络中大量使用。
本文将介绍一些路由和交换的基本概念,分为网络层次结构、交换、路由和全交换园区网络四个部分。
网络层次结构
网络参考模型的定义给出了清晰的功能层次划分。最常被提及的是ISO OSI参考模型和TCP/IP协议簇。
国际标准化组织定义的OSI参考模型将计算机网络按功能划分为七个层次,这就是我们常说的七层模型或七层结构。网络功能分层的直接好处是这些层次可以各司其职,由不同厂家开发的不同层次的软硬件设备可以配合使用。一个层次的设备更新或软件重写也不会影响到其它层次。TCP/IP协议体系中的各个层次和ISO的参考模型有大致的对应关系。如下图所示:
OSI中间一层,即第四层执行传输功能,它负责提供从一台计算机到另外一台计算机之间的可靠数据传输。传输层(Transport Layer)是承上启下的一层,在它的下面有三层,都是与数据传输相关的功能;上面也有三层,提供与网络应用相关的功能。
OSI下三层中。物理层(Physical Layer)负责实际的传送数据信号,数据链路层(Data Link Layer)负责网络内部的帧传输,而网络层(Network Layer)负责网络间的计算机寻址和数据传输。
OSI上三层中。应用层(Application Layer)是最高的层次,它负责提供用户操作的界面,因特网中常用的电子邮件服务,文件传输服务等都是这一层提供的。表示层(Presentation Layer)负责数据的表示,比如发送数据之前的加密,接收数据时的解密,中英文的翻译等等都是这一层提供的功能。会话层(Session Layer)负责建立和终止网络的数据传输,计算机名字转换成地址的工作也在这层完成。
传统意义上的交换是第二层的概念。数据链路层的功能是在网络内部传输帧。所谓"网络内部"是指这一层的传输不涉及网间的设备和网间寻址。通俗的理解,一个以太网内的传输,一条广域网专线上的传输都由数据链路层负责。所谓"帧"是指所传输的数据的结构,通常帧有帧头和帧尾,头中有源目二层地址,而帧尾中通常包含校验信息,头尾之间的内容即是用户的数据。
数据链路层涵盖的功能很多,所以又将它划分为两个子层, MAC(Media Access Control,介质访问控制)层和LLC(Logical Link Control,逻辑链路控制)层。常见的局域网和城域网的二层标准是IEEE的802协议。而在广域网中,HDLC(High-level Data Link Control,高级链路控制)、PPP(Point-to-Point Protocol,点对点协议)和Frame Relay(帧中继)等协议都有广泛的使用。
路由是第三层的概念。网络层在Internet中是最重要的,它的功能是端到端的传输,这里端到端的含义是无论两台计算机相距多远,中间相隔多少个网络,这一层保障它们可以互相通信。例如我们常用的PING命令就是一个网络层的命令,PING通了,就是指网络层的功能正常了。通常,网络层不保障通讯的可靠性,也就是说,虽然正常情况下数据可以到达目的地,但即便出现异常,网络层也不作任何更正和恢复的工作。
网络层常用的协议有IP、IPX、APPLETALK等等,其中IP协议更是Internet的基石。在TCP/IP协议体系中,第三层的其他辅助协议还包括ARP(地址解析) 、RARP(反向地址解析)、 ICMP(网际报文控制)和IGMP(组管理协议)等等。由于网络互连设备都具有路径选择功能,所以我们经常将 RIP、OSPF等路选协议也放在这一层讨论。
交换
谈到交换的问题,从广义上讲,任何数据的转发都可以称作交换。当然,现在我们指的是狭义上的交换,仅包括数据链路层的转发。做网络的人理解交换大多是从交换机开始的,电路交换机在通信网中已经使用了几十年了,做帧交换的设备,尤其是以太网交换机的大规模使用则是近几年的事情。
理解以太网交换机的作用还要从网桥的原理讲起。传统以太网是共享型的,如果网段上有四台计算机A、B 、C和D,那么A与B通信的同时,C和D只能是被动的收听。假如将缆段分开(即微化),A、B在一段上,C、D在另一段上,那么A和B通信的同时,C和D也可以通信,这样原有10M的带宽从理论上讲就变成20M了。同时,为了确保这两个网段可以互相通信,需要用桥将它们连接起来,桥是有两块网卡的计算机,如下图所示:
在整个网络刚刚启动时,桥对网络的拓朴一无所知。这时,假设A发送数据给B,因为网络是广播式的,所以桥也收到了,但桥不知到B在自己的左边还是右边,它就进行缺省的转发,即在另外一块网卡上发送这个信息。虽然做了一次无用的转发,但通过这个过程,桥学习到数据的发送者A在自己的左边。当网络上的每一台计算机都发送过数据之后,桥就是智能的了,它了解每一台计算机在哪一个网段上。当A再发送数据给B时,桥就不进行数据转发了,与此同时,C可以发送数据给D。
从上面的例子可以看出,桥可以减少网络冲突发生的几率,这就是我们使用桥的主要目的,称作减小冲突域。但桥并不能阻止广播,广播信息的隔绝要靠三层的连接设备,路由器。
按照缆段微化的思想,缆段越多,可用带宽就越高。极限情况是每一台计算机处在一个独立的缆段上,如果网络上有十台计算机,就需要一个十端口的桥将它们连接起来。但实现这样一个桥不太现实,软件转发的速度也跟不上,于是有了交换机,交换机就是将上述多端口的桥硬件或固件化,以达到更低的成本和更高的性能。
交换机的一个重要的功能是避免交换循环,这就涉及到了STP(Spanning Tree Protocol,分支树协议)。分支树协议的功能是避免数据帧在交换机构成的网络中循环传送。如下图所示,如果网络中有冗余链路的话,STP协议现选出根交换机(Route Bridge),然后确定每一台非根交换机到根交换机之间的路径,最后,将此路径上的所有链路置成转发(Forward)状态,其余的交换机之间的连接就是冗余链路,置为阻塞(Block)状态。
交换机的另外一个重要功能是VLAN(Virtual LAN,虚拟局域网)。VLAN的好处主要有三个:
端口的分隔。即便在同一个交换机上,处于不同VLAN的端口也是不能通信的。这样一个物理的交换机可以当作多个逻辑的交换机使用。
网络的安全。不同VLAN不能直接通信,杜绝了广播信息的不安全性。
灵活的管理。更改用户所属的网络不必换端口和联线,只该软件配置就可以了。
VLAN可以按端口或MAC地址来划分。
有时,我们需要在交换机所构成的网络上保持VLAN的配置的一致性。这就需要交换机之间按照VTP(VLAN Trunk Protocol,VLAN骨干协议)交流VLAN信息。VTP协议只在骨干端口(Trunk Port),即交换机之间的端口上运行。
路由
路由器是网络间的连接设备,它重要工作之一是路径选择。这个功能是路由器智能的核心,它是由管理员的配置和一系列的路由算法实现的。
路由算法有动静之分,静态路由是一种特殊的路由,它是由管理员手工设定的。手工配置所有的路由虽然可以使网络正常运转,但是也会带来一些局限性。网络拓扑发生变化之后,静态路由不会自动改变,必须有网络管理员的介入。缺省路由是静态路由的一种,也是由管理员设置的。在没有找到目标网络的路由表项时,路由器将信息发送到缺省路由器(gateway of last resort)。而动态的算法,顾名思义,是由路由器自动计算出的路由,常说的RIP、OSPF等等都是动态算法的典型代表。
另外还可以将路由算法分为DV和LS两种。DV(Distance,距离向量)算法将当前路由器的路由信息传送给相邻路由器,相邻路由器将这些信息加入自身的路由表。而LS(Link State,链路状态)算法将链路状态信息传给域内所有的路由器,接收路由器利用这些信息构建网络拓扑图,并利用图论中的最短路径优先算法决定路由。相比之下,距离向量算法比较简单,而链路状态算法较为复杂,占用的CPU和内存也要多一些。但是由于链路状态算法采用的是自身的计算结果,所以比较不容易产生路由循环。RIP是DV类算法的典型代表,而OSPF是LS的代表协议。
四种最常见路由协议是RIP、IGRP、OSPF和EIGRP。
RIP(Routing Information Protocols,路由信息协议)是使用最广泛的距离向量协议,它是由施乐(Xerox)在70年代开发的。当时,RIP是XNS(Xerox Network Service,施乐网络服务)协议簇的一部分。TCP/IP版本的RIP是施乐协议的改进版。RIP最大的特点是,无论实现原理还是配置方法,都非常简单。RIP基于跳数计算路由,并且定期向邻居路由器发送更新消息。
IGRP是CISCO专有的协议,只在CISCO路由器中实现。它也属于距离向量类协议,所以在很多地方与RIP有共同点,比如广播更新等等。它和RIP最大的区别表现在度量方法、负载均衡等几方面。IGRP支持多路径上的加权负载均衡,这样网络的带宽可以得到更加合理的利用。另外,与RIP仅使用跳数作为度量依据不同,IGRP使用了多种参数,构成复合的度量值,这其中可以包含的因素有:带宽、延迟、负载、可靠性和MTU(最大传输单元)等等。
OSPF协议是80年代后期开发的,90年代初成为工业标准,是一种典型的链路状态协议。OSPF的主要特性包括:支持VLSM(变长的子网掩吗)、收敛迅速、带宽占用率低等等。OSPF协议在邻居之间交换链路状态信息,以便路由器建立链路状态数据库(LSD),之后,路由器根据数据库中的信息利用SPF(Shortest Path First,最短路径优先)算法计算路由表,选择路径的主要依据是带宽。
EIGRP是IGRP的增强版,它也是CISCO专有的路由协议。EIGRP采用了扩散更新(DUAL)算法,在某种程度上,它和距离向量算法相似,但具有更短的收敛时间和更好的可操作性。作为对IGRP的扩展,EIGRP支持多种可路由的协议,如IP、IPX和AppleTalk等等。运行在IP环境时,EIGRP还可以与IGRP进行平滑的连接,因为它们的度量方法是一致的。
以上四种路由协议都是域内路由协议,他们通常使用在自治系统的内部。当进行自治系统间的连接时,往往采用诸如BGP(Border Gateway Protocols,边界路由协议)和EGP(External Gateway Protocols,外部路由协议)这样的域间路由协议。目前在Internet上使用的域间路由协议是BGP第四版。
收敛是路由算法选择时所遇到的一个重要问题。收敛时间是指从网络的拓扑结构发生变化到网络上所有的相关路由器都得知这一变化,并且相应地做出改变所需要的时间。这一时间越短,网络变化对全网的扰动就越小。收敛时间过长会导致路由循环的出现。
在上述几种域内路由算法中,RIP和IGRP的收敛时间相对较长,都是分钟数量级的;OSPF要短一些,数十秒内可以收敛;EIGRP最短,网络拓扑发生变化之后,几秒钟即可达到收敛状态。
全交换园区网络
传统的园区网络是路由器加交换机的结构。如下图所示,交换机负责网络内部的传输,划分VLAN以保证二层的安全性和灵活性,路由器则完成网间的寻址和数据转发工作。
通常,路由器的性能比交换机要差一些,因为路由器是基于软件的查表转发,而交换机可以实现硬件的直通式转发。但在传统的园区网络中,路由器并不会成为网络的瓶颈。因为80%的数据量是在网络内部的通讯,只有20%的数据是做远程访问,也就是说,大多数经过交换机的信息并不经过路由器。这就是传统网络的80/20流量模型。
近年来由于Internet/Intranet计算模式的兴起,应用被集中管理,而不是象从前那样分散在各个部门的网络中,园区网络的流量模型发生了很大的变化。大量的网络访问是远程的,也就是要经过路由器的。这被称为新的20/80流量模型。因此,路由器逐渐成为网络的瓶颈。
为了从技术上解决这个问题,网络厂商开发了三层交换机,也叫做路由交换机。它是传统交换机的性能和路由器的智能的结合。路由选择仍由路由器完成,但路选的结果被交换机保留在自身的路由缓存中。这样,一个数据流中的第一个数据包经过路由器,后继的所有数据包直接由交换机查表转发。得益于硬件转发,三层交换机可以做到线速路由,如下图所示。
许多厂家生产的三层交换机本身即是交换机和路由器的结合体,如Cisco的5000,5500,6500系列的交换机可以选配路由模块,实现三层功能。
如此一来,园区网的内部就是交换机和三层交换机的天下了,全交换的园区网络适应新的流量模型,彻底克服了传统网络的路由器瓶颈,极大地提高了网络的效率。同时,路由器并没有失业,仍然被用在远程连接、拨号访问等场合。
本文第一部分中回顾了网络的层次结构,接下来谈了传统的路由和交换的原理,最后介绍了在现在的园区网络中如何将路由和交换的优势相结合,最好地满足用户的流量模型。
路由,交换,路由交换是本文的主要三个问题。
篇幅所限,对于具体的协议就不再赘述了,有时候,了解协议的工作流程和具体的设备,如Cisco的路由器和交换机,对于理解网络的原理是很有帮助的。