Hi everybody,
I'm a beginner in the Ryu enviroment and would like to clarify a basic
issue.
I started with some exercises to add flows in switch tables. I'm working
with mininet and openflow 1.3.
I succefully add flows but how can I delete a specific flow in a table?
I tried to use ofproto.OFPFC_DELETE command but something is going wrong.
Here is my simple code, where I add a flow in table 0 and 5 seconds after
it, I try to delete the same flow. Unfortunely, anything happens.
Could anyone tell me how to delete a specific flow in Ryu?
Thanks a lot!
from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import CONFIG_DISPATCHER, MAIN_DISPATCHER
from ryu.controller.handler import set_ev_cls
from ryu.ofproto import ofproto_v1_3
from ryu.lib.packet import packet
from ryu.lib.packet import ethernet
from ryu.lib.packet import arp, ipv4
from ryu.ofproto.ofproto_v1_2 import OFPG_ANY
from ryu.ofproto.ofproto_v1_3 import OFP_VERSION
import time
class SimpleSwitch13(app_manager.RyuApp):
OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]
def __init__(self, *args, **kwargs):
super(SimpleSwitch13, self).__init__(*args, **kwargs)
self.mac_to_port = {}
@set_ev_cls(ofp_event.EventOFPSwitchFeatures, CONFIG_DISPATCHER)
def switch_features_handler(self, ev):
datapath = ev.msg.datapath
ofproto = datapath.ofproto
parser = datapath.ofproto_parser
# install table-miss flow entry
#
# We specify NO BUFFER to max_len of the output action due to
# OVS bug. At this moment, if we specify a lesser number, e.g.,
# 128, OVS will send Packet-In with invalid buffer_id and
# truncated packet data. In that case, we cannot output packets
# correctly.
match = parser.OFPMatch()
actions = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER,
ofproto.OFPCML_NO_BUFFER)]
self.add_flow(0, datapath, 0, match, actions)
# ===== ADICIONANDO FLUXO SIMPLES ======
match = parser.OFPMatch(in_port=2)
actions = [parser.OFPActionOutput(1)]
#self.add_flow(0, datapath, 35000, match, actions)
mod = parser.OFPFlowMod(datapath=datapath, table_id=0, cookie=1,
command=datapath.ofproto.OFPFC_ADD, priority=35000, match=match)
datapath.send_msg(mod)
# ===== DELETANDO FLUXO SIMPLES ======
time.sleep(2)
print 'APAGANDO!!!'
time.sleep(5)
match = parser.OFPMatch(in_port=2)
actions = [parser.OFPActionOutput(1)]
#self.add_flow(0, datapath, 35000, match, actions)
mod = parser.OFPFlowMod(datapath=datapath, table_id=0, cookie=1,
command=datapath.ofproto.OFPFC_DELETE, priority=35000, match=match)
datapath.send_msg(mod)
print 'Apaguei!'
def add_flow(self, table, datapath, priority, match, actions):
ofproto = datapath.ofproto
parser = datapath.ofproto_parser
inst = [parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS,
actions)]
mod = parser.OFPFlowMod(datapath=datapath, table_id=table,
idle_timeout=250, priority=priority,
match=match, instructions=inst)
datapath.send_msg(mod)
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel