라우팅이란?
네트워크 계층에서 길을 찾아주는 것, 즉 패킷이 목적지에 도달할 최적의 경로를 찾아 전송하는 것을 라우팅이라한다.
그렇다면 무엇을 보고 길을 찾아줄까? 바로 라우팅 테이블!!
라우팅 테이블에는 네트워크 프로토콜, 목적지 주소, 연결된(나가는) 인터페이스로 구성
네트워크 프로토콜에는 여러가지 종류가 있다.
C(Connected) -> 물리적으로 직접 연결되어있는 네트워크, 만약 특정 라우터의 시리얼 인터페이스가 172.16.20.1/24이면
라우터는 아 172.16.20.0 네트워크 대역은 이쪽으로 가면 있겠구나 학습
S(Static) -> 멀리 떨어져 있는 네트워크를 정적 경로로 지정, 후에 학습한다.
라우팅 테이블은 나와 연결된 이쪽 인터페이스쪽으로 가면 특정 목적지가 있겠구나를 알려준다.
이 때 알려주는 방법은 네트워크 프로토콜에 따라 달라진다.
네트워크 라우팅을 위해서는
목적지/출발지 주소
입출력 인터페이스(몇번 인터페이스 인가 or 이더넷?? 혹은 시리얼??)
가능한 모든 경로
최적의 경로
네트워크의 상태 등등 여러가지를 파악해야한다.
정적 경로 지정(정적라우팅)
Static routing -> 목적지 주소까지 어떻게 가야하는지 직접 지정
멀리 떨어져 있는 네트워크를 지정할 때 사용
관리자가 명령어로 하나하나 직접 지정
고정적이다 -> 망 상태의 변화가 일어나도 바뀌지 않는다,
경로 관리에 효율적이다. (동적 라우팅에 비해 트래픽이 없기때문에)
지정방법
ip route [목적지 주소] [서브넷 마스크] [address or interface]
뜻: 목적지 주소까지 가기 위해서는 해당 address가 있는 혹은 헤당 interface가 있는 쪽으로 가라
목적지 주소는 당연히 특정 네트워크의 주소
address는 나와 연결된 상대방 장비의 주소->만약 내 ip 172.16.1.1가 상대방 172.16.1.2와 연결되어있다면 172.16.1.2를 지정
interface는 내 interface를 지정해주면된다.
정적경로 지정 예시
네트워크 토폴로지는 위와같이 되어있고
R1 인터페이스는 위와 같이 할당하고
R2 인터페이스는 위와 같다.
pc 1 설정
pc 2 설정
다음과 같이 해당했을 때 당연히 pc1의 전송 패킷은 pc2로 갈 수 없다. 잘 생각해보자 pc1이 pc2를 목적지 주소로하여 패킷을 보낸다면,
해당 패킷은 당연히 게이트웨이인 R1에게 간다.
R1은 해당 패킷의 목적지 주소가 192.168.1.1 인 것을 안다.
그러나 문제 발생
R1의 Fa 0/0의 대역은 192.168.0.254/24
R1의 Se 0/0의 대역은 10.0.0.1/24
즉 192.168.0.0/24 대역과
10.0.0.0/24 대역 밖에 모른다.
이런 상황에서 만약 목적지 주소로 192.168.1.1를 받는다면?
라우터는 어디로 라우팅(보내는 것)해야할지 알 수 없다. -> 고로 해당 패킷을 폐기한다.
이렇기에 특정 목적지로 가려면 어디로 가라 하는 방향을 직접 지정해 줄 수 있다.
R1(config)#ip route 192.168.1.0 255.255.255.0 10.0.0.2
R1에 이런 식으로 지정해주면 방향을 알 수 있다.
다음 명령어의 내용은 192.168.1.0 네트워크 대역으로 가고 싶으면 상대방 ip가 10.0.0.2인 쪽으로 가세요.
그러나 해당 명령어만 해주면 R2에서 R1으로 반송 될 떄 R2 역시 192.168.0.0/24(pc1 대역)을 알 수 없다.
R2(config)#ip route 192.168.0.0 255.255.255.0 S0/0
그러므로 R2에서 위와같이 지정해주자.
위의 두개에서 알 수 있는 것은 방향 지정 시 내 인터페이스와 연결된 상대방 IP 주소(10.0.0.2), 내 인터페이스(s0/0) 둘다 가능하다는 것!!
위와 같이 지정하고 핑이되면 서로 통신이 되는 것이다.
라우팅 테이블
show ip route 명령어를 이용하자. R1과 R2에서 명령어를 입력하면
R1#show ip route
10.0.0.0/24 is subnetted, 1 subnets
C 10.0.0.0 is directly connected, Serial0/0
C 192.168.0.0/24 is directly connected, FastEthernet0/0
S 192.168.1.0/24 [1/0] via 10.0.0.2
R2#show ip route
10.0.0.0/24 is subnetted, 1 subnets
C 10.0.0.0 is directly connected, Serial0/0
S 192.168.0.0/24 [1/0] via 10.0.0.1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
stub network
다른 네트워크로 가기위해 오직 하나의 경로만 존재
해당 경로를 통해야지 다른 네트워크로 갈 수 있음
-> 이때는 static routing의 종류 default routing을 사용한다.
디폴트 라우팅이란?
목적지 주소가 무엇이든 특정 인터페이스를 지나가게 설정하는 것
즉 너의 주소가 무엇이든 무조건 이쪽으로 가라 이런 뜻.
stub network 예시
R1(Router0)에서 다른 네트워크로 가기위해서는 무조건 10.10.10.0 네트워크 대역을 지나야한다. -> 이러한 것을 stub network라 한다.
R1(Router 0)의 인터페이스 정보
R2(Router 1)의 인터페이스
pc도 위와 같이 지정
1.1.1.1,
2.2.2.1,
3.3.3.1
지정한다.
stub network에서 경로를
ip route 1.1.1.0 255.255.255.0 10.10.10.2
ip route 2.2.2.0 255.255.255.0 10.10.10.2
ip route 3.3.3.0 255.255.255.0 10.10.10.2
로 지정해주기 까다롭다.
이렇게 하지말고
R1(config)#ip route 0.0.0.0 255.255.255.0 10.10.10.2
디폴트 라우팅 설정 명령어
이렇게 해주자.
뜻은 모든 네트워크 대역(0.0.0.0/0), 즉 어떤 네트워크 대역이든 10.10.10.2 인터페이스를 지나가야한다는 뜻.
이렇게 하나를 지정해주면 자동으로 핑이 된다.
dynamic routing
-라우터가 알아서 자동으로 라우팅 테이블을 입력
-사용자는 프로토콜 설정만 해주면 된다.
-네트워크 망 변화 시 Router가 알아서 업데이트 한다.
-라우터 사이에 교환을 위한 트래픽이 발생한다.
라우팅 프로토콜의 종류
우선 AS에 따라 두가지로 나뉜다.
*AS: 하나의 토폴로지 덩어리, 쉽게 말해 하나로 소속된 라우터들의 장비(SKT 장비, KT 장비) 등등
IGP- AS 내부에서 사용하는 라우팅 프로토콜
EGP- AS 외부에서 사용하는 라우팅 프로토콜
IGP 프로토콜은 또 두가지로 나눈다.
-디스턴스 벡터:
목적지에 대한 경로 전달,
전체 네트워크 파악이 아닌 특정 목적지로 가려면 여기로 가세요 하는 방향(경로)만 제시한다,
빠르고 부하가 없다는 장점,
특정 경로 이상 발생 시 해결하는 시간이 느리다,
경로만을 알려준다. 만약 두가지 경로가 루프를 도는 경로일 시 무한으로 루프 발생
-링크스테이트:
네트워크 정보를 전달(전체 네트워크 토폴로지를 라우터끼리 전달)
전체 네트워크 파악 가능
특정 경로 이상 발생 시 해결 시간이 빠르다.
루프 또한 전체 네트워크 구조를 알고 있기에 돌지 않는더.
복잡한 설정이 필요하다.
디스턴스 벡터에는 대표적으로 RIP와 EIGRP가, 링크스테이트에는 OSPF가 대표적인 프로토콜이다.
라우팅 프로토콜
라우팅은 앞서 말했듯이 최적의 경로를 찾아 데이터를 전송하는 것이다.
이때 RIP, EIGRP, OSPF 각각 프로토콜마다 최적의 경로를 선출하는 기준이 다르다.
이때 최적의 경로를 선출하는 기준을 metric이라 부른다.
즉 각각 프로토콜마다 metric 값을 매기는 기준이 다르다.
또한 이런 생각도 해볼 수 있을 것이다. 만약 복수의 라우팅 프로토콜이 구동 시 어느 경로를 선택해야할까?
최적의 경로를 선출하는 기준은 각각 다른데 과연 어떤 것을 따를 것인가?
이것을 결정하는 것이 AD(Administrative Distance)값.
AD 값이 낮다는 것은 우선 순위가 높다는 것.
이해를 위해 예시를 하나 들어보자.
앞서 언급한 RIP의 경우 최적의 경로를 정하는 기준 값(metric)을 홉 카운트로 둔다.
즉, 여러 경로 중에 라우터를 가장 적게 거치는 것을 최적 경로로 둔다.
EIGRP 같은 경우 metric 값으로 총 5개의 매개변수를 사용한다. 이 5개 중 기본적으로 bandwidth와 delay값만 활성화 되어있고 나머지 값은 비활성화되어있다.(나머지 값은 Load, Reliability, MTU이며 필요시 활성화 시킨다.)
bandwidth와 delay가 기준이라는 것은 처리속도(bandwidth+delay)를 중심으로 둔다는 것.
여기서 예시를 하나 들어보겠다. 출발지 A에서 목적지 B로가는 경로가 두개가 있다.
하나는 하나의 라우터를 거쳐가면되지만 대역폭이 매우 낮고 지연율이 매우 높다. 즉 처리속도가 낮다는 것.
나머지 하나의 경로는 라우터 두개를 거쳐가야하지만 대역폭이 매우 높고 지연율이 매우 낮다. 즉 처리속도가 빠르다는 것.
이 상태에서 EIGRP는 라우터 두개로 가는 경로를 선택(처리속도가 빠르니깐)할 것이고
RIP은 라우터 하나로 가는 경로를 선택(홉카운트가 더 적으니깐)할 것이다.
여기서 어떤 프로토콜의 말을 들어줄 것인가?
이것을 결정하는 것이 AD값이다.
각 프로토콜은 기본적으로 AD 값이 정해져 있다.
RIP은 120이고 EIGRP는 90이다.
AD값은 낮은 것이 우선 순위가 높으므로 EIGRP가 선정한 경로를 선택하게 된다.
Advertisement
라우팅 프로토콜 구동 시 라우터들은 각자 알아서 자신이 갖고있는 정보(내가 어떤 아이피 대역을 갖고있는지 등등)를 교류한다.
이것을 Advertisement(광고)라 한다.
Advertisement는 크게 두가지로 나눈다.
하나는 classful routing -> 자신의 서브넷 마스크를 전달x, 정보를 받을 시 class로 서브넷을 구분 ex) 172.16으로 시작하는 대역을 받으면 자연스럽 게 B클래스(/16)로 생각
나머지 하나는 classless routing -> 자신의 서브넷 마스크 까지 같이 전달, 서브넷팅의 여부를 알 수 있다.
auto summary -> 기본적으로 default로 on 되어 있으며 정보를 전달 시 다른 네트워크 대역으로 전달하면 네트워크를 축약해서 전달한다.
ex) 172.16.1.0 대역과 172.16.2.0 대역이 192.168.1.0 대역으로 전달 시 모두 172.16.0.0/16으로 전달된다.
RIP 프로토콜
- 홉 카운트를 메트릭으로 사용
- 30초마다 Routing update(30초마다 주기적으로 정보를 교류한다.)
- cost equal path 지원 -> 동일한 메트릭 값의 경로가 있다면 모든 경로를 라우팅 테이블에 올린다.
- split horizon -> 만약 특정 대역에서 정보를 받으면 해당 대역으로 다시 같은 정보를 보내지 않는다.
ex) 만약 특정 라우터가 192.168.10.0 대역의 정보를 받았다. 그러면 해당 라우터에게 다시 192.168.10.0을 보내지 않는다.(루프 방지 목적)
RIP은 version 1과 2가 있다.
version 1은 클래스풀, 브로드캐스트로 광고하고
version 2는 클리스리스, 멀티캐스트로 광고한다.
RIP 설정 예시 토폴로지
pc 0(192.168.10.1)에서 pc 1(192.168.20.1)로는 당연히 통신이 불가능하다.(중간 라우터가 192.168.20.0 대역이 어디있는지 알지 못한다.)
이때 RIP을 설정해보자.
R1(config)#router rip
rip 설정 모드로 들어간다.
R1(config-router)#network 192.168.10.0
R1(config-router)#network 10.0.0.0
network [네트워크 대역] 명령어는 두 가지 기능이 있다. 우선 해당 네트워크로 시작하는 주소를 모두 광고하라는 뜻
즉 위에서는 192.168.10으로 시작하는 주소와 10으로 시작하는 주소를 모두 광고하라는 뜻
근데 여기서 중요한 것은 10은 각 라우터가 가지고 있는 데이터이길래 서로 광고 할 필요가 없다.
그럼에도 써주는 이유는 network 명령어의 두번째 기능 때문이다.
바로 해당 네트워크대역(인터페이스)을 통해 RIP 패킷을 받겠다는 뜻!!!!
만약 network 10.0.0.0을 써주 읺으면 R1은 RIP 패킷 자체를 모두 폐기한다.(RIP 패킷을 받을 수 없다)
여기서 써주는 방식 또한 의문이 들것이다.
왜 network 10.0.0.0으로 써주었나하는 의문이 든다.
분명 네트워크 대역은 10.10.10.0일텐데 왜? 10.0.0.0으로만 썼나?
이것은 결론만 말하면 차이가 없기때문.
즉 network 10.0.0.0으로 쓰나 network 10.10.10.0으로 쓰나
명령어 입력 값은 모두 10.0.0.0으로 들어가게된다.(show run 명령어로 확인해보자)
명령어가 네트워크 대역을 인식하는 방법이 클래스 기준인 것 같다.
반대편 라우터도 똑같은 명령어를 입력해주자.
R2(config-router)#router rip
R2(config-router)#network 192.168.20.0
R2(config-router)#network 10.10.10..0
이번에는 network 10.10.10.0으로 써주었다. 그러나 show run으로 확인해보면
!
router rip
network 10.0.0.0 -> 10.10.10.0 대역이지만 10.0.0.0으로 입력되어있다.
network 192.168.10.0
!
위와 같이 지정하는 것이 RIP version 1이다.
이제 version 2와의 차이점을 알아보자.
알아보는 방법은 간단하다. 192.168로 시작하는 것을 모두 172.16으로 바꿔주자.
R1(config)#router rip
R1(config-router)#network 10.0.0.0
R1(config-router)#network 172.16.0.0
R2(config)#router rip
R2(config-router)#network 10.0.0.0
R2(config-router)#network 172.16.0.0
각각 위와 같이 설정하자.
그리고 핑을 해보자. 당연히 안된다. 안되는 이유는 라우팅 테이블을 조회해보면 간단하다.
라우터에서 show ip route를 해보자.
10.0.0.0/24 is subnetted, 1 subnets
C 10.10.10.0 is directly connected, Serial0/0
172.16.0.0/24 is subnetted, 1 subnets
C 172.16.10.0 is directly connected, FastEthernet0/0
위와 같이 뜬다.
C로 시작하는 대역만 두개가 나온다. 참고로 c는 물리적으로 연결된 네트워크
RIP으로 생성된 경로는 앞에 R이라고 뜨지만 전혀 R을 찾아 볼 수 없다.
이유는? 간단하다 version 1은 classful이기 때문에!!
classful은 광고할 떄 서브넷 마스크를 전혀 전달하지 않는다. 그냥 앞에 숫자를 보고 class로 인식한다. 172는? B클래스(/16)!!
즉 광고할 떄 172.16.0.0으로 전달한다. 그러나 물리적으로 이미 172.16번으로 시작하는 대역이 연결되어있기 때문에 자연스럽게 해당 패킷을 무시한다.
그래서 라우팅 테이블에 변화가 없는 것!!
그렇다면 해당 방법을 어떻게 변화시킬 수 있을까?
우선 classless로 만들기 위해 version 2를 사용해야한다.
그렇지만 version 2만 만든다고 해결되는 것은 아니다.
주목할 것은 라우터 끼리 RIP 패킷을 10.10.10.0/24를 통해 주고 받는다는 것이다.
즉 172.16.10.0/24 대역을 10.10.10.0/24 대역을 통해서 -> 위에 보이는 auto summary의 경우에 해당한다.
다시 한 번 auto summary를 설명하자면 특정 네트워크 대역을 다른 네트워크 대역으로 광고할 떄 대역을 축소해서 class 형태로 광고한다.
즉 172.16.10.0/24 대역을 172.16.0.0/16으로 광고하는 것.
그러므로 auto summary 까지 해제시켜 줘야 원래 형태로 광고를 한다.
명령어 하는 법은 간단하다.
R1(config)#router rip
R1(config-router)#version 2
version 2로 만들고
R1(config-router)#no auto-summary
auto-summary 기능을 꺼두자
R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#no auto-summary
반대쪽 라우터도 똑같이 해두고
라우팅 테이블을 보면(show ip route)
10.0.0.0/24 is subnetted, 1 subnets
C 10.10.10.0 is directly connected, Serial0/0
172.16.0.0/24 is subnetted, 2 subnets
C 172.16.10.0 is directly connected, FastEthernet0/0
R 172.16.20.0 [120/1] via 10.10.10.2, 00:00:03, Serial0/0
위와 같이 R로 시작하는 코드가 출력된다.
R 172.16.20.0 [120/1] via 10.10.10.2, 00:00:03, Serial0/0
Routing Protocol is "rip" -> RIP 사용 중
Sending updates every 30 seconds, next due in 1 seconds -> 매 30초마다 RIP 패킷을 주고 받는다.
Invalid after 180 seconds, hold down 180, flushed after 240 ->180초동안 RIP 패킷을 받지 못할 경우 비활성화,
240초가 지나면 라우팅 테이블에서 아예 지워진다.
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Redistributing: rip
Default version control: send version 2, receive 2 -> 2버전 사용 중
Interface Send Recv Triggered RIP Key-chain
Serial0/0 2 2
FastEthernet0/0 2 2
Automatic network summarization is not in effect
Maximum path: 4 -> 최대 라우팅 테이블에 4개의 경로까지 표현된다.
Routing for Networks:
10.0.0.0 -> 10.10.10.0/24 대역이지만 10.0.0.0으로 명령어 상 입력된다.
172.16.0.0
Passive Interface(s):
Routing Information Sources:
Gateway Distance Last Update
10.10.10.1 120 00:00:05 -> 라우터 게이트웨이
Distance: (default is 120) -> AD 값
R1#debug ip rip
명령어로 RIP 패킷을 확인이 가능하다.
해당 패킷을 확인하면 receive로 받은 패킷을 다시 sending으로 보내지 않는 것을 확인 할 수 있다. 이것이 split horizon!
EIGRP
-시스코에서 만든 프로토콜 -> 최근 표준으로 전환해서 시스코 외에도 사용 가능
-RIP과 다르게 라우팅 테이블 광고
-RIP과 가장 큰 차이점은 ? RIP은 30초마다 주기적으로 자신의 라우팅 테이블 전송, 그에비해 EIGRP는 처음 라우팅 테이블 전송 후 주기적으로
변하는 내용만 전송 -> 그러므로 수렴시간이 빠르다.( 망 변화 시 빠르게 업데이트)
-최적경로 뿐 아니라 모든 경로를 backup 해놓는다.
라우팅 테이블 -> 최적경로 저장(succesor -> 최적 경로로 갈때 지나가는 라우터)
토폴로지 테이블 -> 모든경로 저장 (feasible succesor -> 백업 경로로 갈 때 지나치는 라우터)
neighbor 테이블 -> 관계를 맺은 이웃 저장
-5가지 패킷을 사용
Hello 패킷-이웃 관계를 맺을 때 사용, 보통 5초에 한번씩 서로 전송해서 연결성을 확인한다.
update 패킷-이웃 발견 시 라우팅 테이블 전송 그 후 필요한 내용만 부분적 업데이트
query 패킷-네트워크 상 변동 사항이 생겼을 시 전송하는 패킷
reply 패킷-보낸 쿼리에 응답할 때 사용
ack 패킷-패킷을 제대로 수신했다는 것을 알려주기위해 사용, 신뢰성 확보
(TCP와 비슷 <-> RIP은 UDP 기반)
-classless 라우팅 프로토콜
EIGRP 이웃이 되기 위한 조건
1. 같은 as number
*AS number란? 사용자가 임의로 부여해주는 숫자. 해당 숫자가 같아야 EIGRP 패킷 전송/수신이 가능하다. 원래는 Process ID를 As number로 사용.
2. subnet
3. k 상수(앞서 언급한 5개의 metric 값을 상수라고 한다.)
4. 암호 설정 시 암호가 맞아야한다.
EIGRP 실습(명령어)
아까와 같은 토폴로지를 사용
R1(config)#router eigrp 65000
router eigrp [as-number]로 설정모드 진입, 같은 as-number여야지 패킷을 주고 받는다.
R1(config-router)#network 10.0.0.0
RIP과 유사하게 네트워크 지정
R1(config-router)#network 172.16.0.0
반대쪽 라우터도 유사하게 지정
R2(config)#router eigrp 65000
R2(config-router)#network 10.0.0.0
R2(config-router)#network 172.16.20.0
172.16.20.0으로 입력했으나, 명령어를 class로 입력하기때문에 172.16.0.0으로 입력된다.
핑을 때려보면? 핑이 통하지 않는다.
라우팅 테이블s(how ip route)을 확인해보자.
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
D 10.0.0.0/8 is a summary, 00:07:45, Null0
C 10.10.10.0/24 is directly connected, Serial0/0
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
D 172.16.0.0/16 is a summary, 00:07:45, Null0
C 172.16.10.0/24 is directly connected, FastEthernet0/0
여기서 맨 앞에 D는 EIGRP를 뜻한다. 뭔가 이상하다. D가 있는 것 보면 EIGRP는 구동되지만 상대편 대역인 172.16.20.0 대역이 없다.
이유는? 아까와 같다. EIGRP 또한 auto summary가 적용되어있다. 고로 172.16.20.0을 10.10.10.0/24 대역으로 전송할 때 자동으로 172.16.0.0/24로전송 된다.
R1(config-router)#no auto-summary
R2(config-router)#no auto-summary
자동 축약을 비활성화 해주자.
다시 라우팅 테이블을 조회하면
10.0.0.0/24 is subnetted, 1 subnets
C 10.10.10.0 is directly connected, Serial0/0
172.16.0.0/24 is subnetted, 2 subnets
C 172.16.10.0 is directly connected, FastEthernet0/0
D 172.16.20.0 [90/20514560] via 10.10.10.2, 00:01:03, Serial0/0
다음과 같이 172.16.20.0 대역이 적용되어있다.
그외에도
R1#show ip eigrp neighbor
neighbor 테이블 보기
R1#show ip eigrp topology
토폴로지 테이블(모든 경로가 저장되어있는 테이블) 보기
등등의 명령어가 있다.
wild mask
IP 32비트 중 특정 비트를 지정해주고 싶을 때 사용한다.
만약 wild mask가 0 이면 해당 ip 비트에 그대로 숫자가 오는지를 check한다.
만약 wild mask가 1 이면 해당 ip 비트가 0이든 1이든 상관이 없다.
말보다 예시를 들으면 쉽게 이해가 가능하다.
만약 내가 1.1.1.0/24 대역을 지정해주고 싶다.
서브넷마스크로 지정해준다면 1.1.1.0 255.255.255.0 으로 지정해 줄 수 있다.
와일드마스크로 지정해준다면 1.1.1.0 0.0.0.255 지정해 줄 수 있다.
해당 네트워크에서 다음과 같이 라우팅 프로토콜을 지정해준다.
R1(config)#router eigrp 1
R1(config-router)#network 10.0.0.0
R1(config-router)#no auto-summary
R2(config)#router eigrp 1
R2(config-router)#network 10.0.0.0
다음과 같은 상황에서 R2의 라우팅 테이블을 보면
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
D 10.10.1.0 [90/20514560] via 10.10.12.1, 00:02:59, Serial0/0
D 10.10.2.0 [90/20514560] via 10.10.12.1, 00:02:59, Serial0/0
C 10.10.12.0 is directly connected, Serial0/0
다음과 같이 10으로 시작하는 모든 대역이 선택된다.
근데 여기서 10.10.1.0/24 대역만 광고해주고 싶으면 어떡할까?
만약 내가 network 10.10.1.0 명령어를 입력해도 class 별로 입력되는 프로토콜 특성 상 10.0.0.0/8로 인식하게 된다.
이때 사용하는 것이 와일드 마스크이다.
R1(config)#router eigrp 1
R1(config-router)#network 10.10.12.1 0.0.0.0
10.10.12.1 ip 자체를 지정
R1(config-router)#network 10.10.1.0 0.0.0.255
10.10.1.0/24 대역을 지정
다음과 같이 wild mask로 입력해주고 라우팅 테이블을 보면
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 2 subnets
D 10.10.1.0 [90/20514560] via 10.10.12.1, 00:00:05, Serial0/0
C 10.10.12.0 is directly connected, Serial0/0
10.10.1.0 대역 하나만 광고해 줄 수 있다.
Manual summary
RIP과 EIGRP 모두 auto summary로 지정해준다면 네트워크 구성에 따라 통신이 안되는 것을 앞서 확인했다.
no auto-summary 명령어로 자동 축약을 해제 시켜 줄 시 라우팅 테이블에 모든 대역이 나타난다.
이것은 결국 라우팅 테이블의 크기가 방대해진다는 뜻. 고로 자동이 아닌 수동으로 ip를 축약시켜 줄 수 있다.
우선 ip를 축약하는 법을 학습하자.
축약하는 법은 간단하다. 해당 ip를 이진수로 바꾸고 숫자가 달라지는 bit 수 앞에서 네트워크 대역을 끊어주면 된다.
이것 또한 예시를 통해 쉽게 이해 할 수 있다.
1.1.1.0/24
1.1.2.0/24
1.1.3.0/24
네트워크 ID를 이진수로 바꿔보면
1.1.0000 0001(1)
1.1.0000 0010(2)
1.1.0000 0011(3)
달라지는 부분 앞 비트를 잘라주면
1.1.1.0000 00 | 01
1.1.1.0000 00 | 10
1.1.1.0000 00 | 11
앞에 두 옥탯(16bit)과 뒤에 6bit 까지 총 22 bit 까지 숫자가 일치한다.
그렇다면 이런식으로 줄여 볼 수 있다.
1.1.1.0000 0000/22
즉 1.1.1.0/22으로 줄일 수 있다.
이것이 축약기술이다.
축약을 설정하는 법은 광고하는 인터페이스에서
ip summary address [protocol] [AS number] [축약 address] [mask]
로 쓸 수 있다.
여기서 강조하는 것은 해당 설정은 프로토콜이 아닌 광고하는 인터페이스에서 한다는 것!!
위의 토폴로지를 그대로 학습해보자.
다시
R1(config)#no router eigrp 1
R1(config)#router eigrp 100
R1(config-router)#network 10.0.0.0
R1(config-router)#no auto-summary
R2(config)#router eigrp 100
R2(config-router)#network 10.0.0.0
R2에서 라우팅 테이블 확인 시
10.0.0.0/24 is subnetted, 3 subnets
D 10.10.1.0 [90/20514560] via 10.10.12.1, 00:00:43, Serial0/0
D 10.10.2.0 [90/20514560] via 10.10.12.1, 00:00:43, Serial0/0
C 10.10.12.0 is directly connected, Serial0/0
여기서 10.10.1.0과 10.10..2.0을 하나의 대역으로 축약시켜보자.
10.10.0000 00 | 01(1)
10.10.0000 00 | 10(2)
이것은 결국 10.10.0.0/22로 축약 될 수 있다.
R1(config-router)#int s0/0
해당 인터페이스로 들어가서
R1(config-if)#ip summary-address eigrp 100 10.10.0.0 255.255.252.0
eigrp 100에 광고 중인 대역 중 10.10.0.0/22에 해당하는 모든 대역은 10.10.0.0/22로 광고해라.
라우팅 테이블 확인 시
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
D 10.10.0.0/22 [90/20514560] via 10.10.12.1, 00:00:07, Serial0/0
C 10.10.12.0/24 is directly connected, Serial0/0
두 개의 대역이 하나로 줄여서 올라와 있는 것 확인 가능 -> 즉 라우팅 테이블의 크기를 그만큼 줄일 수 있다.
OSPF
ospf는 위에서 말했듯이 링크 스테이트 프로토콜
즉, 라우터가 전체 네트워크 토폴로지를 그릴 수 있다.
라우터는 인접 라우터와 정보 교환, 이 정보를 LS database에 저장한다.
이 LS database를 토대로 라우터가 토폴로지를 그린다.
ospf의 가장 큰 특징은 area 개념을 사용한다는 것.
area가 달라도 같은 ospf 패킷을 주고 받지만, area 마다 다른 정책을 구현 할 수 있다.
(area 1의 특정 대역은 다른 area와 패킷 교환을 안한다거나 하는 정책 구현 가능)
ospf는 깊게 들어가면 복잡하니 매우 간단하게만 설정해보고자 한다.
우서 가장 기본적으로 설정 명령어는
router ospf [process-id]
network [address] [wild mask] [area] [number]
R1(config)#router ospf 1
router ospf [process ip]로 구성 이 때 process id가 같아야 서로 ospf 패킷을 주고 받을 수 있다.
R1(config-router)#network 10.10.1.0 0.0.0.255 area 0
R1(config-router)#network 10.10.2.0 0.0.0.255 area 0
R1(config-router)#network 10.10.12.1 0.0.0.0 area 0
network 대역을 지정, 무조건 와일드 마스크의 형태로 지정해주어야 한다.
area는 area 뒤에 특정 숫자를 지정해준다. area가 달라도 통신이 가능하며 대게 기본값으로 area 0을 준다.
R2(config)#router ospf 1
R2(config-router)#network 10.10.12.2 0.0.0.0 area 0
R2도 다음과 같이 지정 한 후 라우팅 테이블을 확인해보면
10.0.0.0/24 is subnetted, 3 subnets
O 10.10.1.0 [110/65] via 10.10.12.1, 00:00:45, Serial0/0
O 10.10.2.0 [110/65] via 10.10.12.1, 00:00:45, Serial0/0
C 10.10.12.0 is directly connected, Serial0/0
다음과 같이 O로 시작하는 정보들을 볼 수 있다.