大多数到 VSI 的 QinQ 切换失败都是由两次失败造成的,并且没有一次失败显示为关闭接口。要么入口端口在分类可以看到客户标签之前将其吃掉,要么连接电路绑定到远端从未加入的 VSI。从客户角度来看,两者看起来相同:电路报告正常且没有帧交叉。按顺序完成下面的四项检查,并在您观察到的帧与您写下的帧不同的第一个检查处停止。

在触摸设备之前记下标签堆栈

选择一项代表性服务并将其描述为框架,而不是配置。对于将客户 VLAN 100 和 200 保留在提供商 VLAN 900 内的服务,合同很短:入口帧携带一个客户标签,提供商添加一个服务标签,而客户自己的标签在下面保持不变。

customer to provider:  [ C-tag 100 | payload ]
provider inside:       [ S-tag 900 ][ C-tag 100 | payload ]
provider to customer:  [ C-tag 100 | payload ]

还要写下返回方向,因为仅描述入口的合约将通过单向测试并在生产中失败。远端必须向客户提供客户期望的帧,这意味着它自己的弹出操作必须与您的推送完全相反。该描述中任何不对称的内容都是您尚未做出的设计决策。

首先检查入口匹配

分类发生在任何标签操作之前,并且只能匹配到达的内容。确认端口是否配置为接入、中继或混合、它接受哪些帧类型以及端口 VLAN 标识符对未标记帧的作用。在访问端口上,客户标签在到达时被剥离,因此匹配 C 标签 100 的后续规则没有任何内容可匹配,并且服务会毫无错误地加入错误的广播域。

提供者端的捕获可以在几秒钟内解决此问题:正确分类的QinQ帧显示两个标签,而单标签帧则意味着内部标签已被消耗。

检查标签操作实际执行的操作

堆叠和转换是不同的操作,平台将它们公开为不同的对象。堆叠会推送外部标签并保留内部标签,这正是上面的合约所需要的。翻译将一个标签重写为另一个标签,这是一种有效的设计,但会在线路上产生不同的帧。有些系列还需要在堆叠规则生效之前在端口上显式启用QinQ,并且外部TPID可以在802.1Q和802.1ad值之间配置。

返回路径同样值得关注。如果出口规则在一个子接口上弹出外部标记,但另一子接口携带没有匹配规则的回复,则客户会看到工作传输和无效接收。

检查服务绑定,而不是接口编号

VSI 由其自己的服务和虚电路标识符来标识,并且对等方必须在伪线形成之前使用匹配的值。然后,连接电路将该 VSI 绑定到特定端口和 VLAN,这是与对帧进行分类的规则分开的语句。看起来正确的子接口编号并不能证明任何绑定的情况。

分别检查伪线状态和附着电路状态,并检查承载伪线的信令会话。这三个中的两个可能是健康的,而第三个则不是,而下降的一个会告诉您要修复哪一侧。

隔离是一个单独的承诺。在一个 VSI 内保持客户标签完整不会将客户彼此分开,因为 MAC 学习跨越整个实例;如果合同规定隔离,则需要单独的实例或明确的每 VLAN 策略。

检查尺寸预算,然后证明合同

外部标签添加四个字节,伪线封装添加标签堆栈,并且可能在其顶部添加控制字。将所有这些都放入两个提供商边缘设备上的 MTU 和 MRU 预算中,并且不要纯粹为了消除大小警告而关闭控制字,因为远端可能需要它。保持不依赖于您要更改的服务的管理路径。

然后在客户连接处测试三种情况:双向第一个允许的 C-VLAN、第二个允许的 C-VLAN 以及合同规定必须拒绝的 VLAN。观察帧而不是读取界面状态,并在标记规则发生任何更改后重复。

向上的 VSI 仅表示伪线已形成。它没有说明穿过它的框架是否是客户付费的框架。

相关文章