zoukankan      html  css  js  c++  java
  • STP-18-Port-Channl上的负载均衡

    Ether Channel通过在多条链路上传输多个数据帧,增加了可用带宽。一个以太网帧总是通过一个Ether Channel中的一条链路传输。针对数据帧地址字段执行散列计算能够产生一个编号,标识这个数据帧在Ether Channel中转发所使用的物理链路。在特定地址字段(或多个字段)中拥有相同的值,且使用这个值来计算散列值的一系列数据帧,称为一个会话或一条数据流。散列函数是决定性因素,也就是说一条数据流中的所有数据帧会计算出相同的散列值,因此设备会通过相同的物理链路来转发这些数据帧。因此,只通过一条数据流是感觉不出可用带宽的增加的;多条数据流才会有机会被分布到多条链路上,从而能够实现更高的汇总吞吐量。一条数据流通过一条链路传输,进而无法受益于带宽增长,这是一项不足之处;不过,这种方式也防止了重新排序数据帧。序列属性是至关重要的,因为Ether Channel——作为透明技术——必须不能引入在普通以太网中不应该出现的问题。
     
    负载均衡的具体方式根据交换机型号和软件版本而有所不同。通常,负载均衡基于二层、三层和/或四层头部的内容。如果负载均衡只基于数据帧中的一个头部字段执行,这个字段会用来执行散列计算。若使用多个头部字段,首先在所选字段之间使用XOR操作,且只有这个XOR的结果用来执行散列计算。Cisco所使用的散列函数详情并未公开,并且可能根据不同的交换机平台而变化。
     
    为了达到最好的均衡效果,在Port-Channel中传输的各种数据帧应该使用不同的头部字段来进行负载均衡。例如,对于连接到接入层交换机的二层Port-Channel,从接入层交换机到分布层交换机的大部分流量都可能是从客户到默认路由器的。所以大部分帧都有不同的源MAC地址,但有相同的目的MAC地址。对于从分布层交换机去往接入层交换机的数据包,其中许多数据帧可能有相同路由器的源地址,以及不同的MAC地址。所以工程师可以在接入层交换机上基于源MAC地址执行均衡,在分布层交换机上基于目的MAC地址执行均衡——或者在两类交换机上同时基于两个地址字段执行均衡。目标就是使用数据帧中字段值有变化的均衡方式。
     
    工程师可以使用全局配置命令port-channel load-balance type来设置负载均衡的类型。type选项包括使用源和目的MAC地址、IP地址以及TCP和UDP端口——可以设置一个字段值,或同时设置源和目的地址。由于这是一条全局配置命令,因此它会影响交换机上所有EtherChannel的操作。EtherChannel两端的设备通常可以使用不同的负载均衡算法。
     
    一个EtherChannel中最多可以有8个活跃成员链路。这个限制很合理,因为各版本以太网的速率差别数量级为10(10Mbit/s、100Mbit/s、1Gbit/s、10Gbit/s、100Gbit/s)。一个EtherChannel中有超过8条链路捆绑在一起的话,速率就近似于使用下一级更快的以太网版本,所以在这种情况中考虑换用更快的以太网技术是很合理的。在许多Catalyst交换机平台上,散列函数会生成范围在0~7之间的3比特结果,这个值会被分配给每条成员链路。对于一个EtherChannel中捆绑的8条物理链路,每条链路都正好分配到这个范围中的一个值。如果物理链路少于8条,就会有些链路分配到这个范围中的多个值,因此,有的链路会比其他链路承载更多的流量。下表描述了流量总量比(Pn表示一个EtherChannel中的第n个端口)。
     
    在理想环境下,只有在链路数量是8、4或2时,成员链路上的流量分布才会相等。对于3比特散列函数生成的8个值,每个值代表总流量的1/8=12.5%。用12.5%这种倍数来分布流量,是非常粗糙的做法。也可以使用DIV和MOD来计算比率:例如,一条捆绑链路中有3条物理链路,每条链路将被分配8DIV3=2个结果散列值,8MOD3=2条链路将得到额外的结果散列值,产生比率(2+1):(2+1):2=3:3:2,或37.5%:37.5%:25%。
     
    在其他Cisco交换机平台上,虽然仍限制EtherChannel最多使用8条链路,但使用了8比特的散列结果。这个散列值能够提供256个可能的结果,因此每个值仅代表流量的1/256=0.390625%。一个EtherChannel中的每条物理链路上分布的流量因此具有更细的粒度。有3条链路时,每条链路将被分配256DIV3=85个结果散列值,且256MOD3=1条链路将得到额外的结果散列值。所以流量划分比例是86:85:85,或大致分为33.6%:33.2%:33.2%,这比3:3:2更平均。
     
    Port-Channel有时会被错误地描述为只能处理2条、4条或8条链路。这是不正确的——一个Port-Channel可以处理1~8之间的任意数量的链路。然而,如前所述,如果链路数量不是2的倍数,总体流量在链路上的分布可能不平均。
     
     
     
  • 相关阅读:
    新购服务器流程
    nginx代理证书使用方法
    一键部署lnmp脚本
    mysql主从库配置读写分离以及备份
    Linux入门教程(更新完毕)
    Git 工作流程
    Git远程操作
    常用Git命令
    js数组去重
    Sublime Text设置快捷键让html文件在浏览器打开
  • 原文地址:https://www.cnblogs.com/swefii/p/10964861.html
Copyright © 2011-2022 走看看