\chapter{Campus Network} \section{Discover Nodes} Protocols to do link discovery on the network between nodes is commonly used \begin{itemize} \item incorporated in many \gls{nms} tools to support it's underling functionally like alerts triggering and monitoring, \item when the ops people do debugging on the \gls{cli}, \item doing network discovery to find "what am I connected to ?" \end{itemize} Information by the protocols is only sent and processed locally. Information transmitted is not send beyond the local \gls{l2} link. \newpage \subsection[LLDP]{Link Layer Discovery Protocol} \myquote{\citealt{wiki:Link_Layer_Discovery_Protocol}}{The Link Layer Discovery Protocol (LLDP) is a vendor-neutral link layer protocol in the Internet Protocol Suite used by network devices for advertising their identity, capabilities, and neighbours on an IEEE 802 local area network, principally wired Ethernet.[1] The protocol is formally referred to by the IEEE as Station and Media Access Control Connectivity Discovery specified in IEEE 802.1AB[2] and IEEE 802.3-2012 section 6 clause 79.} \gls{lldp} carries information about \begin{enumerate} \item System name, \item System description, \item Port name, \item Port description, \item \gls{vlan} name, \item \gls{ip} mgmt addr, \item System capabilities\footnote{Support for fx. switching, routing etc.}, \item \gls{mac}/PHY info, \item MDI\footnote{MDI refers to modes in PoE} power, \item Link aggregation. \end{enumerate} \gls{lldp} has the advantage over \gls{cdp} of being more customizable in regards to the use of \gls{tlv}s. \textbf{However} it has the drawback of not being as lightweight as \gls{cdp}. \begin{itemize} \item \itemtitle{Worth to remember}{about \gls{lldp} is the following} \begin{itemize} \item is unidirectional, \item operates in advertising mode only, \item does not try to obtain information from other nodes, \item does not monitor link state changes between nodes, \item uses \gls{l2} multicast to notify others of neighbouring nodes of its presence and properties, \item will record \textit{all} obtained information from received \gls{lldp} frames. \end{itemize} \item \itemtitle{Frames}{Multicast addresses --- One of the following is used.\\Note the \textit{01} signifies a \gls{l2} multicast \gls{dst} address.} \begin{enumerate} \item 01:80:c2:00:00:0e, \item 01:80:c2:00:00:03, \item 01:80:c2:00:00:00. \end{enumerate} \item \itemtitle{Commonly exchanged information}{List includes both mandatory and optional fields.} \begin{enumerate} \item System name, \item System description, \item Port name, \item Port description, \item \gls{vlan} name, \item \gls{ip} mgmt addr, \item System capabilities\footnote{Support for fx. switching, routing etc.}, \item MDI\footnote{MDI refers to modes in PoE} power, \item Link aggregation. \end{enumerate} \item \itemtitle{Timers}{Default timers for \gls{lldp} on Cisco equipment} \begin{enumerate} \item hello packet sent once per ½ minute. \item hold timer is 2 minutes. \end{enumerate} \end{itemize} \subsubsection*{Configuration Example} \begin{cisco} ! Enable lldp. Beware lldp is enabled by default ! on select cisco platforms. lldp run ! ! Ensure lldp is enables on select ports interface range gi0/1-2 lldp transmit lldp recieve ! ! Disable sending lldp packets on ports facing downstream ! to clients/workstations. But keep recieving lldp packets enabled ! so we can allways use the information for troubleshooting purpose. interface range fa0/1-24 no lldp transmit lldp recieve \end{cisco} \newpage \subsection[CDP]{Cisco Discovery Protocol} \myquote{\citealt{wiki:Cisco_Discovery_Protocol}}{Cisco Discovery Protocol (CDP) is a proprietary Data Link Layer protocol developed by Cisco Systems. It is used to share information about other directly connected Cisco equipment, such as the operating system version and IP address. CDP can also be used for On-Demand Routing, which is a method of including routing information in CDP announcements so that dynamic routing protocols do not need to be used in simple networks.} \gls{cdp} functions my sending frame out the wire of all connected interfaces by default \begin{itemize} \item Sends frames to multicast addr 01-00-0c-cc-cc-cc\footnote{This multicast address is also used by cisco for \gls{vtp} messages}, \item by default a frame is shot out every 1 minute\footnote{The timer is adjusted in per x second}, \item no security is built-in by default so spoofing \gls{cdp} packets is not hard if the net ops people have forgotten to basic hardening \begin{enumerate} \item Taking up resources by filling up tables with invalid \gls{cdp} entries\cite{wiki:CDP_Spoofing} is possible, \item can be prevented by fx. disabling \gls{cdp} on ports where is it unnecessary to have it enabled. Say client access ports, \item precaution can be taken by only allowing \gls{cdp} packets on trusted network ports. \end{enumerate} \end{itemize} \subsubsection*{Configuration Example} \begin{cisco} ! Enable CDP globally cdp run ! ! Ensure cdp is enables on select ports interface range gi0/1-2 cdp enable ! ! Disable CDP on ports facing downstream to clients/workstations interface range fa0/1-24 no cdp enable \end{cisco} \section{Failure Detection} \subsection[UDLD]{Unidirectional Link Detection} \gls{udld} at work does the detection of the link is forwarding traffic in both directions. This is important when operating with Fiberoptic links\footnote{Normal Ethernet links is not as susceptible running traffic in only one direction}. Fiberoptic links has the potential for \begin{enumerate} \item bent and damages cables, \item damaged connectors, \item damaged ports, \item impurities between connector and port. \end{enumerate} \fig{udld/malfunction}{udldmalfunction}{UDLD not working ?} Other things can go wrong, too. Such as \begin{itemize} \item hardware failures, \item software defects, \item abnormal interface converter \textit{behaviour}, \item abnormal interface converter \textit{failure}, \item cabling done wrong, \item inline sniffer/tap \textit{gone wrong}, \item inline sniffer/tap \textit{misconfigured} \end{itemize} \section[SPAN]{Switch Port Analyzer} \subsection[RSPAN]{Remote Switch Port Analyzer} \subsection[ERSPAN]{Encapsulated Remote Switch Port Analyzer} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % NETWORK MANAGEMENT AND SOME TECHNOLOGIES THAT OVIESLY DESERVES MENT. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter[Network Mgmt]{Network Management} \section[AAA]{Triple A\tsq{s}} \myquote{}{Remember to log the details, too.} \xkcd{latitude}{Remember logging when necessary} \newpage \begin{itemize} \item \textbf{Authentication:} \begin{enumerate} \item Identify the user, \item Validate the user, \item Allow/Disallow user based upon credentials. \end{enumerate} \item \textbf{Authorization:} \begin{enumerate} \item Have defined levels of allowed operations/tasks divided into groups, \item Validate user-to-groups relations, \item Allow/Disallow user actions. \item On network gear the Allow/Disallowed actions can be stored on either the central \gls{aaa} server or locally\footnote{May not apply to all network gear} in the network node. \end{enumerate} \item \textbf{Accounting:} \begin{enumerate} \item Network nodes collect user and session information from start to end when connecting to a node, \item All information is transferred back to \gls{aaa} server, \item Transferred info can be leveraged for several purposes. Typically logged info is: \begin{itemize} \item session duration, \item user commands, \item disallowed commands \end{itemize} \end{enumerate} \end{itemize} \bigskip \textbf{Obvious} benefits by using the \gls{aaa} is scalability, increased flexibility and granularity of assigned rights, standardization, having failover by using multiple triple a\tsq{s} server\footnote{Cisco devices uses the descending order in which \gls{aaa} servers are configured on the node}. \newpage \begin{table}[!ht] \centering \caption{Tacacs+ vs. Radius} \label{radiusversustacacsplus} \resizebox{\columnwidth}{!}{% \begin{tabular}{|l|l|l|l|l|} \hline \multicolumn{1}{|c|}{\textbf{Feature}} & \multicolumn{1}{c|}{\textbf{RADIUS}} & \multicolumn{1}{c|}{\textbf{TACACS+}} \\ \hline Developer & \begin{tabular}[c]{@{}l@{}}Livington Enterprise\\ (now industry standard)\end{tabular} & \begin{tabular}[c]{@{}l@{}}Cisco\\ (proprietary)\end{tabular} \\ \hline Transport protocol & UDP ports 1812-1813 & TCP port 49 \\ \hline \gls{aaa} support & \begin{tabular}[c]{@{}l@{}}Combines authentication\\ and authorization and \\ separate accounting\end{tabular} & \begin{tabular}[c]{@{}l@{}}Uses the \gls{aaa}\\ model and sep-\\ arates all three\\ services\end{tabular} \\ \hline Challange response & \begin{tabular}[c]{@{}l@{}}One-way, unidirectional\\ (single challenge response)\end{tabular} & \begin{tabular}[c]{@{}l@{}}Two-way, bidirec-\\ tional (multiple\\ challenge responses)\end{tabular} \\ \hline Security & \begin{tabular}[c]{@{}l@{}}Encrypts only the password\\ in the packet\end{tabular} & \begin{tabular}[c]{@{}l@{}}Encrypt the entire\\ packet body\end{tabular} \\ \hline \end{tabular}% } \end{table} \newpage \section{RADIUS} \fig{radius/radiuscommunication}{radiuscommunication}{Radius handshake and communication} \begin{cisco} radius server DK-RADIUS-SERVER address ipv4 radiusserver.example.com auth-port 1812 acct-port 1813 key unkn0wn!unic@st.|. ! aaa new-model aaa group server RADIUS server name DK-RADIUS-SERVER ! aaa authentication login radius_list group RADIUS local ! line vty 0 4 login authentication radius_list line vty 5 15 login authentication radius_list \end{cisco} \newpage \section{TACACS+} \fig{tacacsplus/tacacspluscommunication}{tacacspluscommunication}{Tacacs plus handshake and communication} \begin{cisco} aaa group server tacacs+ TACACS server-private 1.1.1.1 unkn0wn!unicAst ip tacacs source-interface Loopback0 ! aaa authentication attempts login 1 aaa authentication login default group TACACS local-case aaa authentication login console local-case aaa authentication enable default group TACACS enable aaa authorization exec default group TACACS local aaa authorization commands 0 default group TACACS local aaa authorization commands 15 default group TACACS local aaa accounting exec default action-type start-stop group tacacs+ ! aaa accounting commands 1 default action-type start-stop group tacacs+ ! aaa accounting commands 2 default action-type start-stop group tacacs+ ! aaa accounting commands 15 default action-type start-stop group tacacs+ ! aaa session-id common ! tacacs-server host 10.21.0.45 tacacs-server unkn0wn!unicAst \end{cisco} \section{802.1X} 802.1X deviates from standard \gls{aaa} used in network management by also providing support for: \begin{itemize} \item user mobility and \item user access control by way of governing policies. \end{itemize} %\fig{8021x/8021x}{8021x}{ID Management} Based upon the user connecting to the network. They can be given access to \begin{itemize} \item the resources their group/identity have been assigned or \item put into a guest \gls{vlan} if nothing is assigned to them or \item simply block the client/user altogether. \end{itemize} Cisco switches allow by default only the following 3 protos until the client is authenticated: \gls{eapol}, \gls{cdp}, \gls{stp} traffic to pass. \begin{itemize} \item The \textbf{authenticator\footnote{Network node}} is the edge node/\gls{ap} closest to the client/user. This node controls the clients physical access to the network. The node sends encapsulated \gls{eap} frames to the authentication server by radius for validation. \item The \textbf{authentication server} \end{itemize} \fig{8021X/portauth}{portauth}{802.1X Port Auth} 802.1X can be enabled on a Cisco switch globally by \cliline{dot1x system-auth-control} and \textit{then} enabled on the switch port{\footnotesize (s)} by \cliline{aaa authentication dot1x}. \subsection*{Enable with Cisco config} \begin{cisco} aaa new-model radius server host radiusserver.example.com key .unkown!unicAst. aaa group server radius RADIUS-SERVER-DK server radiusserver.example.com ! aaa authetication dot1x default group RADIUS-SERVER-DK dot1x system-auth-control ! interface GigabitEthernet 0/4 switchport mode access ! Port must be an access port prior dot1x port-control auto ! to enable dot1x on the port \end{cisco} \section[SNMP]{Simple Network Management Protocol} \gls{snmp} is \txtupdown{used heavily} to monitor the status of network nodes all round with a high level of granularity. \textit{Plus} the option to use traps\footnote{\gls{snmp} event triggered by the network node} for instant communication \tsq{bout} current event/events happing on the node.\cite{wiki:Simple_Network_Management_Protocol} \fig{snmp/snmphandshake}{snmphandshake}{\gls{snmp} handshake} \begin{itemize} \item \itemhead{v1} \begin{itemize} \item \itemhead[]{Message Types} \begin{enumerate} \item Get Request, \item Get Next Request, \item Set Request, \item Get Response, and \item Trap. \end{enumerate} \item \textit{Rarely} used these days! \end{itemize} \newpage %do column break \item \itemhead{v2} \begin{itemize} \item \itemhead[]{Message Types} \begin{enumerate} \item Get Request, \item Get Next Request, \item Set Request, \item Get Response, \item Trap, \item \textit{Get Bulk Request}\footnote{To pull data from a network node in bulk}, and \item \textit{Inform Request}\footnote{\gls{snmp} trap message added with a requirement for an acknowledgement returned back to the network node}. \end{enumerate} \item \gls{snmp}v2 added \textit{in addition} to 2 extra message types also a complex new security model. This was never widely accepted which is why we have \gls{snmp}v2c existing and considered the \textit{de-facto} \gls{snmp}v2 standard. \end{itemize} \item \itemhead{v2c} \begin{itemize} \item \gls{snmp}v2c switched from the complex security model \gls{snmp}v2 used to using \texttt{community strings}. This posses a lot of inherent security risks because (amongst other) of the low level Authentication used when polling data from \gls{snmp} agents. Because of this Cisco recommends when using \gls{snmp}v2c to only enable the protocol for data polling from \gls{snmp} agents. \item \textbf{Never} use v2c to push configuration changes to \gls{snmp} agents because the security level is just not up to standard to provide the necessary security level at all. \end{itemize} \item \itemhead{v3} \begin{itemize} \item Is the \txtreflect{recommended} version to run if your aren\tsq{t} forced use fx v2c for some weird legacy reason, \item \texttt{best in class} regarding modern security principals \end{itemize} \end{itemize} \xkcd{hardware_reductionism}{Remember to look into what features a version supports before using it} \fig[http://ccieordie.com/tag/6-1b/]{snmp/snmpcomparison2}{snmpcomparison2}{\gls{snmp} comparison} \begin{cisco} ! Block SNMP access to all but the loghost access-list 20 remark SNMP ACL access-list 20 permit 10.0.10.211 access-list 20 permit 192.0.2.0 0.0.0.127 access-list 20 deny any log ! ! SNMP is VERY important, particularly with MRTG. ! For SNMP version 3 snmp-server view OPS sysUpTime included snmp-server view OPS ifDescr included snmp-server view OPS ifAdminStatus included snmp-server view OPS ifOperStatus included ! snmp-server view V3Read iso included snmp-server view V3Write iso included ! snmp-server enable traps ! snmp-server group OpGroup v3 auth read OPS snmp-server group V3Group v3 auth read V3Read write V3Write ! snmp-server user OpersU OpGroup v3 auth sha Scrtpwd2200 priv aes256 Scrtpwd2220 snmp-server user V3User V3Group v3 auth sha MyPassword1 priv aes256 MyPassword2 ! snmp-server host 192.0.2.10 traps version 3 priv OpersU cpu port-security snmp-server host 10.0.10.211 traps version 3 priv V3User cpu port-security ! snmp-server ifindex persist \end{cisco} \subsection{Implementation Problems with SNMP} \gls{snmp} on any platform is only as good as the software implementation was done by the equipment vendor. Some vendors of network equipment may not implement the same level of functionality in their \gls{snmp} agent as was done in the often proprietary \gls{cli} environment.\cite{wiki:Simple_Network_Management_Protocol} \begin{itemize} \item Under implemented features in \gls{snmp} compared to proprietary \gls{cli} environment, \item badly done \gls{snmp} implementations can sometimes result in unnecessarily high resource utilization, \item values of \textit{tabular} data formats\footnote{Fx \gls{ip} Routing Table} may not be returned in a consistent format when requesting data from equipment from different vendors, \item metrics for fx resource utilization\footnote{Fx hdd usage} locally on a device is not always comparable\footnote{Different vendors may have chosen different methods for measuring resource utilization} across equipment from different vendors. \end{itemize} \section{Routers} \section{Switches} \section{Firewall} \section[OOB Mgmt]{Out-of-Band Management} \subsection{Console Server} \begin{itemize} \item OpenGEAR \end{itemize} \subsection[Remote Mgmt]{Remote Management} \subsubsection{3G/4G} \subsubsection[ADSL]{Asymmetric Digital Subscriber Line} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % HIGH AVAILABILTIY TEXTING AND OPERATIONAL FUNCTIONALITY % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter[HA]{High Availability} \fig{ha/hawordcloud}{hawordcloud}{High Availability in the word cloud} There are different methods and protocols to do \gls{ha} with in the world of networking, routers, and switches. Buzzwords float around the cloud. The topic of availability is and \textbf{old} one. Been around since the start of electronics with \textit{\bsq{so-called}} mission-critical functions. Something along the following type if infrastructure servicing the public: Power Plants, Hospitals, Water Stations, \glspl{chp}. IT/Network infrastructure has become close to if not more important in some cases. The server park churning out numbers, reports, handling image processing, journals, billing, employer salary payments, company payments etcetera. You get the picture by now. If the IT/Network infrastructure is somehow not available or under-performing. It can have a large impact on the day-to-day operations of few/several/many things/people/money. Happen you do not get your salary on time, the company is down with no production possible, there isn't running water in the tap in households, no electricity, no gas to cook or heat with. No hospital operations possible because of a non-functioning network rendering desktop computers/PDAs/mobile hospital units unusable for a lengthy period of time. \begin{center} \smallskip >>\hskip2mm\textbf{All hells lose somewhere!}\hskip2mm<< \end{center} \section[Stacking]{Stacking of {\footnotesize Network} Switches} \begin{center} Cisco proposes \textbf{StackWise for Access} and \textbf{\gls{vss} for Aggregation} Layer modules. \end{center} Go all the way and do consider if Supervisor Redundancy is a necessary requirement, too. \fig{vss/vss}{vss}{2 common ways of doing cabling in switch stacking} \subsection{StackWise} \textit{Per the usual} a Cisco proprietary technology doing the following stuff \footnotesize{not necessarily} in the order specified: \begin{itemize} \item Stacking the switches as one logical unit\footnote{Up to 9 switches can be stacked together} \item A switch can be added/removed from an operational stack without affecting performance \item Configuration is shared by every stack member \item Routing information is shared by every stack member \item The stack is always managed as one single logical unit. All the normal day-to-day operations on the CLI/SNMP Agents/Integrated web server is made to the management \gls{ip}. \item The switches run a modified protocol to communicate all things from the master switch to the slaves and vice-versa. \item New switches are automatically brought up to speed with the operating software from the master node in the stack and will be ready to operate after plug-and-play operation is finished. \item Channel bundling can be performed with member ports across the whole stack. Say 4 ports each in port TenGigE x/1 in member switch 0-3. Now its a 4x10G Channel. \item We can avoid \glspl{stp} internally on the stack as a whole. \textit{Yes}. Fever Layer 2 loops and/or errors. \end{itemize} \textbf{\gls{cli}} \begin{itemize} \item View members of stack: \cliline{show switch} \item View members status of stack ports: \cliline{show switch stack-ports} \end{itemize} \newpage \subsection[VSS]{Virtual Switch Stacking} Activating switch stacking means you get a single control plane for all switches in a \gls{vss} stack. The stack master switch gets to have the active control plane. With help of \gls{sso} \& \gls{nsf} data + switch fabric is kept in sync between stack members. This way no communication is lost when failures \textbf{do} happen at some point. \fig{vss/vss2}{vss2}{How the access layer sees a \gls{vss}} \textbf{Benefits} with \gls{vss} technology is \begin{enumerate} \item Simplified topology, \item use of \gls{mec} to provide loop-free topology, \item with \gls{mec} \gls{fhrp} + \gls{stp} can be avoided. \end{enumerate} \section[FHRP]{First Hop Redundancy Protocol} \myquote{\citealt{wiki:Category:First-hop_redundancy_protocols}}{is a computer networking protocol which is designed to protect the default gateway used on a subnetwork by allowing two or more routers to provide backup for that address} \newpage \subsection[VRRP]{Virtual Router Redundancy Protocol} \begin{itemize} \item \itemhead[]{Defaults} \begin{itemize} \item Priority 100\footnote{Higher is better. Range is 0x00--0xFF} \item Priority 0 is special. Forces master role whenever possible \item Hello time 1s\footnote{Per \gls{rfc} 3768 gls{vrrp} do \textbf{not} support milliseconds timer. Cisco has chosen to implement this. Work only with cisco devices!} \item Hold time 3s \item Multicast grp 224.0.0.18 protocol no. 112 \item 1 master router and the rest is just backup routers \end{itemize} \item \itemhead[]{Properties} \begin{enumerate} \item Can only do object tracking {\footnotesize (Think objects combined with ip sla objects),} \item virtual ip can match interface ip of master router. \end{enumerate} \end{itemize} \newpage \subsection[HSRP]{Hot-Standby Routing Protocol} \begin{itemize} \item \itemhead[]{Defaults} \begin{itemize} \item Priority 100\footnote{Higher is better. Range is 0x00--0xFF} \item Hello time 3s \item Hold time 10s \item Multicast group 224.0.0.2 udp/1985 \textit{(all routers)} {\scriptsize \textbf{v1}} \item Multicast group 224.0.0.102 udp/1985 {\scriptsize \textbf{v2}} \item \gls{hsrp} group mac 00-00-0c-07-ac-xx\footnote{The last 2 octets is the group ID in hex. E.g. 11 is 0x0b, 30 is 0x1e.} \end{itemize} \item \itemhead[]{States} \begin{enumerate} \item \textbf{Initial} \gls{hsrp} is not running yet \item \textbf{Listen} \begin{itemize} \item Learned the Virtual \gls{ip}, \item neither active or standby yet, \item listens for hellos. \end{itemize} \item \textbf{Speak} \begin{itemize} \item Sends hello msg\tsq{s}, \item participates in active/standby election, \item requires Virtual \gls{ip} to enter speak state. \end{itemize} \item \textbf{Standby} \begin{itemize} \item Candidate for active router role, \item still sending hello from time-to-time, \item only 1 standby router.\footnote{The nodes not being active/standby router is given the candidate role.} \end{itemize} \item \textbf{Active} \begin{itemize} \item The forwarding router for the grp Virtual \gls{mac}, \item still sending hellos. \end{itemize} \end{enumerate} \item \itemhead[]{Properties} \begin{enumerate} \item Support auth, \item can do interface tracking, \item can do object tracking, \item cisco proprietary, first seen 1994. \end{enumerate} \end{itemize} Remember use of \textbf{pre-emption} when configuring the \gls{hsrp} routers with all \textit{but} the lowest priority. \subsubsection[Blncd]{Load Sharing} When configuring \newpage \subsection[GLBP]{Gateway Load Balancing Protocol} \begin{itemize} \item \itemhead[]{Defaults} \begin{itemize} \item Hello time 3s \item Hold time 10s \item Uses Multicast 224.0.0.102 udp/3222\footnote{udp/3222 is both source and destination when communicating} \end{itemize} \item \itemhead[]{Properties} \begin{enumerate} \item Support auth, \item can do object tracking, \item only 1 active \gls{avg}, \item only 1 standby \gls{avg}, \item up to 4 \glspl{avf} can be active at any given time, \item cisco Proprietary, first seen 2005. \end{enumerate} \end{itemize}