diff --git a/acronyms.tex b/acronyms.tex index b5d2d46..9cb6ff1 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -31,6 +31,7 @@ \newacronym{dns}{DNS}{Domain Name System} \newacronym{dns6}{DNSv6}{Domain Name System version 6} \newacronym{dr}{DR}{Danmarks Radio} +\newacronym{dual}{DUAL}{Diffusing Update Algorithm} \newacronym{dsl}{DSL}{Digital Subscriber Line} \newacronym{dst}{dst}{destination} \newacronym{dwdm}{DWDM}{} @@ -46,6 +47,7 @@ \newacronym{fhrp}{FHRP}{First Hop Redundancy Protocol} \newacronym{fib}{FIB}{Forward Information Base} \newacronym{fix}{FIX}{Federal Internet Exchange} +\newacronym{frr}{FRR}{Free Range Routing daemon} \newacronym{fsm}{FSM}{Finite State Machine} \newacronym{ftp}{FTP}{File Transfer Protocol} \newacronym{ftps}{FTPS}{File Transfer Protocol Secure} @@ -78,6 +80,7 @@ \newacronym{ip6}{IPv6}{Internet Protocol version 6} \newacronym{ipv4}{IPv4}{Internet Protocol version 4} \newacronym{ipv6}{IPv6}{Internet Protocol version 6} +\newacronym{ipx}{IPX}{Internetwork Packet Exchange} \newacronym{irc}{IRC}{Internet Relay Chat} \newacronym{irtf}{IRTF}{Internet Research Task Force} \newacronym{isis}{IS-IS}{Intermediate System to Intermediate System} @@ -115,6 +118,7 @@ \newacronym{ospf}{OSPF}{Open Shortest Path First} \newacronym{ospf3}{OSPFv3}{Open Shortest Path First v3} \newacronym{ospfv3}{OSPFv3}{Open Shortest Path First v3} +\newacronym{p2p}{P-2-P}{Point-to-Point} \newacronym{pagp}{PAgP}{Port Aggregation Protocol} \newacronym{poe}{PoE}{Power over Ethernet} \newacronym{poe+}{PoE+}{Power over Ethernet Plus} @@ -140,9 +144,11 @@ \newacronym{rpvst}{RPVST}{Per Vlan Rapid Spanning Tree} \newacronym{rpvst+}{RPVST+}{Per Vlan Rapid Spanning Tree Plus} \newacronym{rsvp}{RSVP}{Resource Reservation Protocol} +\newacronym{rtp}{RTP}{Reliable Transport Protocol} \newacronym{sdm}{SDM}{Security Device Manager} \newacronym{sdsl}{SDSL}{Symmetric Digital Subscriber Line} \newacronym{sftp}{SFTP}{Secure Shell File Transfer Protocol} +\newacronym{sia}{SIA}{Stuck in Active} \newacronym{sla}{SLA}{Service Level Agreement} \newacronym{slaac}{SLAAC}{Stateless Address Autoconfiguration} \newacronym{smtp}{SMTP}{Simpe Mail Transfer Protocol} @@ -170,6 +176,7 @@ \newacronym{ula}{ULA}{Unique Local Address} \newacronym{utc}{UTC}{Coordinated Universal Time} \newacronym{vlan}{VLAN}{Virtual Local Area Network} +\newacronym{vlsm}{VLSM}{Variable-Length Subnet Masking} \newacronym{vpn}{VPN}{Virtual Private Network} \newacronym{vrf}{VRF}{Virtual Routing and Forwarding} \newacronym{vrrp}{VRRP}{Virtual Router Redundancy Protocol} diff --git a/chapter/layer3.tex b/chapter/layer3.tex index 3f77216..6e71c74 100644 --- a/chapter/layer3.tex +++ b/chapter/layer3.tex @@ -2,9 +2,194 @@ \section{Routed Network} +\subsection{Administrative Distance} + +\begin{table}[] + \centering + \resizebox{\columnwidth}{!}{% + \begin{tabular}{|l|l|} + \hline + \textbf{Routing Protocol} & \textbf{Administrative distance} \\ \hline + Directly connected interface & 0 \\ \hline + Static route out an interface & 1 \\ \hline + Static route to next-hop address & 1 \\ \hline + DMNR - Dynamic Mobile Network Routing & 3 \\ \hline + EIGRP summary route & 5 \\ \hline + External BGP & 20 \\ \hline + Internal EIGRP & 90 \\ \hline + IGRP & 100 \\ \hline + OSPF & 110 \\ \hline + IS-IS & 115 \\ \hline + Routing Information Protocol (RIP) & 120 \\ \hline + Exterior Gateway Protocol (EGP) & 140 \\ \hline + On Demand Routing (ODR) & 160 \\ \hline + External EIGRP & 170 \\ \hline + Internal BGP & 200 \\ \hline + Next Hop Resolution Protocol (NHRP) & 250 \\ \hline + Floating Static Route (ex. DHCP-learned) & 254 \\ \hline + Unknown (Others) & 255 \\ \hline + \end{tabular}% + } + \caption{Cisco default administrative distances} + \label{cisco-default-administrative-distances} +\end{table} + +Always remember the following points for Cisco devices:\cite{wiki:Administrative_distance} +\begin{itemize} + \item An administrative distance of 255 will cause the router to remove the route from the routing table and not use it. + \item Since IOS 12.2, the administrative distance of a static route with an exit interface is 1. Prior to the release of 12.2 it was in fact 0. + \item Only the interface itself has an administrative distance of 0, since a route cannot have a distance of less than 1. + \item Directly connected routes have an administrative distance of 0. +\end{itemize} + +\newpage + \section{OSPF} + +\newpage + \section{IS-IS} + +\newpage + \section{EIGRP} + +\gls{eigrp} is Cisco's enhanced edition if \gls{igrp}. Dating back to 1993 and a leg for Cisco over other vendors back in the early days of the Internet. (.. hmm. And remember Cisco's implementation of \gls{ospf} was known to be unstable until the early 2000's.) + +The change to \gls{eigrp} from \gls{igrp} was due to the support of classless routing. (\gls{igrp} only supported classful routing of class A (/8), B (/16), and C (/24) networks.) + +Cisco converted \gls{eigrp} to an open standard back in 2013 with \rfc{7868}.\cite{wiki:Enhanced_Interior_Gateway_Routing_Protocol} + +\gls{eigrp} adds support for \gls{vlsm} and the \gls{dual} with improved routing capabilities in comparison to \gls{igrp}. Overall \gls{eigrp} provides better capabilities compared to it's predecessor. + +\subsection[Math]{The Math behind} + +\fig{math/eigrp-dual-long}{eigrp-dual-long}{\glspl{eigrp} \gls{dual} full formula} + +By default $K_2$, and $K_4$ is set to zero. (The are user customizable!) And $K_5$ is set to 0. + +In effect the resulting shorter formula is this: + +\fig{math/eigrp-dual-short}{eigrp-dual-short}{\glspl{eigrp} \gls{dual} short formula} + +\subsection{How it actually works} + +\gls{eigrp} does it routing on a \texttt{next-hop} basis. Meaning it only stores information about a given routes next turn. And \textbf{not} about the destination itself. (Like \gls{ospf} does) + +\subsubsection{Defaults} + +\gls{eigrp} runs on Cisco equipment with values of: +\begin{itemize} + \item \itemhead[]{Administrative Distance (Defaults)} + \begin{itemize} + \item Internal: 90 + \item External: 180 + \item Summary: 5 + \end{itemize} + \item \itemhead[]{Timers} + \begin{itemize} + \item Hello: 5s / 60s \footnote{The larger timer value applies at speeds <= T1 circuit bandwidth (a.k.a. lower-than-equal-to 1.544 Mbps)} + \item Hold: 15s / 180s + \end{itemize} + \item \itemhead[]{Supported Protocols} + \begin{itemize} + \item \gls{ip} + \item \gls{ipx} + \item AppleTalk + \end{itemize} + \item \itemhead[]{Other} + \begin{itemize} + \item Type: Distance Vector + \item Algorithm: \gls{dual} + \item Transport: \gls{ip}/88 + \item Authentication: MD5 + \item Multicast \gls{ipv4}: 224.0.0.10 + \item Multicast \gls{ipv6}: + \end{itemize} +\end{itemize} + +\subsubsection{Tables} + +\gls{eigrp} contains three tables for storing route information. + +\begin{enumerate} + \item \itemhead[]{Neighbor Table} + \begin{itemize} + \item \textit{Lists \textbf{all} directly connected neighbors} + \item Next-Hop Router(s) + \item Interface(s) + \end{itemize} + \item \itemhead[]{Topology Table} + \begin{itemize} + \item \textit{Lists \textbf{all} learned from \textbf{all} \gls{eigrp} neighbors} + \item Destination + \item Metric + \end{itemize} + \item \itemhead[]{Global Routing Table} + \begin{itemize} + \item \textit{Best routes from \gls{eigrp} topology tabel will be copied to the routing table} + \end{itemize} +\end{enumerate} + +\subsection{Stub Routing} + +\gls{eigrp} features some different ways to configure routers for specific routing scenarios. \texttt{Stub} routing is one of them. + +Stub routing effectively prevents the given stub site/router to be used for transit traffic. + +If a router is configured as a \texttt{Stud Router}. It only carries information about \tsq{it}s locally connected routes and a default route back to the transit routers. \tsq{It}s also omitted from being queried about networks is does not advertise. {\small (I.e. The Routes Query Process)}s + +\subsection{Updates Exchange} + +\begin{enumerate} + \item Routers always exchange full topology table information when neighbor-ship is established. + \item Now refresh of data will be done. Unless topology updates occur. + \item If the topology changes. A partial update about the specific prefix is sent to neighbors.\footnote{Changes includes metric components, link statuses, change in announced topology information.} + \item If a neighbor-ship fail. Then a new adjacency is formed with a full topology exchange is done. +\end{enumerate} + +Always remember \gls{eigrp} does split-horizon by default on all active links when exchanging topology updates. + +Split-horizon is the \textit{famous} rule about not sending topology updates back to the router who sent the topology update in the first place. + +\gls{eigrp} uses \gls{rtp} to send topology updates and confirmation receipts. + +On \gls{p2p} interfaces. \gls{eigrp} simply send and ACK back to the sender. +On multi-access interface/segments. \gls{eigrp} sends updates to 224.0.0.10 and receivers reply with a unicast ACK message to the sender. + +\subsection[SIA]{Stuck-in-Active} +\gls{eigrp} is known and feared for it being \texttt{Stuck-in-Active} mode when exchanging route updates between routers. The Stuck-in-Active state could cause problems on low end network gear with a low amount of resources available for the routing process. Which in cases could cause the network device to use all available resources when querying neighbor devices for updates. + +\fig{eigrp/stuck-in-active}{stuck-in-active}{EIGRP Stuck in Active} + +End result is neighbor ships between \gls{eigrp} routers is terminated and re-established again with a fresh set of route updates going out. + +Imagine a large \gls{eigrp} topology (3-digit number of routers) in a single domain and beginning with 1 neighbor-ship gets re-established. And then again and again and again. Can result in quickly several routers going Stuck-in-Active because \gls{eigrp} queries are not getting answered within a short time-frame when all routers needs to query \tsq{it}s own neighbors and their neighbors and their neighbors and so forth. Until their are no more neighbors to be queried up and down the hierarchical network topology. + +\fig{network/routing}{network-topology}{Medium sized network topology} + +\subsection{Non-Cisco Implementations} + +This is always a particular point of discussion around \gls{eigrp}. Cisco has released \textit{some} information on how \gls{eigrp} works. +Not \textit{all} information. +And only as \textit{informational} RFCs. +This ensures Cisco \textit{still} has control of the development of the protocol. +Because they have retained ownership by only publishing informational RFCs. + +This has been a hindrance for the adoption of \gls{eigrp} in other vendors than Cisco them-self. + +Known adoptions of EIGRP includes: +\begin{itemize} + \item \gls{frr} targeted release 4\cite{Frr30-4047:online} + \item Quagga has known works for trying to implement \gls{eigrp}. Still not officially implemented, thou. +\end{itemize} + +\subsection{Filtering} + +\gls{eigrp} routing updates can of course be filtered in- and outgoing direction on Cisco boxes by using prefix-lists and applying the prefix lists under the \texttt{router eigrp x} process. + +\newpage + \section{RIP} rip is the old routing protocol still existing using nukber-of-hops as the metric to calculate which route to take to the intended destination. This approach can work fine but has a nukber of weaknesses. @@ -13,10 +198,14 @@ rip is the old routing protocol still existing using nukber-of-hops as the metri 3. Has no concept of load sharing traffic between links if the same amount of hops is present amongst the best paths available. 4. Limited to a miximum of 16 hops between source and destination. +\newpage + \subsection{RIPng} The version of rip supporting ipv6. different to the standard rip in the ng version is using different multicast addresses to communicate on. +\newpage + \section{Static} \newpage diff --git a/img/eigrp/stuck-in-active.jpg b/img/eigrp/stuck-in-active.jpg new file mode 100644 index 0000000..7d1201d Binary files /dev/null and b/img/eigrp/stuck-in-active.jpg differ diff --git a/img/math/eigrp-dual-long.png b/img/math/eigrp-dual-long.png new file mode 100644 index 0000000..ca71d16 Binary files /dev/null and b/img/math/eigrp-dual-long.png differ diff --git a/img/math/eigrp-dual-short.png b/img/math/eigrp-dual-short.png new file mode 100644 index 0000000..090fcc7 Binary files /dev/null and b/img/math/eigrp-dual-short.png differ diff --git a/img/network/routing.jpg b/img/network/routing.jpg new file mode 100644 index 0000000..67cca59 Binary files /dev/null and b/img/network/routing.jpg differ diff --git a/references-websites.bib b/references-websites.bib index 45d2c11..3094e1c 100644 --- a/references-websites.bib +++ b/references-websites.bib @@ -39,4 +39,13 @@ month = "September", year = "2011", note = "[Online; accessed on 24-June-2017]" +} + +@misc{Frr30-4047:online, + author = {Donald Sharp}, + title = {Frr 3.0 → 4.0 · FRRouting/frr Wiki}, + howpublished = {\url{https://github.com/FRRouting/frr/wiki/Frr-3.0-%E2%86%92-4.0}}, + month = {February}, + year = {2018}, + note = {(Accessed on 02/18/2018)} } \ No newline at end of file diff --git a/references-wikipedia.bib b/references-wikipedia.bib index bdfd516..5b0d37c 100644 --- a/references-wikipedia.bib +++ b/references-wikipedia.bib @@ -96,4 +96,20 @@ year = "2017", howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Solicited-node\%20multicast\%20address&oldid=787116453}}, note = "[Online; accessed 19-July-2017]" +} + +@misc{ wiki:Administrative_distance, + author = "Wikipedia", + title = "{Administrative distance} --- {W}ikipedia{,} The Free Encyclopedia", + year = "2017", + howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Administrative\%20distance&oldid=799742717}}, + note = "[Online; accessed 18-September-2017]" +} + +@misc{ wiki:Enhanced_Interior_Gateway_Routing_Protocol, + author = "Wikipedia", + title = "{Enhanced Interior Gateway Routing Protocol} --- {W}ikipedia{,} The Free Encyclopedia", + year = "2017", + howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Enhanced\%20Interior\%20Gateway\%20Routing\%20Protocol&oldid=800921738}}, + note = "[Online; accessed 18-September-2017]" } \ No newline at end of file diff --git a/structure.tex b/structure.tex index 6ce784e..15cbf3e 100644 --- a/structure.tex +++ b/structure.tex @@ -4,28 +4,25 @@ \usepackage{lmodern} \usepackage{geometry} \usepackage{listings} -\usepackage{color} -\usepackage[usenames,dvipsnames,svgnames]{xcolor} +\usepackage{color} % makes custom color codes available. +\usepackage[usenames,dvipsnames,svgnames]{xcolor} % makes custom color codes available. \usepackage{graphicx} -\usepackage[numbers,square,sectionbib,comma,nonamebreak,elide]{natbib} +\usepackage[numbers,square,sectionbib,comma,nonamebreak,elide]{natbib} % used with layout for bibliography section. \usepackage{float} \usepackage[english]{babel} \usepackage{fancyhdr} \usepackage{wrapfig} \usepackage{array} -\usepackage{lipsum} -\usepackage{fancybox} +\usepackage{fancybox} % styling of boxes. \usepackage{varwidth} -\usepackage{enumitem} +\usepackage{enumitem} % makes available changes to lists. \usepackage{titlepic} \usepackage[nottoc]{tocbibind} -\usepackage{url} -\usepackage[showisoZ]{datetime2} +\usepackage{url} % cmd \url. +\usepackage[showisoZ]{datetime2} % more options for time formatting. \usepackage{transparent} \usepackage{soul} \usepackage{caption} -\usepackage{enumitem} -\usepackage{amssymb} \usepackage{tikzsymbols} % http://ctan.math.utah.edu/ctan/tex-archive/graphics/pgf/contrib/tikzsymbols/tikzsymbols.pdf \usepackage{textcomp} \usepackage{parskip} @@ -34,7 +31,7 @@ \usepackage{makecell} \usepackage{inconsolata} \usepackage{blindtext} -\usepackage{expdlist} +\usepackage{expdlist} \usepackage{epigraph} % used to style quotes \usepackage{titling} % makes available \thetitle \theauthor \thedate \usepackage[toc,acronym,footnote,nomain]{glossaries} % Load the package with the acronym option @@ -47,6 +44,8 @@ citecolor=darkgray, filecolor=darkgray, urlcolor=darkgray]{hyperref} % https://en.wikibooks.org/wiki/LaTeX/Hyperlinks +\usepackage{amsmath,amssymb} % math things. +\usepackage{lipsum} \renewcommand*{\multicolumntoc}{3} % https://tex.stackexchange.com/a/6455