设为首页 收藏本站
查看: 1150|回复: 0

[经验分享] Link Aggregation and LACP with Open vSwitch

[复制链接]

尚未签到

发表于 2019-1-27 09:35:43 | 显示全部楼层 |阅读模式
  In this post, I’m  going to show you how to use link aggregation (via the Link Aggregation  Control Protocol, or LACP) with Open vSwitch (OVS). First, though, let’s  cover some basics.
  In the virtualization space, it’s extremely common to want to use  multiple physical network connections in your hypervisor hosts to  support guest (virtual machine) traffic. The problem is that modern-day  networking is—for now—largely constrained by the presence of Spanning  Tree Protocol (STP), which limits the use of multiple connections  between network devices (especially switches). Since most hypervisors  have some form of virtual switch to support guest traffic, and since  users don’t want to be constrained by STP the hypervisors have had to  find workarounds.
  VMware works around STP by causing their virtual switches to operate  in what is called “end-host mode,” meaning that the virtual switch does  not participate in STP (newer versions of vSphere can, in fact, block  STP BPDUs from being emitted), the virtual switch does not forward  frames received on one uplink back out another uplink, and traffic from  VMs is statically assigned (pinned) to an uplink. (This behavior is, of  course, configurable.) Because of these default behaviors, users in  VMware environments simply connect multiple links to their hosts and off  they go.
  Other environments behave differently. Environments using Open  vSwitch (OVS), for example, need to use other methods to work around the  presence of STP, especially considering that OVS is more a  full-featured virtual switch than the standard VMware vSwitch. In most  cases, the workaround involves the use of link aggregation;  specifically, the use of Link Aggregation Control Protocol (LACP), a  standardized protocol that allows devices to automatically negotiate the  configuration and use of link aggregates comprised of multiple physical  links.
  Now that you have the background, let’s dive into the details of how  to make this work. These instructions on using LACP with OVS do make a  few assumptions:


  • First, I assume that OVS is already installed and working.
  • I assume that the management traffic to/from your host is not  running through OVS, and thus won’t be interrupted by any  configurations you do here. If this is not the case, and you do have  management traffic running through OVS, you might want to exercise some  additional caution to ensure you don’t accidentally cut your  connectivity to the host.
  • I assume that you know how to configure your physical switch(es) to  support LACP on the links coming in from OVS. The configuration will  vary from switch vendor to switch vendor; refer to your vendor’s  documentation for details.
  This post was written using Ubuntu 12.04.1 LTS and Open vSwitch 1.4.0 (installed using apt-get  directly from the Precise Pangolin repositories). The use of a  different Linux distribution and/or a different version of OVS might  make this process slightly different.
  The first step is to add a bridge (substitute your desired bridge name for ovsbr1 in the following command):
  

  
ovs-vsctl add-br ovsbr1
  

  Once the bridge is established, then you’ll need to create a bond.  This is the actual link aggregate on OVS. The syntax for adding a bond  looks something like this:
  

  
ovs-vsctl add-bond   
  

  So, if you wanted to add a bond to ovsbr1 using physical interfaces eth1 and eth3, your command would look something like this:
  

  
ovs-vsctl add-bond ovsbr1 bond0 eth1 eth3
  

  However, there’s a problem with this configuration: by default, LACP isn’t enabled on a bond. To fix this, you have two options.


  • Change the command use to create the bond, so that LACP is enabled when the bond is created.
  • Enable LACP after the bond is created.
  For option #1, you’ll simply append lacp=active to the command to create the bond, like so:
  

  
ovs-vsctl add-bond ovsbr1 bond0 eth1 eth3 lacp=active
  

  For option #2, you’d use ovs-vsctl set to modify the properties of the bond. Here’s an example:
  

  
ovs-vsctl set port bond0 lacp=active
  

  Once the bond is created and LACP is enabled, you can check the  configuration and/or status of the bond. Assuming that you’ve already  configured your physical switch correctly, your bond should be working  and passing traffic. You can use this command to see the status of the  bond:
  

  
ovs-appctl bond/show
  

  The output from that command will look something like this:
  

  
bond_mode: balance-slb
  
bond-hash-algorithm: balance-slb
  
bond-hash-basis: 0
  
updelay: 0 ms
  
downdelay: 0 ms
  
next rebalance: 6415 ms
  
lacp_negotiated: true
  

  
slave eth4: enabled
  
active slave
  
may_enable: true
  

  
slave eth3: enabled
  
may_enable: true
  

  
slave eth1: enabled
  
may_enable: true
  

  
slave eth2: enabled
  
may_enable: true
  

  This command will show more detailed LACP-specific information:
  

  
ovs-appctl lacp/show
  

  This command returns a great deal of information; here’s a quick snippet:
  

  
---- bond0 ----
  
status: active negotiated
  
sys_id: 00:22:19:bd:db:dd
  
sys_priority: 65534
  
aggregation key: 4
  
lacp_time: fast
  

  
slave: eth1: current attached
  
port_id: 4
  
port_priority: 65535
  

  
actor sys_id: 00:22:19:bd:db:dd
  
actor sys_priority: 65534
  
actor port_id: 4
  
actor port_priority: 65535
  
actor key: 4
  
actor state: activity timeout aggregation synchronized collectingdistributing
  

  
partner sys_id: 00:12:f2:cc:6d:40
  
partner sys_priority: 1
  
partner port_id: 12
  
partner port_priority: 1
  
partner key: 10000
  
partner state: activity aggregation synchronized collectingdistributing
  

  You can also use this command to view the configuration details of the bond:
  

  
ovs-vsctl list port bond0
  

  The output from this command will look something like this:
  

  
_uuid               : ae7eb7ca-e3e0-4166-bcfb-4348071799e0
  
bond_downdelay      : 0
  
bond_fake_iface     : false
  
bond_mode           : []
  
bond_updelay        : 0
  
external_ids        : {}
  
fake_bridge         : false
  
interfaces          : [9963381b-6a7d-4a8f-acf8-86150361530e,bee2df86-ed14-456b-8f3a-25fb00fa6040, daf5ac51-4135-4e3c-a937-c62dfc4b5e9f,fcd2d6ef-9a18-452a-9a79-1c97e5a95ef2]
  
lacp                : active
  
mac                 : []
  
name                : "bond0"
  
other_config        : {lacp-time=fast}
  
qos                 : []
  
statistics          : {}
  
status              : {}
  
tag                 : []
  
trunks              : []
  
vlan_mode           : []
  

  In learning how to use LACP with OVS, I found this article to be extremely helpful.
  If you have questions, or have additional information to share with  me and/or other readers, please speak up in the comments. Thanks!



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668105-1-1.html 上篇帖子: Open Live Writer安装发布管理博客 下篇帖子: window.open參數
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表