草庐IT

HCNP Routing&Switching之链路聚合

1874 2023-03-28 原文

  前文我们了解了MSTP相关话题,回顾清参考https://www.cnblogs.com/qiuhom-1874/p/16268682.html;今天我们来聊一聊链路聚合相关话题;

  链路聚合是链路高可用的一种方式,它不仅可以有冗余备份的链路来提高链路的可靠性,同时也可以将多个链路聚合在一起,使得链路的带宽增加;我们知道随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出了越来越高的要求;在传统技术中,常用更换更高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽,但这种方案需要付出额外的费用,而且不够灵活;采用链路聚合技术可以在不进行硬件升级的条件下,通过将多个物理接口捆绑为一个逻辑接口,来达到增加链路带宽的目的;在实现增大带宽目的的同时,链路聚合采用备份链路的机制,可以有效提高设备之间链路的可靠性;

  组网经常遇到的问题

  提示:如上图所示,接入层到汇聚层都是单链路,如果链路故障,那么最直接的就是对应区域的终端将无法正常和其他区域终端通信;虽然汇聚到核心层是双链路,但是由于链路带宽太小,满足不了使用;如果使用三层,每增加一条链路,则对应链路有需要分配IP地址,造成ip地址浪费;那该怎么办才能满足既不升级物理硬件,又不浪费ip地址空间,同时又能避免单链路故障呢?答案是链路聚合技术;

  链路聚合应用场景

  在企业网络中,所有设备的流量在转发到其他网络前都会汇聚到核心层,再由核心层设备转发到其他网络,或者转发到外网;因此在核心设备负责数据告诉交换时,容易发生拥塞;为了避免核心层数据交换发生拥塞,我们通常把链路聚合部署在核心层上,用来提升整个网络的数据吞吐量;

  提示:链路聚合一般部署在核心节点上,提升核心层带宽,从而实现提升整个网络数据吞吐量;

  链路聚合概述

  提示:所谓链路聚合就是把两台设备之间的多条物理链路聚合在一起,当做一条逻辑链路使用;两台设备可以是一对路由器,一对交换机,也可以是一台路由器和一条交换机;一条聚合的链路可以包含多条成员链路,华为的ARG3系列路由器和X7系列交换机上默认最多一条聚合链路可以捆绑8条成员链路;链路聚合有调高链路带宽,链路的可靠性,同时实现流量的负载均衡;

  链路聚合模式

  1、手工负载分担:该模式下所有的成员链路都是活动链路,所有成员链路都会参与数据转发,平均分担流量;

  提示:手工负载分担模式,主要用在当两台设备中至少有一台设备不支持LACP的场景;或者网络拓扑相对简单的环境;手工模式所有成员链路都是活动链路,都会参与数据的转发,没有非活动链路;如果一条成员链路宕掉以后,对应流量会被其他活动链路分担;

  2、LACP:该模式是通过LACP报文进行协商,确定活动接口和非活动接口;

  提示:LACP模式,可以人工手动配置一些链路充当备份链路,也叫M:N模式;M代表活动的成员链路数量,用于负载均衡模式中转发数据;N代表非活动链路数,主要用来冗余备份活动链路的;如果有活动成员链路宕掉以后,对应备份链路会顶替上去接替宕掉的链路;

  手动负载分担模式和LACP模式对比

  提示:跨设备链路聚合是指三台以上设备做链路聚合;

  LACP模式活动链路的选取

 

  提示:首先设备间会先发送LACP报文,确定下设备优先级,通过比较设备优先级取定谁是主动端;然后主动端通过比较接口优先级确定活动链路;简单讲就是先确定设备优先级,然后主动端通过比较接口优先级确定活动链路;

  LACP模式的抢占机制

  提示:我们知道在LACP模式下,如果有活动链路宕掉后,对应备份链路会顶替上去成为活动链路;那么对于宕掉的链路如果恢复正常,它是否会抢占之前的顶替它的活动链路呢?这个取决主动端是否开启了抢占,如果没有开启抢占,则不会抢占;如果开启抢占,它也不是立刻马上就抢占,而是等待抢占延时超时后,才会进行抢占;

  链路聚合条件

  提示:设备间实现链路聚合,首先链路两端相连的接口数量、速率、双工方式、流控方式必须保持一致,其次接口VLAN、Trunk、Hybird配置一致;

  链路聚合负载分担类型(以下这些算法都是基于数据流,而非数据包,所谓数据流是指源目IP、源目MAC、端口相同的数据包成为一组数据流)

  1、根据源MAC地址进行负载分担;

  2、根据目标MAC地址进行负载分担;

  3、根据源ip地址进行负载分担;

  4、根据目标ip地址进行负载分担;

  5、根据源MAC和目的MAC地址进行负载分担;

  6、根据源IP和目的IP地址进行负载分担;

  7、根据VLAN、源物理端口等L2、IPV4、IPV6和MPLS报文进行增强型负载分担;

  链路聚合配置

  1、手工负载分担模式

  创建聚合逻辑接口

  将物理接口加入到聚合接口

  提示:先进对应物理接口,然后在接口模式下使用eth-trunk 编号,命令将对应物理接口加入到聚合接口;

  查看成员信息

  提示:上述两条命令都可以查看成员信息,不同之处加上interface 对应显示的信息要全面些;

  以上表示创建二层聚合接口,对端配置和上面一样,如果我们需要创建三层聚合接口我们只需要在对应接口下使用命令undo portswitch命令即可

  提示:华为模拟器虽然支持undo portswitch命令,但后续不支持ip 命令添加ip地址;有些型号的真机是支持的;

  路由器上创建聚合接口的方式和上述交换机创建聚合接口命令一样,不同之处在于物理接口加入到聚合接口前,首先要将eth-trunk 接口从而层变为三层接口后才能加入,如下

  提示:对端配置方式和本端配置类似;在路由器上eth-trunk接口变成三层接口后,是支持ip add命令添加ip地址;如下

  2、LACP模式

  创建聚合接口的方式和手工模式创建聚合接口一样

  更改模式为LACP

  提示:默认不更改模式就是manual 手工模式;

  配置最大活动链路数量

  提示:配置最大活动链路数量,如果活动数量小于成员链路总数,剩下的链路数量就是备份链路;

  开启抢占模式

  提示:默认开启了抢占模式以后,对应抢占延时时长为30秒;如果没有开启抢占模式,对应preempt delay time是disabled;

  配置抢占延迟时长

  提示:抢占延时时长的范围是10-180秒;

  配置负载分担算法

  提示:默认是负载分担的算法是异或 源目ip;

  配置LACP接口优先级

  提示:接口优先级需要先将对应物理接口加入到聚合接口里以后才能进行修改;修改时需要进入到对应物理接口模式下;

  配置LACP设备优先级

  提示:优先级数字越小,优先级就越优先;默认优先级为32768;

  物理接口加入到聚合接口和配置交换机命令一样

  提示:可以看到我们只配置了本端后,对应聚合接口并没有起来;使用lacp模式后,只有两端都配置了以后,对应接口才会起来;

  提示:可以看到我们把两端都配置好以后,对应聚合接口就起来了,并且只有两个活动的接口;

  测试:现在我们把g0/0/1口down掉,看看g0/0/3口是否会顶替上去?

  提示:可以看到g0/0/1down掉以后,对应备份链路会立刻顶替上去;

  恢复g0/0/1看看对应链路是否会抢占呢?

  提示:可以看到当我们恢复g0/0/1以后,对应并没有立即抢占,这是因为开启抢占模式以后,对应需要等到抢占延时时长超时以后,对应接口才会成为活动接口;

有关HCNP Routing&Switching之链路聚合的更多相关文章

  1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  2. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  3. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  4. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  5. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  6. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  7. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  8. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  9. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  10. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

随机推荐