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的倍数,总体流量在链路上的分布可能不平均。
 
 
 

STP-18-Port-Channl上的负载均衡的更多相关文章

  1. 使用Nginx在自己的电脑上实现负载均衡

    我其实早就想弄这个负载均衡了,但是总觉得这玩意肯定不简单,今天星期六闲着没事终于下定决心来搞一搞他了,但是没想到这玩意这么简单,真的是出乎我的意料的简单(我现在陪的是最简单的那种).额是没有我想象中的 ...

  2. 云计算之路-阿里云上:负载均衡错误修改Cookie造成用户无法登录

    最近陆续有用户反馈在我们网站上登录时遇到登录死循环问题.输入用户名与密码提交后,显示登录成功,但跳转到目标网址后(由于依然处于未登录状态)又跳转回登录页面,再次登录,再次这样...就这样一直循环,怎么 ...

  3. Nginx + Tomcat 在 Windows7 上搭建负载均衡集群

    一.安装Tomcat和Nginx 首先安装两个apache-tomcat-8.0.41,下载地址:http://tomcat.apache.org 并安装一个nginx-1.13.0,下载地址http ...

  4. WEB 集群与负载均衡(一)基本概念-上

    Web集群是由多个同时运行同一个web应用的服务器组成,在外界看来就像一个服务器一样,这多台服务器共同来为客户提供更高性能的服务.集群更标准的定义是:一组相互独立的服务器在网络中表现为单一的系统,并以 ...

  5. rabbitmq3.6.5镜像集群搭建以及haproxy负载均衡

    一.集群架构 后端75.103.69分别是3台rabbitmq节点做镜像集群,前端103用haproxy作为负载均衡器 二.安装rabbitmq节点 参照 https://www.cnblogs.co ...

  6. Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程

    人原创,一个字一个字地码的,尊重版权,转载请注明出处! http://blog.csdn.net/chaijunkun/article/details/6987443 最近在开发的项目需要承受很高的并 ...

  7. SpringCloud 源码系列(4)—— 负载均衡 Ribbon

    一.负载均衡 1.RestTemplate 在研究 eureka 源码上篇中,我们在 demo-consumer 消费者服务中定义了用 @LoadBalanced 标记的 RestTemplate,然 ...

  8. nginx + tomcat配置负载均衡

    目标:Nginx做为HttpServer,连接多个tomcat应用实例,进行负载均衡. 注:本例程以一台机器为例子,即同一台机器上装一个nginx和2个Tomcat且安装了JDK1.7. 1.安装Ng ...

  9. linux负载均衡总结性说明(四层负载/七层负载)

    在常规运维工作中,经常会运用到负载均衡服务.负载均衡分为四层负载和七层负载,那么这两者之间有什么不同?废话不多说,详解如下: 一,什么是负载均衡1)负载均衡(Load Balance)建立在现有网络结 ...

随机推荐

  1. 如何在Android开发中测试应用在真机上实验

    1.首先将手机设置为调试模式 方法:设置——应用程序——开发——USB调试,打上√即可     2.用数据线连接至电脑   3.然后打开eclipse 右击点击工程,选择 Run as,再选择Run ...

  2. IE input 去掉文本框的叉叉和密码输入框的眼睛图标

    ::-ms-clear, ::-ms-reveal{display: none;}

  3. 错误名称:Uncaught SyntaxError: Unexpected identifier

    控制台输出: 1.谷歌:Uncaught SyntaxError: Unexpected identifier 2.火狐:SyntaxError: missing ] after element li ...

  4. Error Domain=NSURLErrorDomain Code=-1202,Https服务器证书无效

    错误:“此服务器的证书无效.您可能正在连接到一个伪装成“www.xxxxxx.com”的服务器, 这会威胁到您的机密信息的安全 原因:安全证书是自建证书,没有得到认证. 解决方法: 1.导入NSURL ...

  5. DEBUG命令说明

    Debug在学习汇编的过程中,担任着一个非常重要的角色,是一个极其重要的调试工具,所以学会它是必须得. 命令格式 功能说明 A [地址] 输入汇编指令 C [范围] 起始地址 对由“范围”指定的区域与 ...

  6. tcpdump示例

    今天有需求要用tcpdump,给一个我使用的例子: sudo /usr/sbin/tcpdump  dst 10.20.137.24 and tcp port 8080 -A -s0  -w nous ...

  7. [转]CSS禁止文字选择

    user-select有两个值: none:用户不能选择文本 text:用户可以选择文本 需要注意的是:user-select并不是一个W3C的CSS标准属性,浏览器支持的不完整,需要对每种浏览器进行 ...

  8. js函数篇

    1.闭包函数,作用:不污染全局变量,  定义:与外界隔离的独立作用域被称为闭包,使用函数实现该功能称为函数闭包: 写法: (function(){ function sayHello(){ conso ...

  9. 实现oracle分页---3种方法--

    oracle的分页一共有三种方式 方法一 根据rowid来分 SELECT * FROM EMP WHERE ROWID IN (SELECT RID FROM (SELECT ROWNUM RN, ...

  10. numpy.matlib.randn(标准正态分布)

    #网址 http://docs.scipy.org/doc/numpy/reference/generated/numpy.matlib.randn.html#numpy.matlib.randn n ...