jjzjj

[网络工程师]-huawei交换机MAC漂移

579YOU 2023-12-30 原文

1、MAC漂移现象

        MAC地址漂移是指设备上一个VLAN内有两个或者三个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。通常认为第一个学习到MAC地址的接口是正确的出接口,称为源端口(Original Port),后学习的端口是漂移端口(Move Port),漂移端口通常是在环路上或者下挂网络中有环路的端口。

        设备出现MAC地址漂移时,设备CPU占用率会有不同程度的升高。

        在规划网络时,可以通过下面两种方式来避免MAC地址漂移:

        (1)提高接口MAC地址学习优先级。当不同接口学到相同的MAC地址表项时,高优先级接口学到的MAC地址表项可以覆盖低优先级接口学到的MAC地址表项,防止MAC地址在接口间发生漂移。

        (2)不允许相同优先级的接口发生MAC地址表项覆盖。当伪造网络设备所连接口的优先级与安全的网络设备相同时,后学习到的伪造网络设备的MAC地址表项不会覆盖之前正确的表项。但如果网络设备下电,仍会学习到伪造网络设备的MAC地址,当网络设备再次上电时将无法学习到正确的MAC地址。

2、MAC漂移解决方法      

2.1 配置MAC地址防漂移

2.1.1  提高接口MAC地址学习优先级

    进入系统视图。

    system-view

    进入接口视图。

    interface interface-type interface-number

    配置接口学习MAC地址的优先级。

    mac-address learning priority priority-id

    缺省情况下,接口学习MAC地址的优先级为0。取值范围是0~3,数值越大优先级越高。

    返回系统视图。

    quit

2.1.2 不允许相同优先级的接口发生MAC地址漂移

    配置不允许相同优先级的接口发生MAC地址漂移。

    undo mac-address learning priority priority-id allow-flapping

    缺省情况下,允许相同优先级的接口发生MAC地址漂移。

2.2 配置MAC刷新ARP功能

        在以太网中,主机设备是根据MAC地址来发送、接收以太网数据帧。ARP用于提供IP地址到MAC地址的映射。当不同网段间通信时,需要使用ARP表项来将IP地址映射到正确的MAC地址及相应的出接口上。

        一般来说设备上的MAC表项和ARP表项的出接口是一致的。在某一时间点t1,MAC地址表项和ARP表项的出接口是一致的,都是interface1;但是当端口切换后,t2时间时,MAC地址表项的出接口在收到报文时立即刷新为interface2,但是ARP表项的出接口还是interface1,需要等到t3时间点即ARP表项的老化时间到达后,通过ARP老化探测,才会刷新为interface2。这样就在t2时间点和t3时间点之间,ARP表项的出接口是不可用的,会导致不同网段间设备的通信中断。

        MAC刷新ARP可以实现在MAC出接口更新时,直接刷新ARP表项的出接口的功能。配置方法如下:

    进入系统视图。

    system-view

    配置MAC刷新ARP功能。

    mac-address update arp enable

    该命令只对动态ARP表项生效,不会更新静态ARP表项。

    使用arp anti-attack entry-check { fixed-mac | fixed-all | send-ack } enable命令配置ARP表项固化功能后,MAC刷新ARP功能不生效。

    使能了MAC刷新ARP功能后,只有MAC表项的出接口发生变化,才会更新对应的ARP表项。

2.3 配置基于接口关闭MAC地址学习

    创建VLAN,并将接口加入到VLAN中。

    # 将10GE1/0/1加入VLAN 10和VLAN 20。

    <HUAWEI> system-view

    [HUAWEI] sysname DeviceA

    [DeviceA] vlan batch 10 20

    [DeviceA] interface 10ge 1/0/1

    [DeviceA-10GE1/0/1] port link-type trunk

    [DeviceA-10GE1/0/1] port trunk allow-pass vlan 10 20

    [DeviceA-10GE1/0/1] quit

    配置基于接口关闭MAC地址学习。

    # 在接口10GE1/0/1上关闭MAC地址学习,端口学习到新的MAC地址的报文直接丢弃。

    [DeviceA] interface 10ge 1/0/1

    [DeviceA-10GE1/0/1] mac-address learning disable action discard      #关闭MAC地址学习功能

    [DeviceA-10GE1/0/1] quit

关闭MAC地址学习功能的缺省动作为forward,即对报文按照MAC地址表项进行转发,如果没有对应的MAC地址表项,则广播该报文。当配置动作为discard时,会对报文的源MAC地址进行匹配,当接口和MAC地址与MAC地址表项匹配时,对该报文进行转发;当接口和MAC地址与MAC地址表项不匹配时,丢弃该报文。

2.4 配置端口聚合

        如果出现mac漂移的源端口和漂移端口是同一个主机且做同一个业务网卡使用,可以将这两个接口配置eth-trunk。

2.5 配置接口为二层接口

    [DeviceA] interface 10ge 1/0/1

    [DeviceA-10GE1/0/1] portswitch                       #将接口从三层模式切换到二层模式

有关[网络工程师]-huawei交换机MAC漂移的更多相关文章

  1. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  2. ruby-on-rails - 如何在 mac os snow leopard 中升级 ruby​​ 和 rails - 2

    我想将我的MacSnowLeopardruby​​从1.8.7升级到1.9.1版本,有人知道轻松且最好的升级方法吗?因为我读了一些论坛/帖子/博客/讨论说覆盖苹果发布的ruby不好将Rails从版本2.2.2升级到2.3.8的最佳方法是什么?因为我找到的所有信息都仅适用于豹/老虎,而且很少有关于雪豹的复杂文章。他们还说覆盖apple提供的rails不好吗。谁能帮帮我?谢谢。 最佳答案 DanBenjamin有一些greatinstructionsforcompilingandinstallingRuby,RubyGemsandRai

  3. ruby - 在不使用 RVM 的情况下在 Mac 上卸载和升级 Ruby - 2

    我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案

  4. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  5. ruby-on-rails - gem install rmagick -v 2.13.1 错误 Failed to build gem native extension on Mac OS 10.9.1 - 2

    我已经通过提供MagickWand.h的路径尝试了一切,我安装了命令工具。谁能帮帮我?$geminstallrmagick-v2.13.1Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingrmagick:ERROR:Failedtobuildgemnativeextension./Users/ghazanfarali/.rvm/rubies/ruby-1.8.7-p357/bin/rubyextconf.rbcheckingforRubyversion>=1.8.5...yescheckingfor/

  6. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  7. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  8. ruby - 在 TCPServer (Ruby) 中,我如何从客户端获取 IP/MAC? - 2

    我想在Ruby的TCPServer中获取客户端的IP地址。以及(如果可能的话)MAC地址。例如,Ruby中的时间服务器,请参阅评论。tcpserver=TCPServer.new("",80)iftcpserverputs"Listening"loopdosocket=tcpserver.acceptifsocketThread.newdoputs"Connectedfrom"+#HERE!HowcanigettheIPAddressfromtheclient?socket.write(Time.now.to_s)socket.closeendendendend非常感谢!

  9. ruby - 安装 tiny_tds 在 mac os 10.10.5 上出现错误 - 2

    我正在使用macos,我想使用ruby​​驱动程序连接到sqlserver。我想使用tiny_tds,但它给出了缺少free_tds的错误,但它已经安装了。怎么能过这个?~brewinstallfreetdsWarning:freetds-0.91.112alreadyinstalled~sudogeminstalltiny_tdsBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtiny_tds:ERROR:Failedtobuildgemnativeextension.完整日志如下:/System

  10. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

随机推荐