Using and Programming in Maestro

Size: px
Start display at page:

Download "Using and Programming in Maestro"

Transcription

1 Using and Programming in Maestro Zheng Cai Rice University Maestro is an operating system for orchestrating network control applications. Maestro provides interfaces for implementing modular network control applications to access and modify state of the network. Maestro is a platform for achieving automatic and programmatic network control functions using these modularized applications. In other words, although this document focuses on building an OpenFlow [1] controller using Maestro, Maestro is not only limited to OpenFlow networks. Moreover, Maestro tries to exploit parallelism within a single machine to improve the system s throughput performance. The fundamental feature of an OpenFlow network is that the controller is responsible for every flow s initial establishment by contacting related switches. Thus the performance of the controller could be the bottleneck. In designing Maestro we try to require as little effort from programmers as possible to manage the parallelization. Instead Maestro handles most of the tedious and complicated job of managing work load distribution and worker threads scheduling. Maestro currently provides the control components for realizing either a learning switch network, or a routed network using OpenFlow switches. Some components such as the command line console, etc, are still not full-fledged. We plan to enrich and enhance the functionalities of Maestro in future releases. In this document we are going to show how Maestro s components can be programmed to compose applications and application DAGs (Directed Acyclic Graph, explained in Section 4) to realize OpenFlow control functionalities. 1 View & Event Many network control components use some subset of the network state as input and modify some subset of the network state to realize their control decisions. Thus, Maestro must provide ways to access the network state. Since Maestro manages the network state, providing access is not hard. The key question is at what granularity should such access to network state be supported. The decision should be guided by Maestro s goals, namely to enable modularized network control components to co-exist and interact in a consistent way. At one extreme, we can simply present the whole network state as one monolithic datum to the control components. Such coarse-grained access obviously creates unnecessary state access conflicts between different control components running concurrently and thus is not suitable for concurrent execution. At the other extreme, we can provide a very fine-grained attribute-value lookup and insertion interface for representing network state. Maestro strikes a balance between the two extremes. We observe that network state usually falls into natural subsets, based on what type of state it is and what control objective the state achieves. For example, one common type of state is a routing table, which determines how data packets are forwarded in the network. Routing table state naturally is in a different subset than the information about all connected OpenFlow switches in the network. Generalizing this observation, Maestro provides the view abstraction for grouping related network state into a subset, and for accessing the state in that subset. Each view is a Java class that can be dynamically defined and created in Maestro by programmers. A view can contain any arbitrary data structure to represent a particular subset of network state. For example, we can create a view which is a hash table structure that holds all pair 1

2 shortest path routing information for the network. The view is the minimal granularity at which Maestro synchronizes control components concurrent execution. We will provide more details in Section 4. Views are highly related to events in Maestro. An event is the basic data unit to exchange information between the underlying network and the control components in Maestro. Events can be generated from the switches in the underlying network. For example, the PacketInEvent corresponds to the struct ofp packet in in the OpenFlow protocol specification. Usually it is a packet that does not match any flow entries in the switch, thus be bounced to the controller for decision. Events can also be generated by the control components, to affect the behavior of certain switches in the network. For example, the FlowModEvent corresponds to the struct ofp flow mod in the OpenFlow protocol specification. It is used to add, update or delete one flow entry in a switch. All events should extern the base abstract class Event, and there is one abstract method that they need to override: int converttobytes(byte[] buf, int index). In this method, the writer of this event is responsible for converting all data in this event class structure into a byte array which conforms to the OpenFlow protocol (that is, in the same format as those struct ofp xxx c/c++ structures). The return value is the total byte length of the generated byte array. Of course, if this event is never going to be sent from Maestro to switches, such as the PacketInEvent, this method does not need to have a real body, just a return 0; will be enough. Please check inline comments in all the event Java files for detailed explanation about each of the events. Because usually an event is also a basic data structure for holding one type of data to be used by control components in Maestro, as a result, views are usually compound data structure that contains all related events. For example, the PacketsInView contains pending PacketInEvent generated by switches, in a linked list. All views should extend from the base abstract class View, and override these following methods: boolean whetherinterested(event e), this method returns whether this view is interested in and capable of processing one particular kind of event. This method is called once during the initialization phase when Maestro creates the event-to-view registration relations, to verify that the view one event is registered with is actually interested in processing the event. Otherwise the registration is invalid, so the initialization will stop and the user will be notified. boolean processevent(event e), this method will get called when an event which has been registered with view is posted. Usually the processing of events involves updating the data structure if necessary. The return value is whether the data structure in this view is updated, which will be used later to decide whether we should start executing a DAG to handle the view update. void commit(driver driver), this defines the actions to take when a view is committed with its changes after a DAG finishes. For views that are going to affect the behavior of the underlying network (in the current version of Maestro, they are FlowConfigView and PacketsOutView ), they need to call the interfaces provided by the driver to send necessary packets to the underlying network. For other views that do not need to send out packets to the underlying network, an empty body for this function is enough. The driver is an indirection layer between Maestro and the underlying network, and more details will be discussed in Section 3. void print(), this method is used to format and print out information contained in this view, when in the Maestro command line console the users type print to print this view. All views for the OpenFlow networks should be put in the views/openflow directory, and all events for the OpenFlow networks should be put in the events/openflow directory. Views and events for other kinds of network should be put in the directory with a different name. For example, 2

3 if we create views for an OSPF controlled network, the views should be put in the views/ospf directory. This gives Maestro the flexibility to work with different kinds of network by only changing the configuration file, which will be discussed in Section 6. 2 Application Each network control component is represented as one application in Maestro, which is a Java class that contains the code for the control function. All applications must extend the base abstract class App, and interact with Maestro via a simple and straightforward API, by overriding the entry point method ViewsIOBucket process(viewsiobucket input). Maestro executes the code of an application by invoking this method. Both the input argument and the return value are ViewsIOBucket, which is a map data structure that can hold multiple views. The programmer can call addview(int pos, View view) to add a view into a ViewsIOBucket at a certain position pos, or call View getview(int pos) to get a view at a certain position. Such positioning is the way to ensure that an application gets the right types of input views, and generates the right types of output views in the right places. Like the printf function with arbitrary numbers of arguments, in which the types of the arguments should be consistent with these declarations contained in the proceeding string, these positions should also be consistent with the input/output specifications in the DAG configuration which will be discussed in Section 6. An application is not allowed to interact with Maestro or other applications via other interfaces. By doing this, Maestro can enforce explicit control over the interactions among applications, thus it avoids any implicit dependence between applications on network state that is external to Maestro. When accessing the data within one view in an application, the programmer needs to call the acquire() and release() methods of the view if you expect concurrent accesses to this view. 3 Drivers The driver is for implementing the low level functions to synchronize events with the underlying distributed network devices (routers/switches), for a particular type of network. The drivers are usually provided in Maestro to hide the low level details of the underlying networks, thus they serves as a flexible way for Maestro to be able to control different kinds of networks. So for an OpenFlow network, we use the OpenFlow driver. When there are new packets coming from the network devices, the driver needs to translate the received packets into corresponding events, and post these events. The current version of the OpenFlow driver will post SwitchJoinEvent, SwitchLeaveEvent, PacketInEvent and LLDPPacketInEvent. Each driver must override the boolean commitevent(linkedlist<event> events) method, to provide the interfaces for views to commit events. Currently the OpenFlow driver only supports two types of events, PacketOutEvent and FlowModEvent. These two events int converttobytes(byte[] buf, int index) method will be called by the driver to generate packets that conform to the OpenFlow protocol, to send to related network devices. All other events and views are not related to the driver, and are used as intermediate state for applications. 4 DAG The DAG abstraction is Maestro s solution to enable explicit control over interactions among applications. Figure 1 shows examples of application DAGs. An application DAG is a Directed Acyclic Graph that specifies the composition of applications. It defines the execution sequence of applications (black arrows). The execution flow in a DAG may branch, like App 2 and App5 shown in DAG 3 in the figure. All branches may run concurrently. Applications (round-corner boxes) are inter-connected in a DAG together with their input and output views specified. By specifying input and output views, applications can communicate by sharing views with each other. For example, in 3

4 A A C C Driver App 1 App 2 Commit B D E DAG 1 -- Read: A, B, D Write: C, E A Driver App 1 B B DAG 2 -- Read: A, B F Commit Write: F D Timer App 4 G C H C D H I App 2 App 5 E J Commit DAG 3 -- Read: D, G, I Write: C, H, E, J Figure 1: DAG examples. DAG 1, the output view of App 1 will be the input of App 2, thus there is an explicit communication relation between the two applications. This is the only way two applications are allowed to communicate. A DAG is either triggered by the driver which posting events from the network and updating the registered view, as in DAG 1 and DAG 2, or triggered by a timer, as shown in DAG 3. When a DAG finishes, all the output views generated by applications in this DAG will be committed to update Maestro s global environment (explained in Section 5), and some views will modify the corresponding network state through the driver by sending out packets. Maestro synchronizes the concurrent execution of DAGs at the granularity of view. Maestro knows all the views that one DAG is going to read (union of all input views of applications), and all the views that one DAG is going to write (union of all output views of applications). For example, again in Figure 1, we show that views that each of the three DAGs will read and write. Before starting one DAG to execute, Maestro checks whether this DAG has read/write or write/write conflict with current running DAGs in the system. If such conflict exists, this new DAG is queued, and needs to wait for the running DAG which it has conflict with to finish before it can start execute. For example, DAG 1 and DAG 2 have no conflict, so they can run concurrently, while the executions of DAG 1 and DAG 3 have to be serialized. 5 Environments Several applications in one DAG could use the same input view. As DAG 3 again in Figure 1, both App 4 and the App 2 uses View C as input. If during the execution of this DAG, after App 4 finishes and before App2 starts, View C is changed because there is a link failure in the network, then the two applications will generate inconsistent results because they are using inconsistent View C. For example, packet filters could be installed at a wrong location. We have to make sure that all applications should base their output on consistent input views, even if such input views are outdated. Next time the DAG can run again to accommodate the latest changes, and it is important to ensure all computations are based on the consistent input views. People may ask that why not just stop the currently running DAG and immediately run a new one for the new changes. We argue that network state could change so frequently that not a single DAG can finish execution before the new changes come. In this case if we allow the current DAG to be preempted, then Maestro will never be able to perform any reactions. Instead, if we do not allow preemption, at least Maestro can react to changes as often as possible. To fulfill such requirement, we propose the abstraction of view environments. 4

5 In Maestro there is the global environment which contains all of the up-to-date views available in the system. These views are accessible by all application DAGs(with the right permission). When one DAG starts execution, Maestro creates a local environment for this DAG by taking a snapshot of the current global environment. The local environment will remain unchanged throughout the execution of this DAG, unless modified by applications within this DAG. This is to ensure that applications within this DAG must base their computation on a consistent set of input views derived from the global environment. When an application is invoked, the input views specified in the application are taken from the local environment of the DAG and passed to the application. After this application instance finishes, its output views are put back to the local environment. By doing this, Maestro realizes the communication among applications within DAG through the local environment. Finally when a DAG finishes, all the output views in the local environment will be committed to update the global environment. 6 Start From Scratch Example: Learning Switches In this section, we are going to show you how to start from scratch to implement a basic controller for realizing learning switches. Hopefully after going through this example, you can be more familiar with all the components and APIs in Maestro, so that you can start building your own functionalities. Remember that, all views mentioned below can be found in the.java files located in the views/openflow directory, all events in events/openflow, and all applications in apps/openflow. Whenever a new switch is connected to Maestro, the driver for OpenFlow provided by Maestro will exchange hello messages with the switch for handshaking. After this is done, the driver will send switch feature request to the switch, and expect the switch to send back switch feature reply. After this reply is received, a SwitchJoinEvent is created and posted, which includes the information contained in the feature reply packet. So to manage such information of all joined switches, we write a view called JoinedSwitchesView, and register the SwitchJoinEvent with this view in the DAG configuration file which will be shown later. So whenever this event is posted, the processevent method of JoinedSwitchesView is called, to put the information about that switch in a HashMap data structure, indexed by that switch s DPID. When a switch is disconnected, the driver will post a SwitchLeaveEvent, and this event is also registered with JoinedSwitchesView, so that the left switch will get removed from the HashMap data structure. Because this controller for learning switches is simplified, just for giving a first example how to build a simple functionality, no other application is involved in handling and managing switches joining or leaving the network. Next, after switches are all discovered by Maestro, we will start letting end hosts talk to each other. Then, Maestro will get packet in from switches because the data packets sent by end hosts do not match any flow entry in the switch. The driver will parse the header of this packet, and post a PacketInEvent. We write a view called PacketsInView which the event is registered with, to batch the events dynamically to enhance the throughput performance (detailed discussion can be found in related technical papers). The overall idea is that, if the packet incoming rate is low, then Maestro will trigger the DAG to process the event as soon as it arrives; if the rate is very high, to achieve better performance, a certain number of events are batched to be processed by one DAG together. We also create another view called LearnedMACsView, which is a two dimensional HashMap that keeps track of all MAC addresses that have been learned on each of the ports of all switches. This is the core data structure of the learning switches functionality, and will be used by the LearningSwitchesApp application. Although it can be maintained locally within the application itself, we generally suggest that all the data structures and state used by applications are better to be built as views, and declared to Maestro so that they can be managed by Maestro. By doing this, if these data structures and state are shared among applications and DAGs, the nice features such as the local and global environments provided by Maestro can take effect, to control the 5

6 sharing behavior. public class LearningSwitchesApp extends App {... public ViewsIOBucket process(viewsiobucket input) { PacketsInView pis = (PacketsInView)input.getView(0); JoinedSwitchesView sws = (JoinedSwitchesView)input.getView(1); LearnedMACsView macs = (LearnedMACsView)input.getView(2);... for (PacketInEvent pi : work) { macs.acquirewrite(); try { macs.addmaclocation(pi.dpid, pi.flow.dlsrc, pi.inport);... } Integer outport = macs.getmaclocation(pi.dpid, pi.flow.dldst); if (null!= outport) { FlowModEvent fm = null;... } } if (null == outport OFPConstants.OP_UNBUFFERED_BUFFER_ID == pi.bufferid) {... po.actions = new PacketOutEvent.Action[1]; po.actions[0] = PacketOutEvent.makeOutputAction(null==outPort? OFPConstants.OfpPort.OFPP_FLOOD:outPort.intValue()); po.actionslen = po.actions[0].len; pkts.addpacketoutevent(po); } } ViewsIOBucket output = new ViewsIOBucket(); output.addview(0, config); output.addview(1, pkts); output.addview(2, macs); return output; Next we will show you how to build the LearningSwitchesApp application. In this application, it takes three views as input: PacketsInView at position 0 in the input view bucket, JoinedSwitchesView at position 1, and LearnedMACsView at position 2. Because the current version is simplified, the JoinedSwitchesView is not actually used in the code. However, we expect to expand the functionality of this application in the future, and it could potentially use this view. Notice that when configuring this application in the DAG configuration file, the positions of these input views should be configured correspondingly (that is, the first one should be PacketsInView, the second one should be JoinedSwitchesView, and the third one should be LearnedMACsView). We are not going to dive into the details of the code. In general, first we update the LearnedMACsView using the source MAC address, inport and the DPID of the origin switch. Then, we use the LearnedMACsView to find which port should we send this packet to based on its destination MAC address. If we do find the output port, we will create a FlowModEvent to configure a 6

7 # Which set of applications, events, views and driver should Maestro load? Package openflow # Declare all view instances that will be in the global environment Views JoinedSwitchesView switches PacketsInView packets in LearnedMACsView macs End Views # Describe event-view relation Events SwitchJoinEvent by switches SwitchLeaveEvent by switches PacketInEvent by packets in End Events # Define all DAGs to run in the system DAGs Begin DAG Node a Activation Input Input PacketsInView packets in Node n1 LearningSwitchesApp Input PacketsInView packets in Input LearnedMACsView macs Output FlowConfigView flow config Output LearnedMACsView macs Node t Terminal Output FlowConfigView flow config Output LearnedMACsView macs Edge a->n1 Edge n1->t End DAG End DAGs Figure 2: The learningswitch.dag DAG configuraiton file for OpenFlow flow entry on that switch. If we cannot find the output port, it means that we haven t learned this MAC address yet. In this case we will flood this packet in the spanning tree maintained by the OpenFlow switches. In addition, if this packet is not buffered in the origin switch, we also create a PacketOutEvent to send this packet back to the origin switch (about buffered VS unbuffered packets in the switches, please check the OpenFlow design documents [2] for more information). At last, we put three views in the output view bucket: FlowConfigView which contains all FlowModEvents, PacketsOutView which contains all PacketOutEvents, and the updated LearnedMACsView. Finally, we need to configure the DAG, in the DAG configuration file. The DAG configuration file specifies what kind of network Maestro is supposed to work with (in which directories Maestro should locate the source files of views, events, applications and the driver), what are the views in the global environment, what views should be registered with what events, and finally what DAGs to run when certain views get updated. This is done in the DAG configuration file shown in Figure 2. In this DAG configuration file, first of all we need to specify what package Maestro should use. By package we mean which set of applications, events, views and driver to load. Currently because we use Maestro as an OpenFlow controller, we write Package openflow in the first line. In this case, Maestro will try to load applications in the apps/openflow directory, load views in the views/openflow directory, load events in the events/openflow directory, and load the driver of 7

8 drivers/openflow.java. We expect that Maestro can be used for controlling other kinds of network, and to do this we can flexibly load another package to support that kind of network. Second, we need to specify all the view instances that are going to be loaded by Maestro and appear in the global environment. All views are dynamically loaded and created by Maestro when initiating, so there is no hard-coded view class initialization. We also need to give each of the views a unique name, to identify each of them. This is done between the Views and End Views section in the DAG configuration file. Third, we need to describe all the event-to-view registration. If one view instance is registered with one kind of event, whenever a component (usually the driver) post this kind of event, the registered view s processevent will be called to process this event. Upon return, the view will tell Maestro whether this view has been updated to let Maestro decide whether a DAG should be triggered to handle the view update. During this registration phase, Maestro will call each view s whetherinterested(event e) method to guard against any configuration error. Furthermore, one view can be registered with multiple events if it needs to, but one type of event can only be registered with one view instance name. All of these are done in the section between Events and End Events. In the last section, the DAG section, we define all DAGs to run in Maestro, and we specify what view changes will trigger which DAG to run. When defining one DAG, first we create the activation node which specifies the triggering view update. So when that view gets updated, Maestro will start this DAG to handle the change. Then, we create application nodes that are going to be executed to realize the functionality of this DAG. In this example for learning switches, there is only one DAG configured. The PacketsInView is the activation view, and the LearningSwitchesApp s input and output views are configured at the right positions. After that we create the Terminal node which specifies which of these views in the local environment need to be committed to the global environment, to update the underlying network (switches) through the driver if necessary. Then, we define the edges to connect all nodes, to specify the execution order of these nodes. After creating all necessary events, views, applications, and writing the DAG configuration file, we now have a working learning switches controller for OpenFlow! Of course in reality you can always take advantages of existing events views and applications so you do not have to write everything from scratch, to implement your own functionality. We hope this section can prepare you with the basic knowledge about Maestro. In the next section, we are going to discuss how to build the more complicated routing functionality, together with some additional features provided by Maestro to realize parallelization. 7 The Routing Functionality, and Additional Features The routing functionality involves more events, more views, more applications and more DAGs. Because the configuration is very long, it is divided into four parts as shown in Figure 3, Figure 4, Figure 5 and Figure 6. In addition to the views JoinedSwitchesView and PacketsInView, there are several other views in the global environment. ConnectivityLocalView contains all links topology information about the network. RoutingIntraView contains all pair shortest path routing information for all switches in the network. ReceivedLLDPPacketsView contains all pending LLDP packets received by Maestro, used by the DiscoverApp to discover links in the network, to update the ConnectivityLocalView accordingly. RegisteredHostsView remembers which host (based on its MAC address) is registered at which location (switch-port combination) in the network, and it is used to find the destination location for a destination MAC address. You may find out that we have a keyword Concurrent following PacketsInView packets in. This tells Maestro that this view, which we use as the input queue for incoming packet in events, should be parallelized. Then upon initialization Maestro will create multiple instances of this view, depending on the numthreads configured in the parameters configuration file. This number basically decides how many parts should we divide the incoming packet in events into, and how many 8

9 # Which set of applications, events, views and driver should Maestro load? Package openflow # Declare all view instances that will be in the global environment Views JoinedSwitchesView switches ConnectivityLocalView conn local RoutingIntraView routing intra PacketsInView packets in Concurrent PacketsOutView packets out ReceivedLLDPPacketsView lldps RegisteredHostsView hosts End Views # Describe event-view relation Events SwitchJoinEvent by switches SwitchLeaveEvent by switches PacketInEvent by packets in LLDPPacketInEvent by lldps End Events Figure 3: The routing.dag DAG configuraiton file for OpenFlow, part 1 concurrent work threads are going to process these parts. This is all done automatically by Maestro, so that programmers do not need to manage the concurrent queues and threads themselves. You may also find out that there is one additional kind of event, LLDPPacketInEvent, which contains one received LLDP packet from the network. It is registered with the ReceivedLLDPPacketsView. In the DAG section. First we create the DAG which contains the DiscoveryApp and the IntraRoutingApp. The DiscoveryApp basically processes received LLDP packets to update the topology view ConnectivityLocalView. Then the IntraRoutingApp computes the all pair shortest path routing information view RoutingIntraView Second, we create the DAG in which the PacketsInView first will be processed by the LocationManagementApp to update the location (on which port of which switch it is attached to) of the source end host, and find out the location of the destination end host. The FlowsInView will be generated to include such location information. Then the FlowsInView will be processed by the RouteFlowApp to setup a path for the flows, based on the RoutingIntraView which contains all pair shortest path routing table for all switches in the network. You may also notice that we flag this DAG also with Concurrent. This tells Maestro that this DAG should be duplicated to create multiple instances to run concurrently, to parallelize the computation to improve the throughput. Maestro will decide how many copies to create dynamically, depending on numthreads. Because we declare earlier that PacketsInView packets in Concurrent, all appearances of packets in Concurrent in this DAG will be replaced with its corresponding specific instance name accordingly by Maestro, during initialization. All these steps are automatically done by Maestro. At last, we create another DAG which contains the ProbeApp that periodically sends out LLDP packets to all ports of all switches. Notice that this DAG is not triggered by a view change, but instead by a Timer of 2000ms. These LLDP packets will be received by switches on the other side of the links, and bounced back to Maestro, to enable the first DAG to discover the topology of the network. 8 Possible Example for Extending the Functionality In this section, let s assume that we would like to introduce one additional functionality to the routing.dag. This functionality is for security, and what it does is that it maintains a set of filter rules based on the flow information of the packets. For example, these rules can tell whether a flow should 9

10 # Define all DAGs to run in the system DAGs Begin DAG Node a Activation Input ReceivedLLDPPacketsView lldps Node n1 DiscoveryApp Input ReceivedLLDPPacketsView lldps Input ConnectivityLocalView conn local Output JoinedSwitchesView switches Output ConnectivityLocalView conn local Node n2 IntraRoutingApp Input ConnectivityLocalView conn local Input RoutingIntraView routing intra Output RoutingIntraView routing intra Node t Terminal Output JoinedSwitchesView switches Output ConnectivityLocalView conn local Output RoutingIntraView routing intra Edge a->n1 Edge n1->n2 Edge n2->t End DAG Figure 4: The routing.dag DAG configuraiton file for OpenFlow, part 2 be allowed in the network, based on its source/destination addresses (MAC, IP) and other information (ports, protocols type, etc). Then, whenever a new packet in event comes in, this application will first check the rules to tell whether it should be allowed. Then it is the LocationManagementApp and the RouteFlowApp as in the routing package. To realize such functionality, first we need to create a view in views/openflow for holding these filter rules, say FilterRulesView. We can use whatever data structures that are suitable and efficient in implementing such a feature. For example, regular hash map will work, but maybe others such as HyperCuts [3] decision tree could be more efficient. Then this view could probably be loaded from a rule file during initialization of Maestro. The CmdConsole could also be extended in a way that we can dynamically add more rules to this view. However, in the current version of Maestro we have not supported this yet. We plan to support this feature in the future. Then, we create an application in apps/openflow for filtering matched packets, say FilteringApp. In this application, we override the public ViewsIOBucket process(viewsiobucket input) method of its parent class App. In this method, first we get two input views from the input view bucket, FilterRulesView and PacketsInView. Then we check each PacketInEvent in PacketsInView against all the filter rules, to see whether they should be allowed. If not, we will remove it from PacketsInView. Finally, we will put PacketsInView in the output bucket, and return. At last, we need to modify the routing.dag configuration file. First we need to add a FilterRulesView in the view declaration section, and give this view a name, say FilterRulesView filters. Then, in the DAGs section, we modify the second DAG as shown in Figure 7: 10

11 Begin DAG Concurrent Node a Activation Input PacketsInView packets in Node n1 LocationManagementApp Input PacketsInView packets in Input RegisteredHostsView hosts Output FlowsInView flows in Output RegisteredHostsView hosts Node n2 RouteFlowApp Input RoutingIntraView routing intra Input FlowsInView flows in Output FlowConfigView flow config Node t Terminal Output FlowConfigView flow config Output RegisteredHostsView hosts Edge a->n1 Edge n1->n2 Edge n2->t End DAG Figure 5: The routing.dag DAG configuraiton file for OpenFlow, part 3 9 Parameter Configuration File In addition to the DAG configuration file, there is another configuration file which we call the parameter configuration file. In this file, we need to configure several performance/functionality parameters for Maestro. verbose: this parameter controls whether the system should print out extra information to stderr for debugging purpose. If the value is set to 1, then all calls to Utilities.printlnDebug() and Utilities.printDebug() will be enabled. If 0, these calls will take no effect. batchinputnum: this parameter controls how many pending PacketInEvents should the PacketsInView batch before the view triggers a new DAG to process this batch of events, by returning true in its processevent method. However, this batching behavior is also dynamically adjusted according to the current load of the system, so when the load is light, the DAG will get triggered as soon as a new event is posted. batchoutput: this parameter controls whether outbound packets for the same destination switch are batched and sent out all together by calling send only once. Set the value to 1 to enable output batching. numthreads: this parameter controls how many parts should we divide the incoming PacketInEvents into, and how many concurrent work threads are spawned to process these parts. threadbind: this parameter controls whether the whole process of handling one PacketInEvent should be bound to one particular worker thread. This feature is for eliminating the cross-core overhead if we allow such process to be migrated to different cores before it finishes. Set the value to 1 to enable this thread binding feature. 11

12 Begin DAG Node a Activation Timer 2000 Node n1 ProbeApp Node t Terminal Edge a->n1 Edge n1->t End DAG End DAGs Figure 6: The routing.dag DAG configuraiton file for OpenFlow, part 4 countdone: this parameter controls the granularity at which we measure the throughput of the system. For example, if the value is 500,000, then we will measure the aggregated average throughput of Maestro after it has processed 500,000 PacketInEvents. This parameter is for benchmarking the system, so for normal usage it can be ignored. queueupperbound: this parameter controls the maximum number of pending raw packets allowed in the driver s buffer. If this value is set too large, then Maestro is going to use more memory, and the Java memory system s performance will become worse. If this value is set too small, then it is going to affect TCP s performance and prevent the system from achieving its best throughput. Currently we suggest using the default value. outputlog: this parameter is a string value for the file name of the log file. Programmers can choose to write to Utilities.log to keep logging information in this log file. port: this parameter specifies what is the port number that the driver should be listening on. References [1] N. McKeown, T. Anderson, H. Balakrishnan, G. Parulkar, L. Peterson, J. Rexford, S. Shenker, and J. Turner, Openflow: enabling innovation in campus networks, ACM Computer Communication Review, vol. 38, pp , April [2] OpenFlow Switch Specification, Version [3] S. Singh, F. Baboescu, G. Varghese, and J. Wang, Packet classification using multidimensional cutting, in Proceedings of the 2003 conference on Applications, technologies, architectures, and protocols for computer communications (SIGCOMM),

13 Begin DAG Concurrent Node a Activation Input PacketsInView packets in Node n1 FilteringApp Input FilterRulesView filters Input PacketsInView packets in Output PacketsInView packets in Node n2 LocationManagementApp Input PacketsInView packets in Input RegisteredHostsView hosts Output FlowsInView flows in Output RegisteredHostsView hosts Node n3 RouteFlowApp Input RoutingIntraView routing intra Input FlowsInView flows in Output FlowConfigView flow config Node t Terminal Output FlowConfigView flow config Output RegisteredHostsView hosts Edge a->n1 Edge n1->n2 Edge n2->n3 Edge n3->t End DAG End DAGs Figure 7: The modified routing.dag DAG configuraiton file for security functionality 13

Managing Failures in IP Networks Using SDN Controllers by Adding Module to OpenFlow

Managing Failures in IP Networks Using SDN Controllers by Adding Module to OpenFlow Managing Failures in IP Networks Using SDN Controllers by Adding Module to OpenFlow Vivek S 1, Karthikayini T 2 1 PG Scholar, Department of Computer Science and Engineering, New Horizon College of Engineering,

More information

Packet Classification Using Dynamically Generated Decision Trees

Packet Classification Using Dynamically Generated Decision Trees 1 Packet Classification Using Dynamically Generated Decision Trees Yu-Chieh Cheng, Pi-Chung Wang Abstract Binary Search on Levels (BSOL) is a decision-tree algorithm for packet classification with superior

More information

ADVANCED COMPUTER NETWORKS Assignment 9: Introduction to OpenFlow

ADVANCED COMPUTER NETWORKS Assignment 9: Introduction to OpenFlow Spring Term 2014 ADVANCED COMPUTER NETWORKS Assignment 9: Introduction to OpenFlow Assigned on: 8 May 2014 Due by: 21 May 2014, 23:59 1 Introduction The goal of this assignment is to give an introduction

More information

Building NetOpen Networking Services over OpenFlow-based Programmable Networks

Building NetOpen Networking Services over OpenFlow-based Programmable Networks Building NetOpen Networking Services over -based Programmable Networks Namgon Kim and JongWon Kim Networked Media Lab., School of Information and Communications, Gwangju Institute of Science and Technology

More information

ADVANCED COMPUTER NETWORKS Assignment 9: Introduction to OpenFlow

ADVANCED COMPUTER NETWORKS Assignment 9: Introduction to OpenFlow Spring Term 2015 ADVANCED COMPUTER NETWORKS Assignment 9: Introduction to OpenFlow Assigned on: 7 May 2015 Due by: 20 May 2015, 23:59 1 Introduction The goal of this assignment is to give an introduction

More information

CSC Operating Systems Fall Lecture - II OS Structures. Tevfik Ko!ar. Louisiana State University. August 27 th, 2009.

CSC Operating Systems Fall Lecture - II OS Structures. Tevfik Ko!ar. Louisiana State University. August 27 th, 2009. CSC 4103 - Operating Systems Fall 2009 Lecture - II OS Structures Tevfik Ko!ar Louisiana State University August 27 th, 2009 1 Announcements TA Changed. New TA: Praveenkumar Kondikoppa Email: pkondi1@lsu.edu

More information

Announcements. Computer System Organization. Roadmap. Major OS Components. Processes. Tevfik Ko!ar. CSC Operating Systems Fall 2009

Announcements. Computer System Organization. Roadmap. Major OS Components. Processes. Tevfik Ko!ar. CSC Operating Systems Fall 2009 CSC 4103 - Operating Systems Fall 2009 Lecture - II OS Structures Tevfik Ko!ar TA Changed. New TA: Praveenkumar Kondikoppa Email: pkondi1@lsu.edu Announcements All of you should be now in the class mailing

More information

Software-Defined Networking (Continued)

Software-Defined Networking (Continued) Software-Defined Networking (Continued) CS640, 2015-04-23 Announcements Assign #5 released due Thursday, May 7 at 11pm Outline Recap SDN Stack Layer 2 Learning Switch Control Application Design Considerations

More information

RFC: connectionless Data Link Metalanguage Burkhard Daniel

RFC: connectionless Data Link Metalanguage Burkhard Daniel RFC: connectionless Data Link Metalanguage Burkhard Daniel (burk@stg.com) This RFC details a specification draft for a UDI metalanguage interfacing UDI Network Protocol drivers to UDI Data Link drivers.

More information

Professor Yashar Ganjali Department of Computer Science University of Toronto

Professor Yashar Ganjali Department of Computer Science University of Toronto Professor Yashar Ganjali Department of Computer Science University of Toronto yganjali@cs.toronto.edu http://www.cs.toronto.edu/~yganjali Some slides courtesy of J. Rexford (Princeton), N. Foster (Cornell)

More information

CHAPTER 9: PACKET SWITCHING N/W & CONGESTION CONTROL

CHAPTER 9: PACKET SWITCHING N/W & CONGESTION CONTROL CHAPTER 9: PACKET SWITCHING N/W & CONGESTION CONTROL Dr. Bhargavi Goswami, Associate Professor head, Department of Computer Science, Garden City College Bangalore. PACKET SWITCHED NETWORKS Transfer blocks

More information

CS 5114 Network Programming Languages Data Plane. Nate Foster Cornell University Spring 2013

CS 5114 Network Programming Languages Data Plane. Nate Foster Cornell University Spring 2013 CS 5114 Network Programming Languages Data Plane http://www.flickr.com/photos/rofi/2097239111/ Nate Foster Cornell University Spring 2013 Based on lecture notes by Jennifer Rexford and Michael Freedman

More information

A Hybrid Hierarchical Control Plane for Software-Defined Network

A Hybrid Hierarchical Control Plane for Software-Defined Network A Hybrid Hierarchical Control Plane for Software-Defined Network Arpitha T 1, Usha K Patil 2 1* MTech Student, Computer Science & Engineering, GSSSIETW, Mysuru, India 2* Assistant Professor, Dept of CSE,

More information

OS Design Approaches. Roadmap. OS Design Approaches. Tevfik Koşar. Operating System Design and Implementation

OS Design Approaches. Roadmap. OS Design Approaches. Tevfik Koşar. Operating System Design and Implementation CSE 421/521 - Operating Systems Fall 2012 Lecture - II OS Structures Roadmap OS Design and Implementation Different Design Approaches Major OS Components!! Memory management! CPU Scheduling! I/O Management

More information

Problem Set: Processes

Problem Set: Processes Lecture Notes on Operating Systems Problem Set: Processes 1. Answer yes/no, and provide a brief explanation. (a) Can two processes be concurrently executing the same program executable? (b) Can two running

More information

A COMPARISON OF REACTIVE ROUTING PROTOCOLS DSR, AODV AND TORA IN MANET

A COMPARISON OF REACTIVE ROUTING PROTOCOLS DSR, AODV AND TORA IN MANET ISSN: 2278 1323 All Rights Reserved 2016 IJARCET 296 A COMPARISON OF REACTIVE ROUTING PROTOCOLS DSR, AODV AND TORA IN MANET Dr. R. Shanmugavadivu 1, B. Chitra 2 1 Assistant Professor, Department of Computer

More information

M/s. Managing distributed workloads. Language Reference Manual. Miranda Li (mjl2206) Benjamin Hanser (bwh2124) Mengdi Lin (ml3567)

M/s. Managing distributed workloads. Language Reference Manual. Miranda Li (mjl2206) Benjamin Hanser (bwh2124) Mengdi Lin (ml3567) 1 M/s Managing distributed workloads Language Reference Manual Miranda Li (mjl2206) Benjamin Hanser (bwh2124) Mengdi Lin (ml3567) Table of Contents 1. Introduction 2. Lexical elements 2.1 Comments 2.2

More information

Midterm Exam Solutions Amy Murphy 28 February 2001

Midterm Exam Solutions Amy Murphy 28 February 2001 University of Rochester Midterm Exam Solutions Amy Murphy 8 February 00 Computer Systems (CSC/56) Read before beginning: Please write clearly. Illegible answers cannot be graded. Be sure to identify all

More information

Problem Set: Processes

Problem Set: Processes Lecture Notes on Operating Systems Problem Set: Processes 1. Answer yes/no, and provide a brief explanation. (a) Can two processes be concurrently executing the same program executable? (b) Can two running

More information

Module 17: "Interconnection Networks" Lecture 37: "Introduction to Routers" Interconnection Networks. Fundamentals. Latency and bandwidth

Module 17: Interconnection Networks Lecture 37: Introduction to Routers Interconnection Networks. Fundamentals. Latency and bandwidth Interconnection Networks Fundamentals Latency and bandwidth Router architecture Coherence protocol and routing [From Chapter 10 of Culler, Singh, Gupta] file:///e /parallel_com_arch/lecture37/37_1.htm[6/13/2012

More information

MultiJav: A Distributed Shared Memory System Based on Multiple Java Virtual Machines. MultiJav: Introduction

MultiJav: A Distributed Shared Memory System Based on Multiple Java Virtual Machines. MultiJav: Introduction : A Distributed Shared Memory System Based on Multiple Java Virtual Machines X. Chen and V.H. Allan Computer Science Department, Utah State University 1998 : Introduction Built on concurrency supported

More information

P2P Programming Assignment

P2P Programming Assignment P2P Programming Assignment Overview This project is to implement a Peer-to-Peer (P2P) networking project similar to a simplified Napster. You will provide a centralized server to handle cataloging the

More information

Processes, PCB, Context Switch

Processes, PCB, Context Switch THE HONG KONG POLYTECHNIC UNIVERSITY Department of Electronic and Information Engineering EIE 272 CAOS Operating Systems Part II Processes, PCB, Context Switch Instructor Dr. M. Sakalli enmsaka@eie.polyu.edu.hk

More information

Performance Best Practices Paper for IBM Tivoli Directory Integrator v6.1 and v6.1.1

Performance Best Practices Paper for IBM Tivoli Directory Integrator v6.1 and v6.1.1 Performance Best Practices Paper for IBM Tivoli Directory Integrator v6.1 and v6.1.1 version 1.0 July, 2007 Table of Contents 1. Introduction...3 2. Best practices...3 2.1 Preparing the solution environment...3

More information

Implementing an OpenFlow Switch With QoS Feature on the NetFPGA Platform

Implementing an OpenFlow Switch With QoS Feature on the NetFPGA Platform Implementing an OpenFlow Switch With QoS Feature on the NetFPGA Platform Yichen Wang Yichong Qin Long Gao Purdue University Calumet Purdue University Calumet Purdue University Calumet Hammond, IN 46323

More information

Table of Contents. Cisco Introduction to EIGRP

Table of Contents. Cisco Introduction to EIGRP Table of Contents Introduction to EIGRP...1 Introduction...1 Before You Begin...1 Conventions...1 Prerequisites...1 Components Used...1 What is IGRP?...2 What is EIGRP?...2 How Does EIGRP Work?...2 EIGRP

More information

Processes and Threads

Processes and Threads TDDI04 Concurrent Programming, Operating Systems, and Real-time Operating Systems Processes and Threads [SGG7] Chapters 3 and 4 Copyright Notice: The lecture notes are mainly based on Silberschatz s, Galvin

More information

vines access-group vines access-group access-list-number no vines access-group access-list-number Syntax Description

vines access-group vines access-group access-list-number no vines access-group access-list-number Syntax Description vines access-group vines access-group To apply an access list to an interface, use the vines access-group command in interface configuration mode. To remove the access list, use the no form of this command.

More information

OS COMPONENTS OVERVIEW OF UNIX FILE I/O. CS124 Operating Systems Fall , Lecture 2

OS COMPONENTS OVERVIEW OF UNIX FILE I/O. CS124 Operating Systems Fall , Lecture 2 OS COMPONENTS OVERVIEW OF UNIX FILE I/O CS124 Operating Systems Fall 2017-2018, Lecture 2 2 Operating System Components (1) Common components of operating systems: Users: Want to solve problems by using

More information

Control Message. Abstract. Microthread pattern?, Protocol pattern?, Rendezvous pattern? [maybe not applicable yet?]

Control Message. Abstract. Microthread pattern?, Protocol pattern?, Rendezvous pattern? [maybe not applicable yet?] Control Message An Object Behavioral Pattern for Managing Protocol Interactions Joe Hoffert and Kenneth Goldman {joeh,kjg@cs.wustl.edu Distributed Programing Environments Group Department of Computer Science,

More information

Lixia Zhang M. I. T. Laboratory for Computer Science December 1985

Lixia Zhang M. I. T. Laboratory for Computer Science December 1985 Network Working Group Request for Comments: 969 David D. Clark Mark L. Lambert Lixia Zhang M. I. T. Laboratory for Computer Science December 1985 1. STATUS OF THIS MEMO This RFC suggests a proposed protocol

More information

Microthread. An Object Behavioral Pattern for Managing Object Execution. 1.0 Intent. 2.0 Also Known As. 3.0 Classification. 4.0 Motivation/Example

Microthread. An Object Behavioral Pattern for Managing Object Execution. 1.0 Intent. 2.0 Also Known As. 3.0 Classification. 4.0 Motivation/Example Microthread An Object Behavioral Pattern for Managing Object Execution Joe Hoffert and Kenneth Goldman {joeh,kjg}@cs.wustl.edu Distributed Programing Environments Group Department of Computer Science,

More information

Types II. Hwansoo Han

Types II. Hwansoo Han Types II Hwansoo Han Arrays Most common and important composite data types Homogeneous elements, unlike records Fortran77 requires element type be scalar Elements can be any type (Fortran90, etc.) A mapping

More information

Computer Networks. Sándor Laki ELTE-Ericsson Communication Networks Laboratory

Computer Networks. Sándor Laki ELTE-Ericsson Communication Networks Laboratory Computer Networks Sándor Laki ELTE-Ericsson Communication Networks Laboratory ELTE FI Department Of Information Systems lakis@elte.hu http://lakis.web.elte.hu Based on the slides of Laurent Vanbever. Further

More information

Design and Implementation of A P2P Cooperative Proxy Cache System

Design and Implementation of A P2P Cooperative Proxy Cache System Design and Implementation of A PP Cooperative Proxy Cache System James Z. Wang Vipul Bhulawala Department of Computer Science Clemson University, Box 40974 Clemson, SC 94-0974, USA +1-84--778 {jzwang,

More information

Implementation of Boundary Cutting Algorithm Using Packet Classification

Implementation of Boundary Cutting Algorithm Using Packet Classification Implementation of Boundary Cutting Algorithm Using Packet Classification Dasari Mallesh M.Tech Student Department of CSE Vignana Bharathi Institute of Technology, Hyderabad. ABSTRACT: Decision-tree-based

More information

Chapter 22 Network Layer: Delivery, Forwarding, and Routing 22.1

Chapter 22 Network Layer: Delivery, Forwarding, and Routing 22.1 Chapter 22 Network Layer: Delivery, Forwarding, and Routing 22.1 Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 22-3 UNICAST ROUTING PROTOCOLS 22.2 A routing

More information

Automatic bootstrapping of OpenFlow networks

Automatic bootstrapping of OpenFlow networks Automatic bootstrapping of OpenFlow networks Sachin Sharma, Dimitri Staessens, Didier Colle, Mario Pickavet and Piet Demeester Department of Information Technology (INTEC), Ghent University - iminds E-mail:

More information

Network Control and Signalling

Network Control and Signalling Network Control and Signalling 1. Introduction 2. Fundamentals and design principles 3. Network architecture and topology 4. Network control and signalling 5. Network components 5.1 links 5.2 switches

More information

Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004

Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004 Middleware Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004 Outline Web Services Goals Where do they come from? Understanding middleware Middleware as infrastructure Communication

More information

Chapter 1: Distributed Information Systems

Chapter 1: Distributed Information Systems Chapter 1: Distributed Information Systems Contents - Chapter 1 Design of an information system Layers and tiers Bottom up design Top down design Architecture of an information system One tier Two tier

More information

Programming with MPI

Programming with MPI Programming with MPI p. 1/?? Programming with MPI Miscellaneous Guidelines Nick Maclaren Computing Service nmm1@cam.ac.uk, ext. 34761 March 2010 Programming with MPI p. 2/?? Summary This is a miscellaneous

More information

Lecture 12. Introduction to IP Routing. Why introduction? Routing

Lecture 12. Introduction to IP Routing. Why introduction? Routing Lecture. Introduction to IP Routing Why introduction? Routing: very complex issue need in-depth study entire books on routing our scope: give a flavour of basic routing structure and messaging give an

More information

Exploring mtcp based Single-Threaded and Multi-Threaded Web Server Design

Exploring mtcp based Single-Threaded and Multi-Threaded Web Server Design Exploring mtcp based Single-Threaded and Multi-Threaded Web Server Design A Thesis Submitted in partial fulfillment of the requirements for the degree of Master of Technology by Pijush Chakraborty (153050015)

More information

2/14/2012. Using a layered approach, the operating system is divided into N levels or layers. Also view as a stack of services

2/14/2012. Using a layered approach, the operating system is divided into N levels or layers. Also view as a stack of services Rensselaer Polytechnic Institute CSC 432 Operating Systems David Goldschmidt, Ph.D. Using a layered approach, the operating system is divided into N levels or layers Layer 0 is the hardware Layer 1 is

More information

Processes. Process Concept

Processes. Process Concept Processes These slides are created by Dr. Huang of George Mason University. Students registered in Dr. Huang s courses at GMU can make a single machine readable copy and print a single copy of each slide

More information

The Google File System

The Google File System October 13, 2010 Based on: S. Ghemawat, H. Gobioff, and S.-T. Leung: The Google file system, in Proceedings ACM SOSP 2003, Lake George, NY, USA, October 2003. 1 Assumptions Interface Architecture Single

More information

Gustavo Alonso, ETH Zürich. Web services: Concepts, Architectures and Applications - Chapter 1 2

Gustavo Alonso, ETH Zürich. Web services: Concepts, Architectures and Applications - Chapter 1 2 Chapter 1: Distributed Information Systems Gustavo Alonso Computer Science Department Swiss Federal Institute of Technology (ETHZ) alonso@inf.ethz.ch http://www.iks.inf.ethz.ch/ Contents - Chapter 1 Design

More information

Lecture 12: Link-state Routing. Lecture 12 Overview. Router Tasks. CSE 123: Computer Networks Chris Kanich. Routing overview

Lecture 12: Link-state Routing. Lecture 12 Overview. Router Tasks. CSE 123: Computer Networks Chris Kanich. Routing overview Lecture : Link-state Routing CSE 3: Computer Networks Chris Kanich Lecture Overview Routing overview Intra vs. Inter-domain routing Link-state routing protocols CSE 3 Lecture : Link-state Routing Router

More information

Lab 2: Threads and Processes

Lab 2: Threads and Processes CS333: Operating Systems Lab Lab 2: Threads and Processes Goal The goal of this lab is to get you comfortable with writing basic multi-process / multi-threaded applications, and understanding their performance.

More information

Scalable Enterprise Networks with Inexpensive Switches

Scalable Enterprise Networks with Inexpensive Switches Scalable Enterprise Networks with Inexpensive Switches Minlan Yu minlanyu@cs.princeton.edu Princeton University Joint work with Alex Fabrikant, Mike Freedman, Jennifer Rexford and Jia Wang 1 Enterprises

More information

Configuring QoS. Finding Feature Information. Prerequisites for QoS

Configuring QoS. Finding Feature Information. Prerequisites for QoS Finding Feature Information, page 1 Prerequisites for QoS, page 1 Restrictions for QoS, page 3 Information About QoS, page 4 How to Configure QoS, page 28 Monitoring Standard QoS, page 80 Configuration

More information

Configuring Rapid PVST+ Using NX-OS

Configuring Rapid PVST+ Using NX-OS Configuring Rapid PVST+ Using NX-OS This chapter describes how to configure the Rapid per VLAN Spanning Tree (Rapid PVST+) protocol on Cisco NX-OS devices. This chapter includes the following sections:

More information

Operating Systems. Designed and Presented by Dr. Ayman Elshenawy Elsefy

Operating Systems. Designed and Presented by Dr. Ayman Elshenawy Elsefy Operating Systems Designed and Presented by Dr. Ayman Elshenawy Elsefy Dept. of Systems & Computer Eng.. AL-AZHAR University Website : eaymanelshenawy.wordpress.com Email : eaymanelshenawy@yahoo.com Reference

More information

CSE 473 Introduction to Computer Networks. Final Exam. Your name here: 12/17/2012

CSE 473 Introduction to Computer Networks. Final Exam. Your name here: 12/17/2012 CSE 473 Introduction to Computer Networks Jon Turner Final Exam Your name here: 12/17/2012 1. (8 points). The figure below shows a network path connecting a server to a client. 200 km 2000 km 2 km X Y

More information

ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective

ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective Part II: Data Center Software Architecture: Topic 3: Programming Models Piccolo: Building Fast, Distributed Programs

More information

Problem. Context. Hash table

Problem. Context. Hash table Problem In many problems, it is natural to use Hash table as their data structures. How can the hash table be efficiently accessed among multiple units of execution (UEs)? Context Hash table is used when

More information

SOFTWARE DEFINED NETWORKS. Jonathan Chu Muhammad Salman Malik

SOFTWARE DEFINED NETWORKS. Jonathan Chu Muhammad Salman Malik SOFTWARE DEFINED NETWORKS Jonathan Chu Muhammad Salman Malik Credits Material Derived from: Rob Sherwood, Saurav Das, Yiannis Yiakoumis AT&T Tech Talks October 2010 (available at:www.openflow.org/wk/images/1/17/openflow_in_spnetworks.ppt)

More information

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications Distributed Objects and Remote Invocation Programming Models for Distributed Applications Extending Conventional Techniques The remote procedure call model is an extension of the conventional procedure

More information

CS 2112 Lecture 20 Synchronization 5 April 2012 Lecturer: Andrew Myers

CS 2112 Lecture 20 Synchronization 5 April 2012 Lecturer: Andrew Myers CS 2112 Lecture 20 Synchronization 5 April 2012 Lecturer: Andrew Myers 1 Critical sections and atomicity We have been seeing that sharing mutable objects between different threads is tricky We need some

More information

Multicast Communications. Slide Set were original prepared by Dr. Tatsuya Susa

Multicast Communications. Slide Set were original prepared by Dr. Tatsuya Susa Multicast Communications Slide Set were original prepared by Dr. Tatsuya Susa Outline 1. Advantages of multicast 2. Multicast addressing 3. Multicast Routing Protocols 4. Multicast in the Internet 5. IGMP

More information

Web-Based User Interface for the Floodlight SDN Controller

Web-Based User Interface for the Floodlight SDN Controller 3175 Web-Based User Interface for the Floodlight SDN Controller Hakan Akcay Department of Computer Engineering, Istanbul University, Istanbul Email: hknakcay@gmail.com Derya Yiltas-Kaplan Department of

More information

Lecture 2 Process Management

Lecture 2 Process Management Lecture 2 Process Management Process Concept An operating system executes a variety of programs: Batch system jobs Time-shared systems user programs or tasks The terms job and process may be interchangeable

More information

Parallel linked lists

Parallel linked lists Parallel linked lists Lecture 10 of TDA384/DIT391 (Principles of Conent Programming) Carlo A. Furia Chalmers University of Technology University of Gothenburg SP3 2017/2018 Today s menu The burden of locking

More information

Apache Flink. Alessandro Margara

Apache Flink. Alessandro Margara Apache Flink Alessandro Margara alessandro.margara@polimi.it http://home.deib.polimi.it/margara Recap: scenario Big Data Volume and velocity Process large volumes of data possibly produced at high rate

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

More information

Lecture (08, 09) Routing in Switched Networks

Lecture (08, 09) Routing in Switched Networks Agenda Lecture (08, 09) Routing in Switched Networks Dr. Ahmed ElShafee Routing protocols Fixed Flooding Random Adaptive ARPANET Routing Strategies ١ Dr. Ahmed ElShafee, ACU Fall 2011, Networks I ٢ Dr.

More information

Introduction to Programming Using Java (98-388)

Introduction to Programming Using Java (98-388) Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;

More information

COP 3330 Final Exam Review

COP 3330 Final Exam Review COP 3330 Final Exam Review I. The Basics (Chapters 2, 5, 6) a. comments b. identifiers, reserved words c. white space d. compilers vs. interpreters e. syntax, semantics f. errors i. syntax ii. run-time

More information

Question Score 1 / 19 2 / 19 3 / 16 4 / 29 5 / 17 Total / 100

Question Score 1 / 19 2 / 19 3 / 16 4 / 29 5 / 17 Total / 100 NAME: Login name: Computer Science 461 Midterm Exam March 10, 2010 3:00-4:20pm This test has five (5) questions. Put your name on every page, and write out and sign the Honor Code pledge before turning

More information

CS 471 Operating Systems. Yue Cheng. George Mason University Fall 2017

CS 471 Operating Systems. Yue Cheng. George Mason University Fall 2017 CS 471 Operating Systems Yue Cheng George Mason University Fall 2017 Outline o Process concept o Process creation o Process states and scheduling o Preemption and context switch o Inter-process communication

More information

Routing. 4. Mar INF-3190: Switching and Routing

Routing. 4. Mar INF-3190: Switching and Routing Routing 4. Mar. 004 1 INF-3190: Switching and Routing Routing: Foundations! Task! To define the route of packets through the network! From the source! To the destination system! Routing algorithm! Defines

More information

CIS 505: Software Systems

CIS 505: Software Systems CIS 505: Software Systems Fall 2017 Assignment 3: Chat server Due on November 3rd, 2017, at 10:00pm EDT 1 Overview For this assignment, you will implement a simple replicated chat server that uses multicast

More information

Barrelfish Project ETH Zurich. Message Notifications

Barrelfish Project ETH Zurich. Message Notifications Barrelfish Project ETH Zurich Message Notifications Barrelfish Technical Note 9 Barrelfish project 16.06.2010 Systems Group Department of Computer Science ETH Zurich CAB F.79, Universitätstrasse 6, Zurich

More information

A Routing Protocol for Utilizing Multiple Channels in Multi-Hop Wireless Networks with a Single Transceiver

A Routing Protocol for Utilizing Multiple Channels in Multi-Hop Wireless Networks with a Single Transceiver 1 A Routing Protocol for Utilizing Multiple Channels in Multi-Hop Wireless Networks with a Single Transceiver Jungmin So Dept. of Computer Science, and Coordinated Science Laboratory University of Illinois

More information

Process! Process Creation / Termination! Process Transitions in" the Two-State Process Model! A Two-State Process Model!

Process! Process Creation / Termination! Process Transitions in the Two-State Process Model! A Two-State Process Model! Process! Process Creation / Termination!!! A process (sometimes called a task, or a job) is a program in execution"!! Process is not the same as program "!! We distinguish between a passive program stored

More information

Thread-Local. Lecture 27: Concurrency 3. Dealing with the Rest. Immutable. Whenever possible, don t share resources

Thread-Local. Lecture 27: Concurrency 3. Dealing with the Rest. Immutable. Whenever possible, don t share resources Thread-Local Lecture 27: Concurrency 3 CS 62 Fall 2016 Kim Bruce & Peter Mawhorter Some slides based on those from Dan Grossman, U. of Washington Whenever possible, don t share resources Easier to have

More information

Process Concept Process Scheduling Operations On Process Inter-Process Communication Communication in Client-Server Systems

Process Concept Process Scheduling Operations On Process Inter-Process Communication Communication in Client-Server Systems Process Concept Process Scheduling Operations On Process Inter-Process Communication Communication in Client-Server Systems Process Process VS Program Process in Memory Process State Process Control Block

More information

Lecture 25: Board Notes: Threads and GPUs

Lecture 25: Board Notes: Threads and GPUs Lecture 25: Board Notes: Threads and GPUs Announcements: - Reminder: HW 7 due today - Reminder: Submit project idea via (plain text) email by 11/24 Recap: - Slide 4: Lecture 23: Introduction to Parallel

More information

Experimental Extensions to RSVP Remote Client and One-Pass Signalling

Experimental Extensions to RSVP Remote Client and One-Pass Signalling 1 Experimental Extensions to RSVP Remote Client and One-Pass Signalling Industrial Process and System Communications, Darmstadt University of Technology Merckstr. 25 D-64283 Darmstadt Germany Martin.Karsten@KOM.tu-darmstadt.de

More information

Chapter 4: Threads. Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads

Chapter 4: Threads. Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads Chapter 4: Threads Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads Chapter 4: Threads Objectives To introduce the notion of a

More information

ECE 158A: Lecture 13. Fall 2015

ECE 158A: Lecture 13. Fall 2015 ECE 158A: Lecture 13 Fall 2015 Random Access and Ethernet! Random Access! Basic idea: Exploit statistical multiplexing Do not avoid collisions, just recover from them When a node has packet to send Transmit

More information

Compilers Project 3: Semantic Analyzer

Compilers Project 3: Semantic Analyzer Compilers Project 3: Semantic Analyzer CSE 40243 Due April 11, 2006 Updated March 14, 2006 Overview Your compiler is halfway done. It now can both recognize individual elements of the language (scan) and

More information

Machine Problem 1: A Simple Memory Allocator

Machine Problem 1: A Simple Memory Allocator Machine Problem 1: A Simple Memory Allocator Introduction In this machine problem, you are to develop a simple memory allocator that implements the functions my malloc() and my free(), very similarly to

More information

UNIT IV -- TRANSPORT LAYER

UNIT IV -- TRANSPORT LAYER UNIT IV -- TRANSPORT LAYER TABLE OF CONTENTS 4.1. Transport layer. 02 4.2. Reliable delivery service. 03 4.3. Congestion control. 05 4.4. Connection establishment.. 07 4.5. Flow control 09 4.6. Transmission

More information

Part Two - Process Management. Chapter 3: Processes

Part Two - Process Management. Chapter 3: Processes Part Two - Process Management Chapter 3: Processes Chapter 3: Processes 3.1 Process Concept 3.2 Process Scheduling 3.3 Operations on Processes 3.4 Interprocess Communication 3.5 Examples of IPC Systems

More information

RD-TCP: Reorder Detecting TCP

RD-TCP: Reorder Detecting TCP RD-TCP: Reorder Detecting TCP Arjuna Sathiaseelan and Tomasz Radzik Department of Computer Science, King s College London, Strand, London WC2R 2LS {arjuna,radzik}@dcs.kcl.ac.uk Abstract. Numerous studies

More information

Process Management And Synchronization

Process Management And Synchronization Process Management And Synchronization In a single processor multiprogramming system the processor switches between the various jobs until to finish the execution of all jobs. These jobs will share the

More information

IP Access List Overview

IP Access List Overview Access control lists (ACLs) perform packet filtering to control which packets move through a network and to where. The packet filtering provides security by helping to limit the network traffic, restrict

More information

RFC: connectionless Data Link Metalanguage (cldl) cldl Metalanguage Model. RFC for a connectionless Data Link Metalanguage

RFC: connectionless Data Link Metalanguage (cldl) cldl Metalanguage Model. RFC for a connectionless Data Link Metalanguage RFC: connectionless Data Link Metalanguage (cldl) This RFC details a specification draft for a UDI metalanguage interfacing UDI Network Protocol drivers to UDI Data Link drivers. The metalanguage proposed

More information

Available online at ScienceDirect. Procedia Computer Science 34 (2014 )

Available online at   ScienceDirect. Procedia Computer Science 34 (2014 ) Available online at www.sciencedirect.com ScienceDirect Procedia Computer Science 34 (2014 ) 680 685 International Workshop on Software Defined Networks for a New Generation of Applications and Services

More information

Distributed Systems Theory 4. Remote Procedure Call. October 17, 2008

Distributed Systems Theory 4. Remote Procedure Call. October 17, 2008 Distributed Systems Theory 4. Remote Procedure Call October 17, 2008 Client-server model vs. RPC Client-server: building everything around I/O all communication built in send/receive distributed computing

More information

Chapter 5: CPU Scheduling

Chapter 5: CPU Scheduling COP 4610: Introduction to Operating Systems (Fall 2016) Chapter 5: CPU Scheduling Zhi Wang Florida State University Contents Basic concepts Scheduling criteria Scheduling algorithms Thread scheduling Multiple-processor

More information

TCP and Concurrency. The third assignment at DA

TCP and Concurrency. The third assignment at DA TCP and Concurrency The third assignment at DA2402 2009-03-05 Jonas Lundberg/Ola Flygt adapted to Java by Marcus Edvinsson maintained by Marcus Edvinsson Matematiska och systemtekniska institutionen, MSI

More information

Lightweight Remote Procedure Call

Lightweight Remote Procedure Call Lightweight Remote Procedure Call Brian N. Bershad, Thomas E. Anderson, Edward D. Lazowska, Henry M. Levy ACM Transactions Vol. 8, No. 1, February 1990, pp. 37-55 presented by Ian Dees for PSU CS533, Jonathan

More information

Jet Data Manager 2014 SR2 Product Enhancements

Jet Data Manager 2014 SR2 Product Enhancements Jet Data Manager 2014 SR2 Product Enhancements Table of Contents Overview of New Features... 3 New Features in Jet Data Manager 2014 SR2... 3 Improved Features in Jet Data Manager 2014 SR2... 5 New Features

More information

Chapter 5 - Input / Output

Chapter 5 - Input / Output Chapter 5 - Input / Output Luis Tarrataca luis.tarrataca@gmail.com CEFET-RJ L. Tarrataca Chapter 5 - Input / Output 1 / 90 1 Motivation 2 Principle of I/O Hardware I/O Devices Device Controllers Memory-Mapped

More information

Distributed File System

Distributed File System Distributed File System Project Report Surabhi Ghaisas (07305005) Rakhi Agrawal (07305024) Election Reddy (07305054) Mugdha Bapat (07305916) Mahendra Chavan(08305043) Mathew Kuriakose (08305062) 1 Introduction

More information

This Lecture. BUS Computer Facilities Network Management. Switching Network. Simple Switching Network

This Lecture. BUS Computer Facilities Network Management. Switching Network. Simple Switching Network This Lecture BUS0 - Computer Facilities Network Management Switching networks Circuit switching Packet switching gram approach Virtual circuit approach Routing in switching networks Faculty of Information

More information

CHAPTER 2: PROCESS MANAGEMENT

CHAPTER 2: PROCESS MANAGEMENT 1 CHAPTER 2: PROCESS MANAGEMENT Slides by: Ms. Shree Jaswal TOPICS TO BE COVERED Process description: Process, Process States, Process Control Block (PCB), Threads, Thread management. Process Scheduling:

More information