OpenVSwitch 1.6 开源版本放出来了,这个版本在进行 OF 流设置的时候,有一个很有趣的功能,就是可以指定端口掩码。
早在 OpenVSwitch 1.4 版本的时候就注意到这个功能,可惜 ovs-ofctl 使用手册中说这个功能只有 1.6 及以上版本才能使用。好不容易 1.6 版本放出来了,但 OpenVSwitch 却没有提供计算端口掩码的工具,坑爹啊~~~
没办法,勤劳是咱的优良传统,咱就“自己动手,丰衣足食”吧。写了个 Java 的小工具,可以计算端口掩码,发出来共享给大家。欢迎批评指正~~~
用法很简单,直接调用静态方法 OvsUtil.getPortMask(minPortNum, maxPortNum) 就 OK 了。
import java.util.ArrayList;
import java.util.List;
/**
* @author E2718282
* @version 0.1-beta
* @date 2012-3-24
*
* OVS工具类
*/
public class OvsUtil {
/**
* 端口位掩码数组
*
* 对于portBitMasks[i],按位与portBitMasks[i][0]可获取低i位的值,<br>
* 按位与portBitMasks[i][1]可获取高(16-i)位的值
*/
private static final int[][] portBitMasks = new int[][] { { 0, 0xffff },
{ 0x1, 0xfffe }, { 0x3, 0xfffc }, { 0x7, 0xfff8 }, { 0xf, 0xfff0 },
{ 0x1f, 0xffe0 }, { 0x3f, 0xffc0 }, { 0x7f, 0xff80 },
{ 0xff, 0xff00 }, { 0x1ff, 0xfe00 }, { 0x3ff, 0xfc00 },
{ 0x7ff, 0xf800 }, { 0xfff, 0xf000 }, { 0x1fff, 0xe000 },
{ 0x3fff, 0xc000 }, { 0x7fff, 0x8000 }, { 0xffff, 0 } };
/**
* 根据端口范围获取端口范围的掩码表示序列
*
* 由于端口号在1-65535之间,所以用int型表示足够了
*
* @param min
* 最小端口号
* @param max
* 最大端口号
*
* @return 表示最小端口号到最大端口号范围的掩码序列
*/
public static String[] getPortMask(int min, int max) {
if (min < 1 || max > 0xffff || min > max) {
System.out.println("错误的端口号或端口号范围!");
return new String[0];
}
List<String> masks = new ArrayList<String>();
for (int n = min; n <= max;) {
int i = 1;
for (; i <= 16; ++i) {
int x = n + portBitMasks[i][0];
if (x > max || (x & portBitMasks[i][1]) != (n & portBitMasks[i][1])) {
break;
}
}
// 因为i已经+1了,所以这里的--i就是掩码的长度
masks.add(toPortMask(n, --i));
// 下一个掩码前缀开始的地方
n += (portBitMasks[i][0] + 1);
}
return masks.toArray(new String[0]);
}
/**
* 根据开始端口号和掩码长度生成端口掩码
*
* @param port
* 端口号
* @param maskLen
* 掩码长度
*
* @return port/mask格式的端口掩码,如果掩码长度为0,则只返回端口号
*/
private static String toPortMask(int port, int maskLen) {
if (0 == maskLen) {
return "0x" + Integer.toHexString(port);
}
return "0x" + Integer.toHexString(port & portBitMasks[maskLen][1]) + "/0x"
+ Integer.toHexString(portBitMasks[maskLen][1]);
}
}
分享到:
相关推荐
3. Open vSwitch提供了丰富的测试和调试工具,可以对网络的各个层面进行深入的监控和分析。 4. 通过创建和管理OVN(Open Virtual Network)资源,Open vSwitch支持网络虚拟化功能。 Open vSwitch的文档和教程: 1. ...
### OpenvSwitch完全使用手册知识点概述 #### 一、OpenvSwitch简介 OpenvSwitch(简称OVS)是一款高性能的虚拟交换软件,专为虚拟化环境设计,支持Xen/XenServer、KVM及VirtualBox等多种虚拟化技术。在单台物理机器...
总之,这个脚本是一个方便的工具,可以帮助快速部署OpenvSwitch 2.3.0,简化了安装步骤,尤其对于需要频繁部署或测试OVS环境的用户非常有用。在实际操作中,根据系统需求和安全策略,可能还需要对脚本进行调整,例如...
### OpenvSwitch的安装及使用 #### OpenvSwitch简介 **1.1 概述** OpenvSwitch(OVS)是一种高性能的多层虚拟交换机,遵循Apache 2.0开源许可协议,最初由Nicira Networks开发。其核心代码采用高度可移植的C语言...
### Open vSwitch (OVS) 完全手册精要解析 #### 一、OVS简介与功能概述 Open vSwitch(OVS)是一款高度可扩展的高性能开源虚拟交换机,旨在为虚拟化环境提供高性能的网络连接解决方案。OVS不仅支持传统虚拟交换机...
`openvswitch`这个RPM包包含了所有必要的组件和服务,如内核模块、用户空间工具和服务守护进程。安装过程一般包括以下几个步骤: 1. 更新包管理器索引:`sudo yum update` 2. 安装OVS包:`sudo yum install open...
### OpenVSwitch的使用 #### 一、OpenVSwitch简介 **OpenVSwitch**(简称OVS)是一种高性能的开源虚拟交换技术,被广泛应用于云计算和数据中心环境中的虚拟化网络解决方案。它支持多种网络虚拟化功能,如负载均衡...
Open vSwitch(OVS)在Neutron中的应用是OpenStack云平台网络服务的重要组成部分。OpenStack Neutron,原名Quantum,是OpenStack项目中负责网络功能的服务,它提供了丰富的虚拟网络功能,允许用户自定义复杂的网络...
Openstack openvswitch neutron Openstack openvswitch neutron
OpenvSwitch(简称OVS)是一款开源的虚拟交换机,广泛应用于云计算、数据中心以及软件定义网络(SDN)环境中。它的主要功能是提供高性能的网络虚拟化服务,允许在网络中创建多个逻辑网络,并且可以灵活地配置这些...
3. **配置OVS**:通过`ovs-vsctl`命令行工具或配置文件对OVS进行配置,例如添加端口、创建桥接等。 4. **连接OpenFlow控制器**:如果需要,配置OVS连接到OpenFlow控制器,如`ovs-vsctl set Open_vSwitch . other_...
openvswitch可以和KVM结合使用。 Open vSwitch的特性 1 支持通过NetFlow sFlow IPFIX, SPAN, RSPAN, 和 GRE-tunneled镜像使虚拟机内部通讯可以被监控; 2 支持LACP (IEEE 802.1AX-2008)(多端口绑定)协议; 3 支持...
Open vSwitch的目標,是做一個具有產品級質量的多層虛擬交換機。通過可編程擴展,可以實現大規模網絡的自動化(配置、管理、維護)。它支持現有標準管理接口和協議(比如netFlow,sFlow,SPAN,RSPAN,CLI,LACP,...
Open vSwitch 的运行原理是通过内核模块实现多个“数据路径”(类似于网桥),每个数据路径都可以有多个“ vports”(类似于桥内的端口)。每个数据路径也通过关联一下流表(flow table)来设置操作,而这些流表中...
6. 配置OpenVSwitch,例如创建虚拟桥接设备、添加端口和设置流表规则。 通过以上步骤,用户能够在CentOS 6.6系统上成功部署并使用OpenVSwitch 2.3.2,构建灵活、可扩展的虚拟网络环境。对于数据中心和云服务提供商...
在Open vSwitch 2.0版本中,这一转发流程涉及到了port(端口)、bridge(桥接器)、flow table(流表)等多个关键组件。 Open vSwitch中的port是数据包进出的接口,可以是物理接口,也可以是虚拟接口。bridge类似于...
Openvswitch(OVS)是一种开源的虚拟交换机,它提供了强大的网络连接功能,支持多种协议,可以在多种环境中实现复杂的网络拓扑。OVS的主要组件包括`ovs-vswitchd`、`openvswitch.ko`、`ovsdb-server`以及`lib`等模块...
更新openvswitch ./scripts/feeds install -a -p openvswitch 制作menuconfig 选择网络-> openvswitch-switch,openvswitch-brcompat和openvswitch-controller 回显'#CONFIG_KERNEL_BRIDGE未设置'>> .conf
OpenvSwitch(简称OVS)是一款开源的...总的来说,OpenvSwitch是一个强大的网络虚拟化工具,其灵活性和可扩展性使其在云环境和容器化应用中发挥着重要作用。通过学习和实践,我们可以利用OVS构建高效、安全的网络架构。
ovs-vsctl用于配置和管理vSwitchd,它可以创建网桥并添加物理端口,构建Open vSwitch的基础。ovs-ofctl则通过OpenFlow协议管理交换机的流表,实现流表项的创建、修改和删除。 OpenFlow协议是OVS的核心,它使用流表...