mirror of
https://gitlab.com/netravnen/NetworkLabNotes.git
synced 2024-12-26 21:07:55 +00:00
Merge branch 'chapter/spanningtree' into develop
* chapter/spanningtree: chapter/section/spanningtree.tex: Updated section Multiple Spanning Tree chapter/section/spanningtree.tex: Updated section Multiple Spanning Tree Fixed newcommand fig set to accept 4 args instead of 3 args structure.tex: Added cmds for doing things with tables structure.tex: Added packages tikzsymbols, textcomp, parskip Chapters: Changed use of import to use of include main.tex: Changed use of import to use of include structure.tex: New user commmands and changes to tables and settings Updated indention and added custom cmd itemtitle Updated chapter/section/spanningtree.tex main.tex chapter/section/spanningtree.tex: Updated section flexlinks Added img/spanningtree/stpbestpractice.png chapter/section/spanningtree.tex: Updated flexlinks chapter/section/spanningtree.tex: Updated FlexLinks + replaced tabs with 4 spaces Updated info on udld and loopguard Updated structure.tex and chapter/section/spanningtree.tex
This commit is contained in:
commit
0d15efe8a3
|
@ -1,7 +1,7 @@
|
|||
\chapter{Protocols Layer 2}
|
||||
|
||||
\subimport{./section/}{switchednetwork}
|
||||
\input{chapter/section/switchednetwork}
|
||||
|
||||
\newpage
|
||||
|
||||
\subimport{./section/}{spanningtree}
|
||||
\input{chapter/section/spanningtree}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
\chapter{Protocols Layer 3}
|
||||
|
||||
\subimport{./section/}{routednetwork}
|
||||
\input{chapter/section/routednetwork}
|
||||
|
||||
\newpage
|
||||
|
||||
|
|
|
@ -11,20 +11,20 @@ Spanning Tree exists for the \textbf{sole} reason to save "your" network and all
|
|||
STP comes from the above desire where redundancy was wanted but no protocol existed before STP to help in this regard.
|
||||
|
||||
\begin{table}[h]
|
||||
\centering
|
||||
\caption{Spanning Tree standrds}
|
||||
\label{stpstandards}
|
||||
\resizebox{\columnwidth}{!}{%
|
||||
\begin{tabular}{|l|l|l|l|l|}
|
||||
\hline
|
||||
\textbf{} & \textbf{Standard} & \textbf{Ressource Usage} & \multicolumn{2}{l|}{\textbf{Convergence}} \\ \hline
|
||||
CST & 802.1D & Low & Slow & All vlans \\ \hline
|
||||
PVST+ & Cisco & High & Slow & Per vlan \\ \hline
|
||||
RSTP & 802.1w & So-so (Med.) & Fast & All vlans \\ \hline
|
||||
RPVST+ & Cisco & On-the-double (V.High) & Fast & Per vlan \\ \hline
|
||||
MST & 802.1s & Med. - High & Fast & Vlan list \\ \hline
|
||||
\end{tabular}%
|
||||
}
|
||||
\centering
|
||||
\caption{Spanning Tree standrds}
|
||||
\label{stpstandards}
|
||||
\resizebox{\columnwidth}{!}{%
|
||||
\begin{tabular}{|l|l|l|l|l|}
|
||||
\hline
|
||||
\textbf{} & \textbf{Standard} & \textbf{Ressource Usage} & \multicolumn{2}{l|}{\textbf{Convergence}} \\ \hline
|
||||
CST & 802.1D & Low & Slow & All vlans \\ \hline
|
||||
PVST+ & Cisco & High & Slow & Per vlan \\ \hline
|
||||
RSTP & 802.1w & So-so (Med.) & Fast & All vlans \\ \hline
|
||||
RPVST+ & Cisco & On-the-double (V.High) & Fast & Per vlan \\ \hline
|
||||
MST & 802.1s & Med. - High & Fast & Vlan list \\ \hline
|
||||
\end{tabular}%
|
||||
}
|
||||
\end{table}
|
||||
|
||||
\subsection{Port Roles}
|
||||
|
@ -32,25 +32,25 @@ STP comes from the above desire where redundancy was wanted but no protocol exis
|
|||
When a switch is enabled for Spanning Tree. One of the following roles will have been assumed by any port on the switch in question.
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{Root port:} Only 1 port on any switch (non-counting the root bridge!). Is always the port with the lowest metric (aka. best path) to the root bridge.
|
||||
\item \textbf{Root port:} Only 1 port on any switch (non-counting the root bridge!). Is always the port with the lowest metric (aka. best path) to the root bridge.
|
||||
\begin{itemize}
|
||||
\item The upstream/-link port closest to the root bridge on all switches apart from the root bridge.
|
||||
\end{itemize}
|
||||
\item \textbf{Designated port:} A designated port is the port on any segment closest to the root bridge and forwarding traffic.
|
||||
\item \textbf{Designated port:} A designated port is the port on any segment closest to the root bridge and forwarding traffic.
|
||||
\begin{itemize}
|
||||
\item The port on any switch in downstream direction closet to the root bridge.
|
||||
\end{itemize}
|
||||
\item \textbf{\textit{Non}-designated port:} Put in blocking mode and not currently forwarding traffic.
|
||||
\item \textbf{\textit{Non}-designated port:} Put in blocking mode and not currently forwarding traffic.
|
||||
\begin{itemize}
|
||||
\item All switch ports which did not get elected as the root or designated port.
|
||||
\end{itemize}
|
||||
\item \textbf{Disabled port:} The port has been one-way-or-another shut down.
|
||||
\item \textbf{Disabled port:} The port has been one-way-or-another shut down.
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{specific port roles}
|
||||
\begin{itemize}
|
||||
\item \textbf{Alternative port} is an active port in network with an alternative path to the root bridge. A port in alternative mode will remain active but \textit{discards} all traffic until the the current designated path fails.
|
||||
\item \textbf{Backup port} is running in active mode and \textit{discards} all traffic it recieves until the current designated port on the segment the backup port is connected to, fails.
|
||||
\item \textbf{Alternative port} is an active port in network with an alternative path to the root bridge. A port in alternative mode will remain active but \textit{discards} all traffic until the the current designated path fails.
|
||||
\item \textbf{Backup port} is running in active mode and \textit{discards} all traffic it recieves until the current designated port on the segment the backup port is connected to, fails.
|
||||
\end{itemize}
|
||||
|
||||
Election of ports goes in order of the following values (low is best): 1) root bridge id, 2) lowest path cost to root bridge, 3) sender bridge id, 4) sender port bridge id
|
||||
|
@ -123,18 +123,18 @@ Using a \textbf{R}oot \textbf{B}rigde as the reference point for the STP instanc
|
|||
\subsubsection{Port Cost}
|
||||
|
||||
\begin{table}[h]
|
||||
\centering
|
||||
\caption{Default port cost in spanning tree}
|
||||
\label{stpportcost}{!}{%
|
||||
\begin{tabular}{|l|l|}
|
||||
\hline
|
||||
\textbf{Link} & \textbf{Default Cost} \\ \hline
|
||||
10 Gbps & 1 \\ \hline
|
||||
1 Gbps & 4 \\ \hline
|
||||
100 Mbps & 19 \\ \hline
|
||||
10 Mbps & 100 \\ \hline
|
||||
\end{tabular}%
|
||||
}
|
||||
\centering
|
||||
\caption{Default port cost in spanning tree}
|
||||
\label{stpportcost}{!}{%
|
||||
\begin{tabular}{|l|l|}
|
||||
\hline
|
||||
\textbf{Link} & \textbf{Default Cost} \\ \hline
|
||||
10 Gbps & 1 \\ \hline
|
||||
1 Gbps & 4 \\ \hline
|
||||
100 Mbps & 19 \\ \hline
|
||||
10 Mbps & 100 \\ \hline
|
||||
\end{tabular}%
|
||||
}
|
||||
\end{table}
|
||||
|
||||
\fig{spanningtree/portroles}{stpportroles}{Port Election}
|
||||
|
@ -175,9 +175,9 @@ Cisco did on their part early on enhance the original spanning tree standard wit
|
|||
\item Port does no forwan TCN\footnote{\textbf{Needs finding out what TCN is.}} BPDUs either.
|
||||
\item PortFast can be enabled either A) per port \textit{or} B) globally for all ports in access mode.
|
||||
\begin{enumerate}
|
||||
\item Per port: \footnote{Accesss port}\\\cliline{switch(config-if)# spanning-tree portfast}
|
||||
\item Per port: \footnote{Trunk port}\\\cliline{switch(config-if)# spanning-tree portfast trunk}
|
||||
\item Globally:\\\cliline{switch(config)# spanning-tree portfast default}
|
||||
\item Per port: {\footnotesize Accesss port}\\\cliline{cisco-switch(config-if)# spanning-tree portfast}
|
||||
\item Per port: {\footnotesize Trunk port}\\\cliline{cisco-switch(config-if)# spanning-tree portfast trunk}
|
||||
\item Globally:\\\cliline{cisco-switch(config)# spanning-tree portfast default}
|
||||
\end{enumerate}
|
||||
\end{itemize}
|
||||
\item UplinkFast
|
||||
|
@ -190,7 +190,7 @@ Cisco did on their part early on enhance the original spanning tree standard wit
|
|||
\item Only works if switch has blocked ports
|
||||
\item Designed with switches in access layer as deployment target.
|
||||
\item Enabled for the entire switch. Cannot be enabled pr. vlan.
|
||||
\item \cliline{switch(config)# spanning-tree uplinkfast} enables the feature.
|
||||
\item \cliline{cisco-switch(config)# spanning-tree uplinkfast} enables the feature.
|
||||
\end{itemize}
|
||||
\item BackboneFast
|
||||
\begin{itemize}
|
||||
|
@ -199,12 +199,12 @@ Cisco did on their part early on enhance the original spanning tree standard wit
|
|||
\item Enabled only with non-RSTP
|
||||
\item Integrated into Cisco's RSTP implementaion and enabled by default.
|
||||
\item Disabled by default
|
||||
\item \cliline{switch(config)# spanning-tree backbonefast} enables the feature.
|
||||
\item \cliline{cisco-switch(config)# spanning-tree backbonefast} enables the feature.
|
||||
\item \textit{Scenario:} If switch needs searching new path root bridge. BackboneFast shortens process.
|
||||
\begin{enumerate}
|
||||
\item Switch will search for alternative path to root.
|
||||
\item If BPDU recieved on blocked port. Port considered alternative path path to root.
|
||||
\item If alternate path identified. RQL\footnote{\textbf{R}equest \textbf{L}ink \textbf{B}locking} packets are out for identify either A) an alternative path to the root bridge \textit{or} B) an up-/downstream switch with a path to the root bridge.
|
||||
\item If alternate path identified. RQL{\footnotesize \textbf{R}equest \textbf{L}ink \textbf{B}locking} packets are out for identify either A) an alternative path to the root bridge \textit{or} B) an up-/downstream switch with a path to the root bridge.
|
||||
\end{enumerate}
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
@ -215,8 +215,8 @@ Cisco did on their part early on enhance the original spanning tree standard wit
|
|||
\item BPDU Guard
|
||||
\begin{itemize}
|
||||
\item Disables the PortFast-enabled port if a BPDU is received. The port goes into mode \texttt{err-disable}.
|
||||
\item Enable per port:\\\cliline{switch(config-if)# spanning-tree bpduguard enable}
|
||||
\item Enable globally for portfast enabled ports:\\\cliline{switch(config)# spanning-tree portfast bpduguard default}
|
||||
\item Enable per port:\\\cliline{cisco-switch(config-if)# spanning-tree bpduguard enable}
|
||||
\item Enable globally for portfast enabled ports:\\\cliline{cisco-switch(config)# spanning-tree portfast bpduguard default}
|
||||
\end{itemize}
|
||||
\item BPDU Filter
|
||||
\begin{itemize}
|
||||
|
@ -227,36 +227,153 @@ Cisco did on their part early on enhance the original spanning tree standard wit
|
|||
\item Affects all active portfast enabled ports, which \underline{don't} have a BPDU port configuration.
|
||||
\item If BPDU recieved on port, portfast and BPDU filter is disabled.
|
||||
\item Sends \textbf{10} BPDUs on startup. If BPDU recieved in this timeframe \textit{same consequence as above} happens to the port.
|
||||
\item \cliline{switch(config-if)# spanning-tree bpdufilter enable}
|
||||
\item \cliline{cisco-switch(config-if)# spanning-tree bpdufilter enable}
|
||||
\end{enumerate}
|
||||
\item B) per-port:
|
||||
\begin{enumerate}
|
||||
\item Port ignores all recieved BPDUs.
|
||||
\item Port sends no BPDUs.
|
||||
\item \cliline{switch(config-if)# spanning-tree bpdufilter enable}
|
||||
\item \cliline{cisco-switch(config-if)# spanning-tree bpdufilter enable}
|
||||
\end{enumerate}
|
||||
\item Beware to \underline{only} enable BPDU filter on ports connected to end hosts. Consequence if not followed \underline{can} result in creating bridging loops.
|
||||
\item Beware to \underline{only enable either} BPDU guard \textbf{\textit{or}} filter. \footnote{Cisco recommendation}
|
||||
\end{itemize}
|
||||
\item Root Guard
|
||||
\begin{itemize}
|
||||
\item Prevents external switches from becoming roots
|
||||
\item \st{Prevents external switches from becoming roots}
|
||||
\item If enabled, prevents any ports from becoming a root-port. Ports will remain as designated ports \textit{effectivily} preventing the switch becoming the root bridge.
|
||||
\item This, too, behaves in s similiar manner as BPDU guard, putting the port in \texttt{err-disable} mode when a BPDU packet is recieved on the port.
|
||||
\item Enabled per-port with\\\cliline{cisco-switch(config-if)# spanning-tree guard root}
|
||||
\end{itemize}
|
||||
\item Loop Guard
|
||||
\begin{itemize}
|
||||
\item Prevents an alternate port from becoming the designated port if no BPDUs are received
|
||||
\begin{enumerate}
|
||||
\item Normally when cisco swicthes stop recieving BPDUs ingress in a port. The port will go to listeting, learning, forwarding state equaling a loop.
|
||||
\item With Loop guard enabled the will go to \texttt{loop-inconsistent} blocking state instead.
|
||||
\end{enumerate}
|
||||
\item Enabled per-port\\\cliline{cisco-switch(config-if)# spanning-tree guard loop}
|
||||
\item Enabled globally\\\cliline{cisco-switch(config)# spanning-tree loopguard default} {\small only on p2p links}
|
||||
\item Works on per-vlan basis when PVSTP is used.
|
||||
\item On ether-channel links with uni-directional link failures, loop guard will put put the whole ether-channel into loop-inconsistent state.
|
||||
\end{itemize}
|
||||
\item \textbf{Beware} root and loop guard is mutually exclusive
|
||||
\begin{itemize}
|
||||
\item Root guard works on designated ports and does not allow the ports to become \textit{non}-designated ports, where
|
||||
\item Loop guard works on \textit{non}-designated ports and does not allow the ports to become designated ports {\footnotesize though expiration of times}.
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Link}
|
||||
|
||||
\begin{itemize}
|
||||
\item Unidirectional Link Detection (UDLD)
|
||||
\item FlexLinks
|
||||
\item Unidirectional Link Detection (UDLD)
|
||||
\begin{itemize}
|
||||
\item Cisco proprietary feature.
|
||||
\item By default only enables on fiber optic links.
|
||||
\item Works by sending packes every 15 seconds (default timer). If not packet is recieved back, the port can either log (default) a messaage or actively try to re-establish the link (aggresive). 1 packet/second for 8 sec. is send. If non is returned the port will go to \texttt{err-disable} state.
|
||||
\item \cliline{cisco-switch(config)\# udld \{enable | aggresive\}}
|
||||
\item On ether-channel links with uni-directional link failures, udld will disable individual failed links.
|
||||
\item For the best protection. Aggresive mode is recommended.
|
||||
\item It is recommended to turn on udld in global conf mode.
|
||||
\end{itemize}
|
||||
\item FlexLinks
|
||||
\begin{itemize}
|
||||
\item Cisco proprietary feature.
|
||||
\item An alternate solution to running STP in the environment.
|
||||
\begin{itemize}
|
||||
\item STP is auto-disabled on interfaces running FlexLinks.
|
||||
\item Configured with 2 physical links with and active/backup configuration.
|
||||
\item Enables convergence time of less than 50 milliseconds.
|
||||
\end{itemize}
|
||||
\item FlexLinks is good alternative to running STP in an environment with customers who you do \textit{not} want to run STP with. Fx. Service Provider/Enterprise/Datacenter environment.
|
||||
\item Preemtion for FlexLinks is \textit{not} enabled-by-default.
|
||||
\begin{enumerate}
|
||||
\item Detects link failure.
|
||||
\item Moves any dynamic unicast MAC addresses learned on primary link to standby link.
|
||||
\item Moves standby link to forwarding state.
|
||||
\item Transmits dummy multicast packets over new active interface. {\small Dummy multicast packet format is as follows: \textbf{destination:} 01:00:0c:cd:cd:cd, \textbf{source:} MAC address of the hosts or ports on the newly active FlexLinks port}
|
||||
\end{enumerate}
|
||||
\item {\small \textbf{Note:}} Configuring FlexLinks outside of access layer switches can be very complex!
|
||||
\item Enabled FlexLinks on an interface: \\
|
||||
\cliline{cisco-switch(config)# interface fa0/1} \\
|
||||
\cliline{cisco-switch(config-if)# switchport backup interface fa0/2}
|
||||
\item \textbf{What} FlexLinks can be:
|
||||
\begin{enumerate}
|
||||
\item A physical port
|
||||
\item A Bundled link {\footnotesize (aka. ether-channel)}
|
||||
\item 1 FlexLink per physical/logical port
|
||||
\item Link speeds need not be the same
|
||||
\end{enumerate}
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
||||
\section*{Online Ressources on STP}
|
||||
\begin{table}[h]
|
||||
\centering
|
||||
\caption{UDLD|Loopguard compared}
|
||||
\label{udldloopguard}
|
||||
\resizebox{\columnwidth}{!}{%
|
||||
\begin{tabular}{|l|l|l|}
|
||||
\hline
|
||||
\thead{Functionality} & \thead{Loop guard} & \thead{UDLD} \\ \hline
|
||||
Action granularity & Per vlan & Per port \\ \hline
|
||||
\makecell{Protection against STP\\failures caused by uni-directional\\ links} & \makecell{Yes, when enabled on all\\potential non-designated ports\\in redundant topology} & \makecell{Yes, when enabled on all\\links in redundant topology} \\ \hline
|
||||
\makecell{Protection against STP\\failures caused by problem in\\software resulting in designated\\switch not sending BPDUs} & Yes & No \\ \hline
|
||||
Protection against mis-wiring & No & Yes \\ \hline
|
||||
\end{tabular}%
|
||||
}
|
||||
\end{table}
|
||||
|
||||
\fig{spanningtree/stpbestpractice}{stpbestpractice}{STP best practice}
|
||||
|
||||
\section{Multiple Spanning Tree}
|
||||
|
||||
\begin{itemize}
|
||||
\item Spanning Tree \@WikiPedia \cite{wp_spanningtree}
|
||||
\end{itemize}
|
||||
\item \itemtitle{Known limitations}{Regarding the cisco world of things}
|
||||
\begin{enumerate}
|
||||
\item A maximum of 16 instances is supported. {\footnotesize From 0 to 15.}
|
||||
\end{enumerate}
|
||||
\item \textbf{Beware} that instance 0 is the \textit{I}nternal \textit{S}panning \textit{T}ree. And therefore cannot be configured for user-mapped Vlans.
|
||||
\item Aggregates the configured vlans into groups/instances/processes. This in turn provides lower resource utilization on switches. \dWinkey
|
||||
\item Backwards compatible with 802.1D STP/802.1w/RSTP and Cisco PVST+.
|
||||
\item Converges faster than PVRST+.
|
||||
\item \itemtitle{Challenges}{Arises because of older hardware and the architecture of the protocol}
|
||||
\begin{enumerate}
|
||||
\item Operability with older/legacy hardware/equipment is not always possible.
|
||||
\item \textit{Of course} it is more complex compared to standard STP (older) protocols. {\footnotesize Staff may require teachings of the way of the protocol.}
|
||||
\end{enumerate}
|
||||
\end{itemize}
|
||||
|
||||
\begin{table}[h]
|
||||
\centering
|
||||
\caption{MST Attributes}
|
||||
\label{mstattr}
|
||||
\resizebox{\columnwidth}{!}{%
|
||||
\begin{tabular}{|l|l|}
|
||||
\hline
|
||||
\thead{Data} & \thead{What ?} \\ \hline
|
||||
32 bytes & alphanumeric configuration name \\ \hline
|
||||
2 bytes & configuration revision number \\ \hline
|
||||
Table of 4096 elements & \makecell{associates each of the potential\\4096 VLANs with an instance} \\ \hline
|
||||
\end{tabular}%
|
||||
}
|
||||
\end{table}
|
||||
|
||||
\subsection{MST Regions}
|
||||
|
||||
It is the network admins job to propagate an even configuration to all switches in a single region by using CLI or SNMP. Currently IOS does not support any other options to do the job.
|
||||
|
||||
\begin{itemize}
|
||||
\item \itemtitle{Boundaries}{MST differs between regions by}
|
||||
\begin{enumerate}
|
||||
\item sending a digest computer from the Vlan-to-instance mapping table of the switch sending the digest.
|
||||
\item the characteristics of the MST protocol for that single switch.
|
||||
\end{enumerate}
|
||||
\item if computed digest and MST characteristics between switches is \textit{found matching}, the switches considers themselves part of the same MST region.
|
||||
\item \textbf{Beware} that unlike VTP, MST does not automatically increase the configuration revision number. This \textit{has to be done} manually.
|
||||
\end{itemize}
|
||||
|
||||
\fig{spanningtree/mstregions}{mstregions}{MST Regions all Vlans running mappen to the default instance 0.}
|
||||
|
||||
\fig{spanningtree/mstregions2}{mstregions2}{MST Regions vlans mapped to different instances.}
|
||||
|
||||
|
|
19
commands.tex
19
commands.tex
|
@ -7,7 +7,7 @@
|
|||
}
|
||||
|
||||
% Usage: \fig{<path-to-file>}{<label>}{<caption>}
|
||||
\newcommand{\fig}[4]{
|
||||
\newcommand{\fig}[3]{
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.95\columnwidth]{#1}
|
||||
|
@ -38,10 +38,13 @@
|
|||
\newcommand{\cliline}[2][]{\lstinline[columns=fixed,#1]{#2}}
|
||||
|
||||
\newcommand{\utccurrenttime}[0]{%
|
||||
\today%
|
||||
T%
|
||||
\DTMcurrenttime%
|
||||
\DTMfetchTZhour{now}%
|
||||
:%
|
||||
\DTMfetchTZminute{now}
|
||||
}
|
||||
\today%
|
||||
T%
|
||||
\DTMcurrenttime%
|
||||
\DTMfetchTZhour{now}%
|
||||
:%
|
||||
\DTMfetchTZminute{now}
|
||||
}
|
||||
|
||||
\newcommand{\itemtitle}[2]{\textbf{#1:}\\%
|
||||
{\footnotesize #2}}
|
BIN
img/spanningtree/mstregions.png
Normal file
BIN
img/spanningtree/mstregions.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 458 KiB |
BIN
img/spanningtree/mstregions2.png
Normal file
BIN
img/spanningtree/mstregions2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 550 KiB |
BIN
img/spanningtree/stpbestpractice.png
Normal file
BIN
img/spanningtree/stpbestpractice.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 450 KiB |
12
main.tex
12
main.tex
|
@ -1,7 +1,7 @@
|
|||
% Declare Document Class
|
||||
\documentclass[a4paper,12pt,twoside,twocolumn,landscape]{book}
|
||||
|
||||
\input{structure} % Load structure cfg for document
|
||||
\include{structure} % Load structure cfg for document
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% %
|
||||
|
@ -11,7 +11,7 @@
|
|||
|
||||
\begin{document}
|
||||
|
||||
\import{.}{frontpage}
|
||||
\include{frontpage}
|
||||
|
||||
\tableofcontents
|
||||
|
||||
|
@ -25,13 +25,13 @@
|
|||
% %
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\import{chapter/}{baseconf}
|
||||
\include{chapter/baseconf}
|
||||
|
||||
\import{chapter/}{layer2protocols}
|
||||
\include{chapter/layer2protocols}
|
||||
|
||||
\import{chapter/}{layer3protocols}
|
||||
\include{chapter/layer3protocols}
|
||||
|
||||
\import{chapter/}{internet}
|
||||
\include{chapter/internet}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% %
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
% Latex Packages
|
||||
\usepackage{import}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{lmodern}
|
||||
|
@ -25,6 +24,16 @@
|
|||
%\usepackage{lipsum}
|
||||
%\usepackage{titling}
|
||||
\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}
|
||||
\usepackage{fourier}
|
||||
\usepackage{array}
|
||||
\usepackage{makecell}
|
||||
|
||||
|
||||
\bibliographystyle{unsrtnat} %styles list https://www.sharelatex.com/learn/Natbib_bibliography_styles
|
||||
|
@ -66,7 +75,7 @@
|
|||
\pagenumbering{roman}
|
||||
|
||||
|
||||
\subimport{.}{commands} % Import user-defined commands
|
||||
\input{commands} % Import user-defined commands
|
||||
|
||||
|
||||
\input{layout/color} %user-defined colors
|
||||
|
@ -99,4 +108,35 @@
|
|||
\setlength{\skip\footins}{2cm} %space between the text body and the footnotes
|
||||
\setlist[itemize,1]{leftmargin=\dimexpr 26pt-.2cm}
|
||||
\setlist[itemize,2]{leftmargin=\dimexpr 26pt-.3cm}
|
||||
\lstset{style=mystyle} %apply lst styling
|
||||
\lstset{style=mystyle} %apply lst styling
|
||||
|
||||
|
||||
\renewcommand{\familydefault}{\sfdefault}
|
||||
|
||||
|
||||
\DeclareCaptionFormat{myformat}{%
|
||||
% #1: label (e.g. "Table 1")
|
||||
% #2: separator (e.g. ": ")
|
||||
% #3: caption text
|
||||
\begin{varwidth}{\linewidth}%
|
||||
\centering
|
||||
#1#2#3%
|
||||
\end{varwidth}%
|
||||
}
|
||||
\captionsetup{format=myformat}% global activation
|
||||
|
||||
|
||||
\newlist{todolist}{itemize}{2}
|
||||
\setlist[todolist]{label=$\square$}
|
||||
\usepackage{pifont}
|
||||
\newcommand{\cmark}{\ding{51}}%
|
||||
\newcommand{\xmark}{\ding{55}}%
|
||||
\newcommand{\done}{\rlap{$\square$}{\raisebox{2pt}{\large\hspace{1pt}\cmark}}%
|
||||
\hspace{-2.5pt}}
|
||||
\newcommand{\wontfix}{\rlap{$\square$}{\large\hspace{1pt}\xmark}}
|
||||
|
||||
|
||||
\renewcommand\theadalign{cb}
|
||||
\renewcommand\theadfont{\bfseries}
|
||||
\renewcommand\theadgape{\Gape[4pt]}
|
||||
\renewcommand\cellgape{\Gape[4pt]}
|
Loading…
Reference in a new issue