交换机、路由器、网桥和局域网/网桥
一位读者要求改进本书的格式和布局。 良好的格式使书籍更容易阅读,并为读者带来更多兴趣。有关想法,请参阅维基文本编辑,有关优秀书籍示例,请参阅WB:FB。 请继续编辑此书并改进格式,即使此消息已被删除。有关当前进度,请参阅讨论页。 |
“用于将两个独立的以太网网络连接成一个扩展的以太网的设备。网桥只转发发往另一个网络的数据包。Novell 公司使用此术语来表示接收网络层数据包并将其转发到另一个网络的计算机。”
网桥在某些网络中很重要,因为这些网络在地理位置上被分成许多部分。需要一些东西来连接这些网络,以便它们可以成为整个网络的一部分。例如,一个分割的局域网,如果没有任何介质来连接这些分离的局域网部分,那么企业在增长潜力方面可能会受到限制。网桥是连接这些局域网的工具之一。
其次,局域网(例如以太网)在其传输距离方面可能受到限制。我们可以使用网桥作为中继器来消除这个问题,这样我们就可以使用网桥连接建筑物或校园内地理位置广泛的网络。因此,可以使用网桥创建地理位置受限的网络。
第三,网络管理员可以控制通过网桥发送到昂贵的网络介质上的流量数量。
第四,网桥是即插即用设备,因此无需配置网桥。假设从网络中取出了任何机器,那么网络管理员也不需要更新网桥配置信息,因为网桥是自配置的。它还简化了数据传输,这对数据传输非常有用。
网桥用于连接局域网。因此,在确定如何传输局域网之间的数据包时,它们使用目标 MAC 地址。网桥将网络层的功能,例如路由发现和转发,推送到数据链路层。网桥没有传统的网络层。
在接收错误的情况下,网桥无法维护数据传输的完整性。例如,假设某个帧中存在错误,并且该帧没有正确传输,网桥不会发出任何确认来重新传输该帧。如果网桥变得拥塞,帧可能会被丢弃以使流量更顺畅。另一方面,网桥易于实现,并且无需配置它们。
- 透明基本网桥
- 源路由网桥
- 透明学习网桥
- 透明生成树网桥
最简单的网桥类型是透明基本网桥。它存储数据包,直到能够将其传输到下一个网络。数据存储的时间非常短暂。数据包被发送到所有端口,除了接收数据包的端口。网桥不会对数据包进行任何转换。在这方面,网桥类似于中继器。
通过局域网互联网的路由是由数据包的源头(发起者)决定的,因此这种网桥被称为源路由网桥。局域网帧头中的路由信息字段 (RIF) 包含局域网网络所遵循的路由信息。
必须通过路由信息标识接收和发送帧所需的中间节点。出于这个原因,源路由需要用户数据包遵循路由信息字段所确定的路径。
源路由协议的帧与其他网桥帧不同,因为源路由信息必须包含在帧中。其他网桥和源路由网桥的体系结构类似。两者都在局域网节点上使用 MAC 中继实体。通过 MAC 中继实体和 LLC 提供接口。
上面的图显示了源路由网桥的功能体系结构。有两个基元在 MAC 实体和 LLC 之间调用。第一个是 M_UNITDATA.request,第二个是 M_UNITDATA.indication
这些基元中的参数必须提供有关创建帧(帧控制)、MAC 地址、用于通过局域网转发数据包的路由信息的信息。如果要执行帧校验序列操作,则应包含帧校验序列值。该基元还包含用户优先级参数、数据参数和服务类别参数。用户参数和服务类别参数仅在令牌环中使用,而不会用于其他局域网,例如以太网或令牌总线。
透明网桥使用源地址和目标地址查找用户的地址。当帧到达网桥时,它会检查其源地址和目标地址。如果目标地址未在路由表中找到,则将其存储。然后,帧被发送到所有局域网,除了它来自的局域网。源地址也存储在路由表中。如果另一帧到达,其中先前的源地址现在是其目标地址,则它将被转发到该端口。
透明网桥的物理拓扑结构不允许网络中出现环路。这是对透明学习网桥的限制。该网桥的整个操作由网桥处理器完成,该处理器负责跨其端口路由流量。处理器通过访问路由数据库来决定关联 MAC 地址的目标端口。当帧到达时,处理器将检查数据库中的输出端口,帧将在该端口上中继。如果目标地址不在数据库中,则处理器将广播该帧到所有端口,除了帧来自的端口。网桥处理器还会存储帧中的源地址,因为该源地址可能是另一个传入帧的目标地址。
桥接器会按照上图所示处理传入帧。桥接器会检查传入帧的源地址和目标地址。在本例中,源地址为“B”,目标地址为“A”。在访问其路由表后,它发现目标地址不在数据库中,并将其广播到所有传出端口,但来源端口除外。转发帧后,它将检查 SA(源地址)并确认它是否知道它。如果 SA 在数据库中,它将刷新数据库并更新此条目,通过刷新计时器意味着此地址仍然“及时有效”。在所示示例中,它不知道“B”的 SA。它将“B”存储到数据库中,表明“B”是 LAN 上的一个活动站点,从桥接器的角度来看,“B”可以在端口 1 上找到。
如图所示,一个帧从端口 3 到达桥接器,DA(目标地址)为“B”,SA(源地址)为 C。桥接器将访问其数据库并检查目标地址是否存在。桥接器找到目标端口并确定“B”可以通过其端口 1 访问。该决定来自之前的一次操作,其中一个帧从端口 1 到达,SA = 'B' 和 DA = 'A'。此源地址成为此帧的目标地址。因此,桥接器知道确切的目标端口号。这次桥接器不会广播帧,因为它知道 DA。它会将帧转发到端口 1,而不是端口 2。桥接器还在其路由表中存储了 SA 'C' 可以通过端口 3 访问的信息。此信息将在接下来的帧中很有用。学习型桥接器假设在传入端口上接收的帧已由其他桥接器和 LAN 正确传递,因此它不会将帧转发到它到达的端口。学习型桥接器完全基于信任。
在某些情况下,桥接器不会将帧转发到任何端口。如图 5 所示,可以实现完全过滤。一个帧从端口 1 到达桥接器,SA = 'D',DA = 'B'。桥接器将访问其数据库并检查 SA 和 DA,发现 DA = 'B' 可以从端口 1 找到。帧来自同一个端口,因此它不会将该帧转发到端口 2 或端口 3,也不会向后转发到端口 1。它还会检查 SA 是否存在于数据库中。SA = 'D' 不在数据库中,因此它将此条目添加到数据库中,并附加时间。
学习型桥接器允许组播和广播。如图所示,一个帧从端口 1 到达,DA = 'ALL'(目标地址字段中的所有 1)和 SA = 'D'。桥接器不会更新其路由表,因为 'D' 已经存在于数据库中。在这个示例中,流量被发送到端口 2 和 3。
图 6 显示了桥接器如何转发和过滤传入帧的示例。从站点“A”到站点“B”的帧不会被桥接器 1 转发,因为它假设流量已使用广播成功从“A”转发到“B”。站点“A”发送到站点“C”的流量必须由桥接器 1 转发,并由桥接器 2 丢弃。而站点“A”发送到站点“D”的流量必须由两个桥接器转发。
下面的流程图显示了学习型桥接器的整体工作逻辑。当桥接器从端口 Z 接收传入帧时,它会在数据库中查找其目标 MAC 地址。如果不存在,桥接器会将该帧广播到所有传出端口,但到达帧的端口除外。如果 DA 存在于数据库中,它会转发帧;否则,如果 DA 是它到达的端口,它会丢弃该帧。然而,如果 DA 不同,它会将帧转发到相应的端口。然后,桥接器会检查 SA 是否存在于数据库中。如果存在,它会刷新计时器,否则它会将 SA 添加到数据库中。
最后一种桥接器是透明生成树桥接器。这些桥接器使用完整拓扑的子网来创建无环操作。下表显示了透明生成树桥接器的逻辑。桥接器会以以下方式检查接收到的帧。将到达帧的目标地址与数据库中的路由表进行检查。这里需要更多信息来帮助桥接器,因此桥接器端口也会被存储在数据库中。此信息被称为端口状态信息,它有助于确定是否可以使用端口来访问此目标地址。端口可以处于阻塞状态以满足生成树操作的要求,或者处于转发状态。如果端口处于转发状态,则帧会被跨端口路由。端口可以具有不同的状态,例如:出于维护原因,它可能处于“禁用”状态,或者如果由于路由网络变化而导致桥接器中数据库发生变化,它也可能暂时不可用。
某些站点使用一对 LAN 之间的两个或多个桥接器并联,以提高网络的可靠性,如图 7 所示。这种安排会在网络中引入一些循环问题。
在上图中,处理了具有未知目标的帧 F。桥接器不知道目标地址,因此两个桥接器都会广播该帧。对于此示例,这意味着将其复制到 LAN 2。之后,桥接器 1 看到帧 F2,它是一个具有未知目标地址的帧,它将其复制到 LAN1,生成另一个不在图中显示的帧 F3。同样,桥接器 2 将帧 F1 复制到 LAN1,生成另一个不在图中显示的帧 F4。桥接器 1 现在转发帧 F4,桥接器 2 复制帧 F3。这个循环周而复始。这就是循环问题出现的原因。
解决此循环问题的方案是,桥接器应彼此通信并使用生成树改变其实际拓扑,生成树可以到达网络中的每个 LAN。在生成树中,网络中的一些桥接器会被丢弃,因为我们想要构建无环拓扑。例如,在下面显示的图中,有 10 个路由器连接 9 个不同的 LAN。此配置可以更改为图 9 中的无环拓扑。这里,LAN 被显示为节点,LAN 通过桥接器连接,桥接器由弧线表示。通过删除虚线表示的弧线,该图可以简化为生成树。现在,从一个 LAN 到另一个 LAN 只有一个路径。这样,循环问题通过生成树解决了,每个源到每个目标只有一个路径。使用生成树 3 可以完全消除循环。
要构建生成树,请按照以下生成树算法进行操作。
- 首先选择根桥接器。根桥接器是序列号最小的桥接器(此号码由路由器制造商提供)。所有进入或离开桥接器的端口都是指定端口。在我们给定的示例中,图中的根桥接器是“A”,来自 LAN 1 和 LAN 2 的端口是指定端口。
- 然后为非根桥接器选择一个根端口。非根桥接器的根端口是到根桥接器路径成本最低的端口。在我们的示例中,进入桥接器“B”的端口是最低成本路径。其他桥接器也采用相同的逻辑。
- 在每个段上选择一个指定端口。指定端口是到根桥接器成本最低的端口。在我们的示例中,来自桥接器“B”的传出端口是指定端口,它到根桥接器的成本最低。其他桥接器也采用相同的逻辑。
- 在生成树算法确定了最低成本生成树后,它会启用所有根端口和指定端口,并禁用所有其他端口。
- 生成树算法在正常操作期间会继续运行。
桥接相对于路由的优势如下所示:
- 透明桥接器是即插即用型的,因为它们是自学习型的,不需要任何配置。对于网络地址分配,路由器需要为每个接口定义地址。这些地址必须是唯一的。
- 与路由相比,桥接处理数据包的开销更少。
- 桥接是协议无关的,而路由是协议相关的。
- 桥接会转发所有 LAN 协议,而路由器只能路由数据包。
配置消息
下图显示了配置消息的格式。它也被称为桥接协议数据单元 (BPDU)。以下参数被设置为零:
- 协议标识符。
- 版本标识符。
- 消息类型。
字节 | 参数 |
---|---|
2 | 协议标识符 |
1 | 协议版本 |
1 | BPDU 类型 |
1 | 标志 |
8 | 根标识符 |
4 | 到根的成本 |
8 | 桥接器标识符 |
2 | 端口标识符 |
2 | 消息年龄 |
2 | 最大年龄 |
2 | Hello 时间 |
2 | 转发延迟 |
根标识符字段包含根桥接器的标识,以及一个 2 字节字段,用于决定根桥接器和指定桥接器的优先级。根路径成本字段指示从发送桥接器到根 ID 字段中列出的桥接器的总成本。
桥接消息中的标志字段包含一个拓扑更改通知标志,用于通知非根桥接器它们应该更新缓存中的站点条目。此字段还可以用于指示拓扑更改通知位。桥接器不需要使用前面的字段通知父桥接器已发生拓扑更改。父桥接器将执行此任务。
桥接器和端口标识符可以指示发送配置消息的桥接器的优先级和 ID。消息年龄字段以 1/256 秒表示时间。Hello 时间字段也以 1/256 秒表示,它定义了根桥接器发送消息之间的时间间隔。转发延迟字段,也以 1/256 秒表示,是端口从阻塞状态转换到转发状态之前应处于中间状态(如学习或侦听)的时间。
桥接器上的每个端口都有一个状态,用于控制其处理接收到的数据包的方式。端口可以正常转发帧,也可以丢弃帧。此外,端口可以选择从它丢弃的帧中学习 MAC 地址(除了从它转发的帧中学习 MAC 地址)。理论上,端口可以在不学习 MAC 地址的情况下转发数据包,但这在实际应用中并不常用。可能的组合被称为以下名称:
- 丢弃
- 不进行转发或学习
- 学习
- 端口学习 MAC 地址,但丢弃帧
- 转发
- 端口学习地址并转发帧
桥接器用于连接两个(或多个)不同的远程局域网。例如,一家公司可能在不同的地点拥有不同的部门,每个部门都有自己的局域网。整个网络应该连接起来,使其像一个大型的局域网一样运作。这可以通过在每个局域网上放置一个桥接器,并用线路(电话公司提供的线路)连接这些桥接器来实现。在图10中,三个局域网通过远程桥接器连接。如图所示,我们可以使用远程桥接器连接多个局域网。
2002年,IEEE 推出了快速生成树协议,它是原始 STP 的扩展,支持在拓扑更改后更快地收敛。新协议需要新的 BPDU 格式,但在识别到普通 STP 桥接器的情况下支持回退到旧格式。这意味着 STP 协议本身不再需要,并在 2004 年发布的 802.1D 标准中被弃用。