Hello,
It seems that flow rules are not applied on LOCAL port when rules are pushed by
an OpenFlow controller.
The problem is probably between my chair and my screen :) but if someone could
help me to understand the situation I would greatly appreciate.
My setup is very simple
- A PC running OVS. Let call it "s1". This PC has 2 network interfaces:
- eth0 (10.0.0.2) is used to communicate with the OF controller
- eth1 is enslave to my OVS switch (br-test) 192.168.1.1 is configured
on "br-test"
- a client PC. Let call it "c1". This PC is directly connected to eth1 on "s1".
Network interface is set to 192.168.1.2
- a OF controller (ONOS in my case) at 10.0.0.3
First let me describe a test I would call "normal"
My OVS switch "s1" is not connected to any controller
ovs-vsctl show
32cdf1f6-4963-46a4-8696-0199484fe3e0
Bridge br-test
fail_mode: secure
Port "eth1"
Interface "eth1"
Port br-test
Interface br-test
type: internal
ovs_version: "2.5.0"
2 rules are added in order to count packets
ovs-ofctl add-flow br-test priority=10,actions=NORMAL
ovs-ofctl add-flow br-test arp,priority=11,actions=NORMAL
I checked those rules are actually in the switch
ovs-ofctl dump-flows br-test
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=18.343s, table=0, n_packets=0, n_bytes=0, idle_age=18,
priority=11,arp actions=NORMAL
cookie=0x0, duration=23.321s, table=0, n_packets=0, n_bytes=0, idle_age=23,
priority=10 actions=NORMAL
I send 1 ARP packet
from c1 to a non existing IP address
arping -c1 192.168.1.4
Timeout
1 packet has match the ARP rule
ovs-ofctl dump-flows br-test
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=27.252s, table=0, n_packets=1, n_bytes=42, idle_age=3,
priority=11,arp actions=NORMAL
cookie=0x0, duration=32.230s, table=0, n_packets=0, n_bytes=0, idle_age=32,
priority=10 actions=NORMAL
this is normal
If I send 1 ARP packet from "s1" (emited on the LOCAL OVS switch) to a non
existing IP address
arping -c1 192.168.1.4
Timeout
1 more packet has match the ARP rule
ovs-ofctl dump-flows br-test
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=73.074s, table=0, n_packets=2, n_bytes=102, idle_age=10,
priority=11,arp actions=NORMAL
cookie=0x0, duration=78.052s, table=0, n_packets=0, n_bytes=0, idle_age=78,
priority=10 actions=NORMAL
this is also normal
Now, let me describe the "strange" behaviour
I connect "br-test" to my ONOS controller
ovs-vsctl set-controller br-test tcp:10.0.0.3:6633
ovs-vsctl show
32cdf1f6-4963-46a4-8696-0199484fe3e0
Bridge br-test
Controller "tcp:10.0.0.3:6633"
is_connected: true
fail_mode: secure
Port "eth1"
Interface "eth1"
Port br-test
Interface br-test
type: internal
ovs_version: "2.5.0"
We can check that ARP rule has not been matched for the moment
ovs-ofctl dump-flows br-test
NXST_FLOW reply (xid=0x4):
cookie=0xe00000f5ad7ff, duration=9.456s, table=0, n_packets=0, n_bytes=0,
idle_age=9, priority=5,ip actions=CONTROLLER:65535
cookie=0xe000011a55234, duration=9.456s, table=0, n_packets=0, n_bytes=0,
idle_age=9, priority=40000,arp actions=CONTROLLER:65535
cookie=0xe00001195f878, duration=9.456s, table=0, n_packets=0, n_bytes=0,
idle_age=9, priority=40000,dl_type=0x8942 actions=CONTROLLER:65535
cookie=0xe00000f5ad8b9, duration=9.456s, table=0, n_packets=0, n_bytes=0,
idle_age=9, priority=5,arp actions=CONTROLLER:65535
cookie=0xe00001195ea2e, duration=9.456s, table=0, n_packets=0, n_bytes=0,
idle_age=9, priority=40000,dl_type=0x88cc actions=CONTROLLER:65535
I send 1 ARP request from "c1" to an unknown IP address
arping -c 1 192.168.1.4
Timeout
Then we can check that ARP rule has been matched
ovs-ofctl dump-flows br-test
NXST_FLOW reply (xid=0x4):
cookie=0xe00000f5ad7ff, duration=28.298s, table=0, n_packets=0, n_bytes=0,
idle_age=28, priority=5,ip actions=CONTROLLER:65535
cookie=0xe000011a55234, duration=28.298s, table=0, n_packets=1, n_bytes=60,
idle_age=4, priority=40000,arp actions=CONTROLLER:65535
cookie=0xe00001195f878, duration=28.298s, table=0, n_packets=0, n_bytes=0,
idle_age=28, priority=40000,dl_type=0x8942 actions=CONTROLLER:65535
cookie=0xe00000f5ad8b9, duration=28.298s, table=0, n_packets=0, n_bytes=0,
idle_age=28, priority=5,arp actions=CONTROLLER:65535
cookie=0xe00001195ea2e, duration=28.298s, table=0, n_packets=0, n_bytes=0,
idle_age=28, priority=40000,dl_type=0x88cc actions=CONTROLLER:65535
So far everything is normal
Now, I will send 1 ARP packet from "s1" (on the LOCAL OVS port) to an unknown
IP address
arping -c 1 192.168.1.4
Timeout
If we check rules matching.
ovs-ofctl dump-flows br-test
NXST_FLOW reply (xid=0x4):
cookie=0xe00000f5ad7ff, duration=38.774s, table=0, n_packets=0, n_bytes=0,
idle_age=38, priority=5,ip actions=CONTROLLER:65535
cookie=0xe000011a55234, duration=38.774s, table=0, n_packets=1, n_bytes=60,
idle_age=15, priority=40000,arp actions=CONTROLLER:65535
cookie=0xe00001195f878, duration=38.774s, table=0, n_packets=0, n_bytes=0,
idle_age=38, priority=40000,dl_type=0x8942 actions=CONTROLLER:65535
cookie=0xe00000f5ad8b9, duration=38.774s, table=0, n_packets=0, n_bytes=0,
idle_age=38, priority=5,arp actions=CONTROLLER:65535
cookie=0xe00001195ea2e, duration=38.774s, table=0, n_packets=0, n_bytes=0,
idle_age=38, priority=40000,dl_type=0x88cc actions=CONTROLLER:65535
We see that ARP rule has not been matched
This is weird.
And more....
If I send an ARP from "s1" LOCAL port to "c1"
arping -c 1 192.168.1.2
ARPING 192.168.1.2
60 bytes from 08:00:27:f0:80:4e (192.168.1.2): index=0 time=9.662 msec
It works request and reply ... but no matching is signaled...
ovs-ofctl dump-flows br-test
NXST_FLOW reply (xid=0x4):
cookie=0xe00000f5ad7ff, duration=49.278s, table=0, n_packets=0, n_bytes=0,
idle_age=49, priority=5,ip actions=CONTROLLER:65535
cookie=0xe000011a55234, duration=49.278s, table=0, n_packets=1, n_bytes=60,
idle_age=25, priority=40000,arp actions=CONTROLLER:65535
cookie=0xe00001195f878, duration=49.278s, table=0, n_packets=0, n_bytes=0,
idle_age=49, priority=40000,dl_type=0x8942 actions=CONTROLLER:65535
cookie=0xe00000f5ad8b9, duration=49.278s, table=0, n_packets=0, n_bytes=0,
idle_age=49, priority=5,arp actions=CONTROLLER:65535
cookie=0xe00001195ea2e, duration=49.278s, table=0, n_packets=0, n_bytes=0,
idle_age=49, priority=40000,dl_type=0x88cc actions=CONTROLLER:65535
This is really weird... it seems that packets are going through the datapath
without activating OF rules.
I even checked OF connection between OVS and ONOS... no PACKET_IN issued.
Any idea?
Regards
Vincent
_______________________________________________
discuss mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/discuss