bxm's IT Story

Dynamic Routing Protocol - RIP(1) 본문

Network/Cisco (KEDU)

Dynamic Routing Protocol - RIP(1)

bxmsta9ram 2021. 6. 14. 15:37

##

## 전까지 배웠던 Static(정적인) 것과 반대되는 내용으로 자기 알아서 Dynamic(동적으로) 움직이는 프로토콜이다.

##

 

 

IGP
(Interior Gate Protocol)
중장거리용
RIP Distance Vector 프로토콜
(거리 방향 프로토콜)
IGRP
EIGRP Hybrid 프로토콜
(Advance Distance Vector_DUAL 알고리즘)
OSPF Link-state
IS-IS
EGP
(Exterior Gate Protocol)
장거리용
BGPv4 Path Vector

#### Routing Information Protocol [RIP]

1. Distance Vector Rouing Protocol

2. Metric으로 Hop-count를 사용한다.

3. 벨먼 포드 무어 박사가 개발하였다. ('무어 알고리즘' 이라고 한다.)

4. Classful 하다.

5. Auto-summary(자동 축약)Split-horizon(받은걸 뱉는 것/뱉지 않는것) 현상이 있다.

6. 라우터 15대 이하의 소형망에 사용이 적합하다.

7. UDP 520번 Port를 사용한다.

8. Version 1과 2가 있다.

    - [V1] : 255.255.255.255 채널을 사용한다.

              라우팅 정보를 보낼 때는 V1 방식을 사용하고, 

                                 받을 때는 V1, V2 모두 알아 듣는다.

 

   - [V2] : 멀티캐스트(224~239) 224.0.0.9 채널을 사용한다.


* Frame-Relay 에서 1.1 로 시작하는 IP 말고, 14.14로 시작하는 +(십자형) 물리적 구조 구현

0614_linemesh.gns3*

[공통]

ena

conf t

no ip domain lookup

line c 0

   logg sy

   exec-timeout 0

   exit

line vty 0 4

   pass cisco

   exit

hostname ## 그대로 적용.

 

int s1/0

   no shut

 

encapsulation frame-relay

no frame-relay inverse-arp

#아무것도 안하고 내버려 놔두면, LMI 프로토콜이 돌아서 LMI가 DLCI에 있는 모든 회선을 엮어버림 (Full-mesh로!!)

#그래서 DLCI가 모두 Mapping 되버리므로 우리는 3개만 쓰면 되므로 회선이 전부 Open이 되어버림.!!

 

clock rate 64000

#클럭을 왜주냐면 R4가 DCE 이므로, DCE에서 클럭을 주므로 각 라우터에서 클럭을 줘야함.


[R1]

int lo0

   ip add 14.14.1.1 255.255.255.0

int s1/0

   ip add 14.14.12.1 255.255.255.0

   fram map ip 14.14.12.2 102 br

end


[R2]

int lo0

   ip add 14.14.2.2 255.255.255.0

int s1/0.12 m

   ip add 14.14.12.2 255.255.255.0

   fram map ip 14.14.12.1 201 br

   exit

int s1/0.23 m

   ip add 14.14.23.2 255.255.255.0

   fram map ip 14.14.23.3 203 br

end


[R3]

int lo0

   ip add 14.14.3.3 255.255.255.0

int s1/0.23 m

   ip add 14.14.23.3 255.255.255.0

   fram map ip 14.14.23.2 302 br

   exit

int s1/0.34 p

   ip add 14.14.34.3 255.255.255.0

   frame interface-dlci 304

end


[R4]

int lo0

   ip add 14.14.4.4 255.255.255.0

int s1/0.34 p

   ip add 14.14.34.4 255.255.255.0

   frame interface-dlci 403

end


오류확인

show run int s1/0

show run int s1/0.12

show run int s1/0.23

show run int s1/0.34

show fram map


기존에는 Static으로 IP ROUTE 명령어를 통해서 엄청 많은 IP를 삽입했었다.

그런데 이제 Dynamic Routing Protocol은 자기들끼리의 언어로 속삭이며 학습해서

자기들이 알아서 IP를 저장한다.

 

R1 : "R2야 나는 1.1이랑 12.0 있다."

R2 : "R3야 나는 2.2랑 12.0이랑 23.0 있다."

R3 : "R4야 나는 3.3이랑 23.0이랑 34.0 있다."

      ==> 여기서 R4가 R3한테 정보를 준다.

      ==> R3가 오른쪽에 있는 정보 모두를 R2에게 준다.

      ==> R2가 오른쪽에 있는 정보 모두를 R1에게 준다.

 

이 속삭이는 언어가 바로 RIP 이다.


[R1]

 

conf t

router RIP

 

## R1 자신에게 있는 IP 정보를 알려준다.

network 14.14.1.0

network 14.14.12.0

 

## Running-config 명령어에서 RIP로 시작하는 명령어만 보겠다. 라는 뜻

show running-config | begin rip

Auto-Summary 현상 (자동 축약 현상)

## Auto-Summary 현상 ==> Classful 하다.

## 14로 시작하는 것은 A클래스(0~126)


[R2]

conf t

router RIP

 

network 14.0.0.0

end

## 어차피 자기가 짤라먹을 것이므로 14.x.x.x 뒷 부분을 써줄 필요가 없다.


[R3]

conf t

router RIP

 

network 14.0.0.0

end

## 어차피 자기가 짤라먹을 것이므로 14.x.x.x 뒷 부분을 써줄 필요가 없다.


[R4]

conf t

router RIP

 

network 14.0.0.0

end

## 어차피 자기가 짤라먹을 것이므로 14.x.x.x 뒷 부분을 써줄 필요가 없다.


[R1]

show ip route

## 지가 알아서 학습 전부 다했음.

C=Connected(R1 나와 연결된 것) // R=RIP를 통해 받은 것.

 

## 실제로 R1부터 R4까지 통신 다 된다.


하.지.만.  정말 편하고 정말 좋지만... 문제점이 있다. 

 

Broadcast 채널로 통신한다고 했는데 정말 그런지 확인.

[R1]

debug ip RIP

## 30초마다 라우터가 한마디씩 함.

 

un all

## 위의 명령어를 치면 멈춘다.

 

R1 -> 14.14.2.0 가려면 1개를 거쳐 가므로 1hops 

    -> 14.14.3.0 가려면 2개를 거쳐 가므로 2hops  (홉카운트라고 부름)

 

문제점 1-Broadcast 문제

RIP : received 14.14.12.2 라서 Router2를 통해 받긴 받았는데..

 

##받는건 14.14.12.2로부터 받았는데.. 보내는건 아래와 같이 255.255.255.255 (모~든 채널이 다 들을 수 있는 ##braodcast)로 보낸다. 근데 그 Broadcast로 보내는데 Loopback0 (14.14.1.1)로 보내버림...

##근데 14.14.1.1 Loopback 위에 라우터가 있다? 아니 없다. 그래서 허공에 대고 소리치는것임. 이렇게 보내면 안된다.

 

conf t

passive-interface loopback 0

## 이 명령어를 쓰면 자기 Loopback 쪽으로는 말을 하지 않음. (해당 인터페이스로 RIP 통신을 안한다.)

 

 

문제점 2 , Split-horizon 현상

R1 -> R1으로 가려면 0hops인데, 갑자기 쌩뚱맞게 14.14.1.0(R1)으로 가려면 1hops라고 말한다.

R1 -> R2로 가려면 1hops인데, 갑자기 쌩뚱맞게 14.14.2.0(R2)로 가려면 2hops라고 말한다.

 

한마디로 Overeat 한 것임.

예시를 들면

R2 -> R1 : R1아 R2로 가려면 1hops래. (1hops가 여기서 소모되어버림;)

R1 -> R2 : R2야 나부터 R2로 가려면 1hops래. (1+1hops가 되어서 2hops가 되어버림)

 

 

## 이 설정에 대하여 어떻게 찾을것인가?

show ip interface s1/0

- Split horizon is <Disabled> : 받은 걸 다시 줘버림.  R2->R1->R2

-                      <Abled> : 받은 걸 다시 주지 않음. R2->R1

 

 

<해결법>

int s1/0

ip split-horizon

  end

 

show ip interface s1/0

Split-horizon 이 Enabled 되었다고 떴음.

 

<다시 확인>

## 이제 R2한테 받은걸 다시 R2한테 알려주는 것이 아니라, 자기만 아는 걸 말해줌.

## 자신의 loopback인 1.1 하나만 준다.

## 12.0 도 R1과 R2 둘 다 알고 있는 내용이므로 알리지 않는다.

 

debug ip RIP 

## 다시 명령어를 쳐보면

R1 자신이 아는 것 1개만 보내고, hops도 제대로 되어진 것을 확인하였음.
30초마다 Hello 를 보냄.
Send(보낼 때는) Version 1(255.255.255.255), Recevie(받을 때는) Version1(255.255.255.255), 2(224.0.0.9) 모두 알아듣는다.

 

## 30초마다 Hello를 보내야 하는데, 30초가 지났는데 Hello가 오지 않는다면 Invalid Time(3분)으로 넘어간다.

## 근데 그 3분 있다가도 Hello가 오지 않는다면, Routing Update를 받지 않음.

ex) 여자친구랑 하루 동안 전화를 하지 않음 : Hello를 하루 동안 보내지 않음

     여자친구랑 3일동안 전화를 하지 않음 : 3일 동안 "무슨 일 있나?" (Invalid Time)

     3일이 지나면 여자친구가 무슨 말도 듣지 않는 삐진 상태가 되어서 무슨 말로도 설득이 안된다. (Hold Time)

 

Invalid Time : Hello를 보낸 순간부터 Invalid Time 시작임(0~180초)

                  30초 안에 Hello가 다시 온다고 해도 Invalid Time임.

Invalid Time이 지난 후 60초가 지나면(181~240초) 끊어버림. 무슨 말을 해도 무시해버림. 

 

Flush가 되어버리면 라우터에서 빠져버림?

Hold-time이 들어가면 : 파서블리 타임.

 

## 게이트웨이 2중화 / RIP 다시 복습하기.


아래부터 6월 15일 1교시


여기서부터 처음부터 놓쳐서 필기를 제대로 하지 못하였음.

선생님 말씀 들어보니, R1]에서 루프백을 죽이고, R2]에서 debug ip rip을 썼는데 거기에는 1.1이 나와있으나

ping 14.14.1.1 을 해본 결과 통신이 되지 않는 것을 보여주셨음. 그래서 RIP을 쓰지 않는다고 하심.
* ntp server

* possibly down

* Route poisoning

* Poison reverse

* hold time 

* metric 16 등등 해서 다시 검색해보기...

 

<대충 요약>

R1이 죽으면 3분 있다가 R2에 possibly down이 뜨면서 인접 라우터인 R3에 Route poisoning 진행(metric 16).

그러면 동시에 R2가 Poisoning reverse를 받고, R2는 1분 있다가 라우팅 테이블에서 지운다.

==> RIP의 컨버전스 Time은 4분이다. 그러면 RIP을 사용하며 HSRP 구성할 때 standby 10 preempt delay minimum 4.

RIP이 방향을 틀어야(rip convergence time이 4분) HSRP가 방향을 트니까 RIP 보다 빨리 제어권을 넘기면 안된다.

그래서 delay minimum 4를 해야함.

 

R2]

clock set 09:16:00 15 june 2021

시간을 한번 맞춰보자.

 

R1]

conf t

ntp master

## R2를 ntp master로 놔둬보자.

 

R2]

conf t

ntp server 14.14.2.2

## 만약 마름모 모형으로 결합되어 있는 모형에서 R1->R2가 단절이 나버리면

## R1->R3->R4->R2로 가는길이 있음에도 가지를 못함.

## 그래서 loopback을 찍어주는 것임. (잘 모르겠음. 검색해보기.)

 

R3]

conf t

ntp server 14.14.3.3

 

R4]

conf t

ntp server 14.14.4.4

 

 

R1]

show clock

## 자동 동기화 된 것을 확인.

시간을 가지고 측정할 것이 있어서 이렇게 해놨음.

 

[공통]

service timestamps debug datetime

service timestamps log datetime

## 'debug와 로그 메세지를 시간 단위로 표현해라.'


R1]

show ip route

## 다 들어있는 것을 확인.


[공통]

debug ip rip


R1]

int lo0

  shut

  ## 시간까지 전부 다 맞춘 상태에서 shutdown을 해버리면, R2에서 debug ip rip을 했을 시 아래의 2개가 뜬다.

 

Route poisoning : 독약을 준 것. debug ip rip에서 metric 16이 나오는데, metric 16은 죽었다는 뜻임.

Poison reverse : 독약 잘 받았다고 echo가 온 것. 

## 거의 동시에 Route posioning과 Poison reverse를 주고 받음. 아까 시간을 맞춘 이유가 그것 때문임.

 


R2]

show ip route

1.0이 날아가있음.


R1]

conf t

int lo0

  no shut


R2]

show ip route

다시 돌아와 있음.

 


<Alias 축약키를 한번 사용해보자>

alias exec c conf t

alias exec i sh ip route

alias exec b sh ip int br

 

공통]

alias exec c conf t

alias exec i sh ip route

alias exec b sh ip int br

## c + 엔터 : Conf t

## i + 엔터 : Show ip route

## b + 엔터 : Show ip int br

 

R1]

conf t

int lo0

  shut

 

R2]

show ip route

##관찰. 1.1이 바로 사라짐.

 

R1]

do show clock

## do show clock 하고 바로 shutdown

43분 33초에 죽여봤다.

## 죽이는 순간부터 Hello를 보내지 않으므로