以太网交换原理

以太网交换原理
本文力求阐明以太网交换原理,并对相关知识作以介绍。
1        以太网交换机相关概念
1.1        传统的电话交换技术
交换概念始于电话交换。传统电话网由传输电路与电话交换机组成,处于网络节点的交换机完成对传输链路的选路与连接。一次长途通话往往要经过发端局、转接局(汇接局)和收端局才能完成。在通话前,电话交换机根据信令将分段的传输链路连接起来,从而形成一条从主叫到被叫的通话电路,通话结束后根据信令拆除这条通路,这种交换方式称为电路交换方式。电路交换的优点是延时小,实时性好;缺点是通话期间主、被叫间的物理电路被该次呼叫所独占,电路利用率低。
1.2        传统的数据交换技术
数据通信对实时性要求不高,故数据通信存在多种交换方式,最早的数据通信是利用已有的电话网加调制解调器完成,这种数据交换方式仍是电路交换方式。现在常见的数据交换方式有数据报方式和分组方式。
数据报(报文)交换采用存储/转发方式。网络节点设备先将途经的数据报完全接收并储存,然后根据数据报所附的目的地址,选择一条合适的传输链路将该数据报发送出去。报文交换不像电路交换,无需预先为通信双方建立一条专用的电路,因此就不存在建立和拆除电路的过程。由于数据报的传送采用接力方式,任何时刻数据报只占用节点间的一条链路,因而提高了传输效率,但这也造成了报文交换的延时非常大,故主要用在电报交换中。
分组交换和数据报交换一样。也采用存储/转发方式,但不像数据报交换是以整个数据报为单位进行传输,而是将用户要发送的数据报分割为定长的一个个数据分组(包),并附上目的地址(或标记),按顺序送分组交换网发送,分组交换可以采用两种不同方式来处理这些分组。
(1)报文传输分组交换
报文传输分组交换与报文交换相似,只是将每一分组都当成一个小报文来独立处理,故报文传输分组交换中每个分组均带有目的地址。网络节点设备对每个分组都要根据网络拓扑和链路负荷情况进行路由选择,因链路负荷是动态的,故一个数据报所包含的各分组,可能通过不同途径到达目的地,分组到达终端的顺序也有可能被打乱,这时要求目的节点或终端负责将分组重新排序、组装为报文。
(2)虚(逻辑)电路传输分组交换
虚电路传输分组交换要求在发送某一群分组前,建立一条双方终端间的虚电路。一旦虚电路建立后,属同一数据报的所有分组均沿这条虚电路传输,通信结束后拆除该虚电路。通过拨号建立的虚电路称为交换型虚电路(SVC);固定连接的虚电路则称为永久型虚电路(PVC)。
虚电路传输分组交换类似电路交换,虚电路传输分组交换通过节点交换机将一段段虚链路连接起来形成一条收发终端间的虚电路。虚电路的“虚”字意味着只有传送分组时才占有物理电路,不传时则让给别的用户使用。这样在一条物理电路上用统计复用方式可同时建立若干条虚电路,提高了线路的利用率。
电路交换与虚电路交换十分相似,都需要在通信前建立一条端到端的物理电路或虚电路,结束通信后拆除这条电路,这种交换方式称为面向连接的交换方式。面向连接的交换方式往往需要在相关连的一群分组头上附加一个标记,节点设备根据该标记进行交换接续。
在报文交换与报文传输分组交换中,交换途经的每个节点需要根据数据报或分组的目的地址重新寻找最佳路由,通信双方在端对端之间并不存在物理或逻辑上的连接。因此也常将报文交换和报文传输分组交换称为面向非连接的交换方式。为了与面向连接的节点交换设备相区别,一般将面向无连接的节点设备称为路由器。
1.3        基于OSI参考模型的分层交换机
根据国际标准化组织(ISO)提出了开放系统互联参考模型(OSI-RM)。OSI的下四层(物理层、链路层、网络层和传输层)为通信层。通信层可根据层间通信协议进行计算机子网间的连接。从交换就是选路与连接的概念引出了1~4层交换的新概念。
(1)一层、二层交换机
OSI参考模型的第一层为物理层。该层建立在通信物理媒体上,故能够提供物理连接的交换机应为一层交换机,传统的电路交换属一层交换范畴。
OSI参考模型的第二层为链路层。第二层的链路是建立在第一层物理电路基础上的逻辑链路,故按照链路层通信协议提供逻辑(虚)电路连接的交换机为二层交换机。建立在物理(MAC)地址基础上面向连接的分组交换属第二层交换范畴。二层交换机包括X.25、帧中继、以太网、ATM等节点交换机。
局域网交换机是一种第二层网络设备,它可理解网络协议的第二层如MAC地址等。交换机在操作过程中不断的收集资料去建立它本身的地址表,这个表相当简单,主要标明某个MAC地址是在哪个端口上被发现的,所以当交换机接收到一个数据封包时,它会检查该封包的目的MAC地址,核对一下自己的地址表以决定从哪个端口发送出去。而不是象HUB那样,任何一个发方数据都会出现在HUB的所有端口上(不管是否为你所需)。
局域网交换机的引入,使得网络站点间可独享带宽,消除了无谓的碰撞检测和出错重发,提高了传输效率,在交换机中可并行的维护几个独立的、互不影响的通信进程。在交换网络环境下,用户信息只在源节点与目的节点之间进行传送,其他节点是不可见的。但有一点例外,当某一节点在网上发送广播或多目广播时,或某一节点发送了一个交换机不认识的MAC地址封包时,交换机上的所有节点都将收到这一广播信息。不过,一般情况下,交换机提供基于端口的源地址锁定功能,交换机不认识的MAC地址封包不会发送到一个源地址锁定的端口。
多个交换机互连(堆叠)形成了一个大的局域网,但不能有效的划分子网。广播风暴会使网络的效率大打折扣。交换机的速度实在快,比路由器快的多,而且价格便宜的多。但第二层交换也暴露出弱点:对广播风暴,异种网络互连,安全性控制等不能有效的解决。因此产生了交换机上的虚拟网技术。
事实上一个虚拟网就是一个广播域。为了避免在大型交换机上进行的广播所引起的广播风暴,可将其进一步划分为多个虚拟网。在一个虚拟网内,由一个工作站发出的信息只能发送到具有相同虚拟网号的其他站点。其它虚拟网的成员收不到这些信息或广播帧。
随着应用的升级,网络规划/实施者可根据情况在交换式局域网环境下将用户划分在不同虚拟网上。但是虚拟网之间通信是不允许的,这也包括地址解析(ARP)封包。要想通信就需要用路由器桥接这些虚拟网。这就是虚拟网的问题:不用路由器是嫌它慢,用交换器速度快但不能解决广播风暴问题,在交换器中采用虚拟网技术可以解决广播风暴问题,但又必须放置路由器来实现虚拟网之间的互通。
(2)三层路由器
在计算机异构子网间,需要有工作在第三层的路由器进行第二层协议的转换与第三层协议的处理。计算机同构子网的范围受到广播风暴的限制,需将广播域分割成若干部分,并采用路由器将多个同构子网连成一个大网。目前,国际上最大的互联网为Internet网(IP网),该网的一、二层可以是任何物理媒质与计算机网络,而第三层统一采用IP协议。IP面向无连接,每个IP包都附有目的地址(IP地址),路由器需要对每个IP包独立选路。节点路由器并不对节点间提供物理上或逻辑上的连接,故工作在第三层的传统节点设备称为路由器而不称为第三层交换机。
路由器的主要功能是实现路由选择与网络互连,即通过一定途径获知子网的拓扑信息与各物理线路的网络特性,并通过一定的路由算法获得达到各子网的最佳路径,建立相应路由表,从而将每个IP包跳到跳(hop to hop)传到目的地,其次它必须处理不同的链路协议。IP包途经每个路由器时,需经过排队、协议处理、寻址选路等软件处理环节,造成延时加大。同时路由器采用共享总线方式,总的吞吐量受限,当用户数量增加时,每个用户的接人速率降低。
(3)三层交换机(多层交换机)
在网络系统集成的技术中,直接面向用户的第一层接口和第二层交换技术方面已得到令人满意的答案。但是,作为网络核心、起到网间互连作用的路由器技术却没有质的突破。传统的路由器基于软件,协议复杂,与局域网速度相比,其数据传输的效率较低。但同时它又作为网段(子网,虚拟网)互连的枢纽,这就使传统的路由器技术面临严峻的挑战。随着Internet/Intranet的迅猛发展和B/S(浏览器/服务器)计算模式的广泛应用,跨地域、跨网络的业务急剧增长,业界和用户深感传统的路由器在网络中的瓶颈效应。改进传统的路由技术迫在眉睫。在这种情况下,一种新的路由技术应运而生,这就是第三层交换技术:说它是路由器,因为它可操作在网络协议的第三层,是一种路由理解设备并可起到路由决定的作用;说它是交换器,是因为它的速度极快,几乎达到第二层交换的速度。
一个具有第三层交换功能的设备是一个带有第三层路由功能的第二层交换机,但它是二者的有机结合,并不是简单的把路由器设备的硬件及软件简单地叠加在局域网交换机上。
如果利用三层交换机连接不同的以太网子网,实际的操作比较简单。
假设两个使用IP协议的站点通过第三层交换机进行通信的过程,发送站点A在开始发送时,已知目的站的IP地址,但尚不知道在局域网上发送所需要的MAC地址。要采用地址解析(ARP)来确定目的站的MAC地址。发送站把自己的IP地址与目的站的IP地址比较,采用其软件中配置的子网掩码提取出网络地址来确定目的站是否与自己在同一子网内。若目的站B与发送站A在同一子网内,A广播一个ARP请求,B返回其MAC地址,A得到目的站点B的MAC地址后将这一地址缓存起来,并用此MAC地址封包转发数据,第二层交换模块查找MAC地址表确定将数据包发向目的端口。若两个站点不在同一子网内,如发送站A要与目的站C通信,发送站A要向"缺省网关"发出ARP(地址解析)封包,而"缺省网关"的IP地址已经在系统软件中设置。这个IP地址实际上对应第三层交换机的第三层交换模块。所以当发送站A对"缺省网关"的IP地址广播出一个ARP请求时,若第三层交换模块在以往的通信过程中已得到目的站B的MAC地址,则向发送站A回复B的MAC地址;否则第三层交换模块根据路由信息向目的站广播一个ARP请求,目的站C得到此ARP请求后向第三层交换模块回复其MAC地址,第三层交换模块保存此地址并回复给发送站A。以后,当再进行A与C之间数据包转发时,将用最终的目的站点的MAC地址封包,数据转发过程全部交给第二层交换处理,信息得以高速交换。其指导思想为:一次路由,随后交换。而传统的路由器对每一个数据包都进行拆包、打包的操作,限制了系统的带宽。
在此,第三层交换具有以下突出特点:有机的硬件结合使得数据交换加速;优化的路由软件使得路由过程效率提高;除了必要的路由决定过程外,大部分数据转发过程由第二层交换处理;多个子网互连时只是与第三层交换模块的逻辑连接,不象传统的外接路由器那样需增加端口,保护了用户的投资。
当第三层交换用于异构子网之间的连接时,操作就要复杂得多,主要是涉及到不同链路层协议的转换。在此,第三层均使用IP协议,交换机对于接收到的任何一个数据包(包括广播包在内),都要将该数据包第二层(数据链路层)的信息去掉,得到一个IP的数据包,再根据IP地址进行从源端到目的端的交换,到达目的端后,再根据目的端的链路层协议打包。比较耗费资源的链路层拆包、打包工作可以由ASIC电路完成。
标记交换(tag switching)是Cisco公司提出的一种多层交换技术。标记交换将二层交换与三层路由相结合,是一种IP包的高速转发技术。标记交换包含控制部分和转发部分。其控制功能由工作在三层的网络边缘路由器完成;转发功能则由一种简单的标记交换机完成。边缘路由器在IP流到达时完成对一组IP包最佳路由路径的选择和标记的捆绑。
标记交换工作过程是:系统边缘路由器将输入链路帧的IP地址映射为简单的标记,然后将帧转化为捆绑了标记的ATM信元并送入核心网络,在网络核心由支持标记交换的ATM交换机进行标记交换,当消息传到目的地边缘路由器后,去掉信息中的标记,将ATM信元转换为帧,继续送接收者。
标记交换采用定长、短小的标记作为索引,简化了转发过程,使转发过程可以直接由硬件实现,其转发速率和吞吐量远高于传统的路由器。
IP交换(IP Switch)是Ipsilon公司提出的另一种多层交换技术。IP交换根据IP流的业务特征(即端口号),对不同业务的IP流采用不同的路由方式。对持续时间长的IP流,如HTTP(超文本传输协议)、 FTP(文件传输协议)等在ATM交换机中直接交换;而对业务量小、持续时间短的IP流,如DNS(域名业务)等则采用跳到跳的路由器传递方式,省去了ATM连接的附加开销,提高了短IP流的传输效率。IP交换机同时具有交换和路由两种功能,亦称为交换路由器。
(4)四层交换机
最近,某些网络公司宣称其交换机产品具有四层交换功能。对四层交换的说法目前颇有争议。OSI参考模型第四层为传输层,Internet网上的传输层协议为TCP协议。TCP协议运行在IP协议之上,是面向连接的协议。而IP协议是面向无连接,不提供重发、顺序控制、确认等功能,因此Internet网的可靠性管理、流量控制、顺序控制等任务都需要TCP完成。Internet网中的二层交换机和传统路由器将TCP报作为透明传输的协议数据单元(PDU)而不作任何处理,故TCP面向端对端的连接。在出现四层交换之前,TCP的处理一般由主机完成。TCP的作用是在终端中完成对IP流的重发、排序等处理,以便形成一份份完整的IP报文上交应用层。
随着一些大型计算机网络的出现,联网设备逐步增多,例如有可能在同一IP地址下使用多台服务器代替一台服务器,这就要求交换机具有向多个联网设备分配负荷的智能交换的能力。二、三层交换机是无能为力的。从均匀负荷出发,某些文章提出了四层交换的概念,实际上,四层即TCP层,交换即选路与连接。从层间交换的基本概念出发,四层交换机可以理解为利用TCP协议对相同IP地址的多个网络终端进行选路与连接的智能交换设备。
在TCP报头中为应用层协议如FTP、Telnet、HTTP等规定了整数标识符的端口号,并具有识别应用数据流会话始与终的“SYN/FIN”标志位。利用端口号与应用会话标志位,四层交换完全有能力从IP流中区分出各种业务类型的每一次会话。这样四层交换就可做到根据用户制定的接入规则,将各类业务的IP报文均匀分配到各联网设备上。
基于端口地址完成端对端连接的四层交换除了可以做到均匀负荷外,还可对各种应用数据流提供流量控制、带宽分配、优先级处理、安全授权等,以保证端到端数据通信的服务质量(QoS)。
1.4        虚拟局域网
所谓虚拟就是物理上不存在,而被认为或设定成存在。在计算机的各个领域中,无论是科学、工业和商业,近年来“虚拟”这一词已经越来越广泛地被应用了,如“虚拟存储”、“虚拟功能”、“虚拟网络”、“虚拟计算机”等等。“虚拟”这一词是从英语“virtual”翻译过来的,在计算机领域内,所谓的虚拟系统除了必要的硬件外,更重要的是往往通过软件或固化了的软件即固件来实现的。
1.4.1        什么是虚拟网络
由于计算机网络的普遍存在,网上用户数逐年增加,网络规模不断扩大;微电子技术的发展,计算机、工作站与服务器的性能提高,大量的应用程序需要越来越多的带宽;CAD/CAM群件的使用,使许多人员可同时在不同地点共同完成一个项目,新的应用不断涌现出来,消除瓶颈、增加带宽、降低时延的要求逐渐突出。
一个机构的调整、人事的调动、必然引起设备和人员的移动,这会迫使网络改变物理连接。同时网络管理人员还要重新对网络进行配置,增加了网络管理的复杂性。经常有某些特别工作组为了特别的项目建立,完成任务后就解散,工作组的成员可以相距甚远,可是需要共享数据库并协作作业,如同在一个局域网上一样。据统计,在一大型企业中,由于人员调动和调整,每年有大约40%的终端用户需要改变一次网络配置,因此需要寻找一种方法,既能满足用户对带宽的要求,又能提供灵活的连接,虚拟网络技术应运而生。
虚拟局域网(VLAN)与传统的网络一样,也是由一个物理网络组成,它之所以“虚”,是因为同一虚网内的用户不一定都连接在同一物理网段上,就是说同一虚网内的用户可以在同一大楼不同的办公室内,也可以在不同的大楼内甚至可以在不同城市工作。是通过软件依照一定的规则动态地建立的,不依赖于物理位置的逻辑工作组的互连体系。
1.4.2        VLAN的模型、特点与基础
1.4.2.1        VLAN的模型
一个VLAN就是一个逻辑工作组,是一个独立的广播域,不管它是定义在一个局域网交换机上还是分布在不同局域网交换机上。信息在同一虚网内像在一个独立网段内交换。交换机支持按端口,IP地址和协议定义VLAN的功能,因此,虚拟网络按基于应用和管理策略定义,VLAN之间的信息路由采用分布式路由方案,由交换机提供的路由功能实现。
1.4.2.2        VLAN技术特点
(1)VLAN的覆盖范围不受距离限制。例如10Base-T以太网集线器与站点之间的传输距离为100m,而VLAN的站点可位于城市的不同区域,或不同省份。
(2)VLAN建立在交换网络的基础之上,交换设备包括以太网交换机、ATM交换机、宽带路由器等。
(3)VLAN属于OSI参考模型中的第2层(数据链路层)技术,能充分发挥网络的优势,体现交换网络高速、灵活、易管理等特性,VLAN是交换网络的灵魂。
(4)VLAN较普通网络有更好的网络安全性。在普通共享式网络中,安全性很难保证,因为用户只要插入到一个活动端口就能访问网段,产生广播风暴。而VLAN能有效地防止网络的广播风暴。
(5)借助于网络管理软件,网络管理者能轻松地配置和构建逻辑VLAN,避免了构建复杂而昂贵的物理网络,降低网络建设成本。
1.4.2.3        交换是实现VLAN的基础
为扩展网络达到网间互连的目的,产生了交换机。交换机主要用于ISO开放系统互连模型的第2层,即数据链路层,通过交换将整个网络连接成一个平面图,而且这个平台可以扩展。不论这个逻辑子网有多大,交换机都能提供子网内部终端之间的连接和通信。交换器的每个端口各连一个共享式的网段,网段之间的通信通过交换机实现。在交换机内具有一个由单播地址(MAC地址)、网络设备接口以及交换机端口组成的1-1-1映射列表。进一步而言,通过对交换机适当配置后,就有可能把某些网点限制在某些特定的端口上,也可将HUB上任何一个端口分配到某个网段上,在物理上不需要作任何实际的改动工作,就可容易地将某个工作组的某个工作站,从逻辑上划分到另外一个部门的工作组中。于是,一个实际意义的虚网就此在交换机体系架构内产生。
通过802.ID生成树协议的计算和正常交换操作,交换机自动隔离单播数据流设置完交换机内特定的多播过滤表后,真正的标准VLAN得以创建。国际标准的VLAN协议IEEE802.1Q经过几年的修改已经成熟起来,各厂商在新一代的交换机中增加了对它的支持,使得VLAN技术迅速推广应用。
因此,正是由于交换技术的出现,才使VLAN技术得以实现,而VLAN技术对网络的发展又起着举足轻重的作用。
1.4.3        VALN划分方式
VLAN的划分方式大致分成以下几种。
1.4.3.1        基于端口的划分
在此模式中,VLAN是交换机端口的集合。把同一个交换机的端口分成若干组,每组构成一个VLAN,每一组相当于一个交换机,该交换机允许的最多的VLAN数目等于交换机的端口数。它不允许一个端口配置多个VLAN。
VLAN的第二层桥接网络是建立在每个交换机上,第二代端口VLAN技术允许跨越多个交换机的多个端口划分VLAN,通过交换机互连链路实现跨交换机的虚拟网技术,不同的交换机上的若干个端口可以组成一个VLAN。这样做的缺点是极大地浪费昂贵的交换机端口。
按交换机端口划分虚拟网络成员,其配置过程简单明了,是最常用的一种方式。
1.4.3.2        按MAC地址定义
这是按设备的源地址来划分。MAC地址是捆绑在网络接口卡上的,所以这种形式的VLAN运行用户从一个物理位置移动另一个物理位置,不需要作任何设置就可连入原来的VLAN,这种方式独立于网络的高层协议。利用MAC地址定义VLAN可以看成是基于用户的网络划分手段。这种方法的缺点是所有的用户都必须明确地分配给一个VLAN,对于在网络用户多的大型网络中,要求网络管理员把每个用户都一一划分到某个VLAN,这实在是困难的,也是不必要的。
1.4.3.3        基于网络层的虚拟网络
按照网络所使用的协议或网络层地址来确定VLAN的成员。这种划分方式的好处有:①按传输协议划分网段,特别适合于针对具体应用和服务来组织用户成立虚拟网络的情况。②用户可以在网络内部自由移动而不用重新配置自己的工作站。③这种类型的VLAN可以减少由于协议转换而造成的网络延迟。
1.4.3.4        通过IP广播组划分
它是指任何属于同一IP广播组的网站都属于同一VLAN。当IP信息包广播到网络上时,它将被传送到一组IP地址的受托者那里,任何一个工作站,只要它对该广播信息予以肯定的回答,就会成为该广播组的成员,视为同一虚拟网络的成员,进行面向连接的通信。这种方式能带来巨大的灵活性和可延展性,实现了VLAN间的快速、有效的信息交换。
1.5        Spanning Tree
Spanning Tree是一个维持多网桥和交换机的标准化机制,支持IEEE 802.1d标准,可协调冲突的网桥和交换器。靠自学习了解网桥两边的信息。当网络拓扑结构改变或发生故障时可自动、透明地重新配置网桥和交换器并建立冗余的备份链接。
1. 冗余网桥连接。
用网桥(或交换机,后代称二层设备)连接两个(这里简化,只讨论两个。多个等同)网段,可分割碰撞,提高媒介使用率。同时,我们希望用两个或更多的网桥连接两个网段,以做到当某个网桥发生故障时,网络连接不致中断,那就用下图的方法:
…………..|---------------Port 1--Bridge1--Port 2-------------|
A ………..|Segment1---Port 1--Bridge2--Port 2-------------| ………….B.Segment2

主机A属于Segment1,主机B属于Segment2, 两个Segment之间用两个网桥Bridge1和Bridge2连接。
2. 冗余网桥带来的问题。
如果Bridge1和Bridge2都工作,那就会出现这样的问题了。假设所有设备的ARP表都是空的。
1) A向B发数据,发出一个ARP请求。
2) Bridge1的Port1收到了这个ARP请求,一看ARP列表,是空的,于是记录下A在Segment1,并将该数据包转发到Segment2上。
3) 假设Bridge2稍慢些收到了A的ARP请求,一看ARP列表,也是空的,于是记录下A在Segment1,并将该数据包转发到Segment2上。
4) 被Bridge1转发到Segment2上的数据包被Bridge2的Port2看到了,由于数据包上的源MAC是A的,又是在Segment2上被发现的,所以对照旧的ARP列表(上面写的A在Segment1上),Bridge2认为,A已经被转移到了Segment2上,于是更新ARP表,标记A在Segment2上,并将该数据包转发到Port1,也就是Segment1上。
5) 稍晚一些,在第3步被Bridge2转发到Segment2上的数据包被Bridge1的Port2收到了,它也做了如第4步Bridge2所做的判断,于是,Bridge1也将A的MAC记录到Segment2上,并将数据包向Port1的Segment1上转发。
6) 好,数据包到了Segment1,又做相同运动,回到Segment2,于是两个网桥什么也不做,就只转发这个包,并不断地更新自己的ARP表,网络瘫痪。
3. 解决方法。
冗余网桥要做到冗余备份,看样子简单的乘二是不行的了。刚才广播风暴的形成,主要原因是网桥的ARP更新机制,但这是网桥的根本,是不能改的,所以,我们希望两个网桥中,只有一个是工作的(Active),而备份的网桥不参与数据包转发(Forwarding),就可以避免循环了。
Spanning Tree的引入
4. Spanning Tree是数学概念,指任意两点有且只有一条路径连接。就好象树,从根,到干,到枝,到叶,任意两片树叶见只有一条路。那么在Spanning Tree Protocol中,首先引入了根(Root)这个概念,和树根一样,它是整个网络拓扑(二层拓扑)的起点。
5. Spanning Tree的构想。
如果把图一中的Bridge2能自动定成热备份,不参与数据包转发,但有监视Bridge1的工作状况,当Bridge1故障时,能自动代替它的工作,那就能起到我们最初的目的了。
Spanning Tree的工作原理
7. 网络拓扑如下:
|---B3----|---B1---|---B5---|
|---B4----|---B2---|---B6---|

Seg2----Seg1------Seg3-----Seg4

用B1, B2连接Seg1和Seg3, 用B3, B4连接Seg1和Seg2,用B5, B6连接Seg3和Seg4. 每个B的左边端口叫Port1,右边的叫Port2。
8. 设计。
通常,管理员把最强壮的网桥设计为根,并放置在网络中央,就如B1。次强壮的做为根的备份,与根平行,就如B2。需要备份的Segment连接,就用两个或更多网桥连接,那么其中一个将成为Designated Bridge,也就是工作网桥,而其他的就不转发数据包。
9. 根的选举。
Spanning Tree根的选举,是网络最开始工作是进行的。通常,管理员将设计的根网桥的Priority升高,使它很自然地成为根。网桥开始选举根时,每个网桥都开始广播BPDU(Bridge Protocol Data Unit),上面有网桥自己的MAC地址和Priority。当网桥收到别的网桥的BPDU,其优先级高于自己的时,就不再发送自己的信息,而是向对面(其他端口)转发该信息。这样,在一定时间后,整个网络就知道谁是跟了。(图中就是B1)。
10. Designated Bridge的选举。
选出根后,根开始发新的BPDU,上面包含着每个端口的Cost。根的每个端口的Cost都是0,其他网桥的端口Cost都要高与0。每个网桥收到根发出的BPDU后,就知道根在自己的哪个方向了。比如,B3知道根在自己的右边,于是,面向根的端口叫Root Port,BPDU不会向Root Port转发的,只向其他方向转发。假如B3的Port1 (左边端口)的Cost是20,而B4的Port1 Cost是30,那B3向Segment2转发的BPDU的cost就是自己右边Root Port收到的Cost (0)加上自己左边端口的Cost(20),同时,B4向Segment2转发的Cost是0+30=30。不比不知道,一比吓一跳,B4的Por1收到B3的Cost信息后,就将Port1处在Block状态,不再转发数据包。同样,B6的Cost也比B5高,那么B5将成为Designated Bridge,而B6处于休息状态。B2就更别说了,Port1和Port2都是Root Port,所以它把两端口都Block了,并且也知道自己是备份根。好,一段时间后,网络上就选举出了连接各网段的Designated
Bridge,Spanning Tree生成了。
11. 故障监测与数的更新。
以B6为例,Port2虽然Block了,但一直监测网络状态。根定期发送BPDU,各Designated Bridge都向非Root Port连接的Segment转发,以表示自己的工作状态正常。假设B5发生故障,在规定时间内(好象是两秒),B6的Port2没有收到B5发出的BPDU,它就认为B5发生故障,并通过Root Port发送数据包(这是唯一从RootPort发送的网桥信息包。)各网桥收到信息包后,都会从RootPort转发(假如B6与Root间还存在其他网桥的话),直到发送到
Root。Root收到该信息后,立即发送BPDU,让所以网桥都停止工作,(因为此时网络拓扑出错),然后再发Cost,让网桥从新计算各端口的Cost,生成新树。BPDU传到Segment3,B5已坏,不能转发Cost,B6向Segment4转发Cost=30,没人有意见,于是,B6千年的
媳妇熬成了婆,她是终于翻身做了主人了呀,不容易。网络恢复正常。同样,如果B2到时间没有听见Root发话,就知道他老人家休息了,会发BPDU,一声号令,群雄揭竿而起,逐鹿中原,从新推举Root,重复第9步。
12. 网桥端口的5种状态:
1)        Disabled。被管理员禁用。
2)        Block。休息,不参与数据包转发。
3)        Listening。监听。
4)        Learning。学习ARP信息,准备向工作状态转变。
5)        Forwarding。正常工作,转发数据包。
13. 整个Spanning Tree的定型时间大越为12秒。

1.6        port mirroring
port mirroring可以把一个端口的流量(发送或接收的包)做成镜象,使该端口正常工作。同时,你应该用其它的仪器(如分析检测仪)去分析这些包,然后,你可把该仪器插入其它端口,让这个口与目的端口做成镜象。镜象口将复制所有在目的端口传输的包,让仪器去分析。这个使产生镜象端口的作用就称端口镜象(port mirroring)。
1.7        SNMP 
SNMP是简单网络管理协议Simple Network Management Protocol的技术规范。SNMP是目前最常用的环境管理协议。SNMP工作在用户数据报协议(UDP)上,UDP是TCP/IP协议组中的一部分。最新的版本也支持其它的环境。几乎所有的网络设备生产厂家都实现了对SNMP的支持。领导潮流的SNMP是一个从网络上的设备收集管理信息的公用通信协议。设备的管理者收集这些信息并记录在管理信息库(MIB)中。这些信息报告设备的特性、数据吞吐量、通信超载和错误等。MIB有公共的格式,所以来自多个厂商的SNMP管理工具可以收集MIB信息,在管理控制台上呈现给系统管理员。
通过将SNMP嵌入数据通信设备,如交换机或集线器中,就可以从一个中心站管理这些设备,并以图形方式查看信息。目前可获取的很多管理应用程序通常可在大多数当前使用的操作系统下运行,如Windows3.11、Windows95 、Windows NT和不同版本UNIX的等。
一个被管理的设备有一个管理代理,它负责向管理站请求信息和动作,代理还可以借助于陷阱为管理站提供站动提供的信息,因此,一些关键的网络设备(如集线器、路由器、交换机等)提供这一管理代理,又称SNMP代理,以便通过SNMP管理站进行管理。
1.8        RMON
远程监控RMON是对SNMP功能的扩充,对监测和管理交换或局域网特别有用。开发RMON的目的是为了提供信息流量的统计结果和对很多网络参数进行分析,以便于综合做出网络故障诊断、规划和性能调谐。
RMON可以提供SNMP管理站和监控代理之间的无缝隙多厂家互操作性,此外,它还可为一组MIB提供一个标准,去收集SNMP无法得到的、丰富的网络统计信息。RMON通过采用功能强大的"报警组(Alarm Group)"而实现先期的网络诊断,它允许为关键性的网络参数设置阈值,以便自动地将报警信号传送到中央管理控制台。
完全的RMON共有九组:1.统计Statistics;2.历史History;3.报警Alarm;4.主机统计数Hosts;5.主机统计最大值Host Top N;6.矩阵Matrix;7.过滤存储Filter;8.包捕获Packet Capture;9.事件Event。一般的交换机至少支持4组(1,2,3,9组)RMON。
RMON对于从远程位置管理交换特别关键,因为交换机的管理信息库(MIB)中的各种信息是以每个端口为基础,而不是以每个设备为基础,如果你使用通常的SNMP以端口为基础去监控一个交换,将会产生大量SNMP的通信量,由于RMON支持着眼于开关的内部,因而其监控工作快而容易。
1.9        VTP(VLAN Trunking Protocol)
VTP通过网络保持VLAN配置统一性。VTP在系统级管理增加,删除,调整的VLAN,自动地将信息向网络中其它的交换机广播。此外,VTP减小了那些可能导致安全问题的配置。
* 当使用多重名字VLAN能变成交叉--连接。
* 当它们是错误地映射在一个和其它局域网,VLAN能变成内部断开。
VTP模式
当交换机是在VTP Server或透明的模式,能在交换机配置VLAN。当交换机配置在VTP Server或透明的模式,使用CLI、控制台菜单、MIB(当使用SNMP简单网络管理协议管理工作站)修改VLAN配置。
一个配置为VTP Server模式的交换机向邻近的交换机广播VLAN配置,通过它的Trunk从邻近的交换机学习新的VLAN配置。在Server模式下可以通过MIB,CLI,或者控制台模式添加、删除和修改VLAN。
例如:增加了一个VLAN,VTP将广播这个新的VLAN,Server和Client机的Trunk网络端口准备接收信息。
在交换机自动转到VTP的Client模式后,它会传送广播信息并从广播中学习新的信息。但是,不能通过MIB、CLI、或者控制台来增加、删除、修改VLAN。VTP Client端不能保持VLAN信息在非易失存储器中。当启动时,它会通过Trunk网络端口接受广播信息,学习配置信息。
在VTP透明的模式,交换不做广播或从网络学习VLAN配置。当一个交换机是在VTP透明的模式,能通过控制台、CLI、MIB来修改、增加、删除VLAN。
为使每一个VLAN能够使用,必须使VTP知道。并且包含在Trunk port 的准许列表中,一个快速以太网ISL Trunk自动为VLAN传输数据,并且从一个交换机到另一个交换机。
需要注意的是如果交换在VTP Server模式接收广播包含128多个VLAN,交换自动地转换向VTP Client模式。
更改交换机从VTP Client模式向VTP透明的模式,交换机保持初始、唯一128VLAN并删除剩余的VLAN。
传送VTP信息
每个交换机用VTP广播Trunk端口的管理域,定义特定的VLAN边界,它的配置修订号,已知VLAN和特定参数。在一个VTP管理域登记后交换机才能工作。
通过Trunk,VTP Server向其它交换机传输信息和接收更新。VTP Server也在NVRAM中保存本VTP管理域信息中 VLAN的列表。 VTP能通过统一的名字和内部的列表动态显示出管理域中的VLAN。
VTP信息在全部Trunk连接上传输,包括ISL、IEEE802.10、LANE。VTP MIB为VTP提供SNMP工具,并允许浏览VTP参数配置。
VTP建立共用的配置值和分布下列的共用的配置信息:
* VLAN IDs(ISL)
* 仿效LAN的名字(ATM LANE)
* IEEE802.10 SAID值(FDDI)
* VLAN中最大的传输单元(MTU)大小
* 帧格式
1.10        Port Trunking
Port Trunking 即多干路冗余连接,可以理解为:将交换机上的多个端口在物理上连接起来,在逻辑上捆绑(bundle)在一起,形成一个拥有较大带宽的端口,组成一个干路。可以均衡负载,并提供冗余连接。
1.11        路由信息协议(RIP)
一、背景
路由信息协议(RIP)是以跳数作为metric的距离向量协议。RIP广泛用于全球因特网的路由,是一种内部网关协议(interior gateway protocol),即在自治系统内部执行路由功能。外部网关路由协议(exterior gateway protocol),如边缘网关协议(BGP),在不同的自治系统间进行路由。RIP的前身是Xerox协议GWINFO,后来的版本routed(发音为/rutdi/)封装在1982年伯克利标准发布Unix(即BSD中)。RIP本身发展成因特网路由协议,有些协议族使用了RIP的变种,例如:AppleTalk路由表维护协议(RTMP)和Banyan VINES路由表协议(RIP)就是基于IP版的RIP的。RIP最新的增强版是RIP2规范,它允许在RIP分组中包含更多的信息并提供了简单的认证机制。
IP RIP在两个文档中正式定义:RFC 1058和1723。RFC 1058(1988)描述了RIP的第一版实现,RFC 1723(1994)是它的更新,允许RIP分组携带更多的信息和安全特性。
本文简单介绍RIP的基本能力和特性,包括路由更新过程,RIP路由metric,路由稳定性和计时器。
二、路由更新
RIP以规则的时间间隔及在网络拓扑改变时发送路由更新信息。当路由器收到包含某表项的更新的路由更新信息时,就更新其路由表:该路径的metric值加上1,发送者记为下一跳。RIP路由器只维护到目的的最佳路径(具有最小metric值的路径)。更新了自己的路由表后,路由器立刻发送路由更新把变化通知给其它路由器,这种更新是与周期性发送的更新信息无关的。
三、RIP路由metric
RIP使用单一路由metric(跳数)来衡量源网络到目的网络的距离。从源到目的的路径中每一跳被赋以一个跳数值,此值通常为1。当路由器收到包含新的或改变的目的网络表项的路由更新信息,就把其metric值加1然后存入路由表,发送者的IP地址就作为下一跳地址。
RIP通过对从源到目的的最大跳数加以限制来防止路由环,最大值为15。如果路由器收到了含有新的或改变的表项的路由更新信息,且把metric值加1后成为无穷大(即16),就认为该目的网络不可到达。
四、RIP的稳定性
为了适应快速的网络拓扑变化,RIP规定了一些与其它路由协议相同的稳定特性。例如,RIP实现了split-horizon和hold-down机制来防止路由信息的错误传播。此外,RIP的跳数限制也防止了无限增长而产生路由环。
五、RIP计时器
RIP使用了一些计时器以控制其性能,包括路由更新计时器、路由超时和路由清空的计时器。路由更新计时器记录周期性更新的时间间隔,通常为30秒,每当该计时器重置时增加小的随机秒数以防止冲突。每个路由表项都有相关的路由超时计时器,当路由超时计时器过期时,该路径就标记为失效的,但仍保存在路由表中,直到路由清空计时器过期才被清掉。
六、RIP分组格式
下面描述IP RIP和IP RIP2的分组格式。
1、RIP分组格式

命令--表示该分组是请求还是响应。请求分组要求路由器发送其路由表的全部或部分。响应分组可以是主动提供的周期性路由更新或对请求的响应。大的路由表可以使用多个RIP分组来传递信息。
版本号--指明使用的RIP版本,此域可以通知不同版本的不兼容。
零--未使用。
地址族标志(AFI)--指明使用的地址族。RIP设计用于携带多种不同协议的路由信息。每个项都有地址族标志来表明使用的地址类型,IP的AFI是2。
地址--指明该项的IP地址。
metric--表示到目的的过程中经过了多少跳数(路由器数)。有效路径的值在1和15之间,16表示不可达路径。
注:在一个IP RIP分组中最多可有25个AFI、地址和metric域,即一个RIP分组中最多可含有25个地址项。
2、RIP2分组格式
RIP2规范(RFC1723)允许RIP分组包含更多的信息,并提供了简单的认证机制,如下图。

命令--表示该分组是请求还是响应。请求分组要求路由器发送其路由表的全部或部分。响应分组可以是主动提供的周期性路由更新或对请求的响应。大的路由表可以使用多个RIP分组来传递信息。
版本--指明使用的RIP版本,在实现RIP2或进行认证的RIP分组中,此值为2。
未使用--值为0。
地址族标志(AFI)--指明使用的地址族。RIP设计用于携带多种不同协议的路由信息。每个项都有地址族标志来表明使用的地址类型,IP的AFI是2。如果第一项的AFI为0xFFFF,该项剩下的部分就是认证信息。目前,唯一的认证类型就是简单的口令。
路由标记--提供区分内部路由(由RIP学得)和外部路由(由其它协议学得)的方法。
IP地址--指明该项的IP地址。
子网掩码--包含该项的子网掩码。如果此域为0,则该项不指定子网掩码。
下一跳--指明下一跳的IP地址。
metric--表示到目的的过程中经过了多少跳数(路由器数)。有效路径的值在1和15之间,16表示不可达路径。
注:在一个IP RIP分组中最多可有25个AFI、地址和metric域,即一个RIP分组中最多可含有25个地址项。如果AFI指明为认证信息,则只能有24个路由表项。
1.12        802.1p优先级标记,多队列
IEEE802.1p 标准是对网络的各种应用及信息流进行优先级分类的方法。它确保关键的商业应用和时间要求高的信息流优先进行传输,同时又照顾到低优先级的应用和信息流,使它们得到所要求的服务。这个标准对于金融业务、单据处理、网络管理、集成的声音和数据应用、视频会议和分布视像教学等应用是必不可少的标准。
1.13        全双工流控技术
在不同的节点相互之间以不同速度通信的所有通信技术中,流量控制就是一个问题。信息流控制是为了防止网络拥挤及死锁的出现而采取的一种措施。当发至某一接收节点的信息速出了该接收节点的处理或转换文件报文的能力时,就会出现拥挤现象。
试问如果一台高速服务器将数据发送给一个低速客户机,会发生什么事情呢?在经典的共享以太网中,有几种方法可以确保该客户机能跟上来自服务器的数据流量。首先,由于客户机一般都能接收10Mbps数据,通常其共享介质才是真正的瓶颈;其次,如果客户机的数据已超过其处理能力和要求服务器停止发送数据,它可以通过产生一次冲突或假装要发送数据而仅仅访问信道本身,这样就可自动地阻止服务器进一步发送数据。
利用这种方法,共享以太网就具有一种内部的流量控制方法。同样,如果有多个站试图通过一个共享局域网发送数据,该局域网就会非常繁忙,网络将会饱和,这里,以太网本身就会表现出所谓的拥塞控制。最后一种措施是如果在服务器和客户机之间丢失了数据,协议就会采取相应措施,以确保重发。
l        半双工流量控制
桥接式或交换式以太网利用一种内部的方法去处理速度不同的站之间的传输问题,它采用一种所谓的"背压(bockpressure)"概念。例如,如果一台高速100Mbps服务器通过交换机将数据发送给一个10Mbps的客户机,该交换机将尽可能多地缓冲其帧,一旦交换机的缓冲器装满,它就通知服务器停止发送。
有两种方法可以达到这一目的:交换机可以强行制造一次与服务器的冲突,使得服务器退避;或者,交换机通过插入一次"载波检测"使得服务器的端口保持繁忙,这样就能使服务器感觉到好象开关要发送数据一样。利用这两种方法,服务器都会在一段时间内停止发送,从而允许交换机去处理积聚在它的缓冲器中的数据。
Accton公司为解决网络的拥塞和死锁,在ES2007-TX,ES2008-TX/TF,ES3008-TX,ES3508,ES2024,ES3508A等交换器中采用了独特的背压流量控制技术防止网络的拥塞和数据包的丢失。这种类型的拥塞控制是具体针对半双工端口的。
l        全双工流量控制
在全双工环境中,服务器和交换机之间的连接是一个无碰撞的发送和接收通道,没有碰撞检测不允许交换机去产生一次冲突而使得服务器停止发送,服务器将一直发送到交换机的帧缓冲器溢出,因此,IEEE制定了一个组合的全双工流量控制标准802.3x。
IEEE802.3x标准定义了一种新方法,在全双工环境中去实现流量控制。交换机产生一个PAUSE帧,将它发送给正在发送的站,只要该帧从接收站发出,发送站就会暂停或中断其发送。该PAUSE帧利用一个众所周知的组播地址,它是不会被网桥和交换机转发的(与IEEE802.1d桥接标准一致),这就意味着PAUSE帧不会产生附加信息量。这是一种非常灵巧而功能很强的技术,具有一些其它的未来好处,例如,利用新的MAC控制层可以发送优先帧。前面讨论的自动协商模式也作了修改,增加了1位,表示该站具有流量控制功能。让我们再次看一看前面的例子,以了解802.3x标准作了那些修改:
1.        加电时,服务器NIC和开关检查它们是否都具有全双工能力,并将发送方式调整为全双工。
2.        自动协商脉冲也会告诉这两个设备,它们都具有全双工能力。
3.        服务器利用它的发送通道(也是交换机的接收通道)开始发送。
4.        交换机接收帧,并转发到10Mbps客户机,但速度慢得多。
5.        当交换机的内部缓冲器快装满时,它就通过其发送通道(服务器的接收通道)开始将PAUSE帧发送到服务器NCI,从而停止服务器的发送。
6.        交换机将其缓冲器中的数据传送到较慢的客户机,直到其内部缓冲器可以再次接收数据为止。
7.        一旦缓冲器腾空,交换机就停止发送PAUSE帧,服务器就重新开始发送。
l        Accton的全双工流控技术
Accton在ES3524/ES3024,及ES2026/2526中采用了内部流控和外部流控分别处理的流控方法,实现了全双工流量控制。
外部流控:当输入队列超过交换机端口控制的阈值时,由于每端口都是10/100Mbps自适应。当对口为半双工时,采取基于流控的载波时序技术,即等待48位时间片,然后发送一个14400位的时序报文(101010…),……反复这样等待和发送,直至输入队列低于阈值时才停止发送。这样发送方在收到这样的载波时序信号时停止发送,直至解除警戒。当对口为全双工时,发送一个PAUSE帧(XON/XOFF)来抑制流量超载,满足IEEE 802.3x流量控制标准。
内部流控:当交换机的输出队列超过端口控制器的阈值时,无论在半/全双工模式下,发送一个STALL命令给交换机以抑制发送,当流量队列计数低于阈值时端口控制器发送一个UNST命令,交换机在收到该命令后,继续发送。
所谓信息流控制(简称流控)就是调整发送信息的速率,使接收节点能够及时处理它们的一个过程。从网络用户看来,信息流控制是一种阻止不能在预定时间内提供给对方用户的信息进入网络的方法。
流控的另一目的是使业务量均匀地分配给各网络节点。因此,即使网络在正常工作情况下,流控也能减小信息的传递时延,并能防止网络的任何部分(相对于其余部分来说)处于过负荷状态。
由于全双工流控是一种新技术,目前市面上很少有符合802.3x的设备。Accton 的交换机ES3024,ES3524,ES2026,ES2526均在主板上集成了全双工流控的芯片,使符合IEEE802.3x,使得Accton的交换机在高速、大数据量的传输中,使丢包率降至最小。
1.14        区分服务
在区分服务中IETF重新定义了IPv4的TOS域,改称它为DS(Differentiated Service)域。TOS域的3个优先级比特可定义8个优先级状态。IETF区分服务工作组提出将比特数扩展到6个,有64个可用的状态。这6个比特称为区分服务码点(DSCP ,Differentiated Service Code Points)。如下图所示。DSCP的比特位图用来对应路由器的每一个转发处理(即每一个中继点行为PHB ,Per-Hop Behavior)。在网络的核心节点处,路由器根据分组上的DS码点用相应的PHB对其进行转发。

图:        带IEEE 802.1p/Q标记的MAC帧和IP分组头中的COS域与DS域
区分服务是由综合服务(Int-serv )发展而来的,它采用了IETF的基于RSVP的服务分类标准,抛弃了分组流沿路节点上的资源预留。区分服务将会有效地取代跨越大范围的RSVP的使用。区分服务区域的主要成员有:核心路由器、边缘路由器、资源控制器(BB,Bandwidth Broker)。在区分服务中,网络的边缘设备对每个分组进行分类、标记DS域,用DS域来携带IP分组对服务的需求信息。在网络的核心节点上,路由器根据分组头上的DS码点(Code Point)选择码点所对应的转发处理。资源控制器BB配置了管理规则,为客户分配资源,它可以通过服务级别协定SLA (Service Level Agreement)与客户进行相互协调以分享规定的带宽。
        区分服务将6比特的码点空间分成3个部分:“xxxxx0”用于标准行为;“xxxx11”用于本地实验;“xxxx01”也可用作本地实验,但当将来第一部分的码点耗尽时,也可用于标准行为(这里的x为“1”或“0”)。为了与当前流行的COS服务兼容,区分服务定义了码点“xxx000” 为等级选择器码点,用这种码点标记的分组可接受由前3个比特决定的优先级服务。因此,也可以说COS是区分服务定义的服务行为集中的一个子集。
总之,DS域将决定路由器对分组的处理。通过在网络的边界对分组设置DS域以及接纳控制功能可以实现一系列的服务:有保证的服务、高价服务(premium service)和尽力服务。有保证的服务是为那些即使在网络拥塞时也能够享受可靠服务的客户提供的;高价服务的延时和延时抖动都很小,主要是为那些峰值速率恒定的实时数据流提供的,它适合于IP电话、视频会议或虚拟专用网中的虚拟租用线。区分服务是可以逐步推广、渐进采用的。不支持区分服务的路由器可简单地忽略分组的DS字段,并以尽力服务或只考虑优先级的方式处理分组。
2        芯片介绍
下面介绍两款以太网交换芯片。通过对这两个芯片的研究,我们可以更具体的了解到以太网交换的实现机理,也可以学习到一些比较有用的硬件实现方法。其中,L64324为采用的是存储转发的交换方式,BCM5605/6采用的是线速转发(不缓存)的交换方式。
2.1        L64324
L64324为LSI公司的单片24口10/100M以太网加2口1000M以太网交换器。L64324含有1个ARM7C处理器,每个口有前端MAC,流量控制符合IEEE802.3X,优先级排队符合IEEE802.1P,VLAN符合IEEE802.1Q。L64324的MAC支持4K个地址,ARM处理器有4K的指令数据CACHE,96位的SDRAM控制器可工作于125MHZ,提供SMII/GMII/MII/TBI等接口,可通过GMII接口级连扩展。
2.1.1        体系结构
L64324体系结构框图如下图所示:

2.1.2        内嵌的ARM7处理模块(APM)
ARM7处理器为3层流水线处理,32位RISC体系结构,系统时钟为62.5MHz,工作频率31.25MHz,能力大概为50MIPS。L64324为ARM7处理器集成了4K CASH,指令、数据共享。由于ARM7是一种标准的工业级CPU,配套的可先用的工具较多,大多数主流的RTOS也对其有支持。支持JTAG在线调试。ARM7的Advanced System Bus(ASB)可直接接外部SDRAM及FLASH,ASB 还拥有Address Table接口,可以访问L64324内部所集成的计数器、4K统一的CASH,MAC控制/状态管理。ARM7的Advanced Peripheral Bus(APB)连接2个1655 UART、时钟、中断控制器、GPIO端口及看门狗时钟。ARM7模块功能框图如下:

CPU存储空间的布局主要考虑到进行交换处理的方便性,该地址空间可以寻址到字节,其编址方式使得每联系的96字节进行一次BANK切换。数据总线宽度为12字节96位。指令地址希必须是32位对齐的数据访问可以是字节、16-bit、32-bit对齐的。
2.1.3        交换模块(Switch Module ---SWIM)
交换模块是L64324的核心部分,包括输入缓冲逻辑、地址解析逻辑、干线逻辑、传输描述子生成器、VLAN、端口源锁定、端口镜象及RMON逻辑。交换模块框图如下:

下面介绍一下L64324的存储缓冲器结构、存储器接口、地址解析、基于标签VLAN的段口源锁定、远程监控(RMON)计数器、IP多址阻播以及干线端口功能。
2.1.3.1        存储缓冲器体系结构
L64324的存储缓冲器是各端口共享的,缓冲存储器被分为大小为1536(1.5K)字节的4K块,每一块可以存储一个以太网协议数据包。接收到的数据包在输出端口排队,每一个输出端口拥有一个发送描述子环,每一个排队的数据包至少有一个输出端口的一个描述子与其对应。每一个端口的描述子个数由CPU控制。描述子指示数据包在缓冲存储器中的位置,描述子环指示数据包的发送顺序。
点对点发送及多点发送的数据包的处理过程基本上是一样的,首先,需要检查是否还有可用的缓冲存储空间以及是否需要进行流量控制。唯一不同的地方是多点传送的数据包可能需要在多个或所有的出口排队。
2.1.3.2        存储器接口(Memory Interface)
L64324的存储器接口用于数据包缓存及程序代码、数据的存储。可以外接64Mbits或128Mbits的100或125MHz的SDRAM。推荐使用3片125MHz、32位宽的64Mbits的SDRAM,构成96-bit的数据访问总线,总的存储带宽位125MHz*96bits=12Gbits/s。
为了最大化系统带宽,存储器对SDRAM的寻址经过特殊安排以使得数据包可以用到所有的SDRAM BANK。由一个4K*12的存储器索引指针用于对存储器的寻址,数据包的缓存空间总共为12K行,每行512字节,共512*12K=6M字节。数据包存储空间可寻址到字节。剩余的18M字节存储空间为ARM7处理器的代码及数据区。
L64324内部的智能仲裁机制使得对各端口及CPU的存储分配能够得到最优化的系统带宽。(具体如何实现?)
L64324的FLASH接口是SDRAM接口的一个子集。SDRAM接口的底30位数据线与FLASH接口时分复用。SDRAM及FLASH的访问互斥进行。可用的FLASH为3.3V,8-bit位宽的1,2,4,8Mbyte速度为70,90或120ns的FLASH。
2.1.3.3        地址解析
L64324的地址解析是自动进行的,不需要CPU专门的介入。CPU也可以读取、修改地址表ARL中的所有条目,另外CPU需要负责维护ARL中多点传送的条目。
ARL可以记录4K个地址条目。
当L64324收到一个新的数据包时,查看其源地址,如果为一个新的地址,并且还有空闲的条目,就在ARL中加入一个新的条目。对于源锁定的端口,不生成新的地址条目。
对于点对点传送(Unicast)的条目,L64324自动进行地址老化,老化时间间隔可编程,范围在5秒到17分钟之间。地址表中的多点传送条目是由CPU进行添加、删除的。因此不进行老化操作。在对地址表的所有访问中,老化是最低优先级的操作。每一个端口都可以独立的设置是否进行地址老化操作。
2.1.3.4        端口源锁定
ARL中的每一个单点传送的地址条目都有一个对应的源端口(也将时说具有该地址的主机在那个端口上),每一个端口都有一个源锁定寄存器(Source Port Locking register),如果该位置“1”,那么当在该端口接收到一个新的数据包时,如果该包的地址段在ARL中的条目中的端口域与该端口不匹配,那么该包将被过滤,新的地址条目也不会生成,该包可以送往CPU处理,也可以被丢弃。端口源锁定可以用于拒绝没有被授权的站点移动及没被授权的站点。
2.1.3.5        VLAN
L64324可以支持基于标签技术的VLAN,可以用于不同VLAN之间的信息隔离,起到增加带宽及保密的作用。L64324可以支持32个VLAN。对每个端口L64324内部集成专用的逻辑进行输入包中VLAN标签的提取,L64324内部的交换逻辑利用该标签进行基于VLAN的交换。L64324中有一个出口滤波器列,包含有对32个VLAN的端口屏蔽。L64324可以增加、删除、修改或传递VLAN标签。另外,L64324也支持无标签帧,802.1p优先级标签帧,CRC的重新生成,输入端口处的PVID指派。
2.1.3.6        RMON及Extended RMON
L64324的每一个MAC均有一组纪录发送接收数据包状态的存储变量,并有相应的指针指向这些变量。MAC每接收、发送一个数据包,计数器逻辑根据指针读取对应的计数器变量,对其进行更新操作。大多数的计数器都是32位的,也有一些计数器如字节计数器、吉比特端口计数器的位宽要宽一些。同一端口的计数器在内存中连续存放,以方便软件访问。L64324也支持Extended RMON,可以用以网络流量的估算,每一个端口随机的或者定时的采样一些数据包送到CPU进行处理。
2.1.3.7        端口镜象
端口镜像为网络传输提供了备份通道。此外,还可以用于进行数据流量监测。可以这样理解:在端口A和端口B之间建立镜像关系,这样,通过端口A传输的数据将同时通过端口B传输,即使端口A处因传输线路等问题造成数据错误,还有端口B处的数据是可用的。利用端口镜象可以根据以下策略将特定的码流送到一个选定的端口:
A.        一个限定端口的所有流量;
B.        所有带有指定目的地址货源地址的流量;
C.        所有指定VLAN的流量。
交换引擎及发送描述子生成器都要用到端口镜象屏蔽寄存器,交换引擎检查被处理数据包对应端口的端口镜象屏蔽位,如果该位被置“1”,那么,该数据包在被送到目的地之所在端口的同时也被送到指定的镜象端口。
2.1.3.8        IGMPv2
IP多址组播用于同时传发送组播信息到多个客户端以避免进行多个点对点传送,从而减少网络上数据流量。Internet组管理协议(IGMP)的目的是进一步减少IP多值组播所带来的网络流量,其实现方式通过只向有主机申请改组播信息的网段发送对应组播信息的方式来实现的。IGMP可以以VLAN位单位进行允许及禁止。如果IGMP被允许,每一个端口都可以参与IGMP,转发或禁止所有IP组播信息。IP组播数据包的转发不是自动进行的,他们被送到CPU,CPU在确定转发到哪些端口。当IGMP被禁止时,IP多址组播数据包及IGMP数据包的处理以其它的多点传送数据包是一样的,也要由ARL进行滤波。
2.1.3.9        Port Trunking
L64324支持干路冗余连接,可以将4个端口组合起来在两个节点之间形成一个高带宽逻辑连接。Port Trunking技术可以在交换机之间或者交换机与服务器连接多条线路,实现负载均衡及线路冗余。当两个交换机之间的一条线路出现故障,传输的数据可以快速自动切换到另外一条线路上进行传输,不影响网络系统的正常工作。
2.1.4        Port Interface Module (PIM)
端口接口模块对L64324的各端口接口进行控制,端口接口模块的主要功能为数据包的接收、发送及适当的流量控制。PIM框图如下:

2.1.4.1        接收
PIM从SMII接口接收接收并处理快速以太网数据帧,如果该帧没有错误,帧头被提取并送到SWIM进行转发该帧所需要的滤波处理。同时,L64324中的DMA逻辑将该数据包存储到帧缓存中。每个数据包都是先存储再发送的(存储转发)。SWIM通过解析该帧的帧头决定该帧对该帧进行单点传送、多点传送、广播或丢弃的操作。APM维护并分析各端口的状态变量。根据系统设置,吉比特端口的数据帧可通过GMII或TBI接口进行接收的,其处理过程与快速以太网端口是一样的。
2.1.4.2        发送
SWIM首先决定数据帧有哪一个或几个端口进行发送,然后由SWIM的发送队列管理模块(Transmit Queue Manager (TQM))检查是否还有发送该帧所需资源。如果该端口的发送缓冲资源还被有被耗尽,则为其分配一个描述子并将该帧加入到该端口的发送队列中。
每一个端口都有专用的发送队列,并支持高、底两级优先级。每一个优先级对应一个发送队列环,这两个队列环互不相干、独立工作,每一个队列环的长度可以单独定义。如果一个队列的描述子被用光,那么试图加入到该队列的帧将被丢弃,为避免这种情况的数据丢失,可以对数据传输进行流量控制。在缺省情况下,只有当高优先级的队列中所有数据包全部被发送以后才能够处理地优先级队列中的数据包。不过这种策略在某些情况下并不理想,L64324的每一个端口都可以设置在每发送(1-64)个高优先级数据包后插入一个底优先级包的发送。L64324可以设置最长4秒的数据包老化时间,精度为1毫秒。
2.1.4.3        802.3x流量控制
当可用的帧缓存资源下降到一个可设定的门限时,L64324可进行流量控制。
2.2        BCM5605/BCM5606
BCM5605为BROADCOM的以太网交换芯片,支持第3 层交换,需要外接HOST CPU,DEMO板使用MOTOROLA POWERPC 8240,通过PCI总线连接。BCM6506与BCM5605类似,但不支持第3层交换。
2.2.1        地址管理
BCM5605内部建立了管理MAC地址所需要的表格,地址表(ARL)可以记录8191个MAC地址。MAC地址的学习是自动进行的,当BCM5605收到数据包时,查看其源地址(及VLAN ID)是否在ARL中,如果不在ARL中,则将该地址加入MAC地址表,同时纪录对应的端口。CPU也可以更新、添加表项。通常情况下,地址学习是根据MAC地址进行的。在一定时间内不使用的表项被自动删除。当一个站点从一个端口移动到另外一个端口时,BCM5605先删除旧的ARL条目,再加入新的ARL条目。
在BCM5605/6中,ARL表有三个同步的备份,供各端口同步使用。
目的站点的MAC地址及VLAN ID(VLAN ID可以是在输入帧中、也可以是在芯片内部的VLAN表中)被用于搜索该数据包的输出端口,如果找到匹配的条目,则该数据包从对应端口送出,如果没有找到匹配的端口,则产生一次“目的查找失败”的错误计数,然后将该包从所有属于该VLAN的端口送出。
2.2.2        服务等级
IEEE 802.1p规定了0~7共8级优先级,优先级7为最高优先级,优先级信息由VLAN标签头的3比特的优先级域承载。
基于每个输出端口,BCM5605支持4个等级的服务。对于带VLAN ID的包,可以将8个优先级映射到4个等级之一,也可以根据其它可定义的滤波机制将输入包映射到一个服务等级上。对于一个没有VLAN标签的包,可以根据目的地址在ARL中的位置或某种滤波机制的结果映射到一个服务等级。
数据包被映射到4个服务等级的队列后,输出策略有以下几种:
严格基于优先级调度:只有所有高优先级包移出以后,优先级服务队列中的数据包才背移出。这种调度策略可能导致底优先级数据包长时间的资源缺乏。
基于权重的轮循策略:为每个服务等级分配一个最小的带宽,带宽的分配可以基于允许的连续发送的包的个数。
基于权重及最大延迟的轮循策略:对于实时系统,每一个服务等级中的包的最大延迟也时刻已定义的。
2.2.3        线路头阻塞(Head of line blocking)
当多个端口或多个流向一个端口发送数据包时有可能会产生阻塞,这会引起输入端口到其它端口数据包的丢失,引起“线路头阻塞”。
BCM5605提供两种策略用于HOL阻塞的控制:Packet-Based HOLB,Cell-Based HOLB。分别限制每个端口数据包所用memory大小或者每个端口输出队列的包的最大个数。每个端口输出队列包的最大个数为1024,由该端口支持的各服务等级均分。
2.2.4        数据包的老化
BCM5605支持数据包的老化机制,丢弃在数据包缓冲区停留时间过长的数据包。数据爆驻留时间上限可编程,最大约1秒。
输入数据包被输入端口打上时间标签,当输出端口发送该数据包时,先检查该包年龄,如果超过系统设定年龄上限,该包被丢弃,并将对应的系统管理计数器加一。
2.2.5        背压流量控制
BCM5605提供处理“背压”的机制,以实现对数据包传输灵活的流量控制。系统根据一个端口输入包所占的存储空间来检测“背压”。存储空间的阀值可编程,当阀值达到时,进行流量控制:
802.3x流量控制:如果该端口工作在全双工模式下,使用802.3x流量控制,有交换机发送由802.3x定义的PAUSE帧,阻止源端继续在一个指定的时间段内发送数据。
发送干扰信号:如果该端口工作在全双工模式下,交换机可以在该端口产生一次冲突,从而达到使源端暂停发送的目的。
在实施流量控制以后,如果仍然接收到该端口的数据,交换机会丢弃这些数据包,当数据包数量降到阀值一下,输入包又重新被处理。对全双工端口,交换机会再发送一个PAUSE帧,将对应的要求暂停发送的时间设置为0。对全双工端口,停止发送冲突信号。
2.2.6        包流量控制
连续的、高速率的数据流量会在网络上泛滥成灾,比如说,当一个网络接口卡出现问题时,它可能会不停的发送点对点、广播或者多址阻播的数据包。
BCM5605提供一些机制进行包流量控制,用以防止数据包泛滥到其它的端口,BCM5605可以监视3种包的流量,阀值可以对每个端口分别编程。
3种包为:1:目的地址查询失败(Destination Lookup Failure (DLF)),2:Broadcast Packets,3:Multicast Packets。每个端口,这3种数据包分别拥有一个计数器,当在一个指定的时间间隔内,如果某一个计数器的计数超过阀值,这后续的对应类型的数据包将被丢弃。
2.2.7        端口镜象(Port Mirroring)
port mirroring可以把一个端口(mirrored port)的流量(发送或接收的包)做成镜象,使该端口正常工作。同时,你可以用其它的仪器(如分析检测仪)去分析这些包,然后,你可把该仪器插入其它端口(mirrored to port),让这个口与目的端口做成镜象。镜象口将复制所有在目的端口传输的包,让仪器去分析。这个使产生镜象端口的作用就称端口镜象(port mirroring)。端口镜象的类型可编程,由于下几种:
只镜象输入数据包;
只镜象输出数据包;
只镜象输出一个特定L3地址(如IP地址)的数据包;
只镜象通过一个可定义的L2~L7滤波器的数据包。
2.2.8        IEEE802.1p支持
BCM5605支持IEEE802.1p规范中的流量级别和动态多路广播过滤。
2.2.9        IEEE802.1D——生成树的支持
BCM5605提供一些完全兼容IEEE802.1D规范的特性,这些特性可以用以生成树的支持。特性如下:
生成树状态位:在基于端口的VLAN中,CPU可以设定一个端口为一个特定的生成树状态,具体的设定操作由该端口所收到的特定的数据包触发。生成树状态有:
A.        Disabled。被管理员禁用;
B.        Block。休息,不参与数据包转发;
C.        Listening。监听;
D.        Learning。学习ARP信息,准备向工作状态转变;
E.        Forwarding。正常工作,转发数据包。
如果一个实体标记为静态的任命桥(Designated Bridge),如果该实体在规定的时间内不发送BPDU(Bridge Protocol Data Unit),该端口也不会去争夺任命桥(Designated Bridge)的权利。
对ARL中的地址条目进行命中监视,如果一个条目在生成树生存期内不被命中,该地址条目被删除。
所有非保留地址均可自动学习。
从0X0180C2000000到0X180C2000010及从0X180C2000020到0X180C200002F的保留地址段的数据包被送到CPU进行处理
2.2.10        IEEE802.1Q VLAN支持
BCM505提供以下一些特性以支持符合IEEE802.1Q的VLAN:
基于端口的VLAN表:用于识别一个没有标签头部或者带有优先级标签头部(VLAN ID = 0)的帧属于哪一个VLAN,在基于端口的VLAN中同一个端口的所有成员都是同一个VLAN的成员。
基于802.1Q的VLAN表:从标签头部提取VLAN ID,以确定VLAN成员。
丢弃无标签头部及带优先级标签头部的数据帧(可选)。
利用VLAN ID、源地址、目的地址进行ARL的搜索。
识别GVRP地址帧(0X01-80-C2-00-00-21),并将对应帧送CPU处理。
对每个端口,在输出数据帧时,可选择的去除标签头部。
2.2.11        IP Multicasting
BCM5605支持一下工业标准的IP Multicasting协议:
Distance Vector Multicast Routing Protocal (DVMRP)
Protocol-independent Multicast---Dense Mode (PIM—DM)
Protocol-independent Multicast---Sparse Mode (PIM—SM)
Multicast Open Shortest Path First (MOSPF)
对上述协议的支持主要以下列硬件相关:
A.        IP multicast 表;
B.        专用于处理IP multicast 数据包的输入输出端口逻辑。
2.2.12        干路冗余连接端口邦定(Trunking or Port Bunding)
可以将最多8个端口邦定为一个逻辑端口,一片BCM5605中可同时建立6组邦定,端口邦定可用以在交换机之间提供高的通讯带宽,邦定的各端口均衡负载并定义为全双工模式。通过邦定端口可以提高吞吐率、增加系统带宽、作为干线端口的冗余、均衡干线端口的负载。在数据包分发到邦定的各端口时,其分发策略可以根据MAC地址或者IP地址进行编程。
2.2.13        快速的滤波处理器
BCM5605支持很大范围内的滤波策略,允许交换应用程序根据数据保中的特定的协议部分进行滤波。可以根据从第2层到第7层的协议部分构筑滤波器,可以为每个端口构筑不同的滤波器。
滤波器为两层结构。滤波器掩码部分:用于定义进行滤波的数据区域。规则表部分:定义滤波项目。可以定义16个滤波器,每一个滤波器包括一个64字节的滤波掩码用于从数据包首部80字节范围内的偏移量开始的任意协议段的滤波匹配。对10/100-Mbps端口规则表有256个条目,对10/100/1000-Mbps端口规则表有128个条目。
根据一个数据包的分类结果及滤波是否匹配或部分匹配,可以对该包采取如下的一系列操作,或者下列操作的组合。
A.        插入802.1p标签首部;
B.        映射到4个服务等级之一;
C.        修改标签首部中的IP TOS (IP Type Of Service)部分;
D.        为CPU生成一个拷贝;
E.        丢弃该数据包;
F.        将该包从一个端口送出。
G.        发送该包的一个拷贝到镜象端口(mirrored to port)。
BCM5605可以跟踪1024个数据流并纪录其档案,通过内部计数器可以监视及调整这些数据流的流量。使用“漏桶(leaky bucket)算法” ,BCM5605可以根据对应数据流的滤波结果及档案情况做出相应处理。漏桶算法在每固定的间隔时间增加数据流的“信用值(credits)”,而对应数据流每收到一个字节都将消耗一定数量的“信用值”,在一个流的信用值被用光前,该流所接收到的数据包被认为是预约带宽以内的流量(in-profile),否则接收到的数据包被认为是超出预约带宽的流量(out-of-profile)。当发生拥塞时可以选择相应的操作,如丢弃out-of profile的数据包等。BCM5605对数据流档案的处理由硬件完成,不影响具体码流的处理速度。
2.2.14        区分服务
BCM5605支持“区分服务(DiffServ)”,IETF(Internet工程任务阻)希望能够利用IP头部的Type of Service (TOS)字段在IP下提供可升级的服务质量(QoS)。
根据IETF定义的DiffServ,运用一下技术,可以构筑不同的网络服务:
在网络边缘设置IP头部的相应位;
根据IP头部相应位的值决定对应包如何传输;
根据对每一种服务所设定的策略,在网络边缘对不同标记的数据包作相应处理。
当支持区分服务类型时,快速滤波处理器(FFP)可以根据滤波匹配情况或者根据输入包的DSCP在IP头部定义一个新的区分服务码点(DSCP ,Differentiated Service Code Points)。利用这个功能,BCM5605可以将多个类的服务综合为一个类,也可以将一个类进一步细分为多个类。
DiffServ表对进入四个服务等级队列的数据包进行计数,交通调度管理器(TSM)根据前文所述的调度策略对交通进行调度。
2.2.15        第3层的IP交换
第3层交换就象超高速路由器一样,利用硬件处理第3层的数据传递。传统的交换是在第2层进行操作的。当数据包需要从一个VLAN传递到另一个VLAN时,带第3层数据转发功能的交换机更象一个路由器。利用第3层交换的方便指出在于能够在一个交换机内部进行线性的路由,而不需要在外面在增加一个路由器。
当VLAN的不同子网连接到同一个交换机上时,BCM5605所提供的第三层交换功能时得他们之间的数据交换变得非常便利。通过CPU可以预先设定(动态设定)一个缺省的路由器用于转发所有的数据包。如果转发功能没有设定,所有需要转发到源段子网的数据包的转发工作均需要由CPU完成。
利用BCM5605进行第3层IP交换需要一定的前提条件,在第2层交换中,所有交换工作完全由硬件完成,CPU具本上没有负荷。在第3层交换中,CPU要处理一些列重要工作,完成下述功能:
A.        运行RIP,RIP2,OSPF,NLSP以及其它路由协议,生成路由表;
B.        运行ARP协议,解析IP地址,生成及维护ARP表;
C.        设置L3表,L3接口表,确省路由表,以及ARL表中各条目的L3交换标志,这些条目用于第3层交换。
2.2.16        堆叠功能(Stacking)
通过干线连接,BCM5605最多可实现30个模块的堆叠。每一个模块以一片BCM5605为核心,有自己的数据包缓冲存储器,也可以有自己专用的CPU,构成一个完整的交换模块。每个模块独立的进行地址学习及老化。吉比特端口用作干线连接,也可以用作常规的吉比特端口。通过干线连接,可以将多个BCM5605连接在一起,就像一个芯片一样。
下面是推荐的两种堆叠方式。
   

3        小结


以太网交换所涉及到的知识面较广,内容较多。理论上,交换就是选路及连接,不同的交换理论实际上就是在选路及连接上采用了不同的策略。相信随着Internet网络技术的飞速发展,必定会不断涌现出各种新的交换技术与新的交换概念。在硬件交换芯片方面,也不停的有新的方案推出。INTEL、MOTOROLA等公司所推出的网络处理器具有良好的可编程性,而且对网络处理有大量的硬件支持,也可以用以构筑以太网交换系统,而且可以得到更高的灵活性,可维护性、可升级性。以上内容只是关于以太网交换的一些比较表层的东西。更深入、更详细、更具体的内容需要进一步的研究。

你可能感兴趣的:(交换机)