某些配置在设计上已知有重大缺陷,应该尽一切可能避免。错误配置的Layer2有时会导致难以检测的网络错误、随机的性能下降、网络的某些部分无法访问、某些网络服务出现故障或整个网络故障。本页将包含一些常见的和不太常见的配置,这些配置可能会导致您的网络出现问题。
考虑以下场景,您有一个内置开关芯片的设备,并且需要将某些端口彼此隔离,因此,您创建了多个桥接并在其上启用硬件卸载。雷竞技官网网站下载由于每个网桥位于不同的Layer2域,因此这些网桥之间不会转发Layer2帧,因此每个网桥中的端口与不同网桥上的其他端口隔离。
/interface bridge add name=bridge1 add name=bridge2 /interface bridge port add bridge=bridge1 interface=ether1 add bridge=bridge1 interface=ether2 add bridge=bridge2 interface=ether3 add bridge=bridge2 interface=ether4
经过简单的性能测试后,您可能会注意到一个网桥能够以线速转发流量,而第二个、第三个等网桥转发的数据量不如第一个网桥。另一个症状可能是需要路由的数据包存在巨大的延迟。在快速检查之后,您可能会注意到CPU总是处于满负荷状态,这是因为硬件卸载不是在所有网桥上都可用,而是只在一个网桥上可用。雷竞技官网网站下载通过检查硬件卸载状态,你会注意到雷竞技官网网站下载只有一个网桥处于活动状态:
[admin@雷竞技网站MikroTik] > /interface bridge port print标志:X - disabled, I - inactive, D - dynamic, H - HW -offload # interface bridge HW 0 H ether1 bridge1 yes 1 H ether2 bridge1 yes 2 ether3 bridge2 yes 3 ether4 bridge2 yes
只有一个网桥具有可用的硬件卸载标志的原因是设备不支持端口隔离。雷竞技官网网站下载如果不支持端口隔离,则只有一个网桥能够将流量卸载到交换机芯片。
以下是此类配置错误可能导致的症状列表:
并不是所有的设备设备都支持端口隔离,目前只有CRS1xx/CRS2xx系列设备支持端口隔离,同时只支持7个隔离和硬件卸载的网桥,其他设备将不得不使用CPU在其他网桥上转发数据包。雷竞技官网网站下载这通常是硬件限制,可能需要不同的设备雷竞技官网网站下载。网桥水平分割参数是一个禁用硬件卸载的软件特性,当使用网桥过滤规则时,您需雷电竞app下载官方版苹果要启用将所有数据包转发到CPU,这需要禁用硬件卸载。雷竞技官网网站下载控件可以控制哪个桥将被硬件卸载雷竞技官网网站下载hw = yes标志和设置hw =没有对于其他桥梁,例如:
hw = yes
hw =没有
/interface bridge port set [find where bridge=bridge1] hw=no /interface bridge port set [find where bridge=bridge2] hw=yes
有时可以重构网络拓扑以使用vlan,这是隔离Layer2网络的正确方法。
考虑以下场景,您设置了一个桥接器并启用了硬件卸载,以便最大限度地提高设备的吞吐量,因此,您的设备作为交换机工作,但您希望使用雷竞技官网网站下载嗅探器或火炬用于调试目的的工具,或者您可能希望实现包日志记录。
/interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 hw=yes interface=ether1 learn=yes add bridge=bridge1 hw=yes interface=ether2 learn=yes
运行时嗅探器或火炬捕获数据包的工具您可能会注意到几乎看不到任何数据包,只有一些单播数据包,但大多数是广播/多播数据包被捕获,而接口报告通过某些接口的流量比捕获的流量大得多。从Routel雷竞技rOS v6.41开始,如果你将两个或多个以太网接口添加到网桥并启用雷竞技官网网站下载硬件卸载,则交换芯片将用于在端口之间转发数据包。为了理解为什么只有一些数据包被捕获,我们必须首先检查交换机芯片是如何与CPU互连的,在这个例子中,我们可以使用通用5端口以太网路由器的框图:
对于该设备,每个以太网端口连接到交换芯片,交换芯片通过CPU端口(有时称为CPU接口)连接到CPUswitch-cpu端口)。中可见的数据包嗅探器或火炬工具,数据包必须从以太网端口发送到CPU端口,这意味着数据包必须以CPU端口为目的地(数据包的目的MAC地址与网桥的MAC地址匹配)或数据包的MAC地址尚未被学习(数据包被淹没到所有端口),这种行为是由于MAC学习·
交换芯片保存一个MAC地址和端口列表,称为主机表·每当需要转发数据包时,交换芯片根据主机表检查数据包的目的MAC地址,以找到应该使用哪个端口来转发数据包。如果交换芯片找不到目的MAC地址,则将报文泛洪到所有端口(包括CPU端口)。在某些情况下,例如,一个数据包应该从ether1转发到ether2,并且ether2后面的设备的MAC地址在主机表中,那么数据包永远不会发送到CPU,因此不会被CPU看到嗅探器或火炬工具。
目的MAC地址已经学习到的数据包不会被发送到CPU,因为数据包不会被淹没到所有端口。如果您确实需要为数据包分析器或防火墙发送某些数据包到CPU,那么可以通过使用ACL规则将数据包复制或重定向到CPU。下面是一个如何发送数据包副本的示例4 c: 5 e: 0 c: 4 d: 12:4B:
/interface ethernet switch rule add copy-to-cpu=yes dst-mac-address=4C:5E:0C:4D:12:4B/FF:FF:FF:FF:FF ports=ether1 switch=switch1
如果数据包被发送到CPU,那么数据包必须由CPU处理,这增加了CPU的负载。
考虑以下场景,您创建了一个LAG接口来增加2个网络节点(通常是交换机)之间的总带宽。为了测试目的,确保LAG接口正常工作,您附加了两个传输数据的服务器,最常见的是众所周知的网络性能测量工具https://en.wikipedia.org/wiki/Iperf用于测试此类设置。例如,您可能已经使用两个千兆以太网端口创建了一个LAG接口,这将为您提供一个虚拟接口,可以在两个接口上负载均衡流量,理论上达到2Gbps的吞吐量,而服务器之间使用10Gbps接口连接,例如SFP+。
下面的配置与SW1和SW2:
/interface bonding add mode=802.3ad name=bond1 slaves=ether1,ether2 /interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 interface=bond1 add bridge=bridge1 interface=sfp-sfpplus1
在初始测试之后,您立即注意到网络吞吐量从未超过1Gbps限制,尽管服务器和网络节点(本例中为交换机)上的CPU负载都很低,但吞吐量仍然限制在1Gbps。这背后的原因是因为LACP (802.ad)使用传输散列策略来确定流量是否可以在多个LAG成员上平衡,在这种情况下,一个LAG接口不会创建一个2Gbps的接口,而是一个可以在可能的情况下在多个从接口上平衡流量的接口。对于每个数据包生成一个发送哈希,这决定了数据包将通过哪个LAG成员发送,这是为了避免数据包乱序所需要的,有一个选择发送哈希策略的选项,通常,有一个选择Layer2 (MAC), Layer3 (IP)和Layer4(端口)的选项,在RouterOS中,这可以通过使用l雷竞技transmit-hash-policy参数。在这种情况下,发送散列是相同的,因为您发送数据包到相同的目的MAC地址,以及相同的IP地址和Iperf使用相同的端口,这为所有数据包生成相同的发送散列,并且LAG成员之间的负载平衡是不可能的。请注意,即使目的地不同,也并不总是数据包在LAG成员之间得到平衡,这是因为标准化的传输哈希策略可以为不同的目的地生成相同的传输哈希,例如,192.168.0.1/192.168.0.2将得到平衡,但192.168.0.2/192.168.0.4将得到平衡不保持平衡以防万一layer2-and-3采用传输哈希策略,目的MAC地址相同。
transmit-hash-policy
layer2-and-3
选择合适的传输散列策略,并适当地测试您的网络吞吐量。测试这种设置的最简单方法是使用多个目的地,例如,不是将数据发送到一个服务器,而是将数据发送到多个服务器,这将为每个数据包生成不同的传输散列,并使跨LAG成员的负载平衡成为可能。对于某些设置,您可能希望更改绑定接口模式以增加UDP流量的总吞吐量balance-rr模式可能足够,但可能导致TCP通信问题,您可以阅读更多关于为您的设置选择正确模式的信息在这里。
balance-rr
考虑以下场景,您已经创建了桥接器,并且希望DHCP Server只给特定标记的VLAN流量分配IP地址,因此,您已经创建了VLAN接口,指定了VLAN ID并在其上创建了DHCP Server,但由于某种原因,它不能正常工作。
桥/接口添加名称= bridge1 /接口桥端口添加界面= ether1桥= bridge1添加界面= = bridge1 ether2桥/接口vlan添加名称= VLAN99界面= ether1 vlan id = 99 / ip池添加名称= = 192.168.99.100-192.168.99.200 VLAN99_POOL范围/ ip地址添加地址= = VLAN99 192.168.99.1/24接口/ ip dhcp服务器添加界面= VLAN99地址池= VLAN99_POOL禁用= no / ip dhcp服务器网络添加地址= = (192.168.99.1 dns服务器=(192.168.99.1 192.168.99.0/24网关
将一个接口加入网桥后,网桥成为主接口,所有网桥端口都成为从端口,这意味着所有在网桥端口上接收到的流量都被网桥接口捕获,所有流量都通过网桥接口转发给CPU,而不是通过物理接口。因此,在从接口上创建的VLAN接口根本不会捕获任何流量,因为在完成任何数据包处理之前,它会立即转发到主接口。通常的副作用是有些DHCP客户端接收IP地址,有些不接收。
修改VLAN接口监听流量的接口,将其改为主接口:
/interface vlan set VLAN99 interface=bridge1
考虑下面的场景,您有一组接口(不一定是物理接口),并且您希望它们都在同一个Layer2段中,解决方案是将它们添加到单个网桥中,但是您要求来自一个端口的流量将所有流量标记到某个VLAN中。这可以通过在网桥接口上创建一个VLAN接口和创建一个单独的网桥来实现,该网桥包含这个新创建的VLAN接口和一个接口,该接口应该向所有接收到的流量添加VLAN标记。网络图如下:
/interface bridge add name=bridge1 add name=bridge2 /interface vlan add interface=bridge1 name= vlan vlan-id=99 /interface bridge port add bridge=bridge1 interface=ether1 add bridge=bridge1 interface=ether2 add bridge=bridge2 interface= vlan add bridge=bridge2 interface=ether3
为了更好地理解潜在的问题,让我们首先看一下网桥主机表。
[admin@switch] /interface bridge host print where !local标志:X - disabled, I - invalid, D - dynamic, L - local, E - external # MAC-ADDRESS VID ON-INTERFACE bridge 0 D CC:2D:E0:E4:B3:A1 ether1 bridge1 1 D CC:2D:E0:E4:B3:A2 ether2 bridge1 2D CC:2D:E0:E4:B3:A1 VLAN bridge2 3 D CC:2D:E0:E4:B3:A2 VLAN bridge2 4 D CC:2D:E0:E4:B3:A3 ether3 bridge2
设备ether1和ether2为了到达主机,需要发送带标签的VLAN-ID为99的报文ether3(其他数据包不被传递到VLAN接口,并进一步与ether3桥接)。我们可以在主机表中看到bridge2学会了这些主人。来自ether3来ether1将正确地发出标记和流量不会涌进来bridge1。但是,由于MAC学习只能在桥接端口之间进行,而不能在桥接接口之上创建的接口上进行,因此从桥接端口发送的数据包ether2来ether3将会被淹没bridge1。
如果设备落后ether3使用(R)STP,那么ether1和ether2会发送违反IEEE 802.1W标准的带标签bpdu。由于损坏的MAC学习功能和损坏的(R)STP必须避免这种设置和配置。众所周知,在某些设置中,这种配置可能会阻止您通过MAC telnet连接到设备。
使用网桥VLAN过滤。标记流量的正确方法是在流量进入网桥时分配VLAN ID,这种行为很容易通过指定来实现PVID值,并指定哪些端口是标记(中继)端口和哪些是未加标签的(访问)端口。下面是一个应该如何配置这样一个设置的示例:
/interface bridge add name=bridge1 vlan-filtering=yes /interface bridge port add bridge=bridge1 interface=ether1 add bridge=bridge1 interface=ether2 add bridge=bridge1 interface=ether3 pvid=99 /interface bridge vlan add bridge=bridge1 tagged=ether1,ether2 untagged=ether3 vlan-ids=99
通过启用vlan-filtering您将过滤掉发送到CPU的流量,在启用VLAN过滤之前,您应该确保设置了一个管理端口。
vlan-filtering
非常类似于网桥上的VLAN,有多种可能的场景可以使用它,最流行的用例是当你想通过物理接口发送带标签的流量时,在这种设置中,你希望来自一个接口的流量只接收某些带标签的流量,并通过物理接口(简化的trunk/access端口设置)通过使用VLAN接口和桥接器发送带标签的流量。
/interface vlan add interface=ether1 name=VLAN99 vlan-id=99 /interface bridge add name=bridge1 /接口桥端口add interface=ether2 bridge=bridge1 add interface=VLAN99 bridge=bridge1
这种设置和配置在大多数情况下都可以工作,但是当使用(R)STP时,它违反了IEEE 802.1W标准。如果这是您的Layer2域中唯一的设备,那么这应该不会引起问题,但是当存在其他供应商交换机时可能会出现问题。这是因为缺省情况下,网桥接口上的(R)STP是使能的,并且bpdu来自ether1会被贴上标签送出去吗ether1会通过吗ether2作为带标签流量,并不是所有的交换机都能理解带标签的bpdu报文。在较为复杂的网络环境中,当某一(组)vlan存在多种网络拓扑时,需要注意该配置,这与混合厂商设备的MSTP和PVSTP(+)相关。在环状拓扑与多个某些VLAN的网络拓扑,交换机的一个端口将被阻塞,但在MSTP和PVSTP(+)特定VLAN的路径可以打开,在这种情况下有可能是设备不支持PVSTP(+)将解除BPDU BPDU和前进,因此,开关将收到自己的包,触发一个循环检测和阻止一个端口,这也可以发生在其他协议,但(R) STP是最常见的情况。如果交换机正在使用BPDU保护功能,则这种类型的配置可能会触发该功能,导致端口被STP阻塞。据报道,当使用6.41或更高版本时,这种类型的配置可以防止流量随着时间的推移通过某些桥接端口转发。这种类型的配置不仅会破坏(R/M)STP,而且还会引起循环警告,这可能是由MNDP报文或从接口直接发出的任何其他报文引起的。
为了避免兼容性问题,应该使用桥接VLAN过滤。下面您可以找到一个示例,说明如何使用网桥VLAN过滤配置实现相同的流量标签效果:
/interface bridge add name=bridge1 vlan-filtering=yes /interface bridge port add bridge=bridge1 interface=ether1 add bridge=bridge1 interface=ether2 pvid=99 /interface bridge vlan add bridge=bridge1 tagged=ether1 untagged=ether2 vlan-ids=99
一个非常相似的例子网桥上的VLAN请考虑以下场景:您的网络中有几个交换机,您正在使用vlan来隔离某些Layer2域,并将这些交换机连接到分配地址并将流量路由到世界的路由器。为了实现冗余,您将所有交换机直接连接到路由器并启用RSTP,但是为了能够设置DHCP Server,您决定在与交换机连接的每个物理接口上为每个VLAN创建一个VLAN接口,并将这些VLAN接口添加到网桥中。网络图如下:
只有路由器部分与这种情况有关,只要端口被交换,交换机配置并不重要。路由器配置可以在下面找到:
/interface bridge add name=bridge10 add name=bridge20 /interface vlan add interface=ether1 name=ether1_v10 vlan-id=10 add interface=ether1 name=ether1_v20 vlan-id=20 add interface=ether2 name=ether2_v10 vlan-id=10 add interface=ether2 name=ether2_v20 vlan-id=20 /interface bridge port add bridge=bridge10 interface=ether2_v10 add bridge=bridge20 interface=ether2_v20 add bridge=bridge20 interface=ether2_v20
您可能会注意到网络有一些奇怪的延迟,甚至网络没有响应,您可能会注意到检测到一个环路(使用自己的MAC地址接收数据包),并且不知从哪里生成了一些流量。出现这个问题的原因是,一个广播包来自于在VLAN接口上创建的任何一个VLAN接口路由器会发送出去的是物理接口,报文会通过物理接口转发,通过交换机又会在不同的物理接口上接收回来,这种情况下,发送出去的是广播报文吗ether1_v10将于ether2,数据包将被捕获ether2_v10,它与ether1_v10并将被再次转发到相同的路径(循环)。(R)STP可能并不总是检测到这个环路,因为(R)STP不知道任何vlan,环路不存在于未标记的流量中,但存在于标记的流量中。在这种情况下,发现环路是很明显的,但在更复杂的设置中,检测网络设计缺陷并不总是那么容易。有时,如果你的网络不使用广播流量,这个网络设计缺陷可能会被忽视很长一段时间,通常,邻居发现协议正在广播来自VLAN接口的数据包,并且在这种设置中通常会触发环路检测。有时捕获触发环路检测的数据包是有用的,这可以通过使用嗅探器和分析数据包捕获文件:
/tool sniffer set filter-mac-address=4C:5E:0C:4D:12:44/FF:FF:FF:FF:FF \ filter-interface=ether1 filter-direction=rx file-name=loop_packet.pcap
或者使用日志记录更方便的方法:
/interface bridge filter add action=log chain=forward src-mac-address=4C:5E:0C:4D:12:44/FF:FF:FF:FF:FF:FF:FF:FF:FF添加action=log chain=input src-mac-address=4C:5E:0C:4D:12:44/FF:FF:FF:FF:FF:FF:FF
一种解决方案是使用网桥VLAN过滤,使所有网桥兼容IEEE 802.1W和IEEE 802.1Q。
/interface bridge add name=bridge vlan-filtering=yes /interface bridge port add bridge=bridge interface=ether1 add bridge=bridge interface=ether2 /interface bridge vlan add bridge=bridge tagged=ether1,ether2,bridge vlan-ids=10 add bridge=bridge tagged=ether1,ether2,bridge vlan-ids=20 /interface vlan add name=vlan20 interface=bridge vlan-id=20
一个更简单的场景是物理接口上的桥接VLAN但是在这种情况下,您只需要将在不同物理接口上创建的两个或多个vlan桥接在一起。这是一种非常常见的设置类型,值得单独撰写一篇文章,因为错误配置这种类型的设置会导致多个网络故障。这种类型的设置也用于VLAN转换。
/interface vlan add interface=ether1 name=ether1_v10 vlan-id=10 add interface=ether2 name=ether2_v10 vlan-id=10 /interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 interface=ether1_v10 add bridge=bridge1 interface=ether2_v10
问题
您可能会注意到网络的某些部分不可访问和/或某些链接保持振荡。这是由于(R)STP,这种类型的配置强制设备发送带标签的bpdu,这可能是其他设备(包括RouterOS)不支持的。l雷竞技由于设备接收到畸形报文(运行(R)STP时,您的网络中不应该存在带标签的bpdu,这违反了IEEE 802.1W和IEEE 802.1Q),设备将无法正确解释该报文,并可能出现意外行为。
最简单的解决方案是在网桥上禁用(R)STP:
/interface bridge set bridge1 protocol-mode=none
尽管仍然建议重写您的配置以使用桥接VLAN过滤:
/interface bridge add name=bridge1 vlan-filtering=yes /interface bridge port add bridge=bridge1 interface=ether1 add bridge=bridge1 interface=ether2 /interface bridge vlan add bridge=bridge1 tagged=ether1,ether2 vlan-ids=10
考虑以下场景,您发现了新的桥式VLAN过滤功能,并决定更改设备上的配置,您有一个非常简单的中继/访问端口设置,并且您喜欢桥式VLAN过滤的概念。
/interface bridge add name=bridge1 vlan-filtering=yes /interface bridge port add bridge=bridge1 interface=ether1 add bridge=bridge1 interface=ether2 pvid=20 add bridge=bridge1 interface=ether3 pvid=30 add bridge=bridge1 interface=ether4 pvid=40 /interface bridge vlan add bridge=bridge1 tagged=ether1 untagged=ether2 vlan-ids=20 add bridge=bridge1 tagged=ether1 untagged=ether3 vlan-ids=30 add bridge=bridge1 tagged=ether1 untagged=ether4 vlan-ids=40
例如,您在CRS1xx/CRS2xx系列设备上使用此配置,并且您开始注意到CPU使用率非常高,当运行性能测试以检查网络吞吐量时,您注意到总吞吐量只是线速性能的一小部分,它应该很容易达到。造成这个问题的原因是,不是所有的设备都在硬件层面上支持网桥VLAN过滤。雷竞技官网网站下载所有设备都可以配置网桥VLAN过滤,但只有少数设备能够将流量卸载到交换芯片上。在内置交换芯片的设备上,如果配置方法不正确,则会导致流量通过CPU转发。
在使用桥接VLAN过滤之前,请检查您的设备是否在硬件级别支持它,可以在雷竞技官网网站下载桥接硬件卸载雷竞技官网网站下载部分。每种类型的设备目前都需要不同的配置方法,下面是设备上应该使用的配置列表,以便使用硬件卸载的好处:雷竞技官网网站下载
考虑以下场景,您有一个带有两个或更多交换芯片的设备,并且您决定使用单个桥接器并设置VLAN过滤(通过使用/interface以太网交换机菜单)在硬件级别上,以雷竞技官网网站下载便能够在您的网络上达到线速性能。这与RB2011和RB3011系列器件非常相关。在本例中,假设您想要一个中继端口,所有其他端口都是访问端口,例如:ether10我们的主要港口是和吗ether1-ether9是我们的访问端口。
/interface以太网交换机
/interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 interface=ether1 add bridge=bridge1 interface=ether2 add bridge=bridge1 interface=ether3 add bridge=bridge1 interface=ether4 add bridge=bridge1 interface=ether5 add bridge=bridge1 interface=ether6 add bridge=bridge1 interface=ether7 add bridge=bridge1 interface=ether8 add bridge=bridge1 interface=ether9 add bridge=bridge1 interface=ether10 /interface ethernet / vlan add interface=bridge1 name=VLAN10 vlan-id=10交换机端口set ether1,ether2,ether3,ether4,ether5,ether6,ether7,ether8,ether9 default-vlan-id=10 vlan-header=always-strip vlan-mode=secure set ether10 vlan-header=add-if-missing vlan-mode=secure set switch1-cpu,switch2-cpu vlan-mode=secure /interface以太网交换机vlan add ports=ether1,ether2,ether3,ether4,ether5,switch1-cpu Switch =switch1 vlan-id=10 add ports=ether6,ether7,ether8,ether9,ether10,switch2-cpu Switch =switch2 vlan-id=10
运行一些测试后,您可能会注意到来自ether6-ether10都按预期转发,但是来自ether1-ether5并不总是正确转发(特别是通过主干端口)。最明显的问题是来自ether1-ether5通过ether10这是因为这些端口位于不同的交换芯片上,这意味着VLAN过滤在硬件层面是不可能的,因为交换芯片不知道VLAN表的内容在不同的交换芯片上。雷竞技官网网站下载在位于不同交换机芯片上的端口之间转发的数据包也由CPU处理,这意味着您将无法实现线速性能。
正确的解决方案是考虑这种硬件设计并相应地规划网络拓扑。雷竞技官网网站下载为了解决这个问题,你必须在每个交换芯片上创建两个单独的网桥并配置VLAN过滤,这限制了在交换芯片之间转发数据包的可能性,尽管可以在两个网桥之间配置路由(如果连接在每个交换芯片上的设备使用不同的网络子网)。
有一种方法可以配置设备,使所有端口一起交换,并且能够在硬件级别上使用VLAN过滤,尽管这种解决方案有一些注意事项。雷竞技官网网站下载这个想法是在每个交换芯片上牺牲一个以太网端口,它将充当交换芯片之间转发数据包的中继端口,这可以通过在两个交换芯片之间插入一条以太网电缆来实现,例如,让在两个交换芯片之间插入一条以太网电缆ether5和ether6然后重新配置您的设备,假设这些端口是中继端口:
/interface以太网交换机端口add bridge=bridge1 interface=ether1 add bridge=bridge1 interface=ether2 add bridge=bridge1 interface=ether3 add bridge=bridge1 interface=ether3 add bridge=bridge1 interface=ether4 add bridge=bridge1 interface=ether5 add bridge=bridge2 interface=ether6 add bridge=bridge2 interface=ether7 add bridge=bridge2 interface=ether8 add bridge=bridge2 interface=ether10 /interface以太网交换机端口set ether1、ether2、ether3、ether4、ether7、ether8、ether9 default-vlan-id=10vlan-header=always-strip vlan-mode=secure set ether5,ether6,ether10 vlan-header=add-if-missing vlan-mode=secure default-vlan-id=auto set switch1-cpu,switch2-cpu vlan-mode=secure /interface以太网交换机vlan- add ports=ether1,ether2,ether3,ether4,ether5,switch1-cpu switch=switch1 vlan-id=10 add ports=ether6,ether7,ether8,ether9,ether10,switch2-cpu switch=switch2 vlan-id=10
对于100Mbps的开关芯片,请使用default-vlan-id = 0而不是default-vlan-id =汽车
default-vlan-id = 0
default-vlan-id =汽车
您需要创建一个网络设置,其中多个客户端连接到单独的访问端口,并通过不同的vlan进行隔离,该流量应该被标记并发送到适当的trunk端口。Access端口通过pvid属性配置。由于trunk端口在两个vlan中都使用,因此无需配置决定通过添加单个桥接VLAN表项和用逗号分隔VLAN来简化配置。当标记的trunk端口跨大量VLAN甚至特定VLAN范围(例如VLAN -id=100-200)使用时,这尤其有用。请参见下面的网络图和配置。
/interface bridge add name=bridge1 vlan-filtering=yes /interface bridge port add bridge=bridge1 interface=ether2 add bridge=bridge1 interface=ether3 pvid=10 add bridge=bridge1 interface=ether4 pvid=20 /interface bridge vlan add bridge=bridge1 tagged=ether2 vlan-ids=10,20
流量被正确地从访问端口转发和标记到trunk端口,但是您可能会注意到一些广播或组播数据包实际上在两个未标记的访问端口之间泛滥,尽管它们应该在不同的vlan上。此外,来自标记端口的广播和组播流量也被淹没到两个访问端口。这可能会引起一些安全问题,因为可以嗅探来自不同网络的流量。查看桥接VLAN表时,您会注意到为VLAN 10和20创建了单个条目,并且两个未标记的端口都属于同一个VLAN组。
[admin@SW1] /interface bridge vlan print where tagged=ether2 Columns: bridge, vlan - ids, CURRENT-TAGGED, CURRENT-UNTAGGED # bridge vlan - ids CURRENT-TAGGED CURRENT-UNTAGGED;;;如果pvid添加到untagged组,可能会导致问题,请考虑添加一个单独的VLAN项0 bridge1 10 ether2 ether3 20 ether4
pvid添加到untagged组的端口可能会导致问题,请考虑添加单独的VLAN项
当使用pvid属性配置访问端口时,它们会被动态地添加到适当的VLAN项中。在创建一个包含多个VLAN或VLAN范围的静态VLAN表项后,匹配pvid的未标记访问端口也会被包含在同一个VLAN组或VLAN范围中。使用一条配置线定义大量vlan可能很有用,但是在配置访问端口时应该格外小心。对于本例,应该创建单独的VLAN表项:
/interface bridge vlan add bridge=bridge1 tagged=ether2 untagged=ether3 vlan-ids=10 add bridge=bridge1 tagged=ether2 untagged=ether4 vlan-ids=20
考虑下面的场景,您已经创建了一个网桥,添加了几个接口,并在网桥接口上创建了一个VLAN接口,但是为了接收更大的数据包,您需要增加VLAN接口上的MTU大小。
/interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 interface=ether1 add bridge=bridge1 interface=ether2 /interface vlan add interface=bridge1 name=VLAN99 vlan-id=99
当你试图增加VLAN接口上的MTU大小时,你会收到一个错误l雷竞技无法设置MTU。当您试图设置MTU大于L2MTU时,可能会发生这种情况。在这种情况下,您需要增加所有从接口上的L2MTU大小,这将更新桥接接口上的L2MTU大小。完成此操作后,您将能够在VLAN接口上设置更大的MTU。同样的原理也适用于绑定接口。只有在所有物理从接口都设置了适当的L2MTU值后,才能增加VLAN、MPLS、VPLS、Bonding等接口的MTU值。
在修改主接口的MTU之前,先增加从接口的L2MTU。
/interface ethernet set ether1,ether2 l2mtu=9018 /interface vlan set VLAN99 mtu=9000
考虑以下场景,您的网络中有多个设备,其中大多数用作网络中的交换机/网桥,并且有某些端点应该接收和处理流量。为了减少网络开销,您决定增加MTU大小,因此您在两个端点上设置了更大的MTU大小,但是您开始注意到一些数据包正在被丢弃。
在这种情况下,两个端点都可以是任何类型的设备,我们将假设它们都是应该传输大量数据的Linux服务器。在这种情况下,您可能已经将接口MTU设置为9000 onServerA和上一个在你的开关你可能已经设置了类似的东西:
/interface bridge add name=bridge1 /interface bridge port add interface=ether1 bridge=bridge1 add interface=ether2 bridge=bridge1
这是一个非常简单的问题,但在较大的网络中,这可能不太容易检测到。例如,ping可能正常工作,因为一般ping包的长度为70字节(以太网报头为14字节,IPv4报头为20字节,ICMP报头为8字节,ICMP有效负载为28字节),但数据传输可能无法正常工作。有些数据包可能无法转发的原因是,运行RouterOS的MikroTik设备默认将MTU设置为1500,将L2MTU设置为雷竞技网站1580字节左右(取决于设备),但是以太网接口将静l雷竞技默地丢弃不适合L2MTU大小的任何内容。注意,L2MTU参数与x86或CHR设备无关。对于只转发报文的设备,不需要增加MTU的大小,只需要增加L2MTU的大小,RouterOS不会允许增加大于L2MTU的大小。l雷竞技如果您需要在接口上接收数据包,并且设备需要处理该数据包,而不仅仅是转发它,例如,在路由的情况下,则需要增加L2MTU和MTU大小,但是如果您只使用IP流量(支持数据包分片)并且不介意数据包被分片,则可以将接口上的MTU大小保留为默认值。你可以使用ping工具来确保所有设备都能够转发巨型帧:
/ping 192.168.88.1 size=9000
请记住,L2MTU和MTU的大小需要大于或等于发送ping数据包的设备上的ping数据包的大小,因为ping (ICMP)是从接口通过Layer3发送的IP流量。
增加L2MTU的大小开关:
/interface Ethernet set ether1,ether2 l2mtu=9000
如果您的流量被封装(VLAN、VPN、MPLS、VPLS或其他),那么您可能需要考虑设置更大的L2MTU大小。在这种情况下,由于上述原因,不需要增加MTU大小。
Full frame MTU与L2MTU不同。L2MTU的大小不包括以太网头(14字节)和CRC校验和(FCS)字段。FCS字段由以太网驱动程序剥离,并且RouterOS永远不会向任何数据包显示额外的4字节。l雷竞技例如,如果将MTU和L2MTU设置为9000,则全帧MTU长度为9014字节,在嗅探数据包时也可以观察到"/工具嗅探器快速”命令。
/工具嗅探器快速”
考虑以下场景,您希望透明地将两个网段桥接在一起,这些网段要么是隧道接口,如EoIP、无线接口、以太网接口,要么是可以添加到桥接的任何其他类型的接口。这样的设置允许您将两个设备无缝连接在一起,就像它们之间只有一条物理电缆一样,这有时被称为a透明桥从DeviceA来DeviceB。
对于这两种设备DeviceA和DeviceB应该有一个非常相似的配置。
/interface bridge add name=bridge1 protocol-mode=rstp /interface bridge port add interface=ether1 bridge=bridge1 add interface=eoip1 bridge=bridge1
两个设备都可以相互通信,但有些协议无法正常工作。原因是只要您使用任何STP变体(STP, RSTP, MSTP),您就可以使网桥符合IEEE 802.1D和IEEE 802.1Q,这些标准建议命中的数据包01:80: C2:00:00:0X应该不被转发。在网桥上只有2个端口的情况下(R/M)不应该使用STP,因为两个接口之间不可能产生环路,如果环路确实发生了,原因是其他地方的,应该在不同的网桥上解决。由于(R/M)STP在透明网桥设置中不需要,因此可以禁用它。一旦(R/M)STP功能被关闭,RouterOS网桥就不符合IEEE 80l雷竞技2.1D和IEEE 802.1Q标准,因此会转发到达目的地的报文01:80: C2:00:00:0X。
由于Routl雷竞技erOS v6.43可以部分禁用IEEE 802.1D和IEEE 802.1Q,这可以通过更改网桥协议模式来实现。
IEEE 802.1x标准旨在直接在交换机和客户端之间使用。如果在交换机和客户端之间连接设备是可能的,那么这会产生安全威胁。因此,不建议禁用IEEE 802.1D和IEEE 802.1Q,而建议设计合适的网络拓扑。
考虑以下场景,您已经建立了多个无线链路,为了实现最大吞吐量和冗余,您决定将以太网接口置于绑定中,并根据正在转发的流量选择特定的绑定模式。此场景可以应用于在链路之间创建绑定接口的任何情况,这些链路彼此之间没有直接连接。
下面的配置与R1和R2:
/interface bonding add mode=802.3ad name=bond1 slaves=ether1,ether2 transmit-hash-policy=layer-2-and-3 /ip address add address=192.168.1。X / 24 = bond1接口
而下面的配置与AP1,AP2,相约,和ST2,在那里X对应每个设备的IP地址。
/interface bridge add name=bridge1 protocol-mode=none /interface bridge port add interface=ether1 bridge=bridge1 add interface=wlan1 bridge=bridge1 /ip address add address=192.168.1X / 24 = bridge1接口
当流量被正确转发时R1和R2,负载平衡,链路故障转移工作正常,但设备之间R1和R2并不总是可访问的,或者其中一些是完全不可访问的(在大多数情况下AP2和ST2无法访问)。在检查了这个问题之后,您可能会注意到,数据包并不总是通过所需的绑定从属服务器转发,因此,您试图访问的设备永远不会接收到数据包。这是网络设计和绑定协议的限制。一旦需要通过绑定接口发送数据包(在这种情况下,您可能会尝试将ICMP数据包发送到AP2或ST2),绑定接口将根据选择的绑定模式和创建一个哈希值transmit-hash-policy并将选择一个接口,通过该接口发送数据包,而不管目的地只能通过某个接口到达。有些设备是可访问的,因为生成的散列与设备所在的接口匹配,但它也可能没有选择所需的接口,这将导致设备不可访问。只有广播绑定模式没有这种协议限制,但是这种绑定模式的用例非常有限。
绑定接口不应该使用直接链接连接,但仍然可以创建一个解决方案。这种解决方法背后的思想是找到一种绕过使用绑定接口发送的数据包的方法。有多种方法可以使用绑定接口强制不发送数据包,但本质上解决方案是在物理接口之上创建新接口,并将这些新创建的接口添加到绑定中,而不是将物理接口添加到绑定中。实现这一目标的一种方法是在每个物理接口上创建EoIP隧道,但这会产生巨大的开销,并降低总体吞吐量。您应该在每个物理接口之上创建一个VLAN接口,这样会产生更小的开销,并且不会显著影响整体性能。下面是一个例子R1和R2应该重新配置:
/interface vlan add interface=ether1 name=VLAN_ether1 vlan-id=999 add interface=ether2 name=VLAN_ether2 vlan-id=999 /interface bonding add mode=balance-xor name=bond1 slaves=VLAN_ether1,VLAN_ether2 transmit-hash-policy=layer-2-and-3 /ip address add address=192.168.1X/24 interface=bond1 add address=192.168.11。X/24 interface=ether1 add address=192.168.22.X/24 interface=ether2
AP1和相约只需要更新IP地址到正确的子网:
/ip address add address=192.168.11。X / 24 = bridge1接口
必须应用相同的更改AP2和ST2(确保使用正确的子网):
/ip address add address=192.168.22。X / 24 = bridge1接口
使用这种方法,您创建的开销最小,所需的配置更改也最少。
LACP (802.3ad)不适合在没有直接连接bonding slave设备的情况下使用,在这种情况下,如果两台路由器之间有无线链路,则不建议使用LACP。LACP要求两个bonding slave具有相同的链路速度,无线链路可以随时改变其速率,这将降低整体性能和稳定性。应该使用其他的键合模式。
考虑下面的场景,您在两个设备之间建立了一个链路,这可以是任何链路、以太网电缆、无线链路、隧道或任何其他连接。您决定要测试链路的带宽,但出于方便的原因,您决定使用运行该链路的相同设备开始测试该链路。
只要你开始带宽测试或症状 以下是此类配置错误可能导致的症状列表: 低吞吐量; CPU使用率高; 解决方案 使用适当的测试方法。不要使用Bandwidth-test来测试大容量链接,也不要在测试的设备上运行任何产生流量的工具。适当地设计网络,以便可以在两端附加将生成和接收流量的设备。如果你熟悉Iperf,那么这个概念应该很清楚了。请记住,在现实世界中,路由器或交换机不会生成大量的流量(至少不应该,否则可能表明存在安全问题),服务器/客户端生成流量,而路由器/交换机转发流量(并在适当的情况下对流量进行一些操作)。 桥梁分割水平的使用 考虑以下场景,您有一个桥接器,并且需要将某些桥接器端口彼此隔离。可以选择使用内置的交换芯片来隔离某些交换芯片上的某些端口,您可以使用桥接防火墙规则来阻止某些端口能够向其他端口发送任何流量,您可以使用端口隔离来隔离PVLAN类型设置中的端口,但是也有基于软件的解决方案来使用桥接水平分割(它禁止所有交换芯片上的硬件卸载)。雷竞技官网网站下载雷电竞app下载官方版苹果 配置 /interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 horizon=1 hw=无接口=ether1 add bridge=bridge1 horizon=2 hw=无接口=ether2 add bridge=bridge1 horizon=3 hw=无接口=ether3 add bridge=bridge1 horizon=4 hw=无接口=ether4 问题 在每个端口上设置网桥分割水平后,您开始注意到每个端口仍然能够在彼此之间发送数据。造成这种情况的原因是误用了桥分割视界。桥接端口只能与同一水平的端口通信,例如,水平=1不能与水平=1通信,但可以与水平=2、水平=3通信,以此类推。 症状 以下是此类配置错误可能导致的症状列表: 交通在不同的桥上分流 解决方案 设置一个合适的值作为桥梁分割水平。如果您希望将每个端口彼此隔离(PPPoE设置的常见场景),并且每个端口只能与网桥本身通信,那么所有端口必须处于相同的网桥水平分割中。 /interface bridge port set [f] horizon=1 将所有网桥端口设置在同一网桥分割水平将导致流量只能到达网桥接口本身,然后数据包只能路由。当您希望其他设备过滤掉某些流量时,这很有用。使用桥接过滤规则也可以实现类似的行为。 不支持的SFP模块 考虑以下场景,设备之间的连接方式为SFP光模块或SFP+光模块,但出于方便的考虑,建议使用现有的SFP光模块。 问题 一旦您将设备配置为在使用这些SFP光模块的端口上具有连接,您可能会注意到链路工作正常或遇到随机连接问题。有许多供应商生产SFP光模块,但并不是所有的供应商都严格遵循SFP MSA, SFF和IEEE 802.3标准,这可能导致不可预测的兼容性问题,当在microtik设备中使用不知名或不支持的SFP光模块时,这是一个非常常见的问题。雷竞技网站 症状 以下是此类配置错误可能导致的症状列表: SFP接口未连接 随机丢包 连杆不稳定(扑动) 重新启动后SFP模块不能运行 SFP模块上电后不工作 SFP光模块只在一侧运行 解决方案 您应该只使用支持的SFP模块。总是检查的支持的外设表寻找其他已经确认可以与microtik设备一起工作的SFP模块。雷竞技网站一些不受支持的模块可能无法在某些速度下正常工作,并且使用自动协商,您可能需要尝试禁用它并手动设置链接速度。
使用适当的测试方法。不要使用Bandwidth-test来测试大容量链接,也不要在测试的设备上运行任何产生流量的工具。适当地设计网络,以便可以在两端附加将生成和接收流量的设备。如果你熟悉Iperf,那么这个概念应该很清楚了。请记住,在现实世界中,路由器或交换机不会生成大量的流量(至少不应该,否则可能表明存在安全问题),服务器/客户端生成流量,而路由器/交换机转发流量(并在适当的情况下对流量进行一些操作)。
考虑以下场景,您有一个桥接器,并且需要将某些桥接器端口彼此隔离。可以选择使用内置的交换芯片来隔离某些交换芯片上的某些端口,您可以使用桥接防火墙规则来阻止某些端口能够向其他端口发送任何流量,您可以使用端口隔离来隔离PVLAN类型设置中的端口,但是也有基于软件的解决方案来使用桥接水平分割(它禁止所有交换芯片上的硬件卸载)。雷竞技官网网站下载雷电竞app下载官方版苹果
/interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 horizon=1 hw=无接口=ether1 add bridge=bridge1 horizon=2 hw=无接口=ether2 add bridge=bridge1 horizon=3 hw=无接口=ether3 add bridge=bridge1 horizon=4 hw=无接口=ether4
在每个端口上设置网桥分割水平后,您开始注意到每个端口仍然能够在彼此之间发送数据。造成这种情况的原因是误用了桥分割视界。桥接端口只能与同一水平的端口通信,例如,水平=1不能与水平=1通信,但可以与水平=2、水平=3通信,以此类推。
设置一个合适的值作为桥梁分割水平。如果您希望将每个端口彼此隔离(PPPoE设置的常见场景),并且每个端口只能与网桥本身通信,那么所有端口必须处于相同的网桥水平分割中。
/interface bridge port set [f] horizon=1
将所有网桥端口设置在同一网桥分割水平将导致流量只能到达网桥接口本身,然后数据包只能路由。当您希望其他设备过滤掉某些流量时,这很有用。使用桥接过滤规则也可以实现类似的行为。
考虑以下场景,设备之间的连接方式为SFP光模块或SFP+光模块,但出于方便的考虑,建议使用现有的SFP光模块。
一旦您将设备配置为在使用这些SFP光模块的端口上具有连接,您可能会注意到链路工作正常或遇到随机连接问题。有许多供应商生产SFP光模块,但并不是所有的供应商都严格遵循SFP MSA, SFF和IEEE 802.3标准,这可能导致不可预测的兼容性问题,当在microtik设备中使用不知名或不支持的SFP光模块时,这是一个非常常见的问题。雷竞技网站
您应该只使用支持的SFP模块。总是检查的支持的外设表寻找其他已经确认可以与microtik设备一起工作的SFP模块。雷竞技网站一些不受支持的模块可能无法在某些速度下正常工作,并且使用自动协商,您可能需要尝试禁用它并手动设置链接速度。