关于VXLAN的认识-----ovs+vxlan多链路负载分担的实现方法
一、应用环境
目前大部分网关或服务器设备常采用双链路同时接入多条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多链路负载分担的实现方法的更多相关文章
- 【Network】OVS VXLAN/GRE 实践
参考资料: OVS/VXLAN/GRE参考 ovs vxlan IP overray_百度搜索 OVS操作总结-Neutron-about云开发 OpenStack OVS GRE/VXLAN网络_z ...
- neutron ovs+vxlan
title: Neutron ovs+vxlan date: 2017-04-26 23:37 tags: Network 主机网卡配置 controller: ens160:192.168.11.1 ...
- OVS+VXLAN实现两个宿主机上的VM间的通信
一.组网图 说明: 1.使用网络命名空间表示vm1和vm2. 因为我没有两台物理服务器. 2.使用virtualbox 的两条虚机模拟作为host1和host2. 二.配置指导 1.创建网桥 br0 ...
- VXLAN 基础教程:VXLAN 协议原理介绍
VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术.它是一种 Overlay(覆盖网络)技术,通过三层的网络来搭建虚拟 ...
- apache与tomcat负载集群集成方法配置
apache与tomcat负载集群集成方法有3种jk.jk_proxy.http_proxy apache:httpd-2.2.17-win32-x86-no_ssl.msi tomcat:apach ...
- 如何设置nginx日志格式来查看负载分担结果
转载:http://www.cnblogs.com/LoveJulin/p/5082363.html nginx配置好负载分担后,测试的时候,如何查看负载分担情况:通过设置nginx日志显示: ng ...
- 华为S5700系列交换机AR配置静态IP双链路负载分担
适用于:有多个以太WAN口的机型. 业务需求: 运营商1分配的接口IP为100.100.1.2,子网掩码为255.255.255.252,网关IP为100.100.1.1. 运营商2分配的接口IP为2 ...
- HCNA配置手工负载分担模式链路聚合
一.配置手工负载分担模式链路聚合 链路聚合(Link Aggregation)是将—组物理接口捆绑在一起作为一个逻辑接口来增加带宽的一种方法,又称为多接口负载均衡组(Load Sharing Grou ...
- EIGRP-16-其他和高级的EIGRP特性-2-非等价负载分担
与大多数内部路由协议不同的是, EIGRP能够将流量负载分到多条非等价路径上,而不仅仅使用去往目的地最近距离的那一条路径.提供这项功能的特性称为非等价负载分担. 非等价负载分担的核心概念是可行后继 ...
随机推荐
- (最长回文子串 线性DP) 51nod 1088 最长回文子串
输入一个字符串Str,输出Str里最长回文子串的长度. 回文串:指aba.abba.cccbccc.aaaa这种左右对称的字符串. 串的子串:一个串的子串指此(字符)串中连续的一部分字符构成的子(字符 ...
- django_orm查询性能优化
查询操作和性能优化 1.基本操作 增 models.Tb1.objects.create(c1='xx', c2='oo') 增加一条数据,可以接受字典类型数据 **kwargs obj = mode ...
- scp从远程指定目录拷贝文件到本地指定目录
scp从远程指定目录拷贝文件到本地指定目录 [root@picts ~]# cat /root/scp_pictures.sh #!/bin/bash # Function: copy files f ...
- Java流程语句
流程控制语句 if语句: if语句的执行流程 例子: public class IfDemo01 { public static void main(String[] args) { int x = ...
- linux proc
/proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用.可以使用的文件随系统配置的变化而变化. /proc/cmdline 这个文件给出了内核启动的命 ...
- 2017-12-15python全栈9期第二天第三节之使用while循环输出1到100的奇数,
#!/user/bin/python# -*- coding:utf-8 -*-count = 1while count <101: if count % 2 == 1: print(count ...
- jenkins 基本配置
修改jenkins使用用户和启动端口 //yum 安装 cat /etc/sysconfig/jenkins 安装完后安装maven插件 设置jenkins项目存放目录 系统管理---->系统设 ...
- C语言复习---找出一个二维数组的鞍点
前提: 求任意的一个m×n矩阵的鞍点——鞍点是指该位置上的元素在该行上为最大.在该列上为最小, 矩阵中可能没有鞍点,但最多只有一个鞍点. m.n(<=m<=.<=n<=)及矩阵 ...
- HDU 1020(连续同字符统计 **)
题意是要统计在一段字符串中连续相同的字符,不用再排序,相等但不连续的字符要分开输出,不用合在一起,之前用了桶排序的方法一直 wa,想复杂了. 代码如下: #include <bits/stdc+ ...
- HTML&CSS总结
HTML 如果把网页比作房子的话,那么HTML就是搭建房子的整体结构,CSS就是对房子进行装修,HTML主要涉及各种标签的使用,总结如下,需要补充的一点是行内标签与块级标签的区别 inline:在一行 ...