Hi,
I want to modify the dscp field of each TCP flow at first and forward it
base on the dscp field, and I try to use openflow pipeline processing to
realize this idea. The related program which I used in below:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
# for TCP flows, modify dscp field
table_id = 1
priority = 43
match = parser.OFPMatch(eth_type=0x0800, in_port=inpot,
ipv4_dst=dstip, ip_proto=6)
actions = []
actions.append(parser.OFPActionSetField(ip_dscp=1))
instructions = []
instructions.append(parser.OFPInstructionActions(ofproto.OFPIT_WRITE_ACTIONS,
actions))
instructions.append(parser.OFPInstructionGotoTable(2))
self.add_flow(datapath,table_id, priority, match,
instructions)
# forwarding
table_id2 = 2
priority2 = 42
match1 = parser.OFPMatch(eth_type=0x0800,
in_port=inpot, ipv4_dst=dstip)
actions1 = [parser.OFPActionOutput(outpot)]
instructions1 =
[parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS, actions1)]
self.add_flow(datapath, table_id2, priority2, match1,
instructions1)
def add_flow(self, datapath, table_id, priority, match, instructions,
buffer_id=None):
datapath = datapath
ofproto = datapath.ofproto
parser = datapath.ofproto_parser
cookie = cookie_mask = 0
table_id = table_id
idle_timeout = 60
hard_timeout = 120
priority = priority
instructions = instructions
buffer_id = ofproto.OFP_NO_BUFFER
match = match
if buffer_id:
mod = parser.OFPFlowMod(datapath = datapath,
cookie = cookie,
cookie_mask = cookie_mask,
table_id = table_id,
command = ofproto.OFPFC_ADD,
idle_timeout = idle_timeout,
hard_timeout = hard_timeout,
priority = priority,
buffer_id = buffer_id,
match = match,
instructions = instructions)
else:
mod = parser.OFPFlowMod(datapath = datapath,
cookie = cookie,
cookie_mask = cookie_mask,
table_id = table_id,
command = ofproto.OFPFC_ADD,
idle_timeout = idle_timeout,
hard_timeout = hard_timeout,
priority = priority,
match = match,
instructions = instructions)
datapath.send_msg(mod)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
I find that the flow table with 'priority = 43' (modify dscp field action)
can't install successful, but the flow table with 'priority = 42' (forward
action) install successful. However, there is no packets received in testing
ping reachability for each host pair. When I just use the forward function, all
the packets in testing ping reachability are received. I don't know how to deal
with this issue, can you give me some help?
Any help would be appreciated! Thank you very much.
Regards,
Bo Liu
------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel