안녕하세요
뚱보프로그래머 입니다.
오늘은 라우팅 프로토콜입니다.
다이나믹 라우팅프로토콜에 대해서 알아보겠습니다.
- RIP(Routing Information Protocol)
=> 라우팅 프로토콜이다.
=> 다이나믹 프로토콜이다.
=> 내부용 라우팅 프로토콜(IGP)이다.
=> 디스턴스 백터 알고리즘이다(Distance(거리)와 Vertor(방향)으로 길을 찾아가는 프로토콜)
=> RIP 라우팅 프로토콜에서 라우터가 좋은 길을 결정할 떄 기준이 되는 요소는 홉(Hop) 카운트이다.
=> RIP 라우팅 프로톨콜에서 최대한 갈 수 있는 홉 카운트의 거리는 15개까지 기능 16개부터는 도착불가
=> 디폴트 업데이트 주기는 30초.
- RIP는 표준 라우팅 프로토콜이고 라우터의 메모리를 적게 사용하는 장점도 가지고 있다.
=> 최적의 경로를 찾는 방법이 가장 단순하고 가장 낮은 홉 카운트가 가장 좋은 경로라고 결정한다.
경로 선택을 오로지 홉 카운트에 의존하기 떄문에 속도나 회선의 신뢰도, 기리고 회선의 로드 등을 확인불가.
=> 자산의 라우터에서 15개 이상의 라우터를 거치는 목적지의 경우 unreachable(갈 수 없음)로 정의 해버리기 때문에
커다란 네트워크상에서 사용하는데 무리가 따른다.
* 아직 RIP를 사용하는 이유는 소규모 네트워크 상에서는 효율성이 좋고, 라우터의 메모리를 적게 차지하고, 구성이 간편하고 모든
라우터에서 지원하는 표준 라우팅 프로토콜이기도하다.
- Back to Back 구성
=> 라우터와 라우터를 서로 직접 연결하면서 마치 전용선 구간에서 연결한 것처럼 만드는 기술
=> 라우터 대 라우터를 V.35 케이블만을 가지고 서로 연결하는 것
=> 두 라우터 중 하나는 DTE로 하나는 DCE로 동작해야 한다.
show controller 명령을 수행해서 DTE와 DCE를 확인후
DCE 케이블이 연결된 라우터의 인터페이스 구성모드에서
DCE장비는 클록을 제공해야 하기 때문에 아래와 같이 Clockrate값을 넣어서 설정.
56000은 56kpbs의 속도로 두 라이터가 연결된것이다.
이렇게 Back to Back 구성으로 연결되면 전용선으로 연결된 구성과 똑같이 사용할 수 있다.
RIP에 대해 더 알아보겠습니다.
router rip 명령 - 일반 구성모드(Route(config)#)에서 내리는 명령으로 RIP라우팅을 사용한다는 뜻
두 번째 명령은 반드시 router rip명령을 내리고 Router(config-router)# 모드로 들어와서 명령을내림
RIP 라우팅에 참가하는 네트워크를 지정해 주기 위해서 사용하는 명령이다.
- show ip prtotocol - 현재 사용하고 있는 RIP의 버전 정보를 보여준다.
- RIP환경에서 라우터는 30초동안 업데이트 정보를 받지 못했다면 180초 동안은 기다리는데(6번)이 시간을 Invalid time이라하고 180초가
지나도 업데이트가 오지 않으면 Hold down상태로 들어간다. 이때부터 라우터는 상대편이 다운됐을 거리고 판단하고 possibly down
이라는 메시지를 라우팅 테이블에 보여준다.
그리고도 1분 동안 상대로부터 연락이 없으면 경로가 죽었다고 판단하고 이 경로에 대한 정보를 지워버리게 되는데 그 시간을 flush
time이라고 부른다.
=> RIP버전 1 에서 보낸 정보는 어떤 버전이든 받아볼 수 있지만 버전 2에서 보낸 정보는 버전 2에서만 이해할 수 있다.
- show ip route - 라우팅 테이블보기
R은 RIP로 찾아낸 길을 의미하고 203.240.200.0은 목적지 네트워크(찾아낸 목적지)
/24 255.255.255.0 -> 서브넷 마스크를 이진수로 바꾸었을 때 1의 숫자를 의미하고
120은 RIP의 디스턴스 값을 나타낸다. 그 뒤에 있는 1은 코스트를 의미하는데 RIP에서는 코스트가 홉 카운트니까 1홉 떨어져서
목적지가 있다고 보면된다.
C는 connect를 의미하고 라우터에 붙어있는 네트워크임을 알려줌
- 텔넷에서 디버그 명령을 내리는 경우 terminal moniter라는 명령을 해야 텔넷 화면에서 결과 보여줌
=> 디버그 명령 사용시 콘솔에서 명령을 내리는것이 좋다.
=> 결과치를 보고 나서는 반드시 명령을 꺼줘야한다.(빨리 끄는 것이 중요)
=> 계속 여러 가지 내용을 보여주기 때문에 부담되어서 다운될 수 도 있음
- Router#no debug all or Router#updebug all - 디버그 꺼주는 명령
- 디버그하고 IP RIP라고 하면 IP RIP 상에서 라우터끼리 서로 통신하는 것을 보여주는데
=> 프리빌리지 모드(운영자모드)에서 debug ip rip라고 해주면 된다.
=> 명령을 내리는 시점에서부터 라우터에서 rip에 대해서 주고 받는 내용을 보여준다.
- Administrator Distance 값
- Distance - Vertor의 문제점
=> 한번 배운 라우팅 테이블을 계속 전달하기 때문에 업데이트가 모든 네트워크에 전달되는 시간(Convergence Time)이 많이 걸린다.
이것 때문에 루핑이 발생할 수 있따.
예를들어 업데이트 주기가 30초이면 라우터 A는 30초 후에 변경된 라우팅 테이블을 라우터 B에게 보내고 라우터 B는 다시 30초 후에
라우터 C에게 보내기 때문에 라우터 A가 라우팅 테이블 변화를 인지한지 60초후에 알수 있게된다.
=> 루핑이 발생하게 되고 라우터가 제대로 라우팅정보를 가지지도 못하고 업데이트도 느려진다.
- 루핑 방지법
=> Maxinum Hop Count : 최대 홉 카운트를 15로 규졍하여 넘어가면 unreachable로 간주하고 flush time이 지난 후에 라우팅
테이블에서 삭제해버린다. 15홉을 넘는 경로에는 도달할 수 없기 때문에 네트워크의 규모가 커질 경우 치명젹인 약점이다.
=> Hold down Timer : 한 네트워크가 다운되면 물려있는 라우터가 다른 라우터에게 다운사실을 알리고 그 정보를 받은 라우터는
다운된 네트워크에 대한 Hold down 타이머를 시작한다.
외부에서 해당 네트워크에 대한 라우팅 경로 정보를 받았을대 원래 값보다 큰 값이 들어오면 무조건 무시
Hold down카운터가 종료되거나 목적지에 대한 새로운 경로가 가지고있는 메트릭과 같거나 좋은 경로이면 업데이트를 받아드림
Hold down타이머는 어떤 경로가 죽었다고 판단하면 일정 시간이 지난 다음에 바꾸는 식이다.
=> 스필릿 호라이즌(Split Horizon) : 라우팅 정보가 들어온 곳으로는 같은 정보를 내보낼 수 없다는 의미
두 라우터 간의 루핑만을 막기 위해서 만들어진 기술이다.
=> 라우트 포이즈닝(Route Poisoning) : 네트워크가 다운되면 메트릭 값을 16으로 변경(사용할수 없는값) 이런식으로 다운된 네트워크를
먼저 무한대치로 바꾸어서 라우팅 테이블에서 지워버렸다가 잘못된 라우팅 정보를 받는 일을 미리 막을 수 있는 효과를 나태낸다.
=> 포이즌 리버스(Poison Reverse) : 스필릿 호라이즌의 변형. 포이즌 리버스 업데이트를 사용한 스플릿 호라이즌 라우팅 정보를 되돌려 보내기는 하되 이 값을 무한대 값으로 쓰는 방식 경로의 정보를 아주 없애는 것보다 무한대 홉 값을 포함해서 라우팅 업데이트를
하게되면 모든 라우터들은 실수로 잘못된 경로 정보를 사용하는 경우를 줄일수 있음
- IGRP(Interior Gateway Routing Protocol)
=> RIP처럼 라우팅 프로토콜이다.
=> 다이나믹 프로토콜이다.
=> 내부용 라우팅 프로토콜(IGP)이다.
=> 디스턴스 벡터 알고리즘이다. 거리와 방향으로 길을 찾는 프로토콜
=> 시스코에서 만들어낸 프로토콜으므로 시스코 라우터에서만 사용이 가능
=> 5가지 요인을 가지고 가장 좋은 경로를 선택한다.
- Bandwidth(대여폭, 속도) : 최적의 경로를 찾는 프로토콜들이 참고하기 위한 값
- Delay(지연) : 경로를 통해서 도착할 때까지의 지연되는 시간
- Reliability(신뢰성) : 목적지까지 제대로 도착한 패킷과 에러가 발생한 패킷의 비율
- Load(부하, 하중) : 출발지와 목적지 상의 경로에 어느 정도의 부하가 걸린는지 측정
- MTU(Maximum Transmission Unit) : 경로의 최대 전송 유닛의 크기. 바이트로 표시함
* RIP와는 달리 경로 선택에 있어서 지능적임
* 90초에 한 번씩 라우팅 테이블의 업데이트가 발생
* 최대 홉 카운트 255로 큰 네트워크의 적용에도 문제가 없음
- IGRP 구성 명령어
* 일반 구성 모드에서 router igrp입력하고 뒤에는 AS번호(그룹별로 붙여 놓음) 입력
라우터들은 서로 같은 AS번호를 가져야만 통신이 원할함
* network명령 : IGRP 라우팅에 참가하는 네트워크를 지정
항상 위 명령을 내린 후 해야한다. 수정할 때도 마찬가지
network number를 150.140.100.0이라고 입력했는데 150.140.0.0으로 인식해 버리는데 RIP처럼 뒤에 서브넷에 대한 인식 기능이
떨어진다. 서브넷을 인터페이스별로 따로주는 방식(VLSM)을 지원못함
* RIP처럼 show ip protocol : 현재 라우팅정보
show ip route : 라우팅 테이블 정보
* 라우터 구성 후 현재 상태 점검하는 명령어들
구성파일을 보는 명령 : show running-config, show ip route, show interface, show ip protocol,
show ip interface(인터페이스에서의 IPi 프로토콜 동작 상태를 나타냄)
* 디버그 명령
- debug ip igrp transactions (IGRP 업데이트가 보내지거나 받아졌을 떄 반드시 그 사실을 알려줌)
- 라우팅 업데이트에 포함된 네트워크 정보는 관련 메트릭 값과 함께 나오기 때문에 업데이트된 라우팅정보다 확인이 가능
* passive interface명령 : IGRP 라우팅 업데이트가 특정 인터페이스로 날아가지 않도록 할떄 사용
- OSPF 라우팅 프로토콜
=> OSPF는 IP패킷 안에 프로토콜 넘버 89(십진수)로 들어가게된다.
=> Convergence(컨버전스)타임 - 라우터 간에 서로 변경된 정보를 주고받는데 걸리는 시간
OSPF는 어떤 변화가 생길 때 바로 전달이 가능하여 RIP에 비해 훨씬 빠르다.
=> Area라는 개념을 사용 - 전체 OSPF 네트워크를 작은 영역을 나누어 관리하기 떄문에 빠른 업데이트를 하면서 효율적인 관리가 가능
=> VLSM을 확실하게 지원하여 IP주소 효과적 사용, 라우팅 테이블을 줄이는 효과. 이를 위해 라우트 서머리제이션(Route summarization)을 지원하여 여러 개의 라우팅 경로를 하나로 묶는 기능탁월
=> 네트워크 크기제한이 없다(15개의 라우터를 건너는 것이 가능)
=> 네트워크 대역폭 활용측명 - 변화가 있을 때만 정보가 날아가고 멀티캐스트로 날아가기 때문에 실용적
=> 경로설정시 많은 관련 요소를 합쳐서 선택하기 때문에 정확한 경로선택이 가능
=> OSPF적용 토폴로지
- 브로드캐스트 멀티액세스 토콜로지 : 네트워크에 두 개 이상의 라우터가 연결되는 경우로 하나의 메시지를 내보내면 이 네트워크 상에
있는 모든 녀셕들이 정보를 받을 수 있는 구조
- 포인트 투 포인트 토폴로지 : 네트워크에 한 쌍의 라우터만 존재하는 경우(전용선)
- NBMA토폴로지 : Non Broadcast Multi-access 네트워크에 두 개 이상의 라우터가 연결
브로드캐스트 능력은 없음 (프레임릴레이, X.25)
- OSPF의 이웃 사랑
=> 주위에 있는 OSPF라우터들을 찾아서 자신의 DB에 저장하고 이 주변라우터들을 이웃이라한다.
- 주변에 어떤 이웃들이 사는지에 대한 정보를 관리
=> 이웃을 만드는 과정
1. 이웃을 찾기 위해 Hello 패킷을 보냄(멀티캐스트 주소를 이용해서 보냄)
- 라우터 ID : OSPF에서 서로를 구분하는 이름, 라우터의 IP 주소 중에서 제일 높은 주소를 사용
2. Init 과정을 거침(패킷을 받은 라우터들이 보낸 라우터를 이웃목록에 넣는과정)
3. 패킷을 보낸 라우터에 유니캐스트로 자신들의 정보를 보냄
4. 이웃에게서 받은 정보를 자신의 이웃리스트에 넣어서 관리
=> Hello 패킷에 여러정보들이 들이 있는데 Hello/dead intervals, Area-ID, Authentication password, Stub area flag 최소한
이 4가지는 서로 똑같아야 이웃으로 인정해 준다.
=> 라우터 ID를 쓰기 위해서 보통 Loopback(루프백) 인터페이스를 사용하는데 이걸 사용하면 그 IP 주소의 높낮이에 관계없이 무조건
Loopback 주소가 라우터 ID가 되고 인터페이스가 다운되지 않기 때문에 라우터 ID도 바뀌지 않는다.
- OSPF에서의 반장과 부반장
=> OSPF 세그먼트에서는 각 라우터들이 OSPF에 참여하게 되면 DR과 BDR에게 자신의 Link State를 알리는데 그 이유는 모든
라우터들과 Link State를 교환할 경우 발생하는 트래픽을 줄이고 Link State의 Sync(일치성)를 제대로 관리하기 위해서이다.
=> 반장(DR)이 업무를 수행하는 동안 부반장(BDR)은 반장이 업무를 제대로 수행하는지 관찰하고 반장이 다운되면 BDR이 DR을
대신한다.
=> 따라서 OSPF에서는 모든 라우터가 반드시 DR, BDR과 Link state를 Sync(일치)해야하는데 이것을 Adjacency(어드제이션시)라고
한다.
=> DR과 BDR은 라우터 ID와 라우터의 Priority를 가지고 선출된다.
- Priority로 선출하는데 디폴트값은 1이고 이 값이 큰쪽이 DR이 되고 작은쪽은 BDR이 된다.
- Priority가 같으면 라우터 ID가 큰것이 DR, 작은것이 BDR로 선정된다.
- 만일 DR이 다운되면 BDR-> DR로 BDR은 재선정하는데 Priority값이 3이더라도 BDR로 된다
여기서 라우터나 OSPF를 죽였다가 다시살리면 재선서를 해서 Prioriry값이 3인라우터가 DR이 된다.
- DR, BDR선거에 입후호하지 않게 하여면 Priority를 0으로 세팅하면된다.