Hi,Zoltan, That makes sense.Thanks. :-)
Regards, Bruce From: Zoltán Lajos Kis Date: 2014-01-15 02:05 To: bruce.lo...@gmail.com; openflow-discuss Subject: RE: RE: [openflow-discuss] Pushing mpls tags Hi, Turns out this is already fixed in OpenFlow 1.3.3: “The OXM prerequisites (see 7.2.3.6) corresponding to the field to be set must be included in the flow entry, otherwise an error must be generated (see 6.4). Each prerequisite either must be included in the match of the flow entry or must be met through an action occurring before the set-field action (for example pushing a tag)”. The switch code is probably not updated to this latest 1.3 version, that’s why it is rejecting these flows according to the older versions. Pull requests are welcome :) Regards, Zoltan From: Zoltán Lajos Kis Sent: Tuesday, January 14, 2014 11:21 AM To: 'bruce.lo...@gmail.com'; openflow-discuss Subject: RE: RE: [openflow-discuss] Pushing mpls tags Hi, As awkward as it is, this is also according to the spec. It says that for set field actions: “The match of the flow entry must contain the OXM prerequisite corresponding to the field to be set, otherwise an error must be generated.”. Now obviously you can’t match on eth_type=0x8847 in this flow entry, so the set_field won’t work for you. I understand this is somewhat inconvenient, so I will raise a ticket on whether we should allow exemption from this rule for set fields following push actions. Until this is resolved you can either go with the workarounds I suggested, if you want to keep working in the standard way. If not, you can simply remove the consistency check from the source code at: https://github.com/CPqD/ofsoftswitch13/blob/master/udatapath/dp_actions.c#L1077, and continue experimenting. Regards, Zoltan From: bruce.lo...@gmail.com [mailto:bruce.lo...@gmail.com] Sent: Tuesday, January 14, 2014 9:51 AM To: Zoltán Lajos Kis; openflow-discuss Subject: Re: RE: [openflow-discuss] Pushing mpls tags Hi,Zoltan, Thanks for your quick reply. I am using CPqD ofsoftswitch13 from https://github.com/CPqD/ofsoftswitch13. I use dpctl to insert flows.Here is its output. *************** bl@ubuntu:~$ sudo dpctl unix:/tmp/s1 flow-mod cmd=add,table=0 in_port=1,eth_type=0x0800,ip_dst=192.168.0.10 apply:push_mpls=0x8847,output=2 SENDING: flow_mod{table="0", cmd="add", cookie="0x0", mask="0x0", idle="0", hard="0", prio="32768", buf="none", port="any", group="any", flags="0x0", match=oxm{in_port="1", eth_type="0x800", ipv4_dst="192.168.0.10"}, insts=[apply{acts=[mpls_psh{eth="0x8847"}, out{port="2"}]}]} OK. *************** bl@ubuntu:~$ sudo dpctl unix:/tmp/s1 flow-mod cmd=add,table=0 in_port=1,eth_type=0x0800,ip_dst=192.168.0.10 apply:push_mpls=0x8847,set_field=mpls_label:1,output=2 SENDING: flow_mod{table="0", cmd="add", cookie="0x0", mask="0x0", idle="0", hard="0", prio="32768", buf="none", port="any", group="any", flags="0x0", match=oxm{in_port="1", eth_type="0x800", ipv4_dst="192.168.0.10"}, insts=[apply{acts=[mpls_psh{eth="0x8847"}, set_field{field:mpls_label="1"}, out{port="2"}]}]} RECEIVED: error{type="BAD_ACTION", code="MATCH_INCONSISTENT", dlen="128"} ************** It's very strange if we need to push mpls_label and set it in different tables. Regards, Bruce From: Zoltán Lajos Kis Date: 2014-01-14 16:26 To: bruce.lo...@gmail.com; openflow-discuss Subject: RE: [openflow-discuss] Pushing mpls tags Hi Bruce, That is the only way to push MPLS on packets: first you need to push a label, which creates a zero label (unless there is already a label on the packet, in which case that label is copied), and then you need a set action to specify the label you want. This is described in 5.12.1 of [1]. Can you tell which switch you are using? It would help figuring out the cause. Without that I can only suggest possible workarounds: 1) use write actions / action set to execute these commands, or 2) use a separate table (e.g., table 1) to set the label. Regards, Zoltan [1] https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-spec-v1.3.3.pdf
_______________________________________________ openflow-discuss mailing list openflow-discuss@lists.stanford.edu https://mailman.stanford.edu/mailman/listinfo/openflow-discuss