1、网桥的工作原理 一、什么是网桥? 网桥工作在数据链路层,将两个 LAN 连起来,根据 MAC 地址来转发帧,可以看作一个 “低层的路由器” (路由器工作在网络层,根据网络地址如 IP 地址进行转发) 。 远程网桥通过一个通常较慢的链路(如电话线)连接两个远程 LAN,对本地网桥而言,性 能比较重要,而对远程网桥而言,在长距离上可正常运行是更重要的。 网桥与路由器的比较 网桥并不了解其转发帧中高层协议的信息,这使它可以同时以同种方式处理 IP、IPX 等协 议,它还提供了将无路由协议的网络(如 NetBEUI)分段的功能。 由于路由器处理网络层的数据,因此它们更容易互连不同的数据链路层,如令牌环
2、网段和 以太网段。网桥通常比路由器难控制。象 IP 等协议有复杂的路由协议,使网管易于管理路 由;IP 等协议还提供了较多的网络如何分段的信息(即使其地址也提供了此类信息)。而 网桥则只用 MAC 地址和物理拓扑进行工作。因此网桥一般适于小型较简单的网络。 二、使用原因 许多单位都有多个局域网,并且希望能够将它们连接起来。之所以一个单位有多个局域网, 有以下 6 个原因: 首先,许多大学的系或公司的部门都有各自的局域网,主要用于连接他们自己的个人计算 机、工作站以及服务器。由于各系(或部门)的工作性质不同,因此选用了不同的局域网, 这些系(或部门)之间早晚需相互交往,因而需要网桥。 其次,一个
3、单位在地理位置上较分散,并且相距较远,与其安装一个遍布所有地点的同轴 电缆网,不如在各个地点建立一个局域网,并用网桥连接起来,这样费用可能会低一些。 第 3,可能有必要将一个逻辑上单一的 LAN 分成多个局域网,以调节载荷。例如采用由网 桥连接的多个局域网,每个局域网有一组工作站,并且有自己的文件服务器,因此大部分 通信限于单个局域网内,减轻了主干网的负担。 第 4,在有些情况下,从载荷上看单个局域网是毫无问题的,但是相距最远的机器之间的 物理距离太远(比如超过 802.3 所规定的 2.5km)。即使电缆铺设不成问题,但由于来回 时延过长,网络仍将不能正常工作。唯一的办法是将局域网分段,在各
4、段之间放置网桥。 通过使用网桥,可以增加工作的总物理距离。 第 5,可靠性问题。在一个单独的局域网中,一个有缺陷的节点不断地输出无用的信息流 会严重地破坏局域网的运行。网桥可以设置在局域网中的关键部位,就像建筑物内的防火 门一样,防止因单个节点失常而破坏整个系统。 第 6,网桥有助于安全保密。大多数 LAN 接口都有一种混杂工作方式(promiscuous mode), 在这种方式下,计算机接收所有的帧,包括那些并不是编址发送给它的帧。如果网中多处 设置网桥并谨慎地拦截无须转发的重要信息,那么就可以把网络分隔以防止信息被窃。 三、兼容性问题 有人可能会天真地认为从一个 802 局域网到另一个
5、802 局域网的网桥非常简单,但实际上 并非如此。在 802.x 到 802.y 的九种组合中,每一种都有它自己的特殊问题要解决。在讨 论这些特殊问题之前,先来看一看这些网桥共同面临的一般性问题。 首先,各种局域网采用了不同的帧格式。这种不兼容性并不是由技术上的原因造成的,而 仅仅是由于支持三种标准的公司(Xerox, GM 和 IBM),没有一家愿意改变自己所支持的标准。 其结果是:在不同的局域网间复制帧要重排格式,这需要占用 CPU 时间,重新计算校验和, 而且还有可能产生因网桥存储错误而造成的无法检测的错误。 第二个问题是互联的局域网并非必须按相同的数据传输速率运行。当快速的局域网向慢速
6、 的局域网发送一长串连续帧时,网桥处理帧的速度要比帧进入的速度慢。网桥必须用缓冲 区存储来不及处理的帧,同时还得提防耗尽存储器。即使是 10Mb/s 的 802.4 到 10Mb/s 的 802.3 的网桥,在某种程度上也存在这样的问题。因为 802.3 的部分带宽耗费于冲突。802.3 实际上并不是真的 10Mb/s,而 802.4(几乎)确实为 10Mb/s。 与网桥瓶颈问题相关的一个细微而重要的问题是其上各层的计时器值。假如 802.4 局域网 上的网络层想发送一段很长的报文(帧序列)。在发出最后一帧之后,它开启一个计时器, 等待确认。如果此报文必须通过网桥转到慢速的 802.5 网络,
7、那么在最后一帧被转发到低 速局域网之前,计时器就有可能时间到。网络层可能会以为帧丢失而重新发送整个报文。 几次传送失败后,网络层就会放弃传输并告诉传输层目的站点已经关机。 第三,在所有的问题中,可能最为严重的问题是三种 802 LAN 有不同的最大帧长度。对于 802.3,最大帧长度取决于配置参数,但对标准的 10M/bs 系统最大有效载荷为 1500 字节。 802.4 的最大帧长度固定为 8191 字节。802.5 没有上限,只要站点的传输时间不超过令牌 持有时间。如果令牌时间缺省为 10ms,则最大帧长度为 5000 字节。一个显而易见的问题 出现了:当必须把一个长帧转发给不能接收长帧的
8、局域网时,将会怎么样?在本层中不考 虑把帧分成小段。所有的协议都假定帧要么到达要么没有到达,没有条款规定把更小的单 位重组成帧。这并不是说不能设计这样的协议,可以设计并已有这种协议,只是 802 不提 供这种功能。这个问题基本上无法解决,必须丢弃因太长而无法转发的帧。其透明程度也 就这样了。 由于各种 802 LAN 的特殊性,如:802.4 帧带有优先权位、802.5 帧字节中有 A 和 C 位等, 九种网桥都有其特殊的问题,见下表: 目的 LAN 802.3(CSMA/CD) 802.4(令牌总线) 802.5(令牌环) 源 LAN 802.3 1,4 1,2,4,8 802.4 1,5,
9、8,9,10 9 1,2,3,8,9,10 802.5 1,2,5,6,7,10 1,2,3,6,7 6,7 1、重新格式化帧,并计算新的校验和。 2、反转比特顺序。 3、复制优先权值,不管有无意义。 4、产生一个假想的优先权。 5、丢弃优先权。 6、流向环(某种程度上)。 7、设置 A 位和 C 位。 8、担心拥塞(快速 LAN 至慢速 LAN)。 9、担心令牌因为交换 ACK 延迟或不可能而脱手。 10、如果帧对目的 LAN 太长,则将其丢弃。 设定的参数: 802.3:1500 字节帧 10Mb/s(减去碰撞次数) 802.4:8191 字节帧 10Mb/s 802.5:5000 字节帧
10、 4Mb/s 当 IEEE802 委员会开始制订 LAN 标准时,未能商定一个统一的标准,却产生了 3 个互不兼 容的标准,这一失策已受到了严厉的抨击。后来,在制定互联这 3 种 LAN 的网桥的标准时, 该委员会决心干得好一些。这一次确实较为成功,他们提出了 2 种互不兼容的网桥方案。 直到目前为止,还无人要求该委员会制订连接它的 2 个不兼容网桥的网关标准。 四、两种网桥 1、透明网桥 第一种 802 网桥是透明网桥(transparent bridge)或生成树网桥(spanning tree bridge)。 支持这种设计的人首要关心的是完全透明。按照他们的观点,装有多个 LAN 的单
11、位在买回 IEEE 标准网桥之后,只需把连接插头插入网桥,就万事大吉。不需要改动硬件和软件,无 需设置地址开关,无需装入路由表或参数。总之什么也不干,只须插入电缆就完事,现有 LAN 的运行完全不受网桥的任何影响。这真是不可思议,他们最终成功了。 透明网桥以混杂方式工作,它接收与之连接的所有 LAN 传送的每一帧。当一帧到达时,网 桥必须决定将其丢弃还是转发。如果要转发,则必须决定发往哪个 LAN。这需要通过查询 网桥中一张大型散列表里的目的地址而作出决定。该表可列出每个可能的目的地,以及它 属于哪一条输出线路(LAN)。在插入网桥之初,所有的散列表均为空。由于网桥不知道任何 目的地的位置,因
12、而采用扩散算法(flooding algorithm):把每个到来的、目的地不明的 帧输出到连在此网桥的所有 LAN 中(除了发送该帧的 LAN)。随着时间的推移,网桥将了 解每个目的地的位置。一旦知道了目的地位置,发往该处的帧就只放到适当的 LAN 上,而 不再散发。 透明网桥采用的算法是逆向学习法(backward learning)。网桥按混杂的方式工作,故它能 看见所连接的任一 LAN 上传送的帧。查看源地址即可知道在哪个 LAN 上可访问哪台机器, 于是在散列表中添上一项。 当计算机和网桥加电、断电或迁移时,网络的拓扑结构会随之改变。为了处理动态拓扑问 题,每当增加散列表项时,均在该
13、项中注明帧的到达时间。每当目的地已在表中的帧到达 时,将以当前时间更新该项。这样,从表中每项的时间即可知道该机器最后帧到来的时间。 网桥中有一个进程定期地扫描散列表,清除时间早于当前时间若干分钟的全部表项。于是, 如果从 LAN 上取下一台计算机,并在别处重新连到 LAN 上的话,那么在几分钟内,它即可 重新开始正常工作而无须人工干预。这个算法同时也意味着,如果机器在几分钟内无动作, 那么发给它的帧将不得不散发,一直到它自己发送出一帧为止。 到达帧的路由选择过程取决于发送的 LAN(源 LAN)和目的地所在的 LAN(目的 LAN),如下所 示: 1、如果源 LAN 和目的 LAN 相同,则丢
14、弃该帧。 2、如果源 LAN 和目的 LAN 不同,则转发该帧。 3、如果目的 LAN 未知,则进行扩散。 为了提高可靠性,有人在 LAN 之间设置了并行的两个或多个网桥,但是,这种配置引起了 另外一些问题,因为在拓扑结构中产生了回路,可能引发无限循环。其解决方法就是下面 要讲的生成树(spanning tree)算法。 例如,有一个目的地不明的帧 F,每个网桥按照处理目的地不明帧的规则进行扩散,假设 在此例中网桥 1 看见目的地不明的 F,将其复制后产生 F1。紧接着,网桥 2 看见目的地不 明的 F1,将其复制后产生 F2;类似的,网桥 1 又产生 F3 等,形成循环。 生成树网桥 解决上
15、面所说的无限循环问题的方法是让网桥相互通信,并用一棵到达每个 LAN 的生成树 覆盖实际的拓扑结构。使用生成树,可以确保任两个 LAN 之间只有唯一一条路径。一旦网 桥商定好生成树,LAN 间的所有传送都遵从此生成树。由于从每个源到每个目的地只有唯 一的路径,故不可能再有循环。 为了建造生成树,首先必须选出一个网桥作为生成树的根。实现的方法是每个网桥广播其 序列号(该序列号由厂家设置并保证全球唯一),选序列号最小的网桥作为根。接着,按 根到每个网桥的最短路径来构造生成树。如果某个网桥或 LAN 故障,则重新计算。 网桥通过 BPDU(Bridge Protocol Data Unit)互相通信
16、,在网桥做出配置自己的决定前, 每个网桥和每个端口需要下列配置数据: 网桥:网桥 ID(唯一的标识) 端口:端口 ID(唯一的标识) 端口相对优先权 各端口的花费(高带宽 = 低花费) 配置好各个网桥后,网桥将根据配置参数自动确定生成树,这一过程有三个阶段: 1、选择根网桥 具有最小网桥 ID 的网桥被选作根网桥。网桥 ID 应为唯一的,但若两个网桥具有相同的最 小 ID,则 MAC 地址小的网桥被选作根。 2、在其它所有网桥上选择根端口 除根网桥外的各个网桥需要选一个根端口,这应该是最适合与根网桥通信的端口。通过计 算各个端口到根网桥的花费,取最小者作为根端口。 3、选择每个 LAN 的“指
17、定(designated)网桥”和“指定端口” 如果只有一个网桥连到某 LAN,它必然是该 LAN 的指定网桥,如果多于一个,则到根网桥 花费最小的被选为该 LAN 的指定网桥。指定端口连接指定网桥和相应的 LAN(如果这样的端 口多于一个,则低优先权的被选)。 一个端口必须为下列之一: 1、根端口 2、某 LAN 的指定端口 3、阻塞端口 当一个网桥加电后,它假定自己是根网桥,发送出一个 CBPDU(Configuration Bridge Protocol Data Unit),告知它认为的根网桥 ID。一个网桥收到一个根网桥 ID 小于其所知 ID 的 CBPDU,它将更新自己的表,如果
18、该帧从根端口(上传)到达,则向所有指定端口(下传)分 发。当一个网桥收到一个根网桥 ID 大于其所知 ID 的 CBPDU,该信息被丢弃,如果该帧从 指定端口到达,则回送一个帧告知真实根网桥的较低 ID。 当有意地或由于线路故障引起网络重新配置,上述过程将重复,产生一个新的生成树。 2、源路由选择网桥 透明网桥的优点是易于安装,只需插进电缆即大功告成。但是从另一方面来说,这种网桥 并没有最佳地利用带宽,因为它们仅仅用到了拓扑结构的一个子集(生成树)。这两个(或 其他)因素的相对重要性导致了 802 委员会内部的分裂。支持 CSMA/CD 和令牌总线的人选 择了透明网桥,而令牌环的支持者则偏爱一
19、种称为源路由选择(source routing)的网桥 (受到 IBM 的鼓励)。 源路由选择的核心思想是假定每个帧的发送者都知道接收者是否在同一 LAN 上。当发送一 帧到另外的 LAN 时,源机器将目的地址的高位设置成 1 作为标记。另外,它还在帧头加进 此帧应走的实际路径。 源路由选择网桥只关心那些目的地址高位为 1 的帧,当见到这样的帧时,它扫描帧头中的 路由,寻找发来此帧的那个 LAN 的编号。如果发来此帧的那个 LAN 编号后跟的是本网桥的 编号,则将此帧转发到路由表中自己后面的那个 LAN。如果该 LAN 编号后跟的不是本网桥, 则不转发此帧。这一算法有 3 种可能的具体实现:软
20、件、硬件、混合。这三种具体实现的 价格和性能各不相同。第一种没有接口硬件开销,但需要速度很快的 CPU 处理所有到来的 帧。最后一种实现需要特殊的 VLSI 芯片,该芯片分担了网桥的许多工作,因此,网桥可以 采用速度较慢的 CPU,或者可以连接更多的 LAN。 源路由选择的前提是互联网中的每台机器都知道所有其他机器的最佳路径。如何得到这些 路由是源路由选择算法的重要部分。获取路由算法的基本思想是:如果不知道目的地地址 的位置,源机器就发布一广播帧,询问它在哪里。每个网桥都转发该查找帧(discovery frame),这样该帧就可到达互联网中的每一个 LAN。当答复回来时,途经的网桥将它们自
21、己的标识记录在答复帧中,于是,广播帧的发送者就可以得到确切的路由,并可从中选取 最佳路由。 虽然此算法可以找到最佳路由(它找到了所有的路由),但同时也面临着帧爆炸的问题。 透明网桥也会发生有点类似的状况,但是没有这么严重。其扩散是按生成树进行,所以传 送的总帧数是网络大小的线性函数,而不象源路由选择是指数函数。一旦主机找到至某目 的地的一条路由,它就将其存入到高速缓冲器之中,无需再作查找。虽然这种方法大大遏 制了帧爆炸,但它给所有的主机增加了事务性负担,而且整个算法肯定是不透明的。 3、两种网桥的比较 特点 透明网桥 源路由选择网桥 注解 连接方式 无连接 面向连接 透明性 完全透明 不透明
22、透明网桥对主机来说是完全不可见 的,而且它与所有现在的 802 产品完全兼容。 源路由选择网桥既不透明又不兼容。如果要用 源路由选择网桥,主机必须知道桥接模式,必 须主动地参与工作。 配置方式 自动 手工 路由 次优化 优化 源路由选择网桥的几个不多的优点之一是:从 理论上讲,它可使用最佳路由,而透明网桥则 只限于生成树,另外,源路由选择网桥还可以 很好地利用网间的并行网桥来分散载荷。不过 在实际中,网桥能否利用这些理论上的优点是 令人怀疑的。 定位 逆向学习 发现帧 逆向学习的缺点是:网桥必须一直等到碰巧有 一特别的帧到来,才能知道目的地在何处。查 找帧的缺点是:在有并行网桥的大型互联网中,
23、 会发生指数级的帧爆炸。 失效处理 由网桥处 理 由主机处理 复杂性 在网桥中 在主机中 由于主机数量通常比网桥大一两个数量级,因 此,最好把额外的开销和复杂性放到少量的网 桥中而不是全部的主机中。 透明网桥一般用于连接以太网段,而源路由选择网桥则一般用于连接令牌环网段。 五、远程网桥 网桥有时也被用来连接两个或多个相距较远的 LAN。比如,某个公司分布在多个城市中, 该公司在每个城市中均有一个本地的 LAN,最理想的情况就是所有的 LAN 均连接起来,整 个系统就像一个大型的 LAN 一样。 该目标可通过下述方法实现:每个 LAN 中均设置一个网桥,并且用点到点的连接(比如 租用电话公司的电
24、话线)将它们两个两个地连接起来。点到点连线可采用各种不同的协议。 办法之一就是选用某种标准的点到点数据链路协议,将完整的 MAC 帧加到有效载荷中。 如果所有的 LAN 均相同,这种办法的效果最好,它的唯一问题就是必须将帧送到正确的 LAN 中。另一种办法是在源网桥中去掉 MAC 的头部和尾部,并把剩下的部分加到点到点 协议的有效载荷中,然后在目的网桥中产生新的头部和尾部。它的缺点是到达目的主机的 校验和并非是源主机所计算的校验和,因此网桥存储器中某位损坏所产生的错误可能不会 被检测到。 总结: 网桥:转换网桥(透明网桥(生成树网桥) 、源路由选择网桥) ,远程网桥。 网桥用来连接两个或多个相同或不同的 LAN。 网桥是数据链路层的设备。 网桥的工作原理是,收到一个帧后,查看其目的 MAC 地址和源 MAC 地址: 1、如果源 LAN 和目的 LAN 相同,则丢弃该帧。 2、如果源 LAN 和目的 LAN 不同,则查找地址表,转发该帧。 3、如果目的 LAN 未知,则进行扩散。 网桥的地址表是通过“逆向学习法”学习到的。 在转发时,若两个 LAN 不同,则要进行帧格式的转换,若速率不同,则要进行缓存。 。 。 为避免数据帧在有回路的网络中无限循环,网桥采用了生成树协议。