Hi David, Thanks a lot for that !! Yes I did see the architecture part about user space and kernel space. But, was trying to figure out how the switch will react when a packet arrives. Your explanation clarifies a bunch of my questions!! Based on what you said, I see that "ovs_dp_process_packet" has been called from "actions" and "vport" in datapath. MUCH better understanding now :) Thanks again.
The link you provided says "page not found". If you have the PDF with you, please do share. Best Regards, Monica -----Original Message----- From: discuss [mailto:discuss-boun...@openvswitch.org] On Behalf Of dsa...@cs.technion.ac.il Sent: Sunday, March 06, 2016 11:40 AM To: discuss@openvswitch.org Subject: Re: [ovs-discuss] Open vSwitch Source code walkthrough Hi Monica, If you want to start understanding the source code of OVS by following how the switch receives packets, there are some things you need to take into account. -First, OVS (in Linux) relies on a kernel module for all the basic packet processing. This module is installed in the OS: this kernel space. OVS code is executed as a normal program, hence it is said it runs in user space. OVS code communicates with the kernel module via a messaging mechanism (upcalls and downcalls) but those 2 different pieces of code run separately. -In userspace there is a listener to communicate with the OpenFlow controller. Check the function handle_openflow, and see who calls it and what it does. -In the kernel module code (datapath folder) you have the code where a data packet is received and processed. Search for the function process_packet and also see who calls it and what it does. -When you follow and understand the code in the kernel, you will realize there are substantial differences from userspace, with respect to how the flow tables are managed and which actions are executed. This is because original flow tables are stored in userspace, according to what the controller dictates. However, in the kernel they are stored differently (e.g., there is only one flow table, not a pipeline, and the goto_table instruction is never executed in kernel) for efficiency reasons. To understand this better you can read this very useful paper: https://www.usenix.org/system/files/conference/nsdi15/nsdi15-paper-pfaff.pdf Good luck, David Sainz > Hello, > > I am trying to understand the source code of Open vSwitch for one of > my projects. But, not sure from where I should start and where to end. > Is it possible to give me some sort of guidance ? > > Thanks and Regards, > Monica Rajasekaran > _______________________________________________ > discuss mailing list > discuss@openvswitch.org > http://openvswitch.org/mailman/listinfo/discuss > _______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss _______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss