I have one more query:
After debugging ovs kernel module with printk, I have concluded that
following methods are involved in flow processing for outgoing packets:
1. internal_device_xmit()
2. ovs_vport_receive()
3. ovs_flow_key_extract()
4. ovs_dp_process_packet()
5. if(!ovs_flow_table_lookup_stats())
ovs_dp_upcall()
6. execute_actions
In case of VXLAN or GRE tunnels, incoming packets are processed by
vxlan_recv() and gre_recv() respectively. similarly, outgoing packets are
handled by vxlan_tnl_send() and gre_send(). These methods are responsible
to push gre or vxlan headers to outgoing packets.
In order to process incoming packets, an rx_handler is used to register a
netdev_frame_hook() in vport-netdev.c file which calls
netdev_port_receive() and which in turn calls ovs_vport_receive(). Rest is
same as in case of outgoing packets.
Please let me know to what extent am I right in understanding the sequence
of method calls for processing of incoming and outgoing packets on ovs.
I'll be really grateful for your guideline and help. Thanks a lot!
On Sat, Mar 21, 2015 at 12:46 PM, david jhon <[email protected]> wrote:
> Hi All,
>
> I am working on OVS datapath, adding my code based on flow stats. I want
> to identify outgoing packets belonging to VXLAN or GRE tunnels. I can see
> gre_send() and __send() methods in datapath/vport-gre.c but I am not
> getting how does ovs_execute_actions() method identify tunnel ports.
> Any help regarding this would be highly appreciated. Thanks a lot!
>
> Regards,
> David
>
_______________________________________________
discuss mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/discuss