Nettle: Functional Reactive Programming for OpenFlow Networks
|
|
|
- Sheena Dawson
- 10 years ago
- Views:
Transcription
1 Nettle: Functional Reactive Programming for OpenFlow Networks Andreas Voellmy Ashish Agarwal Paul Hudak July 1, 2010 Yale University Department of Computer Science New Haven, CT Research Report YALEU/DCS/RR Abstract We describe a language-centric approach to solving the complex, low-level, and error-prone nature of network control. Specifically, we have designed a domain-specific language called Nettle, embedded in Haskell, that allows programming OpenFlow networks in an elegant, declarative style. Nettle is designed in layers to accommodate a family of DSLs targeted for specific network applications. The primary core of Nettle is based on the principles of functional reactive programming (FRP). Aside from its useful signal abstraction, FRP facilitates the integration of components written in different higher-level DSLs. We demonstrate our methodology by writing several non-trivial OpenFlow controllers. 1
2 1 Introduction Networks continue to increase in importance and complexity, yet the means to configure them remain primitive and error prone. There is no precise language for describing what a network should do, nor how it should behave. At best, network operators document their complex requirements informally, but then are faced with the daunting and unreliable task of translating their specifications by hand into the low-level, device-specific, often arcane scripts used to control today s switches and routers. This low-level programming model often results in devices and protocols interacting in unexpected and unintended ways, and gives little hope in validating high-level protocols and policies such as those related to traffic engineering, business relationships, security, and so on. Part of the problem is that most conventional routers are not only low-level, they are also decidedly impoverished in their expressive power, and inflexible in their configuration capabilities it is sometime difficult to get even the most basic configurations to work correctly. Another problem is that conventional routers are designed to work autonomously, and not collaboratively with other routers to achieve a more sophisticated global behavior. We believe that these problems can be overcome through the use of advanced high-level programming languages and tools that allow one to express the overall network behavior as a single program expressed in a declarative style. Although this idea has been suggested by several researchers [3, 7], the development of an actual solution has been elusive. There are two aspects of our approach that we believe will result in a successful outcome: First, we abandon conventional routers in favor of OpenFlow switches [1]. OpenFlow presents a unified, flexible, dynamic, remotely programmable interface that allows network switches to be controlled from a logically centralized location. Second, we use advanced programming language ideas to ensure that our programming model is expressive, natural, concise, and designed precisely for networking applications. In particular, we borrow ideas from functional reactive programming (FRP) and adopt the design methodology of domain-specific language (DSL) research. Our overall approach, which we call Nettle, allows us to radically rethink the problem of network configuration. Rather than configure a collection of black boxes, we control a collection of programmable components. In doing this, we enable the development of new control algorithms and most importantly, more powerful and natural control languages. This approach makes it feasible to provide application-specific languages, to express interdomain business policies or security requirements, for example. It enables programmers to design new dynamic traffic control algorithms not provided in today s devices. 2 Approach Because computer networks come in many different shapes, sizes, and purposes, it would be a mistake to try designing single language that did it all. Our approach is to instead design an extensible family of DSLs, each capturing an important network abstraction. For example, we may have one DSL for access control policies, another for traffic engineering strategies, and another for expressing interdomain contracts. And because the family is extensible, new abstractions can easily 2
3 Security Routing Contracts Functional Reactive Programming HOpenFlow Haskell OpenFlow Figure 1: Nettle layered system architecture. be added. Furthermore, to avoid creating small, isolated DSLs, we rely on the technique of embedding each DSL into a host language. We choose Haskell [11] as our host because of its remarkable flexibility in supporting embedded DSLs [5]. This approach allows our DSLs to share a common look and feel through the adoption of the same language infrastructure, such as variable naming conventions, function definitions, primitive data types, a powerful type system, and so on. This not only relieves us from the burden of implementing these general features, allowing us to focus on domain-specific concepts, but more importantly allows the DSLs to interoperate with one another. Figure 1 illustrates our approach. At the bottom are OpenFlow switches, an enabling technology for our work. One level up is Haskell, our host language. Above that is a library, HOpenFlow, that abstractly captures the OpenFlow protocol. The next layer in our stack is an instantiation of a language in the Functional Reactive Programming(FRP) paradigm. FRP is a family of languages that provide an expressive and mathematically sound approach to programming real-time interactive systems in a declarative manner. FRP-based languages have been used successfully in computer animation, robotics, control systems, GUIs, interactive multimedia, and other areas in which there is a combination of both continuous and discrete entities [9, 10, 12, 4]. Network control programs share many of these characteristics, and we expect that FRP will be a key technology in the modular implementation of control systems and higher-level protocols. Above the FRP layer, we implement our extensible family of DSLs, each member capturing a particular domain. These more specific DSLs will be implemented in terms of Haskell and FRP. This allows us to integrate the components of different domains in the framework of FRP, which provides an expressive and generic language for composing components and controlling their dynamic structure. Previous work by Pembeci et al.[8] has demonstrated the effectiveness of using FRP as a system integration language in the area of robotics, and we intend to follow a similar approach to the integration of disparate network control components. 3
4 3 OpenFlow The OpenFlow specification roughly and informally defines an abstract operational semantics of an OpenFlow switch, and defines a network protocol for remotely interacting with OpenFlow switches by sending and receiving OpenFlow-specific messages. The basic architecture consists of OpenFlow switches, a controller, and end hosts. The switches communicate with the controller over a secure TCP connection, typically on a dedicated control network (distinct from the main data network). OpenFlow switches maintain a flow table containing entries consisting of a match condition and a list of forwarding actions. The match condition can optionally match on most Ethernet, IP, or transport protocol header fields. The forwarding actions include forwarding to specific ports on the switch, flooding the packet, and many other options. When a packet is received by a switch, it searches for a matching entry. If matches are found, the highest priority one is chosen and its actions are executed. If the list of actions is empty, the packet is dropped. If no match is found, the packet is encapsulated and sent to the controller in a format defined by the OpenFlow protocol. The controller can use the OpenFlow protocol to modify switches flow tables and command switches to send packets. 4 Functional Reactive Programming In this section we briefly introduce the key ideas and constructs of the functional reactive programming (FRP) layer of Nettle. The design of this layer is strongly influenced by Yampa [6], an FRP-based DSL that we previously designed for use in robotics and animation. The simplest way to understand this layer is to think of it as a language for expressing electrical circuits. We refer to the wires in a typical circuit diagram as signals, and the boxes (that convert one signal into another) as signal functions. For example, this very simple circuit has two signals, x and y, and one signal function, sigfun: y sigfun x This is written as a code fragment in Nettle simply as: y sigfun x Nettle has many built-in signal functions, including all of the obvious numeric functions, as well as ones for integration and differentiation of signals. Of course one can also define new signal functions. For example, here is a definion for sigfun above that simply returns a signal that always takes the sine of one greater than its input: sigfun ::SF Float Float sigfun = proc x do y sin x +1 returna y 4
5 The first line in this program is a type signature that declares that sigfun is a signal function that converts continuous values of type Float to continuous values of type Float. In Nettle we can use signals and signal functions in this way to program, for example, controllers that alter traffic flow based on signals that measure the volume of traffic on particular links. But in this report we emphasize a different use: we will use signals to represent streams of control messages flowing to and from our OpenFlow switches you can think of each signal (i.e. wire) as being a stream of messages. In a conventional language, a message- or event-based system might be implemented by some kind of call-back mechanism and a loop that handles messages as they arise, one by one. But in Nettle, it is done much more declaratively, where we think of, and program with, message streams as a whole. For example, the merger of two message streams ms1 and ms2 is simply ms1..ms2. A message, of course, carries data, and sometime we need to manipulate the data in each message of a message stream. We can apply a function fn to each message in a message stream ms by the simple expression ms = fn. Sometimes our chore is even simpler: we may want to simply replace each message with a different one, say m, which can be written ms m. We will use both of these operators in later examples. A slightly more complicated operation on event streams we will use later is mapfiltere. If fn is a function returning optional values, i.e. having type a Maybe b, then mapfiltere fn ms applies fn to each message in the stream ms, but only replaces the messages for which a non-null value is produced by fn. In those cases it produces the value given by fn. Nettle elegantly unifies message streams with continually varying signals by representing message streams as continuous signals that are only defined at discrete points in time. More concretely, Nettle represents a discrete signal that periodically carries information of some type α as signals that take on values of the Event α datatype, whose values are either NoEvent or Event a for some a ::α. Note that Event α is isomorphic to Haskell s Maybe α data type. For example, a signal function that converts a message stream carrying messages of type M1 into a message stream carrying messages of type M2 has type SF (Event M1) (Event M2). Nettle provides several constructs that convert between discrete and continuous signals. One we will use later is hold :: a SF (Event a) a, that converts a stream of events carrying values of type a into a continuous, piece-wise constant signal of a values. The output signal of hold a0 holds the last a value received on its input line, and starts out as a0. Nettle also includes several stateful signal functions, i.e. signal functions whose output signal at some moment in time depends on the values of the input signal at earlier moments in time. One such signal function is accum ::a SF (Event (a a)) (Event a). accum a0 takes as input an event stream carrying state-modifying functions. At each event in its input stream, it applies the state-modifying function carried by the event to the current state, updates the current state with that new value, and outputs an event carrying the updated value. 5
6 5 FRP for OpenFlow Control At the most basic level, Nettle programs are signal functions operating on input types that carry, among other data, messages from OpenFlow switches, and output types that carry, among other things, commands for OpenFlow switches. More concretely, Nettle programs are signal functions having a type of the form SF i o for some domain-specific types i and o. Admittedly, this representation of a network control program as a transformation of a timed streamof messagesintoatimedstreamof commands isfairly low-level, sinceitsays nothingabout high-level networking concepts such as routing, load balancing, security, etc. Surprisingly, though, these basic tools Haskell, FRP, and domain-specific input and output types for the OpenFlow protocol provide an excellent basis for the exploration and implementation of a variety of network control algorithms and abstractions. At the same time, they do not impose a restrictive high-level language on Nettle controllers, which we feel would be premature. Rather, this collection of tools provides an ideal platform for the construction of higher-level abstractions and for the integration of components written in terms of different abstractions. Inthefollowingsections, wedescribehowwetailorfrpandhaskelltothedomainofopenflow network control, and we demonstrate, with some small examples, how one can program controllers in this language. 5.1 Switch Events OpenFlow switches establish TCP connections with the controller, transmit OpenFlow messages to the controller, and under some circumstances terminate their connections with the controller. In each of these events, a controller may need to take some actions. We represent these events, and indicate to which switch an event pertains, with values of the SwitchEvent datatype: data SwitchEvent = SwitchUp SockAddr SwitchDown SockAddr SwitchMessage SockAddr SCMessage We use values of the type SockAddr to identify a switch. The SockAddr value associated with a switch is the IP address and transport port number that the controller uses to communicate with that switch. The SCMessage datatype represents the logical content of the OpenFlow messages that a switch may send to the controller, abstract from their binary OpenFlow formats. Figure 2 shows the definition of this datatype. Here we look at one variant of this datatype, representing packet-in messages, in more detail. Packet-in messages are among the most important switch-to-controller message types. A switch sends a packet-in message when it receives a packet for which it has no matching flow entry in its flow table, or if a matching entry directs the switch to send the packet to the controller. The PacketInfo type represents the logical information carried by such a message: 6
7 data SCMessage = SCHello OpenFlowVersion SCEchoRequest TransactionID [Word8] SCEchoReply TransactionID [Word8] PacketIn PacketInfo FlowRemoved FlowRemoved PortStatus PortStatus FeaturesReply SwitchFeatures GetConfigReply SwitchConfig StatsReply StatsReply Err Error... Figure 2: Logical representation of switch-to-controller OpenFlow messages data PacketInfo = PacketInfo { packetbufferid :: Maybe BufferID, -- buffer ID, if packet buffered at switch packetoriglen :: NumBytes, -- full length of frame received by switch packetinport :: PortID, -- port on which frame was received packetinreason :: PacketInReason, -- reason packet is being sent packetdata ::[ Word8] -- ethernet frame received by switch } In addition to being independent from the binary representation of the message, this type abstracts several other low-level details. For example, a packet-in message may or may not include a buffer ID, depending on whether the sending switch buffered the packet or not. In the OpenFlow message format, the absence of a buffer ID is indicated by a 1 value for this field of the message. Our Haskell representation makes this distinction explicit by modeling the bufferid with a Maybe type, which represents an optional value. This design helps to prevent programmer error, by enabling the Haskell type system to force programmers to acknowledge the possibility of a missing buffer ID. 5.2 Switch Commands Once a switch establishes a connection with the controller, the controller may send switch commands to the switch. Nettle provides a language of switch commands, partially shown in Figure 3, for this purpose. For example, deleteflowrules dhcp switch1 deletes all flow rules from switch1 whose match condition matches any subset of dhcp packets. The identifier switch1 has type SockAddr. The identifier dhcp is of type PacketPredicate and is defined using a small language of predicates, shown in Figure 4. This language of packet predicates provides a convenient method of describing complex families of packets. In this instance, dhcp is 7
8 defined as: ip = ethframetypeis ethtypeip udp = ip transportprotocolis udpcode dhcp = udp (sendertransportis dhcpport receivertransportis dhcpport) These definitions say that ip packets are those Ethernet frames whose Ethernet frame type is ethtypeip, that udp packets are those ip packets having a transport protocol with code udpcode, and that dhcp packets are udp packets having either the sender or the receiver transport port equal to dhcpport. As a second example, we can write addflowrule (priority 1) (http = [ sendonport 1, sendonport 2]) switch2 to insert flow entries on switch2 at priority level 1 that forwards http traffic on ports 1 and 2. In this example we have used the = infix operator which provides a suggestive syntax, but which does nothing more than pair a PacketPredicate with a list of Actions. Again, we make use of packet predicates to define http: http = ethframetypeis ethtypeip transportprotocolis iptypetcp receivertransportin [ 80, 443, 8080] In this definition we use the function receivertransportin ::[ TransportPort] PacketPredicate to concisely denote a predicate that matches packets whose receiver transport port is among those listed. It is important to note that this function, while defined in the library, is not primitive, and could easily have been defined by a user. Indeed, it is defined as: receivertransportin ps = anyp [receivertransportis p p ps] anyp = foldl ( ) nopacket This definition demonstrates the utility of the embedding technique in enabling users to use familiar tools to extend the basic language. Furthermore, Nettle provides a binary operator that combines multiple commands into a single composite command that, when executed, will perform both commands. For example, we can combine the two commands above as: deleteflowrules dhcp switch1 addflowrule (priority 1) (http = [ sendonport 1, sendonport 2]) switch2 8
9 requestfeatures :: SockAddr SwitchCommand addflowrule :: Priority (PacketPredicate,[Action]) SockAddr SwitchCommand deleteflowrules :: PacketPredicate SockAddr SwitchCommand sendbufferedpacket :: BufferID Maybe PortID [Action] SockAddr SwitchCommand sendpacket :: ByteString Maybe PortID [Action] SockAddr SwitchCommand setportsettings :: PortID EthernetAddress Map PortAttribute Bool SockAddr SwitchCommand... Figure 3: Switch commands In fact, we make the type of switch commands, SwitchCommand, an instance of the Monoid type class, which supports the following operations: class Monoid m where mempty :: m -- unit w.r.t. mappend mappend ::m m m -- associative binary operation We define mappend for the SwitchCommand type to be synonymous with, and define noop :: SwitchCommand as a suggestive synonym for mempty. With these building blocks, we can now apply standard functional programming techniques to extend the language with new commands defined in terms of the basic commands. For example, one can write a function that turns an entire table of flow rules into a flow table update command, making use of the standard function mconcat ::Monoid m [m] m: addflowrules :: Priority [(PacketPredicate,[ Action])] SockAddr SwitchCommand addflowrules priority rules switch = mconcat [addflowrule priority rule switch rule rules] Clearly, composite SwitchCommand s that address different switches will require multiple Open- Flow messages to be sent. In fact, even basic SwitchCommand values often require multiple Open- Flow messages. One reason for this is that the PacketPredicate language is richer than the underlying match constructs provided by OpenFlow. In particular, PacketPredicates support disjunction, whereas OpenFlow matches do not. However, commands involving PacketPredicates can be simulated, often by using multiple commands and flow table rules. For example, the implementation deleteflowrules dhcp switch1 sends two delete commands to switch1, one for each disjunct of the equivalent disjunctive normal form for dhcp, which happens to be: (udp sendertransportis dhcpport) (udp receivertransportis dhcpport) 9
10 ( ),( ) :: PacketPredicate PacketPredicate PacketPredicate anypacket, nopacket :: PacketPredicate inportis :: PortID PacketPredicate ethsourceis, ethdestis :: EthernetAddress PacketPredicate ethframetypeis :: EthernetFrameType PacketPredicate transportprotocolis :: TransportProtocol PacketPredicate sendertransportis, receivertransportis :: TransportPort PacketPredicate... Figure 4: Packet Predicates 5.3 Generic Controllers While many Nettle programs can be written simply as signal functions with input type SwitchEvent and output type SwitchCommand, i.e. as SF SwitchEvent SwitchCommand, realistic control systems will incorporate input sources other than SwitchEvents and will communicate with or command devices other than switches. For example, some controllers may interact with intrusion detection systems, in addition to controlling OpenFlow switches, in order to proactively implement network security goals. Other controllers may interact with user interface elements to allow operators to interactively operate some part or aspect of the network, for example to toggle between different routing modes on command. Therefore, each Nettle-controlled system may need input and output types tailored to the particular system. At the same time, many controller modules will be relatively generic and will work primarily with OpenFlow switch events and switch commands. We would like to write these components generically, rather than write them for specific input and output types and consequently be forced to rewrite them for each system. To accomplish this, Nettle structures its input and output types using Haskell s type classes. With type classes, Nettle defines functional interfaces that types may support, and controllers can then be written generically by having their input and output types depend on this interface, rather than a specific implementation. Figure 5 gives some of the output type classes provided by Nettle. The output class for types carrying switch commands is HasSwitchCommands and it is identical to the switch command language, except for the result types of the functions. The HasConsoleOutput type is implemented by types carrying console output commands. Both type class declarations require that instances implement the Monoid type class. This ensures that commands of different type classes can be combined. For example, this enables one to write the following command to both send a packet and to output a message: sendbufferedpacket bufid (port 1) [ flood] switch1 consoleout ( Sent packet with buffer id : + show bufid) Figure 6 shows some of the input classes supported by Nettle. The HasSwitchEvents class is implemented by types which may carry(among other things) SwitchEvent values. The HasConsoleInput type class is implemented by types carrying input from a console window on the controller machine, 10
11 class Monoid o HasSwitchCommands o where requestfeatures :: SockAddr o addflowrule :: Priority (PacketPredicate,[Action]) SockAddr o deleteflowrules :: PacketPredicate SockAddr o sendbufferedpacket :: BufferID Maybe PortID [Action] SockAddr o sendpacket ::ByteString Maybe PortID [Action] SockAddr o setportsettings :: PortID EthernetAddress Map PortAttribute Bool SockAddr o... class Monoid o HasConsoleOutput o where consoleout ::String o class HasSwitchEvents i where switchevente :: i Event SwitchEvent class HasConsoleInput i where consoleinpute :: i Event String Figure 5: Type classes for output. class HasMessengerInput i where messengermessagee :: i Event (SockAddr, Message) Figure 6: Type classes for input. while the HasMessengerInput is implemented by types carrying input from a Messenger server. The Messenger server is a simple, text-based TCP server which accepts ASCII messages from networked devices. A controller may use the Messenger server to accept input from other networked devices, such as intrusion detection systems, or authentication systems. A Messenger message includes the text of the message as well as the SockAddr of the sender. In addition, Nettle includes a collection of functions, shown in Figure 7, implemented in terms of the HasSwitchEvents type class, and available in every instance of the type class. These functions, effectively turn the input signal into a stream of some particular kind of event. For example, arr packetine has type HasSwitchEvents i SF i (Event PacketIn), and is a signal that outputs the stream of packet-in events sent to the controller. The Nettle primitive arr ::(a b) SF a b lifts an ordinary function to the signal function level, simply applying the function pointwise on the input signal. 5.4 Running Nettle Programs To run a Nettle program, one must (1) define application-specific input and output types and make them instances of the relevant type classes, such as HasSwitchEvents and HasSwitchCommands, (2) define drivers, i.e. IO commands to produce values of the input types and consume values of the output types, and (3) drive the Nettle signal function with these drivers. Currently, we provide several input and output types and I/O drivers of several kinds, such as TCP servers for interacting with OpenFlow switches and devices using the Messenger protocol. Our intention is that Nettle should provide a convenient, declarative way to define these three components, but this part of the 11
12 switchupe :: HasSwitchEvents i i Event SockAddr switchdowne :: HasSwitchEvents i i Event SockAddr switchmessagee :: HasSwitchEvents i i Event (SockAddr, SCMessage) helloe :: HasSwitchEvents i i Event (SockAddr, OpenFlowVersion) echorequeste :: HasSwitchEvents i i Event (SockAddr, TransactionID,[Word8]) packetine :: HasSwitchEvents i i Event (SockAddr, PacketInfo) switchfeaturee :: HasSwitchEvents i i Event (SockAddr, SwitchFeaturesRecord) portstatuse :: HasSwitchEvents i i Event (SockAddr, PortStatusRecord) switcherrore :: HasSwitchEvents i i Event (SockAddr, SwitchErrorRecord) Figure 7: Functions available in all types implementing HasSwitchEvents. library is still in development and currently users must write a small amount of code to develop custom input and output types and drivers. We therefore omit detailed disussion here and just present one way of driving a Nettle signal function. The Nettle library defines the types NettleInput and NettleOutput that implement all the input and output type classes mentioned above, and a signal function driver, nettledriver ::(ControllerServerPort, MessengerServerPort) SF NettleInput NettleOutput IO () to drive any controller using these type classes. This driver starts up a TCP server at the ControllerServerPort value that communicates with OpenFlow switches, and a TCP server to communicate with devices using the Messenger protocol at the MessengerServerPort value. Additionally, it performs the basic interaction needed to follow the OpenFlow protocol, such as negotiating an OpenFlow version and responding to echo requests from switches. Therefore, to run an OpenFlow controller, a user simply defines their main function to invoke nettledriver for an appropriate controller, as in: main ::IO () main = nettledriver (2525, 9999) controller controller =... This main program can be compiled to an executable with a Haskell compiler, or run interactively using a Haskell interpreter. The implementation of Nettle, including the TCP servers and parsing and unparsing libraries for OpenFlow messages, is written entirely in Haskell. Implementing the entire library in Haskell provides us with great flexibility to redesign any aspect of our language and implementation. 6 Examples In this section we demonstrate how controllers can be written in this language with some small example controllers. 12
13 The following is a controller that prints every received packet to the console: sf1 ::(HasSwitchEvents i,hasconsoleoutput o) SF i (Event o) sf1 = proc i do returna packetine i = λe consoleout (show e) The following controller acts as sf1, but also explicitly floods every packet: sf2 ::(HasSwitchEvents i, HasConsoleOutput o, HasSwitchCommands o) SF i (Event o) sf2 = proc i do returna packetine i = λe consoleout (show e) sendreceivedpacket e [flood] In this example, we have made use of a Nettle function, sendreceivedpacket::hasswitchcommands o (SockAddr,PacketInfo) [Action] o, easily defined in terms of the functions explained above, that returns a command to perform an action on a particular packet received by a switch. The previous controller never installs flow table entries at the switches, and hence must process each packet in the network. Instead, the following controller installs a flow table entry at each switch to flood all packets, and this is installed whenever a switch connects with the controller: sf3 ::(HasSwitchEvents i, HasConsoleOutput o, HasSwitchCommands o) SF i (Event o) sf3 = proc i do returna helloe i = λ(sw, ) addflowrule (priority 1) (anypacket = [flood]) sw This example illustrates that controllers can act proactively to configure the flow tables of switches, rather than reacting to packet arrivals. We can also define controllers that will provide useful functionality for many other controllers. For example, the following controller deletes all flow table entries when a switch connects with a controller: switchinitializer ::(HasSwitchEvents i, HasSwitchCommands o) SF i (Event o) switchinitializer = proc i do returna helloe i = λ(sw, ) deleteflowrules anypacket sw Another useful signal function is hostdirectiontracker, which is not a complete controller by itself, but provides useful information to other controllers. This signal function maintains a mapping indicating for each host and switch, on which port, if any, the switch most recently received a packet from the host: type HostDirectionMap = Map (SockAddr, EthernetAddress) PortID hostdirectiontracker :: HasSwitchEvents i SF i HostDirectionMap 13
14 hostdirectiontracker = proc i hold Map.empty < accum Map.empty packetine i = update where update (sw,pktinfo) hdmap = let inport = packetinport pktinfo ethsrcaddr = sourceaddress (enclosedframe pktinfo) in Map.insert (sw, ethsrcaddr) inport hdmap Unlike previous examples, this signal function is stateful, and it accomplishes this by using the hold and accum signal functions mentioned in Section 4. The output of this signal function starts off as the empty map. It then holds its value until a packet-in event is received, at which point it outputs the map resulting from applying the update function to the current map, and repeats this process indefinitely. The update function makes use of the Nettle library function enclosedframe:: PacketInfo EthernetFrame, which parses the packet data enclosed in a PacketInfo value into a structured representation of an Ethernet frame. Over time, hostdirectiontracker will construct a map indicating in which direction a switch should send a packet to a host. This can be used as a component of a so-called learning switch controller. Traditionally, a learning switch is an Ethernet switch which initially acts much like an Ethernet bridge, flooding frames received on one port to all other ports. However, a learning switch also maintains a table of Ethernet addresses and ports, such that if (a,p) is in the table, then p is the port at which the switch most recently received a frame from the host with address a. When a switch receives a frame addressed to a, it forwards the frame on port p if (a,p) is in its table at that time, or else floods it on all ports other than the incoming one. Our implementation of the learning switch essentially involves the parallel composition of two signal functions. One signal function, tableupdater, manages the forwarding tables of the switches, while the other signal function, packetsender, handles packets that fail to match any entries at the switches: learningcontroller = proc i do tablecmds tableupdater i sendcmds packetsender i returna tablecmds sendcmds The signal function tableupdater initializes the flow table of any switch connecting with the controller by clearing its flow table. In addition, it tracks host locations using hostdirectiontracker signal function defined above, and updates the forwarding tables of the switches by inserting appropriate flow entries whenever two hosts whose locations have been learned attempt to communicate: tableupdater = proc i do clearcmd switchinitializer i hostdirmap hostdirectiontracker i 14
15 updatecmd = mapfiltere (updatetablecommands hostdirmap) (packetine i) returna clearcmd updatecmd The heart of the logic for tableupdater is in the updatetablecommands function. This function takes as arguments the current host direction map and a packet-in event, and optionally returns a command to update the flow tables of switches. It does not update the flow tables if either the location of the source or destination of the packet is unknown and returns Nothing in this case. It is in fact crucial to the correctness of this controller that it not add flow table entries matching only on the destination address of a frame, because if it did so, the entry would match frames whose sender location is unknown. These frames would be forwarded toward the destination rather than be sent to the controller, and hence the controller would not learn about the sender s location. Thus, such a flow table entry would interfere with the learning process of the controller. In the case that the locations of both the sender s and receiver r of a packet are known and their source and destination ports on switch sw are ps and pr, respectively, updatetablecommands will return a command that updates the flow table of the sending switch sw with a pair of flow table entries, using this command: addflowrules (priority 1) [flowfromto s ps r pr,flowfromto r pr s ps] sw where flowfromto s ps r pr = inportis ps ethsourcedestare s r = [sendonport pr] Here we use a function ethsourcedestare defined as ethsourcedestare s d = ethsourceis s ethdestis d Note that the inserted rules match on the expected incoming port of a frame from a source. If the source changes location in the network, connecting to a different switch or port, the previously installed flow entry will no longer match that source s frames and frames from this source will be sent to the controller. This allows the controller to adjust the flow tables for the source s new location. In light of this, the controller removes any existing flow entries for a source-destination pair when adding new entries. Concretely, the command returned by updatetablecommands is: deleteflowrules (ethsourcedestare s r ethsourcedestare r s)) sw addflowrules (priority 1) [flowfromto s ps r pr,flowfromto r pr s ps] sw Figure 8 shows the updatetablecommands function in its entirety. Note that we make use of the Maybe monad, to succinctly express the conditions under which the function returns Nothing, that is, whenever the address lookups fail. The signal function packetsender is straightforward. It simply floods every packet for which a packet-in message is received: packetsender = proc i do returna packetine i = λe sendreceivedpacket e [flood] 15
16 updatetablecommands hostdirmap (sw, pktinfo) = do let ethframe = packetinframe pktinfo let s = sourceaddress ethframe let r = destaddress ethframe ps Map.lookup (sw, s) hostdirmap pr Map.lookup (sw,r) hostdirmap return (deleteflowrules (ethsourcedestare s r ethsourcedestare r s)) sw addflowrules (priority 1) [flowfromto s ps r pr,flowfromto r pr s ps] sw) where flowfromto s ps r pr = inportis ps ethsourcedestare s r = [sendonport pr] ethsourcedestare s d = ethsourceis s ethdestis d Figure 8: The updatetablecommands function This ensures that packets from or to hosts with unknown locations are sent toward their destination. As the tableupdater learns the locations of hosts and installs flow entries in the switches, most frames will be forwarded directly by the switches and will no longer be flooded by the packetsender. 7 Related Work NOX [2] is an open-source library for writing controllers of OpenFlow switches in C++ and Python. NOX aims to provide a convenient method to program controllers, and hides many of the low-level details, such as the binary formats of OpenFlow messages, from controller writers. It provides an event-driven programming model in which modules, implemented as C++ classes, can register to handle events generated by other modules and can generate events themselves. We have not conducted a thorough investigation of NOX s features, and therefore cannot give a detailed comparison of Nettle and NOX here. Instead, we highlight some of the main similarities and differences. NOX and Nettle both provide a setting in which to write programs that respond to events from switches and can generate output for switches. In NOX, users respond to events by registering imperative callbacks, while in Nettle users program more declaratively with entire event streams. As in NOX, Nettle programs expose an event-based interface. In NOX, this is done by registering handlers in a global registry and generating events. In this model it is unclear which components will be interacting, and in what order. In contrast, Nettle programs make their event interface explicit in their input and output types and their interactions can be precisely described by connecting signal functions using the arrow combinators. Nettle programs can broadcast events, just as NOX modules do, but they can also interact in more varied ways. By using FRP, Nettle also provides continuous quantities, which are essentially a non-event based form of module interaction, in which modules continually interact. NOX does not provide a comparable functionality. 16
17 8 Conclusion In this report we described Nettle, an embedded DSL in Haskell, for dynamically controlling Open- Flow switches and demonstrated several example controllers in this style. Nettle is based on the Yampa language, a language for functional reactive programming. This layer of Nettle will form a crucial platform for the construction of higher-level languages for expressing particular network concerns, such as dynamic traffic control, security, and business contracts and objectives. In upcoming work, we intend to design DSLs for some of these areas and to utilize Nettle to integrate expressions in different languages to create complete network control applications. 9 Acknowledgements This research was supported in part by an STTR grant from the Defense Advanced Research Projects Agency. We wish to thank our STTR industrial partner, Galois, Inc. for its support as well. Vijay Ramachandran motivated our initial foray into language design for networking. 17
18 References [1] [2] [3] M. Caesar and J. Rexford. BGP routing policies in ISP networks. Network, IEEE, 19(6):5 11, nov.-dec [4] C. Elliott and P. Hudak. Functional reactive animation. In International Conference on Functional Programming, pages , June [5] P. Hudak. Building domain specific embedded languages. ACM Computing Surveys, 28A:(electronic), Dec [6] P. Hudak, A. Courtney, H. Nilsson, and J. Peterson. Robots, arrows, and functional reactive programming. In Summer School on Advanced Functional Programming, Oxford University. Springer Verlag, LNCS 2638, [7] R. Mahajan, D. Wetherall, and T. Anderson. Understanding BGP misconfiguration. In SIGCOMM, pages 3 17, Pittsburgh, PA, Aug [8] I. Pembeci, H. Nilsson, and G. Hager. Functional reactive robotics: an exercise in principled integration of domain-specific languages. In PPDP 02: Proceedings of the 4th ACM SIGPLAN international conference on Principles and practice of declarative programming, pages , New York, NY, USA, ACM. [9] J. Peterson, G. Hager, and P. Hudak. A language for declarative robotic programming. In International Conference on Robotics and Automation, [10] J. Peterson, P. Hudak, and C. Elliott. Lambda in motion: Controlling robots with Haskell. In First International Workshop on Practical Aspects of Declarative Languages. SIGPLAN, Jan [11] S. Peyton Jones et al. The Haskell 98 language and libraries: The revised report. Journal of Functional Programming, 13(1):0 255, Jan [12] A. Reid, J. Peterson, G. Hager, and P. Hudak. Prototyping real-time vision systems: An experiment in DSL design. In Proc. Int l Conference on Software Engineering, May
Nettle: Functional Reactive Programming of OpenFlow Networks
Nettle: Functional Reactive Programming of OpenFlow Networks Andreas Voellmy and Paul Hudak Yale University [email protected], [email protected] Abstract. We describe a language-centric approach
Applying SDN to Network Management Problems. Nick Feamster University of Maryland
Applying SDN to Network Management Problems Nick Feamster University of Maryland 1 Addressing the Challenges of Network Management Challenge Approach System Frequent Changes Event-Based Network Control
Lithium: Event-Driven Network Control
Lithium: Event-Driven Network Control Nick Feamster, Hyojoon Kim, Russ Clark Georgia Tech Andreas Voellmy Yale University Software Defined Network Management Software defined networking (SDN) makes it
Protocols and Architecture. Protocol Architecture.
Protocols and Architecture Protocol Architecture. Layered structure of hardware and software to support exchange of data between systems/distributed applications Set of rules for transmission of data between
Chapter 3. TCP/IP Networks. 3.1 Internet Protocol version 4 (IPv4)
Chapter 3 TCP/IP Networks 3.1 Internet Protocol version 4 (IPv4) Internet Protocol version 4 is the fourth iteration of the Internet Protocol (IP) and it is the first version of the protocol to be widely
Computer Network. Interconnected collection of autonomous computers that are able to exchange information
Introduction Computer Network. Interconnected collection of autonomous computers that are able to exchange information No master/slave relationship between the computers in the network Data Communications.
ESSENTIALS. Understanding Ethernet Switches and Routers. April 2011 VOLUME 3 ISSUE 1 A TECHNICAL SUPPLEMENT TO CONTROL NETWORK
VOLUME 3 ISSUE 1 A TECHNICAL SUPPLEMENT TO CONTROL NETWORK Contemporary Control Systems, Inc. Understanding Ethernet Switches and Routers This extended article was based on a two-part article that was
Assignment 6: Internetworking Due October 17/18, 2012
Assignment 6: Internetworking Due October 17/18, 2012 Our topic this week will be the notion of internetworking in general and IP, the Internet Protocol, in particular. IP is the foundation of the Internet
Application Note: AN00121 Using XMOS TCP/IP Library for UDP-based Networking
Application Note: AN00121 Using XMOS TCP/IP Library for UDP-based Networking This application note demonstrates the use of XMOS TCP/IP stack on an XMOS multicore micro controller to communicate on an ethernet-based
Objectives of Lecture. Network Architecture. Protocols. Contents
Objectives of Lecture Network Architecture Show how network architecture can be understood using a layered approach. Introduce the OSI seven layer reference model. Introduce the concepts of internetworking
PART OF THE PICTURE: The TCP/IP Communications Architecture
PART OF THE PICTURE: The / Communications Architecture 1 PART OF THE PICTURE: The / Communications Architecture BY WILLIAM STALLINGS The key to the success of distributed applications is that all the terminals
co Characterizing and Tracing Packet Floods Using Cisco R
co Characterizing and Tracing Packet Floods Using Cisco R Table of Contents Characterizing and Tracing Packet Floods Using Cisco Routers...1 Introduction...1 Before You Begin...1 Conventions...1 Prerequisites...1
Project 4: SDNs Due: 11:59 PM, Dec 11, 2014
CS168 Computer Networks Fonseca Project 4: SDNs Due: 11:59 PM, Dec 11, 2014 Contents 1 Introduction 1 2 Overview 2 2.1 Components......................................... 2 3 Setup 3 4 Shortest-path Switching
Understanding TCP/IP. Introduction. What is an Architectural Model? APPENDIX
APPENDIX A Introduction Understanding TCP/IP To fully understand the architecture of Cisco Centri Firewall, you need to understand the TCP/IP architecture on which the Internet is based. This appendix
Software-Defined Network Management
Software-Defined Network Management Nick Feamster Georgia Tech (with Joon Kim, Marshini Chetty, Srikanth Sundaresan) Network Management is Hard! Manual, error-prone, complex Network configurations change
Improving Network Management with Software Defined Networking
Improving Network Management with Software Defined Networking Hyojoon Kim and Nick Feamster, Georgia Institute of Technology 2013 IEEE Communications Magazine Presented by 101062505 林 瑋 琮 Outline 1. Introduction
Project 4: IP over DNS Due: 11:59 PM, Dec 14, 2015
CS168 Computer Networks Jannotti Project 4: IP over DNS Due: 11:59 PM, Dec 14, 2015 Contents 1 Introduction 1 2 Components 1 2.1 Creating the tunnel..................................... 2 2.2 Using the
Firewalls. Ingress Filtering. Ingress Filtering. Network Security. Firewalls. Access lists Ingress filtering. Egress filtering NAT
Network Security s Access lists Ingress filtering s Egress filtering NAT 2 Drivers of Performance RequirementsTraffic Volume and Complexity of Static IP Packet Filter Corporate Network The Complexity of
NFS File Sharing. Peter Lo. CP582 Peter Lo 2003 1
NFS File Sharing Peter Lo CP582 Peter Lo 2003 1 NFS File Sharing Summary Distinguish between: File transfer Entire file is copied to new location FTP Copy command File sharing Multiple users can access
Communications and Computer Networks
SFWR 4C03: Computer Networks and Computer Security January 5-8 2004 Lecturer: Kartik Krishnan Lectures 1-3 Communications and Computer Networks The fundamental purpose of a communication system is the
A Coordinated. Enterprise Networks Software Defined. and Application Fluent Programmable Networks
A Coordinated Virtual Infrastructure for SDN in Enterprise Networks Software Defined Networking (SDN), OpenFlow and Application Fluent Programmable Networks Strategic White Paper Increasing agility and
Implementation of Address Learning/Packet Forwarding, Firewall and Load Balancing in Floodlight Controller for SDN Network Management
Research Paper Implementation of Address Learning/Packet Forwarding, Firewall and Load Balancing in Floodlight Controller for SDN Network Management Raphael Eweka MSc Student University of East London
51-30-60 DATA COMMUNICATIONS MANAGEMENT. Gilbert Held INSIDE
51-30-60 DATA COMMUNICATIONS MANAGEMENT PROTECTING A NETWORK FROM SPOOFING AND DENIAL OF SERVICE ATTACKS Gilbert Held INSIDE Spoofing; Spoofing Methods; Blocking Spoofed Addresses; Anti-spoofing Statements;
Software Defined Networking (SDN) - Open Flow
Software Defined Networking (SDN) - Open Flow Introduction Current Internet: egalitarian routing/delivery based on destination address, best effort. Future Internet: criteria based traffic management,
Internet Protocol: IP packet headers. vendredi 18 octobre 13
Internet Protocol: IP packet headers 1 IPv4 header V L TOS Total Length Identification F Frag TTL Proto Checksum Options Source address Destination address Data (payload) Padding V: Version (IPv4 ; IPv6)
Data Link Protocols. TCP/IP Suite and OSI Reference Model
Data Link Protocols Relates to Lab. This module covers data link layer issues, such as local area networks (LANs) and point-to-point links, Ethernet, and the Point-to-Point Protocol (PPP). 1 TCP/IP Suite
From Network Security To Content Filtering
Computer Fraud & Security, May 2007 page 1/10 From Network Security To Content Filtering Network security has evolved dramatically in the last few years not only for what concerns the tools at our disposals
Technical Support Information Belkin internal use only
The fundamentals of TCP/IP networking TCP/IP (Transmission Control Protocol / Internet Protocols) is a set of networking protocols that is used for communication on the Internet and on many other networks.
How To Understand The Layered Architecture Of A Network
COMPUTER NETWORKS NETWORK ARCHITECTURE AND PROTOCOLS The Need for Standards Computers have different architectures, store data in different formats and communicate at different rates Agreeing on a particular
Tutorial. Reference http://www.openflowswitch.org/foswiki/bin/view/openflow/mininetgettingstarted for more thorough Mininet walkthrough if desired
Setup Tutorial Reference http://www.openflowswitch.org/foswiki/bin/view/openflow/mininetgettingstarted for more thorough Mininet walkthrough if desired Necessary Downloads 1. Download VM at http://www.cs.princeton.edu/courses/archive/fall10/cos561/assignments/cos561tutorial.zip
Basic Networking Concepts. 1. Introduction 2. Protocols 3. Protocol Layers 4. Network Interconnection/Internet
Basic Networking Concepts 1. Introduction 2. Protocols 3. Protocol Layers 4. Network Interconnection/Internet 1 1. Introduction -A network can be defined as a group of computers and other devices connected
Course Overview: Learn the essential skills needed to set up, configure, support, and troubleshoot your TCP/IP-based network.
Course Name: TCP/IP Networking Course Overview: Learn the essential skills needed to set up, configure, support, and troubleshoot your TCP/IP-based network. TCP/IP is the globally accepted group of protocols
The Lagopus SDN Software Switch. 3.1 SDN and OpenFlow. 3. Cloud Computing Technology
3. The Lagopus SDN Software Switch Here we explain the capabilities of the new Lagopus software switch in detail, starting with the basics of SDN and OpenFlow. 3.1 SDN and OpenFlow Those engaged in network-related
Software Defined Networking and the design of OpenFlow switches
Software Defined Networking and the design of OpenFlow switches Paolo Giaccone Notes for the class on Packet Switch Architectures Politecnico di Torino December 2015 Outline 1 Introduction to SDN 2 OpenFlow
Software Defined Networking and OpenFlow: a Concise Review
Software Defined Networking and OpenFlow: a Concise Review Stefano Forti [email protected] MSc in Computer Science and Networking Scuola Superiore Sant'Anna - University of Pisa 1. Introduction
12. Firewalls Content
Content 1 / 17 12.1 Definition 12.2 Packet Filtering & Proxy Servers 12.3 Architectures - Dual-Homed Host Firewall 12.4 Architectures - Screened Host Firewall 12.5 Architectures - Screened Subnet Firewall
enetworks TM IP Quality of Service B.1 Overview of IP Prioritization
encor! enetworks TM Version A, March 2008 2010 Encore Networks, Inc. All rights reserved. IP Quality of Service The IP Quality of Service (QoS) feature allows you to assign packets a level of priority
(Refer Slide Time: 02:17)
Internet Technology Prof. Indranil Sengupta Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No #06 IP Subnetting and Addressing (Not audible: (00:46)) Now,
IP - The Internet Protocol
Orientation IP - The Internet Protocol IP (Internet Protocol) is a Network Layer Protocol. IP s current version is Version 4 (IPv4). It is specified in RFC 891. TCP UDP Transport Layer ICMP IP IGMP Network
83-10-41 Types of Firewalls E. Eugene Schultz Payoff
83-10-41 Types of Firewalls E. Eugene Schultz Payoff Firewalls are an excellent security mechanism to protect networks from intruders, and they can establish a relatively secure barrier between a system
2. IP Networks, IP Hosts and IP Ports
1. Introduction to IP... 1 2. IP Networks, IP Hosts and IP Ports... 1 3. IP Packet Structure... 2 4. IP Address Structure... 2 Network Portion... 2 Host Portion... 3 Global vs. Private IP Addresses...3
Improving Network Management with Software Defined Networking
SOFTWARE DEFINED NETWORKS Improving Network Management with Software Defined Networking Hyojoon Kim and Nick Feamster, Georgia Institute of Technology ABSTRACT Network management is challenging. To operate,
Scaling 10Gb/s Clustering at Wire-Speed
Scaling 10Gb/s Clustering at Wire-Speed InfiniBand offers cost-effective wire-speed scaling with deterministic performance Mellanox Technologies Inc. 2900 Stender Way, Santa Clara, CA 95054 Tel: 408-970-3400
Networking Test 4 Study Guide
Networking Test 4 Study Guide True/False Indicate whether the statement is true or false. 1. IPX/SPX is considered the protocol suite of the Internet, and it is the most widely used protocol suite in LANs.
Protecting and controlling Virtual LANs by Linux router-firewall
Protecting and controlling Virtual LANs by Linux router-firewall Tihomir Katić Mile Šikić Krešimir Šikić Faculty of Electrical Engineering and Computing University of Zagreb Unska 3, HR 10000 Zagreb, Croatia
CONTROL MICROSYSTEMS DNP3. User and Reference Manual
DNP3 User and Reference Manual CONTROL MICROSYSTEMS SCADA products... for the distance 48 Steacie Drive Telephone: 613-591-1943 Kanata, Ontario Facsimile: 613-591-1022 K2K 2A9 Technical Support: 888-226-6876
Testing Intelligent Device Communications in a Distributed System
Testing Intelligent Device Communications in a Distributed System David Goughnour (Triangle MicroWorks), Joe Stevens (Triangle MicroWorks) [email protected] United States Smart Grid systems
Cisco Hybrid Cloud Solution: Deploy an E-Business Application with Cisco Intercloud Fabric for Business Reference Architecture
Reference Architecture Cisco Hybrid Cloud Solution: Deploy an E-Business Application with Cisco Intercloud Fabric for Business Reference Architecture 2015 Cisco and/or its affiliates. All rights reserved.
The Past, Present, and Future of Software Defined Networking
The Past, Present, and Future of Software Defined Networking Nick Feamster University of Maryland [email protected] Steve Woodrow, Srikanth Sundaresan, Hyojoon Kim, Russ Clark Georgia Tech Andreas Voellmy
Computer Networks/DV2 Lab
Computer Networks/DV2 Lab Room: BB 219 Additional Information: http://ti.uni-due.de/ti/en/education/teaching/ss13/netlab Equipment for each group: - 1 Server computer (OS: Windows Server 2008 Standard)
Embedded Software Development with MPS
Embedded Software Development with MPS Markus Voelter independent/itemis The Limitations of C and Modeling Tools Embedded software is usually implemented in C. The language is relatively close to the hardware,
Current Trends of Topology Discovery in OpenFlow-based Software Defined Networks
1 Current Trends of Topology Discovery in OpenFlow-based Software Defined Networks Leonardo Ochoa-Aday, Cristina Cervello -Pastor, Member, IEEE, and Adriana Ferna ndez-ferna ndez Abstract The explosion
IP Networking. Overview. Networks Impact Daily Life. IP Networking - Part 1. How Networks Impact Daily Life. How Networks Impact Daily Life
Overview Dipl.-Ing. Peter Schrotter Institute of Communication Networks and Satellite Communications Graz University of Technology, Austria Fundamentals of Communicating over the Network Application Layer
SDN Programming Languages. Programming SDNs!
SDN Programming Languages Programming SDNs! The Good Network-wide visibility Direct control over the switches Simple data-plane abstraction The Bad Low-level programming interface Functionality tied to
Guide to TCP/IP, Third Edition. Chapter 3: Data Link and Network Layer TCP/IP Protocols
Guide to TCP/IP, Third Edition Chapter 3: Data Link and Network Layer TCP/IP Protocols Objectives Understand the role that data link protocols, such as SLIP and PPP, play for TCP/IP Distinguish among various
Extensible and Scalable Network Monitoring Using OpenSAFE
Extensible and Scalable Network Monitoring Using OpenSAFE Jeffrey R. Ballard [email protected] Ian Rae [email protected] Aditya Akella [email protected] Abstract Administrators of today s networks are
Firewalls. Chien-Chung Shen [email protected]
Firewalls Chien-Chung Shen [email protected] The Need for Firewalls Internet connectivity is essential however it creates a threat vs. host-based security services (e.g., intrusion detection), not cost-effective
Firewalls. Chapter 3
Firewalls Chapter 3 1 Border Firewall Passed Packet (Ingress) Passed Packet (Egress) Attack Packet Hardened Client PC Internet (Not Trusted) Hardened Server Dropped Packet (Ingress) Log File Internet Border
Software Defined Networking What is it, how does it work, and what is it good for?
Software Defined Networking What is it, how does it work, and what is it good for? slides stolen from Jennifer Rexford, Nick McKeown, Michael Schapira, Scott Shenker, Teemu Koponen, Yotam Harchol and David
Internet Firewall CSIS 4222. Packet Filtering. Internet Firewall. Examples. Spring 2011 CSIS 4222. net15 1. Routers can implement packet filtering
Internet Firewall CSIS 4222 A combination of hardware and software that isolates an organization s internal network from the Internet at large Ch 27: Internet Routing Ch 30: Packet filtering & firewalls
A very short history of networking
A New vision for network architecture David Clark M.I.T. Laboratory for Computer Science September, 2002 V3.0 Abstract This is a proposal for a long-term program in network research, consistent with the
OpenFlow: Enabling Innovation in Campus Networks
OpenFlow: Enabling Innovation in Campus Networks Nick McKeown Stanford University Presenter: Munhwan Choi Table of contents What is OpenFlow? The OpenFlow switch Using OpenFlow OpenFlow Switch Specification
Securing Local Area Network with OpenFlow
Securing Local Area Network with OpenFlow Master s Thesis Presentation Fahad B. H. Chowdhury Supervisor: Professor Jukka Manner Advisor: Timo Kiravuo Department of Communications and Networking Aalto University
Monitoring Infrastructure (MIS) Software Architecture Document. Version 1.1
Monitoring Infrastructure (MIS) Software Architecture Document Version 1.1 Revision History Date Version Description Author 28-9-2004 1.0 Created Peter Fennema 8-10-2004 1.1 Processed review comments Peter
Chapter 2: Remote Procedure Call (RPC)
Chapter 2: Remote Procedure Call (RPC) Gustavo Alonso Computer Science Department Swiss Federal Institute of Technology (ETHZ) [email protected] http://www.iks.inf.ethz.ch/ Contents - Chapter 2 - RPC
OpenFlow Based Load Balancing
OpenFlow Based Load Balancing Hardeep Uppal and Dane Brandon University of Washington CSE561: Networking Project Report Abstract: In today s high-traffic internet, it is often desirable to have multiple
7 Network Security. 7.1 Introduction 7.2 Improving the Security 7.3 Internet Security Framework. 7.5 Absolute Security?
7 Network Security 7.1 Introduction 7.2 Improving the Security 7.3 Internet Security Framework 7.4 Firewalls 7.5 Absolute Security? 7.1 Introduction Security of Communications data transport e.g. risk
SFWR 4C03: Computer Networks & Computer Security Jan 3-7, 2005. Lecturer: Kartik Krishnan Lecture 1-3
SFWR 4C03: Computer Networks & Computer Security Jan 3-7, 2005 Lecturer: Kartik Krishnan Lecture 1-3 Communications and Computer Networks The fundamental purpose of a communication network is the exchange
CSE 3461 / 5461: Computer Networking & Internet Technologies
Autumn Semester 2014 CSE 3461 / 5461: Computer Networking & Internet Technologies Instructor: Prof. Kannan Srinivasan 08/28/2014 Announcement Drop before Friday evening! k. srinivasan Presentation A 2
Overview of Routing between Virtual LANs
Overview of Routing between Virtual LANs This chapter provides an overview of virtual LANs (VLANs). It describes the encapsulation protocols used for routing between VLANs and provides some basic information
Communication Networks. MAP-TELE 2011/12 José Ruela
Communication Networks MAP-TELE 2011/12 José Ruela Network basic mechanisms Network Architectures Protocol Layering Network architecture concept A network architecture is an abstract model used to describe
How To Understand The Power Of The Internet
DATA COMMUNICATOIN NETWORKING Instructor: Ouldooz Baghban Karimi Course Book: Computer Networking, A Top-Down Approach, Kurose, Ross Slides: - Course book Slides - Slides from Princeton University COS461
DESIGN AND VERIFICATION OF LSR OF THE MPLS NETWORK USING VHDL
IJVD: 3(1), 2012, pp. 15-20 DESIGN AND VERIFICATION OF LSR OF THE MPLS NETWORK USING VHDL Suvarna A. Jadhav 1 and U.L. Bombale 2 1,2 Department of Technology Shivaji university, Kolhapur, 1 E-mail: [email protected]
Final for ECE374 05/06/13 Solution!!
1 Final for ECE374 05/06/13 Solution!! Instructions: Put your name and student number on each sheet of paper! The exam is closed book. You have 90 minutes to complete the exam. Be a smart exam taker -
VXLAN: Scaling Data Center Capacity. White Paper
VXLAN: Scaling Data Center Capacity White Paper Virtual Extensible LAN (VXLAN) Overview This document provides an overview of how VXLAN works. It also provides criteria to help determine when and where
Firewalls and VPNs. Principles of Information Security, 5th Edition 1
Firewalls and VPNs Principles of Information Security, 5th Edition 1 Learning Objectives Upon completion of this material, you should be able to: Understand firewall technology and the various approaches
04 Internet Protocol (IP)
SE 4C03 Winter 2007 04 Internet Protocol (IP) William M. Farmer Department of Computing and Software McMaster University 29 January 2007 Internet Protocol (IP) IP provides a connectionless packet delivery
Chapter 2 - The TCP/IP and OSI Networking Models
Chapter 2 - The TCP/IP and OSI Networking Models TCP/IP : Transmission Control Protocol/Internet Protocol OSI : Open System Interconnection RFC Request for Comments TCP/IP Architecture Layers Application
Stateful Inspection Technology
Stateful Inspection Technology Security Requirements TECH NOTE In order to provide robust security, a firewall must track and control the flow of communication passing through it. To reach control decisions
Unified Language for Network Security Policy Implementation
Unified Language for Network Security Policy Implementation Dmitry Chernyavskiy Information Security Faculty National Research Nuclear University MEPhI Moscow, Russia [email protected] Natalia Miloslavskaya
Firewall Builder Architecture Overview
Firewall Builder Architecture Overview Vadim Zaliva Vadim Kurland Abstract This document gives brief, high level overview of existing Firewall Builder architecture.
Dissertation Title: SOCKS5-based Firewall Support For UDP-based Application. Author: Fung, King Pong
Dissertation Title: SOCKS5-based Firewall Support For UDP-based Application Author: Fung, King Pong MSc in Information Technology The Hong Kong Polytechnic University June 1999 i Abstract Abstract of dissertation
TYLER JUNIOR COLLEGE School of Continuing Studies 1530 SSW Loop 323 Tyler, TX 75701 1.800.298.5226 www.tjc.edu/continuingstudies/mycaa
TYLER JUNIOR COLLEGE School of Continuing Studies 1530 SSW Loop 323 Tyler, TX 75701 1.800.298.5226 www.tjc.edu/continuingstudies/mycaa Education & Training Plan CompTIA N+ Specialist Program Student Full
OpenFlow: Concept and Practice. Dukhyun Chang ([email protected])
OpenFlow: Concept and Practice Dukhyun Chang ([email protected]) 1 Contents Software-Defined Networking (SDN) Overview of OpenFlow Experiment with OpenFlow 2/24 Software Defined Networking.. decoupling
packet retransmitting based on dynamic route table technology, as shown in fig. 2 and 3.
Implementation of an Emulation Environment for Large Scale Network Security Experiments Cui Yimin, Liu Li, Jin Qi, Kuang Xiaohui National Key Laboratory of Science and Technology on Information System
Chapter 5. Figure 5-1: Border Firewall. Firewalls. Figure 5-1: Border Firewall. Figure 5-1: Border Firewall. Figure 5-1: Border Firewall
Figure 5-1: Border s Chapter 5 Revised March 2004 Panko, Corporate Computer and Network Security Copyright 2004 Prentice-Hall Border 1. (Not Trusted) Attacker 1 1. Corporate Network (Trusted) 2 Figure
High-Performance IP Service Node with Layer 4 to 7 Packet Processing Features
UDC 621.395.31:681.3 High-Performance IP Service Node with Layer 4 to 7 Packet Processing Features VTsuneo Katsuyama VAkira Hakata VMasafumi Katoh VAkira Takeyama (Manuscript received February 27, 2001)
Intrusion Detection Systems (IDS)
Intrusion Detection Systems (IDS) What are They and How do They Work? By Wayne T Work Security Gauntlet Consulting 56 Applewood Lane Naugatuck, CT 06770 203.217.5004 Page 1 6/12/2003 1. Introduction Intrusion
How To Monitor And Test An Ethernet Network On A Computer Or Network Card
3. MONITORING AND TESTING THE ETHERNET NETWORK 3.1 Introduction The following parameters are covered by the Ethernet performance metrics: Latency (delay) the amount of time required for a frame to travel
Security Overview of the Integrity Virtual Machines Architecture
Security Overview of the Integrity Virtual Machines Architecture Introduction... 2 Integrity Virtual Machines Architecture... 2 Virtual Machine Host System... 2 Virtual Machine Control... 2 Scheduling
Time-based Updates in OpenFlow: A Proposed Extension to the OpenFlow Protocol
CCIT Report #835, July 2013, EE Pub No. 1792, Technion, Israel 1 Time-based Updates in : A Proposed Extension to the Protocol Tal Mizrahi, Yoram Moses Department of Electrical Engineering Technion Israel
Glossary of Terms and Acronyms for Videoconferencing
Glossary of Terms and Acronyms for Videoconferencing Compiled by Irene L. Ferro, CSA III Education Technology Services Conferencing Services Algorithm an algorithm is a specified, usually mathematical
Testing L7 Traffic Shaping Policies with IxChariot IxChariot
TEST PLAN Testing L7 Traffic Shaping Policies with IxChariot IxChariot www.ixiacom.com 915-6658-01, 2005 Contents 1. Introduction 1 2. Overview of L7 Layer Payload Definition Options in IxChariot 1 2.1
QAME Support for Policy-Based Management of Country-wide Networks
QAME Support for Policy-Based Management of Country-wide Networks Clarissa C. Marquezan, Lisandro Z. Granville, Ricardo L. Vianna, Rodrigo S. Alves Institute of Informatics Computer Networks Group Federal
Network Security Demonstration - Snort based IDS Integration -
Network Security Demonstration - Snort based IDS Integration - Hyuk Lim ([email protected]) with TJ Ha, CW Jeong, J Narantuya, JW Kim Wireless Communications and Networking Lab School of Information and
What is a Firewall? A choke point of control and monitoring Interconnects networks with differing trust Imposes restrictions on network services
Firewalls What is a Firewall? A choke point of control and monitoring Interconnects networks with differing trust Imposes restrictions on network services only authorized traffic is allowed Auditing and
An Introduction to VoIP Protocols
An Introduction to VoIP Protocols www.netqos.com Voice over IP (VoIP) offers the vision of a converged network carrying multiple types of traffic (voice, video, and data, to name a few). To carry out this
Transport and Network Layer
Transport and Network Layer 1 Introduction Responsible for moving messages from end-to-end in a network Closely tied together TCP/IP: most commonly used protocol o Used in Internet o Compatible with a
Facilitating Network Management with Software Defined Networking
Facilitating Network Management with Software Defined Networking Nick Feamster Georgia Tech [email protected] Steve Woodrow, Srikanth Sundaresan, Hyojoon Kim, Russ Clark Georgia Tech Andreas Voellmy
