问题标签 [openflow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
234 浏览

openflow - OpenFlow 交换机中的资源数据库

我对 OpenFlow Switch 有一些误解。根据 SDN 控制器规范,每个 OpenFlow 交换机都有一个资源数据库,其中包含一些有关资源的信息,可供交换机使用。但是没有关于这个数据库中有什么样的资源的信息。在我看来,它应该是接口(物理和逻辑)、VLAN 等。可能有人对此有所了解吗?

0 投票
2 回答
2737 浏览

networking - OpenFlow 动作=CONTROLLER:51 含义

我有一个使用 mininet 的网络拓扑。拓扑连接到 RYU simple_switch.py​​ 程序。我的网络上有 6 台交换机和 6 台主机。

下面给出 6 个开关上的 Flow Table 内容。

是什么action=CONTROLLER:51意思?这是否意味着将所有数据包发送PACKET_IN到控制器?

0 投票
1 回答
319 浏览

python-2.7 - SDN网络的配置

如何通过 SDN 控制器(POX,Ryu)使用 python 编写的文件配置网络。在 SDN 控制器中运行什么文件来配置 Open Flow 交换机和主机的链接和 IP 地址?

我只能配置流表。

0 投票
2 回答
2341 浏览

networking - 在启用 OpenFlow 的网络中修改 IP 和 MAC 地址

我有一个这样的虚拟网络:

http://imgur.com/wjPf2AG

交换机是一个Open VSwitch,整个网络由Big Switch Floodlight控制器控制。

我正在尝试将两个流程设置为 switch1:

1) 捕获从 h1 到 h2 的任何数据包,并将它们的 dst-IP 和 dst-MAC 地址更改为 h3 的地址。

2) 捕获从 h3 到 h1 的任何数据包,并将它们的 src-IP 和 src-MAC 地址更改为 h2 的地址。

(检查问题底部以了解确切的 Floodlight REST API 请求)

因此,当我从 h1 ping h2 时,ping 应该转到 h3 并返回,但到目前为止我还没有成功。

这可以做到吗?如果是这样,我错过了什么?提前致谢!

小网设置:

Floodlight REST API 请求:

查找 IP 和 MAC 地址并使用 jq 解析:

设置第一个流程(注意,如果您自己尝试,MAC地址可能不同):

设置第二个流程:

0 投票
2 回答
4198 浏览

networking - 如何将端口添加到 OpenFlow 网桥

我目前正在使用 Open vSwitch 来尝试构建网络应用程序。我使用过 mininet 并且能够轻松创建基本拓扑。我试图在不使用 mininet 的情况下复制它,但在配置我的交换机时遇到了问题。

当我尝试将端口添加到我的交换机时,它似乎正确添加到 Open vSwitch 网桥,但没有显示在 OpenFlow 控制器中。如何使用 Open vSwitch 将端口正确添加到 OpenFlow 交换机?这是我到目前为止所尝试的:

$ sudo ifconfig lo:1 10.0.0.1 $ sudo ovs-vsctl add-br switch $ sudo ovs-vsctl add-port switch lo:1 $ sudo ovs-vsctl show 7c625407-3eae-40d1-9dca-94307331790e Bridge switch Port switch Interface switch type: internal Port "lo:1" Interface "lo:1" ovs_version: "1.9.0" $ sudo ovs-ofctl show switch OFPT_FEATURES_REPLY (xid=0x1): dpid:0000566c1450f749 n_tables:255, n_buffers:256 capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ... actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN ... LOCAL(switch): addr:56:6c:14:50:f7:49 config: PORT_DOWN state: LINK_DOWN speed: 100 Mbps now, 100 Mbps max OFPT_GET_CONFIG_REPLY (xid=0x3): frags=normal miss_send_len=0

如何添加端口以便它使用 OpenFlow 控制器显示?

0 投票
1 回答
3709 浏览

python - OpenFlow 1.3, Python RYU, OFPMatch 到所有非 TCP 数据包

我正在寻找使用 Python-RYU 控制器为 OpenFlow 交换机创建匹配规则。该规则应匹配任何非 tcp 数据包(ip 协议 6)。

据我所知,tcp连接的匹配规则是:

match = parser.OFPMatch(in_port=in_port, eth_dst=dst, ip_proto=6) self.add_flow(datapath, 1, match, actions)

我需要补充规则。谢谢

0 投票
1 回答
508 浏览

openflow - OpenFlow 中的 (MPLS) 隧道

我们的网络由多个互连的 OpenFlow 1.0 和 1.3 兼容交换机组成。每个交换机都以某种方式连接到一个或多个交换机,即从每个交换机到每个其他交换机都有一条路由,尽管不一定直接(因此数据包可能最终必须通过多个交换机才能到达目的地) .

我需要做的是获得某种形式的隧道系统,在那里我可以创建一个流,将数据包通过所有这些交换机传递到目标机器。

我所知道的可能是将 MPLS 标签推送和弹出到数据包。所以我想我可能会在入口处添加两个标签。外部标签标识目标交换机,内部标签标识目标端口。这样,我只需要每个交换机上的流将具有匹配标签的数据包首先传递到目标交换机,然后再传递到目标端口,当它到达目标交换机时。

这里的问题只是我找不到匹配 MPLS 标签的方法。有谁知道是否有办法匹配这些标签?或者有没有其他方法可以做我想做的事情?

提前非常感谢!

0 投票
0 回答
617 浏览

centos - 如何丢弃来自特定 IP 的 openVswitch 集成网桥的传入数据包?

我已经在我的两台 centos 服务器(KVM)上安装了 openvSwitch 服务器。我创建了两个虚拟机并使用 openvSwitch 进行桥接。我能够在两个 VM 之间 ping 通。我正在使用 VLAN 来区分专用网络。

下面是 VM IP VM1 IP:198.0.0.2(驻留在 host1) VM2 IP:198.0.0.3(驻留在 host2)

VLAN:1000

我已按照以下链接中的步骤配置 openvSwitch,它工作正常。 http://openvswitch.org/support/config-cookbooks/vlan-configuration-cookbook/

现在我想阻止几个端口。我想阻止 VM1 的端口 443、80 的传入流量。一种选择是我可以修改我的 VM 中的 iptables 以将流量丢弃到端口。但我不想修改虚拟机中的防火墙规则。我想从 OVS 集成网桥本身丢弃数据包。

谢谢,卡尔佩尔

0 投票
2 回答
984 浏览

tcp - 切换到 OpenFlow 控制器的连接

我启动 RYU 控制器,它打开 TCP 侦听端口 6633。现在我将我的 mininet 拓扑连接到控制器端口 6633。我的 mininet 拓扑由 6 个交换机组成。因此,每个交换机将有 6 个连接到 RYU 控制器端口。

现在我关闭我的控制器并再次启动控制器。

我发现拓扑中的所有交换机都可以与控制器通信,就好像控制器进程从未被杀死一样。

这不是我理解服务器和客户端之间的 TCP 连接的方式。如果服务器出现故障,我希望连接断开。

这组连接似乎在服务器进程重新启动后仍然存在。有人可以解释这是怎么回事吗?我只是好奇

0 投票
1 回答
1487 浏览

openflow - 在 RYU App 中注册新的命令行选项

我需要能够从我的 simple_switch.py​​ 应用程序中读取路径文件。我已将以下代码添加到 python 中的 simple_switch.py​​ 中。

我尝试按如下方式启动应用程序。

但是我收到以下错误。

看起来我需要在某个地方注册一个新的命令行选项才能使用它。有人可以指出我该怎么做吗?也有人可以解释如何访问程序中的文件(text.txt)吗?