一、应用环境


目前大部分网关或服务器设备常采用双链路同时接入多条ISP链路的方式来满足网络的负载均衡和主备切换等,实现该功能常用的方法是利用策略路由技术,根据链路的网络状况和权重配置在路由时动态选择不同的链接发送数据,从而实现多路的负载分担。

针对于点到点隧道模式的连接如vxlan,由于其采用四层UDP封装的方式,在端口和IP地址固定的情况下,采用策略路由无法有效的散列到不同链路上。

本文描述了在具有双物理链路的设备上,如何在Openvswitch中针对vxlan隧道实现负载均衡策略的实现方法,并搭建测试环境进行方案有效性的验证。

Open vSwitch(Open Source Virtual Switch) 是一款基于软件实现的开源虚拟交换机。

二、实验组网


两台设备server1和server2通过交换机相互通信,分别在两台设备上运行Openvswitch,通过建立vxlan隧道对接入的VM1和VM2进行二层跨域组网,其中server1上存在两个物理链路和serve2进行通信,通过本文的负载均衡方案,能够使vxlan隧道报文负载分担到两条物理链路上,组网如下图所示:

三、实验原理


在OVS中建立两个vxlan端口,每个vxlan端口绑定对应的链路出接口,并建立group table,类型设置为select,把两个vxlan端口加入group中的bucket中,通过流表建立其它端口和group的转发关系,通过group对数据流的随机散列,从而实现对物理链路的负载均衡,下图给出了OVS中的网络结构:

四、实验过程


在server1上的配置

1、安装openvswitch软件

yum install openvswitch
systemctl enable openvswitch.service
systemctl start openvswitch.service
systemctl status openvswitch.service

查看ovs运行情况 ps -ea | grep ovs

查看ovs版本 ovs-appctl --version

查看 OVS 支持的 OpenFlow 协议的版本 ovs-appctl --version

2、创建ovs桥(即ovs交换机)

ovs-vsctl add-br br-local

列出所有网桥 ovs-vsctl list-br

3、设置ovs桥支持的openflow版本

ovs-vsctl set bridge br-local protocols=OpenFlow13

4、把if1接口加入桥端口中,用于VM1接入ovs桥中

ovs-vsctl add-port br-local if1

5、创建vxlan0和vxlan1,并分别绑定两个链路接口

ovs-vsctl add-port br-local vxlan1 -- set interface vxlan1 type=vxlan  options:remote_ip=10.1.80.14 option:local_ip=10.1.80.13  options:key=100
ovs-vsctl add-port br-local vxlan2 -- set interface vxlan2 type=vxlan options:remote_ip=10.1.80.14 option:local_ip=10.1.80.15 options:key=100

其中option:local_ip用于绑定对应IP的网络接口,对端地址option:remote_ip为server2的IP地址,查看vxlan端口配置:

6、创建group,并把vxlan1和vxlan2加入group中

ovs-ofctl -O OpenFlow13 add-group br-local  group_id=5566,type=select,bucket=output:2,bucket=output:3

其中bucket表示加入group的端口号,vxlan1和vxlan2在br-local中的端口号分别为2和3(ovs-ofctl show br-local -O OpenFlow13命令可以查看,也可以在创建vxlan端口时通过ofport_request指定),查看group的配置:

7、创建入口为if1转发到group的流表

在server2上的配置

1、2中不需要负载均衡,主要是vxlan的配置需要和server1中的两条链路对应:

ovs-vsctl add-port br-local vxlan1 -- set interface vxlan1 type=vxlan  options:remote_ip=10.1.80.13  options:key=100
ovs-vsctl add-port br-local vxlan1 -- set interface vxlan1 type=vxlan options:remote_ip=10.1.80.15 options:key=100

server2中采用默认流表,不需要流表配置

关于VXLAN的认识-----ovs+vxlan多链路负载分担的实现方法的更多相关文章

  1. 【Network】OVS VXLAN/GRE 实践

    参考资料: OVS/VXLAN/GRE参考 ovs vxlan IP overray_百度搜索 OVS操作总结-Neutron-about云开发 OpenStack OVS GRE/VXLAN网络_z ...

  2. neutron ovs+vxlan

    title: Neutron ovs+vxlan date: 2017-04-26 23:37 tags: Network 主机网卡配置 controller: ens160:192.168.11.1 ...

  3. OVS+VXLAN实现两个宿主机上的VM间的通信

    一.组网图 说明: 1.使用网络命名空间表示vm1和vm2. 因为我没有两台物理服务器. 2.使用virtualbox 的两条虚机模拟作为host1和host2. 二.配置指导 1.创建网桥 br0 ...

  4. VXLAN 基础教程:VXLAN 协议原理介绍

    VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术.它是一种 Overlay(覆盖网络)技术,通过三层的网络来搭建虚拟 ...

  5. apache与tomcat负载集群集成方法配置

    apache与tomcat负载集群集成方法有3种jk.jk_proxy.http_proxy apache:httpd-2.2.17-win32-x86-no_ssl.msi tomcat:apach ...

  6. 如何设置nginx日志格式来查看负载分担结果

     转载:http://www.cnblogs.com/LoveJulin/p/5082363.html nginx配置好负载分担后,测试的时候,如何查看负载分担情况:通过设置nginx日志显示: ng ...

  7. 华为S5700系列交换机AR配置静态IP双链路负载分担

    适用于:有多个以太WAN口的机型. 业务需求: 运营商1分配的接口IP为100.100.1.2,子网掩码为255.255.255.252,网关IP为100.100.1.1. 运营商2分配的接口IP为2 ...

  8. HCNA配置手工负载分担模式链路聚合

    一.配置手工负载分担模式链路聚合 链路聚合(Link Aggregation)是将—组物理接口捆绑在一起作为一个逻辑接口来增加带宽的一种方法,又称为多接口负载均衡组(Load Sharing Grou ...

  9. EIGRP-16-其他和高级的EIGRP特性-2-非等价负载分担

    与大多数内部路由协议不同的是, EIGRP能够将流量负载分到多条非等价路径上,而不仅仅使用去往目的地最近距离的那一条路径.提供这项功能的特性称为非等价负载分担.   非等价负载分担的核心概念是可行后继 ...

随机推荐

  1. (最大连续和/最大子段和) P1115 最大子段和 洛谷

    题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 第一行是一个正整数NN,表示了序列的长度. 第二行包含NN个绝对值不大于1000010000的整数A_iAi ...

  2. matlab : Nelder mead simplex 单纯形直接搜索算法;

    function [ param ] = NeldSearch( param ) %NERDSEARCH 此处显示有关此函数的摘要 % nelder mead simplex 单纯形直接搜索算法: % ...

  3. kaggle竞赛入门整理

    1.Bike Sharing Demand kaggle: https://www.kaggle.com/c/bike-sharing-demand 目的:根据日期.时间.天气.温度等特征,预测自行车 ...

  4. 剑指Offer_编程题_16

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. /* struct ListNode { int val; struct ListNode *n ...

  5. Ipython Notebook ipynb文件转化为Python脚本

    欢迎关注博主主页,学习python视频资源 方法1. pycharm可以打开 方法2 https://jingyan.baidu.com/article/19192ad8edc736e53e57072 ...

  6. 【C#】C#格式化文件大小

    /// <summary> /// 格式化文件大小的C#方法 /// </summary> /// <param name="filesize"> ...

  7. 解决pycharm问题:module 'pip' has no attribute 'main'

    问题 更新pip之后,Pycharm安装package出现如下报错: 解决 找到安装目录下 helpers/packaging_tool.py文件,找到如下代码: 修改为如下,保存即可.

  8. Hbuilder开发app时生成ios要的mobileprovision和p12文件步骤.

    1.在MAC电脑.钥匙串串访问->证书助理->从证书颁发机构请求证书,创建一个证书为certSigningRequest文件 2.在Apple Developer中的Certificate ...

  9. 解决Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.17 问题

    详细报错如下 Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.17 from http://maven ...

  10. retry示例

    #!/usr/bin/python2.7 # -*- coding: utf-8 -*- import time import exceptions def func(): # a,b = None ...