配置 MAC 地址以进行第 2 层学习和转发
总结
为桥接域中的逻辑接口配置静态 MAC 地址
您可以手动为桥接域中的逻辑接口添加静态 MAC 条目。您可以为每个逻辑接口指定一个或多个静态 MAC 地址。
要为桥接域中的逻辑接口添加静态 MAC 地址,请在层次结构级别包含 static-mac mac-address
该语句 [edit bridge-domains bridge-domain-name bridge-options interface interface-name]
。
[edit] bridge-domains { bridge-domain-name { domain-type bridge; bridge-options { interface interface-name { static-mac mac-address { <vlan-id number>; } } } } }
您可以选择使用该 vlan-id
语句为静态 MAC 地址指定 VLAN 标识符。要为静态 MAC 地址指定 VLAN 标识符,必须在为桥接域配置 VLAN 标识符时使用 all 选项。
如果为逻辑接口配置的静态 MAC 地址出现在其他逻辑接口上,则发送到该接口的数据包将被丢弃。
配置桥接域的 MAC 地址表的大小
您可以修改每个网桥域的 MAC 地址表的大小。默认表大小为 5120 个地址。最小可配置为 16 个地址,最大为 1,048,575 个地址。
如果达到 MAC 表限制,则无法再向表中添加新地址。未使用的 MAC 地址会自动从 MAC 地址表中删除。这将释放表中的空间,允许添加新条目。
要修改 MAC 表的大小,请在层次结构级别包含 mac-table-size limit
语句 [edit bridge-domains bridge-domain-name bridge-options]
:
[edit] bridge-domains { bridge-domain-name { domain-type bridge; bridge-options { mac-table-size limit { packet-action drop; } } } }
限制从桥接域中的接口获知的 MAC 地址
您可以配置从特定桥接域或属于桥接域的特定逻辑接口获知的 MAC 地址数限制。
要配置从桥接域中的每个逻辑接口获知的 MAC 地址数量限制,请在层次结构级别包含interface-mac-limit limit
[edit bridge-domains bridge-domain-name bridge-options]
语句:
[edit] bridge-domains { bridge-domain-name { domain-type bridge; interface interface-name; bridge-options { interface-mac-limit limit; } } }
要限制从桥接域或整个桥接域中的特定逻辑接口获知的 MAC 地址数,请在或[edit bridge-domains bridge-domain-name bridge-options]
层次结构级别包含interface-mac-limit limit
[edit bridge-domains bridge-domain-name bridge-options interface interface-name]
以下语句:
[edit] bridge-domains { bridge-domain-name { domain-type bridge; interface interface-name; bridge-options { interface-mac-limit limit{ packet-action drop; } interface interface-name { interface-mac-limit limit{ packet-action drop; } } } } }
对于接入端口,可在接入端口上获知的最大 MAC 地址数的默认限制为 1024。由于访问端口只能在网络拓扑中的一个网桥域中配置,因此默认限制为 1024 个地址,这与在桥接域中的逻辑接口上获知的 MAC 地址限制相同(通过在或[edit bridge-domains bridge-domain-name bridge-options]
层次结构级别包含interface-mac-limit limit
[edit bridge-domains bridge-domain-name bridge-options interface interface-name]
语句进行配置)。
对于中继端口,中继端口上可获知的最大 MAC 地址数的默认限制为 8192。由于中继端口可以与多个新娘域关联,因此默认限制与在虚拟交换机实例中的逻辑接口上获知的 MAC 地址限制相同(通过在虚拟[edit routing-instances routing-instance-name switch- options interface interface-name]
交换机实例中包含语句进行配置)。interface-mac-limit limit
您为特定逻辑接口配置的值将覆盖您在层次结构级别为 [edit bridge-domains bridge-domain-name bridge-options]
整个桥域指定的任何值。
可在逻辑接口上获知的 MAC 地址数的默认限制为 1024。您可以为特定逻辑接口配置的范围是 1 到 131,071。
达到 MAC 地址限制后,默认设置是转发具有新源 MAC 地址的任何传入数据包。您可以通过包含 packet-action drop
语句来指定丢弃数据包。要指定丢弃整个网桥域的数据包,请在层次结构级别包含 packet-action drop
以下语句 [edit bridge-domains bridge-domain-name bridge-options interface-mac-limit limit]
:
[edit bridge-domains bridge-domain-name bridge-options interface-mac-limit limit] packet-action drop;
要指定为桥接域中的特定逻辑接口丢弃数据包,请在层次结构级别包含 packet-action drop
以下语句 [edit bridge-domains bridge-domain-name bridge-options interface interface-name interface-mac-limit limit]
:
[edit bridge-domains bridge-domain-name bridge-options interface interface-name interface-mac-limit limit] packet-action drop;
某些配置的行为有所不同。对于聚合以太网接口和标签交换接口,行为是学习所有新的 MAC 地址,即使已达到限制。多余的地址稍后会被删除。学习限制不适用于桥接域中继端口,因为它们没有针对各个域的计数器,并且这些域可能具有不同的 MAC 学习限制。
配置静态 MAC 地址时,学习限制为配置的限制减去静态地址数。
在运行 Junos OS 8.4 版及更高版本的 MX 系列路由器上,不会保留过期目标 MAC 条目的统计信息。此外,在 MAC 移动期间,源和目标统计信息会重置。在以前的版本中,在 MAC 移动期间仅重置源统计信息。
您还可以配置 MX 系列路由器获知的 MAC 地址数限制。
在逻辑接口上配置 MAC 地址限制
您可以配置从特定逻辑接口获知的 MAC 地址数量限制。此功能允许 MAC 地址表空间分布在不同的逻辑接口之间,从而避免拥塞。MAC 地址限制可同时应用于 VLAN 和 VPLS 路由实例,默认情况下,MAC 地址限制取决于配置的配置文件。您可以限制同时为桥接域和逻辑接口获知的 MAC 地址数。
配置 MAC 地址限制
您可以使用 CLI 命令配置 set protocols l2-learning global-no-hw-mac-learning
MAC 地址限制。
在 ACX 系列路由器上,MAC 地址限制仅在ACX5000系列路由器上受支持。
以下配置示例允许限制逻辑接口上的 MAC 地址学习:
[edit protocols] l2-learning { global-no-hw-mac-learning; }
您可以配置从 MX 系列路由器上的逻辑接口获知的 MAC 地址数量限制。
要配置可从逻辑接口获知的 MAC 地址总数的限制,请在 [edit protocols l2-learning
] 层次结构级别包含global-mac-limit limit
语句:
整个路由器可以获知的 MAC 地址数的默认限制为 393,215。可以为整个路由器配置的范围是 20 到 1,048,575。
达到配置的 MAC 地址限制后,默认值为转发数据包。您可以通过在 [edit protocols l2-learning global-mac-limit
] 层次结构级别包含packet-action drop
语句来指定丢弃数据包:
[edit] protocols { l2-learning { global-mac-limit limit { packet-action drop; } } }
为 VLAN 配置 MAC 地址限制
要为 VLAN 中的每个逻辑接口上获知的 MAC 地址数量配置限制,请在 [edit vlans vlan-name
] 层次结构级别包含 interface-mac-limit limit
语句。要限制在 VLAN 的特定逻辑接口上获知的 MAC 地址,请在 [edit vlans vlan-name interface interface-name
] 层次结构级别包含 interface-mac-limit limit
语句。要限制在 VLAN 的每个逻辑接口上获知的 MAC 地址,请在 [edit vlans vlan-name switch-options
] 层次结构级别包含interface-mac-limit limit
语句。
以下示例配置了在 VLAN 中的逻辑接口上获知的 MAC 地址数限制:
[edit vlans] vlan10 { interface ge-0/0/3.1; interface ge-0/0/1.5; switch-options { interface-mac-limit { 10; } } interface ge-0/0/1.5 { interface-mac-limit { 20; } } }
为 VPLS 配置 MAC 地址限制
要为 VPLS 路由实例中的每个逻辑接口上获知的 MAC 地址数量配置限制,请在 [edit routing-instances routing-instance-name protocols vpls
] 层次结构级别包含interface-mac-limit limit
语句。要限制在 VPLS 实例的特定逻辑接口上获知的 MAC 地址,请在 [edit routing-instances routing-instance-name protocols vpls interface interface-name
] 层次结构级别包含interface-mac-limit limit
该语句。
以下是为 VPLS 路由实例中的逻辑接口上获知的 MAC 地址数量配置限制的示例:
[edit routing-instance] v1 { protocols { vpls { interface-mac-limit { 10; } interface ge-0/0/1.3 { interface-mac-limit { 20; } } } } }
如果已为桥接域中的逻辑接口配置了接口 MAC 地址限制,为桥接域配置了全局 MAC 地址限制,则会考虑接口 MAC 地址限制。以下示例显示了在接口 ge-0/0/3.5 上配置的两个 MAC 地址限制,全局值为 50,本地值为 30。在这种情况下,将考虑桥接域中接口 ge-0/0/3.5 的 MAC 地址限制为 30。
vlan20 { interface ge-0/0/1.5; interface ge-0/0/3.5; switch-options { interface-mac-limit { 50; } interface ge-0/0/1.5; interface ge-0/0/3.5 { interface-mac-limit { 30; } } } }
用于配置 MAC 地址限制的 CLI 命令
以下 CLI 命令用于配置 MAC 地址限制:
set protocols l2-learning global-no-hw-mac-learning
- 将基于硬件的 MAC 学习模式更改为基于软件的 MAC 学习模式的命令。set vlans vlan-name switch-options interface-mac-limit limit
— 用于为 VLAN 中的每个逻辑接口配置 MAC 地址限制的命令。此限制适用于属于未配置单独接口 MAC 地址限制的 VLAN 的所有逻辑接口。set vlans vlan-name switch-options interface interface-name interface-mac-limit limit
— 用于为 VLAN 中的逻辑接口配置接口 MAC 地址限制的命令。此限制适用于为其配置该限制的 VLAN 中的特定逻辑接口。set routing-instances routing-instance-name protocols vpls interface-mac-limit limit
— 用于为 VPLS 路由实例中的每个逻辑接口配置 MAC 地址限制的命令。此限制适用于属于未配置单独接口 MAC 地址限制的 VPLS 的所有逻辑接口。set routing-instances routing-instance-name protocols vpls interface interface-name interface-mac-limit limit
— 用于为 VPLS 中的逻辑接口配置接口 MAC 地址限制的命令。此限制适用于为其配置的 VPLS 中的特定逻辑接口。
为路由器或桥接域启用 MAC 记帐
默认情况下,MAC 记帐处于禁用状态。在 MX 系列路由器上,您可以为整个路由器或特定桥接域启用数据包记帐。启用数据包记帐后,Junos OS 会为每个获知的 MAC 地址维护数据包计数器。
要为 MX 系列路由器启用 MAC 计费,请在 [edit protocols l2-learning
] 层次结构级别包含global-mac-statistics
以下语句:
[edit protocols l2-learning] global-mac-statistics;
要为桥接域启用 MAC 记帐,请在层次结构级别包含 mac-statistics
以下语句 [edit bridge-domains bridge-domain-name bridge-options]
:
[edit bridge-domains bridge-domain-name bridge-options] mac-statistics;
禁用桥接域或逻辑接口的 MAC 学习
您可以对指定桥接域中的所有逻辑接口或桥接域中的特定逻辑接口禁用 MAC 学习。禁用动态 MAC 学习会阻止指定接口学习源 MAC 地址。
要对虚拟交换机桥接域中的所有逻辑接口禁用 MAC 学习,请在层次结构级别包含 no-mac-learning
以下语句 [edit bridge-domains bridge-domain-name bridge-options]
:
[edit] bridge-domains { bridge-domain-name { domain-type bridge; interface interface-name; bridge-options { no-mac-learning; } } }
要禁用桥接域中特定逻辑接口的 MAC 学习,请在层次结构级别包含 no-mac-learning
该语句 [edit bridge-domains bridge-domain-name bridge-options interface interface-name]
。
[edit] bridge-domains { bridge-domain-name { domain-type bridge; interface interface-name; bridge-options { interface interface-name { no-mac-learning; } } } }
禁用 MAC 学习时,不会动态学习源 MAC 地址,发送到这些源地址的任何数据包都将大量涌入桥接域。
将接口收集到桥接域中时, no-mac-learn-enable
不支持层次结构级别的语句 [edit interfaces interface-name gigether-options ethernet-switch-profile]
。您必须在 no-mac-learning
层次结构级别使用该 [edit bridge-domains bridge-domain-name bridge-options interface interface-name]
语句来禁用桥接域中接口上的 MAC 学习。
当为 VPLS 路由实例禁用 MAC 学习时,流量不会均衡,只会使用一个等价的下一跃点。
配置 MAC 表超时间隔
MAC 表老化过程可确保路由器仅跟踪网络上的活动 MAC 地址,并能够清除不再使用的地址。
您可以配置 MAC 表老化时间,即条目在“老化”之前可以保留在 MAC 表中的最长时间,在所有桥接域、一个或所有 VPLS 实例或路由器上的一个或所有以太网虚拟专用网络 (EVPN) 实例上。此配置会影响泛洪到所有接口的流量,从而影响网络资源的使用效率,因为当接收到以太网路由表中不再包含的 MAC 地址的流量时,路由器会将流量泛洪到所有接口。
根据您希望 MAC 地址在过期前在 MAC 表中保留多长时间,您可以增加或减少老化计时器。默认情况下,MAC 表中所有条目的超时间隔为 300 秒。您可以修改 MX 系列路由器上 MAC 表条目的超时间隔。您无法修改虚拟交换机的超时间隔。
超时间隔仅适用于动态学习的 MAC 地址。此值不适用于配置的静态 MAC 地址,这些地址永远不会超时。
的范围 seconds 是从 10 到 1,000,000。
您可以修改路由器的超时间隔(在全局级别)或基于每个域(桥接域)。
示例:使用 MAC 移动方法进行环路检测
此示例说明如何使用 MAC 移动方法检测环路。
要求
此示例需要以下硬件和软件组件:
MX 系列 3D 通用边缘路由器
在所有设备上运行的 Junos OS 13.2 版
概述
当 MAC 地址出现在不同的物理接口上或同一物理接口的不同单元中,并且此行为频繁发生时,会将其视为 MAC 移动。
网络中的配置错误可能会迫使流量进入永无止境的循环路径。一旦第 2 层网络中出现环路,其中一个症状就是频繁的 MAC 移动,可用于纠正问题。当观察到源 MAC 地址在端口之间移动时,将根据为接口配置的 action-priority
接口阻止接口。 action-priority
如果为接口配置的值相同,则发生 MAC 地址移动的网桥域的最后一个接口将被阻止。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit]
中。
set interfaces ge-1/0/4 vlan-tagging set interfaces ge-1/0/4 encapsulation flexible-ethernet-services set interfaces ge-1/0/4 unit 10 encapsulation vlan-bridge set interfaces ge-1/0/4 unit 10 vlan-id 10 set interfaces ge-1/0/4 unit 11 encapsulation vlan-bridge set interfaces ge-1/0/4 unit 11 vlan-id 11 set interfaces ge-1/0/5 unit 0 family bridge interface-mode trunk set interfaces ge-1/0/5 unit 0 family bridge vlan-id-list 10-12 set interfaces ge-1/0/6 unit 0 family bridge interface-mode trunk set interfaces ge-1/0/6 unit 0 family bridge vlan-id-list 10-12 set bridge-domains bd10 vlan-id 10 set bridge-domains bd10 enable-mac-move-action set bridge-domains bd10 bridge-options interface ge-1/0/5.0 action-priority 1 set bridge-domains bd10 bridge-options interface ge-1/0/6.0 action-priority 5 set bridge-domains bd11 vlan-id 11 set bridge-domains bd11 enable-mac-move-action set bridge-domains bd12 vlan-id 12
在前面的示例中,将监控所有接口,包括 bd10 和 bd11 中的中继接口。如果在接口 ge-1/0/5 和 ge-1/0/6 内检测到频繁的 MAC 移动,接口 ge-1/0/5 将被阻止。中继接口的阻止是指仅阻止 VLAN(检测到 MAC 移动)的数据流量,而不是中继中的所有 VLAN。如果在 中 bd12观察到频繁的 MAC 移动,则不会执行任何操作。
使用 MAC 移动方法配置环路检测
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 在配置模式下使用 CLI 编辑器。
要使用 MAC 地址移动方法配置环路检测,请执行以下操作:
配置接口。
[edit interfaces] user@host# set ge-1/0/4 vlan-tagging user@host# set ge-1/0/4 encapsulation flexible-ethernet-services user@host# set ge-1/0/4 unit 10 encapsulation vlan-bridge user@host# set ge-1/0/4 unit 10 vlan-id 10 user@host# set ge-1/0/4 unit 11 encapsulation vlan-bridge user@host# set ge-1/0/4 unit 11 vlan-id 11 user@host# set ge-1/0/5 unit 0 family bridge interface-mode trunk user@host# set ge-1/0/5 unit 0 family bridge vlan-id-list 10-12 user@host# set ge-1/0/6 unit 0 family bridge interface-mode trunk user@host# set ge-1/0/6 unit 0 family bridge vlan-id-list 10-12
配置桥接域参数。
[edit bridge-domains] user@host# set bd10 vlan-id 10 user@host# set bd10 enable-mac-move-action user@host# set bd10 bridge-options interface ge-1/0/5.0 action-priority 1 user@host# set bd10 bridge-options interface ge-1/0/6.0 action-priority 5 user@host# set bd11 vlan-id 11 user@host# set bd11 enable-mac-move-action user@host# set bd12 vlan-id 12
结果
在配置模式下,输入 show interfaces
和 show bridge-domains
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
user@host# show interfaces
ge-1/0/4 {
vlan-tagging;
encapsulation flexible-ethernet-services;
unit 10 {
encapsulation vlan-bridge;
vlan-id 10;
}
unit 11 {
encapsulation vlan-bridge;
vlan-id 11;
}
}
ge-1/0/5 {
unit 0 {
family bridge {
interface-mode trunk;
vlan-id-list 10-12;
}
}
}
ge-1/0/6 {
unit 0 {
family bridge {
interface-mode trunk;
vlan-id-list 10-12;
}
}
}
user@host# show bridge-domains
bridge-domains {
bd10 {
vlan-id 10;
bridge-options {
interface ge-1/0/5.0 {
action-priority 1;
}
interface ge-1/0/6.0 {
action-priority 5
}
}
enable-mac-move-action;
}
bd11 {
vlan-id 11;
enable-mac-move-action;
}
bd12 {
vlan-id 12;
}
}
如果完成设备配置,请从配置模式输入 commit
。
验证
验证是否显示因 MAC 移动而被阻止的逻辑接口
目的
确保显示当前因 MAC 移动而被阻止的逻辑接口集(如果有)。
行动
在操作模式下,输入 show l2-learning mac-move-buffer active
命令。
user@host# show l2-learning mac-move-buffer active
MAC Address: 00:00:00:00:01:01, VLAN Id: 0
Time Rec : 2012-06-25 06:23:41 Bridge Domain: bd10
Prev IFL : ge-1/0/5.0 New IFL: ge-1/0/6.0
IFBD : ge-1/0/6.0:10 Blocked : YES
意义
作为 MAC 移动检测的结果,其中一个涉及的接口桥接域将被阻止。输出显示 ge-1/0/6 逻辑接口被阻止。
阻止作为 ACX 路由器的客户边缘设备之间的通信
在桥接域中,当从 CE 接口接收帧时,如果未获知目标 MAC 地址或者帧是广播或组播,则该帧将泛洪到其他 CE 接口和所有提供商边缘 (PE) 接口。如果在另一台 CE 设备上获知了目标 MAC 地址,则该帧将单播到获知 MAC 地址的 CE 接口。如果服务提供商不希望 CE 设备直接相互通信,则可能不希望这样做。
要防止 CE 设备直接通信,请在层次结构级别包含no-local-switching
[edit bridge-domains bridge-domain-name]
该语句。通过在层次结构级别包含core-facing
语句[edit interfaces interface-nameunit logical-unit-number family family]
,将桥接域中的逻辑接口配置为面向核心的(PE 接口),以指定 VLAN 以物理方式连接到面向核心的 ISP 路由器,并确保网络不会将该接口不当视为客户端接口。指定后,来自一个 CE 接口的流量不会转发到另一个 CE 接口。
对于选项 no-local-switching
,在启用此选项的桥接域上配置的集成路由和桥接 (IRB) 不会被视为指定的 CE 或 PE 接口。从 CE 或 PE 接口到达的流量可以导航到 IRB,而从输入方向到达 IRB 的流量可以从 CE 或 PE 接口通过。禁用本地交换可在桥接域中实现水平分割功能。如果在桥接域中配置了无本地交换,则流量无法在 CE 和 CE 接口之间流动。此传输流停止包括已知的单播和组播、未知单播和组播以及广播流量。但是,流量继续在 CE 和 PE 接口以及 PE 和 PE 接口之间传输。