Henri van den Bulk edited OpenFlow Switch.tex  about 9 years ago

Commit id: 1487dd271b0c8c69fc1e9c7e9541d1fec72e7dc8

deletions | additions      

       

\subsubsection{OpenFlow Switch}  In the previous section the high level OpenFlow protocol is described. To create the level abstraction OpenFlow addresses three (3) concerns: (1) Defining how data should flow that is received by a switch (flow-table), (2) ability to control/change the flow-tables based on network conditions, and (3) a standard communication between the controlling part and the switch. These different concerns are represented in Figure \ref{fig:switch}, which was taken from the OpenFlow switch specification documentation\cite{Goransson_2014}. documentation \cite{Goransson_2014}.  The switch maintains flow-tables, typically build using Ternary Content Addressable Memory (TCAMs)\cite{yeung2014ternary}. (TCAMs) \cite{yeung2014ternary}.  Before describing what TCAM is we have to understand what the Content Addressable Memory (CAM) is. This is a specialized memory that is different then the typical Random Access Memory (RAM) found in modern computer systems. In a Von Neumann processor based architecture the processor uses an address and sends a request to the memory subsystem to retrieve the data at that address, which is returned to the processor. CAM does the inverse, the processor will request at which addresses a given piece of data is located. The CAM memory will scan through the entire memory in a single operation. This is a significant faster operation and very applicable to switching gear that needs to perform fast lookups.  In the case of TCAM it adds and additional state, called a mask, that's stored. Masks are a core component of how networking works. For example, calculating forwarding addresses based on an input requires quick lookups. These lookups are essentially the flow-tables.  This specialized memory is very costly and the computer architecture is very specialized and used by network vendors as a differentiator. This leads to proprietary solutions and custom protocols that are used to update these flow-tables. To reduce cost some vendors choice to implement their architecture using RAM and x86. In these cases the vendors implement advanced software based search algorithms. This later point of using x86 in combination with OpenFlow, leads to more commodity based hardware, of which Facebook's modular switch\cite{facebook2015switch} switch \cite{facebook2015switch}  is a great example.