Ok. Thank You Iwase.
*Vasu Dasari*
On Thu, Jan 11, 2018 at 11:29 PM, Iwase Yusuke <iwase.yusu...@gmail.com>
wrote:
> Hi,
>
> Hmmm... I don't know how to solve it.
> I guess it is the constraint of the OF protocol version 1.2(?) or higher.
>
> Thanks,
> Iwase
>
>
> On 2018年01月12日 12:15, Vasu Dasari wrote:
>
>> Thanks Iwase. Can you help me how to solve this use-case?
>>
>> A packet which matches a source IP address 1.1.1.1 needs to have a VLAN
>> stripped if it is present in the packet and forwarded to port "s1-eth1".
>> This would mean that I need to have two rules with OF1.5:
>> 1. ip,nw_src=1.1.1.1 actions=outport:"s1-eth1"
>> 2. vlan_tci=0x1000/0x1000,ip,nw_src-1.1.1.1
>> actions=pop_vlan,output:"s1-eth1"
>>
>> I will be using two rules to solve the use-case.
>>
>> With OF 1.0 I could have achieved above with 1 rule.
>>
>> I assume you might have gone through similar conundrum, I am wondering
>> how this problem could have been solved.
>>
>> Thanks
>> -Vasu
>>
>>
>> *Vasu Dasari*
>>
>>
>>
>> On Thu, Jan 11, 2018 at 7:36 PM, Iwase Yusuke <iwase.yusu...@gmail.com
>> <mailto:iwase.yusu...@gmail.com>> wrote:
>>
>> Hi Vasu,
>>
>> > OFPT_FLOW_MOD (OF1.3) (xid=0x6accfc95): ***decode error:
>> > OFPBAC_MATCH_INCONSISTENT***
>> > OFPT_ERROR (OF1.3) (xid=0x6accfc95): OFPBAC_MATCH_INCONSISTENT
>> > OFPT_FLOW_MOD (OF1.3) (xid=0x6accfc95):
>>
>> The following messages shows that the match is inconsistent with the
>> given
>> actions and the FlowMod could not be accepted.
>>
>> The OpenFlow Spec 1.3.5 says on "6.4 Flow Table Modification
>> Messages" section;
>> ====
>> If an action in a flow mod message performs an operation which is
>> inconsistent with the match and prior
>> actions of the flow entry, for example, a pop VLAN action with a match
>> specifying no VLAN, or a set
>> TTL action with a match wildcarding the Ethertype, the switch may
>> optionally
>> reject the flow mod and
>> immediately return an ofp_error_msg with OFPET_BAD_ACTION type and
>> OFPBAC_MATCH_INCONSISTENT
>> code.
>> ===
>>
>> So you need to add the "vlan_vid" match field, for example;
>> vlan_vid=(ofproto_v1_3.OFPVID_PRESENT,
>> ofproto_v1_3.OFPVID_PRESENT)
>> in the arguments for OFPMatch().
>> For the combination of the value/mask for the "vlan_vid" match field,
>> please
>> refer to the "NOTE" section at the following.
>> http://ryu.readthedocs.io/en/latest/ofproto_v1_3_ref.html#fl
>> ow-match-structure
>> <http://ryu.readthedocs.io/en/latest/ofproto_v1_3_ref.html#f
>> low-match-structure>
>>
>> FYI, if you specify "--verbose" option for "ryu-manager" the warning
>> messages
>> , which is similar to that of "ovs-ofctl snoop", should be displayed.
>>
>> Thanks,
>> Iwase
>>
>>
>>
>> On 2018年01月12日 01:25, Vasu Dasari wrote:
>>
>> Can someone please help with a recipe on how to delete a VLAN tag
>> if it
>> exists in the packet? I want to do this OpenFlow version >1.3?
>> Note that
>> I could achieve with OF 1.0 and Ryu as highlighted below.
>>
>> I tried the following code:
>>
>> ofp_parser = ofproto_v1_3_parser
>> actions = [
>> ofp_parser.OFPActionPopVlan(),
>> ofp_parser.OFPActionSetField(
>> vlan_vid=ofproto_v1_3.OFPVID_PRESENT | 100),
>> ofp_parser.OFPActionOutput(3, 0)
>> ]
>> match = ofp_parser.OFPMatch(in_port=1)
>>
>> inst = [
>> ofp_parser.OFPInstructionActions(ofp.OFPIT_APPLY_ACTIONS,
>> actions)
>> ]
>> m = ofp_parser.OFPFlowMod(self.dp, 0x1234, 0, 0,
>> ofp.OFPFC_ADD, 0,
>> 0, 100, UINT32_MAX, ofp.OFPP_ANY,
>> ofp.OFPG_ANY, 0, match, inst)
>>
>> This results in following error in OVS (got this from using
>> "ovs-ofctl
>> snoop s1 --detach"):
>>
>> OFPT_FLOW_MOD (OF1.3) (xid=0x6accfc95): ***decode error:
>> OFPBAC_MATCH_INCONSISTENT***
>> OFPT_ERROR (OF1.3) (xid=0x6accfc95): OFPBAC_MATCH_INCONSISTENT
>> OFPT_FLOW_MOD (OF1.3) (xid=0x6accfc95):
>> (***truncated to 64 bytes from 112***)
>> 00000000 04 0e 00 70 6a cc fc 95-00 00 00 00 00 00 12 34
>> |...pj..........4|
>> 00000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 64
>> |...............d|
>> 00000020 ff ff ff ff ff ff ff ff-ff ff ff ff 00 00 00 00
>> |................|
>> 00000030 00 01 00 0c 80 00 00 04-00 00 00 01 00 00 00 00
>> |................|
>>
>> If I use ofproto_v1_1_parser, I could create the flow
>>
>> actions = [
>> ofp_parser.OFPActionStripVlan(),
>> ofp_parser.OFPActionVlanVid(100),
>> ofp_parser.OFPActionOutput(3, 0)
>> ]
>> match = ofp_parser.OFPMatch(in_port=1)
>> m = ofp_parser.OFPFlowMod(self.dp, match, 0x1234,
>> ofp.OFPFC_ADD,
>> priority=100, actions=actions)
>>
>> From ovs-ofctl dump-flows:
>>
>> cookie=0x1234, duration=849.909s, table=0, n_packets=14,
>> n_bytes=1008, reset_counts priority=100,in_port="s1-eth1"
>> actions=pop_vlan,push_vlan:0x8100,set_field:4196->vlan_vid,
>> output:"s1-eth3"
>>
>> Thanks,
>> -Vasu
>>
>> *Vasu Dasari*
>>
>>
>>
>> ------------------------------------------------------------
>> ------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>
>>
>>
>> _______________________________________________
>> Ryu-devel mailing list
>> Ryu-devel@lists.sourceforge.net <mailto:Ryu-devel@lists.source
>> forge.net>
>> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>
>>
>>
>>
>>
>> ------------------------------------------------------------
>> ------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>
>>
>>
>> _______________________________________________
>> Ryu-devel mailing list
>> Ryu-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>
>>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel