I was finally able to fix the issue. Apparently the switch didn't start
with the table=0 and just dropped the packet instead. So, when sending
PacketOut I explicitly specified that it needs to be resubmitted to table=0.
This part:
actions = [
ofp_parser.NXActionResubmitTable(table_id=0),
]
datapath.send_packet_out(in_port=ofp.OFPP_LOCAL,
actions=actions,
data=data)
did the job!
Thanks for your time and help!
Best,
Martin
On Thu, Aug 15, 2019 at 11:35 AM Martin Mirakyan <[email protected]>
wrote:
> As I was able to see a PacketOut message in Wireshark from a tcpdump and
> Ryu didn't have any errors while sending it to the switch, I tried to look
> at the logs on the ovs side.
> I've enabled the debug-level logs with:
>>
>> sudo ovs-appctl vlog/set ANY:syslog:dbg && sudo ovs-appctl vlog/set
>> ANY:file:dbg
>
>
> After which was able to see:
>
> 2019-08-15T18:04:37.183Z|09862|vconn|DBG|tcp:127.0.0.1:6633: received:
>> OFPT_PACKET_OUT (OF1.4) (xid=0x4a011755): in_port=LOCAL actions=drop
>> data_len=44
>>
>> vlan_tci=0x0000,dl_src=fe:ee:ee:ee:ee:ef,dl_dst=08:00:06:04:00:01,dl_type=0xc0a8
>
>
> I think the `actions=drop` causes the packet to be dropped without even
> hitting any tables.
> The packet is created with:
>
>> pkt = ethernet.ethernet(ethertype=ETH_TYPE_ARP,
>> src='fe:ee:ee:ee:ee:ef',
>> dst='ff:ff:ff:ff:ff:ff') / \
>> arp.arp(hwtype=arp.ARP_HW_TYPE_ETHERNET, proto=ETH_TYPE_IP,
>> hlen=6, plen=4,
>> opcode=arp.ARP_REQUEST,
>> src_mac='fe:ee:ee:ee:ee:ef', src_ip='192.168.70.2',
>> dst_mac='00:00:00:00:00:00', dst_ip='192.168.70.3')
>> pkt.serialize()
>
>
>
> Do you have any suggestions on how to fix it?
>
>
> Thanks.
> Best,
> Martin
>
> On Thu, Aug 15, 2019 at 10:15 AM Martin Mirakyan <[email protected]>
> wrote:
>
>> Thanks for the suggestions,
>>
>> I was able to see an Openflow 1.4 PacketOut message in Wireshark from
>> tcpdump and a TCP message from port 6633 to port 49020. And there were no
>> error messages in Ryu logs when verbose mode is enabled.
>>
>> But still, `n_packets=0, n_bytes=0` for all the tables out there. So the
>> packet doesn't actually hit the switch.
>> Do you have any ideas why this might be happening?
>>
>> Thanks again for your help.
>> Best,
>> Martin
>>
>> On Thu, Aug 15, 2019 at 6:19 AM Yusuke Iwase <[email protected]>
>> wrote:
>>
>>> Hi,
>>>
>>> First, please verify whether the packets you sent ware forwarded or not.
>>> For example, tcpdump or wireshark are useful to check it. Also please
>>> confirm the log messages with log-level=debug. "ryu-manager --verbose"
>>> option should work to set log-level. With this option, please check
>>> whether any error message will be output or not.
>>>
>>> Regards,
>>> Iwase
>>>
>>> On 2019/08/14 13:34, Martin Mirakyan wrote:
>>> > Thanks!
>>> >
>>> > I'm trying to do as you suggested, but interestingly whenever I
>>> execute
>>> > `ovs-ofctl dump-flows gtp_br0` I see that all the tables have
>>> > `n_packets=0, n_bytes=0`. So, as far as I understand, the PacketOut is
>>> > getting called but that doesn't reach the switch. Do you have any
>>> > suggestions on what might be the problem?
>>> >
>>> > Thanks again for your time.
>>> >
>>> > Best,
>>> > Martin
>>> >
>>> > On Tue, Aug 13, 2019 at 8:58 PM Yusuke Iwase <[email protected]
>>> > <mailto:[email protected]>> wrote:
>>> >
>>> > Hi,
>>> >
>>> > Yes, you can send the Packet-Out messages without any Packet-In
>>> > messages, but it is required to confirm that Ryu and your switch
>>> are
>>> > connected and "datapath" instance for the target switch is given.
>>> >
>>> > If you need to send a Packet-Out message at the initialization
>>> step,
>>> > how about sending the message in "switch_features_handler"?
>>> >
>>> >
>>> https://ryu.readthedocs.io/en/latest/ofproto_v1_3_ref.html#ryu.ofproto.ofproto_v1_3_parser.OFPSwitchFeatures
>>> >
>>> > This handler should be invoked at the initialization step for the
>>> > target switch and "datapath" instance will be given.
>>> >
>>> > Regards,
>>> > Iwase
>>> >
>>> >
>>> > 2019年8月14日(水) 3:08 Martin Mirakyan <[email protected]
>>> > <mailto:[email protected]>>:
>>> >
>>> > Dear Ryu developer support team,
>>> >
>>> > Is it possible to send a packet to the switch from a Ryu app
>>> > without having any kind of PacketIn events? I want to initiate
>>> a
>>> > packet-send from a Ryu app so that the trigger of the event is
>>> > the Ryu app itself not something external.
>>> >
>>> > I've tried to do (in `def start`):
>>> >
>>> > datapath.send_packet_out(in_port=ofp.OFPP_LOCAL,
>>> > actions=[],
>>> > data=pkt.data)
>>> >
>>> >
>>> > But when I print `ovs-ofctl dump-flows gtp_br0` all the tables
>>> > show n_packets=0 (they aren't 0 if I initiate traffic not from
>>> a
>>> > Ryu app).
>>> >
>>> > Is there something I might be missing?
>>> >
>>> > Thanks.
>>> > Best,
>>> > Martin
>>> > _______________________________________________
>>> > Ryu-devel mailing list
>>> > [email protected]
>>> > <mailto:[email protected]>
>>> > https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>> >
>>>
>>
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel