二层交换机工作于
OSI模型的第2层(数据链路层),故而称为二层交换机。二层
交换技术的发展已经比较成熟,二层交换机归属于
数据链路层设备,可识别
数据帧中的
MAC地址信息,依据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。
工作流程
过程
(1) 当交换机从某个端口收到一个
数据帧,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;
(2) 再去读取数据帧头中的目的
MAC地址,并在地址表中查找相应的端口;
(3) 如表中有与这目的MAC地址对应的端口,把数据帧直接复制到这端口上;
(4) 如表中找不到相应的端口则把数据帧广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。
不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。
工作原理
从二层交换机的工作原理可以推知以下三点:
(1) 由于交换机对多数端口的数据进行同时交换,这就要求具有很宽的交换
总线带宽,如果二层交换机有N个端口,每个端口的带宽是M,交换机总线带宽超过N×M,那么这交换机就可以实现
线速交换;
(2) 学习端口连接的机器的MAC地址,写入地址表,地址表的大小(一般两种表示方式:一为BUFFER RAM,一为MAC表项数值),地址表大小影响交换机的接入容量;
(3) 还有一个就是二层交换机一般都含有专门用于处理数据帧转发的
ASIC (Application specific Integrated Circuit)芯片,因此转发速度可以做到非常快。由于各个厂家采用ASIC不同,直接影响
产品性能。
以上三点也是评判二
三层交换机性能优劣的主要技术参数,这一点请大家在考虑
设备选型时注意比较。
路由技术
路由器工作在
OSI模型的第三层---
网络层操作,其
工作模式与二层交换相似,但路由器工作在第三层,这个区别决定了路由和交换在传递包时使用不同的
控制信息,实现功能的方式就不同。工作原理是在路由器的内部也有一个表,这个表所标示的是如果要去某一个地方,下一步应该向哪里走,如果能从
路由表中找到
数据包下一步往哪里走,把
链路层信息加上转发出去;如果不能知道下一步走向哪里,则将此包丢弃,然后返回一个信息交给源地址。
路由技术实质上来说不过两种功能:决定最优路由和转发数据包。路由表中写入各种信息,由
路由算法计算出到达目的地址的最佳路径,然后由相对简单直接的转发机制发送数据包。接受数据的下一台路由器依照相同的工作方式继续转发,依次类推,直到数据包到达目的路由器。
路由更新
距离矢量路由协议
在所有的
动态路由协议中,最简单的就是距离矢量路由协议(D-V)。它使用的是最简单的
距离矢量(Distance-Vector,简称D-V)
路由算法。
距离矢量算法通过上述方法累加
网络距离,并维护
网络拓扑信息数据库。
距离矢量协议定期直接传送各自
路由表的所有信息给邻居(
RIP默认是30秒)。网络中的路由器从自己的邻居路由器得到路由信息,并将这些路由信息连同自己的本地路由信息发送给其他邻居,这样一级一级地传递下去以达到全网同步。每个路由器都不了解整个网络拓扑,它们只知道与自己直接相连的网络情况,并根据从邻居得到的路由信息更新自己的路由表。它所有的信息都靠道听途说,它相信所有邻居告诉它的所有信息,只在这些邻居中选择最优的来采用,类似于“传话”这个游戏。
解决方案
定最大值
如上所述,发生
路由环路时,路由器去往网络11.4.0.0的
跳数会不断增大,网络无法收敛。为解决这个问题,我们给跳数定义一个
最大值,在
RIP路由协议中,允许跳数最大值为15,当跳数到达最大值时,网络11.4.0.0被认为是不可达的,路由器会在
路由表中显示网络不可达信息,并不再更新
到达网络11.4.0.0的路由。
通过定义最大值,距离矢量路由协议可以解决发生环路时路由
权值无限增大的问题,同时也校正了错误的路由信息。但是,在最大权值到达之前,路由环路还是会存在。也就是说,这个方案只是补救措施,不能避免环路产生,只能减轻路由环路产生的危害。
水平分割
水平分割是在距离矢量路由协议中最常用的避免环路发生的解决方案之一。分析产生
路由环路的原因,其中一条就是因为路由器将从某个邻居学到的路由信息又告诉了这个邻居。水平分割的思想就是在路由信息传送过程中,不再把路由信息发送给接收此路由信息的接口上。
抑制时间
路由中毒和抑制时间结合起来,也可以在一定程度上避免
路由环路产生,同时也可以抑制因复位接口等原因引起的网络动荡。这种方法在
网络故障或接口复位时,使相应路由中毒,同时启动抑制时间,控制路由器在抑制时间内不要轻易更新自己的
路由表,从而避免环路产生、抑制网络动荡。
触发更新
触发更新机制是在路由信息产生某些改变时,立即发送给相邻路由器一种称为触发更新的信息。路由器检测到
网络拓扑变化,立即依次发送触发更新信息给相邻路由器,如果每个路由器都这样做,这个更新会很快传播到整个网络。
当网络11.4.0.0 不可达了,路由器C立即通告网络11.4.0.0不可达信息,路由器B接收到这个信息,就从S0口发出网络11.4.0.0不可达信息,依次路由器A从E0口通告此信息。
从以上叙述可以看出,使用触发更新方法能够在一定程度上避免
路由环路发生。但是,仍然存在两个问题:
(2)如果触发更新信息还没有来得及发送,路由器就接收到相邻路由器的周期性路由更新信息,使路由器更新了错误的路由信息。
为解决以上的问题,我们可以将抑制时间和触发更新相结合。抑制时间方法有一个规则就是当到某一目的网络的路径出现故障,在一定时间内,路由器不会轻易接收到这一目的网络的路径信息。因此,将抑制时间和触发更新相结合,就可以确保触发信息有足够的时间在网络中传播。
在多路径的情况下,要综合使用这几种方案才能在一定程度上解决环路问题。
距离矢量协议无论是实现还是管理都比较简单,但是它的
收敛速度慢,报文量大,占用较多网络开销,并且为避免
路由环路需要做各种特殊处理
路由协议
是使用最广的一类域内
路由协议。它采用一种“拼图”的
设计策略,即每个路由器将它到其周围邻居的链路状态向全网的其他路由器进行广播。这样,一个路由器收到从网络中其他路由器发送过来的路由信息后,它对这些链路状态进行拼装,最终生成一个全网的拓扑视图,近而可以通过
最短路径算法来计算它到别的路由器的最短路径。
链路状态路由选择协议的目的是映射
互连网络的
拓扑结构。每个链路状态路由器提供关
于它邻居的拓扑结构的信息。这包括:
· 那些链路的情况(状态)。
这个信息在网络上
泛洪,目的是所有的路由器可以接收到第1手信息。链路状态路由器并不会广播包含在它们的
路由表内的所有信息。相反,链路状态路由器将发送关于已经改动的路由的信息。链路状态路由器将向它们的邻居发送呼叫消息,这称为链路状态
数据包( L S P )或者链路状态通告( L S A )。然后,邻居将L S P复制到它们的路由选择表中,并传递那个信息到网络的剩余部分。这个过程称为泛洪( f l o o d i n g )。它的结果是向网络发送第1手信息,为网络建立更新路由的准确映射。
链路状态路由选择协议使用称为代价的方法,而不是使用跳。代价是自动或人工赋值的。根据链路状态协议的算法,代价可以计算
数据包必须穿越的跳数目、链路带宽、链路上的当前负载,或者甚至其他由管理员加入的权重来评价。
(1)当一个链路状态路由器进入链路状态
互连网络时,它发送一个呼叫数据包,以了解其邻居。
(2)邻居用关于它们所连接的链路以及相关的代价度的信息进行应答。
(3) 起始的路由器用这个信息来建立它的路由选择表。
(4) 然后,作为定期更新的一部分。路由器向它的邻居发送链路状态数据包。这个L S P包括了那个路由器的链路及相关代价。
(5)每个邻居赋值数据包,并且将L S P传递到下一个邻居。这个过程称为泛洪。
(6)因为路由器并没有在向前
泛洪L S P之前
重新计算路由选择数据库,聚合时间减少了。
链路状态路由选择协议的一个主要优点就是这样的一个事实,即路由选择循环不可能形成,原因是链路状态协议建立它们自己的路由选择信息表的方式。第2个优点是,在链路状态
互连网络中聚合是非常快的,原因是一旦路由选择
拓扑出现变动,则更新在互连网络上迅速泛洪。这些优点又释放了路由器的资源,因为对不好的路由信息所花费的处理能力和带宽消耗都很少。维护路由器区域的
链路状态数据库将在路由器上加入R A M负担。类似的是,
D i j k s t r a算法不得不在每次路由改变的时候运行;这在所有的路由器上加重了C P U的负担。
D i j k s t r a算法首先是最短的路径,在这里对
路径长度的迭代确定了最短的路径
生成树。
由于路由器需要做大量的路径计算工作,一般处理器的工作能力直接决定其性能的优劣。当然这一判断还是对中低端路由器而言,因为
高端路由器往往采用
分布式处理系统体系设计。