Advanced Distance Vector의 특징
목적지에 대한 거리와 방향을 가지고 있다는 점에서 Distance Vector와 동일하지 Distance Vector보다 훨씬 향상된 기능을 가지고 있는 라우팅 프로토콜이 Advanced Distance Vector의 분류에 들어간다. 대표적인 Advanced Distance Vector 프로토콜에는 EIGRP가 있다.
Advanced Distance Vector는 일반 Distance Vector에 비해 더 우월한 몇가지 특징을 가지고 있다.
두 범주를 비교했을 때 Advanced Distance Vector가 가지는 특징은 다음과 같다.
1. Flushed update/Partial update( Advanced ) <--> Periodic update
- 기존에 배운 Distance Vector의 경우 라우팅 테이블을 주기적으로 업데이트를 수행하기 위해 일정시간마다 경로 정보를 주고받았다.(ex. RIP -> 30초)
- 그러나 Advanced Distance Vector는 주기적으로 경로 정보를 주고 받는 Periodic update를 수행하지 않는다.
- 대신 처음 인접 Router와 hello 메시지를 주고받아 neighbor를 맺은 후에 한번만 경로 정보를 주고 받는다.
- 이후에는 경로정보를 주고받지 않으며, 경로에 변화가 생겼을 때만 경로 정보를 주고 받는다. 이것을 Flushed update/partial update라 한다.
- 또한 경로정보보다 간단한 Hello 메시지만 주기적으로 주고받는다. 이것으로 서로 살아있는 경로인 것(Keep alive)을 확인할 수 있다.
-주기적으로 경로정보를 주고받는 것은 Rotuer에게 부하를 줄 수 있다. 이때 보다 가벼운 Hello 메시지만 평소에 주고받는 것은 Router에게 부담을 훨씬 덜어주는 장정을 가진다.
2. Loop 발생의 위험성이 없(다.
-Dual 알고리즘을 사용하여 Loop가 없는 경로를 수학적으로 계산한다.
-Router가 Best Path와 Loop가 없다고 확인된 Backup Path를 자신의 Topology에 올려놓는다.
* HOP-count 제한이 100으로 존재하며, 자동축약을 수행하는 등 Distance Vector와 여러가지 공통점 또한 존재한다.
EIGRP 개념
-본래는 cisco에서 만든 cisco 전용 라우팅 프로토콜이었지만, 2016년 5월애 RFC 표준으로 등록되었다.
-정보 광고는 유니캐스트나 멀티캐스트만 사용하며, 이때 멀티캐스트 주소는 224.0.0.10 이다. (RIP은 224.0.0.9)
- EIGRP는 UDP나 TCP를 사용하지 않으며 IP 바로 뒤에 정보가 온다.
*IPv4의 Protocol Number 필드의 번호가 6번이면 TCP, 17번이면 UDP, 88번은 EIGRP, 89번은 OSPF
-EIGRP의 AD값은 내부일 경우 90, 외부일 경우 170이다.
*내부는 같은 AS를 뜻하며 외부는 서로 다른 AS에서 재분배를 사용하는 경우이다.
-EIGRP는 여러가지 값을 Metric으로 사용하는데 이것은 K-value를 통해 설정이 가능하다.
EIGRP의 특징
EIGRP는 다음과 같은 특징을 가지고 있다.
1. PDM(Protocol Dependent Module)을 지원한다.
-> IP 외에도 IPX, Apple talk 등과 같은 Layer 3 주소 지원
2. AS로 update 범위 제한
-> 같은 번호의 AS와만 update 패킷을 교환한다.
-> 즉, 관리자는 임의로 AS 번호를 다르게하여 update 범위를 제한할 수 있다.
3. EIGRP가 설정된 Router들은 인접 Router들과 hello 패킷을 교환하여 Neighbor 관계를 형성할 수 있고 해당 정보를 자신의 Topology table에 등록 한다.
4. RTP(Reliable Transfer Protocol) 동작이 가능하다.
* RTP란? 신뢰성을 기반으로한 TCP처럼 ACK 패킷을 보내 자신이 제대로 받았다는 것을 확인시켜주는 기능
5. EIGRP는 다음과 같은 종류의 패킷이 있다.
-1) Hello
-> neighbor 관계를 형성, 유지시켜주는 패킷
-> neigbor는 다음과 같은 조건이 일치해야 형성이 가능하다 -> AS번호, K상수, subnet 대역, Authentication
-> neigbor 관계를 형성한 후에는 유지시키기 위해서 주기적으로 교환된다.
* 이더넷 구간 / point-to-point / T1 이상의 NBMA 구간 -> Hello 5초, Hold-time 15초
T1 미만의 NBMA 구간(X.25 / Frame-Relay, ATM) -> Hello 60초, Hold-time 180초
-2) update
-> 자신의 Topology table에 등록된 정보를 서로 교환할때 사용하는 패킷.
-3) Query
-> loop 확인용 패킷
-4) Replay
-5) ACK
-> 상대방이 앞서 언급한 패킷들을 받았는지 확인할 때 사용하는 패킷
-> 해당 패킷을 수신하지 못하면 재전송을 수행한다.
-> 16번 이상 ACK 패킷을 받지 못할경우 Neighbor 관계를 단절한다.
*show ip eigrp neighbor를 입력 시 나오는 결과물
hold: neigbor가 끊기기 전까지 남은 시간
uptime: neighbor 관계 유지 시간
SRTT: update를 보낸 후 ACK가 오기까지 평균 대기 시간
RTO: ACK가 오지 않은 경우 대기 시간
Qcnt: EIGRP가 전송하지 못한 패킷 갯수
SeqNum: 내가 보낸 패킷의 수
EIGRP K-VALUE
-EIGRP는 Bandwidth, Delay, Reliability, Load라는 총 4개의 값을 Metric으로 사용한다.
-Bandwidth(대역폭), Delay(지연)는 고정된 값이며, Reliability(신뢰성),Load(부하)는 망의 상태에 따라 실시간으로 변동되는 값이다.
-따라서 Reliability와 Load를 Metric 값으로 사용할 시 지속적으로 Best Path가 바뀌게되며, 이는 망의 안정성을 떨어트리는 결과를 가져온다.
-고로 기본적으로 Bandwidth와 Delay만을 사용하여 Metric 값을 계산하며, Reliability와 Load는 필요시 추가할 수 있다.
-EIGRP에는 K-Value라는 것이 존재하며 이것에 따라 각각의 값의 사용여부를 설정할 수 있다.
-K-Value는 다음과 같은 상징성을 가지고 있다..
k1 -> Bandwidth
k2 -> Load
k3 -> delay
k4 and k5 -> Load
-만약 해당 값을 사용할 것이면 해당 값을 1로 바꿔주면 된다.
-기본적으로는 Bandwidth와 Delay만 사용하니 k1과 k3만 1로바꾸고 나머지는 0으로 사용한다 -> 10100
-만약 다른 값 또한 사용하고 싶다면 관리자가 임의로 K-Value를 지정해줄 수 있다. (이때 반드시 맞은편 라우터도 같은 값으로 지정해주어야한다.)
R1(config-router)#metric weights 0 <k1> <k2> <k3> <k4> <k5> -> k-value 변경 명령어
EIGRP metric 계산
-EIGRP는 앞서 말한 것처럼 여러가지 값을 metric으로 사용해서 조금은 복잡한 metric 계산식을 사용한다.
- 크게 k5=0일때와 k5!=0일때 두가지 유형으로 나누어 계산식을 가진다.
BW는 10^7을 경로상 가장 느린 BandWidth로 나눈 값 -> 10^7 / 가장 느린 Bandwidth, DLY는 모든 경로상 Delay의 합 / 10
case 1. K5 = 1 -> (K1*BW + K2*BW(256-Load) + K3*DLY) * 256
case 2. K5 != 1 -> (K1*BW + K2*BW(256-Load) + K3*DLY) * 256 * (K5/Reliability+k4)
-이처럼 상당히 복잡한 공식을 가지고 있다. 그러나 대부분의 경우 K1과 K3만 1이므로 다음과 같이 축소하여 생각할 수 있다.
(BW + DLY) * 256
->( 10^7 / 경로상 가장느린 Bandwidth + 모든 경로상 Delay의 합 /10 ) * 256
EIGRP metric 계산 예시
R1에서 R4의 루프백인 4.4.4.4/24 로 가는 경로를 우선 살펴보자
R1#show ip eigrp topology
결과를 확인해보면
위와같이 FastEthernet과 Serial 두가지 경로를 확인 가능하다.
경로에는 두가지 값이 있는데 앞에 나온 값이 metric을 뜻한다.
즉 FastEthernet 0/0으로 가는 경로의 metric은 158720
Serial 0/0으로 가는 경로의 metric은 2300416
FastEthernet의 Bandwidth는 100000, Delay는 100
Serial의 Bandwidth는 1544, Delay는 20000
loopback의 Bandwith는 8000000, delay는 5000
f0/0으로 가는 경로를 계산해보면 가장 낮은 Bandwidth는 FastEthernet의 Bandwidth인 100000, 경로의 Delay 합은 5200(fa 2개, lo 1개)
즉 (10^7/100000 + 5200/10) * 256
->(100 + 520) *256
-> 158720
s0/0으로 가는 경로를 계산해보면 가장 낮은 Bandwidth는 Serial의 Bandwidth인 1544, 경로의 Delay합은 25100(serial 1개, fa 1개, lo 1개)
즉 (10^7/1544 + 25100/10) * 256
-> (6476.xxxxx + 2510) * 256
-> 8936 * 256(소수점 버림)
-> 2300416
topology table의 경로와 일치하는 것을 확인 가능하다.
DUAL
DUAL(Diffusing update Algorithm)
앞서 언급했듯이, EIGRP는 DUAL을 사용해 루프를 방지한다.
DUAL에서 사용하는 용어는 다음과 같다.
1. FD(Feasible Distance)
-> 출발지 라우터부터 목적지 Network까지 계산한 metric 값을 의미한다.
쉽게 말하면 앞서 계산한 방법이 FD를 계산한 방법이다.
자연스럽게 이 FD가 가장 낮은 경로가 Best Path로 지정된다.
2. AD(Advertised Distance)
-> 출발지 라우터의 next-hop router부터 목적지 network까지 계산한 metric 값을 의미한다.
즉 출발 라우터를 제외하고 그 다음 라우터부터 목적지까지 계산한 metric 값을 뜻한다.
3. S(Successor)
-> 출발지 라우터에서 Best Path 상의 Next-hop router를 의미한다.
4. FS(Feasible Successor)
-> Best Path를 제외한 나머지 중 Loop가 없다고 확인된 Backup Path 상의 Next-hop router를 의미한다.
이처럼 Best Path를 결정하고 나머지 경로 중 루프가 없는 경로를 Backup Path를 만드는 일련의 선출과정을 진행하는 알고리즘을 DUAL이라 한다.
1) 우선 EIGRP가 설정된 인접 Router끼리 neighbor를 맺고 서로의 정보를 update한다.
2) 수신한 모든 경로의 metric을 계산해 Best Path를 선출하고 루프가 없다고 확인된 Backup Path를 선출해서 이를 Topology table에 올린다.
-> 루프가 없다는 것을 확인하는 방법은 간단하다.
Best Path의 FD > Backup Path의 AD
즉 Backup Path의 AD가 최적경로의 metric보다 크면 루프가 있을 가능성이 있다고 판단한다.(무조건 루프 발생x, 루프 발생 가능성 o)
3) Best Path를 Routing table에 올려서 해당 경로만을 사용한다.
4) 만일 Best Path에 장애가 나면 빠르게 Topology table을 확인하여 즉시 Routing table에 등록한다.( fast convergence 가능)
5) 간혹 루프가 없지만 조건을 만족하지 못해 Backup Path에 등록되지 않는 경우가 있다. 만일 Best Path에 장애가 발생하였고 Topology에
Backup Path가 없는 경우, Query 메시지를 해당 경로에 보내서 루프가 없는지 확인하고사용한다.
*Query 메시지는 Hello 메시지처럼 EIGRP가 생성하는 패킷의 종류이다..
Manual-Summary
Manual-Summary는 경로를 요약하여 광고하는 방법이다.
만약 위와 같은 구성에서 R2가 R1에게 EIGRP를 통해 자신의 루프백인터페이스를 광고하면
R1의 테이블에는 다음과 같을 것이다.
위와같이 4개의 경로가 모두 뜬 것을 확인할 수 있다.
이때 해당 경로를 광고하는 인터페이스인 R2의 f0/0에 들어가서
R2(config-if)#ip summary-address eigrp 1 2.2.0.0 255.255.248.0
위와 같이 4개의 경로가 하나로 요약된 것을 확인할 수 있다.
이처럼 Manual-Summary를 사용하면 라우팅테이블의 크기를 줄여 부하를 낮출 수 있다.
또한 여기서 R2의 경로를 보면 다음과 같이 나와있다.
위와같이 EIGRP로 2.2.0.0/21을 광고받은 것을 확인할 수 있으며 뒤에 Null0라고 써져있는 것 또한 볼 수 있다.
만약 위와같은 문구가 라우팅 테이블에 없다면 다음과 같은 상황이 발생한다.
2.2.1.1 인터페이스가 다운되었다고 가정하자.
이때 R1이 2.2.1.1로 패킷을 보낸다면 R1은 당연히 R2쪽으로 해당 패킷을 전송할 것이다.
R2는 해당 패킷을 받았는데 인터페이스가 다운되어 해당 정보를 알지 못한다. 고로 설정되어았는 default-route로 해당 패킷을 전송하는 일이 생긴다.
이러한 일을 방지하고자 위와 같은 문구가 추가된 것이다. Null0는 쓰레기통과 같은 존재라고 생각하면된다.
만약 이 상태에서 2.2.1.1로 향하는 패킷을 받은다면 R2는 자연스럽게 해당 패킷을 default-router가 아닌 Null0로 보내 폐기할 것이다.
Unequal-cost Load-balancing
-두 경로의 AD 값과 metric이 모두 같은 경우에는 두가지 경로 모두 라우팅 테이블에 올리고 사용하는 방식을 equal-cost load-balancing라고 했음.
-EIGRP에서도 기본적으로 이 equal-cost load-balancing 기능만을 제공하지만 설정에 따라 unequal-cost load-balancing을 사용가능하기도하다.
-unequal-cost load-balancing이란 서로 다른 metric을 가지고 있어도 두가지 경로를 모두 사용하는 기능이다.
-관리자가 적절한 variacne 값을 입력해주면 metric이 높아도 같이 사용이 가능하다..
-unequal-cost load-balancing의 조건은 다음과 같다.
1) 부하분산을 시키려는 추가 경로가 backup path여야한다.
2) 관리자가 variance 값을 임의로 지정해줄 때 best path * variance > 후속 경로의 fd(추가경로의 fd)
앞서서 만든 network 구성에서 R1의 topology table을 확인해보면
다음과 같이 경로가 두개인 것을 확인 가능하다.
그러나 라우팅테이블을 확인해보면
다음과 같이 하나의 경로만 나오는 것을 확인 가능하다.
이것을 unequal-cost load-balancing으로 바꾸는 방법은 간단하다 관리자가 임의로 variance 값을 지정해주면 된다.
R1(config)#router eigrp 1
R1(config-router)#variance 20
그리고 다시 라우팅 테이블을 확인한다면
위와 같이 두가지 경로가 동시에 나오는 것을 확인 가능하다.
Passive interface
network 명령어에는 두가지 의미가 있다.
1. 해당 IP 주소를 광고해라
2. 해당 IP 주소가 할당된 인터페이스로 광고를 진행해라
그러나 모든 경우에 두가지가 다 필요한 것은 아니다.
위와 같은 네트워크 구성에서 int f0/1에 할당된 주소를 광고할 필요는 있지만 f0/1 자체를 광고 인터페이스로 만들 필요는 없다.
f0/1로 주기적인 hello나 update 메시지가 전송되는 것은 불필요한 부하를 증가시키고 보안 상에도 좋지 않다.
이런 경우를 대비하기위해서는 f0/1을 passive interface로 만들면된다.
passive interface를 사용할 경우 해당 interface는 광고를 하지 않는다.
passive interface를 만드는 명령어는 크게 두가지이다.
R1(config-router)# passive-interface f0/1
해당 인터페이스를 passive-interface로 만들거나
or
R1(config-router)# passive-interface default
R1(config-router)# no passive-interface f0/0
모두 passive-interface로 만들어주고 광고할 인터페이스만 passive를 해제하는 방식
보안상 당연히 passive를 default로 만드는 것이 훨씬 좋다.
Unicast 전송
그러나 passive interface를 만든다고 모든 것을 해결할 수 있는 것은 아니다.
passive interface를 만들어도 해결하지 못하는 경우가 있다.
때로는 광고를 해야할 인터페이스에 pc와 같은 end device가 있어서 passive interface로 만들지 못하는 경우가 있다.
이럴때는 기존에 multi-cast로 전송되는 EIGRP 패킷들을 uni-cast로 바꿔주는 방식을 사용하면 된다.
R1(config-router)# neighbor 1.1.12.2 f0/0
R2(config-router)# neighbor 1.1.12.1 f0/0
위와 같이 명령어를 입력할 시 f0/0으로 나가는 EIGRP 패킷들은 모두 1.1.12.2를 목적지로 uni-cast 방식으로 보내지게 된다.
EIGRP Authentication
EIGRP Authentication(인증)을 사용하면 Hello 패킷을 통해 인증키를 교환하며 이 인증키가 같을 때만 Neighbor 관계를 생성할 수 있다.
인증은 크게 두가지로 나누어진다.
1) key chain 생성
R1(config)#key chain netdream_auth
key-chain의 이름을 지정해준다. 이것은 상대편 router와 같을 필요가 없다.
R1(config-keychain)#key 1
R1(config-keychain-key)#key-string netdream123
키 번호와 string을 지정해준다. 이것은 반드시 상대편 router와 같아야한다.
R2(config-router)#key chain eigrp_auth
R2(config-keychain)#key 1
R2(config-keychain-key)#key-string netdream123
2) 생성한 key chain을 인터페이스에 적용
R1(config-keychain-key)#int f0/0
R1(config-if)#ip authentication key-chain eigrp 1 netdream_auth
인터페이스에 들어가 생성한 key chain을 적용시켜주고
R1(config-if)#ip authentication mode eigrp 1 md5
default-route 광고
만일 해당 router가 default-route를 가지고 있을 시 이것 또한 다른 router에게 광고가 가능하다.
위와같은 구성에서 R1이 R2에게 default route를 광고하는 방법을 알아보자.
우선 R1의 라우팅 테이블을 보면 다음과 같다.
10.10.10.2로 가는 default-route를 가지고 있다.
이것을 재분배를 사용하면 R2에게 쉽게 전해줄 수 있다.
R1(config)#router eigrp 1
R1(config-router)#redistribute static
모든 패킷을 R1에게 보내라는 default-route가 추가 되었다.
해당 방식은 재분배를 사용하였기에 EIGRP 외부이며, 이때 metric은 앞서 말했듯이 170인 것을 확인 가능하다.
'네트워크 > 네트워크 좀 더 알아보기-라우팅' 카테고리의 다른 글
Path Control (0) | 2019.03.05 |
---|---|
재분배(Redistribution) (0) | 2019.03.04 |
Link state와 OSPF (0) | 2019.02.23 |
Router의 Best Path 결정 기준/라우터 스위칭 방식 (0) | 2019.01.31 |
Distance Vector와 RIP (0) | 2019.01.31 |