Hi
I tried to add an explicit flow entry from POX controller to one of openVswitch.
Issue #1
I could see an entry is added but the matching files are missing.
#pox.py py vn_core vn_test ( these two are my components)
Is switch: ove dump shows the following
XST_FLOW reply (xid=0x4):
cookie=0x0, duration=4.266s, table=0, n_packets=0, n_bytes=0,
idle_age=4, actions=NORMAL
{ My match fields are missing}
Issue #2:
With Le_learning component: My script deletes the flows added by l2 learning
and further learning does not happen
- Invoked - pox.py py forwarding.l2_learning vn_core vn_test
- In switch #1, send a ping pkt to one my VMs
- I could see the following flow entries are added
virtunetx3@vnetx3:~$ ovs-dump
NXST_FLOW reply (xid=0x4):
cookie=0x0,
duration=2.572s, table=0, n_packets=1, n_bytes=60, idle_timeout=10,
hard_timeout=30, idle_age=2,
priority=65535,arp,in_port=2,vlan_tci=0x0000,dl_src=08:00:27:d9:77:cd,dl_dst=92:76:cc:22:32:e9,arp_spa=192.167.20.10,arp_tpa=192.167.20.253,arp_op=2
actions=output:4
cookie=0x0, duration=2.537s, table=0, n_packets=1,
n_bytes=98, idle_timeout=10, hard_timeout=30, idle_age=2,
priority=65535,icmp,in_port=2,vlan_tci=0x0000,dl_src=08:00:27:d9:77:cd,dl_dst=92:76:cc:22:32:e9,nw_src=192.167.20.10,nw_dst=192.167.20.253,nw_tos=0,icmp_type=0,icmp_code=0
actions=output:4
cookie=0x0, duration=2.567s, table=0, n_packets=1,
n_bytes=98, idle_timeout=10, hard_timeout=30, idle_age=2,
priority=65535,icmp,in_port=4,vlan_tci=0x0000,dl_src=92:76:cc:22:32:e9,dl_dst=08:00:27:d9:77:cd,nw_src=192.167.20.253,nw_dst=192.167.20.10,nw_tos=0,icmp_type=8,icmp_code=0
actions=output:2
- But when I run my script that adds own entry, it erases the the above
entries and addd mine
XST_FLOW reply (xid=0x4):
cookie=0x0, duration=4.266s, table=0, n_packets=0, n_bytes=0, idle_age=4,
actions=NORMAL
- After wards, I could not ping to me dest VM anymore.
My expectations:
My flow entry should be added on top of the existing ones.
My objective is to add a flow for this match that is treated as normal pkt
for now - switching. But
I can collect the stats specifc to this flow. Later I intend to redirect the
packet to another server overiding l2 forwarding
Plase hlp me to find out what I am missing.
Thanks in advance
-Senthil
My code:
def _vn_addNormalFlow(self, vn_context):
print 'Adding VN flow for dpid %s' %(vn_context["dpid"])
msg = of.ofp_flow_mod()
msg.flags = of.OFPFF_CHECK_OVERLAP
msg.command = of.OFPFC_ADD
msg.match.nw_src = IPAddr(vn_context["src_ip"])
# msg.match.nw_src = IPAddr("192.167.10.10")
# msg.match.nw_dst = IPAddr("192.167.20.10")
msg.match.nw_dst = IPAddr(vn_context["dst_ip"])
msg.match.nw_proto = vn_context["proto"]
msg.match.tp_dst = vn_context["tcp_dst"]
msg.actions.append(of.ofp_action_output(port = of.OFPP_NORMAL))
# core.openflow.sendToDPID(str_to_dpid(vn_context["dpid"]),msg)
con = core.openflow.getConnection(str_to_dpid(vn_context["dpid"]))
con.send(msg)
return True