From 779d7aff02acbae331fc1671e24394115f88d08c Mon Sep 17 00:00:00 2001 From: Christoffer Date: Tue, 18 Jul 2017 19:11:16 +0200 Subject: [PATCH 01/24] Begin writing ipv6 section --- chapter/ip.tex | 13 +++++++++++++ img/ipv6/ipv6_address_leading_zeros.svg.png | Bin 0 -> 41725 bytes main.tex | 1 + 3 files changed, 14 insertions(+) create mode 100644 chapter/ip.tex create mode 100644 img/ipv6/ipv6_address_leading_zeros.svg.png diff --git a/chapter/ip.tex b/chapter/ip.tex new file mode 100644 index 0000000..124b8bc --- /dev/null +++ b/chapter/ip.tex @@ -0,0 +1,13 @@ +\chapter[IP]{Internet Protocol} + +\section[IPv6]{Internet Protocol v6} + +\gls{ipv6} has recently been defined in an updated \rfc{8200} which obsoletes several of the older \gls{rfc} documents regarding \gls{ipv6}. + +\gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation\footnote{This helps limits the size of the Internet's global routing table!}. + +\fig{ipv6_address_leading_zeros.svg}{ipv6zeroes}{An illustration of an example IPv6 address with leading zeros in the binary rendering} + + + +\section[IPv4]{Internet Protocol v4} \ No newline at end of file diff --git a/img/ipv6/ipv6_address_leading_zeros.svg.png b/img/ipv6/ipv6_address_leading_zeros.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..d21614b5c63fdfff961d0a03ed99572601a660c9 GIT binary patch literal 41725 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 z

*-u*{f|0-~Ry&m*sP!Q1?QY^(ADfPPj=$F#Z5RM0@+LNYrw;reI(=dQBx0kw6A zo<2PDpRp9UDPsX_E|ICf&+LJQSwr?%3mv2L0XW$nizQ<24JVlYdo!B{#~#e1`}0c; z?ZvQD_16;IRqAk8C(Uo!RZdZ@&4$GMr4@g%Ft?GC*fQJ975HmR&qq+O#5pM`ryKG~ zZEV}?v4LQ|ia{w(5ROa|9r-f`@k8L$EV*KR9J@Z;sk-n1;;;SJZ&T2uFgPX1az5v8e`B-=30xYs)V54uw@?O+e&oaELi^7? z`$9EX!4mon|LnYOWS+~L-IF)AjxFg}0J)=M*w^&wyAQPAnmCtn*)b0a0em5wm+EVY zB0_+=AKB36eF;F6Kgxe%14xJG=NXk@fOW*=?7*BhoB}kR*o*6GlJ$EPcTPOxs)kcoq=b@m+U)EGI zKpWYe_*aRogLJW6tiQKMTI@W!*Z9%$bI*`pm(RN*u*li`(Rx{Su8S7w5PS1VHcqDI zApo}!-foMKGCRHo04E$#&?d&*!?6gym^RUn5iQ46OA;5G{ujy?Hmol9H+o1~nS2B* zA1nUOdoZ8ymnVQ>5}E+VEebl*i+!dCpiw430BMCyT&~DyskECiGO^k~L4T zP98g+UV>R~*IO6-f7b%YEB?q!HYAn!OjjZ>xxE->vX}sqIR6K_HQe6Ihvh3&stFd} z#m6gSmQ*7S{I{Dyy0*k<3!NpqhNUep2P&@PbOp7ALvr+sbWI`?+*TGJ0u-kz z;CA)04ve|}0fYV;z0^Wn8L44K8>INbA-qw8Q&Q<6p5Boq!3iwH=h~ye2 z{L=JQu=#I(bH3Vp35jY9>hAiIPUw7*46^N7G8vp+tTvEb$GeFOQmC+0i&RY!wLh<; zji*5*KTDS>vLfFF;bm7Ob5Eqgo$uQUYl%ycHP2k5L1LjIQC{LhEQh$C-C4 z6wh0PU|t8a?OB;`|0g6C!j}ZgL{;z|O!=8Y-Y|%&~metPr4~mLwk7&h$&T(}9}} z5J(utqEiJ4YX@MObH(dI|v;K}uoDGz($lx#p-^NMo zw>|8zm;B$zx_KkCROFIQfLP!!gitAAK*S~@BuK?5XaRpCs|zBy zDpTF5W*kM>&>w?H0KLmB6#*2HQi56{;iwOJ2!9i5KV_l3ShrEwY4-83(js_AUsVqOvuhQ6vZ-_<6%LAM|1QW2#GK

si=Z}n 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 Date: Tue, 18 Jul 2017 23:09:32 +0200 Subject: [PATCH 02/24] Writing ipv6 privacy subsection --- acronyms.tex | 12 ++++++---- chapter/ip.tex | 22 +++++++++++++++++- img/ipv6/Ipv6_header.png | Bin 0 -> 31924 bytes ...svg.png => ipv6_address_leading_zeros.png} | Bin references-wikipedia.bib | 8 +++++++ 5 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 img/ipv6/Ipv6_header.png rename img/ipv6/{ipv6_address_leading_zeros.svg.png => ipv6_address_leading_zeros.png} (100%) diff --git a/acronyms.tex b/acronyms.tex index 4eb4f94..4987899 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -25,6 +25,7 @@ \newacronym{cwdm}{CWDM}{} \newacronym{db}{DB}{Database} \newacronym{dhcp}{DHCP}{Dynamic Host Control Protocol} +\newacronym{dhcp6}{DHCPv6}{Dynamic Host Control Protocol version 6} \newacronym{dknog}{DKNOG}{Danish Network Operators' Group} \newacronym{dns}{DNS}{Domain Name System} \newacronym{dr}{DR}{Danmarks Radio} @@ -60,16 +61,18 @@ \newacronym{iab}{IAB}{Internet Architecture Board} \newacronym{iana}{IANA}{Internet Assigned Numbers Authority} \newacronym{icann}{ICANN}{Internet Corporation for Assigned Names and Numbers} +\newacronym{icmp}{ICMP}{Internet Control Message Protocoll} +\newacronym{icmp6}{ICMPv6}{Internet Control Message Protocol version 6} \newacronym{ieee}{IEEE}{Institute of Electrical and Electronics Engineers} \newacronym{ietf}{IETF}{Internet Engineering Task Force} \newacronym{igrp}{IGRP}{Interior Gateway Routing Protocol} \newacronym{imap}{IMAP}{Internet Message Access Protocol} \newacronym{ios}{IOS}{Internetwork Operating System} \newacronym{ip}{IP}{Internet Protocol} -\newacronym{ip4}{IPv4}{Internet Protocol v4} -\newacronym{ip6}{IPv6}{Internet Protocol v6} -\newacronym{ipv4}{IPv4}{Internet Protocol v4} -\newacronym{ipv6}{IPv6}{Internet Protocol v6} +\newacronym{ip4}{IPv4}{Internet Protocol version 4} +\newacronym{ip6}{IPv6}{Internet Protocol version 6} +\newacronym{ipv4}{IPv4}{Internet Protocol version 4} +\newacronym{ipv6}{IPv6}{Internet Protocol version 6} \newacronym{irc}{IRC}{Internet Relay Chat} \newacronym{irtf}{IRTF}{Internet Research Task Force} \newacronym{isis}{IS-IS}{Intermediate System to Intermediate System} @@ -133,6 +136,7 @@ \newacronym{sdsl}{SDSL}{Symmetric Digital Subscriber Line} \newacronym{sftp}{SFTP}{Secure Shell File Transfer Protocol} \newacronym{sla}{SLA}{Service Level Agreement} +\newacronym{slaac}{SLAAC}{Stateless Address Autoconfiguration} \newacronym{smtp}{SMTP}{Simpe Mail Transfer Protocol} \newacronym{snmp}{SNMP}{Simple Network Management Protocol} \newacronym{sntp}{SNTP}{Secure Network Time Protocol} diff --git a/chapter/ip.tex b/chapter/ip.tex index 124b8bc..52f80d7 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -6,8 +6,28 @@ \gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation\footnote{This helps limits the size of the Internet's global routing table!}. -\fig{ipv6_address_leading_zeros.svg}{ipv6zeroes}{An illustration of an example IPv6 address with leading zeros in the binary rendering} +\wikicommons[An illustration of an example IPv6 address with leading zeros in the binary rendering]{ipv6_address_leading_zeros} +\subsection{IP to client} +Several ways to assign a client an address exists. +\begin{itemize} + \item Let the client handle it itself (i.e. \gls{dhcp} server present): \gls{slaac}. + \begin{itemize} + \item \gls{icmp6} router discovery messages is used to detect info 'bout the connected network segment. + \item Upon \textit{link up} client sends link-local solicitation multicast req. for network parameters, + \item router \textit{responds with} router adv. packet cont. \gls{ip} cfg parameters. + \end{itemize} + \item Let the \gls{dhcp} server assign \textit{partial} info to the client. + \item Let the \gls{dhcp} server assign \textit{every} info to the client. +\end{itemize} + +\textbf{Privacy} is a large concern regarding \gls{ipv6} because of the globally unique address the client posses. Implementation to do privacy regarding the host bits of an \gls{ip6} has been done to protect the clients (and users) from being tracked. Alas, if the \gls{isp} do static prefix assignments to end users. This privacy protection may be somewhat unusable. As the network prefix will always remain the same. Regardless of the host-bits being changed often. + +\subsection{Packet Header} + +\wikicommons{Ipv6_header}} + +\subsection{Multicast} \section[IPv4]{Internet Protocol v4} \ No newline at end of file diff --git a/img/ipv6/Ipv6_header.png b/img/ipv6/Ipv6_header.png new file mode 100644 index 0000000000000000000000000000000000000000..5bb2a84263dbf6f07291ee3d6da8d78d8f760ea1 GIT binary patch literal 31924 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 literal 0 HcmV?d00001 diff --git a/img/ipv6/ipv6_address_leading_zeros.svg.png b/img/ipv6/ipv6_address_leading_zeros.png similarity index 100% rename from img/ipv6/ipv6_address_leading_zeros.svg.png rename to img/ipv6/ipv6_address_leading_zeros.png diff --git a/references-wikipedia.bib b/references-wikipedia.bib index 2b626d1..45e0651 100644 --- a/references-wikipedia.bib +++ b/references-wikipedia.bib @@ -72,4 +72,12 @@ year = "2017", howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Border\%20Gateway\%20Protocol&oldid=785954244}}, note = "[Online; accessed 18-June-2017]" +} + +@misc{ wiki:IPv6, + author = "Wikipedia", + title = "{IPv6} --- {W}ikipedia{,} The Free Encyclopedia", + year = "2017", + howpublished = {\url{http://en.wikipedia.org/w/index.php?title=IPv6&oldid=790986104}}, + note = "[Online; accessed 18-July-2017]" } \ No newline at end of file From 479d38393b6dbe282643ef1defdd772014165033 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 00:22:39 +0200 Subject: [PATCH 03/24] ipv6 format --- chapter/ip.tex | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index 52f80d7..f50dd72 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -22,11 +22,20 @@ Several ways to assign a client an address exists. \item Let the \gls{dhcp} server assign \textit{every} info to the client. \end{itemize} -\textbf{Privacy} is a large concern regarding \gls{ipv6} because of the globally unique address the client posses. Implementation to do privacy regarding the host bits of an \gls{ip6} has been done to protect the clients (and users) from being tracked. Alas, if the \gls{isp} do static prefix assignments to end users. This privacy protection may be somewhat unusable. As the network prefix will always remain the same. Regardless of the host-bits being changed often. +\textbf{Privacy} is a large concern regarding \gls{ipv6} because of the globally unique address the client posses. + +Implementation to do privacy regarding the host bits of an \gls{ip6} has been done to protect the clients (and users) from being tracked. Alas, if the \gls{isp} do static prefix assignments to end users. This privacy protection may be somewhat unusable. As the network prefix will always remain the same. Regardless of the host-bits being changed often. + +Have 3 different forms: +\begin{enumerate} + \item 2001:0db8:0000:0000:0000:ff00:0042:8329, + \item 2001:db8:0:0:0:ff00:42:8329, {\footnotesize (i.e. remove leading zeroes per group delimited by colon)} + \item 2001:db8::ff00:42:8329. {\footnotesize (i.e. remove groups containing all zeroes in succession after each other) (only done \textit{once!}} +\end{enumerate} \subsection{Packet Header} -\wikicommons{Ipv6_header}} +\wikicommons{Ipv6_header} \subsection{Multicast} From 6f7793712b878098f58c4a2e2fd9c03152f9018a Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 01:10:24 +0200 Subject: [PATCH 04/24] Writing ipv6 address types --- acronyms.tex | 1 + chapter/ip.tex | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/acronyms.tex b/acronyms.tex index 4987899..3597e53 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -23,6 +23,7 @@ \newacronym{cix}{CIX}{Commercial Internet Exchange} \newacronym{cph}{CPH}{Copenhagen} \newacronym{cwdm}{CWDM}{} +\newacronym{dad}{DAD}{Duplicate Address Detection} \newacronym{db}{DB}{Database} \newacronym{dhcp}{DHCP}{Dynamic Host Control Protocol} \newacronym{dhcp6}{DHCPv6}{Dynamic Host Control Protocol version 6} diff --git a/chapter/ip.tex b/chapter/ip.tex index f50dd72..8bbb8dc 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -37,6 +37,17 @@ Have 3 different forms: \wikicommons{Ipv6_header} +\subsection{Address Types} + +\begin{itemize} + \item \itemhead[]{Link-Local} + \begin{itemize} + \item Address assigned from the fe80::/7 prefix. + \item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment. + \end{itemize} + \item \itemhead[]{Global Addressing} +\end{itemize} + \subsection{Multicast} \section[IPv4]{Internet Protocol v4} \ No newline at end of file From 7abce579c58ef3334e27a843a7cef4a78b4640f7 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 20:29:24 +0200 Subject: [PATCH 05/24] Global v6 address types --- chapter/ip.tex | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/chapter/ip.tex b/chapter/ip.tex index 8bbb8dc..7674a74 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -46,8 +46,22 @@ Have 3 different forms: \item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment. \end{itemize} \item \itemhead[]{Global Addressing} + \begin{itemize} + \item Address types + \begin{itemize} + \item Unicast: Identifies each \gls{nic}. + \item Anycast: Identifies a group of \glspl{nic} belonging to the same group and providing the same services/content/applications. Nearest one to source is used. + \item Multicast: Used to deliver content to multiple \glspl{nic} at once. Traffic is a single flow from the source (i.e. not multiple unicast streams). + \item Broadcast: \textit{Not} implemented. Replaced by use of multicast groups. + \end{itemize} + \end{itemize} + \begin{itemize} + \item W + \end{itemize} \end{itemize} \subsection{Multicast} +\subsection{AAAA} + \section[IPv4]{Internet Protocol v4} \ No newline at end of file From ef9ac2a3db3eab61f6a6b960b8e94a407a63b381 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 20:42:49 +0200 Subject: [PATCH 06/24] ip6.arpa --- acronyms.tex | 1 + chapter/ip.tex | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/acronyms.tex b/acronyms.tex index 3597e53..2f847aa 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -29,6 +29,7 @@ \newacronym{dhcp6}{DHCPv6}{Dynamic Host Control Protocol version 6} \newacronym{dknog}{DKNOG}{Danish Network Operators' Group} \newacronym{dns}{DNS}{Domain Name System} +\newacronym{dns6}{DNSv6}{Domain Name System version 6} \newacronym{dr}{DR}{Danmarks Radio} \newacronym{dsl}{DSL}{Digital Subscriber Line} \newacronym{dst}{dst}{destination} diff --git a/chapter/ip.tex b/chapter/ip.tex index 7674a74..d462aff 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -64,4 +64,10 @@ Have 3 different forms: \subsection{AAAA} +\gls{dns6} had 2 running proposals when first proposed, \rfc{2874} (1st), \rfc{3364} (later discussion), and \rfc{3363} thou deprecated this proposal to experimental status. + +The winning one was \rfc{3596} with the idea of doing \textit{quad}-A records and hierarchically divided by \textit{nibble} {\small (i.e. 4 bits)}. + +The idea is fx. \texttt{2001:db8:ef::2} is noted in ip6.arpa as \texttt{2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.e.0.0.8.b.d.0.1.0.0.2.ip6.arpa}. {\small Note the used of '.' between \textit{each} \textit{hexadecimal} character used, and that \textit{all zeroes} has been included. ip6.arpa does not allow any characters to be omitted from the original full-length \gls{ip6} address.}\footnote{Found description \href{https://stackoverflow.com/q/6619682}{here} on stackoverflow.com/q/6619682.} + \section[IPv4]{Internet Protocol v4} \ No newline at end of file From 3f23435b40a65e579c5fb826b950edaba1436db1 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 20:49:29 +0200 Subject: [PATCH 07/24] Fix wrong link-local scope --- chapter/ip.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index d462aff..6542ca3 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -42,7 +42,7 @@ Have 3 different forms: \begin{itemize} \item \itemhead[]{Link-Local} \begin{itemize} - \item Address assigned from the fe80::/7 prefix. + \item Address assigned from the fe80::/10 prefix. \item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment. \end{itemize} \item \itemhead[]{Global Addressing} From 9b695eb787324a4f68d1585e95906766fac13c51 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 23:01:32 +0200 Subject: [PATCH 08/24] Fix ip6 notation to monospace font --- chapter/ip.tex | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index 6542ca3..74aaf24 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -28,9 +28,9 @@ Implementation to do privacy regarding the host bits of an \gls{ip6} has been do Have 3 different forms: \begin{enumerate} - \item 2001:0db8:0000:0000:0000:ff00:0042:8329, - \item 2001:db8:0:0:0:ff00:42:8329, {\footnotesize (i.e. remove leading zeroes per group delimited by colon)} - \item 2001:db8::ff00:42:8329. {\footnotesize (i.e. remove groups containing all zeroes in succession after each other) (only done \textit{once!}} + \item \texttt{2001:0db8:0000:0000:0000:ff00:0042:8329}, + \item \texttt{2001:db8:0:0:0:ff00:42:8329}, {\footnotesize (i.e. remove leading zeroes per group delimited by colon)} + \item \texttt{2001:db8::ff00:42:8329}. {\footnotesize (i.e. remove groups containing all zeroes in succession after each other) (only done \textit{once!}} \end{enumerate} \subsection{Packet Header} @@ -42,8 +42,20 @@ Have 3 different forms: \begin{itemize} \item \itemhead[]{Link-Local} \begin{itemize} - \item Address assigned from the fe80::/10 prefix. + \item Address assigned from the \texttt{fe80::/10} prefix. \item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment. + \item \itemhead[]{Unique Link Local}\cite{wiki:Unique_local_address} + \begin{itemize} + \item Defined as block \texttt{fc00::/7}. See \rfc{4193}. + \item \gls{ula} is \glspl{ip6} counter-part to \glspl{ip4} \rfc{1918} address space. + \item Only usable within a private network. + \item Divided into 2 /8 \gls{ip6} blocks. + \begin{enumerate} + \item \texttt{fc00::/8} -- Not \textit{yet} officially allocated/defined by the \gls{ietf}. + \item \texttt{fd..::/8} -- + \end{enumerate} + \end{itemize} + \item \itemhead[]{Solicited-node multicast address} \end{itemize} \item \itemhead[]{Global Addressing} \begin{itemize} From 73007a105f7fe0d8bf8e4006cc0b615f6f240c34 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 23:01:48 +0200 Subject: [PATCH 09/24] added citation --- chapter/ip.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index 74aaf24..c30a599 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -4,7 +4,7 @@ \gls{ipv6} has recently been defined in an updated \rfc{8200} which obsoletes several of the older \gls{rfc} documents regarding \gls{ipv6}. -\gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation\footnote{This helps limits the size of the Internet's global routing table!}. +\gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation\footnote{This helps limits the size of the Internet's global routing table!}.\cite{wiki:IPv6} \wikicommons[An illustration of an example IPv6 address with leading zeros in the binary rendering]{ipv6_address_leading_zeros} From df217ca62323a0faecf407e041ab661bd7849ab4 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 23:02:13 +0200 Subject: [PATCH 10/24] Removed subsection multicast --- chapter/ip.tex | 5 ----- 1 file changed, 5 deletions(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index c30a599..f9183bd 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -67,13 +67,8 @@ Have 3 different forms: \item Broadcast: \textit{Not} implemented. Replaced by use of multicast groups. \end{itemize} \end{itemize} - \begin{itemize} - \item W - \end{itemize} \end{itemize} -\subsection{Multicast} - \subsection{AAAA} \gls{dns6} had 2 running proposals when first proposed, \rfc{2874} (1st), \rfc{3364} (later discussion), and \rfc{3363} thou deprecated this proposal to experimental status. From b7e2f7bc77f364e2e42dd9ef03e588d43fd6c7a9 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 23:08:07 +0200 Subject: [PATCH 11/24] ip6 ULA --- acronyms.tex | 1 + chapter/ip.tex | 2 +- references-wikipedia.bib | 8 ++++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/acronyms.tex b/acronyms.tex index 2f847aa..12eef2f 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -160,6 +160,7 @@ \newacronym{tosdr}{ToS;DR}{Terms of Service; Didn't Read} \newacronym{udld}{UDLD}{Unidirectional Link Detection} \newacronym{udp}{UDP}{User Datagram Protocol} +\newacronym{ula}{ULA}{Unique Local Address} \newacronym{utc}{UTC}{Coordinated Universal Time} \newacronym{vlan}{VLAN}{Virtual Local Area Network} \newacronym{vpn}{VPN}{Virtual Private Network} diff --git a/chapter/ip.tex b/chapter/ip.tex index f9183bd..f1b0d13 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -52,7 +52,7 @@ Have 3 different forms: \item Divided into 2 /8 \gls{ip6} blocks. \begin{enumerate} \item \texttt{fc00::/8} -- Not \textit{yet} officially allocated/defined by the \gls{ietf}. - \item \texttt{fd..::/8} -- + \item \texttt{fd00::/8} -- Defined as /48 prefixes. The last 40 bits is randomly generated and appended to the first 8 significant bits {\small (i.e. \texttt{0xFD} aka. \texttt{11111101})}. \end{enumerate} \end{itemize} \item \itemhead[]{Solicited-node multicast address} diff --git a/references-wikipedia.bib b/references-wikipedia.bib index 45e0651..c28f582 100644 --- a/references-wikipedia.bib +++ b/references-wikipedia.bib @@ -80,4 +80,12 @@ year = "2017", howpublished = {\url{http://en.wikipedia.org/w/index.php?title=IPv6&oldid=790986104}}, note = "[Online; accessed 18-July-2017]" +} + +@misc{ wiki:Plagiarism, + author = "Wikipedia", + title = "{Plagiarism} --- {W}ikipedia{,} The Free Encyclopedia", + year = "2017", + howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Plagiarism&oldid=791022465}}, + note = "[Online; accessed 19-July-2017]" } \ No newline at end of file From b3c88a29bb254bdfd31c948640604d187d9cc891 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 23:35:33 +0200 Subject: [PATCH 12/24] ip6 Solicited-node multicast address --- acronyms.tex | 1 + chapter/ip.tex | 8 +++++++- references-wikipedia.bib | 14 +++++++++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/acronyms.tex b/acronyms.tex index 12eef2f..72651b1 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -100,6 +100,7 @@ \newacronym{msg}{msg}{message} \newacronym{mst}{MST}{Multiple Spanning Tree} \newacronym{nac}{NAC}{Network Admission Control} +\newacronym{nd}{ND}{Neighbor Discovery} \newacronym{nlri}{NLRI}{Network Layer Reachability Information} \newacronym{nms}{NMS}{Network Management Software} \newacronym{nsa}{NSA}{National Security Agency} diff --git a/chapter/ip.tex b/chapter/ip.tex index f1b0d13..1b80b10 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -55,7 +55,13 @@ Have 3 different forms: \item \texttt{fd00::/8} -- Defined as /48 prefixes. The last 40 bits is randomly generated and appended to the first 8 significant bits {\small (i.e. \texttt{0xFD} aka. \texttt{11111101})}. \end{enumerate} \end{itemize} - \item \itemhead[]{Solicited-node multicast address} + \item \itemhead[]{Solicited-node multicast address}\cite{wiki:Solicited-node_multicast_address} + \begin{itemize} + \item Consist of the prefix \texttt{ff02::1:ff00:0/104} for the first 104 bits. + \item The last 24 bits represents the target address within the prefix. + \item Solicited-node multicast address is segment only traffic. I.e. the traffic does not flow \textit{between \gls{l3} \gls{ip} segments. + \item Used in combination with \gls{nd} to replace \glspl{ip4} \gls{arp} functionality. + \end{itemize} \end{itemize} \item \itemhead[]{Global Addressing} \begin{itemize} diff --git a/references-wikipedia.bib b/references-wikipedia.bib index c28f582..bdfd516 100644 --- a/references-wikipedia.bib +++ b/references-wikipedia.bib @@ -82,10 +82,18 @@ note = "[Online; accessed 18-July-2017]" } -@misc{ wiki:Plagiarism, +@misc{ wiki:Unique_local_address, author = "Wikipedia", - title = "{Plagiarism} --- {W}ikipedia{,} The Free Encyclopedia", + title = "{Unique local address} --- {W}ikipedia{,} The Free Encyclopedia", year = "2017", - howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Plagiarism&oldid=791022465}}, + howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Unique\%20local\%20address&oldid=791265343}}, + note = "[Online; accessed 19-July-2017]" +} + +@misc{ wiki:Solicited-node_multicast_address, + author = "Wikipedia", + title = "{Solicited-node multicast address} --- {W}ikipedia{,} The Free Encyclopedia", + year = "2017", + howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Solicited-node\%20multicast\%20address&oldid=787116453}}, note = "[Online; accessed 19-July-2017]" } \ No newline at end of file From 22cfc73616077f5aa34aac75e37d9067f5a33284 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 18:10:51 +0200 Subject: [PATCH 13/24] ip6 Packet Headers --- chapter/ip.tex | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/chapter/ip.tex b/chapter/ip.tex index 1b80b10..527cc66 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -37,6 +37,17 @@ Have 3 different forms: \wikicommons{Ipv6_header} +\begin{enumerate} + \item Version -- 1-byte field containing '6'. + \item Traffic Class -- 2-bytes hex notation for traffic class. + \item Flow label -- 5-bytes. + \item Payload length -- 4-bytes unsigned integer, which is the rest of the packet that follows the IPv6 header, in octets. + \item Next header -- 4-bytes selector. Identifies the type of header that immediately follows the IPv6 header. Uses the same values as the IPv4 protocol field. + \item Hop limit -- 32-bytes unsigned integer. Decremented by one by each node that forwards the packet. The packet is discarded if the hop limit is decremented to zero. + \item Source address -- 32-bytes. + \item Destination address -- 32-bytes. The intended recipient is not necessarily the recipient if an optional routing header is present. +\end{enumerate} + \subsection{Address Types} \begin{itemize} From 8e7bc2f81eedd037f755a33e2be6432f4c664647 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 18:14:29 +0200 Subject: [PATCH 14/24] ip6 packet headers and extensions headers including citations to oracle sys adm guide for ip services --- chapter/ip.tex | 29 ++++++++++++++++++++--------- img/ipv6/ipv6-packet-header.png | Bin 0 -> 31919 bytes references-websites.bib | 9 +++++++++ 3 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 img/ipv6/ipv6-packet-header.png diff --git a/chapter/ip.tex b/chapter/ip.tex index 527cc66..aae7ecf 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -33,19 +33,30 @@ Have 3 different forms: \item \texttt{2001:db8::ff00:42:8329}. {\footnotesize (i.e. remove groups containing all zeroes in succession after each other) (only done \textit{once!}} \end{enumerate} -\subsection{Packet Header} +\subsection{Packet Headers}\cite{IPv6Pack77:online} \wikicommons{Ipv6_header} \begin{enumerate} - \item Version -- 1-byte field containing '6'. - \item Traffic Class -- 2-bytes hex notation for traffic class. - \item Flow label -- 5-bytes. - \item Payload length -- 4-bytes unsigned integer, which is the rest of the packet that follows the IPv6 header, in octets. - \item Next header -- 4-bytes selector. Identifies the type of header that immediately follows the IPv6 header. Uses the same values as the IPv4 protocol field. - \item Hop limit -- 32-bytes unsigned integer. Decremented by one by each node that forwards the packet. The packet is discarded if the hop limit is decremented to zero. - \item Source address -- 32-bytes. - \item Destination address -- 32-bytes. The intended recipient is not necessarily the recipient if an optional routing header is present. + \item \textbf{Version} -- 1-byte field containing '6'. + \item \textbf{Traffic Class} -- 2-bytes hex notation for traffic class. + \item \textbf{Flow label} -- 5-bytes. + \item \textbf{Payload length} -- 4-bytes unsigned integer, which is the rest of the packet that follows the IPv6 header, in octets. + \item \textbf{Next header} -- 4-bytes selector. Identifies the type of header that immediately follows the IPv6 header. Uses the same values as the IPv4 protocol field. + \item \textbf{Hop limit} -- 32-bytes unsigned integer. Decremented by one by each node that forwards the packet. The packet is discarded if the hop limit is decremented to zero. + \item \textbf{Source address} -- 32-bytes. + \item \textbf{Destination address} -- 32-bytes. The intended recipient is not necessarily the recipient if an optional routing header is present. +\end{enumerate} + +\subsection[EH]{Extension Headers}\cite{IPv6Pack77:online} + +\begin{enumerate} + \item \textbf{Routing} -- Extended routing, such as IPv4 loose source route + \item \textbf{Fragmentation} -- Fragmentation and reassembly + \item \textbf{Authentication} -- Integrity and authentication, and security + \item \textbf{Encapsulating Security Payload} -- Confidentiality + \item \textbf{Hop-by-Hop options} -- Special options that require hop-by-hop processing + \item \textbf{Destination options} -- Optional information to be examined by the destination node \end{enumerate} \subsection{Address Types} diff --git a/img/ipv6/ipv6-packet-header.png b/img/ipv6/ipv6-packet-header.png new file mode 100644 index 0000000000000000000000000000000000000000..2d3bdb0f387672838cc6795ab0516548dabef764 GIT binary patch literal 31919 zcmZ5|bx_n_*e~6k3oPAIOD|H=A<_y6($Yvu=hCor2ug#X0@9@jERA&hXz5ZwO6j=A z_q{WB=KjGj?6BY6J>PSl=Tpzd>1wMH6VMZ&p`j6Ls4MHEp<(Qyp`pj&VSq>4bbghA zU+7-?YKmx|N1;E#A6WJZPZZG5YLf|Xtgyk~`0nZ^UTA1Eod15%HS{@-z=IUtD#qRh zZg$?jR-P}>)I49leC6ff=578I4?HD^OG8<~(9irJ@1^(Coi9ye$%nIa8_46}jX(Q8 ze*c*I;d7WpK=r(|H-XAGUfN~p$B(>6?#_s>U$L8UFtBDHg;|m##PR=poe6kmPpj~J z0ZU}9eWA9`ta{8>&a=arb4@;kMiGxS(w#vc_CLRw|Nq||53&nFu73Xh@zuk_qglnt zS{lmCe7}l{2t5C7Qlu_B=Wf}3xYAKgOsk0ZMiEU%OY=m7MhHBMQQF64vB|Z<&%|Y= z{RP9FCmufj+EWI>NV4D9nVuH|snWi`FANhp5QFa|-RA3F?!_5yuiW4H{`m5`;%UXR z54uJA?=?LRD#$*Dxe8T_J5BTGm#W86a5~L?KCs}7Bx4(~4qrI2yFA%?C+_UC-h*G@ zbZi7G2s+V-z#+C9&L-#A&nYY{WL1jZ94jbjxauaAcNjAuZCVh-z`%&75qMr}-OFoG zHWw}Z6nyeYE}9Pl4(xidYehvxadB~FrXf#ZD zgEU4|_IL@$}YT zKd6%y@$o&l8m2V&!qxT1Q+YvE0n7A{zsMze59#i81h;j3XxDv<-BKqBgs$k27wKf? z?=2(Ay1up1V@JTaHPR)DOG+pyD1zRHEPeGooT)PPJzU-jTj#r)g7JFw_Vx-p(r4gx z7@*u~bLUzT_&VJG{`${(w%X#WPadFusE5<;T>{&05L@~?az0o1?Pk9@5w`#xth*eo1fyg11aH{xFmEBIe6ea zC!VEKz4u+KRrk1UqXSrZu8U1ia^b?Z&Ug=_)tjAXKhM|OkL5|9Zw{t|02l_eHP{MMivuZMenJQ>aN4|aaEAZ_)I=E zY%C%s8HjwZS9ro&cg$F}FgqI?25-IJ@%p#xGYW>0u5UC4-O|~~EBv+1tAU5TMESe4 zG&Ip&?oL(jBN}^FBwd%aV!7<}yEINr@?U=IJYQbS(`^d5y#j^D-5}#)mLL`J@Ak)~ zM`L1OwBO%db3V>eR#DMY$9bPM3qHx(e}+{rzRpk~`{nNV!KHADqi_BSyV)rzVg166y1Ha+ zgX>iSV<>{0U{GlprCmqUua}^o8~BJdbvrs{`D&@9Ht6z% zgz;g6^DGG}-2JlP{<46GPDIRYIX6u^@1by4R4k!b(~ng_V|m6_2_AdNIh`FGf0a5| z;P!CNP$plq(|-?|9Kby>sk0p{kiXxbuUAr1;?{m^+@TQB9YZ=bXF1HxtSRE6D(KK% zsx=bzV|A(3tK)L}UBKU8Rc5VeiZtDPiFD~%cBIR~K}T6h%l4T!CP!J6Y%g{lA~>9n zIR5YAlR0m$Z;!lt{6+x0>TKZQx0s}#bG7XDm|kn2UwloX6W#8LA_NPhSs*8i6PHnI z>@tdITr`Dsmo2SG*Vt-yF6(OxjRhVW9nBz(`f|Yb>1PgID%UBfFscq%+O$6;rM+J_ zm`TVYlJnW0v+j-eKrYo-Vg4BL%A0`tIsb5ts_gla43(<0L?Lp^#b$OyuJEcq!dHLs~;&7@Ml+V4`V`j0{Ud&c((e*Iko>i zh5Tm-C1u26YGiS7v7dAM$RZ`THdH<&m!khG4~HYp(*73ToB3{BdD%kZ z;>gvm7i!AN%Kbfaqhv@PdC$#(!E|o?N(ufba2WW&UHiP$dj01h!Cc`P#ZQr!-+Ko7 zb)d(hm$8xUC)rz8q=5CndFaQvQ@FWY$viC>&$tt+;9P zD@L6Z3iJ5`gL3VOH1YZeV>}&?1W2Q}qpWI}?uE8xN#FESk&}n~;dz%*xnWS004mYb z8m|NhoPGyAE#P>)x7J){`iAziS!9*#35bGefn<$dVI#`plr3NgLdT$3vU=Wu3a2^nt} zp8?D)GAiot?;r1!LOVikk91CXPM%dgZzP}Cz@>UV$ad6UNZxa`S0 zJ33nV{`Za=6kC?l6-GkJ)R)N*JWq3_ypEKvP8L9=2QQgAG5h(&k6=xB_w!w9Hu|$0ra-`)s4B9x`MB@r@;B)hkb(z+Eu#iyoKBAGJ#o2k6I*cFApZAvw>@(CQM}oI8D>ti)W)PT z%g2jV2+zWa?fJ;`W#E0Rs;4!^u&Lu3c_g;&{Dz)YeXx!{-sra( zFMI4lr^5!yEQ8CK1&Zo{;Rnsk2W1rbSTVQT@7!YDE(l#ys3IE$UwpBgyuf&-iK#eq zaIpyg+Zm4O!A63aLB{m2kCG+4P?jC}`VusdF_ZoeXER)MTN!zE=> z{z%4}gCV&;S8L<$4%3UpWHKvD9fEO=)P*xM?< zVW}#lZP~k<{9%Nw`dLOFE!AZ}54t@W5)$_2XnT@uv^n(V@cOXBqS1+ZG%O)HG7{Vg zcDLoW0s4VdcC}PC6?fQDW}9ibcAiM`i2n zM%Iz-UOU=J*co0u_M76)GZ{h_`5zSUVPNCGe=hKsBaF0Hmc!S6P+X1xgCF}#bcybZj0o{-KoT{;LaR6F90+i)+XQ*E!o=R}| zMGXXtxF{EUE}(7k43hB}6>HcF4JRCZe!-iM&|%euIa0Nv8h;XL<3U+d_{BPt$o20z_Npy(s8tj8JnD+CLCuRZJZwAF29RKX&(Hk0kbwFDi(0HF(uFy^Fy6gZ zD@SB4nFrD(B&YZoAw$y3A4$$Z*j@LWM4-hKkczl)vsGOzr_a~thdPy(4Ff}|>NGc0 zp_`cs#*e=G9Hj93QL5qHk6Gq#MJV2An1>^ThYK~_{KQ{%<1;m{m5R76%LGxYgkGM! zgp%TR${!0(5JPDYlw?{xpaa*{p|^xP_;`4ojqZ0>fA>O-K9Kc$P)KZ) zyl{|ln*IRFoc_sSz+d%2vF@qe$6+kO%yL25SpXYwmKdn>Soy5??i7S3O$nN}Wvioj znI-KwZLcbfWb7HSlnK6U5%NN|8wVhal-~mWI$|x}!{1AMK^al5MeU z;8~3kfHWM@`qcFFnnavbY)?XN$#lp{f z@=p9miz7R0W;ZwxTVRE|ZPo{iD`4`r1ok7M_M^IY6Kc#J+ub;DytCbjh@Y{&GW5j) z9<89%elXAH7xf(3u*qvO$`=U4;Dw|vz(X|MyWw%Kp%2tgFJ2_)%U&|`%6qIU%fx1Z zDy67oxsxp^7>0%F1-vv|1F&6eB~D{;$H~a_#Q{C`1R6fglv2*xgeWwh96H*xXeWKVgqs!tW_u9iN~2% zoR?aJ*$qEFr{vaWBuH_$B;-TB{ImCQcs6OjwWtU% z|K{>bRwgGWTL3umJW_XH%8Jj=Y02ng8fU5qGNL``{D-dz(d4Q6MQTbFD}RJ(3A<#} zOr=??NWHs3C7HjnKr)i90DC9{tS*7MB?)5QYjV}^sN?>+BbQPa|AM{{ALe*NKGy4? z#}wJfDDAtd32@?I!hHjkm3xv zIqruV9Z4@`O_56~s)@~jQ~mR>t_=eXGy z(7yptz7l#bn=||toIkGMt3U5GGwZY>(pQgmsgp!5ST&1%4i=`@pPwjhz;%LMa9eJmSAjc#Y zM9BE|kKPYF2C&_B&j zlxGtBdOOHnP_y=~*(L6a53z!hmTgoPRtP@_edDfl^8oL zdzmOJe1jgXO^h>nn?52EOMtC%MSV%WL1^~7^k8S{ZEd}3ka)!}HIPj_CL_?SzT1!H zYVhEc;{P}hgv+d6{P^l?Pm}cUjGVVF?zN}di!a`+e(N<@lr(ma)4+E8&UZ&MNOE4v z?0E!0pK2n#O4Htd6|@z#b|w8t?fc7}U54CxlhbWb3tRy|1n3SRBz2z#=4;N^tZGLZ z3+Z^|!Y!PfJlO=)d{jbuP)T-sO68+R*HRDzSP$W*_U6_=5676BnVK1r#eX9b&OuNH z_GqqRELEwGYF~wEgG2c9uK%Xm5em$OkKyq}5>V`VARhqYM|K!?miO@Wx)1zYkqSI= z;v2wSNeC-kE}i^+J=hB-0~qLe_M-T<>}p9e0C(u%=XY=tXnn7!M>E&c+a+3b*N)F{ zw=kTD&T3O}qTJ)a*8#%q*WI z>%}JWfsJU=t~;6-a2GncAUKYj>Zo|uAd5RdqJSW72tiNbX#6j}i243rYQgs`1#qVY zhDt}p>G`4mLZ7wKvTMeM0YMEAHHxWyT#uH{6?}|bOrT+^BHw5E<6}EeCor29q4A+q(9W#Q zuQqrCZKE%-yF%l!O@HDBvd(Hlb%{Zqqm>En-bqFDJH9&`QM(cZNYsvTM2|_G_h8Lh zH)JWq8k4kvCk&AT&MJFJ)Br!=ZG`%qWV#Bj9uOGeSwuV0!G`$v2%{QlH*W5_{*I{_He#|FLbX?Yf zWwRF?6g>vlg(el$Q5#+lsGCYAB64FSFSF!BL%MdG4i-(A#;%Umx@DBLUoRN~bpkK7 zvu!v@_()67NZH4l2dDeHRKE4pSb!?OJ}7q&k_rN-kmtUsFwf0||F|%*yHR1Q5yzBo z#%ZAc0p_bl9g^sTlEqJ+UQY&KxyKjIzygP(7aQrS1KC$;Mi(*0)F98fb1VATtcD`U zYNA*r*Qqa&*_V~g`VN5&f3vf*+?U*M;BJl(VCwfLeIaiD+sv8~Q-8}OcQ)_mXc5MU zGHX2*uRhk{cDt?={Nl^&y;ulb$X?w5rYyRY-d@Ryt@NIZq*@{35H*M+kEa_^E?rF6- zqw9AsgxQ^jdfIxk@fooQ#uz3t)N->(m+I6!#ML`zf-im-m|#>&aWOM z6Kgm8iqMi^{TdNPn935_4|Kkbvo)= zNkA3J^kYe(ibrq+_wR_Ex-I}KYtXED8?iXG$s;wBp85=E%8XtqtJc3L`F_7|HakK=~!Hm>q5iNg(~N~ zFR$_J|H0GnXm-XQ;52u9G$?1o^(WX>#Gtv3BVpEJ>#@?oFpGRUamk7mSiz>D7P`+%SE-QeWmOGB!Q&wl79M(Z*`Uv8}?r&G_ zpV$<$3g^}HHV-QENA!P>Sml*;na10&5{~6yVix`eaIg9@P$`NNWApjZWK7Sn_;voB z>bd+@4hnRSTuQ*#7Gs$cw*AS2~eYc75w$Mzy{Np&S+)5zIX$xvB>FTSs~2#_oT zrG$;t{M6$9uSE;BoSe-z(M_xknlqQ(`UX)_2W8~PZ@!02cSGX!Mjv#;ZCGcq^l>qS@Z+SnR3C<{=l%Ro-GG_a%$e_L40*wh7^Bpj% z285P!Ldm-`=BLVob@!DjQ^^eC{)F#OKTUr$z`bAkb!+h0%F3#gj}3zxr*G#-*n3x3 zwTzS93l$z=m>AX)a{Evqj;r2o%+4Q)G)+_HRnVK4e72ugC9mSAhizj}@)&+aWs5FYuA!Fx^WXLH5xclLt1*tmrK1}yWb5&<87 zEYPnzGgkHY=i-}-0VFOdba$$plvBq0lfzWI()A@_P-yOW)-i`ZjI9xMHq2>bV{?FM ziTJO+U8Rcq77GM4*0n1Cif>qq6YE#HFi#NjFx$o9|8vf_cp~mg+h4*>ot% zE1>4NzR+FtVX6W-l#o_XCitqMDsxF|hC`#obD(a9$zA(xB2tvTp%+4(jz$>A{q&l_T^YHl0)a=!unJi>uR*E5SinySh1l&iEGAl6o1iSz*# z9$V4Ym2_?$HaR>Eq-y8-bZ_g3EqXFi)>agVGIS$cb5=uRcO_pf_5 zkQ*sp<0lWWYx1WQ7u+aOI>TT8G6b9vSH6dguat1BGDTPQLr>#DjlDAsTdxKs0S>=f zv3iTT-S0L|l~jvCeIBB>wYts`lt9LpndzYAO}A^n6@+T^tTu4J$kD2$_+t84kjGb* zE6Tw7^WAh>MpR~73PRXez?XLCcBA*MqB!@p{_p)v>Pa{kSF|g~jJtG05j&^Z)DMZN zFGpD~USd(I?i0ECIXio4Li(8q*rh3D@hRuqCMG7dvFzFMu_KHv7Om_beHl-q`yHpC$$ie0_2X?KCVzBMWwm|$wT=$O9W0Lu=_h5mY%F9K9eR2FQCQf zYp>uh>Zm8vq~C9z$B3}rp*gCc@XT&Wc_7CzsR(jKJfrkyR79T3>=y;c>6}z)ZWQS< z_vSKHH;cL?g8}mnGjkm?eg1Vlk|!JW+|KwqS*0wY#weMqd9Ql@;qyD%{h73?tmY=s z8@EuY*+89kySv$$IsbQ+?+w-$zmyAfGSk<8n-Q7E(_tRJ=CAB=?B1(RIN!sYnRL1> z_akX|gCG|ot~V!IJio&qjz-m*^Z9>5b*Ezn1O^^`3&r^27k#zG?CsTePPD=yo~JehEcOOzDL)lWlW*lqS-4Q+?JAr z?dPFM7JXL-6Al~B*JdG(fBx8wG4~jqU%yH`dVtMt&c(EM%b1^r+{ymK3^^Jsy6Km^ zuX7GMuUK;`wVWi-hY8XBubr+BbHoOIJM#be z?Nq~$RS8t_Sj`ftw4N&vY;&?>vqzGBRwdx7V!=L5``?v6#UN1a5PI{e@HxQJGc{J- zVPRkt-beM6_V5~jmqUxw(9j9NDUsD7b}`a}(Xz2EfY<=gJ9k7O z{}UUCDlIJqEnUt41;k__9-e`7)lx2wX;20v949$ouoP#DkLuzn58kk`FE+Z#`yH)H z`^w%MmXj&s`3eJt0JH`9Q_*b4sj^gE)G2MH$|uxsX4!xSg$Nu#-GWwco2i4T*a(nY-2!fVNexS;{i{`PE8$FbaX4`QWM3T+JG2LAlSrs(bhq zwk_;iMk$u^4#P*DHJf_iw-t>YF5EHpwuxnypm z=8baG`35p0@=DP}CiQlpW_}3GY^35vfQPC0jbS!@NKp0!^-E*H!#C*{eJ5SY0Ecg9 za_{j?+E6><6sQEa*14~B0Z`3JAe zaK;;;i!Vf}%Ys}=kkR`4&gk;9{A4ECFM1`afQ>tk7otGi=9s~qu1Msl{Q@VI9m^|8HFQ1A})(+UJooyU6OC=Wql-x9LXA`7$zCN!U3U4eh7E1H`t3~H!nDDB^t>> z^MTU;4zZ@Z$49}Is35W`E+exn&8h$J)eC&Jw#GJK<*#>x3 z0NntA#F2(*G9#Wh8!Wg6Dz<^N&h);ngzV!#n{Y!Ng(q1Y`tEtGp&Edg9;KF%452y8|Ii^T)}-3? zezRkz=YoUT)6)|fiPhA->Z&=9RU39}FxUl|xvS+{36#$_$Xtif!e>7Q482}2#Ai*5;T1c_3 zJ->Dt&Fggv!kpkt@~hY-?+4W@Z+j-J2)v3(W4miqrFC1A?sn z)2|`70p8w!((}Vu>L0usH_CAGlO3oxYLoLjVgX(5BjaL#sJ|=~kx$^(cWQH4(mA(V zGXt>CGTA~8xaL<$vIRF*T0Afl0-PeKa7%iRYnOr8a~*GPF{huv;8uw6VB;oznB%DD z`S;gTEkW$DTAcJWLRd|t@|a@|@2ekQ{^G8S3e%Lg1YbAFa?#|}?P-DAC4(a&=Cf}M zZP7^QdUCt_U&ZXr<*6`yAv+F@X5;G>Hbc+-g8MRf_Uq0tbOy;+wmbxMDDLiWb5V_0 zeBSPFFF$=F=4tTUzW^8;XySR|&NSugwQ(f(6$gtL+<&XmU1p<>|h!YL43x7*Xc{0DqT5teN^@V>Znx z4i?sMuGA?wzcb6KO*qlt#4Bfv)_Qrx@?9RqwQ|rAiuUcr5Yc(=jt#B))^7}`ad z(zNZr`mH8G^%i*X<3lM+!!(KU*NBy5S zkgAph)p%=SNgQxRMASG4V)&d?+x6fM#zW zYCpAs77}qy`uCm8{2Z@T!2VpuM}t~AYxJEH;9O1vwq(&B6nM5@o26R!yIS`5Q`o3e z?FWzv^j-Gf0V)Ov!2}u_8d|6A7{;@%Q32WPdObl1D5QN#l2aHADD|_mkK@s>$R4%b zMQ+(=4t-EMI;q>3pMIP)Nvh{(M~^U_9WN}p3BO@$LaXQ7g98Cq@!B44b(t5@Olu{Q zY5aQl-4!l*hw~u&_WB%@;IAOj2prQd!PgR|Rv2#=Eo!Y*fcIqD>==>T_=Dx;mHZZW z0i08ZMh?FW@Z+;2M(MgSND!!{d$ZNaKIc#6wd;gi&!9{p;0I3nhTlX41|y3L1?mu; zs2!lt(U_&xKlhTThHU`+ZU^BcjzB75X~lN6F>7-m?%r;u>%0|n1VIg&dX8k`%e8D; zTCjz3(|`wVKbZEiM~EPr!s6bdMiF=U>Oq@KInA4H%5eg)S$l}ncp<-|9vHyRvI|5- zW=YzAm5U!e^{XKIMCMP;_pH*Sej9;Js4lv>|M2xMI6>d+S{#G_fj==7k)0@5lXGAv z+}{-38x&fGXI4C0ZrhR)IuUz<0@*Wk>~3Ox>lbaw3o%|DW+1JmSnq$jv%!Mwv&v|m zK5^;`;ysxJ(wB!0{}L6_e#v53XdX_|_WnDoiNJ-VyHo3G$UkWWF__98!wVtE!->ue zGa%H?^i`j=O#P*82Q|k5*A2mnnaLv2UWMrj@aH#Kte5Pyk(oiYzjAx1=u$_&n_RNyiinB{IGuZ^Q+g+==k_JX!;X& ze|9IJChB$aa@uA1P(JjJ#MhB1agX53a3A?K?6bZ70@Ql}$U=_<&Z{Vey0HnP~Q>rxg?>HwE<7eu6kFARfUV^8>9o zx7U^sITv;tOBAh~%}LIp92+=+o!gIU^yvn%>DfHXwISUBmE^bHpj}z>`oyLR z0gqsFAeE9!YZV;xsX2&AXR%;hbQm&4%J=RD1krM6$pHrM< zeW(vNF&p+Nrn#%~OZy zUuS0*mPRslbg==SS07j=PX4a5pMNYgI#0-+amq3&3RFCJ-rxWX+Mjpx_65S%=__nG zz^}9X4Ui=0bANDOxNL&t7O>?=nJpVZyE5|{-g57Jvi2Wxj5vu=@@($dW_akB*4LUQ zL+%I2cJ~R4*BMott7n1ka(h~Ef3q4v%EO)HC5=>i#ZI|eu@9kn3Z&S=RhH|vKaIYy z4RKvqE(tj?K;7FDC7K;qzxbvxv!Y)YS;Dw?OgZM7f~6^nfRAsC*B2*jdFhAsRCy7g zm}aLR0r$!B)&=VSxPvv53wb=cLC{W~Z}xkg0y(IbuuYi+c0^O3OFWf88n;gVzi`hm zQPTPA-Ek|BpHudtPY>4kChq)SSAy_9u%z=}LLYj^_SS2+F}y}-Y!QegVO_ z+T=i#nXvZWP~4IkDRu;klBYIw65N~27ItXXb8n)bxG{=Xe}IJ z$c0)j+_&svV%}SyGQlzgfp!jP+ZcXYXS{6i?cdop3NPVGK)0;7z6G4KrLcA~h&iNy z0tVbj(N(~+9Kxur^)Jw3ruj|kRxy>mdZbz9KrPCa-XQBgWs6D1#2CGxSxcC#{m9$K zX9o+$Tn0cnMt3fysZd43P9h#or@c*&v0Ea<89q2Ndsb@J#5SfE-Z%aa-%1na{M&>MRG1AvH9s+Mmw%b48i;GJ7LY83wyz-uUu<jILM{x9fiUc;RxkVQ=k-3s2#8u|bWR55k^J2;DNcV^`ICYq%dUpWa-Ffk ze|qa2Q@LhVEdWM6=Y3D!4U>?I!CAh<(@Ck@997>&V1nLRQ?SVyUCe>!nn*99n3ut4 zkwj(w$&eRAGCtDbrA51C9XUC9w)7P{@U{USQCzb8u54BOV1lM%%Tlf3A4Ua9x7sFv z`HL)T6w_p9RN<+I>CiCOG-3 z0?zEw?bpA*4rGA9%G&}C1DGE@pINOZc7F6J(0kXiv_>WTL!Sm*&jNM+a2BR}j+<6e zt~I{8{qpej-fCjQpI4U*sJ$Y~@tFatYfW+n)#wxV!IclV%O_e=UDo#yiSTz?$*!xq za6C`+uL1^TL=#dEuV}6xk#t7Zh+#w{#YMfl;SSQZecajjSf+ZK^ zQ~y}~D=Etwh-Qs>TiU$drPhd4xPvw(GDVb+DaLozfRIKIA`xUfPO4zImhH!*l**l* z(Ol}?}t554BUFm1AJdB;`qaphMH4 zYgu@w+^K+)5XE94llq!kcubr4710k6_!Pv#dJJ<2RX2NoNsgALt4~T2QY-<^B?w)6AzqB{e}n2J-o}A-y5) z1lPBW#qz2N8f2+@6%dI_ruPUG3oQZ>K}gGsXyCkJSNpyEEkPJY_>=kX80rl#ltBX9 zW&uysj{8_a6Xx=VQagT#MfV6^Nu?nMtlLeI=n-!KRBvWG?xIvtyhrR%^qpb}85yYj z%ctHuN#pASEW_CnX9k2suhQ_Ul6x#_EYUYsxs2u5rx*!$+=ri}%IF$x$~2G&N9EwRz7tZZs2=MU8Juv_^Z8!`U`CO3t3J|2IPG{`2i)C=PEa@|I18CI zd;q}}4id4?)xUQNYAH|fenpDKZy6w7=jdGWL9|Pa=}*_6eLdf2)fFvE_s^jna+#^5 z3t!L#vsbYn(|yM^K4kHm)KmOtv$5Un(G9`?hD`B8>Dz*b_1r%XQe-l`+ z31q`h^hzcC7>HTw?+aEp-iCr~*7RC=tYG?jL)G2+3hspRUyaE~ zlInB>oos-Z2E7m-0ZG@WusTsbj{@~`EYuS*g(3_e>^V%!Gh=LNOME5+ZaVibjmcLo z1Vour0vjwd6MRX;i&6J(2BOlOyO1&)C=QAoNPFQ|Amm*^Cy{PlF(*KQmE0XA98&qV zZ+hXo)KAaEdM|>0IuF^Pm`oUZvD0bR$iYH$w~#TlJr0RPF4?}%Zd9^vuef&b!GgFp z3DE#LTD?71maFLwjmwBxTR1_qgR1wIo;H}Cd4lw?*3O-Q>sy~Phu#RUXaCs!@l|r7 z{psE_rj4MBqw+|s{ZfGQBIWj(c~?LPsFJ*P$Zo-nnl%N~f^=LPbn^uy6@Y`rzz*n*yUK2a9yBMVlA;bhW3tk<&(;{5pb~zhda!D)nQh~ zwZ<^$7Vg7J^8Zuc?}YCIoyLp(0a?UXtKyK{VUN`*UmYzN004MwboI((F+<8=IXAQ#ZW z?2$W>{RMFT3yN18JP?{k=U_5w%`#Un#Q>CUktco8H4^C_OJGJvW#)q(reqmGPFD^Z zalgXSGtadfYz`_xZfu*Uj!^qX9*CksACj)t#}F_1Wc_^tyJ}KlDd4PNS_#F{s^Ai4 zmelBOxCMI%>Os##yJ&o?)6y8+^FuF)r4me$iiiyjy=N7IsmS!vssISn<~r{6FvM6wkSzvTm_nbI}g|6-6z0pYL zPIqkSWR_}xiMU5V4UfD_I})Rp9Ophv44c#&b4b3di)P?pS@r1A%}C#%-OqN-Gqr4N zS_4`l>oGfCN)u2j-0KR%i^_Bg@?qN3oESE&b7OxQIzon{UzJtw(2m=Uf_El$Oy^v_ zgrte+|BM$0B66+Nj8E|KyNJ4}v;ar#>gvjlnvWX*~^LBh7N=64KE2WtO5Sf-macVw1F)3x0L5wP^FszFIF%@m8 zInz(0@gEcR#_jd(<19e|lTRGN-++P^iMeAhhc}W-PG{8(QeDx+*AfaXB1&jH=?%Jed4Igaxv)ArZ6N%r@{6!z2 zhmXb4ydO&?2_6xFO}&5oW}Vv)gY6a!Pb;IX$;$|A;wcI9636y_@Kihqz1s<8D?MTc z_$HqDZGtD9>mf7T@81+*LFk>-dR#`gh`Ur7R|aJpBv%QCr2Er;)>yvmkTnGQUXkn3 zyzb-m9GF!X7*qYoCVca^I#j@{6xL7mOuy1tn1oIF(YEzG57Y0i5RyJBEudn|KbmZ% zq75jPgNOCDB z_2WDQX;#DDUt|Pebd^EGd)FvO)JDpMFv@U(-!raw*shvVyU%KOE5{w{ncy-Og+g-Sux|ByCA5`v{*1} zrP4&yTYymmiZ%J=@2|VD`x{cO$Ye`PTLOf{k6I=EmC?>5E0`m|HVe&eK&MAn_5rEM z)Y(WiTY_#1(Y)cI`p({zZDU$Dx*{NR@xRL%QnD z4^~#nTup;0!mT4}xLephVK>*3zJT}EJEkT^kKn5Y z(9_kD6UhsNNl9wKw>xCN%6pi@& zk+q9f%+K{FGikcW`Hh#OI!KT2z1~1S3%a}UC(v8VFW5{>+!9!$CD(b@RlgjG#s?6R z4;6!i3uMu%<8al@$H&!2Yg(y=YyhdjT>uZc2leEw9&xH4r zNG(;-rgtqMLT~899LjP+0)@k5WO6^KbA+!@zt7#45XP{__*fw?J_X0;KX7OIo&G#`Dt;jNnu?4sH=F0h7r;%psjh z&?p5P?f(X7MaYs|aV<#b__O~!vWO%j6s#A&(=RR2ecR}HHB|K z+M4nMap5_JAK+UvlDj(No>d>;l-SJS*D+0XO&^n&SvujAayFVayY{NpgkJX=21TYM z&d>>4V?EQvua32&Ks&|AqJu)A)YQE!T8Um(b7k5vy=ZGEHaV|6xCh2Tl&Ri8da)aD zv*M8IY{Qw0R_+*G#k~n0kJ@lLw*L)U`q278`_s@daaQG;Bz$EpEKz5Vz+Q=X$QnX1 z73*?#F_2*AhfBi5l3~@5`@6=K;{s^^JghE2)anFBPuS&?uKWkG(G+9G61~R^Cm8Wq z!T+bd@BZhy|Nm_uGb7ouXUHgukUdf;GBPt$Rz=7jrDRJ=$tojdhisw9Ohd>PQf85T z?(ge5-`lyJb8hDk_@3M6`r*>$diQ?6-mlm5`55=d{eFMGNy0+WI+iiY|45itf|pk0 z!Gi8%S+&FJI{R8)@YRIert8lsqNAfZ-KZTtnZ#zY;~<};O}ZIPJnIoB)e?!f-qnPp zcCzqMS;3gYs_4Wx*9E?MisI()1y&Y9X*@e0OGBy@>KZ4za{;r+&k;s==TT4jP(N9cs91J`XH0zGKQVcD_ zdAFLxCH>g@FC1>oDV-x7q#1Z=6-aDDa{OpYer=Gu^YfP@m_x=n;MQ3GDbr2iA(#&OQ{W&ii_MG8o0nD^TvHD4f^4N30?xUd+AZ_{tHQ&GGIl6Rqtj^2ur0PpPaQNKF69 zG!)Mvb{0!&YLFBCdUc65@0;nUoPqw7sy_eIod*k-^KQ8t?{*8C-c_BqFa!P(dC22m z{bkfg9s_QOOI)fx`sz<6ZROrsJ}-4~4X4vwh&^NT?aaX$Bw1&oioNpkAA3DQg3cuA z3oY5*8O+qw#F}lj#rw*Gf<;JzjU0hB)PGk-W99$ zc=i>^J0+8NtYtFUtyN^kZw5B8M?jD6Wr$u5>@l@jucuJ`KXy(HbnjL^E?#&uTD z_f^|*6-T5jiejtAr!7R!hzo@V+Fn=h|o7Mt`*RIT+%rr?_Bj{l_CIa56v;Fm~m5lq6O(b!8%$O>{6(uk6oLh znKZBOaDHyyO5wqpOxU{wFO+IKN!&1ZzPZc-xk8# zoe>YX+1uM29v+T?V6#`iZNn-yII=`6$X;kYrCO0oVPi=MJmIfI7oQNq7Cb zGWmDvF|sfV-#N7(psK0n;$I(*GG)@=bz=wPEmM~8UijTWI5=)OQUArOSpW~;)XP2U zfV`}ALnvl7kgEA3KP0?MR_!Ac&ZzTqK{R`NnjP$gzcy3RU??nnB8zPnw+mLy!MHnG zacgP=^Z)&AP$;i}jeem^&yaLsbXac4Z{?fA6Tfo>R`pObwcrgi@e_ns4JQX&3wky_ z?S#}!rz5%*`C&8{NhmUz1YTjproZ>r@)5y}Tq}e)qiXd(f!#aBTO%f0*UynI$RPtX zLg?WAr>fp>T#5Ua#GUP3yVOB)f{hF2#8<8Plry>f^?5ua@1@%#N|$ZF<#;?d6<{b1 zHCbj8#BVgTwC=QG(*c|L+m=7K-y4a+-R2iw`B%S47{BZ3*rsLV5%12<&W0z2y1Kg0 zu9^!qTe>0J$=2#Vwq(Hs$XD^^O@)c`nPAiaT9I#|*rh?b@HS=-SsCZ~{V(e%J^mqb zX$@jbMNCY*ItXVe8s$tXn3RMDqu$u++201aubki7waRBXU=DIM9^7LR7ZWpIRl6r6 z!0-g&^%r9@hqh(B!wCQT11XG&o}GRSo+aLhR3;5XEW&GMRS4|J|NQ)KbsuCF;GzZV ztI@JLV!hGlH@=OWrW#s*o3;_zN5vJ2%|1IuyZVrkE7U6l1lI<3FGaukn1qCcc?uYA zS*~;*C|By7JUxg)Q!QGh;#1A?d9F}#@bTRCd0q7K`U|)PytOI}9WXu}s=o2XXyvGd zVf^v?ilyT%4Oxqi5<7F&^u4hK1bgbzJ^2J#92)W}Nm(fx|V+QseaJZ{*&k6xuXm;HA7UE*u3b zMdu|SFYnP(^nJe&Qi667`>f3Rfjz>?#k{q9&9bYvum5~jjL|klYO52Kt0HzO_FMR2 zDxr8I$={%D2pi@aAh-dp!wl>qF0(4#9E5^%>8iKu>gr%~Va%AiiTh)7;ljo~QOWQt z9~3KwYKi<8b9aherg=H1=;by!`>ipP_mVdXbb#1hb%Sdv!{Jd;&ps!vr8mN33&952 zQuh;4UZSZO=%_23D?=EHTEqK;-c&R_vfq~Ib64plBk3%Md<&>K?6Tp1c9u2o(Q-+N z7`+87x=gbgpFq23{9>+}qhwNgBxiL+akzSWOtK0{Kc23XRoe4BVtI_Xhq>Yh1i;U_kFGb9ulE7X;EG zYWXK5jloAOqC#&;9b)za00g<0Z5?>Q7^tlO`1CxniFOZG7;aXwtcP%^8JmJHll(&R znVYjZj97MbbkNx4k?rFbZ$L<<!>$GDj}k2ieTh8>?OX^@Ja+YBkpV7qrUlhx0`C6g{H5?IYaVHOYck@zi^PJ z=1@~t@4F_LnVQP^aRgTwqcA{`8@685uc{$tS+g-8%R|5Q-I<*0%zp6GKOBwP@&+b^tQjsdx`sAj1sy?RdRwXav_25Bm;w9 zvHhtJRet2b22NOKHNLA!5hPszKFIZ@KPvnwCO@dE_*njiC$_`y_8(#OCeF|=>#^n$ zW-%hSo4_p_!3GMb0D6!mfE^W!r7pQulEg(NIjW>ZI-(H=O9mA6_ z`7SoZBMR$ajk>4*)unal<5TS&nQ3X2k_iB#U4EAXbf@62^&%X9fMF5twTH?B_d}TT z@YEElISTP|mR&491ZHM$fwfM%OFle}tiNCm=z_dODA@@B3D9_0|of zf>A>*z;$MvOZm@ zO1$=mTVZl`{b#TKGacq4S2wo;Atr6jA5c;yANQ8zxi&Y*z8VKPa*4i~*#P1dMA(UP z*Iim^ca|t#pEbi?)%ry+mx7w@LO6|t!|VX7jB7e83X)dU>7Fdh5=Yv|ClC8x#C%1K z82+2kq+i*i6ms{3N@{gE@i?vZByiKqAY+wkX=!OPgm%EACwfp>_}5@{B^IL~lXPfh z&DE6-fQq!tBL1M-VZ5NMzqvUVpz$(|@U$DM-QGX(TV|Gf1@%-Qgp`D7` zRbYJOdA{vnSGz+$()?9xb`1oGvF7MWl8RHWh+E>gR7h-385{TFI+-8Y6;rNrYLhPH zqGE3#j`<5K#95yJ1x8CX>zJ)yGY39+Le@Ol_TVa*YsVkx=)Blemr%AI+VVr^huP%} z_Jh_&iE2H#5E!bGpQ`VQ+bMT#ia;H<=RMEkLc^y?zRqmn6L#xXhA^Q5f8~7sjKUQs zFsvz$LO!y%wz6Ni3IvOA;m|O@fkhGaeHz4c2b6ANBl+yrU-oZlr@u)tGk)OJCIN6s0Z0?q?_ON2S5VEJh>m z6>3sV?$>TvB8R-1@6O8m*dpV>FYVef@WC^hBa3ZYKID2lza7tCWaQA1V&^t{pLH5# zdCGt{yi$7eEftAq6#5<$@mwP3uAAP zU10xl1)BNK`IZ4oi2|jHf2Zql@!&Ki14;x>1+UA(S|!x}Za^6Hd9Nvv_-${ljN^;s z!%lIwa;|1Z(JF8=+tt`O$!`X`n{SX#B|)Dc^bk(}9&jy(Gr^ zrD*Gq&gJitP%Ap@>dL&Q`^4poeI-KXz`WFl*p6LE)sJBZi}M$f8G1>5(ZimN3|Dg9 zUFoG%lT%|Rv=p$@X!^=|0}MvSDKPJnho z&)LYIZbaVww~8VSuB($kuil`)SzG1xcWNX$O)+jAxInpm`$Lu^P6=Y>K1d^3<_T9zk#iQ3}+2}^_6hKl?J(lLL$2#tBK%Bo5+(}lMz0+_0>TZTNkn0~9 zdmEi^T*w{5V+p8>0qYTbbv!pJ&~*Wu?+E!N!6$NtQk8~#3-c12 zNoij-NoB7X6?Llg78Y8(gvz4rOu8!BY*>xv!B@M? z!xGovY!=Hu+4*F$Mo%0iP-JAp(?e%$ewG&|=sY?an`0szHvzMUwi=YQNQR-eZUG6p zff;@ z#8QlbNMTZVm7E7=UC{#?{zh@EcM38e`T{dUVOi((e;U?t}pW+tC=aWcW_l zD#6&WH?5%g6idLpV^>imWqGA7+~V*zM*1Eew))@;Y~t!f>!)I)L+cga5G{0)#CJM3 zl44K{e?BvO26iY~5D(jZw+CwK;ITz}wJ-^wL)uAj6+?Hqo!c^?vC!lo+Cy=|A(a=t z1)crW3V#E;F@XllAoPkdA9@jPad9^!yQu=G8g4al+I0yISYZ>*e9VE(QA}W9;CIo7 zS)hZVb_`F!VuWGGSt`oe)sB!viCd6ozO^TaS!>i_$``d)Q}T!&%@?xCoY`%K!_qY)O6s{ ztl9i795m`gGzyxr+~GG7#}wzc_LrmLBqDd#T-AfSGth*u*L6R30Gq4{4?zl)!3YjX zjZ*oHCF(xVW9|^lQ%HBk$;R{Z@}{ckoz$sU)oFi+hDcRcoPO=51=HeA7`}F=e!EnAq90Nz>7T+{AYVtPKl)A z#$YlL4%a8(FA$cH>XnQzwB9@PwgEM_fFIjLNR34OHD51Sn8mFamKpm60D$2!0c|nSwpC8p?x&a!wZzzy?JD#;C=MR-z z52eI3OuIa(DY^XhijLJVIB^deRNtJHAXeG^@Yg^^alrQ0HQQd)?BWzfsYstUR(_3n zmYZlh)(vAKZ0o#dFB_>Gee)RtAzzQ}zySpa|Ij&k&I~#aZg}@!zpUZ<_}C5pSx+-# zVjQ+`8+!_E zf^&B|F}uE3=t)_HN$D_}LpupKib&|#=x7rLcSr;rS@Q0qL{4vhhboyyMn?;9^aQFN zfL>9NY{qTov*?wpj*f!PQ||+L$MD>xNF%%V$hZua7+Y05x$>G#-X~!vEtN!J;h^>L zuE1G@6^FwNSCn_V3(xue~)6Ie%mrmS1VwEFP6;M8hLFLNq`qqAz zWEK;Z6%04Uk6c$0E#i@uUPhL@rpqrWsL?6GSq)j31 zk|>=<<=7@Gxl7L8P&wR)fPK!^eON9o=yNFb_8*#@e-tI8VB{2U&&VJ8*9P6f2*2hV zpv5|i{J-7qU;cMJkcp?CQ{$r~Rr1Hb{c14!(WG4mnYN&J$F-C` zhqgb-UTbTSlqqmI`I66Pk=MoXyp*Jd`_SEa+cax)FTbMCxhV>%_p{ECaarvDKb_?N z^WQ);L*4!_hyDL9_eD$Ve_kmo{PE8|!+He*+hDlS>>y4k6C`YI&P5VHTh)i~;_=Uh zP5M+c0dWVy0KL+N^C5S__oulC8}uZ=^Pis^%}qb4uYxf*^3J7$1b{cz-to&TbLib7 z00O|#8H^+WKE4Mo-a7U4&|yb1K7?C6jdGQ#P9h>2L1QhLg!sY7&;QV6)v(?dq6ESy zXnKP1W?WE9o50Jy5SZP^Jd>*!k?3xl6GZN3c2fWIf)6|RPXhGWXd6;%g|1LfFXq3# zLH$alW}5E0c_yUcp3v@iZfX*)otr99q}#G&AK{CvYwBo!tQF=Yywm-(fUo+57yP#Z zWdC!$|J(BlH)=s!Z~)GeH9rgj>(5@?_{h3SJ-^X(y!IUF2suhduX`~X`{L;~w{^9( zwGC-)xLa2E)wHT(E$Ka@?;Urb?&&xaMian9K+VL2p4yzzrG7g24rd<_P)DyLG3)#G z?aRlu00*!7#`5e&7&LZElbr&*ynp+uN$;-uY6ZnVf$S4xG!&qv)Lbb;gCnavQXero z1nHoC_%xeD%Fu$E_m<;nXJ6mrD_&^V&)M;vz9;%;gP6LuqUCgc*5ZaKm#PzHZH>=^ z4153s;_LumMJ20YDAMt^eo$iohx~~16;@5R8WmIq83loKevL zi72AWDl`ww>L2?n>|d`v)jj9K7)R-25H}`Th!HxE{(*`tLd4+SU3)V6CiCC52L3uqt(RC{3&-|kJ?fuE>&T) z+Kum<=~y2eSzMd|8t1#%B7m>~G}0Hb0laF1Dz61#gs@=pK^fD2zU+Vx>v>tCxg83R z=q4L>zU6n2BG$G;2~ODlaCe@Vx{Ib!#_8h}0B+Po#my~iYqh7&5ii@wY9`__!xC12 zlXDoy7$m^=ybAa!<<@gYuhBiHQrOx#oSu9dZV}$5+rDIj8Vz;rY~PC+v{(V!f2X07 z?xlJD8l^k1CBjK1S)RY3IXtM-9KSpG?B9>VL-%M#`CuN1Z*)eEdl)1Uf|K5R%dOzd zB$Vyw=K&ze!U+~)0o%@$YN+m(zIR67xszTP&lAgDSXj6+H&j-()%6`anOp+Lz^SU|e1I{VIizEKoDabdRA|FK5yt|J84up{&WLnjhI9Q1oa~-AluI_c| zOJ0x5qu3XXxPQeq3kwUKK03dObUA%yP2_sgR`_^7)BG-P`RY$06(ds0i z*2H5*!Sy9qGZ8}Resr_b-URIOkR?CI*$&5YvDYJi7sdeCe+6!eBMNf({L+np76L6@ zg?x;fS+dc8W1@{E1^?W~tZ46%I(ig3}&GbK+)|*ci{uOWq$~Q^COzp4WAhEQ3MVKoEPa3J%E;!tun2 zf>e~0B9I)#1^02Q-MRLwZ@>H%A<3dkWiEHO!DfUs#UHQ|P*3AV zrEH65C85?)&h3@>J}TDblowh7(4+b2HMBm|5g2NPeb$Mey?!kL>^n6-&$_u<2KDT)Wnc z^{?6X5gUQdj^JCqI0M`_KjyZ;Dem1;ds)JiFb_KW((D)u2h8;Vl92A@B|XOE9aO{> z!E@9K(Twc&ZGsWKZOq^4lcMo)m}$Lib3(^*7;Pm1t^_lFg8*@zv)cKN)a8e=Y9lt@ z#k;{uP6hV#l+$ecuPlyh88ABCHC;=mq!Fu<6fy|_luyW5qLSs`Nsw{?Qg-Kl%6)Zd zD5^WxDF3wMg+Uw{fddQBzZPiP1GIC86@7UG_~YMQ1J+r4+~1Ru8nE!4i^#P4O7Kvm z6~w{@#-b3RIx8->-m(iAQOIH2`+D}5`ArM#UzpmpCLVFWy6~Y1$wHiQz0(muwL{s1 z$6|R`u{QEVVWtr-u*~3|h{yt4BN`z_D#bbZ1MVjHEBf4~;p(OZYp8V(WGFA?&iA8~itx zv6Ll*q#(yid=wcBjy91=qFGd6FBJY#U^3oK*Z|6le6z={;9?K|#~pX-YlglS+U$8F zDRdS|_Yz@k?W9v|k1?~ou1aD$()#Hj1*2%L+0)i9mI3lM>hm~hAiNlnL-HcQ{OF~b z)-y{83C3(Y9zD47`zu1;ElPIazUR&;Tv~RCbG`2sdFRdr!_t|L7G?hI2MeE^!iPJ+ zc?i9GkfS5)xGxY+YJf^$LM+A-DSMTWn`TXLc)*N?C|7L<&QTez-`&S^3N{(+nM~yN z7#v+DEz^;5+368BW&Ii`ed_U~*}gwB5Zm>7r!+mPxY{Mt7BQ&2RQN!|swIvuoNIOl zJu;v>h!h!j(LQ~*WG8ry8djYnZ?>L@l5w3OLXl)4o!GpwzYXP1ybzNu`Sko)v|bB)1+kx2V<#J`p(zy$s7S#O_;S~7u&TaFk>2vVAdspfW`MXzM!R? zGzv=?>nm0ZRDgGSlwJRptq_&mr-cno&pBcSlOV@bIWc2%dXg6UJSr!A0D@poH^$E zSG+a)g^dJdgL&8W-uV$&(5TUI?fd26*lTe__NS zb`g`?u1TIn@u|m)z?6qY8Wc?YQ;Mlk8?d4tT^?X&X_%y|ohSI%#M0VUp+Tu}l~pJN-z z;vKVfm>io(ohO_}hrC=&y{sa2eRfcZlB)?rfCj3fYO?|X{y;}5oIvM7V66Yy+MIj& z?X~+M0M0fxvHT+b=qz!o4v1Ur`0)au-p}oDS{@o%oO-0TlxEcRnDi7qb^l;M-Hro9 z>ujv7my$Wzc~r^&tq?8iu}>!Bbrmo;=dU=Z{0+NKjBEt3ehu5M=Ips6F2%h@P%oPru2hME8li&2^z;Rjr z+&xkXhMC56zk1zmYX6Q>EY40GH0lz>!UHQ5zD)N(YyJXA4+m1%uFJ9(58YW7N&=~6 z?I6>+a3>|TG+~g;T5_4bDhy+4ae(|LQFO3%&fydFNfs5DV6Qy`z#A3pJ^q!qQ>>5+ z3r|^ny!9TzN+Mg(eliO4<9B9)Ooz!Q==(Z9Jk+sv#*kaBp7Uo6Psvb~-O{%k2TJMp zu@?KSdv@yLKrScpXP6mdu`l|@jT@dsr7mWWt%sa8^ZEHL&*`p08-f(1jZ5X$<$)53 z#VfYJi7U%+azt~!d8M>$+|k=+Dz9;%TOsdFmcx!T>9?q?*&brv+TZYe8lA=+z}2YB zE$e$-&tmf2ntK;jM{Lr9LJ<$0Eiy-V9B2Va{N9Kxig%6GMB zb5V+Yny%=GEy|Eg>&5IP(GM`UiRR|o6TjH48_udx9~0Qpm|_`dTF6HBDchZggexG! zgGS}<=ckwMyDs@fgmOn5I$!gMEt1V1Bwlq%e^Pa zT6h0x4qQIlw#-G|YhJZ7cw?#74SKe4Kw11tE;;T{5{ z>HOXivk%~OwbF1`BuUgxXEt`$QM)txH-hLX{ga`#)F#Jf2Iz{yCYzcUZFiTs7EU2Ka%wz z%!Lu18uVK>!Pqbbl_(}nrJDhi%c8mDhtkf-0S0k1NT{0C;|9NpysxjMd?SsDR#*#9 z)7x!pwoe7|kc&!68HM{PMQ??W+Yx+~JxL!cx8H6enZAc-Att4S=VkMD?>WO)W?u<0 zx8mK9V^m-14AQ1|Lns;LNg^SGY#Op;-`a~y&z`kEv~P)fip7AaGaf~=Pv_3d3*K02 zD#qjO$zN7;?$5}$5M13+C5Mw~)EgH$w1=i*&RW1Vz`hpfz5Zuz1yl%embl>a<6<>` zMA9i&QI}9s2KIO2U7q z0Woy_&&;jw1a8CCw8UO#UQOH=8rvxWmph^aCPHUK|46qlTrp68I&7esEO8yG!5Cve zGA_Jgak3L~mqPuWJD+_bEw2KH=ifwI>rZlZ;llRLO?~mqCDaOW-B|1>ZcOMrQCd}c z%-n2D`wGGn4o~aehjc%7LiYy%H^J5npGX#7e|k#h`(lDOF%mO;VS3MWeQ^{C+I9fh z!0+$KEd&t$#~8gt{j>l}ZGL`UpjPcpL;^%u3snsYfS)311?At{CeeKVA-nnS0t4g~KPU7!YTz5&kSZsfpo@e`)Yk&${>ZG1m9!F$D zr1&n;SVz*MgL|1JLk-z+Y|U+Kb6^VYvyUsS^7W2`TxDai&T#w6I%RWBgG#&Gp`X?` zH7R>yT3n7XFLV>8+`GqkzLg(JA^vbDQAtTDTsfU@Kf}$L?ThaAa6O zPJ)2c#d}-%<>vlAWT6bHzzAfL*h|wn4jgim$+OH7#Tq!BwW#Y0(dhkB3^wRoi;3cL8Y8JG)oL3#(}T;0YXf?zt8+= zN*V{Ct`)_h9n@0`LA73dY=Bf*R9t)>-GwxJep@*PCoXSabAH5z2_3c(Onlo+x1aWe zL1F*p)Nd??I&Y6qWZc=KoecQaNA}0{*icR4e^Ip$ZWT+6VlgQ#ITY0~Cf#D;``7u{ z12kV^tZi27FRvUbCP?xzFu!BnVQATFo1RrAHW@)__W8VjLm~FN$IO>7c5*mgMQw`8 zi46~|Ud{Z0WN!K%llAon)RKjEX7;LV;`~b}s`a$U;LKg36#4B4%7gs>2s?$yS8(k-J@A!Dm6R%socb6Mhg3v+1Y~p zcDjPrYypph&JdU}5ojI`t`8sl)38Mt?C08@l;5qcp&|F)-pM7j^83Yf_US32b6l#e zgi7OiXu|EoS~uf0HV;u+Qn<3dsSV2Sa3ylf&FdOmGYYCEez{rMfBsERRN3Gzv5iZQ z%XBS{Qc=Q9?Voc+^Be1p78><#=6BB}y>~LH1>H1g?g#VI+Ut!gA$wbL+49JJJ#6TO|<0J<@mvz zlbiS-Vwm#HH)Qdfx+$A#%ExaC98t*Z>)|wUx|W-gS1O#<^>Xuh+!1@CtVWijHht$S zJz3;jU$pjjhGhL2`{uX5)*xtZvqyU)Z6JUx1 z;4%sU0@>&h;mqH jBMSeIpVBbM+TP7ne3hg<#$0s={?Sr9t@={gD)@f@yKH#$ literal 0 HcmV?d00001 diff --git a/references-websites.bib b/references-websites.bib index a469821..b997028 100644 --- a/references-websites.bib +++ b/references-websites.bib @@ -13,3 +13,12 @@ howpublished = {\url{https://orhanergun.net/2017/01/tier-1-tier-2-tier-3-service-providers/}}, note = "[Online; accessed 17-June-2017]" } + +@misc{IPv6Pack77:online, + author = {}, + title = {IPv6 Packet Header Format - System Administration Guide: IP Services}, + howpublished = {\url{http://docs.oracle.com/cd/E23823_01/html/816-4554/ipv6-ref-2.html}}, + month = {}, + year = {}, + note = {(Accessed on 07/23/2017)} +} \ No newline at end of file From cf8fed5cc57f703c6c19026bde81c6fd4de56f33 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 19:06:09 +0200 Subject: [PATCH 15/24] New Acronym: NAT --- acronyms.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/acronyms.tex b/acronyms.tex index 72651b1..61f4d75 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -100,6 +100,7 @@ \newacronym{msg}{msg}{message} \newacronym{mst}{MST}{Multiple Spanning Tree} \newacronym{nac}{NAC}{Network Admission Control} +\newacronym{nat}{NAT}{Network Address Translation} \newacronym{nd}{ND}{Neighbor Discovery} \newacronym{nlri}{NLRI}{Network Layer Reachability Information} \newacronym{nms}{NMS}{Network Management Software} From 18ee98e9cc6b84b3df56fcc23ee8a58847f29860 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 19:06:16 +0200 Subject: [PATCH 16/24] New Acronym: NIC --- acronyms.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/acronyms.tex b/acronyms.tex index 61f4d75..3e83b37 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -102,6 +102,7 @@ \newacronym{nac}{NAC}{Network Admission Control} \newacronym{nat}{NAT}{Network Address Translation} \newacronym{nd}{ND}{Neighbor Discovery} +\newacronym{nic}{NIC}{Network Interface Card} \newacronym{nlri}{NLRI}{Network Layer Reachability Information} \newacronym{nms}{NMS}{Network Management Software} \newacronym{nsa}{NSA}{National Security Agency} From 34ab3e3a2debef14f1f816f2f4b3c2bd3b33ded4 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 19:06:52 +0200 Subject: [PATCH 17/24] Fixes to get document to compile --- chapter/ip.tex | 6 +++--- chapter/layer2.tex | 1 + chapter/layer3.tex | 6 +++--- .../ipv6_address_leading_zeros.png | Bin .../ipv6_header.png} | Bin references-websites.bib | 4 ++-- 6 files changed, 9 insertions(+), 8 deletions(-) rename img/{ipv6 => wikimediacommons}/ipv6_address_leading_zeros.png (100%) rename img/{ipv6/Ipv6_header.png => wikimediacommons/ipv6_header.png} (100%) diff --git a/chapter/ip.tex b/chapter/ip.tex index aae7ecf..6be7eda 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -4,7 +4,7 @@ \gls{ipv6} has recently been defined in an updated \rfc{8200} which obsoletes several of the older \gls{rfc} documents regarding \gls{ipv6}. -\gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation\footnote{This helps limits the size of the Internet's global routing table!}.\cite{wiki:IPv6} +\gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation.\footnote{This helps limits the size of the Internet's global routing table!}\cite{wiki:IPv6} \wikicommons[An illustration of an example IPv6 address with leading zeros in the binary rendering]{ipv6_address_leading_zeros} @@ -35,7 +35,7 @@ Have 3 different forms: \subsection{Packet Headers}\cite{IPv6Pack77:online} -\wikicommons{Ipv6_header} +\wikicommons{ipv6_header} \begin{enumerate} \item \textbf{Version} -- 1-byte field containing '6'. @@ -81,7 +81,7 @@ Have 3 different forms: \begin{itemize} \item Consist of the prefix \texttt{ff02::1:ff00:0/104} for the first 104 bits. \item The last 24 bits represents the target address within the prefix. - \item Solicited-node multicast address is segment only traffic. I.e. the traffic does not flow \textit{between \gls{l3} \gls{ip} segments. + \item Solicited-node multicast address is segment only traffic. I.e. the traffic does not flow \textit{between} \gls{l3} \gls{ip} segments. \item Used in combination with \gls{nd} to replace \glspl{ip4} \gls{arp} functionality. \end{itemize} \end{itemize} diff --git a/chapter/layer2.tex b/chapter/layer2.tex index 84876bc..da6ee4f 100644 --- a/chapter/layer2.tex +++ b/chapter/layer2.tex @@ -17,6 +17,7 @@ Of course you can \textit{disable} \gls{vtp} altogether. Key things to be aware of \textit{before} enabling \gls{vtp} in your environment is to make double sure of only having 1 \gls{vtp} domain. \textbf{If} 2 or more \gls{vtp} domains exists. Be triple sure to separate them! As to avoid having an \gls{vtp} server \gls{db} overridden with data from another \gls{vtp} domain. The three \gls{vtp} modes \textit{operates} as follow + \begin{itemize} \item Transparent \begin{itemize} diff --git a/chapter/layer3.tex b/chapter/layer3.tex index af035a4..e637ddb 100644 --- a/chapter/layer3.tex +++ b/chapter/layer3.tex @@ -12,7 +12,7 @@ \wikicommons{BGP_FSM} The protocol of the internet used since 1994.\cite{wiki:Border_Gateway_Protocol} -Currently based upon \rfc{4271} with updates following in \rcf{6286} \rfc{6608}, \rfc{6793}, \rfc{7606}, \rfc{7607}, \rfc{7705}. +Currently based upon \rfc{4271} with updates following in \rfc{6286} \rfc{6608}, \rfc{6793}, \rfc{7606}, \rfc{7607}, \rfc{7705}. @@ -29,11 +29,11 @@ Currently based upon \rfc{4271} with updates following in \rcf{6286} \rfc{6608}, \begin{itemize} \item Routes can be aggregated between \Glspl{as}. \item Properties can be changed on the fly by mathing - \begin{enumerate*}[label={\alph*)}] + \begin{enumerate}[label={\alph*)}] \item \Gls{bgp} communities, \item \Gls{ip} prefix, \item \Gls{bgp} as-path, - \end{enumerate*} + \end{enumerate} \end{itemize} \item \end{itemize} diff --git a/img/ipv6/ipv6_address_leading_zeros.png b/img/wikimediacommons/ipv6_address_leading_zeros.png similarity index 100% rename from img/ipv6/ipv6_address_leading_zeros.png rename to img/wikimediacommons/ipv6_address_leading_zeros.png diff --git a/img/ipv6/Ipv6_header.png b/img/wikimediacommons/ipv6_header.png similarity index 100% rename from img/ipv6/Ipv6_header.png rename to img/wikimediacommons/ipv6_header.png diff --git a/references-websites.bib b/references-websites.bib index b997028..1494dbe 100644 --- a/references-websites.bib +++ b/references-websites.bib @@ -15,10 +15,10 @@ } @misc{IPv6Pack77:online, - author = {}, + author = {Oracle}, title = {IPv6 Packet Header Format - System Administration Guide: IP Services}, howpublished = {\url{http://docs.oracle.com/cd/E23823_01/html/816-4554/ipv6-ref-2.html}}, month = {}, - year = {}, + year = {2010}, note = {(Accessed on 07/23/2017)} } \ No newline at end of file From c10f94a7893e055925b045fd472e49998b751942 Mon Sep 17 00:00:00 2001 From: chhan11 Date: Sat, 24 Jun 2017 13:17:35 +0200 Subject: [PATCH 18/24] Fix: Wrong use of \url in \rfc{}. Corrected to \href --- commands.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands.tex b/commands.tex index e21dfd8..0857e3b 100644 --- a/commands.tex +++ b/commands.tex @@ -128,4 +128,4 @@ License: \texttt{\href{https://creativecommons.org/licenses/by-sa/3.0/}{CC BY-SA % Usage: -\newcommand{\rfc}[1]{RFC #1\footnote{\url{https://tools.ietf.org/html/rfc#1}{tools.ietf.org/html/rfc#1}}} +\newcommand{\rfc}[1]{RFC #1\footnote{\href{https://tools.ietf.org/html/rfc#1}{tools.ietf.org/html/rfc#1}}} From e5ed97fa563e20d475c1e9c6c02a5da5ce6a5a65 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 19:49:21 +0200 Subject: [PATCH 19/24] ipv6 multicast --- chapter/ip.tex | 25 +++++++++++++++++++++++++ references-websites.bib | 9 +++++++++ 2 files changed, 34 insertions(+) diff --git a/chapter/ip.tex b/chapter/ip.tex index 6be7eda..c620d0e 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -97,6 +97,31 @@ Have 3 different forms: \end{itemize} \end{itemize} +\subsubsection{Multicast} + +\begin{itemize} + \item Address format:\cite{IPv6Addr96:online} + \begin{enumerate} + \item \texttt{8-bits: 1111 1111} -- Identifies the address as multicast. + \item \texttt{4-bits: FLGS} -- Set of 4 flags. + \begin{enumerate} + \item \texttt{0}: Must be zero. + \item \texttt{0}: Must be zero. + \item \texttt{P}: Can be either '1' or '0'. + \begin{itemize} + \item \texttt{0} -- Multicast address that is \textit{not} assigned based on the network prefix. + \item \texttt{1} -- Multicast address that is assigned based on the network prefix. + \end{itemize} + \item \texttt{T}: If the P-flag is '1'. T-flag must be '1', too. + \end{enumerate} + \item \texttt{4-bits: SCOP} + \item \texttt{8-bits: Reserved} -- Reserved value of zero.\footnote{Yet to make sense for me...} + \item \texttt{8-bits: Plen} -- Number of bits in the site prefix that identify the subnet, for a multicast address that is assigned based on a site prefix. + \item \texttt{64-bits: Network prefix} + \item \texttt{32-bits: Group ID} -- Identifier for the multicast group, either permanent or dynamic + \end{enumerate} +\end{itemize} + \subsection{AAAA} \gls{dns6} had 2 running proposals when first proposed, \rfc{2874} (1st), \rfc{3364} (later discussion), and \rfc{3363} thou deprecated this proposal to experimental status. diff --git a/references-websites.bib b/references-websites.bib index 1494dbe..2bd3a4b 100644 --- a/references-websites.bib +++ b/references-websites.bib @@ -21,4 +21,13 @@ month = {}, year = {2010}, note = {(Accessed on 07/23/2017)} +} + +@misc{IPv6Addr96:online, + author = {Oracle}, + title = {IPv6 Addressing Formats Beyond the Basics - System Administration Guide: IP Services}, + howpublished = {\url{http://docs.oracle.com/cd/E23823_01/html/816-4554/ipv6-ref-77.html#ipv6-overview-201}}, + month = {}, + year = {2010}, + note = {(Accessed on 07/23/2017)} } \ No newline at end of file From 69c543098a6aa9d101479317a706613e8de49c48 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 19:49:39 +0200 Subject: [PATCH 20/24] Reformatted text --- chapter/ip.tex | 59 +++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index c620d0e..fa69d46 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -61,39 +61,40 @@ Have 3 different forms: \subsection{Address Types} +\subsubsection{Link-Local} + \begin{itemize} - \item \itemhead[]{Link-Local} + \item Address assigned from the \texttt{fe80::/10} prefix. + \item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment. + \item \itemhead[]{Unique Link Local}\cite{wiki:Unique_local_address} \begin{itemize} - \item Address assigned from the \texttt{fe80::/10} prefix. - \item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment. - \item \itemhead[]{Unique Link Local}\cite{wiki:Unique_local_address} - \begin{itemize} - \item Defined as block \texttt{fc00::/7}. See \rfc{4193}. - \item \gls{ula} is \glspl{ip6} counter-part to \glspl{ip4} \rfc{1918} address space. - \item Only usable within a private network. - \item Divided into 2 /8 \gls{ip6} blocks. - \begin{enumerate} - \item \texttt{fc00::/8} -- Not \textit{yet} officially allocated/defined by the \gls{ietf}. - \item \texttt{fd00::/8} -- Defined as /48 prefixes. The last 40 bits is randomly generated and appended to the first 8 significant bits {\small (i.e. \texttt{0xFD} aka. \texttt{11111101})}. - \end{enumerate} - \end{itemize} - \item \itemhead[]{Solicited-node multicast address}\cite{wiki:Solicited-node_multicast_address} - \begin{itemize} - \item Consist of the prefix \texttt{ff02::1:ff00:0/104} for the first 104 bits. - \item The last 24 bits represents the target address within the prefix. - \item Solicited-node multicast address is segment only traffic. I.e. the traffic does not flow \textit{between} \gls{l3} \gls{ip} segments. - \item Used in combination with \gls{nd} to replace \glspl{ip4} \gls{arp} functionality. - \end{itemize} + \item Defined as block \texttt{fc00::/7}. See \rfc{4193}. + \item \gls{ula} is \glspl{ip6} counter-part to \glspl{ip4} \rfc{1918} address space. + \item Only usable within a private network. + \item Divided into 2 /8 \gls{ip6} blocks. + \begin{enumerate} + \item \texttt{fc00::/8} -- Not \textit{yet} officially allocated/defined by the \gls{ietf}. + \item \texttt{fd00::/8} -- Defined as /48 prefixes. The last 40 bits is randomly generated and appended to the first 8 significant bits {\small (i.e. \texttt{0xFD} aka. \texttt{11111101})}. + \end{enumerate} \end{itemize} - \item \itemhead[]{Global Addressing} + \item \itemhead[]{Solicited-node multicast address}\cite{wiki:Solicited-node_multicast_address} \begin{itemize} - \item Address types - \begin{itemize} - \item Unicast: Identifies each \gls{nic}. - \item Anycast: Identifies a group of \glspl{nic} belonging to the same group and providing the same services/content/applications. Nearest one to source is used. - \item Multicast: Used to deliver content to multiple \glspl{nic} at once. Traffic is a single flow from the source (i.e. not multiple unicast streams). - \item Broadcast: \textit{Not} implemented. Replaced by use of multicast groups. - \end{itemize} + \item Consist of the prefix \texttt{ff02::1:ff00:0/104} for the first 104 bits. + \item The last 24 bits represents the target address within the prefix. + \item Solicited-node multicast address is segment only traffic. I.e. the traffic does not flow \textit{between} \gls{l3} \gls{ip} segments. + \item Used in combination with \gls{nd} to replace \glspl{ip4} \gls{arp} functionality. + \end{itemize} +\end{itemize} + +\subsubsection{Global Addressing} + +\begin{itemize} + \item Address types + \begin{itemize} + \item Unicast: Identifies each \gls{nic}. + \item Anycast: Identifies a group of \glspl{nic} belonging to the same group and providing the same services/content/applications. Nearest one to source is used. + \item Multicast: Used to deliver content to multiple \glspl{nic} at once. Traffic is a single flow from the source (i.e. not multiple unicast streams). + \item Broadcast: \textit{Not} implemented. Replaced by use of multicast groups. \end{itemize} \end{itemize} From d68add6e53f42e28a2ccc676b0254dc964f219a9 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 19:50:19 +0200 Subject: [PATCH 21/24] Added italic style to keywords 'is' and 'not' --- chapter/ip.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index fa69d46..8a60edd 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -111,7 +111,7 @@ Have 3 different forms: \item \texttt{P}: Can be either '1' or '0'. \begin{itemize} \item \texttt{0} -- Multicast address that is \textit{not} assigned based on the network prefix. - \item \texttt{1} -- Multicast address that is assigned based on the network prefix. + \item \texttt{1} -- Multicast address that \textit{is} assigned based on the network prefix. \end{itemize} \item \texttt{T}: If the P-flag is '1'. T-flag must be '1', too. \end{enumerate} From 60777eebb5a08148fc2cd4ce4c96c8c9fb44e44b Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 20:05:46 +0200 Subject: [PATCH 22/24] updated structure.tex \usepackage{dblfnote} % https://tex.stackexchange.com/a/8180 --- structure.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/structure.tex b/structure.tex index 2d3e50a..30263a5 100644 --- a/structure.tex +++ b/structure.tex @@ -40,6 +40,7 @@ \usepackage[toc,acronym,footnote,nomain]{glossaries} % Load the package with the acronym option \usepackage{chngcntr} \usepackage[toc]{multitoc} +\usepackage{dblfnote} % https://tex.stackexchange.com/a/8180 \usepackage[unicode=false, colorlinks=true, linkcolor=darkgray, From 8873696e2e98b02fa3b6eb190b1381b191a25d5a Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 26 Jul 2017 16:37:44 +0000 Subject: [PATCH 23/24] Update ip.tex something Bout teredo --- chapter/ip.tex | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/chapter/ip.tex b/chapter/ip.tex index 8a60edd..c38794a 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -123,6 +123,10 @@ Have 3 different forms: \end{enumerate} \end{itemize} +\subsubsection[Teredo]{Teredo addressing \& tunneling} + +ip6 has a feature of being able to route by use of teredo tunnels over ip4 addresses. So that clients supporting ip6 on either end, but not the fabric in the middle. Can append the ip4 ip to a special ip6 prefix also called teredo tunneling run ip traffic across ip4. + \subsection{AAAA} \gls{dns6} had 2 running proposals when first proposed, \rfc{2874} (1st), \rfc{3364} (later discussion), and \rfc{3363} thou deprecated this proposal to experimental status. From a783234203d53a6e5d4d1949a83942ebddff17db Mon Sep 17 00:00:00 2001 From: Christoffer Date: Mon, 7 Aug 2017 22:37:28 +0200 Subject: [PATCH 24/24] Code blocks ip4 and ip6 included --- chapter/ip.tex | 10 +++++++++- code/ipaddressblocks.txt | 13 ------------- code/ipaddressblocks6.txt | 15 +++++++++++++++ commands.tex | 6 ++++++ 4 files changed, 30 insertions(+), 14 deletions(-) create mode 100644 code/ipaddressblocks6.txt diff --git a/chapter/ip.tex b/chapter/ip.tex index c38794a..7a524fe 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -135,4 +135,12 @@ The winning one was \rfc{3596} with the idea of doing \textit{quad}-A records an The idea is fx. \texttt{2001:db8:ef::2} is noted in ip6.arpa as \texttt{2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.e.0.0.8.b.d.0.1.0.0.2.ip6.arpa}. {\small Note the used of '.' between \textit{each} \textit{hexadecimal} character used, and that \textit{all zeroes} has been included. ip6.arpa does not allow any characters to be omitted from the original full-length \gls{ip6} address.}\footnote{Found description \href{https://stackoverflow.com/q/6619682}{here} on stackoverflow.com/q/6619682.} -\section[IPv4]{Internet Protocol v4} \ No newline at end of file +\subsection{Addresses} + +\plaintextinput{ipaddressblocks6} + +\section[IPv4]{Internet Protocol v4} + +\subsection{Addresses} + +\plaintextinput{ipaddressblocks} \ No newline at end of file diff --git a/code/ipaddressblocks.txt b/code/ipaddressblocks.txt index 12e5fed..0b9dab9 100644 --- a/code/ipaddressblocks.txt +++ b/code/ipaddressblocks.txt @@ -20,16 +20,3 @@ Address Block Present Use Reference 240.0.0.0/4 Reserved for Future Use RFC 1112, Section 4 255.255.255.255/32 Limited Broadcast RFC 0919, Section 7 RFC 0922, Section 7 -::1/128 Loopback Address RFC 4291 -::/128 Unspecified Address RFC 4291 -64:ff9b::/96 IPv4-IPv6 Translat. RFC 6052 -::ffff:0:0/96 IPv4-mapped Address RFC 4291 -100::/64 Discard-Only Address Block RFC 6666 -2001::/23 IETF Protocol Assignments RFC 2928 -2001::/32 TEREDO RFC 4380 -2001:2::/48 Benchmarking RFC 5180 -2001:db8::/32 Documentation RFC 3849 -2001:10::/28 ORCHID RFC 4843 -2002::/16 [2] 6to4 RFC 3056 -fc00::/7 Unique-Local RFC 4193 -fe80::/10 Linked-Scoped Unicast RFC 4291 diff --git a/code/ipaddressblocks6.txt b/code/ipaddressblocks6.txt new file mode 100644 index 0000000..9dd301e --- /dev/null +++ b/code/ipaddressblocks6.txt @@ -0,0 +1,15 @@ +Address Block Present Use Reference +-------------------------------------------------------------------- +::1/128 Loopback Address RFC 4291 +::/128 Unspecified Address RFC 4291 +64:ff9b::/96 IPv4-IPv6 Translat. RFC 6052 +::ffff:0:0/96 IPv4-mapped Address RFC 4291 +100::/64 Discard-Only Address Block RFC 6666 +2001::/23 IETF Protocol Assignments RFC 2928 +2001::/32 TEREDO RFC 4380 +2001:2::/48 Benchmarking RFC 5180 +2001:db8::/32 Documentation RFC 3849 +2001:10::/28 ORCHID RFC 4843 +2002::/16 [2] 6to4 RFC 3056 +fc00::/7 Unique-Local RFC 4193 +fe80::/10 Linked-Scoped Unicast RFC 4291 diff --git a/commands.tex b/commands.tex index 0857e3b..bc88bf2 100644 --- a/commands.tex +++ b/commands.tex @@ -95,6 +95,7 @@ License: \texttt{\href{https://creativecommons.org/licenses/by-sa/3.0/}{CC BY-SA \lstnewenvironment{txt}{\lstset{style=plaintxt}}{} + % Usage: % Enviroment @var cisco \lstnewenvironment{cisco}{\lstset{language=cisco}}{} @@ -129,3 +130,8 @@ License: \texttt{\href{https://creativecommons.org/licenses/by-sa/3.0/}{CC BY-SA % Usage: \newcommand{\rfc}[1]{RFC #1\footnote{\href{https://tools.ietf.org/html/rfc#1}{tools.ietf.org/html/rfc#1}}} + + +% Usage: +% https://tex.stackexchange.com/a/75349 +\newcommand{\plaintextinput}[1]{\lstinputlisting[language={},style=plaintxt]{code/#1.txt}}