\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{Francisco\_1088} \pdfinfo{ /Title (data-center-and-cloud.pdf) /Creator (Cheatography) /Author (Francisco\_1088) /Subject (Data Center and Cloud Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A3A3A3} \definecolor{LightBackground}{HTML}{F3F3F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Data Center and Cloud Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{Francisco\_1088} via \textcolor{DarkBackground}{\uline{cheatography.com/50986/cs/13991/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}Francisco\_1088 \\ \uline{cheatography.com/francisco-1088} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 17th December, 2017.\\ Updated 17th December, 2017.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{4} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{TCAM}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Compares data against predefined ruleset in one operation \newline Return action or address with first match \newline Rules consist of 1, 0, X's \newline OF Table entries contain Match, Action, Counter, Prio, Timeout} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Geometric Representation of Rules}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Rules can be specified by prefix/length pairs or operator/number (range) \newline Rule with d fields -\textgreater{} d-dimensional hyper-rectangle \newline Match condition is finding highest priority hyper-rectangle enclosing P \newline When rectangles overlap, smallest rectangle "wins"} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Edge Network Mgmt}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Mgmt is 80\% of IT budget and responsible for 62\% of otuages \newline Networks should be truly transparent \newline Challenges: \newline -Large network scalability \newline -Flexible policies: custom routing, measurement and diagnosis, access control \newline -Commodity switches: small memory, expensive and power hungry, more link speed, storing lots of states, monitoring flows, qos \newline DC Networks: \newline -VM migration, load balancing, task scheduling, anomaly detection/isolation} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Difane}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{DIFANE Design goals: \newline -Scale with network growth \newline -Improve per-packet performance: always keep in dataplane \newline -Minimal switch modification: no change to dataplane hardware \newline Difane stages: \newline -Controller proactively generates rules and distributes to authority switches \newline -Controller proactively partitions rulespace in wildcards and distributes to all switches \newline -Ingress switches receive unknown flows and they contact Authority switch in correct wildcard space} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{DIFANE 2}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{-Authority switch forwards packet to correct destination and caches corresponding rule in ingress switch for future packets \newline Caching wildcard rules: \newline -Controller creates new rules for lower priority rules that overlap with high priority rules (e.g. R1 0-7, 5-6, R3 6-7,0-15, they overlap in 6-7,5-6, so controller creates R3 rule for 6-7,0-3 and 6-7,7-15) \newline -Rules must be correctly partitioned by controller to ensure optimal usage of TCAM, some cuts are better than others} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{DIFANE 3}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Network dynamics: \newline -Policy change at controller: Timeout cache rules, Change authority rules, No change for partitions \newline -Topology change at switch: No change in cache rules, no change in authority rules, Change in Partition rules \newline -Host mobility: Timeout cache rules, No change in authority or partition rules} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Caching in Buckets}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Partition rulespace in a grid of buckets \newline -Larger buckets mean more rules are cached each time \newline -Smaller buckets means more buckets need to be cached \newline -Partition until number of associated rules is bounded \newline -Sweetspot for bucket size is in a region, smaller and larger than this leads to memory overflow \newline -CAB reduces control network BW, flow setup latency and controller load \newline -Fully compatible with OF standard, resolves dependencies wildcard rule caching} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Cloud Security}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Typical practices: \newline -Reinforce application security, strong network perimeter security \newline -Access control inside cloud for app/service/tenant isolation \newline -Gauge risk control when using public cloud \newline Problems: \newline -Placing new security hardware is not easy \newline -Security devices are typically shared, misconfiguration in one compromises many services, apps and hosts \newline -Tight work between network and security teams, high cost and low efficiency} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Policy Aware Switch}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{-Makes forwarding decisions based on various factors, such as previous hop, input port, source/dest address} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Cloud NaaS}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Features: \newline -Virtual network isolation \newline -Custom addressing \newline -Service differentiation \newline -Flexible middlebox inteprosition \newline Cloud controller: provides VM instance management, self-service provisioning, host virtual switch interconection \newline Network controller: provides VM placement directives to cloud controller, generates virtual network between VMs, Configures physical and virtual switches} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Hybrid Security Architecture}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{-Tenants everywhere -\textgreater{} Middlebox anywhere \newline -Flexible traversal: traffic-specific, middlebox type, arbitrary number and order \newline -Decouple networking from security, creating appliance layer \newline App layer: App VMs with security groups \newline Appliance layer: Traversal path of middleboxes \newline Network layer: Only cares about packet delivery \newline -Forwarding: MAC rewrite for L2, IP in IP for L3} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{HSA Benefits}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{-Scalable and flexible provisioning \newline -Facilitates virtualization, simplifies service development, testing, deployment and troubleshooting \newline -Enables dynamic and heterogeneous service provisioning \newline -Minimize misconfiguration impacts} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{p{0.3433 cm} p{0.3433 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{3.833cm}}{\bf\textcolor{white}{SDN Security}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{3.833cm}}{Bottlenecks: Weak OF Agent CPU, limited message processing capabilities, Limited TCAM/SRAM resources-\textgreater{}table overflows \newline Solution: Leverage NFV to build a software-based defense line \newline NFV in edge clouds: \newline -Elastic resource allocation \newline -Network function as a service \newline -Rapid innovation} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{SDN Shield}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{-Controller monitors switch packet-in message rate from each switch \newline -When one switch-s rate approaches saturation: countermeasure \newline -Use a second Attack Mitigation Unit \newline How to Identify Legitimate Flows: \newline -Use statistical filtering \newline Conditional Legitimate Probability: \newline -Analyze header field distribution \newline -Compare most recent measurement to reference profile \newline -Build scoreboard to calculate new flow's legitimacy probability \newline -Threshold to control the rate of passed flows} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{PacketScore}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{1: Detect Attack -\textgreater{} monitor key parameters of traffic destined to protected targets, contain by limiting resource consumption \newline 2: Differentiate attacking packets from legitimate ones in suspicious traffic: compare against baseline and use CLP to compute likelihood of each suspicious packet of being legitimate \newline 3: Discard suspicious packets selectively comparing CLP with dynamic threshold} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Attack types}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Endpoint: overload a victim or stub network -\textgreater{} Easily isolated by upstream routers, attacking packets have victim IP/subnet \newline -Monitor traffic rate, flow rate towards each host/stub -\textgreater{} large number of targets monitored \newline -Use Bloom-filter to catch targets under attack, use DDoS control server to aggregate and correlate \newline Infrastructure: Overload some choke-point (router uplink) -\textgreater{} hard to isolate unless packet traceback infrastructure is in place \newline -Monitor traffic parameters on links in routers} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{CLP 1}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{3.833cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/francisco-1088_1513459387_CLP1.PNG}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{If packet attributes are independent, Joint Probability Mass function can be separated in P(A=a)*P(B=b)...} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{x{1.7165 cm} x{1.7165 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{3.833cm}}{\bf\textcolor{white}{IRB}} \tn % Row 0 \SetRowColor{LightBackground} Asymmetric & Symmetric \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} -Ingress VTEP does L2 and L3 lookup, egress VTEP only L2 lookup & -Both VTEPs perform L2 and L3 lookup \tn % Row Count 5 (+ 4) % Row 2 \SetRowColor{LightBackground} -All VTEP need all VNIs & -InterVXLAN traffic is encapsulated in L3 VNI, which identifies VRFs \tn % Row Count 9 (+ 4) % Row 3 \SetRowColor{white} -Ingress VTEP routes from source VNI to dest VNI & -ingress VTEP does not need to know dest VNI \tn % Row Count 12 (+ 3) % Row 4 \SetRowColor{LightBackground} -Not scalable & -Scalable \tn % Row Count 13 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{VXLAN with MPBGP}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{-Improves scalability \newline -Enables control plane learning of L2 end host and L3 reachability \newline -Reduced network flooding \newline -Optimal east-west and north-south forwarding \newline -VTEP discovery and authentication} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{MP BGP VXLAN}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{L2 traffic cannot traverse VNI boundaries \newline L3 traffic from one VRF is mapped to a L3 VNI \newline L3 traffic from different VRFs cannot traverse L3 VNI boundaries \newline BGP update sends Host MAC, Host IP, L3 VNI and VTEP \newline Remote VTEPs take Host MAC and put it in MAC table, and Host IP and put it in VRF (L3 VNI) IP table \newline Local host information is learned through conventional L2 learning and GARP, or through mgmt plane integration between VTEP and hosts} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{VXLAN BGP EVPN}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Asymmetric IRB: different path from source to dest and back, VTEP must be configured with both source and dest VNIs for both l2 and l3 \newline Symmetric IRB: same path to destination and back, ingress VTEP routes from source VNI to L3 VNI and changes inner dest MAC to egress VTEP router MAC \newline Route Types: \newline Type 2: MAC advetisement -\textgreater{} L2 VNI MAC/MAC-IP -\textgreater{} MAC and ARP resolution \newline Type 5: IP Prefix Route -\textgreater{} L3 VNI route -\textgreater{} advertise prefix} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{p{0.3433 cm} p{0.3433 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{3.833cm}}{\bf\textcolor{white}{VXLAN EVPN}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{3.833cm}}{1 L3 VNI per VRF per VTEP \newline 1 L2 VNI per L2 segment, multiple L2 VNIs per tenant \newline BGP minimizes network flooding and allows VTEP peer discovery and authentication \newline All VTEPs keep the same IP address for L2 VNIs \newline Process: \newline -Host sends out GARP when they come online \newline -Local VTEP creates local ARP cache and advertises through BGP as Route Type 2 \newline -Remote VTEP puts IP-MAC info into remote ARP cache and suppresses ARP for this IP \newline -VTEP floods if no match is found in cache} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{VXLAN BGP-EVPN}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{VXLAN Overlay is an L2 broadcast domain identified by a VNI \newline VXLAN encap: \newline -Outer header -\textgreater{} IP source and dest from VTEP endpoints, L2 source from VTEP source, L2 dest from next L3 hop, UDP port dest 4789 \newline Gateway types: \newline L2-\textgreater{} VLAN to VXLAN bridging \newline L3-\textgreater{} VXLAN to VXLAN routing} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Arista VXLAN 2}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{VTEP: Tunnel endpoint \newline VXLAN GW: Bridges VXLAN to non-VXLAN environment (HW or SW) \newline VNI: Identifies VXLANs \newline VTI: Terminates a VTEP \newline VXLAN Segment: L2 overlay network over which VMs communicate, only VMs within same VXLAN segment can communicate \newline OVSDB: Allows management of Open vSwitches, create or delete ports, tunnels, and queues} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{ARISTA VXLAN}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Challenges: Oversubscription, Scalability, Cost, Mobility and Latency \newline Network virtualization: Create overlay networks on top of physical network infrastructure \newline VXLAN 24 bit ID -\textgreater{} 16M networks \newline -Can cross L3, 50bytes of overhead \newline -VMs don't see tag \newline -L2 broadcast is replaced by IP multicast \newline Benefits: \newline -VLAN sprawl \newline -Single fault domains \newline -Scalability beyond 4096 segments \newline -Non-proprietary fabric \newline -IP mobility \newline -Physical cluster size and locality improves \newline -Better multitenancy} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{VXLAN}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{-Network virtualization technology to improve scalability problems in large cloud deployments \newline -VLAN-like encapsulation, encapsulates L2 frames in UDP packets with port 4789 using a VNI \newline -Endpoints are called VTEPs, and may be virtual switches, hypervisors or NVGREs \newline -Overlay network is usually a multicast cloud \newline -NVGRE uses GRE to encapsulate L2 frames in L3 packets across L3 networks} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{VXLAN Flood and Learn}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{VNI is mapped to a multicast group on a VTEP \newline Broadcast, Unknown Unicast and Multicast traffic is flooded to the multicast group of the VNI \newline Remote VTEPs of the group learn host MAC, VNI and source VTEP IP from flooded multicast traffic \newline Unicast packets for the host are sent directly to the source VTEP IP \newline Encapsulated packet: \newline UDPd: 4789, IPd: remote VTEP/multicast group, IPs: source VTEP, Md: remote VTEP/multicast MAC, IPd: Remhost, IPs: Sourcehost, Md: Remhost/Broadcast, Ms: Sourcehost} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{CARPO}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Considers BW demand variation over time \newline Elastic Tree might overestimate demand wasting power (average or peak, real demand is less) \newline -Use flow correlation (90 percentile data) to consolidate flows with low correlation using non-peak rate (low prob of peaking together) \newline -Minimize total power within a consolidation period based on traff correlation and non-peak data rate \newline -link rate adaptation for remaining links \newline Result: lowest power consumption and most savings, minor delay and drop degradation} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Elastic Tree}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Power Knobs: vary link speed, disable links, disable switches, move workload \newline Goal: \newline -Turn off unneeded link and switch \newline -Create energy proportional DC network \newline Optimizer: \newline -Takes topology, routing restrictions, power models, traffic matrix \newline -Produces network subset and flow routes \newline Models: \newline -Formal: best quality, any topo, not scalable, input: Traff Matrix \newline -Greedy: good quality, any topo, scalable, traffic matrix \newline -Topo-aware: ok quality, structured topo, best scalability, port counters} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Green DC 2}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Intra DC: dispatch loads to minimal servers and to cooler areas \newline Inter DC: dispatch loads to DC's with less energy cost or with renewable energy \newline JEC (Joint inter and intra) \newline -Considers variation of electricity prices and workload distribution on the efficiency of cooling systems \newline Random LB \textless{} Electricity InterDC \textless{} Cooling aware IntraDC \textless{} EIR+CIA \textless{} JEC} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{p{0.3433 cm} p{0.3433 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{3.833cm}}{\bf\textcolor{white}{Green DC}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{3.833cm}}{Minimize energy consumed by servers and cooling \newline -70-80\% of total \newline -Consolidate workload to minimal set of servers and turn off unnecessary \newline -Consolidate workload based on locations to maximize efficiency of cooling \newline Minimize energy consumed by DC network (switches) \newline -10-20\% of total \newline -Consolidate traffic to minimal set of paths and turn off switches/links} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Baraat features}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Keep 3 counters: Total demand, total bytes reserved so far, number of flows in task \newline Also single aggregate counter for each link to keep track of BW allocations \newline Features: \newline -Schedule tasks, not flows \newline -FIFO-LM algorithm \newline -No need to know flow size \newline -New transport protocol \newline -Modifies switches and hosts \newline -Does not meet deadlines \newline -Reduces task completion time for partition-agg workflows compared to Fair share} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Traffic Scheduling - Baraat}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{-Flow scheduling-\textgreater{} inefficient \newline -Priority scheduling -\textgreater{} does not meet deadlines \newline Idea: Task-aware scheduling \newline -Schedule tasks in Smart Priority Classes \newline -Switch maps flows to classes and handles heavy tasks \newline -Flows mapped to higher prio class get preference \newline -Flows with same priority class fair share \newline -TaskID is used as priority (FIFO) \newline -Heavy tasks are identified on the fly by byte count, upon exceeding threshold, task and immediately subsequent task are assigned same priority} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Traffic Scheduling - pFabric 2}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{minTCP: \newline -Start at line rate, no RTO estimation, reduce window on packet drop, increase same as TCP (ss, CA) \newline Conclusions: \newline -Simple, yet near-optimal \newline -Requires new switches and minor host changes (clean-slate) \newline -Does not meet deadline requirements} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Traffic Scheduling - pFabric}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{-Prioritize packets based on remaining flow size \newline -pFabric switch: implement scheduling based on priority (send high priority first, drop low priority first) \newline -pFabric host: send/retransmit aggressively, use simple flow control (minTCP) \newline -Very small buffers, 2xLinkSpeedxRTT \newline -Worst case: small packets (64B), 51.2ns (64*8/10Gbps) to find min/max of 600 numbers with binary tree, 10 clock cycles, 1ns with current ASICs} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{Traffic Scheduling: D3}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Make network aware of flow deadlines \newline Prioritize based on deadlines \newline When capacity is greater than desired rates: deadline flows get desired rate + fair share, non-deadline get only fair-share \newline When capacity is not enough: greedily satisfy as many flows as possible according to request rates in order of arrival \newline -Need to modify hosts and switches, not backward compatible, no incremental deployment \newline -Not friendly with legacy transport protocols, running in parallel degrades performance} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{TCP Losses}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Block loss: lose a whole window of packets \newline Double loss: lose a retransmitted packet, protocol can't tell \newline -Solution: timestamp \newline Tail loss: one of the last packets of the stream is lost, not enough DUP ACK to trigger retransmission \newline -Solution: send dummy data (e.g. reiterated FIN) \newline PLATO: Send heartbeats interleaved to avoid RTO, to infer loss by 3 DUP ACK, heartbeat is rarely dropped} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{DCTCP}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{A single flow needs C{\emph{RTT buffers for 100\% TP \newline For large N flows C}}RTT/sqrt(N) is enough \newline -Idea: React to ECN marks, every ECN mark cuts down window by 5\% (TCP cuts by half regardless of number of marks) \newline -At switch mark packets when queue length \textgreater{} K \newline -At sender keep F=\#markACK/totalACK, a=(1-g)*a+gF \newline -cwnd=(1-a/2)cwnd \newline Benefit: keep queue length short and TP high \newline Tradeoff: Convergence time is greater for new flows} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{New Reno}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Remember last segment sent before Fast Retransmit \newline -Deal with partial ACK (new ACK does not cover last remembered segment, i.e. more packets lost before entering FR) \newline -Retransmit new lost packet too and remain in Fast Recovery, exit when ACK that covers last segment sent before FR is received) \newline -sshthresh=max(flightsize/2,2{\emph{mss) \newline -cwnd=sshthresh+3}}mss \newline -each new dupack cwnd=cwnd+mss \newline -when partial ack received \seqsplit{cwnd=cwnd-(currACK-prevACK)*mss+mss}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{TCP NewReno}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{3.833cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/francisco-1088_1513528398_NewReno.PNG}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{TCP Reno}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{3.833cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/francisco-1088_1513528180_Reno.PNG}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{TCP}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Slowstart: Start with cwnd =1, each ACK cwnd \textless{}- cwnd + 1, each RTT cwnd \textless{}- 2xcwnd (exponential) \newline CA: enter when cwnd \textgreater{}= ssthresh, each ACK cwnd\textless{}-cwnd+1/cwnd \newline -Each RTT: cwnd \textless{}- cwnd + 1 \newline Fast Retransmit: flightsize = min(awnd,cwnd), sshthresh = max(flightsize/2,2) \newline -Enter slowstart cwnd=1} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{x{1.7165 cm} x{1.7165 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{3.833cm}}{\bf\textcolor{white}{TCP Tahoe and Reno}} \tn % Row 0 \SetRowColor{LightBackground} Tahoe & Reno \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} -3 DUP ACKS -\textgreater{} Fast Retransmit, set ssthresh to cwnd/2, reduce cwnd to 1 MSS, reset to slow start & -3 DUP ACKS -\textgreater{} Fast Retransmit and skip slow start, set cwnd to cwnd/2, enter fast recovery \tn % Row Count 6 (+ 5) % Row 2 \SetRowColor{LightBackground} -ACK time out (RTO) -\textgreater{} Slow start, cwnd -\textgreater{} 1MSS & -ACK time out (RTO) -\textgreater{} Slow start, cwnd -\textgreater{} 1MSS \tn % Row Count 9 (+ 3) % Row 3 \SetRowColor{white} & Fast recovery: wait for ACK for entire window before returning to CA, if no ACK enter slowstart \tn % Row Count 14 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{DC Transport Requirements}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{-High burst tolerance \newline -Low latency \newline -High throughput \newline Traditional TCP: \newline -Window flow control: lost packets detected by missing ACKs \newline -W=BW x RTT -\textgreater{} awnd (receiver), cwnd (network), W = min(awnd,cwnd) \newline Algorithms to calculate cwnd: Tahoe, Reno, NewReno, DCTCP} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{3.833cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{3.833cm}}{\bf\textcolor{white}{TCP in the DC}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{3.833cm}}{Not good for DC \newline -Adds latency \newline -Wastes buffer space \newline -Performs bad with shallow-buffer switches \newline DC Workloads: \newline -Partition/Aggregate (Delay sensitive, bursty) \newline -Short messages (delay-sensitive) \newline -Large flows (throughput sensitive) \newline Incast: Synchronized congestion from partition-aggregate workloads \newline -Seemingly underutilized links become overutilized in short burst causing unseen drops} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}