最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

网桥(Bridges) 802.1Q

来源:动视网 责编:小OO 时间:2025-09-30 13:40:35
文档

网桥(Bridges) 802.1Q

网桥(Bridges)1简介网桥用来连接二个或多个相同或不相同类型的局域网络。如图15-1所示为连接二个局域网络A及B的网桥范例。此网桥必须接收所有在网络A上传送的帧,然后根据帧上的目的地地址(DestinationAddress,DA)来决定是否要将帧转发到网络B。如果DA也是在网络A上则表示此帧是在网络A内部传送的帧,因此网桥就将此帧丢掉而不让它进入网络B,以避免浪费网络B的带宽。如果该DA是在网络B上,则网桥必须利用网络B的通讯协议在适当的时机将此帧转发进网络B。换句话说,网桥必须具备有
推荐度:
导读网桥(Bridges)1简介网桥用来连接二个或多个相同或不相同类型的局域网络。如图15-1所示为连接二个局域网络A及B的网桥范例。此网桥必须接收所有在网络A上传送的帧,然后根据帧上的目的地地址(DestinationAddress,DA)来决定是否要将帧转发到网络B。如果DA也是在网络A上则表示此帧是在网络A内部传送的帧,因此网桥就将此帧丢掉而不让它进入网络B,以避免浪费网络B的带宽。如果该DA是在网络B上,则网桥必须利用网络B的通讯协议在适当的时机将此帧转发进网络B。换句话说,网桥必须具备有
网桥(Bridges)

1 简介

  网桥用来连接二个或多个相同或不相同类型的局域网络。如图15-1所示为连接二个局域网络 A 及 B 的网桥范例。此网桥必须接收所有在网络 A 上传送的帧, 然后根据帧上的目的地地址 (Destination Address, DA) 来决定是否要将帧转发到网络 B。如果 DA 也是在网络 A 上则表示此帧是在网络 A 内部传送的帧, 因此网桥就将此帧丢掉而不让它进入网络 B,以避免浪费网络 B的带宽。如果该 DA 是在网络 B 上,则网桥必须利用网络 B 的通讯协议在适当的时机将此帧转发进网络 B。换句话说, 网桥必须具备有「过滤」(Filtering) 及「转发」 (Forwarding) 帧的功能。同一个网络中互送的帧会被网桥过滤掉, 而不同网络间互送的帧则会被网桥转发。为了能判断帧是否属于同一个网络中对送的帧, 网桥还必须知道各个工作站放置的情形, 如图15-1中网桥必须知道工作站 1-4 属于网络 A, 而工作站 5-7 属于网络 B。

图15-1 网桥连结网络

  实际的环境中可能有许许多多的局域网络, 因此必须使用许多个网桥才能将所有的局域网络连结起来。这种利用网桥连结起来的网络称为「桥接网络」(Bridged LANs,简称 BLAN)。如图15-2 所示为含有 6 个局域网络及 7 个网桥的桥接网络。

图15-2 桥接网络范例

  使用桥接网络的主要原因有四:提高网络可靠度;增加网络效率;提升网络安全性;配合地理环境。

  在提高网络可靠度方面,如果连结许多局域网络的设备是「信号增益器」则整个连结后的网络仍然视为一个局域网络。当其中某一个局域网络损毁时(如电缆线断裂)会导致整体网络的故障。使用网桥连结后的网络是许多局域网络共存, 每一个网络都可以运作。当某一个局域网络损毁时, 其它的局域网络仍然可以继续运作。因此桥接网络有较好的网络可靠度。

  在增加网络效率方面,由于使用信号增益器连结的网络会使得整个网络的规模变大, 同时参与竞争使用传输媒介的工作站也可能变多, 容易造成传输失败或增加传送之延迟时间。以 IEEE 802.3 CSMA/CD 网络为例,工作站数量越多则在传输帧时造成「冲撞」(Collision) 的机会也越大, 使得网络传输效率相对减少。使用网桥则由于每一个局域网络都可以运作, 因此可以有许多工作站同时传输帧。如果有 n 个局域网络用信号增益器连结起来则同时可传送帧的工作站数为 1。如果用网桥连结, 则同时可传送帧的工作站数量为 n。因此桥接网络有较佳的网络传输效率。

  在提升网络安全性方面,由于信号增益器将所收到的信号放大后便转发至另外一段网络, 没有做任何过滤的工作。因此任何一个工作站所传送的任何一笔帧都会被所有其它工作站收到。也就是说, 只要将一个工作站连上网络 (任何位置皆可) 便可以监听整体网络的通讯情形。网桥具备有过滤帧的功能, 因此在桥接网络上, 工作站能收到的帧只有目的地工作站与其连接在同一局域网络上,可避免帧不必要的外流, 提升网络安全性。

  在配合地理环境方面。由于局域网络可能散布在较广的区域, 如不同大楼之间,或高速公路的二侧等等,要使用信号增益器连接在技术上有其困难之处。通常信号增益器和网络间的距离有一定 (如 10BASE5 Ethernet 为 50公尺), 因此使用信号增益器连接的局域网络在地理上不可能距离太远。虽然可使用一对所谓的「半信号增益器」(Half-repeaters) 将距离较远的二个局域网络连接起来, 如图5-12所示,但是连接二个「半信号增益器」的电缆线为专线。此专线如果欲铺设于大楼之间或横越公路都必须大兴土木工程, 较不方便。使用网桥则有较好的解决方案。虽然网桥和局域网络间的距离仍然是受到, 然而使用一对「远距网桥」(Remote Bridges) 则可以使二个远距离的网络连接起来, 如图15-3所示。由于此种连接是透过广域网络来完成, 因此在距离上可以说是无远弗届, 例如位于台北的局域网络便可透过远距网桥和位于高雄的局域网络相连结。

图15-3 远距网桥网络

  由于网桥必须担任连接局域网络的任务, 因此在设计时要考虑许多因素:

提供透明化服务。网桥虽然将许多局域网络连结一起,可是对于使用者而言,应该将整体网络视为单一网络(事实上是许多网络同时运作), 而不必知道是否有网桥的存在。换句话说, 如果工作站 A 欲送一笔帧给位于另外一个局域网络上的工作站 B ,其所传送的帧上「目的地地址」可直接使用工作站 B 的地址。就好像工作站 A 及 B 是在同一个网络上一样。网桥应该自己有能力将帧正确的传送给工作站 B。

具备足够大的缓冲器。因为网桥所连接的局域网络可能在类型上不一样, 因此必须有足够大的缓冲器来缓和网络传输速率的不同。例如 Ethernet 网络为10Mbps, Token-Ring 网络为 1 或 4 Mbps, 而 FDDI 光纤网络则为 100 Mbps。假设有一网桥连接 FDDI 网络及 Ethernet 网络, 则因为 FDDI 网络传输速率高达 100 Mbps, 很可能网桥在未消化(转发至 Ethernet上) 帧之前便造成帧过度饱合的情形。这种问题不是只靠加大缓冲器就可以解决的,必须再靠上层通讯协议间的流量控制 (flow control)才可。不过基本上网桥有足够大的缓冲器可以有效解决大部分传输速率匹配的问题。

具备地址辨认及路径选择的能力。因为网桥具有过滤帧的任务, 因此必须有能力判断工作站在什么地方。连接二个网络的网桥称之为「双端口网桥」(Two-port bridge) 而连接多个网络的网桥则称之为「多端口网桥」(Multi-port bridge)。多端口网桥在转发帧时必须知道如何选择适当的路径来转发帧。

 

 2 网桥通讯协议框架

  网桥通讯协议框架如图15-4所示。此框架主要是要提供工作站 MAC 层之间的通讯。网桥接收网络上的帧然后根据其上的目的地地址来决定是否转发。如果必须转发, 则以另外一个网络的帧格式将帧送进另一个网络中。也就是说, 网桥的桥通讯协议框架是架在 MAC 层上面,其所接收或转发的都是 MAC 帧。

(a) 网桥通讯协议框架

(b) 帧传送过程帧格式变化情形

图15-4 网桥通讯协议框架

  图15-4 说明帧传送的过程及所出现的格式。假设工作站 A 欲将一笔帧传送给工作站 B。在 t1 时,工作站A的使用者层 (User layer) 将使用者数据交给 LLC 层。在 t2 时, LLC 层将包装后的使用者帧 (加上 LLC 层的前控制栏, LLC-H) 交给 MAC 层。MAC 层于是将帧再包装成 MAC帧的格式(加上 MAC 层的前控制栏 MAC-H 及后控制栏 MAC-T) 并且交给 PHY 层传送(t3 时)。注意此时 MAC-H 中的目的地地址为工作站 B 的地址而不是网桥的地址, 因为对使用者(工作站)来说, 网桥是看不见的。不过因为局域网络本身具有广播式传送的特性,因此网桥的 PHY 层可以在网络上接收到该笔 MAC 帧。并且将之传递给网桥MAC 层(t4 时)。网桥 MAC 层在检视其上的目的地地址后将该笔 MAC 帧转给其 PHY 层送进网络B( t5 时)。此时工作站 B 的 PHY 层收到该笔 MAC 帧后往上传递给其 MAC 层( t6 时)。MAC 层在检查其上的目的地地址后确定该笔帧是送给它的,于是将 MAC-H 及 MAC-T 部分去掉,只传递 LLC-帧给其上的 LLC 层(t7 时)。LLC 层收到后便根据 LLC-H 检查该帧。如果没有错误, 则将 LLC-H 去掉并且将使用者帧传递给使用者层完成帧传送的工作(t8 时)。

3 网桥结构

  网桥可以有二个或二个以上的端口(port), 每一个端口负责接收及传送帧到其所连接的网络上。图15-5所示为桥接网络的另一个范例,其中网桥 4 拥有 3 个端口。

图15-5 桥接网络范例

  网桥的内部结构如图15-6 所示。其中 MAC 软件 1 负责接收及传送局域网络 1 的 MAC 帧, 而 MAC 软件 2 负责接收及传送局域网络 2 的 MAC 帧。当帧进入网桥时则由「MAC转发软件」来决定是否要转发。除了一般使用者 MAC 帧的处理之外, 网桥彼此之间也要交换帧以便维持整个桥接网络的正常运作。这类帧便由网桥中更高层的软件来负责产生、接收、及处理。高层的软件有网桥管理系统、网桥通讯协议等等。高层软件所欲交换的帧由 LLC 软件的接口来传送。LLC 软件再将帧交给其下的 MAC 软件传入网络中。 

图15-6 网桥软件结构

4 网桥工作原理

  网桥中的 MAC 转发软件负责转发或过滤所接收到的 MAC 帧。其主要的内容有:

转发程序(Forwarding Process)。此程序负责将接收到而且要转发的帧传送给适当的网桥端口及根据「过滤数据库」(Filtering Database)的内容和网桥端口的状态(port state)来过滤一些接收到的帧。

学习程序(Learning Process)。此程序检查由每一个网桥端口接收到的帧上的「原始地址」(source address)。并且根据此原始地址来更改过滤数据库的内容。此项更动也必须参考该网桥端口的状态。基本上此程序在学习每个工作站在桥接网络中的位置。

过滤数据库(Filtering Database)。此数据库包含有关过滤帧的信息。内容可由网桥管理系统填入或自动的经由学习程序得到。它要提供足够的信息给转发程序, 以便判断欲送给某一个目的地地址之帧是否该往那一个网桥端口转发。

  图15-7 所示为二个网桥端口之间帧转发的关系。其中「帧接收程序」负责将每一笔由局域网络中接收到的帧转给转发程序。转发程序则根据过滤数据库的内容以及每一个网桥端口的状态来决定是否转发, 如果是则该笔帧传给「帧传送程序」以便送进另外一个局域网络。图15-8 所示为学习程序的工作情形。和图15-7 相同, 帧接收程序也会将每一笔由局域网络上接收到的帧传给学习程序。学习程序则根据帧中的原始地址及该网桥端口的状态来决定是否更正过滤数据库的内容。

图15-7 网桥转发帧处理过程

图15-8 网桥学习工作站地址处理过程

   以上是网桥处理使用者帧的情形。由于网桥彼此之间也有控制帧要交换 (如网桥管理系统、网桥通讯协议等), 因此每一个网桥端口应该要提供有 LLC 种类 1 (TYPE 1)的服务给网桥通讯协议使用。当然也可以提供其它种类的服务给其它高层通讯软件使用。图15-9 所示为网桥间通讯协议帧处理的情形。首先帧接收程序在收到网络上的帧后, 根据其上的目的地地址来判断该笔帧是否属于网桥通讯软件 (所有网桥上的通讯软件使用一个「组播地址」,其值为 6 个字节: 01-80-c2-00-00-00)。如果不是则交给 MAC 转发软件 (如前所述) , 否则经由 LLC 传给网桥通讯软件, 网桥通讯软件则根据帧上的信息来设定端口的状态及更正过滤数据库的内容。网桥通讯软件也可能产生或转发帧给其它网桥上的通讯软件。此时可经由 LLC 将帧传给帧传送程序。

图15-9 网桥生成树维运部份之帧处理

  网桥过滤数据库之建立及使用原理如下。过滤数据库的主要用途是提供有关是否将所收到的帧过滤掉的信息。在实作上, 过滤数据库可以是一个「表」(Table) 而包含三项信息, 如图15-10 所示。其中工作站地址是指所有在桥接网络上的工作站的地址, 隶属端口则是记录该工作站是位于网桥的那一个端口上。帧收集时间则表示该项信息已经建立多久的时间。开始时过滤数据库是空的 (或者有些是由网桥管理系统预先设定), 每当有使用者的 MAC 帧进入时便根据其上的「原始地址」来登录其属于那一个端口, 其且记录时间。每一笔记录都有时效性, 在一定时间之内如果没有更新 (refresh) 的帧到达则将该笔数据删除以避免在转发帧时参考到过时(可能错误)的信息。这是因为工作站是被允许移动的。当工作站由一个局域网络移到另外一个局域网络时,其所隶属的端口可能就要跟着修正。如图15-10中,工作站 E 及 F 隶属于于网桥 1 的端口 1, 而工作站 A 及 B 则隶属于网桥 1 的端口 2。如果工作站 E 移至局域网络 3 上,则网桥 1 的过滤数据库中, 工作站 E 的隶属端口应修正为 2。但是网桥无法预知工作站的移动, 因此只有当移动后的工作站再次传送帧时才会被网桥侦测出位置之变化。

图15-10 过滤数据库内容范例

  图15-11 所示为有关帧转发及工作站位置学习的执行流程图。当网桥由端口X 收到一笔 MAC 帧时便首先检查帧上的目的地地址是否已经登录在过滤数据库中。如果没有则表示此网桥不知此目的地地址在那里, 因此将此帧转发至所有相连的局域网络中 (除了端口 X 以外)。如果已经登录则检查其是否隶属于端口 X。如果是则表示此笔帧属于和端口 X 同一边的工作站间的传送, 因此将此帧丢掉不必进一步转发。否则将此帧转发进适当的局域网络中(经由过滤数据库中目的地工作站的隶属端口) 。接下来进入到学习步骤。首先检查帧上的原始地址是否已经登录在过滤数据库中。如果是, 则表示该原始工作站曾经送过帧, 但可能经由不同的端口进入,因此登录正确的隶属端口及时间。否则,表示该原始工作站的帧是第一次进入网桥, 因此将原始工作站地址、隶属端口(X)、及时间(0秒)登录到过滤数据库中。

图15-11 帧转发及工作站地址学习流程图

  以下是一个说明过滤数据库建立, 帧转发及过滤过程的例子。图15-12(a)所示为含有 3 个网桥, 5 个局域网络, 及 5 个工作站的桥接网络。为了方便说, 我们省略过滤数据库中的时间信息, 并且以下列的帧传送顺序为范例:

    (1) A → E

    (2) B → D

    (3) C → B

    (4) D → A

    (5) E → C

图15-12(a) 桥接网络与网桥之过滤数据库

(1) A→E。请参考图15-12(b)。根据图15-11的流程,当工作站 A 的帧进入网桥 X 时,此帧会被转发至局域网络 2,并且在网桥 X 的过滤数据库中登录 (A,1),表示工作站 A 隶属于端口 1。当此帧进入网桥 Y 时, 此帧会被转发至局域网络 3 及 4 中, 并且在网桥 Y 的过滤数据库中登录 (A,2)。当此帧进入网桥 Z 时, 此帧会被转发至局域网络 5, 并且在网桥 Z 的过滤数据库中登录 (A,1),最后工作站E在局域网络 5 中接收到帧。在此过程中, 网桥 Y 将帧转发至局域网络 3 中是多余的,但是因为网桥 Y 还没有学习到工作站 E 的位置,因此只好以「广播」的方式将帧转发到任何可能的路径上。

图15-12(b) A -> E 后网桥之过滤数据库内容

 (2) B→D。请参考图15-12(c)。工作站 B 传送的帧会同时进入网桥 X 及 Y 中。网桥 X 将此帧转发进局域网络 1 中,并且将 (B,2) 登录在其过滤数据库中表示工作站B隶属于其端口 2。网桥 Y 则将此帧转发到局域网络 3 及 4 中, 并且将 (B,2)登录在其过滤数据库中。工作站 D 可在局域网络 4 中接收到帧。然而网桥 Z 也会收到此帧, 并且在不知工作站 D 的位置的情形之下将帧转发至局域网络 5。不过 (B,1)会被网桥 Z 登录在其过滤数据库中。由于工作站位置尚未学习完成, 因此在此过程中,有三笔帧分别被多余的转发至局域网络 1, 3 及 5 中。

图15-12(c) B -> D 后网桥之过滤数据库内容

(3) C→B。请参考图15-12(d)。工作站 C 的帧传送到局域网络 3 时会被网桥 Y 接收到。由于网桥 Y 的过滤数据库中已经知道工作站 B 隶属于其端口 2,因此仅将此帧转发到局域网络 2, 并且将 (C,1) 登录在其过滤数据库中。工作站 B 可在局域网络 2 中接收到此帧。不过网桥 X 也会同时收到此帧。由于网桥 X 也已经知道工作站B隶属于其端口 2 (和收到帧的端口相同), 因此将此帧过滤掉不再转发到局域网络1。

图15-12(d) C -> B 后网桥之过滤数据库内容

(4) D→A。请参考图15-12(e)。工作站 D 的帧传送到局域网络 4 时会被网桥 Y 及 Z 收到。由于网桥 Z 已经知道工作站 A 隶属于其端口 1,因此将此帧过滤掉。不过在学习的过程中将 (D,1)登录在其过滤数据库中。至于网桥 Y 在收到帧时也因为知道工作站 A 隶属于其端口 2,于是将帧转发到局域网络 2。同时将 (D,3)登录在其过滤数据库中,当网桥 X 在局域网络 2 中收到此帧时便可查出工作站 A 隶属于其端口 1,于是将帧转发到局域网络 1,并且将 (D,2) 登录在其过滤数据库中,最后工作站 A 由局域网络 1中收到此帧。

图15-12(e) D -> A 后网桥之过滤数据库内容

(5) E→C。请参考图15-12(f)。当工作站 E 的帧传进局域网络 5 时会被网桥 Z 收到。由于网桥 Z 尚不知道工作站 C 隶属于其端口 1, 于是将此帧转发进局域网络 4,并且将 (E,2)登录在其过滤数据库中。由于网桥 Y 已经知道工作站 C 隶属于其端口 1,因此当它在局域网络 4 收到此帧时,可以立刻将其转发到局域网络 3,并且将 (E,3) 登录在其过滤数据库中,率先完成了工作站位置学习的任务。最后工作站 C 由局域网络 3 中收到此帧。由于此帧并没有被转发到局域网络 2,所以网桥X尚无法得知工作站 E 的相关位置。

图15-12(f) E -> C 后网桥之过滤数据库内容

5 生成树算法

  在前一节的例子中, 我们是假设桥接网络没有回路(loop)。在这种情形之下,任何二部工作站之间只有唯一的一条通讯路径,因此帧在传送时不会造成「重复接收」(Duplication) 的现象。但是没有回路的桥接网络在系统的可靠度上较差。如果有某个网桥故障, 则整个桥接网络便可能会被分成两个或数个彼此之间不能通讯的小网络。为了解决这个问题, 势必允许桥接网络含有回路,然而,回路除了可能造成帧重复接收之外,也会对网桥之工作站学习过程造成困扰 。如图15-13所示,网桥 X 及 Y 之间存在一个回路。假设工作站 A 在 t0 的时间传送一笔给工作站 B 的帧到局域网络 2, 则网桥 X 及 Y 都会收到该笔帧, 并且在学习的过程中分别将 (A,1) 及 (A,2) 登录在其过滤数据库中。由于二个网桥都不知道工作站 B 的位置,因此会将此帧传送到局域网络 1。此时那一个网桥会先送成功就必须根据局域网络 1 的通讯协议来决定。例如 Ethernet 则大家一起竞争传送机会,Token-ring 网络上则看谁先拿到令牌。假设网桥 X 抢先在 t1 的时间传送成功,则此帧会被网桥 Y 经由端口 1 接收。由于此帧上的原始地址仍然为工作站 A,因此 (A,1) 会被登录在其过滤数据库中。相同的, 当网桥 Y 在 t2 时间将先前收到的帧转发进局域网络之后也会使得 (A,2) 登录在网桥 X 的过滤数据库中。这个结果使得网桥 X (Y) 认为工作站 A 是隶属于其端口 2 (1), 造成严重的错误。

图15-13 回路造成地址学习错误

  为了增加系统容错能力, 我们希望桥接网络能有回路。可是为了避免帧重复接收及工作站位置学习错误, 我们又希望不要有回路。一个两全其美的方法便是让回路真实存在桥接网络中, 但是在系统运作时让它没有回路。也就是说, 我们可以用一个方法让某些网桥的某些端口不参与实际运作使得回路不存在。例如图15-14的桥接网络范例中有 2 个回路: (1) 网桥2-局域网络1-网桥3-局域网络2-网桥2, (2) 网桥1-局域网络1-网桥2-局域网络2-网桥4-局域网络3-网桥1。

  如果让网桥 2 的端口 2 及网桥 4 的端口 1不工作,则可以得到如图15-14 中无回路的网络框架。在这个框架之下,任何二个局域网络之间存在唯一路径。例如当位于局域网络 3 上的工作站欲传送帧给位于局域网络 2 的工作站时,其帧会经由网桥 1 进入局域网络 1, 再经由网桥 3 进入局域网络 2。

图15-14 回路去除后之桥接网络框架

  图15-14的框架称为「生成树」(spanning tree)框架。因为它将所有的局域网络连结起来而没有造成回路。生成树原来是定义在「图形理论」(graph theorem)上的。假设有一图形 G=(V,E) 包含 n 个「点」(vertices) 及一组「边」(edges)。求此图形的生成树便是找出图形中的 n-1 条边将所有 n 个点连接起来而且没有回路。如果我们将每一个局域网络和每一个网桥看成一个点, 每一个网桥端口看成一个边,则一个桥接网络便可以一个相对的图形来表示。而没有回路的桥接网络便可以看成是这个图形的一个生成树。例如图15-14的桥接网络可以图15-15(a)的图形表示,而图15-14 的框架则是如图15-15(b)的生成树。 

(a) 桥接网络的相对图形 (b)图形中之生成树

图15-15 桥接网络(图15-14)的图形表示法及其生成树范例

  找一个生成树就是要让某些网桥端口不工作。问题是,一个图形中存在有很多的生成树, 我们到底要找那一个?还有应该如何才能正确的让某些网桥端口不工作? 以下介绍的是IEEE 802.1D 标准中制定的一套分布式生成树算法 (spanning tree algorithm) 可以找出桥接网络的一个生成树。此算法将在桥接网络中的每一个网桥上执行, 形成所有网桥间的一个通讯协议。此通讯协议为网桥的高层软件, 如图15-6中所示。

  基本上,一个生成树可以定义一个「根点」(root), 其它点则可以看成是由此根点长出来的枝叶。在算法里, 根点的角色将由一个网桥来担任。此网桥称为「根点网桥」(root bridge)。

  以图15-14中的生成树为例, 如果我们以网桥 1 为根点网桥则此生成树可以整理为图15-16中所示的生成树。为区别网桥, 每一个网桥都有一个唯一的标识码(Identifier, 简称ID)。相同的,为了区别一个网桥中的端口, 每一个端口也有一个唯一的端口标识码 (Port Identifier,简称 port ID)。不同的网桥可以有相同的端口标识码。由于生成树算法在执行的时候必须常常将某些控制帧传遍所有网桥之间, 因此所有的网桥共同拥有一个 MAC 层的组播地址 (group MAC address)。某一个网桥只要将此组播地址放入其所传送的控制帧的目的地地址, 其它收到此帧的网桥便可以接受并处理此帧。

图15-16 以网桥 1 为根点网桥之生成树

  在说明生成树算法之前, 有一些重要的名词必须先介绍(同时请参阅图15-17及图15-18):

根点网桥(Root Bridge)。所有启动的网桥中,具有最小网桥标识码的网桥将成为生成树的根点。如图15-17中,网桥 1 的标识码最小(ID=25)。

传输费用(Transmission Cost)。每一个端口都有一个传输费用,其值是将一笔帧经由该端口传送进其连接局域网络的费用。此费用一般以时间来衡量,传送速率越快的局域网络,和其相连接的端口的费用越小。

路径费用 (Path Cost)。每一个网桥都可能有许多路径可到达根点网桥(因为有回路) 。每一条路径由端口开始,经过若干对的 (局域网络,网桥),最后再经过一个局域网络到达根点网桥。路径费用是该路径中所有经过的传输端口(非接收端口)的传输费用的总合。如图15-17中,网桥4有三条到达网桥1的路径, 其费用分别为5、10(10=5+5)及15(15=5+10)。

根端口(Root Port)。每一个网桥 (除了根点网桥)都有一个根端口。在生成树上, 每一个网桥都有唯一的一条路径可到达根点网桥。在此路径中, 离开网桥往根点网桥方向的端口便是其根端口。如图15-17中,每一个网桥的根端口都是端口1,除了网桥 4,其根端口为端口 2。

根路径费用(Root Path Cost)。一个网桥经由其根端口到达根点网桥的路径费用。此路径费用为所有由该网桥到根点网桥的路径中,费用最少者。如图15-17中,网桥 5 的根路径费用为10。

代理端口 (Designated Port)。每一个局域网络有一个代理端口。经由此代理端口,该局域网络有一条最少费用的路径到达根点网桥。如果有多条费用相同的路径, 则以经过标识码较小的网桥为优先选择。如果此网桥有多个端口连接在此局域网络而其路径费用皆为最少,则以较小的端口为优先选择。如图15-17中,局域网络 2 到达网桥 1 的路径:(网桥 2 之端口 2,端口 1,局域网络 1),(网桥 3 之端口 2,端口 1,局域网络 1), 及(网桥 4 之端口 1,端口 2,局域网络 3), 其路径费用分别为10, 5 及 5。因此网桥 3 之端口 2 为局域网络2之代理端口。由于所有与根点网桥相连接的局域网络都可经由直接相连的端口到达根点网桥,其路径费用为 0。因此根点网桥的每一个端口都是与其连接的局域网络的代理端口。如图15-17中, 根点网桥的端口 1 及端口 2 分别为局域网络 1 及 3 的代理端口。

代理网桥(Designated Bridge)。针对每一个局域网络, 拥有其代理端口的网桥称为其代理网桥。例如图15-17中, 网桥 3 为局域网络 2 的代理网桥。

图15-17 桥接网络及相关名称

图15-18 桥接网络(图15-17)之生成树

  除了以上的名词之外, 仍然须介绍一些和时间有关的参数:

转发延迟时间 (Forward Delay)。此时间是指一笔帧由开始传送到帧经过所有网桥所需要最长的时间。一个桥接网络的「直径」(diameter) 是指任何一对工作站间最长的路径所经过的网桥的数目。如图15-17中桥接网络的直径为 3 (局域网络 1 与局域网络 4 之间的路径最多经过 3 个网桥)。一个桥接网络的转发延迟时间和其直径成正比。此时间的长短由根点网桥设定并且利用其所传送的帧将此时间传递给其它所有的网桥参考。

信息年龄 (Message Age)。此时间是指根点网桥所产生的帧已经生存了多久的时间。每一个网桥在收到帧后更将其上的信息年龄加上本身处理该帧的时间。如果某一笔帧其信息年龄超过信息时限则会被网桥丢弃。

信息时限 (Maximum Age)。此时间为每一笔网桥间通讯帧的生存极限。其值由根点网桥来设定并且传给所有其它网桥参考。除此之外, 此时间也是网桥过滤数据库中每一项信息的有效期限。在这种时间之内如果某一项信息没有被更新过则将之删除。

问候时间(Hello Time)。根点网桥产生通讯帧的间隔。在生成树建立后, 根点网桥会定期的送出问候帧给所有的网桥, 告之目前的网络状况良好。这些问候帧是依据生成树的路径来传送的, 因此在正常的情况之下,每一个网桥都会不时的收到问候帧。如果发生网络损坏或网桥故障,则可能使生成树断裂, 导致某些网桥收不到问候帧。如此便可侦测出网络损毁并进行抢救步骤。有关网络框架重组的部分将于稍后再详论。

 IEEE 802.1D 标准所制定的生成树算法主要包含三个步骤:

(1) 找出根点网桥。

(2) 针对每一个网桥(根点网桥除外)找出其根端口。

(3) 针对每一个局域网络找出其代理端口。

  完成以上的三个步骤就代表找到了一个生成树。此生成树的最大特色是「每一个网桥或局域网络到根点网桥的最少费用路径都在此生成树上」。以下说明这三个步骤是如何进行及完成。

 1.找出根点网桥

  开始时, 每一个网桥都不知道其它网桥的情形。因此以为自己是根点网桥并且将「网桥通讯协议数据单元」 (Bridge Protocol Data Unit,简称 BPDU) 传进所有直接相连的局域网络中。其中 BPDU 中的「根点网桥标识码」字段填入自己的标识码,「根路径费用」字段填入 0,「网桥标识码」字段也填入自己的标识码, 「端口标识码」字段则填入传送出该 BPDU 端口标识码。有关 BPDU 的帧格式请参考图15-23。

  当一个网桥由其端口 i 收到一笔 BPDU 时便比较 BPDU 上的根点标识码是否大于本身认定的根点标识码 (开始时认定自己的标识码是根点标识码)。如果是,则表示此 BPDU 的优先权较低并且将其丢弃。否则, 表示发现有比自己更小的标识码, 于是自己放弃当根点网桥并且将认定的根点标识码暂时设定为 BPDU 上的根点标识码。除此之外, 还必须将此 BPDU 转发到所有的端口上(端口 i 除外)。在这个过程当中,只有真正的根点标识码不会收到比自己更小的根点标识码, 而且其 BPDU 将于一个「转发延迟时间」之内征服其它所有的网桥。换句话说, 任何一个网桥只要在二个转发延迟时间内不收到比自己更小的根点标识码就可以确认自己是根点网桥。根点网桥每隔一段「问候时间」就要将其 BPDU 传送进所有直接相连接的局域网络以问候其它网桥。

 2. 找出网桥根端口

  网桥一旦确认自己不是根点网桥后便立刻寻找自己的根端口。假设该笔BPDU 是由端口 i 收到,则先暂时设定端口 i 为其根端口。并且将本身的根路径费用设定为 BPDU 上根路径费用与端口 i 的传输费用的和。表示由端口 i 到根点网桥的路径费用。当此 BPDU 由端口 j 转发出去时, 其上的根路径费用字段的值必须换成为网桥的根路径费用。这是通知所有与端口 j 相连网络上的网桥, 经由端口 j 到根点网桥的费用(端口 j 的传输费用不计算,因为在此路径上,其为接收端口)。

  在二个转发延迟时间之内如果没有收到更好的 BPDU (如较小的根点网桥,或相同的根点标识码但有较小的根路径费用),则可设定端口 i 为根端口。否则重复以上的步骤。

 3. 找出局域网络的代理端口

  由于局域网络本身没有计算能力, 因此其代理端口由所有和其相连接的网桥共同来寻找。当一个网桥 X 在确定其某一个端口(如端口 i)为根端口后, 便开始想知道其它的端口是否能分别成为与其连接局域网络的代理端口。网桥于是将其根路径费用RPC(X) 当成是与端口 j 相连接局域网络的根路径费用, 并且将之传进局域网络中。当其它与此局域网络相连接的网桥 Y 收到此帧后(假设由端口 k 收到)便检查该值是否小于其根路径费用 RPC(Y)。如果 RPC(X)<RPC(Y) 则表示传送该信息的网桥 X 更合适成为此局域网络的代理网桥, 于是放弃竞争。如果 RPC(X)>RPC(Y) 则表示自己更适合, 于是将自己的根路径费用 RPC(Y) 经由端口 k 送进局域网络中以通知该网桥使其放弃。如果 RPC(X)=RPC(Y) 则以网桥的标识码来决定。标识码小的网桥有较高的优先权。这个竞争的过程可能一直持续进行,直到局域网络真正的代理网桥将最少的根路径费用送进局域网络为止。此时其它所有连接的网桥都会被迫放弃竞争, 由于每一个网桥确认其根端口的时间不同, 因此以上的过程并不是同步的。一个网桥可能在自认为是某局域网络的代理网桥一段时间后才收到更具优先权的信息。一个原本已经暂定某个端口为根端口的网桥 Z 也可能在其端口 m 收到更好的根路径费用 (RPC(X)+TC(m)<RPC(Z)) 后, 变更其根端口为端口 m。

  如图15-19所示, 假设根端口暂定的顺序为网桥 Z, X, 及 Y 而且认定的根点网桥相同。则局域网络 w 的代理端口 D(w) 寻找过程如下:

网桥 Z 由其端口 n 收到一笔 BPDU 其上之 RPC=38。

网桥 Z 暂定端口 n 为根端口,设定 RPC=48。自认其端口 m 为局域网络 w 之代理端口。

网桥 Z 将 BPDU 转发进局域网络 w ,其上之 RPC=RPC(Z)=48。

网桥 X 由其端口 j 收到此 BPDU, 暂定其根端口为 j 并且设定其 RPC=48+TC(j)=58。网桥 Y 由其端口 k 收到此 BPDU, 暂定其根端口为端口 k 并且设定其 RPC=48+TC(k)=53。

网桥 X 由其端口 i 收到一笔 BPDU, 其上之 RPC=20。

网桥 X 更改其根端口为端口 i 其且设定 RPC=20+TC(i)=20+15=35。 由于 RPC<48, 网桥 X 认定其端口 j 为局域网络 w 之代理端口。

网桥 X 将 BPDU 转发进局域网络 w, 其上之 RPC=RPC(X)=35。

网桥 Z 由其端口 m 收到此 BPDU。放弃其端口 m 为局域网络 w 之代理端口 (35<48)。修正其 PRC=35+TC(m)=35+10= 45。网桥 Y 由其端口 k 收到此 BPDU。修正其 PRC=35+TC(k)=35+5= 40。根端口仍然为端口 k 。

网桥 Y 由其端口 l 收到一笔 BPDU, 其上之 RPC=25。

网桥 Y 更改其根端口为端口 l 并且设定其 RPC=25+TC(l)=25+5=30。由于 RPC<35, 网桥 Y 认定其端口 k 才是局域网络 w 之代理端口。

网桥 Y 将 BPDU 转发进局域网络 w,其上之 RPC=RPC(Y)=30。网桥 X 由其端口 j 收到此 BPDU。由于 30<35, 网桥 X 也放弃其端口 j 为局域网络 w 之代理端口。因为 30+TC(j)=40>RPC(X)=35, 所以网桥 X 之根端口及 RPC 不变。

网桥 Z 由其端口 m 收到此 BPDU。由于 30+TC(m)=40<RPC(Z)=45, 网桥 Z 修正其 RPC=40, 但根端口仍然为端口 m 不变。

图15-19 局域网络代理端口找寻范例

  经过以上的执行过程之后,网桥 X、Y、及 Z 的根端口分别为端口 i、端口 l、及端口m。而局域网络 w 之代理端口为网桥 Y 之端口 k ,如图15-20所示。

图15-20 局域网络代理端口找寻结果(参考图15-19)

  以上所介绍的是生成树算法。再次强调此算法求出来的生成树最大的特色为「所有网桥或局域网络到根点网桥的路径费用为最小」。除此之外, 生成树之框架也可以事先预测。给定一个桥接网络, 我们可以根据寻找生成树的三个重要原则直接找出其生成树来。例如图15-21 中的桥接网络。其生成树如图15-21中粗线所示。至于为什么则留给读者自行验证。

图15-21 桥接网络及其生成树范例

  前面已经介绍在一个生成树中, 根点网桥的每一个端口都是代理端口, 而其它网桥则有一个根端口及代理端口(可能没有代理端口)。对于一个网桥来说, 那些不属于根端口或代理端口的端口必须停止运作以免破坏生成树的特性: 任何二个工作站之间只有一条路径。因此网桥端口的状态可以用一状态图来表示, 如图15-22所示。一个网桥端口之状态有四种不同状态:

停滞状态(Blocking)。开始时, 每一个网桥端口都是在此状态。此时网桥端口不可以处理任何使用者传送之 MAC 帧。当算法选择到某一个端口为根端口或代理端口时, 该端口便进入到「倾听状态」。 

倾听状态(Listening)。在此状态之下,一个端口仍然不可以处理使用者传送之MAC 帧。在一个转发延迟时间之内如果被算法取消其为根端口或代理端口( 可能找到更好的根端口或发现更好的代理端口在其它网桥等等), 则又回到停滞状态。否则便进入「学习状态」。

学习状态(Learning)。在此状态之下, 一个端口不可以传送使用者的 MAC 帧, 但可以进行学习工作站位置的程序, 建立过滤数据库。相同的, 在一个转发延迟时间之内如果被算法取消其为根端口或代理端口, 就回到停滞状态。否则便进入「转发状态」。

转发状态 (Forwarding)。在此状态之下, 一个端口已经可以确定是属于生成树的一部分(根端口或代理端口), 因此可以执行转发帧的任务, 当然也可以进行学习工作站的位置等等工作。在生成树不变动之下, 在此状态的端口便正常的处理 MAC 帧:过滤或转发。如果生成树变动(如网桥损坏等), 则可能必须更换根端口或代理端口。因此当有必要时,一个在转发状态的端口然可能回到停滞状态。

图15-22 网桥端口状态转换图

网桥通讯协议数据单元(Bridge Protocol Data Unit,简称 BPDU)是网桥彼此之间送帧的单元。BPDU 之格式有二种, 如图15-23所示。其中15-23(a)为网络框架 BPDU (Configuration BPDU), 例如前几节中所提到的生成树的建立便是利用此种 BPDU 来交换信息。而15-23(b)为「框架变更通知用 BPDU」(Topology Change Notification BPDU, 简称 TCN BPDU)。例如当网桥发现生成树有变动情况时必须以此类BPDU 通知根点网桥。有关生成树之维护方法将于第 15.6 节中介绍。网络框架 BPDU 包含 12 个字段:

(1) 通讯协议标识码(2 字节):用来辨别所使用的通讯协议。例如生成树通讯协议的标识码为 0000 0000 0000 0000。

(2) 通讯协议版本(1 字节): IEEE 802.1D 所制定之生成树通讯协议版本为 0000 0000。

(3) BPDU种类(1 字节):辨别此BPDU之种类, 例如 0000 0000 代表网络框架BPDU,而 1000 0000 代表框架变更通知用BPDU。

(4) 旗标字段(1 字节):有框架变更旗标(第1 个位)及框架变更回复旗标(第8个位)。

(5) 根点网桥标识码(8 字节):记录传送此BPDU的网桥所认定的根点网桥的标识码。其中前面 2 个字节为可设定之标识码, 后面 6 个字节则为根点网桥在其所连接的局域网络上的 MAC 地址(如 Ethernet, Token-ring 或 Token-bus)。此 MAC 地址与接口控制卡有关因此不可变更。

(6) 根路径费用(4 字节):记录传送此 BPDU 之网桥之根路径费用。此值用来告知其它网桥经由此网桥到达根点网桥的最少费用。

(7) 网桥标识码(8 字节):传送此 BPDU 的网桥的标识码。标识码的意义和第(5)字段相同。

(8) 端口标识码(2 字节):传送此 BPDU 的网桥端口标识码。

(9) 信息年龄(2 字节):此 BPDU 已经在网络中生存的时间。当此 BPDU 由根点网桥产生时,其值为 0。往后接收到此 BPDU 的网桥则加上处理时间等。当其值大于信息时限时则将此 BPDU 丢弃。

(10) 信息时限(2 字节):此 BPDU 之最大生存时限。此值由根点网桥设定并且传给所有网桥参考 。此值也是网桥过滤数据库中信息的有效时间。

(11) 问候时间(2 字节):根点网桥产生BPDU的间隔时间。由根点网桥设定 。生成树算法并没有用到此参数值。不过网络管理的软件可利用此值来监督通讯协议的效率。

(12) 转发延迟时间(2 字节):网桥使用的时间参数。此值也是由根点网桥设定。当生成树发生过变化时,根点网桥会用 BPDU 使用此时间做为其过滤数据库中信息的保存时间 。因为生成树变动后, 有关工作站位置的信息可能不正确,因此尽可能的早点删除。

图15-23 BPDU格式与各字段定义

6 生成树的维护与重组

  一个已经建好的生成树可能因为网桥的故障或损坏而造成断裂。因此必须有一套方法来维护生成树的正常运作。此方法主要分为二部份:断裂侦测。生成树重组。

  在断裂侦测方面由根点网桥负责提供原始信息。由于根点网桥每隔一个「问候时间」(Hello time) 就会送出一个 BPDU。此 BPDU 会沿着生成树转发而到达每一个网桥。而这种 BPDU 在进入一个局域网络时一定是由其代理端口传入。例如图15-21中, 根点网桥将其 BPDU 分别送入局域网络 3 及 6 中。当网桥 3 及 4 收到此 BPDU 时便不能再传送, 因为它们都不是代理网桥。当网桥 8 收到此 BPDU 时则仅转发进局域网络 5 而不转发进局域网络 4。相同的, 当网桥 6 由局域网络 7 收到 BPDU 时(由网桥 7 转发),便转发进局域网络 2 中。由于局域网络 2 的代理网桥为网桥 6, 因此网桥 6会周期性的将每次收到的 BPDU 转发进局域网络 2。其中每一个 BPDU 都会被网桥 2、3, 及 4 收到。而网桥 2 会将此 BPDU 又转进局域网络 1 中,但网桥 3 及 4 则仅记录收到 BPDU 的时间。假设网桥 6 发生故障, 则不再会有 BPDU 被送进局域网络 2 中。经过一段时间之后, 网桥 3 的端口 1 及网桥 4 的端口 1 都会发生逾时的信号,表示侦测到网桥 6 已损坏或当机。

图15-24 生成树重组范例(网桥故障)

  在生成树重组方面。当一个网桥侦测到与其相连的局域网络的代理网桥发生故障时(如前所述)便开始进行取代该代理网桥角色的工作。首先将由其根端口收到的 BPDU 转发进该局域网络, 其中根路径费用字段填入其本身之根路径费用,如前面说明之代理端口选择程序。以图15-21 为例,当网桥 6 故障时,网桥 3 及 4 都会想成为局域网络 2 的代理网桥,因此各别将其 BPDU 送进局域网络 2。在此例中, 因为此二网桥具有相同之根路径费用,因此由具有较小标识码的网桥 3 取得代理权。重组后的生成树如图15-24 所示。取得代理权的网桥必须将此事件通知根点网桥。其方法则将如图15-23(b)所示的「框架变更 BPDU」沿着生成树的路径送给根点网桥。此 BPDU 必须保证安全送到根点网桥, 因此每一个收到此 BPDU 的网桥都要先送一个回复信息给传送的网桥然后才能转发。根点网桥在收到此通知后便在其往后所传送的 BPDU 中设定「框架变更」旗标,并且设定一个较小的转发延迟时间。当网桥收到此类 BPDU 时便知道生成树发生变动, 因而以较小的转发延迟时间将其过滤数据库中的信息删除。

除了网桥故障外,生成树也可能因为局域网络的故障而必须重组。其过程与网桥故障时相似。以图15-21 为例,当局域网络 3 故障时,与其相连的网桥便开始进行生成树重组的工作。在此例中,局域网络 3 的故障会造成二个生成树,结果就会有二个根点网桥,如图15-25 所示。

图15-25 生成树重组范例(局域网络故障)

如果根点网桥发生故障, 则整个桥接网络都会失去 BPDU, 此时每一个网桥都会先后的进行代理端口争夺战。结果导致整个生成树的重建。 

3.3帧处理

虚拟网络网桥在接收帧与传送帧的功能与传统的网桥相同。但是在决定是否将某一帧滤掉时则有些不同。针对帧可能输出的连接端口,我们必须根据下列的信息来决定此帧的过滤与否:

* 过滤数据库的内容

* 网桥过滤模式

* 该连接端口的过滤模式

* 该帧中的目的地地址

* 该帧隶属的虚拟网络

满足下列条件的帧将会被过滤掉:

对于网桥及连接端口的所有可能模式,只要过滤数据库中存在一项目指出,针对该帧所隶属的虚拟网络,该帧的目的地MAC地址应该由另外一个连接端口传送,或过滤数据库中存在一项目明确指出,所有携带该目的地MAC地址与虚拟网络标识码的帧应该被过滤掉。

对于网桥第二过滤模式 (Bridge Filtering Mode 2) 及连接端口第 B过滤模式 (Port Filtering Mode B),只要该帧的目的地MAC地址是一个群体地址,而且过滤数据库中存在一「群体注册项目」(Group Registration Entry) 指出,针对该连接端口,所有携带该目的地MAC地址与虚拟网络标识码的帧应该被过滤掉。

对于网桥第二过滤模式 (Bridge Filtering Mode 2) 及连接端口第 C过滤模式 (Port Filtering Mode C),只要该帧的目的地MAC地址是一个群体地址,而且过滤数据库中「不存在」一群体注册项目指出,针对该连接端口,所有携带该目的地MAC地址与虚拟网络标识码的帧应该被转送。

地址学习程序 (Learning process) 除了观察帧的原始地址外,还要根据该帧所隶属的虚拟网络来更改过滤数据库。在传统网桥的运作环境下,由于没有虚拟网络的观念,因此整个桥接网络是一个广播网域。换句话说,网桥只需一个过滤数据库来记录所学习到的MAC地址即可。网桥在决定是否转送一个帧时就参考此过滤数据库。但是在虚拟网络的运作环境下,每一个虚拟网络都是一个广播网域,因此可以有一个的过滤数据库。于是虚拟网络网桥定义了两种地址学习模式:

* 共享式虚拟网络学习模式

* 式虚拟网络学习模式

所谓「共享式虚拟网络学习模式」 (Shared VLAN Learning, 简称SVL) 是指一个虚拟网络所学习到的MAC地址可以给其它虚拟网络所使用。而所谓「式虚拟网络学习模式」 (Independent VLAN Learning, 简称IVL) 则是指一个虚拟网络所学习到的MAC地址不可以给其它虚拟网络所使用。

在大部份的情况下,网桥采用SVL或IVL所得到的效果是相同的。但是在某些特殊的网络状态下,为了避免帧转送泛滥,我们必须对网桥的学习模式加以规范。基本上有三种情况需要规范:

连接多个虚拟网络

MAC地址重复

非对称性虚拟网络

图16-16说明一个设备如何将两个虚拟网络连结在一起,并且使用虚拟网络的地址学习成果。结果造成在其它的网桥上必须使用式虚拟网络学习模式。图中假设工作站A及B经由一个「桥接路由器」(Bridge-Router) 连结起来,中间则有一个虚拟网桥(VLAN-aware Bridge)。为方便起见,我们称此桥接路由器为「连接器」(Connector)。在此例中,假设连接器没有激活扩张树算法,因此虚拟网桥没有试着去消除回路。由于此虚拟网桥的所有连接端口都设定为传送无标签帧,因此连接器事实上扮演着将两个虚拟网络连结在一起的角色。由于连接器本身不认识虚拟网络因此将所学习到的地址A及B放在同一个过滤数据库中。连接器知道工作站A应该隶属于连接端口X。如此可以提供过滤信息以避免虚拟网络Red中欲传送给工作站A的帧经由连接器的端口Y被转送至虚拟网络Blue。

首先假设工作站A传送一笔帧给工作站B。由于工作站A本身也没有虚拟网络的观念,因此其帧以没贴标签的方式进入网桥。由于网桥已经设定该连接端口的PVID = Red, 因此该帧属于虚拟网络Red,同时网桥学习到工作站A隶属于此虚拟网络的连接端口1。网桥的转送程序在查阅成员集合 (Member Sets) 与无标签集合 (Untagged Sets) 后, 发现属于虚拟网络Red的帧应该由连接端口3以无标签的方式传送出去。网桥于是将此帧转送出去。连接器收到此帧后发现它并不认识工作站B,于是由其连接端口Y转送出去。同时学习到工作站A隶属于其连接端口X。此帧以没贴标签的方式进入网桥。由于网桥已经设定该连接端口的PVID = Blue, 因此该帧属于虚拟网络Blue,同时网桥学习到工作站A隶属于此虚拟网络的连接端口4。网桥的转送程序在查阅成员集合与无标签集合后, 发现属于虚拟网络Blue的帧应该由连接端口2以无标签的方式传送出去。网桥于是将此帧转送给工作站B。

相同的,当工作站B回送一笔帧给工作站A时,其帧也以没贴标签的方式进入网桥。由于网桥已经设定该连接端口的PVID = Blue, 因此该帧属于虚拟网络Blue,同时网桥学习到工作站B隶属于此虚拟网络的连接端口2。网桥的转送程序在查阅成员集合 (Member Sets) 与无标签集合 (Untagged Sets) 后, 发现属于虚拟网络Blue的帧应该由连接端口4以无标签的方式传送出去。网桥于是将此帧转送出去。连接器收到此帧后发现工作站A应该由其连接端口X转送出去。同时学习到工作站B隶属于其连接端口Y。此帧以没贴标签的方式进入网桥。由于网桥已经设定该连接端口的PVID = Red, 因此该帧属于虚拟网络Red,同时网桥学习到工作站B隶属于此虚拟网络的连接端口3。网桥的转送程序在查阅成员集合与无标签集合后, 发现属于虚拟网络Red的帧应该由连接端口1以无标签的方式传送出去。网桥于是将此帧转送给工作站A。

在此网络状态下,此虚拟网桥就应该让两个虚拟网络各自学习。否则工作站A及B的地址会轮流的被认为隶属于对角的连接端口。例如原来工作站A隶属于连接端口1, 但是其帧如果被连接器转送并且由此网桥的连接端口4进入时,又会被重新学习为隶属于连接端口4。如此不断的交替,将造成严重的错误。虚拟网络各自学习则可以避免此问题。

图16-16 虚拟网络学习范例 (一)

另外一个需要虚拟网络学习的例子如图16-17所示。图中假设连接器也认识虚拟网络(VLAN-aware protocol sensitive Bridge-Router), 而且纸船送或接收贴标签之帧。首先假设工作站A及B分别传送一笔帧给连接器。由于工作站A(B)本身没有虚拟网络的观念,因此其帧以没贴标签的方式进入网桥。由于网桥已经设定该连接端口的PVID = Red (Blue), 因此该帧属于虚拟网络Red(Blue),同时网桥学习到工作站A(B) 隶属于此虚拟网络的连接端口1(2)。网桥的转送程序在查阅成员集合 (Member Sets) 与无标签集合 (Untagged Sets) 后, 发现属于虚拟网络Red (Blue) 的帧应该由连接端口3以贴标签的方式传送出去。网桥于是将此帧转送出去。连接器收到此贴标签帧, 虚拟网络为Red (Blue) 后学习到工作站A(B) 隶属于其连接端口1。

假设此时工作站A传送一笔帧给工作站B。此帧由网桥的连接端口3以贴标签的方式传送出去。连接器收到此贴标签帧(虚拟网络为 Red)后发现其目的地工作站B隶属于另外一个虚拟网络Blue。由于连接器采用共享式学习,因此由过滤数据库中可得知工作站B隶属于连接端口1。此帧以贴上虚拟网络Blue的标签进入网桥。由于网桥已经取消该连接端口的PVID设定(以帧所携带的标签为主),因此该帧属于虚拟网络Blue,同时网桥学习到工作站A隶属于此虚拟网络的连接端口3。网桥的转送程序在查阅成员集合与无标签集合后, 发现属于虚拟网络Blue的帧应该由连接端口2以无标签的方式传送出去。网桥于是将此帧的标签去掉后转送给工作站B。

相同的,当工作站B回送一笔帧给工作站A时,其帧也以没贴标签的方式进入网桥。此帧由网桥的连接端口3以贴标签的方式传送出去。连接器收到此贴标签帧(虚拟网络为 Blue)后发现其目的地工作站A隶属于另外一个虚拟网络Red。由于连接器采用共享式学习,因此由过滤数据库中可得知工作站A隶属于连接端口1。此帧以贴上虚拟网络Red的标签进入网桥。由于网桥已经取消该连接端口的PVID设定(以帧所携带的标签为主),因此该帧属于虚拟网络Red,同时网桥学习到工作站B隶属于此虚拟网络的连接端口3。网桥的转送程序在查阅成员集合与无标签集合后, 发现属于虚拟网络Red的帧应该由连接端口2以无标签的方式传送出去。网桥于是将此帧的标签去掉后转送给工作站A。

在此例中,如果虚拟网桥采用共享式学习模式,则工作站A及B都会被认为是隶属于连接端口3,之后的通讯可能会造成不正常的过滤,影响通讯。

图16-17 虚拟网络学习范例 (二)

另外一个需要式虚拟网络学习的极端例子发生在两个不同的工作站使用相同的MAC地址,或一部工作站同时连接在多个局域网络区段上,但每一个网络适配卡使用相同的MAC地址,如图16-18所示。图中之工作站使用相同的MAC地址X与服务器通讯。如果网桥采用共享式学习模式(使用相同的过滤数据库),则MAC地址X会一下子隶属于连接端口1, 一下子又隶属于连接端口2, 端看最后传送帧的工作站是A或B。如此将严重的影响到工作站与服务器间的通讯(服务器应该传给工作站A的帧会被转送到工作站B,或相反)。在这种架构之下,只有采用式虚拟网络学习模式。

图16-18 虚拟网络学习范例 (三)

需要共享式虚拟网络学习的例子发生在非对称性的使用虚拟网络。在正常的情况下,属于同一个虚拟网络的两个工作站A及B在彼此通讯时,都会使用相同的VID。但是在某些情况下,使用两个虚拟网络反而更方便。工作站A传送给工作站B时用一个虚拟网络,工作站B传送给工作站A时用另外一个虚拟网络。这就是所谓的「非对称性虚拟网络」(Asymmetric VLANs)的概念。 如图16-19所示,假设服务器与工作站都不认识虚拟网络,因此帧都以无标签的方式传送。为了达到工作站A与B都能与服务器通讯,但彼此不能通讯的特殊目的(基于某种安全理由),此例中规画了三个虚拟网络:虚拟网络Purple (服务器 -> 工作站A/B), 虚拟网络Red (工作站A  -> 服务器), 虚拟网络Blue (工作站B -> 服务器)。

工作站A(B) 经由连接端口1 (2)传送未贴标签帧给服务器。由于网桥已经设定该连接端口的PVID = Red (Blue), 因此该帧属于虚拟网络Red(Blue),同时网桥学习到工作站A(B)隶属于此虚拟网络的连接端口1(2)。网桥的转送程序在查阅成员集合与无标签集合后, 发现属于虚拟网络Red(Blue)的帧应该由连接端口3以无标签的方式传送出去。网桥于是将此帧转送出去。

服务器则经由连接端口3传送未贴标签帧给传送帧给工作站A(B)。由于网桥已经设定该连接端口的PVID = Purple, 因此该帧属于虚拟网络Purple,同时网桥学习到服务器隶属于此虚拟网络的连接端口3。网桥的转送程序在查阅成员集合与无标签集合后, 发现属于虚拟网络Purple的帧可以由连接端口1,2 以无标签的方式传送出去。在查阅共享式过滤数据库后可发现工作站A(B)隶属于连接端口1(2)。网桥于是将传送给工作站A(B)的帧经由连接端口1(2) 转送出去。

此网络状态下,此虚拟网桥就应该使用共享式学习模式 (Purple, Red, Blue共享)。如果虚拟网络Purple与虚拟网络Red之过滤数据库不共享,则当服务器欲给工作站A的响应帧到达网桥时会因为找不到工作站A的隶属端口而将之同时转送给工作站A及B,如此违反工作站间不通讯的要求。相反的,虚拟网络Purple与虚拟网络Red之过滤数据库共享,则此响应帧只会转送给工作站A。服务器与工作站B的通讯方式也相同。

为了能支持这种特殊的状态设定,此网桥应该是一种SVL网桥,或SVL/IVL网桥。

图16-19 虚拟网络共享学习范例 (非对称性虚拟网络) 

3.4过滤数据库

过滤数据库主要支持转送程序的查询,以便决定具有特定MAC地址与VID的帧应该往哪些连接端口转送。过滤数据库的内容主要包含两种过滤信息:(1) 静态过滤信息 (static), 经由管理程序设定,(2) 动态过滤信息 (dynamic), 经由网桥的运作而加入过滤数据库中。

静态过滤信息有两种项目型态:静态过滤项目 (Static Filtering Entry),静态虚拟网络注册项目(Static VLAN Registration Entry)。

动态过滤信息则有三种项目型态:动态过滤项目 (Dynamic Filtering Entry),群体注册项目 (Group Registration Entry),动态虚拟网络注册项目(Dynamic VLAN Registration Entry)。

静态过滤项目 

一个静态过滤项目包含:(1) 一个MAC地址, (2) VID, (3) 连接端口对应图 (port map), 如表16-3所示。其中 MAC地址可以是一个个别型MAC地址 (Individual MAC address), 或一个群体MAC地址 (Group MAC address), 或所有群体MAC地址 (All Group addresses), 或所有未注册的群体MAC地址 (All Unregistered Group addresses)。

在此出现的「所有群体MAC地址」 (All Group addresses) 或「所有未注册的群体MAC地址」 (All Unregistered Group addresses) 具有唯一性。也就是说它们不能再有「静态过滤项目」存在过滤数据库中。

在连接端口对应图 (port map)中,针对每一个输出连接端口都有一个「控制组件」(Control element),此组件指出具有上述MAC地址与VID的帧应该被无条件的转送致该输出端口(Forwarded), 与动态过滤信息无关, 或无条件的过滤(Filtered), 与动态过滤信息无关, 或依据动态过滤信息来决定转送或过滤。如果没有该MAC地址的动态过滤信息,则依据该输出端口的预设群体过滤信息来决定。

所有网桥都应该有能力处理上述的前两种MAC地址,及控制组件的三种功能。支持「扩充过滤服务」(Extended Filtering Services) 网桥则应该有能力处理上述的四种MAC地址,及控制组件的三种功能。

表16-3静态过滤项目格式

MAC地址

虚拟网络 标识码

连接端口对应图
MACa

2        
MACb

3        
MACc

3        
MACd

2        
MACe

4        
控制组件 

静态虚拟网络注册项目

一个静态虚拟网络注册项目包含:(1) VID, (2) 连接端口对应图 (port map), 如表16-4所示。其中VID是该虚拟网络的标识码。连接端口对应图中,针对每一个输出连接端口都有一个「控制组件」,此组件指出GVRP通讯协议对该虚拟网络的「注册控制」(Registrar Administrative Control) 值。这些值除了提供GVRP通讯协议的运作控制外,也可能影响网桥的转送行为。可能的注册控制值有:

固定注册 (Registration Fixed), 表示该虚拟网络在此连接端口固定注册,无论虚拟网络的成员是否真的存在此连接端口所连接的网络上。固定注册属于管理上的特殊用途,必须经由管理程序设定。

禁止注册 (Registration Forbidden), 表示禁止该虚拟网络在此连接端口注册,无论虚拟网络的成员是否真的存在此连接端口所连接的网络上。禁止注册也属于管理上的特殊用途,必须经由管理程序设定。

正常注册 (Normal Registration), 表示该虚拟网络可以经由GVRP通讯协议的注册服务在此连接端口注册。传送给该虚拟网络的帧在经由此连接端口转送时应该贴上标签(Tagged) 或无标签 (Untagged)。

所有网桥都应该有能力处理静态虚拟网络注册项目中控制组件的所有可能值。

表16-4静态虚拟网络注册项目格式

虚拟网络 标识码

连接端口对应图
2        
3        
4        
5        
6        
控制组件

动态过滤项目

一个动态过滤项目包含:(1) 一个个别型MAC地址, (2) 过滤标识码(FID), (3) 连接端口对应图, 如表16-5所示。其中FID是由网桥所填入的,此标识码代表一个虚拟网络标识码的集合。针对一个个别型的MAC地址,在这些虚拟网络所对应的过滤数据库中最多只能有一个动态过滤项目。也就是说,这些虚拟网络所学习的地址信息是共享的。事实上,一个FID就代表一组彼此共享地址学习成果的虚拟网络。而任何一对FID就代表两组彼此不共享地址学习成果的虚拟网络。

连接端口对应图则指出具有上述MAC地址(非组播帧)与FID的帧应该被转送至哪一个连接端口。由于连接端口对应图事实上只包含一个连接端口值,此字段的意义与传统过滤数据库中的隶属端口功能相同。

动态过滤项目是由「学习程序」(learning process) 负责产生与维护。不能经由管理程序来设定。一个动态过滤项目如果经过一段时间 (aging time,建议值为300秒) 没有被更新过,则该项目应该被删除。针对任何 (MAC地址,FID) 的配对,过滤数据库中则最多只能存在一个动态过滤项目。

表16-5动态过滤项目格式

MAC地址

FID连接端口对应图登录时间
MACa

2        200
MACa

3        120
MACb

3        100
MACb

2        250
MACc

4        60
群体注册项目 

一个群体注册项目包含:(1) 一个MAC地址, (2) VID, (3) 连接端口对应图 (port map), 如表16-6所示。其中 MAC地址可以是一个群体MAC地址 (Group MAC address), 或所有群体MAC地址 (All Group addresses), 或所有未注册的群体MAC地址 (All Unregistered Group addresses)。

在此出现的「所有群体MAC地址」 (All Group addresses) 或「所有未注册的群体MAC地址」 (All Unregistered Group addresses) 具有唯一性。也就是说它们不能再有「静态过滤项目」存在过滤数据库中。

VID是指在「动态虚拟网络注册项目」中已注册过的虚拟网络的标识码。在连接端口对应图中,针对每一个输出连接端口都有一个「控制组件」,此组件指出具有上述MAC地址与VID的帧应该被转送至该输出端口(Registered )或过滤掉(Not registered)。

群体注册项目是由GMRP通讯协议来负责产生,修改,与删除的,不能经由管理程序来设定。针对任何 (MAC地址,VID) 的配对,过滤数据库中则最多只能存在一个群体注册项目。

表16-6群体注册项目格式

MAC地址

虚拟网络 标识码

连接端口对应图
MACa

2        
MACa

3        
MACc

4        
MACd

5        
MACe

6        
控制组件 

动态虚拟网络注册项目

一个动态虚拟网络注册项目包含:(1) VID, (2) 连接端口对应图 (port map), 如表16-7所示。其中VID是该虚拟网络的标识码。连接端口对应图中,针对每一个输出连接端口都有一个「控制组件」,此组件指出该虚拟网络是否已在该连接端口注册。

表16-7动态虚拟网络注册项目格式

虚拟网络 标识码

连接端口对应图
2        
3        
4        
5        
6        
控制组件 

文档

网桥(Bridges) 802.1Q

网桥(Bridges)1简介网桥用来连接二个或多个相同或不相同类型的局域网络。如图15-1所示为连接二个局域网络A及B的网桥范例。此网桥必须接收所有在网络A上传送的帧,然后根据帧上的目的地地址(DestinationAddress,DA)来决定是否要将帧转发到网络B。如果DA也是在网络A上则表示此帧是在网络A内部传送的帧,因此网桥就将此帧丢掉而不让它进入网络B,以避免浪费网络B的带宽。如果该DA是在网络B上,则网桥必须利用网络B的通讯协议在适当的时机将此帧转发进网络B。换句话说,网桥必须具备有
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top