eigrp_lesson_slides.html
31.22 KB · text/html · 업로드 2026-07-24 14:36
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>EIGRP 수업 자료</title>
<style>
:root{--ink:#142033;--muted:#5c6878;--paper:#f6f8fb;--line:#d8e0e9;--navy:#173a63;--cyan:#087e8b;--lime:#b7e34b;--orange:#f4a261;--red:#c94c4c;--code:#102238}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:#e6edf3;font-family:Arial,"Noto Sans KR",sans-serif}#deck{min-height:100vh;display:grid;grid-template-rows:58px 1fr 64px}header{display:flex;align-items:center;justify-content:space-between;padding:0 5.5vw;color:#fff;background:var(--navy)}.brand{font-weight:700}.brand small{margin-left:10px;color:#b9c9dc;font-weight:400}#counter{font-size:14px;font-variant-numeric:tabular-nums}main{display:grid;place-items:center;padding:24px 5.5vw}.slide{display:none;width:min(1180px,100%);min-height:min(665px,calc(100vh - 145px));padding:clamp(28px,4.5vw,64px);background:var(--paper);border:1px solid #d1dbe5;border-radius:6px;box-shadow:0 18px 42px #152b4226}.slide.active{display:flex;flex-direction:column;animation:enter .25s ease-out}@keyframes enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.eyebrow{margin:0 0 15px;color:var(--cyan);font-size:14px;font-weight:700;letter-spacing:1.3px}h1{max-width:860px;margin:0;font-size:clamp(38px,5vw,70px);line-height:1.08}h2{margin:0 0 24px;font-size:clamp(27px,3.2vw,44px);line-height:1.15}h3{margin:0 0 11px;font-size:18px}p,li{font-size:17px;line-height:1.58}p{margin:0 0 14px}ul,ol{margin:6px 0;padding-left:22px}li+li{margin-top:6px}.lead{max-width:720px;margin-top:26px;color:var(--muted);font-size:21px}.tag{display:inline-block;margin-top:auto;padding-top:30px;color:var(--cyan);font-size:14px;font-weight:700}.grid{display:grid;gap:18px}.two{grid-template-columns:repeat(2,minmax(0,1fr))}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.panel{padding:20px;border:1px solid var(--line);border-top:4px solid var(--cyan);background:#fff;border-radius:5px}.panel.orange{border-top-color:var(--orange)}.panel.red{border-top-color:var(--red)}.panel h3{color:var(--navy)}.callout{padding:14px 18px;background:#e8f7f7;border-left:4px solid var(--cyan);color:#17434a}.warning{background:#fff1eb;border-left-color:var(--orange);color:#74401f}code{padding:2px 5px;background:#e6ebf1;border-radius:3px;color:#174b72;font-family:Consolas,monospace;font-size:.89em}pre{overflow:auto;margin:0;padding:18px;color:#e8f0f7;background:var(--code);border-radius:4px;font:14px/1.5 Consolas,monospace;white-space:pre}table{width:100%;border-collapse:collapse;font-size:15px;background:#fff}th,td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left;line-height:1.4}th{color:var(--navy);background:#eaf0f5}td:first-child{color:var(--cyan);font-family:Consolas,monospace;font-weight:700;white-space:nowrap}.topology{position:relative;flex:1;min-height:310px;overflow:hidden;border:1px solid var(--line);background:#fff}.topology svg{position:absolute;width:100%;height:100%;inset:0}.router{position:absolute;z-index:1;display:grid;place-items:center;width:104px;height:72px;color:#fff;background:var(--navy);border:4px solid #9cc7d0;border-radius:50%;font-weight:700}.r1{left:8%;top:36%}.r2{left:calc(50% - 52px);top:12%}.r3{right:8%;top:36%}.net{position:absolute;z-index:1;padding:6px 9px;color:#45596b;background:#f6f8fb;border:1px solid var(--line);border-radius:3px;font:12px Consolas,monospace}.n1{left:26%;top:29%}.n2{right:26%;top:29%}.lan1{left:2%;bottom:8%}.lan2{left:calc(50% - 46px);bottom:8%}.lan3{right:2%;bottom:8%}.formula{padding:19px;color:#fff;background:var(--navy);font:18px/1.5 Consolas,monospace;text-align:center}.sequence{display:flex;align-items:stretch;margin-top:12px}.sequence div{flex:1;padding:15px;border:1px solid var(--line);background:#fff;text-align:center}.sequence div+div{border-left:0}.sequence b{display:block;margin-bottom:5px;color:var(--cyan)}footer{display:flex;align-items:center;justify-content:center;gap:13px}button{width:38px;height:34px;border:1px solid #9baab8;border-radius:4px;color:var(--navy);background:#fff;font-size:22px;cursor:pointer}button:hover{color:#fff;background:var(--navy)}button:disabled{opacity:.35;cursor:default}#progress{position:fixed;bottom:0;left:0;height:4px;background:var(--lime);transition:width .2s}.toc{columns:2;column-gap:40px}.toc li{break-inside:avoid;padding:4px 0}.small{color:var(--muted);font-size:14px}@media(max-width:720px){header{padding:0 20px}.brand small{display:none}main{padding:14px}.slide{min-height:calc(100vh - 128px);padding:28px 22px}.two,.three{grid-template-columns:1fr}p,li{font-size:16px}.toc{columns:1}.topology{min-height:350px}.router{width:76px;height:54px;font-size:13px}.r1{left:4%;top:40%}.r2{left:calc(50% - 38px);top:10%}.r3{right:4%;top:40%}.n1{left:20%;top:31%}.n2{right:18%;top:31%}}@media print{header,footer,#progress{display:none}main{display:block;padding:0}.slide,.slide.active{display:flex;min-height:100vh;width:100%;border:0;border-radius:0;box-shadow:none;page-break-after:always}}
</style>
</head>
<body>
<div id="deck"><header><div class="brand">NETWORK ROUTING <small>EIGRP Class Deck</small></div><div id="counter">01 / 24</div></header><main>
<section class="slide active"><p class="eyebrow">Interior Gateway Protocol</p><h1>EIGRP<br>라우팅과 장애 수렴</h1><p class="lead">이웃 관계에서 DUAL, SIA 대응, 경로 제어와 MD5 인증까지. 제공된 EIGRP 노트북 실습 내용을 수업용 슬라이드로 재구성했습니다.</p><span class="tag">Arrow keys / Space: next | Home / End: first / last</span></section>
<section class="slide"><p class="eyebrow">Roadmap</p><h2>오늘의 흐름</h2><ol class="toc"><li>EIGRP의 역할과 3개 테이블</li><li>실습 토폴로지</li><li>5가지 패킷과 이웃 관계</li><li>복합 메트릭과 K 값</li><li>DUAL, FD/RD, Successor/FS</li><li>ECMP와 UCMP</li><li>Query, Reply, Active, SIA</li><li>Prefix-list 기반 필터링</li><li>MD5 Key-chain 인증</li><li>축약, Passive-interface, 대역폭 제한</li><li>검증 명령과 실습 시나리오</li><li>용어 정리</li></ol></section>
<section class="slide"><p class="eyebrow">01 / Overview & Architecture</p><h2>EIGRP의 위치와 설계 특징</h2><div class="grid two"><div class="panel"><h3>Advanced Distance Vector</h3><p>전통적 distance-vector처럼 이웃에게 경로를 학습하지만, 전체 토폴로지와 DUAL을 사용해 loop-free 대체 경로를 계산합니다. 따라서 흔히 <b>하이브리드 특성</b>이라고 설명합니다.</p><h3 style="margin-top:18px">Classless Routing</h3><p>VLSM과 CIDR을 지원하며 prefix length를 경로 정보에 포함합니다. <code>no auto-summary</code>는 discontiguous network 실습에서 명시적으로 확인합니다.</p></div><div class="panel orange"><h3>빠른 수렴</h3><p>Successor 장애 시 Feasible Successor가 있으면 Query 없이 즉시 승격됩니다. FS가 없으면 DUAL이 Query/Reply 확산을 시작합니다.</p><div class="formula">목표: loop-free + 예측 가능한 Query 범위</div></div></div><p class="callout" style="margin-top:20px">EIGRP는 단순히 “빠른 프로토콜”이 아니라, 상태를 Passive로 안정적으로 되돌릴 수 있는 경로 계산과 범위 설계가 핵심입니다.</p></section>
<section class="slide"><p class="eyebrow">02 / DUAL & Transport</p><h2>DUAL과 RTP가 함께 수렴을 완성한다</h2><div class="grid two"><div class="panel"><h3>DUAL (Diffusing Update Algorithm)</h3><ul><li>최적 경로는 Successor(S)로 선정합니다.</li><li>Reported Distance가 현재 FD보다 작은 경로는 Feasible Successor(FS)로 저장합니다.</li><li>FS가 없을 때만 Active, Query, Reply 계산을 수행합니다.</li><li>Feasibility Condition은 loop-free 경로의 충분조건입니다.</li></ul></div><div class="panel"><h3>RTP (Reliable Transport Protocol)</h3><ul><li>EIGRP의 Update, Query, Reply를 신뢰성 있게 전달합니다.</li><li>수신 확인 ACK와 재전송, 순서 번호를 관리합니다.</li><li>Hello와 ACK 자체는 신뢰성 확인 대상이 아닙니다.</li><li>멀티캐스트가 실패하면 필요한 이웃에 유니캐스트로 재전송할 수 있습니다.</li></ul></div></div><p class="small">RTP는 TCP가 아닙니다. EIGRP 패킷에 필요한 신뢰성만 프로토콜 내부에서 제공합니다.</p></section>
<section class="slide"><p class="eyebrow">03 / Packet Mechanics</p><h2>5가지 패킷과 상태 전이</h2><div class="sequence"><div><b>Hello</b>224.0.0.10<br>Neighbor 발견/유지</div><div><b>Update</b>경로 정보<br>동기화/변경</div><div><b>ACK</b>유니캐스트<br>수신 확인</div><div><b>Query</b>대체 경로<br>질의</div><div><b>Reply</b>Query origin에<br>응답</div></div><div class="grid three" style="margin-top:22px"><div class="panel"><h3>Passive</h3><p>경로 계산이 완료되어 안정적으로 RIB에 설치된 상태.</p></div><div class="panel orange"><h3>Active</h3><p>Successor가 사라지고 FS가 없어 Query가 진행 중인 상태.</p></div><div class="panel red"><h3>SIA</h3><p>필요한 Reply가 만료 시간까지 오지 않아 이웃 관계를 재설정하는 상태.</p></div></div><p class="callout" style="margin-top:20px">확인 명령: <code>show ip eigrp topology</code>의 P/A/Q/R/r/s 코드와 <code>show ip eigrp traffic</code>의 패킷 카운터를 함께 읽습니다.</p></section>
<section class="slide"><p class="eyebrow">04 / Composite Metric</p><h2>전체 K-value와 메트릭 계산</h2><div class="formula">metric = 256 × [(K1 × BW + K2 × BW/(256−Load) + K3 × Delay) × (K5/(Reliability+K4))]</div><div class="grid two" style="margin-top:18px"><div class="panel"><h3>기본 K-value</h3><table><tr><th>K</th><th>요소</th><th>기본</th></tr><tr><td>K1</td><td>Bandwidth</td><td>1</td></tr><tr><td>K2</td><td>Load</td><td>0</td></tr><tr><td>K3</td><td>Delay</td><td>1</td></tr><tr><td>K4</td><td>Reliability 보정</td><td>0</td></tr><tr><td>K5</td><td>Reliability 보정</td><td>0</td></tr></table></div><div class="panel orange"><h3>계산 실습 순서</h3><ol><li>경로의 최소 bandwidth를 Kbps로 기록합니다.</li><li>각 인터페이스 delay를 microsecond 단위로 합산합니다.</li><li>기본값에서는 K1과 K3 항만 남겨 계산합니다.</li><li>비기본 K값을 쓰면 모든 이웃에 동일하게 적용하고 adjacency를 재확인합니다.</li></ol><p class="small">기본값에서 흔히 쓰는 단순형은 <code>256 × (10^7 / minimum BW + total delay/10)</code>입니다. 장비의 실제 topology FD를 정답으로 삼아 비교합니다.</p></div></div></section>
<section class="slide"><p class="eyebrow">01 / Foundation</p><h2>EIGRP는 무엇을 관리하는가</h2><div class="grid three"><div class="panel"><h3>이웃 테이블</h3><p>직접 연결된 EIGRP 라우터와 adjacency를 관리합니다.</p><code>show ip eigrp neighbors</code></div><div class="panel"><h3>토폴로지 테이블</h3><p>학습한 경로와 DUAL 계산 상태를 보관합니다.</p><code>show ip eigrp topology</code></div><div class="panel"><h3>라우팅 테이블</h3><p>최선의 Successor 경로만 RIB에 설치합니다.</p><code>show ip route eigrp</code></div></div><p class="callout" style="margin-top:24px">EIGRP는 distance-vector 계열이면서 토폴로지 정보를 유지하고 DUAL로 loop-free 경로를 빠르게 계산하는 advanced distance-vector IGP입니다.</p></section>
<section class="slide"><p class="eyebrow">02 / Topology</p><h2>실습 공통 토폴로지</h2><div class="topology"><svg viewBox="0 0 1000 420" preserveAspectRatio="none"><line x1="145" y1="205" x2="500" y2="77" stroke="#087e8b" stroke-width="5"/><line x1="500" y1="77" x2="855" y2="205" stroke="#087e8b" stroke-width="5"/><line x1="145" y1="205" x2="855" y2="205" stroke="#a8b7c4" stroke-width="3" stroke-dasharray="9 8"/></svg><div class="router r1">R1<br>1.1.1.1</div><div class="router r2">R2<br>2.2.2.2</div><div class="router r3">R3<br>3.3.3.3</div><span class="net n1">10.12.12.0/30</span><span class="net n2">10.23.23.0/30</span><span class="net lan1">LAN-A 172.16.1.0/24</span><span class="net lan2">LAN-B 172.16.2.0/24</span><span class="net lan3">LAN-C 172.16.3.0/24</span></div><p class="small" style="margin-top:12px">실선은 기본 링크, 점선 R1-R3은 Feasible Successor 및 UCMP 비교를 위한 선택 링크입니다. 세 라우터는 AS 100을 사용합니다.</p></section>
<section class="slide"><p class="eyebrow">03 / Base Configuration</p><h2>기본 EIGRP 기동 설정</h2><div class="grid two"><pre>! R1 예시
router eigrp 100
eigrp router-id 1.1.1.1
network 10.12.12.0 0.0.0.3
network 172.16.1.0 0.0.0.255
passive-interface default
no passive-interface Serial1/0</pre><div class="panel"><h3>설정 원칙</h3><ul><li>인접 라우터는 같은 AS 번호를 사용합니다.</li><li><code>network</code>는 해당 인터페이스에서 EIGRP를 활성화하고 연결 prefix를 광고합니다.</li><li>명시적인 router-id는 장애 분석 시 식별을 단순화합니다.</li><li>말단 LAN은 passive로 두어 Hello와 인접 형성을 막습니다.</li></ul><p class="small">클래식 모드 예시입니다. IOS 버전에 따라 named mode 및 자동 요약 기본 동작이 다를 수 있으므로 <code>show ip protocols</code>로 확인합니다.</p></div></div></section>
<section class="slide"><p class="eyebrow">03 / Neighbor Discovery</p><h2>5가지 EIGRP 패킷</h2><table><thead><tr><th>패킷</th><th>용도</th><th>전송 및 확인</th></tr></thead><tbody><tr><td>Hello</td><td>이웃 발견과 keepalive. AS와 K 값 등 호환 조건을 확인합니다.</td><td>224.0.0.10 멀티캐스트. ACK 없음.</td></tr><tr><td>Ack</td><td>신뢰성 전송된 Update, Query, Reply 수신 확인입니다.</td><td>유니캐스트, 데이터 없음.</td></tr><tr><td>Update</td><td>새 이웃 동기화 또는 변경된 경로 정보를 전달합니다.</td><td>신뢰성 전송. 초기 동기화는 유니캐스트 가능.</td></tr><tr><td>Query</td><td>FS가 없는 경로 장애 시 대체 경로를 질의합니다.</td><td>신뢰성 전송, 이웃에게 전파.</td></tr><tr><td>Reply</td><td>Query에 대한 응답입니다.</td><td>질의한 이웃에게 유니캐스트.</td></tr></tbody></table><p class="small" style="margin-top:14px">일반 Hello/Hold 기본값은 고속 및 point-to-point 5초/15초, NBMA 60초/180초입니다. 실제 값은 장비와 인터페이스에서 확인합니다.</p></section>
<section class="slide"><p class="eyebrow">04 / Metric</p><h2>복합 메트릭과 K 값</h2><div class="grid two"><div><div class="formula">metric = 256 x (K1 x bandwidth + K3 x delay)</div><p style="margin-top:18px">기본값은 <code>K1=1</code>, <code>K3=1</code>이며 Load(K2), Reliability(K4/K5)는 기본적으로 사용하지 않습니다. MTU는 Update에 전달되지만 메트릭 계산에는 쓰이지 않습니다.</p><p class="callout">모든 이웃의 K 값은 반드시 일치해야 adjacency가 형성됩니다.</p></div><div class="panel orange"><h3>두 값의 의미</h3><p><b>Bandwidth</b>: 경로의 최저 대역폭을 기준으로 계산</p><p><b>Delay</b>: 각 인터페이스 지연의 누적값</p><p class="small"><code>bandwidth</code> 명령은 EIGRP 계산용 참조값이며 실제 회선 속도를 바꾸지 않습니다.</p></div></div></section>
<section class="slide"><p class="eyebrow">05 / DUAL</p><h2>Loop-free 경로를 미리 계산한다</h2><div class="grid two"><div class="panel"><h3>Successor</h3><p>FD가 가장 낮아 라우팅 테이블에 설치된 최적 next hop입니다.</p><p><b>FD</b>: 로컬 라우터에서 목적지까지의 전체 메트릭.</p></div><div class="panel"><h3>Feasible Successor</h3><p>장애 시 즉시 Successor로 승격 가능한 백업 경로입니다.</p><p><b>RD/AD</b>: 이웃이 광고한 목적지까지의 메트릭.</p></div></div><div class="sequence"><div><b>Feasibility condition</b>이웃 RD < 현재 Successor FD</div><div><b>조건 충족</b>FS로 보관, 즉시 수렴</div><div><b>조건 미충족</b>Query로 대체 경로 탐색</div></div><p class="small" style="margin-top:18px">Feasibility condition은 loop-free 보장을 위한 충분조건입니다. 이를 만족하지 않는 경로가 반드시 loop라는 뜻은 아닙니다.</p></section>
<section class="slide"><p class="eyebrow">06 / Load Balancing</p><h2>ECMP와 UCMP</h2><div class="grid two"><div class="panel"><h3>ECMP</h3><p>동일한 메트릭의 Successor 경로를 동시에 사용합니다.</p><pre>router eigrp 100
maximum-paths 4</pre></div><div class="panel orange"><h3>UCMP</h3><p>Feasibility condition을 만족하는 불균등 비용 경로도 <code>variance</code> 범위에 포함할 수 있습니다.</p><pre>router eigrp 100
variance 2</pre></div></div><p class="callout" style="margin-top:22px">최적 FD x variance 이하인 FS가 후보가 됩니다. 예: 최적 FD 100, variance 2이면 FD 200 이하의 조건 충족 FS를 로드밸런싱합니다. variance 범위는 1~128입니다.</p></section>
<section class="slide"><p class="eyebrow">07 / Convergence</p><h2>Active 상태와 SIA</h2><div class="grid three"><div class="panel"><h3>1. 장애 감지</h3><p>Successor가 사라지고 FS가 없으면 해당 prefix가 <b>Active</b>가 됩니다.</p></div><div class="panel orange"><h3>2. Query 확산</h3><p>이웃에게 Query를 보내고 Reply를 기다립니다. 이 동안 해당 prefix 전달은 보류됩니다.</p></div><div class="panel red"><h3>3. SIA</h3><p>Reply가 기한 내 도착하지 않으면 <b>Stuck In Active</b>입니다. 응답하지 않은 이웃 adjacency가 reset됩니다.</p></div></div><pre style="margin-top:22px">R2# show ip eigrp topology 172.16.1.0/24
A 172.16.1.0/24, 1 successors, FD is Inaccessible, Q
1 replies, active 00:00:34, query-origin: Successor Origin
Remaining replies:
via 10.23.23.3, r, Serial1/0</pre><p class="small" style="margin-top:14px">예방: 수동 축약, stub 경계, 재분배 설계로 Query 범위를 줄이고 CPU, 손실, 필터 문제를 점검합니다. 단순 timer 증가는 근본 해결책이 아닙니다.</p></section>
<section class="slide"><p class="eyebrow">08 / SIA Supplement from EIGRP.pdf</p><h2>SIA 발생 흐름과 원인 분석</h2><div class="grid two"><div class="panel"><h3>두 가지 경로 변화</h3><ol><li><b>FS가 존재</b>: 기존 Successor 장애 → FS가 Successor로 승격 → 빠르게 Passive 복귀.</li><li><b>FS가 없음</b>: 목적지 상태가 Active로 전환 → 인접 라우터에 Query → Reply 수신 후 DUAL 계산 → Passive 복귀.</li></ol><p class="small">Active 동안 해당 목적지의 패킷 전달은 보류될 수 있습니다. PDF의 실습 출력은 <code>A prefix, FD is Inaccessible, Q</code>와 남은 Reply를 보여줍니다.</p></div><div class="panel red"><h3>SIA 타이밍</h3><table><tr><th>상황</th><th>결과</th></tr><tr><td>Query ACK 미수신</td><td>신뢰성 전송 재시도 후 neighbor 단절 가능. PDF는 최대 16회 재전송을 설명.</td></tr><tr><td>Reply 미수신</td><td>Active 상태가 기본 active timer(약 3분)를 넘으면 SIA 및 neighbor reset.</td></tr><tr><td>Neighbor 단절 후</td><td>해당 neighbor가 제공한 모든 경로 삭제, Hello 재수립 뒤 대규모 Update.</td></tr></table></div></div><div class="grid two" style="margin-top:20px"><div class="panel orange"><h3>PDF의 SIA 관찰 명령</h3><pre>router eigrp 100\n eigrp stub connected summary\n timers active-time 1\n! 타이머 실험 후 기본값 원복\n no timers active-time\ndebug eigrp fsm
show ip eigrp topology active
show logging | include DUAL|SIA
undebug all</pre><p class="small"><code>Find FS</code>, <code>entering active state</code>, <code>Set reply-status table</code>, <code>RT installed</code> 로그를 상태 전이와 함께 읽습니다.</p></div><div class="panel"><h3>예방 우선순위</h3><ol><li>summary로 Query 범위를 축소</li><li>재분배 경계와 EIGRP stub으로 말단 Query 차단</li><li>CPU, 링크 손실, 필터, 혼잡 및 Q Cnt 점검</li><li>bandwidth-percent로 EIGRP 제어 트래픽 상한 설정</li></ol><p class="warning callout">Active timer를 3분에서 5분으로 늘리는 것만으로 SIA 원인을 해결하지 않습니다. PDF도 타이머 증가는 권장 대책이 아님을 강조합니다.</p></div></div></section>
<section class="slide"><p class="eyebrow">09 / SIA Lab Pattern</p><h2>PDF ACL 예제의 의미와 주의점</h2><div class="grid two"><div><p>PDF는 인접 라우터 사이의 EIGRP 패킷을 선택적으로 차단해 Reply 미수신을 관찰하는 예제를 제시합니다. 아래 명령은 반드시 격리된 랩에서만 사용합니다.</p><pre>access-list 106 deny eigrp host 17.0.0.1 host 17.0.0.2
access-list 106 permit eigrp any any
access-list 106 permit ip any any
interface Serial1/1
ip access-group 106 out</pre></div><div class="panel red"><h3>실험 해석</h3><ul><li>ACL은 EIGRP protocol 88 패킷을 차단하므로 Hello, Query, Reply 모두 영향을 받을 수 있습니다.</li><li>실제 SIA와 단순 neighbor down을 구분하려면 <code>show ip eigrp topology active</code>, ACL hit count, Hold Time을 함께 확인합니다.</li><li>실험 종료 후 <code>no ip access-group 106 out</code>, ACL 삭제, <code>undebug all</code>을 반드시 실행합니다.</li></ul><p class="warning callout">PDF의 ACL 예제는 교육용 장애 유발 패턴입니다. 운영망에 적용하면 광범위한 adjacency reset을 만들 수 있습니다.</p></div></div></section>
<section class="slide"><p class="eyebrow">08 / Prefix Filtering</p><h2>Prefix-list로 광고 경로 제어</h2><div class="grid two"><pre>! R3: 172.16.1.0/24 광고 차단
ip prefix-list EIGRP-OUT seq 5 deny 172.16.1.0/24
ip prefix-list EIGRP-OUT seq 10 permit 0.0.0.0/0 le 32
router eigrp 100
distribute-list prefix EIGRP-OUT out Serial1/0</pre><div class="panel"><h3>핵심 규칙</h3><ul><li>prefix-list는 순서대로 평가하며 첫 match에서 종료합니다.</li><li>마지막 permit 문이 없으면 암묵적 deny가 적용됩니다.</li><li><code>le 32</code>는 해당 prefix 및 더 긴 모든 IPv4 prefix를 허용합니다.</li><li>sequence 번호로 중간 항목을 삽입 및 삭제할 수 있습니다.</li></ul><p class="small">ACL 기반 distribute-list도 가능하지만 prefix-list는 prefix 길이 조건을 더 분명하게 표현합니다.</p></div></div></section>
<section class="slide"><p class="eyebrow">09 / Authentication</p><h2>MD5 Key-chain으로 이웃 인증</h2><div class="grid two"><pre>! 양쪽 인터페이스에 동일하게 구성
key chain EIGRP_KEY
key 1
key-string cisco
interface Serial1/0
ip authentication key-chain eigrp 100 EIGRP_KEY
ip authentication mode eigrp 100 md5</pre><div class="panel"><h3>검증 포인트</h3><ul><li>양단 AS, key-chain, key-string, 인증 모드가 호환되어야 합니다.</li><li>인증 불일치 시 adjacency가 형성되지 않습니다.</li><li>운영 환경에서는 충분히 강한 비밀값과 key rotation 정책을 사용합니다.</li></ul><p class="callout">인증은 신뢰할 라우팅 이웃을 제한하지만 접근 제어 정책 자체를 대체하지는 않습니다.</p></div></div></section>
<section class="slide"><p class="eyebrow">10 / Summarization</p><h2>Auto-Summary와 Manual Summary</h2><div class="grid two"><div class="panel"><h3>Auto-Summary</h3><p>과거 IOS의 classful 경계에서 자동으로 major network로 요약하는 동작입니다. VLSM, CIDR, discontiguous network 환경에서는 예기치 않은 경로가 될 수 있어 실습에서는 보통 다음처럼 비활성화합니다.</p><pre>router eigrp 100
no auto-summary</pre></div><div class="panel orange"><h3>Manual Summary</h3><p>원하는 경계 인터페이스에서 원하는 prefix로 요약합니다. 요약 경로의 metric은 해당 인터페이스에 연결된 포함 경로 중 최저 metric을 기준으로 광고됩니다.</p><pre>interface Serial0/0
ip summary-address eigrp 100 172.16.0.0 255.255.252.0
!
show ip route 172.16.0.0</pre></div></div><p class="callout" style="margin-top:20px">요약은 라우팅 테이블 크기와 Query 범위를 줄이지만, 너무 넓은 요약은 실제로 존재하지 않는 목적지까지 도달 가능하다고 광고할 수 있습니다. 경계와 Null0 동작을 함께 검증합니다.</p></section>
<section class="slide"><p class="eyebrow">10 / Route Policy</p><h2>distribute-list와 offset-list</h2><div class="grid two"><div class="panel"><h3>distribute-list: 경로 정보 허용/차단</h3><p>라우팅 업데이트가 특정 인터페이스로 들어오거나 나갈 때 prefix를 필터링합니다. ACL 또는 prefix-list를 호출하며, 필터링된 경로는 RIB와 topology에 반영되지 않습니다.</p><pre>ip prefix-list DENY-LAN seq 5 deny 172.16.1.0/24
ip prefix-list DENY-LAN seq 10 permit 0.0.0.0/0 le 32
router eigrp 100
distribute-list prefix DENY-LAN out Serial1/0
!
show ip prefix-list
show ip route eigrp
show ip eigrp topology</pre><p class="small"><code>in</code>: 해당 인터페이스에서 학습하기 전 차단. <code>out</code>: 해당 인터페이스로 광고하기 전 차단. 마지막 permit이 없으면 암묵적 deny입니다.</p></div><div class="panel orange"><h3>offset-list: 선택 경로의 메트릭 증가</h3><p>경로를 차단하지 않고 ACL에 match한 EIGRP 경로의 metric에 offset을 더합니다. 특정 경로의 선호도를 낮춰 다른 Successor/FS를 선택하게 만드는 용도입니다.</p><pre>access-list 10 permit 172.16.3.0 0.0.0.255
router eigrp 100
offset-list 10 in 100000 Serial1/0
!
show ip eigrp topology 172.16.3.0/24
show ip route 172.16.3.0</pre><p class="small"><code>in</code>은 수신 경로 metric에 더하고 <code>out</code>은 광고 metric에 더합니다. offset은 EIGRP 복합 metric에 가산되며 경로를 직접 삭제하지 않습니다.</p></div></div><div class="callout" style="margin-top:20px"><b>구분법:</b> distribute-list = 보이지 않게 차단, offset-list = 보이지만 비용을 높임. 변경 전후 FD/RD, Successor, RIB next hop을 함께 기록하고 실습 후 ACL/offset-list를 원복합니다.</div></section>
<section class="slide"><p class="eyebrow">10 / Operational Controls</p><h2>축약, Passive, 대역폭 제한</h2><div class="grid three"><div class="panel"><h3>수동 축약</h3><pre>interface S1/0
ip summary-address eigrp 100 172.16.0.0 255.255.252.0</pre><p class="small">경계에서 상세 경로를 하나로 요약해 Query 범위를 줄입니다.</p></div><div class="panel"><h3>Passive-interface</h3><pre>router eigrp 100
passive-interface default
no passive-interface S1/0</pre><p class="small">해당 인터페이스에서 Hello와 Update를 보내지 않아 불필요한 이웃을 막습니다.</p></div><div class="panel"><h3>대역폭 사용률</h3><pre>interface S1/1
ip bandwidth-percent eigrp 100 10</pre><p class="small">EIGRP가 인터페이스 대역폭의 일정 비율 이상을 쓰지 않도록 제한합니다.</p></div></div></section>
<section class="slide"><p class="eyebrow">11 / Verification</p><h2>운영 확인과 실습 시나리오</h2><div class="grid two"><div class="panel"><h3>확인 명령</h3><ul><li><code>show ip eigrp neighbors</code>: Hold, SRTT, RTO, Q Cnt</li><li><code>show ip eigrp topology</code>: P/Active, FD/RD, FS</li><li><code>show ip route eigrp</code>: 설치된 next hop</li><li><code>show ip protocols</code>: AS, K 값, 필터, passive 설정</li><li><code>show ip prefix-list</code>: sequence와 match count</li></ul></div><div class="panel orange"><h3>실습 순서</h3><ol><li>AS 100 기본 수렴을 확인합니다.</li><li>R1-R3 선택 링크로 FS를 만들고 FD/RD를 비교합니다.</li><li>FS 없는 경로 장애에서 Active와 Reply를 관찰합니다.</li><li>prefix-list 적용 뒤 RIB 변화를 확인합니다.</li><li>MD5 정상과 불일치 상태를 비교합니다.</li></ol></div></div><p class="warning callout" style="margin-top:20px">Query/Reply 차단이나 인증 불일치 실험은 격리된 랩에서만 수행합니다.</p></section>
<section class="slide"><p class="eyebrow">12 / Glossary</p><h2>용어 정리</h2><table><thead><tr><th>용어</th><th>정의</th></tr></thead><tbody><tr><td>Adjacency</td><td>Hello 호환 조건을 만족하여 EIGRP 정보를 교환하는 이웃 관계.</td></tr><tr><td>AS</td><td>EIGRP 프로세스 식별 번호. 이웃 간 동일해야 함.</td></tr><tr><td>DUAL</td><td>Diffusing Update Algorithm. loop-free 경로 선택과 빠른 수렴을 수행.</td></tr><tr><td>FD / RD</td><td>로컬 전체 경로 메트릭 / 이웃이 보고한 목적지까지의 메트릭.</td></tr><tr><td>Successor / FS</td><td>RIB에 설치된 최적 경로 / 즉시 사용할 수 있는 loop-free 백업 경로.</td></tr><tr><td>Passive / Active</td><td>경로 안정 상태 / Query를 통해 재계산 중인 상태.</td></tr><tr><td>SIA</td><td>필요한 Reply가 기한 내 오지 않아 이웃이 reset되는 현상.</td></tr><tr><td>ECMP / UCMP</td><td>동일 비용 / variance를 이용한 불균등 비용 다중 경로.</td></tr><tr><td>SRTT / RTO</td><td>왕복 시간의 평활화 값 / 신뢰성 패킷 재전송 타이머.</td></tr></tbody></table><p class="small" style="margin-top:auto">작성 근거: 43일차_라우터_EIGRP.ipynb, 45일차_Net_EIGRP_SIA.ipynb, 46일차_Net_EIGRP_prefix_auth.ipynb. 현재 디렉터리에는 참조 가능한 chunk 파일이 없습니다.</p></section>
<section class="slide"><p class="eyebrow">13 / Wrap-up</p><h2>핵심 정리</h2><div class="grid two"><div class="panel"><h3>설계 원칙</h3><ul><li>FS를 가질 수 있는 토폴로지는 빠른 수렴에 유리합니다.</li><li>축약과 stub 경계로 Query의 폭을 제한합니다.</li><li>필터, 인증, 대역폭은 검증 명령과 함께 적용합니다.</li></ul></div><div class="panel orange"><h3>장애 분석 순서</h3><ul><li>이웃이 정상인가: Hold, Q Cnt, 인증</li><li>토폴로지가 Active인가: 남은 Reply가 누구인가</li><li>RIB, 필터, 요약 때문에 경로가 사라졌는가</li></ul></div></div><p class="lead">좋은 EIGRP 설계의 목표는 빠른 수렴 자체가 아니라, 장애 때 Query가 작고 예측 가능한 범위에서 끝나도록 만드는 것입니다.</p></section>
</main><footer><button id="prev" aria-label="이전 슬라이드" title="이전">‹</button><button id="next" aria-label="다음 슬라이드" title="다음">›</button></footer></div><div id="progress"></div>
<script>const slides=[...document.querySelectorAll('.slide')],counter=document.querySelector('#counter'),progress=document.querySelector('#progress'),prev=document.querySelector('#prev'),next=document.querySelector('#next');let index=0;function show(n){index=Math.max(0,Math.min(n,slides.length-1));slides.forEach((s,i)=>s.classList.toggle('active',i===index));counter.textContent=("0"+(index+1)).slice(-2)+" / "+("0"+slides.length).slice(-2);progress.style.width=(((index+1)/slides.length)*100)+"%";prev.disabled=index===0;next.disabled=index===slides.length-1}prev.onclick=()=>show(index-1);next.onclick=()=>show(index+1);document.addEventListener("keydown",e=>{if(["ArrowRight","ArrowDown"," ","PageDown"].includes(e.key)){e.preventDefault();show(index+1)}if(["ArrowLeft","ArrowUp","PageUp"].includes(e.key)){e.preventDefault();show(index-1)}if(e.key==="Home")show(0);if(e.key==="End")show(slides.length-1)});document.querySelectorAll(".slide").forEach(s=>s.addEventListener("click",e=>{if(e.target.closest("a,button,pre,code"))return;const x=e.clientX/s.clientWidth;show(index+(x>=.5?1:-1))}));show(0)</script>
</body></html>