一个 IOS XR 组中的两个网桥域不是一个 LAN
把一个网桥组下的两个网桥域嵌套在一起并不会合并它们的转发。请把组、域和每个接入点当作相互独立的层次来读。
同一台 IOS XR 路由器上的两台主机互相 ping 不通,而配置看起来本应能通。两个子接口都出现在同一个网桥组下,名字只差一个字母,提交也没有报任何错。缺少的是层次结构中的一层:网桥组只是一个容器,其中的每个网桥域都是拥有自己成员关系的独立广播域。再加上第三台主机,情况通常只会更糟,而不会更清楚。
| Object | Owns | Does not own |
|---|---|---|
| Bridge group | a named container for domains | any forwarding or MAC learning |
| Bridge domain | one broadcast domain, MAC table, flooding scope | the VLAN match on an ingress port |
| Attachment | which frames from which interface and tag enter the domain | which other domains they can reach |
从现象出发,向上阅读
接口显示 up、ARP 表项却始终不填充,而主机在同一子网内不通,这是域成员关系问题的特征,而不是路由问题。路由问题通常会给你一个 ICMP unreachable 或一个确实存在的下一跳;缺少广播域只会给你第二层的沉默。在查看任何一个 IP 地址之前,先检查两个接入点是否在同一个网桥域中。如果不在,再多的地址规划也无法把它们连起来。
网桥组只是一个容器,仅此而已
在 IOS XR 的第 2 层 VPN 层次中,一个网桥组包含一个或多个网桥域,而组本身不做任何交换。同一个组下的两个域是兄弟关系,而不是同一个 LAN 的成员,尽管配置读起来像是嵌套的。这种安排是刻意的:组是你组织服务的地方,域才是转发真正发生的地方。
Cisco 的第 2 层多点服务指南把网桥域描述为一个广播域,它持有物理或虚拟端口,按目的 MAC 交换,学习源地址,并且只在该域内泛洪未知单播、广播和组播。在读自己的配置之前,先读那份指南里的层次说明。
网桥域拥有转发和学习
MAC 学习的作用范围限于该域,因此在一个域中学到的站点在兄弟域中不可见。泛洪遵循同一边界,所以一台主机发出的广播永远到不了另一个域中的主机。域内的水平分割组、成员状态以及任何已配置的转发控制会进一步收窄合格的输出。
伪线或虚拟转发实例是通向某个域的服务接入。它不是父网桥组的同义词,而把它当作同义词,正是提供商边缘最终带着 两个本应隔离的服务 却没有隔离的原因。
接入点决定哪些帧能进来
域之下是接入点:接口或子接口、它匹配的封装、任何标签操作,以及它加入的域。编号碰巧看起来像 VLAN 的子接口并不是帧契约,同一个物理端口可以用两种不同的匹配为两个域供流。写下入方向接口、匹配的标签、标签动作和目标域,然后单独写出去方向的一侧。
在搬动配置之前,先在两个服务之间比较这份契约。当两个域位于同一个组下、而只有其中一个承载流量时,差异几乎总在接入点,而不在域上。
如果设计还要在子网之间路由,第 3 层接入点就是另一个对象,有自己的网关地址和策略。网桥域的名字并不能说明是哪个网关在为它服务。
在重新组织之前,用已部署的版本进行核实
用该版本自带的运行命令来查看域,而不是查看运行中的配置。show l2vpn bridge-domain detail 会报告各个域及其接入状态,带 MAC 选项的 show l2vpn forwarding bridge-domain 则显示在何处学到了什么。如果一个 MAC 地址出现在一个域中而没有出现在兄弟域中,那么这套层次正是按配置在做事。
然后在改动任何东西之前,先清点组下的每个域和每个接入点,并保留现有配置以便对比。一个熟悉的对象名并不能证明每个嵌套的服务都共享它的作用范围。