\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{calkk} \pdfinfo{ /Title (operating-systems.pdf) /Creator (Cheatography) /Author (calkk) /Subject (Operating Systems 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}{FF5500} \definecolor{LightBackground}{HTML}{FFF4EF} \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{Operating Systems Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{calkk} via \textcolor{DarkBackground}{\uline{cheatography.com/20194/cs/3033/}}} \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}calkk \\ \uline{cheatography.com/calkk} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 12th December, 2014.\\ Updated 12th May, 2016.\\ 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*}{2} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Comparisons}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Forwarding vs Routing} \tn \mymulticolumn{1}{x{8.4cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}{\bf{Forwarding}}: data plane - Directing a data packet to an outgoing link - individual router using a forwarding table {\bf{Routing}}: control plane - computing paths the packets will follow - Routers talking amongst themselves - individual router creating a forwarding table.} \tn % Row Count 8 (+ 8) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Link State vs Distance Vector:} \tn \mymulticolumn{1}{x{8.4cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}- {\bf{DV}} error propogates, {\bf{LS}} only computes its own table. - {\bf{DV}}: convertence times varies (count-to-infinity problem), {\bf{LS}}: O(n\textasciicircum{}2) algo requires O(nE) messages} \tn % Row Count 13 (+ 5) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Flow control vs Congestion control} \tn \mymulticolumn{1}{x{8.4cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}{\bf{Flow control}}: keeping one fast sender from overwhelming a slow receiver {\bf{Congestion control}} : keep a set of senders from overloading the network} \tn % Row Count 18 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{4 cm} x{4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Definitions}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{{\bf{Connectionless}}: No handshaking between sending and recieving adapter.} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{2}{x{8.4cm}}{{\bf{Unreliable}}: receiving adapter doesnt send ACKs or NACKs; Packets passed to network later can have gaps; Gaps will be filled if application using TCP} \tn % Row Count 6 (+ 4) % Row 2 \SetRowColor{LightBackground} {\bf{Carrier sense}}: wait for link to be idle & {\bf{Channel idle}}: start transmitting; {\bf{Channel Busy}}: wait until idle \tn % Row Count 10 (+ 4) % Row 3 \SetRowColor{white} {\bf{Collision detection}}: listen while transmitting & {\bf{No collision}}: transmission is complete; {\bf{Collision}}: abort transmission and send jam signal \tn % Row Count 15 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Path-vector Routing}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{8.4cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/calkk_1418342493_Screen Shot 2014-12-11 at 7.00.22 PM.png}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{-Advertise entire path \newline -Distance vector: send distance metric per dest d \newline -Path vector: send the entire path for each dest d} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{BGP path selection}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{8.4cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/calkk_1418344716_Screen Shot 2014-12-11 at 7.37.57 PM.png}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{BGP uses both policy and shortest path based routing. \newline Route \seqsplit{learned from customer preferred over route} learned from peer, preferred over route learned fromprovider} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.12 cm} x{4.88 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Congestion Control}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{Congestion cntrl is preventing a set of senders from overwhelming the network, flow cntrl is preventing one fast sender from overwhelming a slow receiver.} \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} Congestion strategy & Drop one flow, buffer and send after one is gone, reschedule on flow, ask both to reduce flow \tn % Row Count 8 (+ 4) % Row 2 \SetRowColor{LightBackground} Congestion Collapse & Increase in net load results in a decrease of useful work -Causes: False trans, undelivered pckts \tn % Row Count 13 (+ 5) % Row 3 \SetRowColor{white} Simple Resource Allocation & is FIFO queue, drop tail (incoming) if buf full. \tn % Row Count 16 (+ 3) % Row 4 \SetRowColor{LightBackground} TCP Congestion Control & feedback based, hosted based, congestion window. Send at rate of slowest component, window = min(congestion, receiver wndw) Increase linearly, but half if there is a loss. (w \textless{}- w + w/1 or \textless{}- w/2) never below 1 MSS though. Congestion window is rep in BYTES because of MSS. \#packets per window : CWND/MSS Inc per ACK : MSS*(MSS/CWND) Sending rate = Congestion Window size / RRT. Exponential fast start, because linear is too slow to start and wasteful starting @ 1 MSS/RRT and 1MSS cwnd. \tn % Row Count 37 (+ 21) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{3.12 cm} x{4.88 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Congestion Control (cont)}} \tn % Row 5 \SetRowColor{LightBackground} Triple dup ACKs & multiplicative decrease. Timeout – start over @ 1MSS. \tn % Row Count 3 (+ 3) % Row 6 \SetRowColor{white} Nagel's Algo & buffer small data if less than 1 MSS while waiting for ACK of outgoing packet. Basically sending 1 small packet per RTT. Batching bytes! \tn % Row Count 9 (+ 6) % Row 7 \SetRowColor{LightBackground} Delayed \seqsplit{ACK/Piggybacking} & send ACK as part of a data packet from B-\textgreater{}A if data generated within wait time of 200 – 500 msec. \tn % Row Count 14 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{2.48 cm} x{5.52 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Interconnecting LANs}} \tn % Row 0 \SetRowColor{LightBackground} CSMA/CD & carrier sense multiple access w/ collision detection \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} Ethernet & is connectionless and unreliable \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} Spanning Trees & no loops in topology.(no cycles) Select switch with smallest ID as root. Initially each switch thinks its root and sends msg (X,0,X). add1 to distance from neighbor node from root. (Root, dist to root, self) \tn % Row Count 12 (+ 8) % Row 3 \SetRowColor{white} Cut thru switching & start transmitting as soon as possible. Overlapping transmissions (transmit head of packet while still receiving tail) \tn % Row Count 17 (+ 5) % Row 4 \SetRowColor{LightBackground} Switch over router & PnP, Fast filtering and fwd, cut thru \tn % Row Count 19 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{p{0.8 cm} x{7.2 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Interior Routing Protocols (IGP)}} \tn % Row 0 \SetRowColor{LightBackground} RIP & uses distance vector; updates sent every 30 seconds; no authentication; not used much anymore \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} OSPF & Link-state updates sent (using flooding) as ad when required; Every router runs Dijkstra's algorithm; Authenticated updates; widely used \tn % Row Count 7 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Network Layer}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{8.4cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/calkk_1418344590_Screen Shot 2014-12-11 at 7.35.04 PM.png}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Different devices switch different things: \newline physical later: electrical signals (repeaters and hubs) \newline link layer: frames (bridges and switches) \newline network layer: packets (routers)} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.36 cm} x{4.64 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Link Layer / Error Detection / Correction}} \tn % Row 0 \SetRowColor{LightBackground} Manchester Coding & Low to high if 0, High to low if 1. \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} NRZI & invert on every 1, do nothing if 0. \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} 4B/5B & more efficient than Manchester, map data bits to code bits 80\% \tn % Row Count 7 (+ 3) % Row 3 \SetRowColor{white} Sentinels & mark start and end of frames from stream of bits. Use a flag 0x7E \tn % Row Count 10 (+ 3) % Row 4 \SetRowColor{LightBackground} Propogation Delay & distance / speed of light, Transm D = message/rate bps \tn % Row Count 13 (+ 3) % Row 5 \SetRowColor{white} RTT & 2 * one way delay (latency) \tn % Row Count 15 (+ 2) % Row 6 \SetRowColor{LightBackground} Latency & Prop + Trans + Queue = Arrival - Departure \tn % Row Count 17 (+ 2) % Row 7 \SetRowColor{white} Bandwidth-Delay Product & measures data in flight = Bandwidth * latency \tn % Row Count 19 (+ 2) % Row 8 \SetRowColor{LightBackground} Parallel Transmission & latency=M/R + SUM(Prop\_i) \tn % Row Count 21 (+ 2) % Row 9 \SetRowColor{white} Actual end to end latency & SUM(Transp\_i + Prop\_i + Q\_i) \tn % Row Count 23 (+ 2) % Row 10 \SetRowColor{LightBackground} ARQ & detect and retransmit, typically at higher levels (Network +) \tn % Row Count 26 (+ 3) % Row 11 \SetRowColor{white} FEC (Forward error checking) & correct codes, good for real-time, less retransmissions. \tn % Row Count 29 (+ 3) % Row 12 \SetRowColor{LightBackground} CRC (cyclic redundancy check) & divide n bits of data by C(x), compare to k bits \tn % Row Count 32 (+ 3) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{3.36 cm} x{4.64 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Link Layer / Error Detection / Correction (cont)}} \tn % Row 13 \SetRowColor{LightBackground} Hamming Distance & tells us how much error can safely be tolerated. d+1 Detect. 2d+1 correction \tn % Row Count 4 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{2.72 cm} x{5.28 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Internet Topology and Routing}} \tn % Row 0 \SetRowColor{LightBackground} PoP & physical location access point to internet. Large dense population, part of backbone \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} Multihoming & \textgreater{}= 2 providers, better performance, extra reliability, financial leverage through competition \tn % Row Count 8 (+ 4) % Row 2 \SetRowColor{LightBackground} AS Prepending & artificially inflate AS path length seen by others to convince some AS's to send traffic another way (Export policy) \tn % Row Count 13 (+ 5) % Row 3 \SetRowColor{white} Incremental Protocol & Learn multiple routes, pick one with policy \tn % Row Count 15 (+ 2) % Row 4 \SetRowColor{LightBackground} iBGP & distributes BGP info within AS, sessions between routers, maps an egress point to out link. BGP incremental updates, maps dest prefix to egress point \tn % Row Count 21 (+ 6) % Row 5 \SetRowColor{white} Causes of BGP routing & Topol changes, changes in routing policy, BGP session failure, conflicts in protocols in diff AS's \tn % Row Count 25 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{2.32 cm} x{5.68 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Software Defined Networking}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{Vertically integrated Closed, proprietary Slow innovation -\textgreater{} horizontal, open interface, rapid innovation. OS abst.} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} Network OS & has global view of network to make decisions. Control plane is in one place. Distributed sys. Control program operates on top of network OS. \tn % Row Count 8 (+ 5) % Row 2 \SetRowColor{LightBackground} Routing Overlays & IP Tunneling - packet delivery service with new routing strategies \tn % Row Count 11 (+ 3) % Row 3 \SetRowColor{white} IP multicast & delivering same data to many receivers \tn % Row Count 13 (+ 2) % Row 4 \SetRowColor{LightBackground} RON & resilient overlay network. Increase performance and reliability of routing, more than IP. Adapts to congestion \tn % Row Count 17 (+ 4) % Row 5 \SetRowColor{white} Overlay Networks & A logical network built on top of a physical network. tunnels between host computers. Hosts implement new protocols and services. Effective way to build networks on top of the internet. P2P \tn % Row Count 24 (+ 7) % Row 6 \SetRowColor{LightBackground} Napster & centralized directory, gnutella –query flooding, kazaa-super nodes, bittorrent- distributed downloading/no free loading BitTorrent prevents free riding: Allow the fastest peers to download from you. Occasionally let some free loaders download \tn % Row Count 33 (+ 9) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.12 cm} x{4.88 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Network Security}} \tn % Row 0 \SetRowColor{LightBackground} Goals: & availability, protection, authenticity, data integrity, privacy \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} SYN Flooding & Make so many sessions it runs out of memory \tn % Row Count 5 (+ 2) % Row 2 \SetRowColor{LightBackground} DoS aplenty & Attacker guesses TCP seq\# for an existing connection. Attacker can send rst to close cnnctn. \tn % Row Count 9 (+ 4) % Row 3 \SetRowColor{white} \seqsplit{Bellovin/Mockapetis} attack & make target trust attacker using reverse DNS, take control of DNS server that target talks to and find a trusted connection. \tn % Row Count 15 (+ 6) % Row 4 \SetRowColor{LightBackground} DNS rebinding & send short ttl for dns query, target requests IP of your domain, but feed IP of private server. \tn % Row Count 19 (+ 4) % Row 5 \SetRowColor{white} IP Spoofing & expose trusted connection, predict Seq \# from SYN and predict port =\textgreater{} guess state. Now Impersonate one end and send packets. \tn % Row Count 25 (+ 6) % Row 6 \SetRowColor{LightBackground} Stateful Packet Filter & only allow traffic initiated by client. Track all conn. \tn % Row Count 28 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.92 cm} x{4.08 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Queuing Mechanisms}} \tn % Row 0 \SetRowColor{LightBackground} End to End principle & Design principle for the internet that says you should keep functionalities at the end-hosts (Application specific functions) \tn % Row Count 7 (+ 7) % Row 1 \SetRowColor{white} Random Early Detection (RED) & randomly drop packets to signal congestion before it happens as queue fills up. Probability is prop queue size. If below a threshold, don't drop anything. Use average queue len to allow short term bursts. -RED is hard to use, must have the right parameters to work. -Desynchronizes senders to have stead aggregate flow, not bursty. \tn % Row Count 24 (+ 17) % Row 2 \SetRowColor{LightBackground} Explicit Congestion Notification (ECN) & router marks packets with ECN bit, 2 bits 1 for ECN enabled and 1 for congestion in IP TOS. Must be supported by end hosts and router to work. But better since it does not drop packets like RED. \tn % Row Count 34 (+ 10) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{3.92 cm} x{4.08 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Queuing Mechanisms (cont)}} \tn % Row 3 \SetRowColor{LightBackground} NAT soft state & if no packets arrive in time window, then delete mapping. \tn % Row Count 3 (+ 3) % Row 4 \SetRowColor{white} Firewall & filters packets based on src/dst IP addr, TCP/UDP src/dst port, ICMP type, TCP SYN and ACK bits \tn % Row Count 8 (+ 5) % Row 5 \SetRowColor{LightBackground} Traffic shaping & rate limiting certain traffic like p2p Inspecting every packet is challenging on high speed links. Place complicated firewall rules on edge low speed, and simple in core high speed. \tn % Row Count 18 (+ 10) % Row 6 \SetRowColor{white} Gateway & users must login, only point that accepts telnet. (central, caching) 1-Detailed policies 2-Avoid rogue machines 3-central logging 4-caching \tn % Row Count 25 (+ 7) % Row 7 \SetRowColor{LightBackground} Middleboxes & Pros: Fewer IPs, Blocking unwanted traffic, Making fair use of net resources, Improcing web performance. Cons: No longer globally unique, no longer assume simple delivery of packets \tn % Row Count 35 (+ 10) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}