2001:0db8::1). The :: replaces one or more groups of all zeros.
::
.ip6.arpa
| Class | First Octet | Range | Default Mask | Private Range | Use |
|---|---|---|---|---|---|
| A | 0xxx xxxx | 1.0.0.0 – 126.x.x.x | /8 (255.0.0.0) | 10.0.0.0/8 | Large enterprises, ISPs |
| B | 10xx xxxx | 128.0.0.0 – 191.255.x.x | /16 (255.255.0.0) | 172.16.0.0/12 | Medium/large networks |
| C | 110x xxxx | 192.0.0.0 – 223.255.255.x | /24 (255.255.255.0) | 192.168.0.0/16 | Small networks (≤254 hosts) |
| D | 1110 xxxx | 224.0.0.0 – 239.x.x.x | N/A | None | Multicast groups |
| E | 1111 xxxx | 240.0.0.0 – 255.x.x.x | N/A | None | Research / Reserved |
| Address | Meaning |
|---|---|
| 0.0.0.0 | This network / default route |
| 127.0.0.0/8 | Loopback (127.0.0.1 = localhost) |
| 169.254.0.0/16 | Link-local / APIPA (no DHCP) |
| 255.255.255.255 | Limited broadcast |
| x.x.x.0 | Network address (not usable) |
| x.x.x.255 | Broadcast address (not usable) |
| Range | CIDR | Addresses |
|---|---|---|
| 10.x.x.x | 10.0.0.0/8 | 16.7 million |
| 172.16–31.x.x | 172.16.0.0/12 | 1.05 million |
| 192.168.x.x | 192.168.0.0/16 | 65,536 |
| IPv4 Subnet Reference | ||||
|---|---|---|---|---|
| CIDR | Subnet Mask | Hosts | Block Size | Subnets/C |
| /32 | 255.255.255.255 | 1 (host) | 1 | 256 |
| /31 | 255.255.255.254 | 2 (P2P) | 2 | 128 |
| /30 | 255.255.255.252 | 2 | 4 | 64 |
| /29 | 255.255.255.248 | 6 | 8 | 32 |
| /28 | 255.255.255.240 | 14 | 16 | 16 |
| /27 | 255.255.255.224 | 30 | 32 | 8 |
| /26 | 255.255.255.192 | 62 | 64 | 4 |
| /25 | 255.255.255.128 | 126 | 128 | 2 |
| /24 | 255.255.255.0 | 254 | 256 | 1 |
| /23 | 255.255.254.0 | 510 | 512 | — |
| /22 | 255.255.252.0 | 1,022 | 1024 | — |
| /21 | 255.255.248.0 | 2,046 | 2048 | — |
| /20 | 255.255.240.0 | 4,094 | 4096 | — |
| /19 | 255.255.224.0 | 8,190 | 8192 | — |
| /18 | 255.255.192.0 | 16,382 | 16384 | — |
| /16 | 255.255.0.0 | 65,534 | 65536 | — |
| /8 | 255.0.0.0 | 16,777,214 | 16M | — |
| Powers of 2 (Host Calculation) | |
|---|---|
| 2^n | Usable Hosts (n>1) |
| 2^1 = 2 | 0 (P2P only) |
| 2^2 = 4 | 2 |
| 2^3 = 8 | 6 |
| 2^4 = 16 | 14 |
| 2^5 = 32 | 30 |
| 2^6 = 64 | 62 |
| 2^7 = 128 | 126 |
| 2^8 = 256 | 254 |
| 2^10 = 1024 | 1,022 |
| 2^16 = 65536 | 65,534 |
| 2^24 = 16,777,216 | 16,777,214 |
| Common Subnet Math Tips | ||
|---|---|---|
| Hosts needed → prefix | Find smallest 2^n ≥ hosts+2, prefix = 32-n | |
| Block size | 256 - last octet of mask | |
| Subnets in /24 | 2^(new prefix - 24) | |
| Network addr | IP AND subnet mask | |
| Broadcast addr | Network OR wildcard mask | |
Router(config)# interface GigabitEthernet0/1 Router(config-if)# ip access-group <ACL-ID/NAME> in|out # Verify: Router# show ip access-lists Router# show ip interface Gi0/1
Hi! I'm Chaithanya Kumar Katari, a Network Implementation Manager at Akamai Technologies based in Bengaluru, India. With over 8 years in networking, I specialize in server and switch deployments and configurations worldwide — working directly with ISPs, Accelerated Network Partners, and global infrastructure teams.
My day-to-day involves troubleshooting escalated network, hardware, and performance issues; managing new hardware deployments; and designing, configuring, and maintaining Akamai installations globally. I've worked closely with network partners on racking, cabling, and configuration of Akamai hardware at scale.
I built SubnetLab Pro to give networking students, engineers, and CCNA/CCNP candidates a free, offline, fully-featured subnetting and protocol toolkit — no ads, no logins, no server needed. Now at v15.0 with 60+ interactive simulators spanning ARP, NAT, MTU, TLS, ICMP, TCP, DHCP Relay, and more. Everything I wish I had when I was learning networking myself.
SubnetLab Pro is a fully offline, single-file networking toolkit built by Chaithanya Kumar Katari — a Network Implementation Manager at Akamai Technologies with 8+ years of hands-on global network deployments. No ads. No login. No internet needed. Open the HTML file and everything works instantly.
Visual Subnet Tree Builder
IPv6 Full Suite (EUI-64, SLAAC, NAT64, 6to4)
IP Classes & CIDR Deep Dive
Binary / Hex / Octet Converter
Subnet Masks Reference
↳ Multi-link & Parallel Cable Support
↳ Step-by-Step Election Walkthrough
VLAN 802.1Q Tag Visualizer
BGP Path Selection Simulator
Prefix-List & Route-Map Builder
DNS Recursive / Iterative Chain Animator
BGP Animations Hub (FSM, Best Path, RR)
TCP / TLS Handshake Deep Dive (6 scenarios)
ICMP · Traceroute · PMTUD Simulator
CCNA / CCNP / CCIE Course (30+ modules)
NAT / PAT Simulator (Static, Dynamic, PAT)
MTU / Fragmentation & PMTUD Black Hole
TLS 1.3 / 1.2 / mTLS / Session Resumption
ACL v2 — Rule Editor & Packet Builder
DHCP Relay Agent · GRE Tunnel MTU Overhead
| # | Layer Name | PDU Name | Key Protocols | Addressing | Devices | Real-World Job |
|---|---|---|---|---|---|---|
| 7 | Application | Data | HTTP/S, DNS, FTP, SMTP, SSH, Telnet, SNMP, NTP, DHCP | URL / hostname | Hosts, servers | User-facing data exchange. WHERE the data is born and consumed. |
| 6 | Presentation | Data | TLS/SSL, JPEG, MPEG, ASCII, EBCDIC, XDR | — | Hosts | Translate, encrypt, compress data. TLS lives HERE — not in Application. |
| 5 | Session | Data | NetBIOS, RPC, PPTP, SQL sessions, NFS | Session ID | Hosts | Open / maintain / close sessions. Half-duplex vs full-duplex control. |
| 4 | Transport | Segment (TCP) / Datagram (UDP) | TCP (reliable), UDP (fast), SCTP | Port number (16-bit: 0-65535) | Hosts, firewalls | End-to-end delivery. Multiplexing apps via ports. Reliability (TCP) or speed (UDP). |
| 3 | Network | Packet | IP (v4/v6), ICMP, IGMP, OSPF, BGP, EIGRP, IS-IS | IP address (32-bit IPv4 / 128-bit IPv6) | Routers, L3 switches | Logical addressing + path selection (routing). INTER-network delivery. |
| 2 | Data Link | Frame | Ethernet, Wi-Fi (802.11), PPP, HDLC, Frame-Relay, ARP, STP | MAC address (48-bit) | Switches, bridges, NICs, APs | INTRA-network delivery. MAC addressing. Frame delimiting. CRC error detection. |
| 1 | Physical | Bits | Ethernet (cable spec), Wi-Fi (RF), RS-232, USB, Fiber (SONET/SDH) | No addressing (raw bits) | Hubs, repeaters, cables, fiber, NICs (PHY chip) | Bits to signal conversion. Voltage levels, timing, connectors, wavelengths. |
| IP Protocol # | Protocol | Port(s) | Transport |
|---|---|---|---|
| 6 | TCP | 80,443,22,23,25,21,53 | — |
| 17 | UDP | 53,67,68,69,123,161,514 | — |
| 1 | ICMP | — | Directly over IP |
| 89 | OSPF | — | Directly over IP |
| 88 | EIGRP | — | Directly over IP |
| 47 | GRE | — | Directly over IP |
| 50 | ESP (IPSec) | — | Directly over IP |
| 51 | AH (IPSec) | — | Directly over IP |
| 58 | ICMPv6 | — | Directly over IPv6 |
| Field | Frag 1 | Frag 2 | Frag 3 |
|---|---|---|---|
| ID | 0x1234 | 0x1234 | 0x1234 |
| DF flag | 0 | 0 | 0 |
| MF flag | 1 | 1 | 0 |
| Offset (÷8) | 0 | 185 | 370 |
| Data | 1480B | 1480B | 1020B |
| Total | 1500B | 1500B | 1040B |
ip tcp adjust-mss 1452| Field | ARP Request | ARP Reply |
|---|---|---|
| Eth Dst MAC | FF:FF:FF:FF:FF:FF (broadcast) | AA:BB:CC:DD:EE:FF (requester) |
| Eth Src MAC | AA:BB:CC:DD:EE:FF (requester) | 11:22:33:44:55:66 (responder) |
| ARP Opcode | 1 (Request) | 2 (Reply) |
| Sender MAC | AA:BB:CC:DD:EE:FF | 11:22:33:44:55:66 |
| Sender IP | 192.168.1.10 | 192.168.1.1 |
| Target MAC | 00:00:00:00:00:00 (unknown!) | AA:BB:CC:DD:EE:FF |
| Target IP | 192.168.1.1 (who has this?) | 192.168.1.1 |
| Type | Purpose | When Seen |
|---|---|---|
| ARP Request | "Who has IP X? Tell Y" | New L3 communication |
| ARP Reply | "X is at MAC Y" | Response to request |
| Gratuitous ARP | Sender=Target IP, announce own MAC | Host boot, IP change, HSRP failover |
| Proxy ARP | Router responds with ITS own MAC for IPs on another subnet | When clients have no default gateway set |
| ARP Poisoning | MITM: send fake ARP replies to poison cache | Attack — Dynamic ARP Inspection prevents this |
ping 192.168.1.X → if fails, show arp on the local switch — if no entry, the target is unreachable at L2. Use Wireshark to confirm ARP request goes out and verify no reply comes back.arp.isgratuitous == 1| Standard | Speed | Cable | Max Distance | Signal |
|---|---|---|---|---|
| 10BASE-T | 10 Mbps | Cat3/Cat5 | 100m | Manchester encoding |
| 100BASE-TX | 100 Mbps | Cat5e | 100m | MLT-3, 4B5B |
| 1000BASE-T | 1 Gbps | Cat5e/Cat6 | 100m | PAM-5, all 4 pairs |
| 10GBASE-T | 10 Gbps | Cat6a/Cat7 | 100m | PAM-16 (DSQ128) |
| 1000BASE-SX | 1 Gbps | MMF (OM1-OM4) | 550m | 850nm laser, fiber |
| 1000BASE-LX | 1 Gbps | SMF / MMF | 10km (SMF) | 1310nm laser |
| 10GBASE-SR | 10 Gbps | MMF OM3/OM4 | 300m OM4 | 850nm VCSEL |
| 10GBASE-LR | 10 Gbps | SMF | 10km | 1310nm DFB laser |
| 100GBASE-SR4 | 100 Gbps | MMF OM4 | 100m | 4-lane, 25G per lane |
show interface shows high input errors, CRC, runts. Fix: always hard-code both sides or leave both on auto.| Counter | Root Cause | Fix |
|---|---|---|
| Runts | Frames <64B — collision fragments or duplex mismatch | Fix duplex/speed; check cable |
| Giants | Frames >1518B — misconfigured MTU or jumbo frames | Enable jumbo frames or fix MTU |
| CRC errors | Bit errors in frame — bad cable, duplex mismatch, EMI | Replace cable; fix duplex |
| Input errors | Sum of runts+giants+CRC+frame+overrun | Investigate sub-counters |
| Output drops | Egress queue full — link too slow for traffic rate | QoS queuing; upgrade link |
| Collisions | Normal on half-duplex; never on full-duplex | If on full-duplex: duplex mismatch! |
| Behavior | Detail |
|---|---|
| Cache timeout | Windows: 2min dynamic, 10min for active entries. Cisco IOS: 4 hours. Linux: 60s reachable, garbage collect after 30s stale. |
| Unsolicited update | Routers update ARP cache even from unrequested ARP replies — this is the vulnerability exploited in ARP poisoning. |
| Dynamic ARP Inspection | Switch validates ARP packets against DHCP snooping binding table (MAC+IP+port+VLAN). Drops ARP replies with mismatched IP/MAC. |
| ARP poisoning (MITM) | Attacker sends GARP replies: "192.168.1.1 is at ATTACKER:MAC". Victims send traffic to attacker, who forwards to real gateway. Wireshark filter: arp.duplicate-address-detected |
| Static ARP entry | arp 192.168.1.1 AA:BB:CC:DD:EE:FF arpa — permanent, cannot be poisoned. Used for critical devices. |
show interfaces detail | include CRC|error. ②Bad SFP/transceiver: Dirty fiber connector, wrong wavelength SFP. Clean connectors with fiber cleaner pen. ③EMI/RFI interference: Unshielded cable near electrical equipment (motors, generators, fluorescent lights). Use shielded STP cable. ④Speed mismatch: One side 100M half, other 1G full — while not strictly "duplex," auto-negotiation failure can cause framing errors that show as CRC. ⑤Flapping NIC: show log for link up/down messages. If NIC is resetting mid-frame, you get partial frames → CRC errors. Key metric: CRC errors incrementing on INPUT only suggest cable/layer1 issue. CRC errors on both in/out suggest something at the software or buffer level.no ip proxy-arp on interfaces) and always configure default gateways correctly. Cisco enables proxy ARP by default on all IOS interfaces.In a switched network we need redundancy so one cable failure does not kill the network. But adding redundant links between switches creates loops. Unlike IP packets, Ethernet frames have no TTL field — a broadcast frame caught in a loop circulates forever, consuming all bandwidth and crashing every switch within seconds.
1. Computer A sends ARP broadcast looking for Computer B
2. SwitchA floods it out ALL ports except the source
3. SwitchB and SwitchC both receive it and flood again
4. SwitchA receives the frame back — and floods again
5. Repeats infinitely — no TTL to stop it
6. Switches crash from CPU overload within seconds
All switches exchange special frames called BPDUs every 2 seconds. Each switch starts by claiming to be the Root Bridge — it puts its own Bridge ID in the Root Bridge ID field. When it receives a BPDU with a better (lower) Bridge ID, it stops claiming root and forwards the better BPDU instead. After convergence, consensus forms around the one switch with the best Bridge ID.
| BPDU Timer | Default | Purpose |
|---|---|---|
| Hello Time | 2 sec | How often BPDUs are sent out each port |
| Max Age | 20 sec | If no BPDU received for 20s → topology change detected |
| Forward Delay | 15 sec | Time spent in Listening AND Learning states each |
1. Every switch sends BPDUs claiming "I am the Root Bridge" with its own Bridge ID
2. Switch receives a BPDU with a lower Bridge ID → stops claiming root
3. Switch forwards the better BPDU out all other ports
4. After BPDUs propagate: ONE switch has the lowest Bridge ID — it wins
5. All others become non-root bridges
Bridge ID = Priority + MAC Address
Default priority = 32768 on all switches
→ MAC address is the tiebreaker (lowest wins)
Never leave root bridge election to chance. Your oldest switch has the lowest burned-in MAC and will become root by default — likely the worst candidate. Always set priority manually.
Once the Root Bridge is elected, every non-root switch finds its best (lowest cost) path to root — that port becomes the Root Port. On each link segment, the switch closer to root has the Designated Port. The remaining port loses the tiebreaker and becomes Non-Designated (Blocked) — the loop is broken.
| Link Speed | STP Cost |
|---|---|
| 10 Mbit (Ethernet) | 100 |
| 100 Mbit (FastEthernet) | 19 |
| 1 Gbit (GigabitEthernet) | 4 |
| 10 Gbit | 2 |
| Role | State | Where it appears |
|---|---|---|
| Designated | Forwarding | All ports on Root Bridge; best port on each segment toward root |
| Root Port | Forwarding | One per non-root switch — lowest cost path to root |
| Non-Designated | Blocking 🔴 | The port that loses the tiebreaker — breaks the loop |
1. Lowest Root Bridge ID
2. Lowest Sender Bridge ID
3. Lowest Sender Port Priority
4. Lowest Sender Port Number
Ports connected to PCs or servers never send BPDUs. There is no reason to run through 30 seconds of Listening/Learning. PortFast jumps straight to Forwarding. It does NOT disable STP — if the port receives a BPDU it immediately reverts to normal STP operation.
| Output Field | Meaning |
|---|---|
This bridge is the root | This switch IS the root bridge ✅ |
Priority 32769 | 32768 + VLAN 1 = 32769 (sys-id-ext) |
Cost 19 | FastEthernet cost to reach root bridge |
Port 19 (Fa0/17) | Which local port is the Root Port |
Desg FWD | Designated, Forwarding ✅ |
Root FWD | Root Port, Forwarding ✅ |
Altn BLK | Alternate (blocked) 🔴 |
Prio.Nbr 128.16 | Port priority 128, port number 16 |
Classic STP runs ONE instance for all VLANs. PVST+ runs a separate STP instance per VLAN and lets you have a different Root Bridge per VLAN. This means uplinks that would otherwise be blocked can carry traffic for different VLANs — true load balancing.
Assign VLANs 1-250 → Instance 1, VLANs 251-500 → Instance 2. Each instance can have its own root bridge for load balancing.
| Version | Instances | Speed | Use |
|---|---|---|---|
| PVST+ (default) | 1 per VLAN | 30–50s | Legacy |
| Rapid-PVST+ | 1 per VLAN | <1s | Recommended |
| MSTP (802.1s) | Groups of VLANs | <1s | Large DC/SP |
| Route Source | AD | Why This Value |
|---|---|---|
| Connected interface | 0 | You are physically on this network — most trusted possible |
| Static route | 1 | Admin explicitly configured — almost as trusted as connected |
| EIGRP summary route | 5 | Cisco auto-summary route — very specific, highly trusted |
| eBGP | 20 | External BGP — ISP routes, highly preferred for internet routing |
| EIGRP internal | 90 | Cisco proprietary, fast convergence, metric includes BW+delay |
| IGRP | 100 | Legacy Cisco protocol (obsolete) |
| OSPF | 110 | Open standard, link-state, most common IGP in enterprise |
| IS-IS | 115 | Preferred by ISPs (runs on L2, not IP — survives IP failures) |
| RIP v1/v2 | 120 | Distance vector, hop count only — no bandwidth awareness |
| EIGRP external | 170 | Route redistributed INTO EIGRP from another protocol |
| iBGP | 200 | Internal BGP — trusted less than IGPs to prevent routing loops |
| Unreachable | 255 | Never installed. Used internally by IOS. |
| Packet Dst | Matches | Best Match | Next Hop |
|---|---|---|---|
| 10.10.10.5 | /8, /16, /24, /32 | /32 ← most specific | 192.168.1.4 |
| 10.10.10.99 | /8, /16, /24 | /24 | 192.168.1.3 |
| 10.10.50.1 | /8, /16 | /16 | 192.168.1.2 |
| 10.99.0.1 | /8 only | /8 | 192.168.1.254 |
| 8.8.8.8 | /0 only (default) | /0 (default) | 192.168.1.1 |
| 172.16.0.1 | none (no default if removed) | no match → DROP | ICMP Unreachable |
| Table | Contains | Built From |
|---|---|---|
| FIB | Dest prefix → next-hop IP + outgoing interface | Routing table (RIB) |
| Adjacency Table | Next-hop IP → pre-built L2 header (src+dst MAC) | ARP table |
| Type | Syntax | Use Case | Risk |
|---|---|---|---|
| Standard static | ip route 10.0.0.0 255.0.0.0 192.168.1.1 | Small networks, specific path | No auto-failover |
| Recursive static | ip route 10.0.0.0 255.0.0.0 1.2.3.4 | Next-hop not directly connected | Recursive lookup overhead |
| Directly attached | ip route 10.0.0.0 255.0.0.0 Gi0/0 | Point-to-point links only | On Ethernet: sends ARP for every destination IP! |
| Fully specified | ip route 10.0.0.0 255.0.0.0 Gi0/0 192.168.1.1 | Best practice on Ethernet | None — specify both interface AND next-hop |
| Default route | ip route 0.0.0.0 0.0.0.0 192.168.1.1 | Gateway of last resort | All unknown traffic goes this way |
| Null route (blackhole) | ip route 10.0.0.0 255.0.0.0 Null0 | Drop traffic, prevent routing loops | Silently drops — no ICMP unreachable by default |
| Floating static | ip route 0.0.0.0 0.0.0.0 10.2.2.1 200 | Backup path when primary fails | AD must be higher than primary protocol |
ip route 10.0.0.0/8 Gi0/0 causes the router to send an ARP request for EVERY destination IP in 10.0.0.0/8 — the ARP table explodes (called an "ARP flooding" or "proxy ARP storm"). Always use fully specified static routes on multi-access Ethernet segments.show ip route — Every Field Decodedshow ip route 8.8.8.8 — identifies which route matches (longest prefix). Shows next-hop IP and egress interface. ②show ip cef 8.8.8.8 detail — shows the FIB entry and which adjacency is being used for forwarding. ③show adjacency [interface] detail — shows the pre-built L2 header (which MAC addresses will be stamped on the outgoing frame). ④traceroute 8.8.8.8 source 192.168.1.10 — verifies the actual hop-by-hop path and round-trip times. ⑤show ip cef exact-route 192.168.1.10 8.8.8.8 — the most specific command, shows exact FIB lookup for this src→dst pair (useful with load balancing). ⑥debug ip packet detail — last resort in production, shows per-packet forwarding decisions. Use with access-list filter to limit output, and always undebug all after.ip route x.x.x.x y.y.y.y Null0) sends matching traffic to Null0 — a virtual interface that silently drops packets. No ICMP unreachable is generated by default (though you can enable it with ip icmp rate-limit unreachable). Use case 1 — Summary route black-holing: If R1 advertises a summary 10.0.0.0/8 to neighbors but only has specific /24 routes internally, what happens for 10.99.0.1 (a hole in the summary)? Without a null route, R1 has no specific route, falls through to default, which may send the packet back toward the neighbor — a routing loop. Solution: ip route 10.0.0.0 255.0.0.0 Null0 254. Any destination not matched by a specific route inside 10.0.0.0/8 hits the null route and is dropped, preventing the loop. Use case 2 — DDoS mitigation (RTBH): Remotely Triggered Black Hole filtering. When under DDoS attack on IP 1.2.3.4, inject a /32 null route for 1.2.3.4 via BGP community to all edge routers. Traffic destined for that IP is dropped at the network edge instead of overwhelming your server. Akamai and all major ISPs use this technique operationally.| Type | Number Range | Match On | Granularity |
|---|---|---|---|
| Standard IP | 1-99, 1300-1999 | Source IP only | Low |
| Extended IP | 100-199, 2000-2699 | Src+Dst IP, Port, Protocol | High |
| Named Standard | Any name | Source IP only | Low |
| Named Extended | Any name | Full 5-tuple | High |
| Component | Purpose | Example |
|---|---|---|
| match | Define what to select | match ip address prefix-list MYLIST |
| set | What action to take | set local-preference 200 |
| permit | Apply set actions | Route-map clause permits = applies policy |
| deny | Reject matching routes | Route-map clause deny = drop route |
| No match | If no match clause | permit=ALL routes match; deny=NO routes match |
| Subnet Mask | Wildcard Mask | What It Matches |
|---|---|---|
| 255.255.255.255 | 0.0.0.0 | Exact host match (host keyword) |
| 255.255.255.0 | 0.0.0.255 | Entire /24 subnet |
| 255.255.255.192 | 0.0.0.63 | Entire /26 subnet |
| 255.255.0.0 | 0.0.255.255 | Entire /16 block |
| 0.0.0.0 | 255.255.255.255 | Any IP (any keyword) |
| 255.255.255.0 (odd trick) | 0.0.0.254 | All EVEN IPs in subnet (unusual) |
| Match Field | Keyword | Example | Notes |
|---|---|---|---|
| Protocol | tcp / udp / icmp / ip / ospf / eigrp | permit tcp ... | "ip" matches ALL protocols |
| Source IP | host X.X.X.X / network wildcard / any | 10.1.1.0 0.0.0.255 | host = exact IP, any = 0.0.0.0 255.255.255.255 |
| Source Port | eq / lt / gt / range / neq | eq 1024 / range 1024 65535 | TCP/UDP only |
| Dest IP | same as source | host 8.8.8.8 | — |
| Dest Port | eq / lt / gt / range | eq 80 / eq www / eq 443 | Named ports: www=80, domain=53, ssh=22 |
| TCP Flags | established / syn / fin / rst / ack | permit tcp any any established | established = ACK or RST bit set (return traffic) |
| ICMP Type | echo / echo-reply / unreachable / traceroute | permit icmp any any echo-reply | Permits return pings without opening full ICMP |
| DSCP | dscp value | permit ip any any dscp ef | Match QoS-marked traffic (EF=46) |
established keyword only checks the ACK/RST bit, which can be spoofed. Cisco ASA/Firepower uses stateful inspection — automatically permits return traffic for established sessions. For production firewalls, always use stateful inspection.show ip access-lists [name] — look at match counts. If your permit has 0 matches and the deny above it has matches, the deny is too broad and is catching your traffic first. Reorder: put specific permits before general denies. ②Wrong direction: Applied inbound but traffic flows outbound (or vice versa). Inbound = traffic entering the interface FROM outside. Outbound = traffic leaving the interface. Run show ip interface Gi0/0 | include access to confirm direction. ③ACL applied to wrong interface: You put it on Gi0/0 but traffic enters via Gi0/1. ④Forgot to permit return traffic: Outbound HTTP is permitted but return traffic (established TCP) has no permit rule — use permit tcp any any established for inbound. ⑤Routing protocol traffic blocked: OSPF hello uses 224.0.0.5 multicast — if your ACL doesn't explicitly permit permit ospf any any, OSPF adjacencies drop when ACL is applied to a router interface participating in OSPF.| # | State | What's happening | Stuck here = problem |
|---|---|---|---|
| 1 | Down | No hellos received. Initial state. | Dead interval expired (4× hello) |
| 2 | Attempt | Sending Hello to configured neighbor (NBMA) | NBMA neighbor unreachable |
| 3 | Init | Hello received but MY router-id not in it | Hello heard but not bidirectional — check firewall blocking 224.0.0.5 |
| 4 | 2-Way | MY router-id IS in neighbor's Hello. DR/BDR election happens here. | Normal for DROther↔DROther on broadcast segments |
| 5 | ExStart | Master/Slave election by Router-ID. Negotiating DBD sequence numbers. | MTU MISMATCH — most common cause! Check: show int, ip ospf mtu-ignore |
| 6 | Exchange | Exchanging DBD (Database Description) packets with LSDB summary | Corrupt DBD packets, authentication mismatch |
| 7 | Loading | Requesting full LSAs via LSR (Link State Request) | LSA database inconsistency |
| 8 | Full | LSDB synchronized. Only state with working adjacency. | N/A — this is the goal! |
| Symptom | Root Cause | Command to Verify | Fix |
|---|---|---|---|
| Neighbor stuck INIT | Unidirectional hello (firewall blocking 224.0.0.5, wrong area) | show ip ospf neighbor; debug ip ospf hello | Fix firewall; verify same area; check network statement |
| Neighbor stuck EXSTART | MTU mismatch (most common) | show interfaces — compare MTU both sides | ip ospf mtu-ignore OR fix MTU to match |
| Neighbor flapping | Hello/Dead timer mismatch OR unstable link | show ip ospf interface — verify timers | Align timers (must match on both sides) |
| No adjacency at 2-WAY | Network type mismatch (e.g. broadcast vs p2p) | show ip ospf interface — check "Network Type" | ip ospf network broadcast/point-to-point |
| Routes missing | Summarization filtering, area type restriction, redistribute missing | show ip ospf database; show ip route ospf | Check LSA types for area type; add redistribution |
| Wrong DR elected | Priority not set; pre-existing DR (non-preemptive) | show ip ospf neighbor; show ip ospf interface | Set priority, clear ospf process on segment |
show interfaces Gi0/0 on both routers — if MTUs differ (e.g. 1500 vs 1476 due to tunnel), DBD packets are dropped. Fix: ip ospf mtu-ignore as temporary fix, or align MTU. ②Duplicate Router-IDs: Two routers with same router-id — check show ip ospf | include Router ID on both. ③DBD options mismatch: E-bit (external capability) differences — rare but check with debug ip ospf adj. ④Authentication type mismatch: One side uses MD5, other uses clear text. Verify with show ip ospf interface detail | include auth. The debug command debug ip ospf adj will show the exact error message causing the EXSTART loop.auto-cost reference-bandwidth 10000 (in Mbps = 10 Gbps reference). Now: FE=1000, GbE=100, 10GbE=10, 100GbE=1. ALWAYS set this consistently on ALL OSPF routers — inconsistent reference bandwidth leads to suboptimal routing because costs won't be comparable across the domain. Cost table with default 100M reference: FE=1, Eth=10, E1=64, T1=64, 64K=1562.| Option (Kind) | Size | Purpose | SYN only? |
|---|---|---|---|
| MSS (2) | 4B | Tell peer max segment size to send me. Default = 1460 for Ethernet. | Yes |
| SACK-Permitted (4) | 2B | I support Selective ACKs. | Yes |
| Window Scale (3) | 3B | Multiply window size by 2^n. Needed for fast networks (high BDP) | Yes |
| Timestamps (8) | 10B | RTT measurement + PAWS (protect against old segments) | No |
| SACK (5) | Variable | Selective ACK: "I got bytes 1-500 and 800-1000, missing 501-799" | No |
SO_REUSEADDR.| RST scenario | Who sends it? | Wireshark alert |
|---|---|---|
| Port not listening | Server kernel (OS) | [TCP RST, ACK] |
| Firewall block | Firewall or load-balancer | [TCP RST] |
| Connection timeout | Sender times out | [TCP RST] |
| Invalid segment | Either side | [TCP RST] |
| App crash | OS on behalf of app | [TCP RST, ACK] |
| Feature | TCP | UDP |
|---|---|---|
| Connection | Connection-oriented (3WHS) | Connectionless |
| Reliability | Guaranteed delivery + ordering | Best effort, no ordering |
| Header Size | 20-60 bytes | 8 bytes fixed |
| Flow Control | Window size mechanism | None |
| Congestion | Slow start, AIMD, CUBIC | None (app responsible) |
| Use Cases | HTTP, HTTPS, FTP, SSH, BGP, SMTP | DNS, DHCP, VoIP, gaming, SNMP |
| Latency | Higher (handshake + ACK overhead) | Lower (fire and forget) |
show conn (ASA) to see connection table, show tcp brief, debug ip tcp transactions. In production at Akamai scale: RSTs from edge routers usually indicate MSS mismatch or asymmetric routing where the return path goes through a different device that doesn't have connection state.| Algorithm | OS/Version | How It Grows CWND | Best For |
|---|---|---|---|
| Reno | Classic | +1 MSS/RTT in CA. On loss: CWND=ssthresh (halved) | Low BDP, high-loss paths |
| NewReno | RFC 6582 | Reno + better recovery from multiple losses in one window | General |
| CUBIC | Linux default since 2.6.19 | Cubic function — aggressive on fast links, conservative near loss point | High-BDP (WAN, CDN) |
| BBR | Google 2016, Linux 4.9+ | Model-based: measures BtlBW and RTprop, ignores queue delay | Long-fat pipes, lossy wifi |
| RACK | RFC 8985 | Time-based loss detection instead of dup-ACK counting | Reordered packets |
| State | Side | Meaning | Transition |
|---|---|---|---|
| CLOSED | Both | No connection | → LISTEN (server) or SYN_SENT (client) |
| LISTEN | Server | Waiting for SYN | → SYN_RCVD on SYN received |
| SYN_SENT | Client | SYN sent, awaiting SYN-ACK | → ESTABLISHED on SYN-ACK |
| SYN_RCVD | Server | SYN received, SYN-ACK sent | → ESTABLISHED on ACK |
| ESTABLISHED | Both | Data flowing. Normal state. | → FIN_WAIT_1 (active close) |
| FIN_WAIT_1 | Active close | FIN sent, waiting for ACK | → FIN_WAIT_2 |
| FIN_WAIT_2 | Active close | ACK received, waiting for FIN | → TIME_WAIT on FIN |
| CLOSE_WAIT | Passive close | FIN received, app still has data | → LAST_ACK when app closes |
| LAST_ACK | Passive close | FIN sent, waiting for final ACK | → CLOSED |
| TIME_WAIT | Active close | Waiting 2×MSL (60–240s) | → CLOSED after 2MSL timeout |
| CLOSING | Simultaneous close | Both sides FIN at same time | → TIME_WAIT |
| Protocol | Why UDP not TCP? |
|---|---|
| DNS | Single query/response fits in one packet. TCP overhead (3WHS) for every DNS lookup would be catastrophically slow. DNS uses TCP only for large responses (>512B) or zone transfers. |
| DHCP | Client has no IP yet — can't establish TCP session. UDP broadcast allows server discovery without pre-existing connection. |
| VoIP (RTP) | Retransmitting late audio is useless — a retransmitted packet arriving 200ms late creates worse artifacts than no packet. UDP + jitter buffer gives better results than TCP retransmits. |
| SNMP | Polling-based monitoring. Lost poll = just miss one data point. TCP overhead per poll unnecessary. SNMP traps are fire-and-forget by design. |
| QUIC (HTTP/3) | UDP-based but adds reliability, ordering, and multiplexing at the application layer — best of both worlds. Avoids TCP head-of-line blocking. |
| TFTP | Simple file transfer used for router/switch IOS upgrades. Implements its own basic ACK mechanism over UDP. |
ss -tin dst [server_ip] — look at "rcvbuf" and "sndbuf". On Linux, auto-tuning should handle this but may be misconfigured. ②TCP Window Scaling disabled: If window scale option was not negotiated (older OS, firewall stripping TCP options), window stays at 64KB. Run Wireshark — check SYN/SYN-ACK for Window Scale option (Kind=3). If missing, max throughput is limited. ③Firewall/middlebox stripping TCP options: Some firewalls strip all TCP options including SACK and Window Scale. Bypass the firewall and test directly. ④Jumbo frames mismatch: Servers may have jumbo frames (MTU 9000) enabled but intermediate switches don't. This causes fragmentation or PMTUD failure → TCP falls back to tiny MSS. ⑤CPU bottleneck: Check CPU on both servers — high CPU (especially softirq/kernel network processing) can rate-limit TCP. ⑥Nagle's algorithm + delayed ACK interaction: For many small writes, Nagle + 200ms delayed ACK can cause 200ms delays per RTT. Disable with TCP_NODELAY on the application socket. ⑦netstat -s | grep -i retransmit — even low retransmit rates (1%) can halve throughput with some congestion algorithms.bootp or dhcp. All 4 DORA messages are UDP broadcasts or unicasts — no TCP!| Field | Size | Discover Value | Offer Value | Request Value | ACK Value |
|---|---|---|---|---|---|
| OP (Op Code) | 1 byte | 1 (BOOTREQUEST) | 2 (BOOTREPLY) | 1 (BOOTREQUEST) | 2 (BOOTREPLY) |
| HTYPE | 1 byte | 1 = Ethernet (all 4 messages) | |||
| HLEN | 1 byte | 6 = MAC address length (all 4 messages) | |||
| HOPS | 1 byte | 0 | 0 | 0 (or N if relayed) | 0 |
| XID (Transaction ID) | 4 bytes | 0x3903F326 * | 0x3903F326 * | 0x3903F326 * | 0x3903F326 * |
| SECS | 2 bytes | 0 | 0 | 0 | 0 |
| FLAGS | 2 bytes | 0x8000 (broadcast) | 0x0000 | 0x8000 (broadcast) | 0x0000 |
| CIADDR (Client IP) | 4 bytes | 0.0.0.0 (no IP yet) | 0.0.0.0 | 0.0.0.0 | 192.168.1.100 |
| YIADDR (Your IP) | 4 bytes | 0.0.0.0 | 192.168.1.100 | 0.0.0.0 | 192.168.1.100 |
| SIADDR (Server IP) | 4 bytes | 0.0.0.0 | 192.168.1.1 | 0.0.0.0 | 192.168.1.1 |
| CHADDR (Client MAC) | 16 bytes | 00:0c:29:xx:xx:xx (client MAC, same in all 4) | |||
| SNAME | 64 bytes | Server hostname (usually empty) | |||
| FILE | 128 bytes | Boot filename (used for PXE boot) | |||
| OPTIONS | Variable | Magic cookie + Option 53 (Discover) | Opt 53(Offer)+54+51+1+3+6 | Opt 53(Request)+54+50 | Opt 53(ACK)+54+51+1+3+6 |
| Option # | Name | Sent in | Example Value |
|---|---|---|---|
| 53 | DHCP Message Type | All | 1=Disc 2=Offer 3=Req 5=ACK 6=NAK |
| 54 | Server Identifier | Offer, ACK | 192.168.1.1 (DHCP server IP) |
| 51 | IP Lease Time | Offer, ACK | 86400 = 24 hours |
| 58 | Renewal Time (T1) | ACK | 43200 = 50% of lease (12hrs) |
| 59 | Rebinding Time (T2) | ACK | 75600 = 87.5% of lease (21hrs) |
| 1 | Subnet Mask | Offer, ACK | 255.255.255.0 |
| 3 | Default Gateway | Offer, ACK | 192.168.1.1 |
| 6 | DNS Servers | Offer, ACK | 8.8.8.8, 8.8.4.4 |
| 15 | Domain Name | Offer, ACK | example.com |
| 50 | Requested IP | Discover, Request | 192.168.1.100 (client prefers) |
| 55 | Parameter Request List | Discover | List of options client wants (1,3,6,15...) |
| 82 | Relay Agent Info | Discover, Request | Circuit-ID, Remote-ID (added by relay) |
Resolver → Root/TLD/Auth: ITERATIVE ("give me the next hop or the final answer")
| Record | Full Name | Purpose | Example |
|---|---|---|---|
| A | Address | Hostname → IPv4 | www.cisco.com → 72.163.4.185 |
| AAAA | IPv6 Address | Hostname → IPv6 | www.google.com → 2607:f8b0::200e |
| CNAME | Canonical Name | Alias → another hostname | www.example.com → example.com |
| MX | Mail Exchange | Email server for domain | @cisco.com → mail.cisco.com (prio 10) |
| PTR | Pointer | Reverse DNS: IP → hostname | 8.8.8.8 → dns.google |
| NS | Name Server | Authoritative NS for zone | google.com → ns1.google.com |
| SOA | Start of Auth. | Zone metadata, primary NS, serial | Zone's master record |
| TXT | Text | SPF, DKIM, DMARC, domain verification | v=spf1 include:google.com |
| SRV | Service | Service location (SIP, LDAP) | _sip._tcp.example.com |
| CAA | Cert Authority Auth. | Which CAs can issue certs | issue "letsencrypt.org" |
ip dhcp snooping globally, ip dhcp snooping vlan 10, ip dhcp snooping trust on uplink ports only. CRITICAL: Don't forget to configure rate-limit on untrusted ports to prevent DHCP exhaustion attacks.| Type | Mapping | Use Case | Ports Translated? | Config Command |
|---|---|---|---|---|
| Static NAT | 1 private ↔ 1 public (fixed) | Servers needing permanent public IP (web, mail) | No | ip nat inside source static 10.1.1.1 203.0.113.1 |
| Dynamic NAT | 1 private → 1 pool public (rotates) | Pools of users needing temporary public IPs | No | ip nat inside source list 1 pool MYPOOL |
| PAT / Overload | Many private → 1 public (port-differentiated) | Typical home/enterprise internet access | YES — TCP/UDP port | ip nat inside source list 1 interface Gi0/0 overload |
| Static PAT | 1 private:port ↔ 1 public:port | Port forwarding (e.g. DMZ web server) | YES — static mapping | ip nat inside source static tcp 10.1.1.10 80 203.0.113.1 80 |
| NAT64 | IPv6 client → IPv4 server | IPv6-only clients reaching IPv4 internet | Optional | nat64 prefix stateful 64:ff9b::/96 |
| Term | Meaning | Example |
|---|---|---|
| Inside Local | Private IP of inside host (as seen inside) | 10.1.1.10:1024 |
| Inside Global | Public IP of inside host (as seen outside) | 203.0.113.1:10001 |
| Outside Global | Public IP of outside server (as seen outside) | 8.8.8.8:53 |
| Outside Local | IP of outside server as seen by inside hosts (same as Outside Global unless Twice NAT) | 8.8.8.8:53 |
| Protocol | Problem | ALG Action |
|---|---|---|
| FTP (Active mode) | Client sends private IP in PORT command | NAT rewrites PORT command payload with public IP |
| SIP/VoIP | Private IP in SDP body (media RTP address) | NAT rewrites SDP c= and m= lines |
| H.323 | Private IP embedded in H.323 PDUs | H.323 ALG rewrites gatekeeper registrations |
| PPTP | GRE protocol has no ports — NAT-T needed | NAT tracks GRE call IDs instead of ports |
| IPSec ESP (tunnel) | Encrypted — NAT can't see ports. Breaks ESP. | NAT-T: encapsulate ESP in UDP 4500 |
| Standard | Wi-Fi Name | Max Speed | Frequency | Key Technology | Year |
|---|---|---|---|---|---|
| 802.11b | — | 11 Mbps | 2.4 GHz | DSSS, 3 non-overlapping channels | 1999 |
| 802.11a | — | 54 Mbps | 5 GHz | OFDM, 23 non-overlapping channels | 1999 |
| 802.11g | — | 54 Mbps | 2.4 GHz | OFDM, backward compat with b | 2003 |
| 802.11n | Wi-Fi 4 | 600 Mbps | 2.4 + 5 GHz | MIMO (4×4), channel bonding (40MHz), STBC | 2009 |
| 802.11ac | Wi-Fi 5 | 6.9 Gbps | 5 GHz only | MU-MIMO (DL), 8 spatial streams, 80/160MHz, 256-QAM | 2013 |
| 802.11ax | Wi-Fi 6 | 9.6 Gbps | 2.4 + 5 GHz | OFDMA, MU-MIMO (UL+DL), BSS Coloring, TWT, 1024-QAM | 2019 |
| 802.11ax | Wi-Fi 6E | 9.6 Gbps | 2.4+5+6 GHz | Adds 6GHz band (1.2GHz spectrum), 14 new 80MHz channels | 2021 |
| 802.11be | Wi-Fi 7 | 46 Gbps | 2.4+5+6 GHz | 320MHz channels, 4K-QAM, Multi-Link Operation | 2024 |
| Feature | WPA2 | WPA3 |
|---|---|---|
| Key exchange | PSK (pre-shared key direct) | SAE (Dragonfly handshake — perfect forward secrecy) |
| Offline dict attack | Vulnerable — capture 4-way, crack offline | Not possible — each auth needs online interaction |
| PMF (Mgmt Frame Protection) | Optional | Mandatory — prevents deauth/disassoc flooding |
| Open network encryption | None | OWE (Opportunistic Wireless Encryption) |
| Enterprise | 802.1X + RADIUS | 192-bit security suite (GCMP-256) |
| Function | Autonomous AP | Lightweight AP (CAPWAP) |
|---|---|---|
| Configuration | Per-AP (CLI/web) | Centralized on WLC |
| 802.11 beacons/probe | Local | Local (real-time) |
| Client auth | Local | Forwarded to WLC |
| Data forwarding | Local bridging | CAPWAP tunnel to WLC (or FlexConnect local) |
| Roaming | Manual re-assoc | Seamless Layer 2 / Layer 3 roaming via WLC |
| Updates | Per-device | Mass push from WLC |
| Standard | Name | What it does |
|---|---|---|
| 802.11r | Fast BSS Transition (FT) | Pre-authenticates client to target AP BEFORE roam. Reduces roam time from ~400ms to <50ms — critical for VoIP |
| 802.11k | Radio Resource Management | Client requests neighbor report — AP provides list of nearby APs + their channel/RSSI → client can make informed roam decision |
| 802.11v | BSS Transition Management | AP can suggest or force client to roam to a better AP — critical for load balancing and sticky client management |
| Feature | HSRP v1/v2 | VRRP v2/v3 | GLBP |
|---|---|---|---|
| Standard | Cisco proprietary | RFC 3768 / RFC 5798 | Cisco proprietary |
| Roles | Active / Standby / Listen | Master / Backup | AVG + AVF (up to 4) |
| Virtual MAC | 0000.0c07.acXX (v1) 0000.0c9f.fXXX (v2) | 0000.5e00.01XX | 0007.b400.XXYY |
| Multicast addr | 224.0.0.2 (v1) / 224.0.0.102 (v2) | 224.0.0.18 | 224.0.0.102 |
| Load balancing | No (only failover) | No (only failover) | YES — round-robin, weighted, host-dependent |
| Preemption | Off by default | On by default | Off by default (AVG) |
| Auth support | Plain text / MD5 | Plain text (v2) / None (v3) | MD5 |
| IPv6 support | HSRPv2 only | VRRPv3 | Yes |
| State | Role | Behavior |
|---|---|---|
| Initial | Starting up | HSRP process just started, no hellos sent yet |
| Learn | Discovering | Waiting for hello from Active to learn virtual IP |
| Listen | Passive | Knows virtual IP, not Active/Standby, monitors hellos |
| Speak | Candidate | Sending hellos, participating in election |
| Standby | Backup | Monitoring Active, ready to take over in holddown timer |
| Active | Forwarding | Responding to virtual MAC, forwarding packets |
| Attack | Method | Impact | Defense |
|---|---|---|---|
| MAC flooding | Send millions of frames with fake MACs to fill switch CAM table | Switch fails open → floods ALL frames → attacker sees all traffic (like a hub) | Port security (max MAC per port) |
| ARP poisoning | Send gratuitous ARPs with attacker's MAC for victim's IP | MITM: all traffic for victim IP goes to attacker | Dynamic ARP Inspection (DAI) |
| DHCP starvation | Send thousands of DISCOVER with fake MACs to exhaust pool | Legitimate clients can't get IP — DoS | DHCP snooping + rate limiting |
| Rogue DHCP | Attacker runs own DHCP server → gives clients attacker as gateway | MITM for all new clients | DHCP snooping (trusted ports only) |
| VLAN hopping (double-tag) | Attacker sends 802.1Q frame with outer VLAN=native VLAN → switch strips it, forwards inner VLAN tag to target VLAN | Access VLAN you're not supposed to be in | Change native VLAN to unused VLAN 999 |
| STP attack | Attacker sends superior BPDUs to become root bridge | Traffic redirected through attacker → MITM or loop | BPDU Guard + Root Guard |
| Role | Device | Protocol |
|---|---|---|
| Supplicant | End device (PC, phone) | EAP over LAN (EAPOL) |
| Authenticator | Switch / WAP | EAPOL (toward supplicant) + RADIUS (toward server) |
| Auth Server | RADIUS (Cisco ISE, FreeRADIUS) | RADIUS (UDP 1812/1813) |
The cool thing about EtherChannel is that it bundles all physical links into a logical link with the combined bandwidth. By combining 4×100 Mbit I now have a 400 Mbit link.
EtherChannel does load balancing among the different physical links, and it takes care of redundancy — once one link fails it keeps working using the remaining links. Maximum: 8 physical interfaces per EtherChannel.
• Same duplex (full/half)
• Same speed
• Same native VLAN
• Same allowed VLANs list
• Same switchport mode (all access OR all trunk)
PAgP and LACP verify these automatically. Static "on" does NOT check — silent failure possible.
| Protocol | Standard | Use When |
|---|---|---|
| PAgP | Cisco proprietary | Cisco-to-Cisco ONLY |
| LACP (802.3ad) | IEEE standard | Any vendor combination |
PAgP can only form EtherChannels between Cisco devices. If you want to configure PAgP you have a number of options to choose from per interface:
| Mode | What It Does |
|---|---|
| Desirable | Interface actively asks the other side to become an EtherChannel. It initiates PAgP negotiation. |
| Auto | Interface waits passively for the other side to ask. It will respond but never initiate. |
| On | Interface becomes a member of the EtherChannel but does NOT negotiate. Other side must also be On. |
| Off | No EtherChannel configured on this interface. |
| Side A \ Side B | On | Desirable | Auto | Off |
|---|---|---|---|---|
| On | ✅ | ❌ Err | ❌ Err | ❌ |
| Desirable | ❌ Err | ✅ | ✅ | ❌ |
| Auto | ❌ Err | ✅ | ❌ No | ❌ |
| Off | ❌ | ❌ | ❌ | ❌ |
LACP is the IEEE standard, identical in function to PAgP but works between any vendor. PAgP can only be used between Cisco devices while LACP works with Cisco, HP, Aruba, Juniper, and any 802.3ad-compliant switch. The modes mirror PAgP but use different names:
| LACP Mode | PAgP Equivalent | What It Does |
|---|---|---|
| Active | Desirable | Actively sends LACP PDUs, initiates the EtherChannel |
| Passive | Auto | Waits for LACP PDUs, responds but never initiates |
| On | On | Static — no LACP negotiation, no verification |
| Side A \ Side B | On | Active | Passive | Off |
|---|---|---|---|---|
| On | ✅ | ❌ | ❌ | ❌ |
| Active | ❌ | ✅ | ✅ | ❌ |
| Passive | ❌ | ✅ | ❌ | ❌ |
| Off | ❌ | ❌ | ❌ | ❌ |
EtherChannel load balancing is NOT round-robin per packet. It hashes a key attribute (src/dst MAC or IP) and always sends the same conversation down the same physical link — this preserves TCP packet ordering. The default is source MAC address. This works well when you have many source MACs, but creates a problem when one side has only one device:
| Method | Best Scenario |
|---|---|
| src-dst-ip | Layer 3 routed — many unique IP flows (best general choice) |
| src-mac | Many source devices (computers → switch) |
| dst-mac | One source device, many destinations (router → computers) |
| src-dst-mac | Mixed L2 traffic, many unique pairs |
EIGRP stands for Enhanced Interior Gateway Routing Protocol and is a routing protocol created by Cisco. It is called a hybrid or advanced distance vector protocol — it behaves like a distance vector (only shares routes with directly-connected neighbors) but uses the DUAL algorithm which gives it link-state-like properties: loop-free paths, fast convergence, and topology awareness.
The same loop-prevention rules from distance vector apply to EIGRP: split horizon, route poisoning, and poison reverse. But unlike RIP, EIGRP only sends triggered updates when something changes — no periodic 30-second floods of the full routing table.
| Feature | EIGRP Value |
|---|---|
| Protocol type | Hybrid (Advanced Distance Vector) |
| Algorithm | DUAL — Diffusing Update Algorithm |
| Metric | Composite: Bandwidth + Delay (by default) |
| Administrative Distance | 90 (internal) / 170 (external) |
| Transport | IP Protocol 88 (not TCP or UDP) |
| Multicast address | 224.0.0.10 |
| Updates | Triggered ONLY — no 30s periodic floods |
| Load balancing | Equal AND unequal cost (unique!) |
| Vendor support | Cisco (opened in RFC 7868 in 2016) |
This is the core concept of EIGRP. Every student struggles with this at first. Let's walk through it exactly as it works using simple numbers. Three routers: KingKong, Ann, and Carl. We want to find the best path to the destination behind Carl.
Advertised Distance (AD): How far the destination is for YOUR NEIGHBOR — they tell you this.
Feasible Distance (FD): YOUR total distance to the destination — AD + cost of your link to that neighbor.
Now let's find the Successor (best path) and check if we have any Feasible Successors (backup paths). We are on the unnamed router on the left. Link costs: to KingKong=5, to Ann=5, to Carl=100.
Let's configure EIGRP on 4 routers: KingKong, Ann, Carl, and Preston. All links are FastEthernet except KingKong↔Carl which is Ethernet (10 Mbit). Preston has a loopback 4.4.4.0/24 behind it.
OSPF can only load balance on equal-cost paths. EIGRP can load balance over unequal-cost paths using the variance multiplier. A Feasible Successor is included in the routing table for load balancing if its FD ≤ (Successor FD × variance).
IPv4 has 32 bits which gives us 4,294,967,296 IP addresses. When the Internet was born companies received entire Class A (16 million addresses), B (65,535 addresses), or C (256 addresses) networks. Large companies like Apple, Microsoft, IBM got one or more Class A networks — but did they really need 16 million IP addresses? Many were just wasted.
We started using VLSM so we could create smaller subnets, and we have NAT/PAT so many private IP addresses can hide behind a single public IP. Nevertheless, the Internet grew in a way nobody expected. Despite VLSM and NAT/PAT we ran out of IPv4 addresses and IPv6 was born.
What happened to IPv5? IP version 5 was used for an experimental project called "Internet Stream Protocol" (RFC 1819). It was never deployed as a general-purpose protocol, so we went straight from IPv4 to IPv6.
IPv6 has 128-bit addresses compared to 32-bit IPv4. Every additional bit doubles the number of addresses:
That's 340 undecillion addresses — enough for every device on Earth, the Moon, Mars, and the rest of the universe.
| Feature | IPv4 | IPv6 |
|---|---|---|
| Address size | 32 bits | 128 bits |
| Total addresses | ~4.3 billion | 340 undecillion (2¹²⁸) |
| Format | Decimal dotted | 8 groups of hex |
| Broadcast | Yes | No — use multicast |
| ARP | Yes | No — replaced by NDP |
| DHCP | DHCPv4 | DHCPv6 or SLAAC (new!) |
| Header size | Variable 20-60 bytes | Fixed 40 bytes |
| OSPF version | OSPFv2 | OSPFv3 |
| RIP version | RIPv1/v2 | RIPng |
| BGP | BGP-4 | MP-BGP4 |
| EIGRP | EIGRP | EIGRPv6 |
IPv6 addresses are written in hexadecimal with 8 groups of 4 hex characters separated by colons: 2041:0000:140F:0000:0000:0000:875B:131B. Typing this is painful, so there are three rules to shorten it.
| Hex | Binary | Dec | Hex | Binary | Dec |
|---|---|---|---|---|---|
| 0 | 0000 | 0 | 8 | 1000 | 8 |
| 1 | 0001 | 1 | 9 | 1001 | 9 |
| 2 | 0010 | 2 | A | 1010 | 10 |
| 3 | 0011 | 3 | B | 1011 | 11 |
| 4 | 0100 | 4 | C | 1100 | 12 |
| 5 | 0101 | 5 | D | 1101 | 13 |
| 6 | 0110 | 6 | E | 1110 | 14 |
| 7 | 0111 | 7 | F | 1111 | 15 |
| # | Rule | Before | After |
|---|---|---|---|
| 1 | Replace the longest consecutive run of all-zero groups with :: (only ONCE) | 2041:0000:140F:0000:0000:0000:875B:131B | 2041:0000:140F::875B:131B |
| 2 | Remove 4-zero groups leaving a single zero | 2041:0000:140F::875B:131B | 2041:0:140F::875B:131B |
| 3 | Remove leading zeros within any group | 2001:0001:0002:0003::1 | 2001:1:2:3::1 |
IPv6 uses prefix length (/64 etc.) like CIDR, not subnet masks. When the prefix length is a multiple of 16, it's easy — the boundary falls exactly on a group separator. When it's not (like /53), you need binary.
IANA reserved certain IPv6 ranges for specific purposes. There are no "classes" like IPv4 had, but there are well-defined scopes:
| Type | Prefix | Routable? | Description |
|---|---|---|---|
| Global Unicast | 2000::/3 (starts 2 or 3) | Yes | IPv6 public addresses. IANA → Regional Registry → ISP → Customer → /64 subnets. Everyone can get a prefix. |
| Unique Local | FC00::/7 (FD prefix) | No | Like RFC1918 private. FD + 40-bit Global ID + 16-bit Subnet + 64-bit Interface ID. Make Global ID unique in case you ever merge networks. |
| Link-Local | FE80::/10 (FE80-FEBF) | No — link only | Auto-generated on EVERY IPv6 interface. Used by NDP, routing protocol adjacencies, and as next-hop. Always FE80::0000:0000:0000 prefix + interface ID. |
| Loopback | ::1/128 | No | Same as IPv4 127.0.0.1 |
| Multicast | FF00::/8 | Scope-dependent | Replaces ALL broadcast. FF02::1=all nodes, FF02::2=all routers, FF02::5=OSPF, FF02::A=EIGRP, FF02::1:2=all DHCP agents |
Instead of manually typing all 128 bits, you can give the router just the 64-bit prefix and let it generate the 64-bit interface ID from its MAC address automatically. A MAC address is 48 bits, interface ID is 64 bits — we need 16 more bits.
NDP (Neighbor Discovery Protocol) uses ICMPv6. It replaces IPv4 ARP completely and adds several new features that IPv4 didn't have. There are no broadcasts in IPv6 — NDP uses multicast to only reach relevant devices.
| NDP Message | ICMPv6 | IPv4 Equivalent | Purpose |
|---|---|---|---|
| Router Solicitation (RS) | Type 133 | No equivalent | Host asks "Any routers here?" to FF02::2 (all routers multicast) |
| Router Advertisement (RA) | Type 134 | No equivalent | Router announces: its link-local address, subnet prefix, MTU. Sent periodically to FF02::1 (all nodes) and on demand to RS sender. |
| Neighbor Solicitation (NS) | Type 135 | ARP Request | Who has this IPv6 address? Sent to Solicited-Node multicast (FF02::1:FF + last 24 bits of target address) |
| Neighbor Advertisement (NA) | Type 136 | ARP Reply | Here's my MAC address! Also used for DAD response. |
| Redirect | Type 137 | ICMP Redirect | Router tells host to use a better first hop for a destination |
Before using ANY IPv6 address (link-local or global unicast), every host performs DAD — it sends a Neighbor Solicitation for its own tentative address. If anyone replies, the address is already taken.
1. Host sends RS to FF02::2 (all routers)
2. Router replies with RA containing subnet prefix
3. Host combines prefix + EUI-64 or random interface ID
4. Host runs DAD to verify uniqueness
5. Host has address + default gateway — no DHCP server needed!
What SLAAC is missing: DNS server. Use stateless DHCPv6 just for DNS info.
Distance vector routing protocols work like signs on a road. You only know the direction (vector) and how far away (distance) a destination is. Routers share their entire routing table with directly-connected neighbors at regular intervals. You only know what your neighbors tell you — like hearing news second or third hand.
This is the fundamental weakness of distance vector protocols. When a network goes down, routers may actually increase the hop count indefinitely until they hit the maximum (16 for RIP = unreachable). This causes a routing loop where packets bounce between routers until their TTL expires.
| Mechanism | How It Works |
|---|---|
| Maximum hop count | RIP: metric 16 = unreachable. Caps the counting at 15 max hops. Limits damage but doesn't prevent the loop from forming. |
| Split Horizon | "Don't advertise a route back out the interface you learned it on." Hearts learned 3.3.3.0 from Clubs via fa1/0 — split horizon prevents Hearts from advertising it back out fa1/0. Like telling someone a joke they just told you. |
| Route Poisoning | When 3.3.3.0 goes down on Clubs, Clubs immediately sends a triggered update (doesn't wait 30s) with metric=16 (infinity). Faster convergence — neighbors know immediately, don't wait for timeout. |
| Poison Reverse | When Hearts receives the poison (metric=16), it immediately sends metric=16 back to Clubs. Overrides split horizon. Ensures Clubs knows Hearts agrees the route is dead — no stale helpful-but-wrong update possible. |
| Hold-down Timer (180 seconds) | After learning 3.3.3.0 is down, Hearts ignores any update claiming 3.3.3.0 is reachable with same or worse metric for 180 seconds. Prevents accepting stale "good news" from routers that haven't converged yet. Only a clearly BETTER metric from a new path stops the timer. |
| Technology | Standard | Layer | Key Facts |
|---|---|---|---|
| HDLC | Cisco proprietary | L2 | Default on Cisco serial interfaces. Cisco added a proprietary "type" field — incompatible with non-Cisco. No authentication. Both sides must be Cisco for HDLC to work. |
| PPP | IETF (RFC 1661) | L2 | Multi-vendor compatible. Supports PAP/CHAP authentication, compression, multilink. Use when Cisco connects to non-Cisco. |
| PPPoE | Standard | L2+L2 | PPP over Ethernet — used by DSL providers. Home router connects to ISP via PPPoE. |
| MPLS | Standard | L2.5 | Provider WAN. Label-switched (not IP-routed). Fast, QoS support, private. Customer traffic isolated in VRFs. Provider-managed. |
| Frame Relay | Standard (legacy) | L2 | Packet-switched legacy. PVCs identified by DLCI numbers. LMI keepalives. Mostly replaced by MPLS and internet VPNs. |
| Internet VPN | Various | L3+ | Use internet as WAN transport. Cost-effective. GRE, IPSec, SSL VPN. No guaranteed SLA. Dominant in modern enterprise. |
encapsulation ppp| Feature | PAP | CHAP (preferred) |
|---|---|---|
| Password | Sent in plaintext! | MD5 hash — never sent |
| Handshake | 2-way | 3-way (challenge/response/ACK) |
| Re-authentication | One-time at startup | Periodic during session |
| Replay attacks | Vulnerable | Protected (random challenge) |
| Hello Field | Must Match? | Value/Purpose |
|---|---|---|
| Area ID | YES | Both routers must be in same area |
| Authentication | YES | Type + password must match exactly |
| Hello Interval | YES | Default 10s broadcast, 30s NBMA |
| Dead Interval | YES | Default 40s (4× hello) |
| Subnet mask | YES (broadcast) | Must match on same segment |
| Stub area flag | YES | Both must agree on stub area |
| Router ID | No (unique) | Identifies this router — must be unique! |
| DR / BDR | No | Current DR/BDR IPs on this segment |
| Neighbor list | No | IPs of routers this router has seen — used for 2-way check |
| Options (E bit) | No (but noted) | E=1: external routing capable (cleared in stub areas) |
router-id 1.1.1.1| Network Type | DR/BDR? | Default on | Hello/Dead |
|---|---|---|---|
| Broadcast | YES | Ethernet | 10/40s |
| Point-to-Point | NO | Serial (HDLC/PPP), GRE tunnels | 10/40s |
| NBMA | YES | Frame Relay hub-spoke | 30/120s |
| Point-to-Multipoint | NO | Frame Relay (manual) | 30/120s |
| Loopback | NO | Loopback interface | Advertised as /32 |
ip ospf network point-to-point on the Ethernet side.show ip ospf database on two routers should show identical output.show ip ospf neighbor — the state column will show 2WAY or FULL plus their role (DR/BDR/DROTHER). If two routers that should be DR/BDR are showing 2-WAY, check that the interface network type matches on both sides.area 1 range 10.1.0.0 255.255.0.0 under router ospf. This summarizes all routes from Area 1 into a single Type-3 LSA advertised into Area 0. ②ASBR — external route summarization: summary-address 10.0.0.0 255.0.0.0 under router ospf. Summarizes redistributed external routes. Risks: (a) Discontiguous subnets — if you summarize 10.1.0.0/16 but 10.1.50.0/24 doesn't actually exist behind the ABR, traffic for that subnet hits the summary, the ABR has no specific route, falls to default or drops → black hole. Fix: the ABR automatically installs a Null0 route for the summary to prevent this. (b) Suboptimal routing — a summary hides topology detail. A remote router may see one path to 10.1.0.0/16 but the optimal path to 10.1.50.0/24 might be different. (c) Slow convergence — if a component subnet fails, the summary stays up, and traffic keeps going to the ABR until the ABR notices the specific prefix is gone.| Type | Name | Generated by | Scope | Areas |
|---|---|---|---|---|
| 1 | Router LSA | Every router | Intra-area | All |
| 2 | Network LSA | DR only | Intra-area | All |
| 3 | Network Summary | ABR | Inter-area | All except stub |
| 4 | ASBR Summary | ABR | Inter-area | All except stub |
| 5 | External LSA | ASBR | AS-wide | Not stub/NSSA |
| 6 | Multicast LSA | MOSPF router | Intra-area | — |
| 7 | NSSA External | ASBR in NSSA | NSSA only | NSSA; converted to Type5 at ABR |
| Area Type | LSAs Allowed | Has ASBR? | Config |
|---|---|---|---|
| Backbone Area 0 | 1,2,3,4,5 | ✅ Yes | #area 0 |
| Standard/Normal | 1,2,3,4,5 | ✅ Yes | #area N |
| Stub Area | 1,2,3 | ❌ No | #area N stub |
| Totally Stub (Cisco) | 1,2 | ❌ No | #area N stub nosummary |
| NSSA | 1,2,3,7 | ✅ Yes (LSA7) | #area N nssa |
| Totally NSSA | 1,2,7 | ✅ Yes | #area N nssa no-summary |
| Feature | OSPFv2 | OSPFv3 |
|---|---|---|
| IP Version | IPv4 | IPv6 (RFC5340) |
| Adjacency Address | IPv4 address | IPv6 Link-Local (FE80::/10) |
| All OSPF Routers | 224.0.0.5 | FF02::5 |
| All DR Routers | 224.0.0.6 | FF02::6 |
| Header Size | 24 bytes | 16 bytes |
| Auth | MD5/clear text | IPv6 IPSec |
| Per-link support | Per-subnet | Per-link |
show interfaces Gi0/0 on both sides → compare MTU values. Fix: ip ospf mtu-ignore (temporary) or align MTUs (permanent). EXSTART is where Master/Slave election happens based on Router ID. If MTU mismatch exists, the larger MTU side sends DBD packets that exceed the smaller MTU side's buffer → packets dropped → EXSTART stuck in loop. Debug: debug ip ospf adj → you'll see "Mismatched MTU" messages. Other EXSTART causes: duplicate Router IDs (rare), corrupted packets.show ip ospf database router → Type 1show ip ospf database network → Type 2show ip ospf database summary → Type 3show ip ospf database asbr-summary → Type 4show ip ospf database external → Type 5show ip ospf database nssa-external → Type 7| Type | Security | Config |
|---|---|---|
| Type 0 — None | No auth (default) | Default |
| Type 1 — Clear text | Password in plain text — sniffable! | ip ospf authentication ip ospf authentication-key PASS |
| Type 2 — MD5 | HMAC-MD5 hash — recommended | ip ospf authentication message-digest ip ospf message-digest-key 1 md5 KEY |
| SHA (IOS 15.4+) | HMAC-SHA256/SHA512 — best | ospf authentication ipsec spi ... or key-chain |
show ip ospf interface detail | include auth. Mismatched auth = neighbor stays at Init state.show run | include distribute-list — a distribute-list can filter routes from being installed in the routing table even if they're in the LSDB. ②Summarization black hole: An ABR summary is covering a hole — traffic to a subnet covered by the summary but not actually existing hits the Null0 route at the ABR. Check show ip route | include Null. ③Route type preference: OSPF intra-area (O) > inter-area (O IA) > external (O E1) > (O E2). If a router has both an intra-area and inter-area path to the same destination, OSPF prefers intra-area even if the inter-area path is lower cost. ④Passive interface: If the interface toward the destination is passive (passive-interface Gi0/1), OSPF won't advertise it but it also won't send/receive Hellos → no adjacency. But check if the SUBNET is missing from the LSDB. ⑤network statement missing: The specific subnet isn't covered by any network statement under OSPF → not advertised. ⑥Area mismatch for redistribution: External routes (Type 5) don't enter stub areas — routers in stub areas only have a default route for external destinations.| State | What's happening | Interview Line |
|---|---|---|
| 1. Idle | BGP process starts, no TCP yet. Verifies neighbor IP reachable, AS configured. | "Idle = initialized, no TCP session" |
| 2. Connect | Attempting TCP 3-way handshake to port 179. SYN sent. | "Connect = trying to establish TCP" |
| 3. Active | TCP failed, retrying. Listens for incoming TCP from peer. NOT "working"! | "Active = retrying, NOT working" |
| 4. OpenSent | TCP up. OPEN message sent with: version, AS#, Hold Time, BGP Router ID. | "OpenSent = TCP up, params exchanged" |
| 5. OpenConfirm | Both OPENs received. KEEPALIVE sent/received to confirm agreement. | "OpenConfirm = both sides agreed" |
| 6. Established | Session FULLY operational. UPDATE messages (routes) exchanged. KEEPALIVEs maintain session. | "Established = ONLY state with routes!" |
| Stuck in State | Root Cause | Verify |
|---|---|---|
| Idle | No route to neighbor, BGP shut | ping neighbor-IP, show bgp neighbors |
| Active (long) | ACL blocking TCP 179, wrong IP, firewall | telnet neighbor-IP 179 |
| OpenSent | Wrong remote-AS, auth failure, version mismatch | show running | section bgp |
| OpenConfirm | Capability mismatch (address family) | debug ip bgp events |
| Established (no routes) | Policy filtering, next-hop unreachable | show ip bgp, show ip bgp summary |
| # | Attribute | Prefer | Scope |
|---|---|---|---|
| 0 | Next-Hop Reachability | Must be reachable | Prerequisite |
| 1 | Weight (Cisco proprietary) | Highest | Local router only |
| 2 | Local Preference | Highest | Within AS (iBGP) |
| 3 | Locally Originated | Prefer local | network/redistribute |
| 4 | Shortest AIGP | Lowest | Multi-AS (optional) |
| 5 | Shortest AS-PATH | Shortest | Loop prevention |
| 6 | Origin (i > e > ?) | IGP > EGP > ? | How route entered BGP |
| 7 | Lowest MED | Lowest | Hint to neighbor AS |
| 8 | eBGP over iBGP | eBGP | Peer type |
| 9 | Lowest IGP metric to Next-Hop | Lowest | Internal cost |
| 10 | Oldest eBGP path (stability) | Oldest | Cisco stability mech |
| 11 | Lowest Router-ID | Lowest | Tiebreaker |
| 12 | Min Cluster-List Length | Shortest | Route Reflector only |
| 13 | Lowest Neighbor IP | Lowest | Final tiebreaker |
| Phase | What You Coordinate | Why It Matters |
|---|---|---|
| 1. BGP Info Exchange | ASN, peering IPs, eBGP single-hop vs multihop, address families (IPv4/v6) | Session can't form without matching config on both sides |
| 2. Routing Policy | What prefixes you advertise, what they send (full table vs default), prefix limits, communities, Local Preference expectations | Prevents route leaks and asymmetric routing |
| 3. Auth & Security | MD5 password, TTL security (GTSM), max-prefix limits + warning thresholds, RPKI validation | Interviewers like hearing you think about failure containment |
| 4. Filtering & Validation | IRR route objects for your prefixes, which IRR databases they check, RPKI ROA validity enforcement | Shows operational maturity — real-world transit requirement |
| 5. Operational Details | NOC contacts, maintenance windows, escalation procedures, expected turn-up steps | BGP is an operational relationship, not just a protocol |
| 6. Testing & Turn-Up | Bring up in restricted state, verify prefix counts, AS paths, traffic symmetry, monitor for flaps/leaks | Only after validation is session production-ready |
ping neighbor-IP — verify basic reachability. ②telnet neighbor-IP 179 — test if TCP 179 reaches the neighbor. ③show tcp brief | include neighbor-IP — check for half-open TCP connections. ④Check ACLs: show access-lists — look for denies on port 179. ⑤Check interface: show ip interface brief — confirm interface used for peering is up. ⑥Verify configuration: show running | section router bgp — correct remote-AS, correct neighbor IP, correct update-source if using loopback. ⑦If using loopback: verify ebgp-multihop is configured (TTL=1 by default drops multihop eBGP). "Active does NOT mean working — it means retrying."| Step | Command | What to verify |
|---|---|---|
| 1. Neighbor Status | show ip bgp summary | State = Established. Any other state = issue. |
| 2. IP Connectivity | ping [neighbor-ip] traceroute [neighbor-ip] | Basic reachability to peer IP. |
| 3. TCP Session | show tcp brief | include [ip] telnet [ip] 179 | TCP port 179 must be reachable. |
| 4. BGP Config | show run | section router bgp | Correct neighbor IP, remote-AS, update-source. |
| 5. Interface Status | show ip interface brief show interfaces [int] | Interface up/up. Check error counters. |
| 6. BGP Timers | show ip bgp neighbors [ip] | Hold time & keepalive must match both sides. |
| 7. Authentication | show run | include neighbor.*password | MD5 keys must match exactly (case-sensitive). |
| 8. ACL/Firewall | show access-lists | No ACL blocking TCP 179. |
| 9. Route Policies | show ip bgp neighbors [ip] route-map | No policy blocking session establishment. |
| 10. Debug (last resort) | debug ip bgp [ip] events debug ip tcp transactions | Use only in production with caution — verbose! |
show ip bgp summary → PfxRcd column shows 0 = neighbor not sending routes. ②show ip bgp neighbors [ip] received-routes → if empty, peer is not advertising. ③show ip bgp neighbors [ip] advertised-routes → check what WE are sending. ④Check route-maps: show ip bgp neighbors [ip] route-map. ⑤Check next-hop: if iBGP, next-hop may not be reachable — need next-hop-self. ⑥Check network commands — prefix must exist in routing table exactly. ⑦show ip bgp [prefix] → look for "not advertised to any peer" messages with reason. ROUTE-REFRESH: use clear ip bgp * soft after changing policy — avoids hard reset.| Symptom in BGP table | Meaning | Fix |
|---|---|---|
| r 10.0.0.0/8 via 1.2.3.4 | r = RIB failure. Route was rejected by routing table (lower AD route exists) | Check AD conflict with another protocol for same prefix |
| * 10.0.0.0/8 (not >) | Valid but not best path selected | Check best path selection — weight, local-pref, AS-path, etc. |
| 10.0.0.0/8 inaccessible | Next-hop IP not reachable via IGP | Add next-hop to IGP or use next-hop-self |
| No entry at all | Route not received OR filtered on inbound | Check neighbor received-routes; check inbound filter |
| h 10.0.0.0/8 | h = history. Was valid, now withdrawn | Peer withdrew it — check peer's routing table |
| d 10.0.0.0/8 | d = damped. Route flapped, currently suppressed | Route dampening active — wait for half-life or clear |
| Problem | Symptom | Root Cause & Fix |
|---|---|---|
| AS-path loop | Route received but not installed; BGP drops it | Own AS number appears in AS-path. Normal for loop prevention. If intentional (AS override): neighbor X allowas-in |
| Sync issue | iBGP route not installed (legacy IOS) | Old synchronization rule: iBGP route must also exist in IGP. Fix: no synchronization (default off now) |
| Missing network statement | Route not advertised to eBGP peer | network 10.0.0.0 mask 255.0.0.0 — prefix must match routing table EXACTLY (including mask) |
| Max-prefix exceeded | Session drops with notification | Peer sent more prefixes than configured limit. Increase: neighbor X maximum-prefix 1000 |
| Hold-timer expire | Session drops every 90s | Keepalives not reaching peer (congestion, CPU). Default hold 90s, keepalive 30s. Both sides must agree. |
| Attribute | Type | To influence | Higher or lower? |
|---|---|---|---|
| Weight | Cisco local | Outbound path from this router | Higher wins |
| Local-Pref | Well-known discretionary | Exit point for your entire AS | Higher wins |
| AS-Path prepend | Well-known mandatory | Make path look longer → less preferred | Shorter wins |
| MED | Optional non-transitive | Influence how traffic ENTERS your AS | Lower wins |
| Community | Optional transitive | Tag routes for policy — no routing impact alone | Depends on peer policy |
auto-summary is enabled under BGP (legacy feature, disabled by default since IOS 12.3), BGP summarizes classful boundaries. A 10.1.1.0/24 might be summarized to 10.0.0.0/8. Fix: no auto-summary. ②Aggregate-address command: Check for aggregate-address statements: show run | include aggregate. If aggregate-address 10.1.0.0 255.255.254.0 exists, it generates a /23 summary AND may suppress the specific /24 (depends on summary-only keyword). ③BGP network statement: The network statement with the wrong mask — network 10.1.0.0 mask 255.255.254.0 directly advertises a /23. ④Peer is doing summarization: Your peer's router is summarizing on their end before you see it — their ISP may have aggregate-address. ⑤Route received from another peer: Another upstream is advertising the /23 and your peer prefers that over your /24. BGP prefers longer prefix (more specific), so your /24 should win — unless the /23 is also being advertised and something is filtering your /24. Verify with show ip bgp [peer-ip] advertised-routes to confirm exactly what you're sending.| Role | Device | Action |
|---|---|---|
| Ingress | LER | PUSH label onto IP packet |
| Transit | LSR | SWAP incoming label with new label |
| Egress | LER | POP label, forward as IP |
| PHP | Penultimate hop | POP early to reduce egress work |
| Term | Meaning |
|---|---|
| CE | Customer Edge — customer router at PE |
| PE | Provider Edge — imports routes into VRF, two-label stack |
| P | Provider core — label swap only, no VRF |
| VRF | Virtual Routing/Forwarding — per-customer routing table |
| RD | Route Distinguisher — makes VPN prefixes unique in MP-BGP |
| RT | Route Target — controls import/export between VRFs |
| LDP Step | Process |
|---|---|
| Discovery | Multicast Hello on 224.0.0.2 UDP 646 — finds LDP neighbors on links |
| Session | TCP 646 session established, LDP-ID exchanged |
| Label binding | Each router assigns local label per FIB prefix, advertises to all LDP peers |
| LFIB building | Incoming label + outgoing label + next-hop installed in hardware LFIB |
| MPLS Command | Shows |
|---|---|
| show mpls forwarding-table | LFIB — local label, outgoing label, next-hop, interface |
| show mpls ldp neighbor | LDP peers, session state, local/remote LDP-ID |
| show mpls ldp bindings | Label bindings for all prefixes |
| show ip vrf | All VRFs, associated interfaces, RD |
| show ip route vrf CUST_A | Routing table for specific VRF |
| ping vrf CUST_A 10.2.2.10 | Test connectivity within a VRF |
RD (Route Distinguisher): Makes routes globally unique in the BGP table. Two customers can both use 10.0.0.0/8 — RD makes them distinct: 65001:100:10.0.0.0/8 vs 65001:200:10.0.0.0/8. It's just a prefix tag — it has no import/export policy meaning.
RT (Route Target): Controls WHICH VRFs import which routes. If Customer A's VRF exports with RT 65001:100, any PE VRF with
route-target import 65001:100 will import those routes. This is how extranet VPNs (shared services) work — a shared services VRF exports with a RT that many customer VRFs import.| Reserved Labels | Value | Used For |
|---|---|---|
| Implicit Null | 3 | PHP signal — penultimate router pops outer label |
| Explicit Null | 0 | Keep label stack but with null value (preserve EXP bits for QoS) |
| Router Alert | 1 | Punt to route processor (RSVP, OAM) |
| OAM Alert | 14 | MPLS OAM functions |
route-target import 65001:100 — it imports only the :100 prefixed route. Customer B's VRF imports :200. Both customers' 10.0.0.0/8 routes exist on the same PE router but in completely separate VRF routing tables, with separate forwarding tables and separate CEF tables per VRF. They can never reach each other unless explicitly configured with extranet VPN (cross-importing each other's RTs).| DSCP | PHB | Use Case | Queue |
|---|---|---|---|
| EF (46) | Expedited Fwd | VoIP RTP | Priority queue (LLQ) |
| CS7 (56) | Net Control | Routing protocols | High priority |
| AF41 (34) | Assured Fwd 4-1 | Video conferencing | Bandwidth guarantee |
| AF31 (26) | Assured Fwd 3-1 | Call signaling | Bandwidth guarantee |
| BE (0) | Best Effort | Default / internet | FIFO, lowest priority |
| Tool | Excess action | Adds delay? | Direction |
|---|---|---|---|
| Policing | Drop or re-mark | ❌ | Ingress or Egress |
| Shaping | Buffer & delay | ✅ | Egress only |
| CBWFQ | Guaranteed BW per class | Minimal | Egress |
| LLQ | Strict priority + CBWFQ | Minimal | Egress (VoIP) |
| Tool | Where in pipeline | What it does |
|---|---|---|
| Classification | Entry point | Identify traffic type (ACL, NBAR, DSCP, CoS) |
| Marking | Entry point | Set DSCP bits in IP header for downstream handling |
| Policing | Ingress or Egress | Enforce rate limit — exceed = drop or re-mark |
| Shaping | Egress only | Buffer excess — smooth traffic to conform to rate |
| Queuing (CBWFQ/LLQ) | Egress | Schedule which queue transmits during congestion |
| Congestion avoidance (WRED) | Queue | Drop packets early before queue fills — avoid TCP sync |
| DSCP Value | PHB | Traffic Type | Drop Behavior |
|---|---|---|---|
| EF (46) | Expedited Forwarding | VoIP RTP media | Priority queue — never dropped if within rate |
| CS6 (48) | Network Control | OSPF, BGP, routing | High — protect routing protocol traffic |
| CS5 (40) | — | Signaling (SIP, H.323) | Medium-high |
| AF41 (34) | Assured Fwd 4-1 | Video conferencing | Low drop probability in class 4 |
| AF42 (36) | Assured Fwd 4-2 | Video streaming | Medium drop probability |
| AF43 (38) | Assured Fwd 4-3 | Video burst | High drop probability |
| AF31 (26) | Assured Fwd 3-1 | Call signaling | Low drop in class 3 |
| AF21 (18) | Assured Fwd 2-1 | Business critical data | Low drop in class 2 |
| CS1 (8) | Scavenger | Bulk/P2P | Drop first during congestion |
| BE / CS0 (0) | Best Effort | Default internet | FIFO, no guarantee |
priority command creates a strict priority queue — VOIP traffic is ALWAYS dequeued first, regardless of other class demands. Risk: if VoIP exceeds its configured rate, excess is dropped (policed). Too much priority traffic can starve other classes. Always set a bandwidth cap on the priority class.| Feature | Policing | Shaping |
|---|---|---|
| Excess action | Drop or re-mark immediately | Buffer (delay) excess packets in queue |
| Adds delay? | No — drop is instant | Yes — queuing delay increases |
| Direction | Ingress OR Egress | Egress ONLY |
| Traffic profile | Hard limit — exceed = action | Smooth bursty traffic to average rate |
| TCP behavior | Drops cause TCP retransmits → oscillation | Buffers → TCP window reduces gracefully |
| Use case | ISP rate enforcement, DDoS mitigation | WAN link rate matching (DSL, Frame Relay CIR) |
| Cisco keyword | police rate / police percent | shape average / shape peak |
show policy-map interface [int] output class VOIP — check if the VoIP class has packet hits. If 0 hits, traffic isn't matching the class-map. Verify DSCP markings: show interfaces [int] | include DSCP or use Wireshark to check EF bit. ②Is priority queue being policed/dropped? Same show policy-map output — look for "drops" in the priority class. If VoIP exceeds its configured priority rate, excess is dropped. Either increase the priority bandwidth or find what's generating excess VoIP traffic. ③Check interface for congestion: show interfaces [int] — check output queue drops (not just errors). High output drops mean the interface is congested even WITH QoS. ④Path MTU / fragmentation: Large packets ahead of VoIP packets in the queue cause serialization delay. On slow WAN links, enable LFI (Link Fragmentation and Interleaving) — fragments large packets so VoIP can interleave. ⑤Jitter buffer at endpoint: Some jitter is at the phone/codec, not network. Check endpoint statistics. ⑥DSCP remarking midpath: Some ISPs zero out DSCP bits. Verify EF markings are preserved end-to-end with Wireshark captures at multiple points.| Mode | New IP Hdr? | Protects | Used for |
|---|---|---|---|
| Tunnel | ✅ Added | Entire original packet | Site-to-site VPN |
| Transport | ❌ Original kept | IP payload only | Host-to-host |
| Phase | Result | Negotiates |
|---|---|---|
| IKE Phase 1 | ISAKMP SA (bidir) | Encryption, Hash, DH group, Auth, Lifetime |
| IKE Phase 2 | IPSec SA (unidir×2) | ESP/AH, encryption, PFS, traffic selectors |
| IKE Phase 1 Parameter | Options (must match both sides) |
|---|---|
| Encryption | AES-128, AES-256, 3DES (deprecated), DES (never use) |
| Hash (Integrity) | SHA-256, SHA-384, SHA-512, MD5 (deprecated) |
| Authentication | Pre-shared key (PSK), RSA signature (certificates), ECDSA |
| DH Group | Group 14 (2048-bit), Group 19/20 (ECDH 256/384-bit). Groups 1,2,5 = insecure |
| Lifetime | Default 86400s (24hrs). SA re-keyed before expiry. |
| Phase 2 Parameter | Options | Notes |
|---|---|---|
| Protocol | ESP (50) or AH (51) | Use ESP — AH can't traverse NAT |
| Encryption | AES-256-GCM, AES-256-CBC | GCM provides auth+encrypt in one pass |
| Integrity | SHA-256 HMAC, SHA-512 | Not needed if using GCM (built-in) |
| PFS | Enabled (any DH group) or Disabled | Perfect Forward Secrecy — new DH each Phase 2 |
| Lifetime | 3600s (default), or bytes-based | SA re-keyed before expiry |
show crypto ipsec sa — check if Phase 2 SAs exist. If not, Phase 2 failed. ②Crypto ACL mismatch (most common): The "interesting traffic" ACL must be a MIRROR on both sides. Site A: permit ip 10.1.0.0/24 10.2.0.0/24. Site B must have: permit ip 10.2.0.0/24 10.1.0.0/24. If they don't match exactly, Phase 2 negotiations fail (proxy ID mismatch). ③Phase 2 parameter mismatch: Encryption/hash/PFS settings must match. Check with debug crypto ipsec for "no matching transforms" errors. ④If Phase 2 SAs exist but packets = 0: Traffic isn't matching the crypto ACL. Verify routing — the packets must hit the interface where the crypto map is applied. ⑤NAT conflict: If NAT is also configured, NAT happens before crypto ACL evaluation on outbound. Traffic gets NATted and no longer matches the crypto ACL (10.1.0.0 becomes public IP). Fix: ip nat inside source list ... route-map ... no-nat to exclude VPN traffic from NAT. ⑥show crypto ipsec sa → look at "pkts encrypt" and "pkts decrypt" counters — if encrypting but not decrypting, the remote end may be dropping or not decrypting properly.| Aspect | Traditional | SDN |
|---|---|---|
| Control Plane | Distributed (each device) | Centralized (controller) |
| Config | Per-device CLI | Centralized API/GUI |
| Protocol | OSPF, BGP, EIGRP | OpenFlow, NETCONF/YANG |
| Component | Role |
|---|---|
| vManage | Management plane — GUI, policy, monitoring |
| vSmart | Control plane — distributes OMP routes to vEdges |
| vBond | Orchestrator — initial auth, NAT traversal |
| vEdge | Data plane — forwards traffic, enforces policy |
| Component | Plane | What It Does in Detail |
|---|---|---|
| vManage | Management | Single-pane-of-glass GUI. Pushes configs via NETCONF/RESTCONF. Stores templates (device + feature templates). Generates certificates. Real-time monitoring, alerts, dashboards. REST API for automation. |
| vSmart | Control | Runs OMP (Overlay Management Protocol) — SD-WAN's BGP equivalent. Distributes routes, policy, and security info to all vEdges. Centralized route reflector for the overlay. Two vSmarts for HA. |
| vBond | Orchestration | First point of contact for newly deployed vEdges. Authenticates devices using certificates. Facilitates NAT traversal so vEdges behind NAT can reach vSmart. Acts as STUN server for NAT detection. |
| vEdge/cEdge | Data | Physical or virtual router at branch/DC/cloud. Builds IPSec tunnels to other vEdges. Implements QoS, application-aware routing, policy enforcement. cEdge = Cisco IOS-XE router running SD-WAN software. |
| App / Traffic Type | Preferred Transport | Metric Threshold |
|---|---|---|
| VoIP (RTP) | MPLS (low latency) | Jitter <30ms, Loss <1% |
| Video conf (Webex) | MPLS or broadband | Latency <150ms |
| SaaS (Microsoft 365) | Direct Internet (DIA) | Optimal path to Microsoft cloud |
| Backup/bulk transfer | LTE / cheaper link | No real-time requirement |
| Guest WiFi | Internet only, isolated | Segmented from corp |
| Feature | MPLS | SD-WAN |
|---|---|---|
| Transport | Private MPLS circuits | Any: MPLS + broadband + LTE + cloud |
| Config | Per-device CLI, manual | Centralized templates, zero-touch |
| Visibility | Limited, per-device | Application-level, real-time |
| Failover | Minutes (BGP reconverge) | Seconds (SLA-based steering) |
| Cost | High (private circuits) | Lower (commodity internet) |
| Security | Layer 2/3 isolation | IPSec everywhere + segmentation policies |
| Cloud access | Via datacenter backhauling | Direct Internet Access per branch |
| Plane | Traditional | SDN |
|---|---|---|
| Control Plane | Distributed — OSPF/BGP runs on every device | Centralized SDN Controller (ONOS, OpenDaylight, Cisco APIC) |
| Data Plane | Hardware ASIC forwarding (CEF, LFIB) | Programmable via OpenFlow or P4 instructions from controller |
| Management Plane | Per-device CLI, SNMP, syslog | Centralized REST API, NETCONF/YANG, streaming telemetry |
| Technology | Purpose | vs. Old Way |
|---|---|---|
| NETCONF | Protocol for device config/state (RFC 6241). Uses SSH transport, XML encoding | Replaces CLI/SNMP for config. Transactional — commit or rollback. |
| YANG | Data modeling language — defines structure of config data | Like a schema for network config. "What fields can a BGP neighbor have?" |
| RESTCONF | HTTP/JSON version of NETCONF (RFC 8040) | Same as NETCONF but REST API — easier for developers |
| gNMI/gRPC | Google's high-speed streaming telemetry + config | Replaces SNMP polling — push-based real-time stats |
| Ansible/Python | Automation layer using above protocols | Replace manual CLI — deploy configs to 1000 devices in seconds |
show sdwan bfd sessions — BFD (Bidirectional Forwarding Detection) monitors the IPSec tunnels to all remote vEdges. If BFD sessions are down, tunnel is down. Check for: link flapping, high packet loss, firewall blocking UDP 12346 (DTLS) or 4500 (IKE/IPSec NAT-T). ②show sdwan app-route statistics — shows measured latency/loss/jitter per transport. If SLA thresholds are exceeded, traffic is steered away from that transport. If ALL transports are bad, traffic may have nowhere to go. ③Data policy: Check if a centralized data policy is blocking traffic. show sdwan policy access-list-log for drops. ④Service VPN routing: The vEdge has separate VPNs (VPN 0 = transport/management, VPN 1+ = service/user traffic). Check if a default route exists in the service VPN: show ip route vrf 1. If no default route, user traffic has nowhere to go. ⑤DIA (Direct Internet Access): If this branch uses DIA, the internet-facing interface must have the right route. NAT must be configured for the DIA interface: check show sdwan interface for NAT status. ⑥DNS: Even if routing works, if DNS is broken, users see "no internet" — test with ping 8.8.8.8 vs ping google.com to distinguish DNS from routing failure.| Symptom | Likely Cause | First Check |
|---|---|---|
| OSPF stuck Init | Hello not received back (firewall blocking 224.0.0.5) | show ip ospf interface |
| OSPF stuck ExStart | MTU mismatch | show interfaces — compare MTU |
| BGP neighbor Active | ACL blocking TCP 179 | telnet neighbor-IP 179 |
| Route missing from table | AD conflict / distribute-list filter | show ip route — check code |
| Intermittent packet loss | Duplex mismatch — half duplex collisions | show interfaces — check runts/collisions |
| VLAN not working | Not in trunk allowed list | show interfaces trunk |
| High CPU on router | CEF off / debug left on | show processes cpu sorted |
| Interface | BW (kbps) | Delay (usec) | Classic Metric contribution |
|---|---|---|---|
| Serial T1 | 1544 | 20000 (20ms) | BW=6476, Delay=2000 |
| FastEthernet | 100000 | 100 | BW=100, Delay=10 |
| GigabitEthernet | 1000000 | 10 | BW=10, Delay=1 (SAME AS 10GbE!) |
| 10GigabitEthernet | 10000000 | 10 | BW=1 (rounded), Delay=1 (SAME!) |
timers active-time 5 (5 minutes) — buys time on slow links. ④Check show ip eigrp topology active — shows which queries are outstanding and to which neighbors. Fix the underlying cause, not just the timer.| # | Attribute | Winner | Scope | How to Manipulate |
|---|---|---|---|---|
| 1 | Weight | Highest | Cisco only, local router (not advertised) | route-map set weight N on neighbor |
| 2 | Local Preference | Highest | Within AS (iBGP only, advertised) | set local-preference N in route-map |
| 3 | Locally originated | Prefer local | Local router — network/redistribute wins over aggregate wins over iBGP | Redistribute vs network command |
| 4 | AS-PATH length | Shortest | Advertised globally | as-path prepend (add fake AS hops) |
| 5 | Origin code | IGP > EGP > ? | Advertised globally | set origin igp/incomplete in route-map |
| 6 | MED | Lowest | Between eBGP peers in same AS (complex rules) | set metric N in route-map |
| 7 | eBGP over iBGP | eBGP preferred | Route source type | bgp bestpath as-path multipath-relax |
| 8 | IGP metric to next-hop | Lowest | Local routing table cost to BGP next-hop | Adjust IGP costs |
| 9 | Oldest eBGP path | Oldest | Prefer most stable path (less churn) | bgp bestpath compare-routerid (disables) |
| 10 | BGP Router ID | Lowest | Originating router's RID | bgp router-id |
| 11 | Cluster list length | Shortest | Route reflector path | RR topology design |
| 12 | Neighbor IP address | Lowest | Final tiebreaker | Change neighbor IP (not practical) |
bgp always-compare-med. This is non-standard behavior and some networks disable it. Also check: if either path has no MED attribute at all, Cisco treats it as MED=0 by default (bgp bestpath missing-as-worst makes missing MED = 4294967295 instead). Another trap: if the same prefix is coming from two different ASBR routers within your AS via iBGP, MED comparison works because they're from the same external AS — this is the normal use case for MED.| Range | Type | Use |
|---|---|---|
| 224.0.0.0/24 | Link-Local | Routing protocols (OSPF=224.0.0.5/6, EIGRP=224.0.0.10, HSRP=224.0.0.2) |
| 224.0.1.0-238.255.255.255 | Global ASM | Any-Source Multicast — IANA assigned + user |
| 232.0.0.0/8 | SSM range | Source-Specific Multicast (IGMPv3 required) |
| 233.0.0.0/8 | GLOP | RFC 2770: embed AS number into multicast group |
| 239.0.0.0/8 | Admin Scoped | Private/enterprise use — like RFC 1918 for multicast |
| FF00::/8 | IPv6 Multicast | FF02::1=all-nodes, FF02::2=all-routers, FF02::5=OSPFv3 |
| Feature | IGMPv1 | IGMPv2 | IGMPv3 |
|---|---|---|---|
| Leave group | No (wait for timeout) | Leave Group message | Leave + source filtering |
| Source filtering | No | No | YES (INCLUDE/EXCLUDE) |
| SSM support | No | No | YES |
| Querier election | No (DR is querier) | Lowest IP wins | Lowest IP wins |
| RFC | RFC 1112 | RFC 2236 | RFC 3376 |
| Redistributing INTO | Default metric if unset | Recommended |
|---|---|---|
| RIP | Infinity (∞) — unusable | default-metric 5 (or set in route-map) |
| OSPF | 20 (E2 external) | default-metric 100 + metric-type 1 |
| EIGRP | Infinity — unusable without metric | default-metric 10000 100 255 1 1500 |
| BGP | 0 (IGP metric) | Set MED via route-map |
| IS-IS | 0 | Set explicit metric |
| Source | Default AD | Notes |
|---|---|---|
| Connected | 0 | Always preferred |
| Static | 1 | Overrides everything except connected |
| EIGRP Summary | 5 | Summary routes only |
| eBGP | 20 | eBGP preferred over IGP |
| EIGRP Internal | 90 | Best IGP for Cisco |
| IGRP | 100 | Legacy |
| OSPF | 110 | Standard choice after EIGRP |
| IS-IS | 115 | Service provider default |
| RIP | 120 | Legacy distance vector |
| EIGRP External | 170 | Redistributed into EIGRP |
| iBGP | 200 | Lowest trust among dynamic |
ip route 0.0.0.0 0.0.0.0 10.0.0.1 200 — AD 200 means it's only used if iBGP (AD=200) fails. Wait — iBGP is also AD 200! First installed wins. Better to use AD 210: ip route 0.0.0.0 0.0.0.0 backup 210.| Feature | Traditional MPLS (LDP/RSVP) | Segment Routing |
|---|---|---|
| Label distribution | LDP (per-prefix, every hop) | Distributed via IGP (OSPF/IS-IS extensions) |
| TE signaling | RSVP-TE (complex, stateful) | SR-TE (source-routed, stateless) |
| Per-router state | High — LDP/RSVP state on every node | Low — only head-end knows path |
| Fast reroute | RSVP FRR (50ms, complex) | TI-LFA (50ms, automatically computed from IGP) |
| Scale | Limited by per-LSP state | Scales to 100K+ paths (stateless mid-points) |
| Programmability | Limited (static config) | PCE/PCEP, YANG/NETCONF, SRv6 service chaining |
| BGP EVPN Route Type | Name | Carries | Purpose |
|---|---|---|---|
| Type 1 | Ethernet Auto-Discovery | ESI (Ethernet Segment ID) | Multi-homing, mass withdrawal |
| Type 2 | MAC/IP Advertisement | MAC + IP + VNI + VTEP IP | L2 host learning (replaces flood-learn) |
| Type 3 | Inclusive Multicast | VTEP IP + L2 VNI | VTEP discovery + BUM handling |
| Type 4 | Ethernet Segment | ESI + DF election | Designated Forwarder election |
| Type 5 | IP Prefix | IP prefix + L3 VNI + VTEP | Inter-subnet routing, DCI |
| Method | Transport | Data Format | Use Case | CCIE Relevance |
|---|---|---|---|---|
| SSH/CLI (Netmiko) | SSH | Screen scraping (regex) | Legacy devices, quick scripts | Understand limitations — not reliable for structured data |
| NETCONF | SSH port 830 | XML (YANG-modeled) | Config management, transactions | IOS-XE/XR support, candidate datastore, rollback |
| RESTCONF | HTTPS | JSON or XML | REST API, programmable controllers | Easier than NETCONF for developers — same YANG models |
| gRPC/gNMI | HTTP/2 | Protobuf | Streaming telemetry, high-performance | OpenConfig, replacing SNMP for monitoring |
| SNMP | UDP | ASN.1/BER | Legacy monitoring | Being replaced by gRPC telemetry |
| Feature | OSPF | IS-IS | IS-IS Advantage |
|---|---|---|---|
| Runs on top of | IP (protocol 89) | L2 directly (OSI CLNP) | IP routing problem can't break IS-IS — it runs under IP! |
| Area hierarchy | Area + backbone area 0 | L1 area + L2 backbone | Simpler — L2 IS IS the backbone |
| Adjacency on segment | DR/BDR only go FULL | All form adjacency (DIS replaces DR) | No BDR — DIS handles LSP flooding |
| Extensibility | Opaque LSAs (awkward) | New TLVs — just add (no version change) | SR, TE, IPv6 all added via TLVs |
| IPv6 | OSPFv3 (separate process) | Multi-topology (same process!) | MT-IS-IS: one adjacency, two topologies |
| Large network scale | Limited (SPF complexity) | Preferred for SP backbone (flat L2) | T-Systems, Level3, AT&T use IS-IS |
| Type | Adjacency | LSDB | Use |
|---|---|---|---|
| L1 (L1-only) | L1 same area only | L1 LSDB | Edge router in area |
| L2 (L2-only) | L2 any area | L2 LSDB | Backbone router |
| L1L2 (ABR equiv) | Both L1+L2 | Both LSDBs | Area border router |
| PDU | Full Name | Purpose |
|---|---|---|
| IIH | IS-IS Hello | Neighbor discovery, adjacency maintenance (LAN vs P2P IIH) |
| LSP | Link State PDU | Carries topology (like OSPF LSA). L1-LSP and L2-LSP separate. |
| CSNP | Complete Sequence Number PDU | Sent by DIS — describes entire LSDB. Used for sync. |
| PSNP | Partial Sequence Number PDU | Acknowledge LSP receipt OR request missing LSPs |
| Component | Role | Protocol |
|---|---|---|
| CSPF (Constrained Shortest Path First) | Compute path meeting constraints (BW, affinity, SRLG) | Runs on head-end, uses TE-extended LSDB |
| RSVP-TE (Resource Reservation Protocol) | Signal and establish the LSP along computed path | PATH (head→tail) + RESV (tail→head) |
| OSPF-TE / IS-IS-TE | Flood bandwidth + TE metric in LSAs/LSPs | OSPF Opaque Type 10 / IS-IS TE TLVs |
| FRR (Fast Reroute) | Pre-signal backup bypass tunnel for sub-50ms failover | RSVP-TE with detour/facility signaling |
tunnel mpls traffic-eng autoroute announce makes the tunnel appear as an IGP next-hop. Without this, the routing table doesn't see the tunnel as a path. ②Autoroute metric: If autoroute is configured but the tunnel metric is higher than the regular IGP path, IGP still wins. Set tunnel mpls traffic-eng autoroute metric absolute 1 to force preference. ③Forwarding adjacency: Advertises the tunnel as a link into the IGP LSDB — more powerful than autoroute, allows SPF to compute paths across the tunnel. ④Static route or PBR: Explicitly route traffic into the tunnel with ip route x.x.x.x y.y.y.y Tunnel1. ⑤Check: show mpls traffic-eng tunnels brief — look at "Admin: up Oper: up" AND "Inuse". "Inuse" means traffic is actually flowing. Debug: debug mpls traffic-eng events.Configure entries above to generate config...
| Domain | Type | Value | TTL |
|---|
| Device | IP Address | MAC Address | Type |
|---|---|---|---|
| ARP caches are empty — start simulation | |||
show ip nat translations.show ip nat translations| Inside Local | Inside Global | Outside Local | Outside Global | Type | Status |
|---|---|---|---|---|---|
| Translation table empty — start simulation | |||||
ip helper-address 10.2.2.1
ip helper-address 10.2.2.2
! Multiple = redundancy
ip dhcp relay info policy replace
ip dhcp snooping
ip dhcp snooping vlan 10
interface Gi0/24
ip dhcp snooping trust
T2 (87.5%): Broadcast rebind — relay invoked again.
Expiry: Client goes to INIT state, loses IP.
Wrong giaddr pool → server sends NAK
Opt 82 mismatch → requests dropped
IP conflict → DECLINE → restart DORA
debug ip dhcp server packet
show ip dhcp binding
show ip dhcp conflict
clear ip dhcp conflict *