태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

블로그 이미지
Dekei's Blog is... empty
Dekei

공지사항

최근에 달린 댓글

글 보관함

calendar

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

'CISCO 네트워크'에 해당되는 글 6

  1. 2008.12.02 CCNP/CCIE 네트워크 및 멀티미디어 전문가 양성 과정-2009년 1월
  2. 2008.09.19 CCNA 모의고사 시험지 (1)
  3. 2008.09.18 새로운 페이지
  4. 2008.09.18 네트워크
  5. 2008.09.18 Switch Ex
  6. 2008.09.18 IPv6
1. 교육과정명 : 국비지원 CCIE 네트워크 및 멀티미디어 전문가 양성과정
2. 교육목표 : 네트워크 분야에 취업 의사가 있는 구직자들을 대상으로 6개월동안 CCIE 자격증 취득과 최근 네트워크 분야의 보안 및 보이스 VoIP 전문가 과정을 동시에 이수함으로써 국내 또는 일본 지역에 취업을 진행하는 교육 과정입니다.
3. 교육과정 안내
   * 과정명 : 국비지원 CCIE 네트워크 및 멀티미디어 전문가 양성과정
   * 교육내용 : Cisco Expert의 세부 교육 일정 참조
   * 훈련일정 : 2009. 1. 2~ 2009. 6. 30(6개월, 교육일수 120일, 3개월 단위 분할하여 진행함)
   * 훈련시간 : 9:00 ~ 18:00 (8시간/일) 총 960시간
   * 훈련비 : 전액 무료 (개인부담금 없음), 자격증 취득 비용은 본인이 부담함
   * 훈련생특전 - 훈련수당지급 : 매월마다 20만원, 식대(1일 3,000원) 지급 
   - 교재 무료 제공 - 수료 후 취업 지원
   - 명지전문대학 헬쓰클럽, 도서관 이용 가능
   * 모집대상 - 현재 미취업 상태에 있는 적극적인 취업 희망자
   - 2009년 2월 대학/전문대학 졸업 예정자
   - 3년제 IT학과 출신의 경우, 평생교육원 과정과 연계하여 학사 취득 가능
   - 재학생, 휴학생은 지원불가
   - 방통대 재학생, 야간대 재학생 가능
   - 노동부 고용안정센터에서 구직등록을 필한 자.
   ※모집대상은 고용보험가입경력과 무관함
   * 제출서류 
   - 훈련지원신청서 : 첨부한 양성교육지원서.doc 
   - 구직등록필증(노동부 고용안정센터에서 발급)
   - 본인 명의의 우체국통장 사본 1부
  - 최종학교졸업증명서(졸업예정증명서)
  * 제출방법 - 훈련지원신청서를 작성하여 명지전문대학 이메일 접수 mjcitc@empal.com
                  - 나머지 서류는 면접 당일에 제출
   - 담당교수 : 명지전문대학 정보통신과 부교수 윤영현 070-7516-4808
   - 담당자 : 윤영현☎ 011-787-4804, 서류접수 : mjcitc@empal.com
   - 자세한 사항은 www.itexpert.kr 참조
   * 모집방법 - 1차 : 면접 (수강 희망자는 면접일에 관련 서류 원본를 가지고 참가)
  * 모집마감일 - 2008. 12. 15 (양성과정신청서 도착 기준)
  * 면접일시 - 2008. 12. 30일 오후 2시 명지전문대학 공학관 204호
   * 합격자발표 - 합격자 개별통보
   * 훈련장소 - 명지전문대학 공학관 605호
4. 상세 커리큘럼 :
    -  Windows, Linux
    - CCNA 부터 CCIE 취득까지 전과정 포함
    -  Wireless LAN
    - 최신 해킹 기술과 보안
    - cisco Voice, Security
    - 3개월 진행후 개별 2차 면접 실시하여 CCIE 상급반 결정
5. 보유기자재
    - 2811 라우터 110대
    - 3560, 3750 스위치 60대
    - 6503, 6509 보안, 보이스, 로드밸랜스 모듈 보유
    - VoIP 폰 50대


첨부파일

양성과정지원신청서.hwp

CCNA 모의고사 시험지

2008.09.19 13:06 | Posted by Dekei



새로운 페이지

2008.09.18 09:49 | Posted by Dekei

 en
conf t
no ip domain-lo
ena sec cisco
host r1
line con 0
exec-t 0 0
logg syn
exit
line vty 0 4
pass cisco
exit

 en

 

conft

 configure terminal

 no ip domain-lo

 no ip domain-lookup
 ena sec cisco  enble secret cisco
 host R1  hostname R1
 line con 0  line console 0
 exec-t 0 0  exec-timeout 0 0
 logg syn  logging synchronous
 exit

 exit

 line vty 0 4  line vty 0 4
 pass cisco  passworf cisco
exit  exit

 

이 글은 스프링노트에서 작성되었습니다.

네트워크

2008.09.18 09:48 | Posted by Dekei

 

                                                                      네트워크 타입별 OSPF 동작방식

 

 네트워크타입 네이버 DR 헬로/데드주기 기본인터페이스
 브로드캐스트 자동 선출 10/40초 이더넷
 포인트 투 포인트 자동 없음 10/40초

포인트 투 포인트/서브인터페이스

HDLC,PPP

 포인트 투 멀티 포인트  자동  없음  30/120초  없음
 논 브로드 캐스트  지정  선출  30/120초

 멀티포인트 서브인터페이스

프레임 릴레이 ARM,X25

 

 

이 글은 스프링노트에서 작성되었습니다.

Switch Ex

2008.09.18 09:48 | Posted by Dekei

1.vlan설정
2. vtp 설정
3.트렁크 설정

 

우리회사에 인사부(vlan100),관리부(vlan200),총무부(vlan300)가 있다.

 

회사이름은 네이바(Naiva)이다.
2대의 스위치중 swA서버로 만들고 swB는클라이언트로 만들어라.
회사 스위치를 보면 swA의 fa0/1 fa0/3 fa0/5 은인사부에
fa/11, fa0/13,fa0/15은 관리부에 fa0/17, fa0/19,fa0/21은 총무부에 할당해라.
swB도 같은 포트에 할당해라.
트렁크포트는 swA와 swB는 fa0/24번 포트에 할당되었다.

 

swA설정(서버,vlan만들고 vtp설정, 엑세스포트설정)
en
conf t
host swA
no ip domain-lo
vlan 100
vlan 200
vlan 300
vtp domain Naiva
vtp mode server

 

int fa0/24
switchport trunk encapsulation dot1q
switchport mode trunk
int fa0/1, fa0/3, fa0/5
switchport mode access
switchport access vlan 100
int fa0/11, fa0/13, fa0/15
switchport mode access
switchport access vlan 200
int fa0/17, fa0/19, fa0/21
switchport mode access
switchport access vlan 300
end

 

swB설정(vtp설정,클라이언트만듬,트렁크설정)
en
conf t
host swB
no ip domain-lo
vtp domain Naiva
vtp mode client
### sh vtp status
int fa0/24
switchport trunk encapsulation dot1q
switchport mode trunk
### sh vlan brief
int fa0/1, fa0/3, fa0/5
switchport mode access
switchport access vlan 100
int fa0/11, fa0/13, fa0/15
switchport mode access
switchport access vlan 200
int fa0/17, fa0/19, fa0/21
switchport mode access
switchport access vlan 300
end

이 글은 스프링노트에서 작성되었습니다.

IPv6

2008.09.18 09:22 | Posted by Dekei

 

IPv6

IPv6의 장점

IPv6는 IPv4주소체계에서의 가장 핵심되는 문제점인 주소고갈문제를 해결해줄 수 있을 뿐만 아니라 실시간데이터의 처리능력과 QoS관련성능, 모바일(mobile)기능, 라우팅의 효율성, 보안 등의 여러 분야와 관련하여 IPv4에서 부족했던 부분들을 수정하고보완해나감과 동시에 새로운 개념들을 도입함으로써, 보다나은 인터넷통신이 가능하게 되었다. 이러한 여러 분야에서의 대표적인 IPv6의 장점들에 대해 살펴본 후 본격적으로 IPv6에 대해 배워볼 수 있도록 하자.

주소크기의 증대

주소체계를 IPv6로 전환하려는 가장 큰 이유는 무엇보다도 사용가능한 주소의 크기 때문이다. IPv6주소는 128비트의 크기를 가지고 있어, IPv4(32비트)와는 비교할 수 없을 만큼 엄청난 양의 주소를 할당할 수가 있다.(예제1.1.1)

예제 1.1.1 할당 가능한 IPv6주소의 크기

 

2(IPv4주소의 크기)222개= 2

 

주소의 레벨화

IPv6주소는 일정한 비트단위로 레벨을 규정하여 각 레벨에 맞는 기관 혹은 개인에게 네트워크 및 주소를 할당하게 된다. 그로인해 네트워크 혹은 주소가 할당된 국가위치 및 레벨정보 등의 구분이 용이하게 되고, 각 레벨별로 루트정보를 서머리함으로써 128비트의 커다란 주소크기에도 불구하고 손쉽게 인터넷의 라우팅테이블을 단순화시킬 수 있게 되었다.(그림1.1.1)

그림 1.1.3 IPv6주소의 여러 레벨들

  noname01.bmp

 

자동주소부여

앞으로는 모바일장비들뿐만 아니라 가정 내의 장비들 또한 네트워킹이 가능하게 됨으로써 인터넷에 접근할 수 있는 장비들의 양은 엄청나게 증가될 것이며, 이들이 인터넷에 접근하기위해서 필요로 하는 IP주소의 양 또한 엄청나게 증가될 것이다. 그러나 이러한 장비들을 사용하는 사용자의 입장에서는 복잡한 IPv6주소를 일일이 장비들에게 부여한다는 것이 상당히 귀찮은 일이다. 이렇게 IPv6는 주소크기의 증가와 더불어 어쩔 수 없이 수반되는, 길고 복잡한 주소표기방식의 문제점을 보완하기위해 호스트들이 스스로 주소를 생성할 수 있는 기능이 추가되었다. 물론 IPv4에서도 DHCP(dynamichostconfigurationprotocol)등과 같은 프로토콜들을 통해 자동으로 주소를 획득하는 기능이 존재했었고, 또한 이와 유사한기능이 IPv6에서도 DHCPv6라는 이름으로 존재한다.(이를 IPv6에서는 statefullautoconfiguration방식이라 부른다.) 그러나 IPv6에서 DHCPv6는 호스트들이 주소를 획득하는데 있어서 보조적인 역할을 수행할 뿐이며, 더욱이 IPv6에서는 DHCPv6와 관련된 명령어들을 따로 설정하지 않아도 호스트들이 스스로 주소를 생성할 수 있게 된다는것이다.(이를 IPv6에서는 statelessautoconfiguration방식이라 부른다.) 이러한 자동주소부여기능으로 인해 네트워크관리자는 자신의 관리 하에 있는 수많은 호스트들을 보다 손쉽게 관리할 수 있게 되었고, 사용자들은 어떠한 조작을 하지 않고도 장비의 전원이 켜지는 그 순간부터 바로 인터넷을 사용하는 것이 가능하게 되었다.

헤더의 단순화와 확장성

전체IPv6기본헤더의 크기는 주소크기의 증가로 인해 전체IPv4기본헤더의 크기보다 크다. 하지만 주소를 제외한 나머지 기본헤더부분만을 비교한다면, 많은 헤더옵션들이 없어지고 단순화됨으로써 IPv4기본헤더보다 오히려 그 크기가 작아지게 되었다.(그림1.1.1)

그림 1.1.1 주소부분을 제외한 IPv6기본헤더와 IPv4기본헤더의 크기비교

  noname02.bmp

 

대신 IPv6에서는 확장헤더의 역할을 강화시켜 IPv4기본헤더에 존재하던 주요옵션들을 IPv6확장헤더로 표현하게 함으로써 통신시 필요한 옵션들만을 선별하여 기본헤더 뒤에 추가시킬 수 있도록 설계되어졌다. 그로인해 라우팅의 효율성과 통신속도가 증가되었으며, 더욱이 확장헤더라는 것이 그 크기가 정해져있거나 기본헤더처럼 정형화된 것이 아니므로 확장헤더를 통해 다양한 네트워크계층프로토콜들의 개발 및 도입이 손쉽게 이루어질 수 있게 되었다. 이러한 IPv6헤더의 확장성이야말로 미래지향적인 IPv6주소체계의 특징을 잘 표현해주는 기능이라고 할 수 있다.

엔드-투-엔드(end-to-end)통신으로의 복귀와 보안성 강화

또한 IPv4네트워크 환경에서 NAT동작에 의해 IP주소가 변환됨으로써 구현될 수 없었던 엔드-투-엔드통신이 IPv6네트워크 환경에서는 다시 가능하게 되었다. 출발지와 목적지장비 간에 엔드-투-엔드통신을 하게 되면 해당장비들 간에 주고받는 정보만을 신뢰하기 때문에 보안에 있어서 상당한 도움이 된다. 더욱이 IPv6에서는 확장헤더에 보안관련 헤더 두 가지를 정형화시켜둠으로써, IPv4에서 상위계층프로토콜의 종류별로 난잡하게 존재했던 보안관련 필드들을 네트워크계층에서 통합시키도록 하였으며 또한 그로인해 보다 안전한통신이 이루어질 수 있게 되었다. 보안과 관련된 사항은 그 특성상 항상 새로운 기술이 개발되어야하는 분야들 중 하나임을 감안할 때 IPv6는 엔드-투-엔드통신방식 및 확장헤더의 연동을 통한 여러 가지 보안관련 프로토콜들을 개발하기에 최적의 프로토콜이라 생각된다.

지금까지 언급한 대표적인 장점들 이외에도 IPv6는 여러 가지 장점들을 많이 가지고 있다. 하지만 모두 위에서 언급한 장점들로부터 파생되는 기능들이기에 이번 장에서는IPv6의 주요장점들만을 알아보도록 하였다. 나머지 IPv6의 특징과 관련된 자세한 내용들은 각 파트별로 알아볼 수 있도록 한다.

 

IPv6주소의 표현방법

IPv4주소이건, IPv6주소이건 간에 항상 모든 주소의 기본은 2진수에서부터 출발한다. 컴퓨터가 이해하는 숫자가 2진수이기 때문인데, 이렇게 2진수로 이루어진 IPv4주소를 화면에 표현하려면 그 길이가 상당히 길어진다. 그래서 이 주소를 인간이 이해하기 쉽고 길이를 짧게 표현할 수 있는 10진수 숫자로 바꾼 것이 우리가 흔히 보는 IPv4주소이다. IPv6주소는 총길이가 128비트이므로 IPv4와 같이 10진수로 표현을 해도 그 길이가 상당히 길어진다. 그래서 보여지는 주소의 길이를 좀더 짧게 하기위해 IPv6주소는 이더넷의 맥(MAC-mediaaccesscontrol)주소와 같이 16진수로 표현하게 된다.

IPv6주소의 기본표현

전체IPv6주소는 총 8개의 파트로 나눠지며 한 파트 당 16비트씩의 크기를 가진다.(16비트8개의 파트=128비트) 파트와 파트사이의 구분은 IPv4에서처럼 .(콤마)로 하지 않고 :(콜론)으로 한다.(그림2.2.1)

그림 2.2.1 IPv6주소의 예

  noname03(1).bmp

 

2진수와 10진수를 주로 사용해왔던 우리들로써는 16진수가 복잡해보일 수도 있다. 그러나 2진수와 16진수의 크기관계만 잘 이해하고 있다면 IPv6주소체계에 익숙해지는 시간은 그리 오래 걸리지 않을 것이다. 그림2.2.2를 통해 2진수와 16진수의 관계에 대해 자세히 알아보도록 하자.

그림 2.2.2 2진수와 16진수의 관계

   noname04.bmp

 

위의그림에서 보듯이 16진수 한 자리로 표현할 수 있는 숫자의 최대개수는 16(0부터F까지)이다. 이는 2진수 네 자리로 표현할 수 있는 숫자 즉, 4비트로 표현할 수 있는 숫자의 최대개수(2=16개)와 같으므로 16진수 한 자리수의 최대크기는 4비트이다. 그러므로 16진수 네 자리 숫자의 최대크기는 16비트(표현할 수 있는 숫자의 최대개수는 2개)가 된다. IPv6주소는 16비트단위로 각 파트들을 나누게 되는데, 다시 말해 IPv6주소 한 파트의 전체크기는 16비트가 되는데, 16진수 한자리수의 최대크기는 4비트이므로 IPv6주소 한 파트의 최대 자릿수는 네 자리가 된다.(4비트4개의 자릿수=16비트) 이제 2진수를 16진수로 변환하는 방법에 대해 알아보자. 2진수에서 16진수로(혹은 그 반대로) 변환하는 방법은 IPv4에서 2진수와 10진수간의 변환방법보다 훨씬 간단하다.(그림2.2.1)

그림 2.2.3 16진수 1234를 2진수로 변환하기

   noname05.bmp

 

위의그림에서 보듯이 16진수 숫자 1234를 2진수로 표현하려면, 우선 16진수의 각 자릿수를 한 자리씩 따로 분리하여 1은 2진수 0001로 표현(16진수 한 자리 숫자는 2진수 네 자리 숫자로 표현할 수 있다.)하고 16진수 2는 2진수 0010으로, 3 0011로, 4 0100으로 풀어서 나온 전체 숫자를 이어서 쓰면 된다. 또 다른 예를 그림2.1.4를 통해 살펴보자.

그림 2.1.4 16진수로 표현된 IPv6주소를 2진수로 변환하기

 

  noname06.bmp

위의그림에서 보듯이 16진수로 표현된 IPv6주소의 두 파트가 1234:A10:이라고 할 때, 이 두 파트를 2진수로 변환하기 위해서는 먼저 주소의 각 파트를 네 자리의 숫자로 만든다. 1234:A10: 1234:0A10:로 만들 수 있다. 이때 두 번째 파트의 숫자A앞에 있는 0은 생략이 되었던 숫자이다.(한 파트의 숫자들 중 상위 0은 생략이 가능하지만 중간이나 하위 0은 생략할 수 없다.-이것은 어떤 진수의 숫자이건 마찬가지이다.) 이렇게 네 자리 숫자로 만든 후 앞서와 마찬가지로 각 자릿수를 한 자리씩 따로 분리하여 2진수로 풀어서 나온 전체 숫자를 이어서 쓰면 된다. 이런 식으로 16진수의 최대숫자인 F는 2진수 1111로 표현될 수 있다.(예제2.1.1)

예제 2.1.1 16진수로 표현된 IPv6주소 FFFF:FFFF:를 2진수로 변환하기

 

FFFF:FFFF:=1111111111111111:1111111111111111:

 

이번에는 반대로 2진수로 표현된 IPv6주소 한 파트를 16진수로 변환해보자.(그림2.1.1)

그림 2.1.2 2진수로 표현된 IPv6주소를 16진수로 변환하기

  noname07.bmp

 

위의그림에서 보듯이 2진수로 표현된 IPv6주소의 한 파트가 1001000110100:이라고 할 때, 이 한 파트를 16진수로 변환하기 위해서는 먼저 주소의 낮은 자리숫자(오른쪽)에서부터 네 자리씩 끊어, 모든 숫자들을 네 자리 숫자로 만든다.(가장 왼쪽부분에 남은 1은 0001이 된다.) 1 0010 0011 0100: 0001 0010 0011 0100:으로 만들 수 있다. 이렇게 연속되는 2진수를 네 자리씩 따로 분리하여 0001은 16진수 1로 표현(2진수 네 자리 숫자는 16진수 한 자리 숫자로 표현할 수 있다.)하고 2진수 0010은 16진수 2로, 0011 3으로, 0100 4로 계산하여 나온 전체 숫자를 이어서 쓰면 된다.

주소의 생략

IPv6주소에서 한 파트내부의 상위 0은 생략이 가능하지만 중간이나 하위0은 생략할 수 없다. 또한 한 파트가 모두 0일 경우는 IPv6주소표기시 해당파트전체를 생략할 수 있으며 이때 생략된 부분은 ::(더블콜론)을 사용하여 표기한다.(예제2.1.3)

예제 2.1.3 IPv6주소의 생략

 

IPv6주소 1234:5678:0:0:0:0:1234:5678에서 전체 숫자가 0인 파트들은 생략이 가능

 

=1234:5678::1234:5678

생략된 파트들은 ::(더블콜론)으로 표기

 

이때 주의할 점으로 ::(더블콜론)을 통한 IPv6주소의 생략은 하나의 주소에서 오직 한번만 가능하다는 것이다. 왜냐하면 ::(더블콜론)이 사용된 주소에서는 전체주소크기 128비트에서 0이 아닌 나머지파트들의 크기를 빼줌으로써 생략된 파트들의 크기를 알아낼 수 있지만, 생략을 두 번 이상 하게 되면 즉, ::(더블콜론)이 두 번 이상 사용되게 되면 생략된 파트들의 크기를 알아낼 수 없기 때문이다.(예제2.1.1)

예제 2.1.1 IPv6주소생략의 제한

 

IPv6주소 1234::1234::1234에서 생략된 파트를 표기해보자.

 

위 IPv6주소의 전체길이 128비트에서 0이 아닌 주소의 길이는 48비트이므로, 0인 부분의 총길이는 128-48=80비트가 된다. 만약 한 주소에서 ::(더블콜론)이 한번만 사용된다면 ::(더블콜론)부분에 80비트길이만큼의 0을 표기하면 되지만, 위의주소와 같이 ::(더블콜론)이 두 번 이상 사용되게 된다면 각각의 ::(더블콜론)에 얼마만큼의 0을 표기해야하는지 알 수 없으므로 정확한 주소표기가 불가능하게 된다.

 

즉, 생략된 주소 1234::1234::1234의 실제주소가

 

1234:0:1234:0:0:0:0:1234인지 아니면

1234:0:0:0:0:1234:0:1234인지를 알 수 없게 되므로,

 

하나의 주소에는 ::(더블콜론)을 두 번 이상 사용할 수 없다.

 

*참고로 뒤에서 배울 장비의 룹백(loopback)인터페이스주소인 ::1과 같은 경우는 전체 128비트의 주소크기 중 마지막 숫자 1을 제외한 나머지 부분이 모두 0임을 의미한다.

네트워크비트(bit)의 표현

IPv6주소의 네트워크는 IPv4에서와 달리 네트워크마스크가 아니라 네트워크비트를 사용하여 주소 뒤에 직접표기하게 된다.(예제2.1.2)

예제 2.1.2 IPv6주소의 네트워크비트의 표현

 

2001:201:1234:1::1/64(2001:201:1234:1:0:0:0:1/64)

 

=2001:201:1234:1::/64를 네트워크로 사용하는 호스트주소 1을 의미

 

IPv6주소의 종류

IPv6주소의 종류는 크게 유니캐스트, 멀티캐스트, 애니캐스트로 구분을 할 수 있는데, 이때 주목할 점으로 IPv6주소체계에서는 IPv4에서의 브로드캐스트가 없어지고 그 역할을 멀티캐스트와 애니캐스트가 대신하게 되었다는 것이다.(그림2.1.1)

그림 2.1.1 IPv6주소의 종류

  noname08.bmp

 

IPv6주소의 종류-유니캐스트

먼저 유니캐스트에 대해 알아보자. IPv6에서의 유니캐스트는 IPv4에서의 유니캐스트와 유사한 개념의 주소이며, 그 종류에는 여러 가지가 있다.(그림2.1.2)

그림 2.1.2 IPv6유니캐스트의 종류

  noname09.bmp

 

애그리게이터블 글로벌 주소(aggregatable global address)

애그리게이터블 글로벌주소는 보통 간단하게 글로벌주소라고 부른다. 이 주소는 IPv4에서 공인IP와 유사한 개념의 주소이다. 앞서 배웠듯이 IPv6에서는 엄청난 양의 글로벌주소를 체계적으로 할당하기위해 전체IPv6주소 128비트를 레벨화하여 순차적으로 할당하도록 하고 있는데, 현재 IPv6인터넷상에서 사용되고 있는 글로벌주소의 네트워크대역으로는 2001::/16(FP=001, TLA=0000000000001)와 2002::/16, 2003::/18, 3FFE::/16(FP=001, TLA=1111111111110)등이 있다.(물론 이외에도 많은 네트워크대역들이 존재한다.)(2.1.1)

표 2.1.1 현재 IPv6인터넷상에서 사용되고 있는 글로벌주소의 대표적인 네트워크대역들

  noname10.bmp

 

*6bone(IPv6backbone)은 IPv6주소를 기반으로 하는 통신의 테스트와 문제점의 발견 및 해결을 위해 1996년 탄생한 실험용 IPv6네트워크를 말하는데, 이러한 네트워크를 위해 따로 할당해놓은 글로벌주소가 바로 6bone주소이다. 6to4주소는 6to4터널에서 사용되는 주소인데, 6to4터널과 관련된 내용은 11장;6to4터널파트에서 자세히 다룰 것이다.

참고로 일반 인터페이스에 할당되는 글로벌주소의 네트워크비트는 보통 64비트를 사용한다. 그러나 반드시 64비트를 사용해야하는 것은 아니며, 네트워크비트를 변경할 수도 있다.(/126, /96 등) 하지만 그러기에는 너무 번거롭고 또한 그럴 필요가 없을 정도로 할당할 수 있는 주소의 크기가 넉넉하다는 등의 이유로 인해 현재 대부분의 네트워크들이 특별한경우가 아닌 이상 64비트를 네트워크비트로 사용하고 있다.(그림2.1.1)

그림 2.1.1 글로벌주소의 포맷과 주소할당의 예

  1.bmp

 

또한 IPv6에서는 특별한 제약사항 없이 하나의 인터페이스에 여러 개의 글로벌주소를 부여하거나, 혹은 삭제하는 것이 가능하다. 물론 IPv4에서도 secondary명령어를 사용하여 하나의 인터페이스에 여러 개의 주소를 부여하는 것이 가능했었고, 부여한 세컨더리(secondary)주소를 삭제할 경우는 별문제가 없었지만, 세컨더리주소가 아닌 기본주소를 삭제할 경우는 세컨더리주소들도 함께 삭제가 되어버리는 제약사항이 존재했었다. 더욱이 주소를 변경(renumbering)하거나 삭제하려는 인터페이스에 라우팅프로토콜이 동작되고 있다면, 순간적으로 라우팅프로토콜 통신이 끊길 위험도 있기 때문에 IPv4주소변경에는 신중한 고려가 필요했다. 그러나 IPv6에서는 이러한 제약사항이 없어진 것이다. 즉, IPv6에서는 기준이 되는 주소가 없어짐으로써 인터페이스에 여러 개의 IPv6주소를 자유자재로 부여 및 삭제를 하는 것이 가능하고 또한 라우팅프로토콜 통신의 단절과 관련된 문제도 잠시 뒤에 배울 링크로컬(link local)주소라는 것을 사용함으로써 해결이 되었다.

사이트로컬 주소(site local address)

사이트로컬주소는 IPv4에서 사설IP와 유사한 개념의 주소이다. 그러나 IPv4에서 사설IP는 외부IPv4인터넷과 통신이 가능했지만 IPv6에서의 사이트로컬주소는 외부IPv6인터넷과의 통신이 불가능하다는 점에서 차이가 있다. 즉, 사이트로컬주소를 사용하는 내부장비는 글로벌주소를 가지는 외부IPv6인터넷과 통신이 불가능하며 또한 다른 사이트의 사이트로컬주소와도 통신이 불가능하다.(그림2.1.4)

그림 2.1.4 사이트로컬주소의 개념

  2.bmp

 

그러므로 사이트로컬주소가 IPv4에서의 사설IP와 동일한 역할을 한다고는 말할 수 없다. 이러한 사이트로컬주소의 용도는 외부IPv6인터넷과 통신을 할 필요가 없는 장비-내부네트워크에서만 사용되는 프린트, 혹은 내부서버 등에 할당을 하거나 테스트용 주소로도 사용될 수 있다. 사이트로컬주소는 앞서 글로벌주소와 마찬가지로 인터페이스에 주소부여시 별다른 제약사항이 없다. 그림을 통해 사이트로컬주소의 포맷을 살펴보도록 하자.(그림2.1.1)

그림 2.1.1 사이트로컬주소의 포맷과 주소할당의 예

  3.bmp

 

위의그림에서 보듯이 사이트로컬주소의 최 상위 10비트는 FEC0(2진수로는 1111111011**)으로 정해져있다. 10비트이하는 관리자가 임의로 설정할 수 있는 부분이므로 사이트로컬주소의 범위는 FEC0::/10(1111111011000000)부터 FEFF::/10(1111111011111111)까지가 되겠다.

*참고로 최근에는 관리의 복잡함과 보안관련 문제점 등으로 인해 실제 네트워크 환경에서는 사이트로컬주소를 사용하지 않도록 권장하고 있다.

링크로컬주소(link local address)

링크로컬(link local)주소는 IPv6주소체계에서 새롭게 도입된 개념으로, 링크(하나의 서브넷 즉, 라우터와 라우터사이)별로만 의미가 있는 주소이다.(링크내부의 사이트로컬주소라고 생각하면 되겠다.) 즉, 링크로컬주소로는 다른 링크의 글로벌(혹은 사이트로컬)주소 및 링크로컬주소를 가지는 장비와의 통신이 불가능하다.(그림2.1.5)

그림 2.1.5 링크로컬주소의 개념

  4.bmp

 

또한 위의그림과 같은 경우 라우터A는 링크A와 링크B에 연결되어있는 각 인터페이스에 동일한 링크로컬주소를 부여해도 상관이 없다. 링크로컬주소는 동일링크에서만 의미가 있기 때문이다.(라우터A의 서로 다른 인터페이스에 동일한 링크로컬주소를 부여해도, 자신은 어떤 인터페이스에 부여된 주소인지 구분을 할 수 있기 때문에 문제가 없다.) 이때 링크A상에 존재하는 장비들은 라우터A의 링크B와 연결된 인터페이스의 링크로컬주소를 알 수 없으며, 그것은 링크B상에 존재하는 장비들 또한 마찬가지이다. 그러므로 글로벌주소와 같은 경우는 전 세계적으로 고유한 주소라야 하지만, 링크로컬주소로는 링크외부와의 통신이 불가능하므로 링크로컬주소와 같은 경우는 링크 내에서만 교유하면 된다는 것이다. 그림을 통해 링크로컬주소의 포맷을 살펴보도록 하자.(그림2.1.1)

그림 2.1.6 링크로컬주소의 포맷과 주소할당의 예

  5.bmp

 

위의그림에서 보듯이 링크로컬주소의 최 상위 10비트는 FE80(2진수로는 1111111010**)으로 정해져있다. 10비트이하는 관리자가 임의로 설정할 수 있는 부분이므로 링크로컬주소의 범위는 FE80::/10(1111111010000000)부터 FEBF::/10(1111111010111111)까지가 되겠다. 다음의 54비트부분에는 다른 값들을 사용할 수 있지만 보통 간단히 0으로 둔다. 하나의 링크에 여러 개의 서브넷이 필요한 경우는 없기 때문이다. 또한 링크로컬주소는 앞서 글로벌(혹은 사이트로컬)주소와 달리 한 인터페이스에 오직 하나의 주소만을 부여할 수가 있다.

왜 링크로컬주소인가?

링크로컬주소는 IPv6에서 여러 가지 용도로 사용된다. 우선, 자동주소부여과정(statelessautoconfiguration)에서 링크로컬주소가 사용되며 또한 IPv6에서 대부분의 라우팅프로토콜들이 헬로패킷 혹은 업데이트를 주고받을 때 링크로컬주소를 사용하게 된다. 라우팅프로토콜동작시 링크로컬주소를 사용하게 되면 쓸데없는 주소의 낭비를 막을 수 있을 뿐만 아니라 해당인터페이스에 부여되어있는 글로벌(혹은 사이트로컬)주소의 삭제나 주소변경시에도 링크로컬주소를 통해 라우팅프로토콜통신을 계속 유지할 수 있으므로 글로벌(혹은 사이트로컬)주소의 변경이 자유롭게 된다.(그림2.1.7)

그림 2.1.7 링크로컬주소의 장점

  6.bmp

 

이외에도 링크로컬주소는 동일링크 상에서만 의미가 있으므로 다른 링크에서 해당 링크로컬주소를 사용하는 장비로 직접 접근하는 것이 사실상 불가능하기 때문에, 라우팅프로토콜통신시 보안에도 상당한 도움을 주게 된다.

룹백주소(loopback address)

IPv6에서의 룹백주소는 IPv4에서 각 장비의 내부에 부여된 주소를 의미하는 룹백주소 127.0.0.1과 그 역할이 동일하다. IPv6에서는 ::1(0:0:0:0:0:0:0:1)이 장비내부의 룹백주소를 의미한다.

언스페시파이드주소(unspecified address)

IPv6에서의 언스페시파이드주소는 명확하지 않은 주소를 의미하며 IPv4에서의 언스페시파이드주소와 그 역할이 동일하지만 IPv6에서는 좀더 다양한 영역에서 사용이된다. 언스페시파이드주소의 용도는 각 파트별로 해당부분에서 다시 언급하도록 하겠다. IPv6에서는 ::(더블콜론)이 언스페시파이드주소를 의미한다.

IPv4컴패터블주소(IPv4 compatible address)

IPv4컴패터블주소는 IPv4컴패터블주소기반터널에서 사용되는 주소이며 포맷은 ::IPv4주소/96으로, 하위 32비트(IPv4주소부분)를 제외한 나머지 비트들은 모두 0으로 표현된다.

라우터에서의 IPv6주소부여

이제 지금까지 배운 IPv6주소체계를 바탕으로 라우터에 직접주소를 부여해보고, 또한 부여된 주소정보들을 확인해보도록하자.

라우터의 IPv6라우팅기능 활성화시키기

라우터에서 IPv6라우팅이 가능해지기위해서는 반드시 ipv6 unicast-routing이라는 명령어를 설정해주어야 한다. 그렇지 않으면 라우터에서 IPv6라우팅과 관련된 기능은 동작이 되지 않는다. 이번파트에서는 라우터에서의 기본적인IPv6주소부여에 대한 실습만을 하겠지만, 그래도 ipv6 unicast-routing명령어를 한번 설정해보자.(예제2.2.1)

예제 2.2.1 라우터의 IPv6라우팅기능 활성화시키기

 

R1#conf t

R1(config)#ipv6 ?

access-list Configure access lists

cef Cisco Express Forwarding for IPv6

unicast-routing Enable unicast routing

(생략)

 

R1(config)#ipv6 unicast-routing

R1(config)#^Z

 

인터페이스에 기본주소부여하기

인터페이스에 IPv6주소를 부여해보자. IPv6주소부여방법에는 여러 가지가 있으나 지금은 가장기본적인방법만을 사용하여 실습을 해보도록 하겠다.(예제2.2.1)

예제 2.2.1 인터페이스에 글로벌주소부여하기-1

 

R1#conf t

R1(config)#int s0

R1(config-if)#ipv6 address 2001:1:1:1:0:0:0:1/64

R1(config-if)#ipv6 address 2001:1:1:1::::1/64

R1(config-if)#^Z

 

위의예제에서 보듯이 IPv6에서의 기본적인주소부여방법은 IPv4에서와 유사하다. 그러나 IPv4에서는 주소 뒤에 네트워크마스크를 입력했지만 IPv6에서는 /네트워크비트를 직접 입력한다는 점이 다르다. 이렇게 부여된 주소를 포함한, IPv6와 관련된 인터페이스의 전반적인 정보들은 show ipv6 interface [인터페이스번호]명령어를 사용하여 확인할 수 있다.(예제2.2.2)

예제 2.2.2 특정인터페이스의 IPv6관련정보 확인

 

R1#show ipv6 interface s0

Serial0 is up, line protocol is up

② IPv6 is enabled, link-local address is FE80::20F:24FF:FE00:7320

No Virtual link-local address(es):

Global unicast address(es):

① 2001:1:1:1::1, subnet is 2001:1:1:1::/64

(생략)

 

주소를 2001:1:1:1:0:0:0:1로 부여했음에도 불구하고 show ipv6 interface [인터페이스번호]명령어를 사용하여 확인해보면 2001:1:1:1::1로 보인다. 장비스스로가 주소의 생략 가능한 파트를 생략한 후 화면에 표시한 것이다.

인터페이스에 글로벌(혹은 사이트로컬)주소를 부여하면 자동으로 링크로컬주소까지 부여가 된다.

2001:1:1:1:0:0:0:1과 같이 연속되는 0을 가진 주소들은 우리가 직접 주소를 생략한 후 인터페이스에 부여할 수 있다.(예제2.2.2)

예제 2.2.3 인터페이스에 글로벌주소부여하기-2

 

R1#conf t

R1(config)#int s0

R1(config-if)#ipv6 address 3ffe:1:1:1::1234:5678/64

R1(config-if)#^Z

 

이번에는 사이트로컬주소를 인터페이스에 부여해보자.(예제2.2.2)

예제 2.2.4 인터페이스에 사이트로컬주소부여하기

 

R1#conf t

R1(config)#int s0

R1(config-if)#ipv6 address fec0:1:1:1::2/64

R1(config-if)#^Z

 

수동으로 부여하는 링크로컬주소

앞서 언급했듯이 인터페이스에 글로벌(혹은 사이트로컬)주소를 부여하면 자동으로 링크로컬주소까지 부여가 되지만, 관리의 편의성을 위해 링크로컬주소를 직접 부여할 수도 있다.(예제2.1.1)

예제 2.2.5 인터페이스에 링크로컬주소를 직접부여하기

 

R1#conf t

R1(config)#int s0

R1(config-if)#ipv6 address fe80::3 ?

link-local Use link-local address

 

R1(config-if)#ipv6 address fe80::3 link-local

R1(config-if)#^Z

 

링크로컬주소를 부여할 때는 반드시 주소 뒤에 /네트워크비트대신 link-local이라는 옵션을 추가로 입력해야한다. 또한 링크로컬주소의 범위인 FE80~FEBF가 아닌, 다른 범위의 주소를 입력하게 되면 에러메시지가 뜨면서 인터페이스에 부여되지 않는다.(예제2.2.2)

예제 2.2.5 잘못된 링크로컬주소부여의 예

 

R1#conf t

R1(config)#int s0

R1(config-if)#ipv6 address fec0::1 link-local

% Invalid link-local address

 

R1(config-if)#

 

또한 앞서 배웠듯이 링크로컬주소는 글로벌(혹은 사이트로컬)주소와 달리 한 인터페이스에 오직 하나의 주소만을 부여할 수가 있다.

전체인터페이스의 IPv6주소부여상태 확인

show ipv6 interface [인터페이스번호]명령어로는 특정인터페이스에 부여된 IPv6주소 및 관련 상세정보들을 확인할 수 있지만 show ipv6 interface brief명령어로는 모든 인터페이스에 부여되어있는 IPv6주소정보와 인터페이스활성화여부 등의 전반적인 상태를 확인할 수가 있다.(예제4.1.13)

예제 4.1.13 전체인터페이스의 IPv6주소부여상태 확인

 

R1#show ipv6 interface brief

Ethernet0 [up/up]

FE80::20F:24FF:FE00:7320

2001:1:1:0:20F:24FF:FE00:7320

2001:1:1:12::1

Serial0 [up/up]

unassigned

Serial0.12 [deleted/down]

unassigned

Serial0.123 [up/up]

FE80::1

FEC0:1:1:123::1

 

IPv6스태틱루트설정

앞서 주소부여나 DLCI매핑실습과정을 통해 짐작할 수 있듯이 새롭게 추가된 기능을 제외하고는 IPv6에서의 명령어들이 IPv4에서와 크게 달라진 점은 없다. 이번에 배울 스태틱루트의 설정방법 또한 마찬가지이다.

스태틱루트설정방법

그림 4.2.1 스태틱루트설정을 위한 토폴로지

  7(1).bmp

 

위 토폴로지 상에서 R1과 R3간에 IPv6통신이 이루어질 수 있도록 스태틱루트를 직접 설정해보도록 하자. 먼저 기본주소를 부여한다.(예제4.2.1)

예제 4.2.1 R1,R2,R3의 기본주소부여와 매핑

 

R1#conf t

R1(config)#int s0.12 multipoint

R1(config-subif)#ipv6 address fec0:1:1:12::1/64

R1(config-subif)#ipv6 address fe80::1 link-local

R1(config-subif)#frame-relay map ipv6 fec0:1:1:12::2 102 bro

R1(config-subif)#frame-relay map ipv6 fe80::2 102 broadcast

R1(config-subif)#^Z

 

R2#conf t

R2(config)#no interface s0.123

R2(config)#int s0.12 multipoint

R2(config-subif)#ipv6 address fec0:1:1:12::2/64

R2(config-subif)#ipv6 address fe80::2 link-local

R2(config-subif)#frame-relay map ipv6 fec0:1:1:12::1 201

R2(config-subif)#frame-relay map ipv6 fe80::1 201 broadcast

R2(config-subif)#int s0.23 point-to-point

R2(config-subif)#ipv6 address fec0:1:1:23::2/64

R2(config-subif)#ipv6 address fe80::2 link-local

R2(config-subif)#frame-relay interface-dlci 203

R2(config-fr-dlci)#^Z

 

R3#conf t

R3(config)#no interface s0.123

R3(config)#int s0.23 point-to-point

R3(config-subif)#ipv6 address fec0:1:1:23::3/64

R3(config-subif)#ipv6 address fe80::3 link-local

R3(config-subif)#frame-relay interface-dlci 302

R3(config-fr-dlci)#^Z

 

핑으로 각 인터페이스의 통신을 확인한 후에 이상이 없으면 스태틱루트를 설정하도록 한다.(예제10.1.2)

예제 4.2.2 직접 연결된 인터페이스간의 통신 확인

 

①R1#ping fec0:1:1:12::2

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to FEC0:1:1:12::2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 56/56/60 ms

 

②R2#ping fe80::3

Output Interface: serial0.23

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to FE80::3, timeout is 2 seconds:

Packet sent with a source address of FE80::2

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 56/61/72 ms

 

IPv6에서 일반적인사용법은 IPv4에서와 별다른 차이점이 없지만 링크로컬주소로 을 시도할 경우는 패킷을 전송할 출구인터페이스를 지정하라는 메시지(output interface:)가 뜬다. 즉, 링크로컬주소로 을 시도할 때는 목적지장비와 연결된 자신의 출구인터페이스를 추가적으로 지정해주어야 한다는 것이다. 예를 들어 위 그림4.1.1상의 R2처럼 여러 링크와 연결된 장비에서의 경우 패킷의 목적지주소인 FE80::3을 사용하고 있는 장비가 각 링크별로 하나씩 존재할 수 있으므로(링크로컬주소는 링크 내에서만 유일한 주소이기 때문에) 목적지장비와 연결된 자신의 출구인터페이스를 지정해주지 않으면 실제통신을 하고자하는 목적지장비가 어떤 링크에 존재하는 장비인지 명확하지 않기 때문에 패킷을 전송할 수 없게 된다.(그림4.2.2)

그림 4.2.2 링크로컬주소를 목적지로 핑통신을 할 때 출구인터페이스를 지정해주어야 하는 이유

  8.bmp

 

이제 R1과 R3간의 IPv6통신을 위해 스태틱루트를 설정해보자.(예제4.2.3)

예제 4.2.3 R1에서의 스태틱루트설정

 

R1#conf t

①R1(config)#ipv6 unicast-routing

R1(config)#ipv6 route ?

X:X:X:X::X/<0-128> IPv6 prefix x:x::y/<z>

 

②R1(config)#ipv6 route fec0:1:1:23::/64 ?

(생략)

Ethernet Ethernet IEEE 802.3

Serial Serial

X:X:X:X::X IPv6 address of next-hop

 

③R1(config)#ipv6 route fec0:1:1:23::/64 s0.12 ?

<1-254> Administrative distance

X:X:X:X::X IPv6 address of next-hop

(생략)

 

④R1(config)#ipv6 route fec0:1:1:23::/64 s0.12 fe80::2 ?

⑤ <1-254> Administrative distance

⑥ multicast Route only usable by multicast

tag Tag value

unicast Route only usable by unicast

<cr>

 

R1(config)#ipv6 route fec0:1:1:23::/64 s0.12 fe80::2

R1(config)#^Z

 

라우터가 IPv6패킷을 라우팅시키기 위해서는 반드시 ipv6 unicast-routing명령어를 먼저 설정해주어야 한다. 그렇지 않으면 IPv6라우팅과 관련된 명령어들이 입력되지 않거나 혹은 입력되더라도 동작되지 않는다. 라우터에 IPv6라우팅관련설정을 할 때는 가장먼저 ipv6 unicast-routing명령어를 설정해줄 수 있도록 하자.

앞서 언급했듯이 IPv6스태틱루트의 기본적인 틀은 IPv4에서와 별반 차이가 없다. ipv6 route명령어 뒤에 목적지네트워크인 R3의 네트워크를 지정한다.

다음으로 R3의 네트워크로 가기위한 넥스트 홉 주소를 지정하거나 혹은 넥스트 홉 장비로 가기위한 자신의 출구인터페이스를 지정한다. 참고로 IPv4에서의 스태틱루트설정시에는 지정한 출구인터페이스의 타입이 이더넷인터페이스와 같은 브로드캐스트일 경우, 넥스트 홉 주소를 지정하지 않고 자신의 출구인터페이스만 지정해주더라도 ARP를 통해 라우팅이 가능하였으나 IPv6에서는 그러한 기능이 없어졌다. 즉, IPv6에서는 브로드캐스트에 의한 프록시ARP(proxyARP)와 같은 기능이 없다는 말이다. 그러므로 IPv6에서 인터페이스의 타입이 포인트-투-포인트인 경우나 목적지네트워크가 자신과 직접 연결(connected)되어있는 경우, 혹은 디폴트게이트웨이정보가 존재하는 경우를 제외하고는 스태틱루트설정시 반드시 자신의 출구인터페이스가 아닌 넥스트 홉 주소를 지정해주어야 한다.

위와 같이 IPv6스태틱루트설정시 넥스트 홉 주소를 지정할 때는 대부분의 경우(특히 이더넷 환경에서의 경우) 링크로컬주소를 지정하는 것이 좋다. 링크로컬주소를 넥스트 홉 주소로 사용하면 글로벌(혹은 사이트로컬)주소의 주소변경시에도 링크로컬주소는 그대로 유지되기 때문에 그만큼 주소변경이후 수반되는 기존설정의 변경 사항들을 최소화시킬 수 있고, 또한 주소변경중에도 라우팅프로토콜통신이 끊길 염려가 없기 때문이다.(이러한 링크로컬주소의 장점들은 2장;IPv6주소체계-IPv6주소의 종류파트에서 이미 살펴보았다.) 특히 스태틱루트의 넥스트 홉 주소가 링크로컬주소가 아니라면 앞서 배운 ICMPv6의 리다이렉트기능이 동작되지 않는다.(링크로컬주소를 타겟주소-target address로 사용하기 때문이다.) 대부분의 IPv6라우팅프로토콜들이 링크로컬주소를 사용하여 정보를 교환하는 것도 바로 이와 같은 이유들 때문이다. 그런데 이렇게 링크로컬주소를 스태틱루트의 넥스트 홉 주소로 지정할 경우는 앞서의 그림4.2.2에서와 동일한 이유(목적지장비와 연결된 출구인터페이스의 불명확성)로, 넥스트 홉 장비와 연결된 자신의 출구인터페이스를 함께 지정해주어야 한다.

IPv4에서와 마찬가지로 스태틱루트 뒤에는 디스턴스 값 등의 옵션을 추가로 설정할 수 있다. 참고로 IPv6스태틱루트의 기본 디스턴스 값은 1이다.

스태틱루트 뒤에 multicast unicast옵션을 사용하여 해당스태틱루트의 용도를 지정할 수도 있다. multicast옵션을 추가로 설정할 경우 해당스태틱루트는 멀티캐스트라우팅에서만 사용될 수 있고(RPF체크용도-IPv4에서 ip mroute명령어와 동일한 역할), unicast옵션을 추가로 설정할 경우 유니캐스트라우팅에서만 사용될 수 있다. 아무런 옵션도 설정하지 않으면 해당스태틱루트는 멀티캐스트와 유니캐스트라우팅 모두에서 사용될 수 있다.

R3에서도 R1과 마찬가지로 스태틱루트를 설정해준다.(예제4.2.4)

예제 4.2.4 R3에서의 스태틱루트설정

 

R3#conf t

R3(config)#ipv6 unicast-routing

R3(config)#ipv6 route fec0:1:1:12::/64 s0.23

R3(config)#^Z

 

설정을 마친 후 show ipv6 route명령어를 사용하여 R1과 R3의 라우팅테이블을 확인해보면 서로의 네트워크를 목적지로 하는 스태틱루트가 존재하는 것을 알 수 있다.(예제4.2.5)

예제 4.2.5 R1,R3의 라우팅테이블 확인

 

R1#show ipv6 route

IPv6 Routing Table - 5 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

U - Per-user Static route

I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary

O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2

ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2

(생략)

S FEC0:1:1:23::/64 [1/0]

via FE80::2, Serial0.12

L FF00::/8 [0/0]

via ::, Null0

 

R3#show ipv6 route

IPv6 Routing Table - 5 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

U - Per-user Static route

I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary

O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2

ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2

(생략)

S FEC0:1:1:12::/64 [1/0]

via ::, Serial0.23

L FF00::/8 [0/0]

via ::, Null0

 

이제 R1에서 R3으로 을 시도해보자.(예제4.2.6)

예제 4.2.6 R3과의 통신 확인

 

R1#ping fec0:1:1:23::3

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to FEC0:1:1:23::3, timeout is 2 seconds:

.....

Success rate is 0 percent (0/5)

 

위의예제에서 보듯이 R1과 R3간에 통신이 이루어지지 않고 있다. 그 이유는 중간라우터인 R2에서 ipv6 unicast-routing명령어를 설정하지 않아, R1로부터 받은 패킷을 R2가 라우팅시키지 못하고 있기 때문이다. R2에서 debug ipv6 packet명령어를 설정한 후 다시 R1에서 R3으로 을 해보자.(예제4.2.7)

예제 4.2.7 R2가 핑패킷을 라우팅시키지 못하는 이유

 

R2#debug ipv6 packet

IPv6 unicast packet debugging is on

 

R1#ping fec0:1:1:23::3

 

R2#

Dec 1 00:40:16.867: IPV6: source FEC0:1:1:12::1 (Serial0.12)

Dec 1 00:40:16.867: dest FEC0:1:1:23::3 (Serial0.23)

①Dec 1 00:40:16.871: traffic class 0, flow 0x0, len 100+4, prot 58, hops 64, not a router?

(생략)

 

R2에서 디버깅을 해보면 자신은 R1로부터 받은 IPv6패킷을 라우팅시킬 수 있는 라우터가 아니라는 메시지(not a router?)를 출력하는 것을 알 수 있다.

R2가 R1(혹은 R3)로부터 받은 IPv6패킷을 라우팅시키기 위해서는 반드시 ipv6 unicast-routing명령어를 설정해주어야 한다.(예제4.1.1)

예제 4.2.7 R2에서의 ipv6 unicast-routing명령어 설정

 

R2#conf t

R2(config)#ipv6 unicast-routing

R2(config)#^Z

 

설정을 마친 후 다시 R1에서 R3으로 핑을 하면 이제 정상적으로 통신이 이루어진다.(예제4.1.1)

예제 4.2.6 R3과의 통신 확인

 

R1#ping fec0:1:1:23::3

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to FEC0:1:1:23::3, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 140/140/140 ms

 

RIPng개요

IPv4에서의 RIP(routeinformationprotocol)이 IPv6네트워크 환경에 맞게 그 기능이 개선되고 발전된 것이 바로 RIPng(RIPnextgeneration)이다.

IPv6에서의 RIP

우선 RIP이 IPv6로 도입되며 변화된 주요특징들을 간략히 정리해보도록 하자.

링크별 네트워크지정

IPv4에서는 루트정보를 RIP 프로세스(process)에 포함시킬 때 메이져네트워크 단위로만 포함시킬 수 있었지만 IPv6에서는 IS-IS와 유사하게 링크단위로 루트정보를 RIPng 프로세스에 포함시키게 된다. 이로 인해 특정라우터에서 메이져네트워크가 동일한 링크들은 모두 RIP 프로세스에 포함되어야하는 불편함이 사라져, 라우팅정책이 좀더 유동적일 수 있게 되었다.(그림5.1.1)

그림 5.1.1 RIPng에서의 링크별 네트워크지정

   9(1).bmp

 

업데이트전송시 링크로컬주소를 출발지주소로 사용

IPv6에서는 BGP를 제외한 모든 라우팅프로토콜들이 업데이트전송시 자신의 링크로컬주소를 출발지주소(IS-IS에서는 업데이트정보의 넥스트 홉 주소)로 사용한다.(BGP는 링크로컬주소를 사용할 수도 있고 사용하지 않을 수도 있다.) 이러한 점은 RIPng에서 또한 마찬가지이다. 이렇게 라우팅프로토콜들이 업데이트교환시 링크로컬주소를 출발지주소(혹은 출발지주소와 목적지주소)로 사용하는 이유에 대해서는 앞서 2장;IPv6주소체계-IPv6주소의 종류파트에서 이미 자세히 살펴보았다.

업데이트전송시 FF02::9를 목적지주소로 사용

IPv6의 RIPng에서는 업데이트전송시 멀티캐스트주소인 FF02::9를 목적지주소로 사용한다. 참고로 IPv4의 RIP버전1에서는 업데이트전송시 브로드캐스트주소인 255.255.255.255를 목적지주소로 사용하였고, RIP버전2에서는 업데이트전송시(기본적으로는)멀티캐스트주소인 224.0.0.9를 목적지주소로 사용하였었다.

업데이트전송시 사용하는 UDP포트번호가 521번으로 변화

IPv4의 RIP에서는 업데이트정보를 UDP포트번호520번을 사용하여 주고받았으나 IPv6의 RIPng에서는 UDP포트번호521번을 사용하여 업데이트정보를 주고받는다.

프로세스ID(processID)지정

RIPng에서는 OSPF의 프로세스ID와 유사한 RIPng 프로세스ID를 정의해놓음으로써 동일라우터에 여러 개의 RIPng 프로세스를 동작시킬 수 있게 되었다. 이러한 점은 앞서 링크별로 프로세스에 포함시키는 RIPng의 특징과 더불어 라우팅정책이 좀더 유동적일 수 있게 해주는 역할을 한다.(그림5.1.2)

그림 5.1.2 여러 개의 RIPng 프로세스ID지정

  10.bmp

 

참고로 RIPng에서는 동일라우터에 최대 4까지의 서로 다른 프로세스ID를 지정할 수 있으며, 이들은 서로 별개의 라우팅프로토콜로 동작된다.

라우팅루프방지기술관련 동작의 변화

RIP에는 라우팅루프방지를 위한 여러 기술들이 존재한다. 대표적으로 스플릿호라이즌(split horizon)과 루트포이즈닝(route poisoning), 포이즌리버스(poison reverse), 홀드다운(holddown)기능 등이 있는데 이러한 기능들은 RIPng에서도 그대로 사용된다. 하지만 RIPng에서는 모든 인터페이스타입에서 기본적으로 스플릿호라이즌이 활성화되며, 포이즌리버스와 홀드다운타이머는 동작되지 않는 등, RIP에서의 동작과 약간의 차이점이 있다. 이와 관련된 내용은 잠시 뒤에 자세히 살펴볼 것이다.

RIPng의 기본동작

이제 직접 설정을 해봄으로써 위와 같은 RIPng의 특징들에 대해 보다 자세히 알아볼 수 있도록 하자.

RIPng기본구성

아래 그림5.1.3의 토폴로지를 바탕으로 기본적인 RIPng네트워크를 직접 구성해보자.

그림 5.1.3 RIPng구성을 위한 토폴로지

  11.bmp

 

먼저 기본주소를 부여한다.(예제5.1.1)

예제 5.1.1 R1,R2,R3의 기본주소부여와 매핑

 

R1#conf t

R1(config)#ipv6 unicast-routing

R1(config)#int s0.12 multipoint

R1(config-subif)#ipv6 address 2001:1:1:12::1/64

R1(config-subif)#ipv6 address fe80::1 link-local

R1(config-subif)#frame-relay map ipv6 2001:1:1:12::2 102

①R1(config-subif)#frame-relay map ipv6 fe80::2 102 broadcast

R1(config-subif)#int loopback 0

R1(config-if)#ipv6 address 2001:1:1:1::1/64

R1(config-if)#^Z

 

R2#conf t

R2(config)#ipv6 unicast-routing

R2(config)#int s0.12 multipoint

R2(config-subif)#ipv6 address 2001:1:1:12::2/64

R2(config-subif)#ipv6 address fe80::2 link-local

R2(config-subif)#frame-relay map ipv6 2001:1:1:12::1 201

①R2(config-subif)#frame-relay map ipv6 fe80::1 201 broadcast

R2(config-subif)#int s0.23 point-to-point

R2(config-subif)#ipv6 address 2001:1:1:23::2/64

R2(config-subif)#ipv6 address fe80::2 link-local

R2(config-subif)#frame-relay interface-dlci 203

R2(config-fr-dlci)#int loopback 0

R2(config-if)#ipv6 address 2001:1:1:2::2/64

R2(config-if)#^Z

 

R3#conf t

R3(config)#ipv6 unicast-routing

R3(config)#int s0.23 point-to-point

R3(config-subif)#ipv6 address 2001:1:1:23::3/64

R3(config-subif)#ipv6 address fe80::3 link-local

R3(config-subif)#frame-relay interface-dlci 302

R3(config-fr-dlci)#int loopback 0

R3(config-if)#ipv6 address 2001:1:1:3::3/64

R3(config-if)#^Z

 

앞서 언급했듯이 BGP를 제외한 모든 라우팅프로토콜들은 업데이트교환시 링크로컬주소를 사용하므로 반드시 상대방의 링크로컬주소에 대한 DLCI매핑도 함께해주어야 한다. 또한 링크로컬주소에 대한 DLCI매핑시에는 마지막에 broadcast옵션을 추가로 설정하여, 멀티캐스트주소를 사용하는 RIPng업데이트정보가 프레임릴레이구간을 통해 전송될 수 있도록 해주어야한다.

핑으로 각 인터페이스의 통신을 확인한 후 이상이 없으면 RIPng를 구성하도록 한다.(예제5.1.2)

예제 5.1.2 R1에서의 RIPng설정

 

R1#conf t

R1(config)#int s0.12

R1(config-subif)#ipv6 rip ?

WORD User selected string identifying this RIP process

 

①R1(config-subif)#ipv6 rip NEVER ?

default-information Configure handling of default route

enable Enable/disable RIP routing

metric-offset Adjust default metric increment

summary-address Configure address summarization

 

②R1(config-subif)#ipv6 rip NEVER enable

③R1(config-subif)#int lo0

R1(config-if)#ipv6 rip NEVER enable

R1(config-if)#^Z

 

먼저 RIPng 프로세스에 포함시킬 인터페이스의 설정모드로 들어가서 ipv6 rip명령어 뒤에 임의의 프로세스ID를 지정해준다. 앞서 배웠듯이 동일라우터에는 최대4까지의 서로 다른 RIPng 프로세스ID를 지정할 수 있으며, 이들은 서로 별개의 라우팅프로토콜로 동작된다. 이번예제에서는 NEVER라는 프로세스ID를 지정해보았다.

ipv6 rip [프로세스ID]명령어 뒤에는 여러 옵션들을 설정할 수가 있다. 이중에서 enable옵션이 바로 해당인터페이스의 IPv6주소정보를 RIPng 프로세스에 포함시키도록 하는 즉, 해당인터페이스에 RIPng를 활성화시키도록 하는 옵션이다.

R1의 룹백 인터페이스정보도 RIPng 프로세스에 포함시켜주도록 한다.

이제 R1에서의 RIPng기본구성은 모두 끝이 났다. RIPng의 기본구성방법 또한 IPv4에서의 RIP기본구성방법과 마찬가지로 매우간단하다는 것을 알 수 있다.

R2와 R3에서도 R1과 마찬가지로 RIPng를 구성해보자.(예제5.1.3)

예제 5.1.3 R2,R3에서의 RIPng설정

 

R2#conf t

R2(config)#int s0.12

①R2(config-subif)#ipv6 rip STOP enable

R2(config-subif)#int s0.23

①R2(config-subif)#ipv6 rip STOP enable

R2(config-subif)#int lo0

R2(config-if)#ipv6 rip STOP enable

R2(config-if)#^Z

 

R3#conf t

R3(config)#int s0.23

①R3(config-subif)#ipv6 rip NEVERSTOP enable

R3(config-subif)#int lo0

R3(config-if)#ipv6 rip NEVERSTOP enable

R3(config-if)#^Z

 

RIPng에서는 업데이트를 주고받는 라우터 간에 서로 다른 RIPng 프로세스ID를 사용해도 상관이 없다. 각각의 라우터들은 상대방에게서 오는 패킷이 단순히 RIPng업데이트정보인지만을 구분한다. 그러나 라우터내부에서는 다른 RIPng 프로세스ID를 별개의 라우팅프로토콜로 인식한다. 즉, RIPng 프로세스ID는 오직 장비 내에서만 의미가 있다는 것이다. 이번예제에서는 R2에 STOP이라는 RIPng 프로세스ID를 지정했고, R3에 NEVERSTOP이라는 RIPng 프로세스ID를 지정해보았다.

라우팅테이블의 RIPng정보 확인

설정을 마친 후 R1의 라우팅테이블을 확인해보면 R2로부터 RIPng업데이트정보를 받았음을 알 수 있다.(예제5.1.4)

예제 5.1.4 R1의 라우팅테이블 확인

 

R1#show ipv6 route rip

IPv6 Routing Table - 9 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

U - Per-user Static route

I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary

O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2

ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2

①R 2001:1:1:2::/64 [②120/③2]

via ④FE80::2, Serial0.12

R 2001:1:1:3::/64 [120/3]

via FE80::2, Serial0.12

R 2001:1:1:23::/64 [120/2]

via FE80::2, Serial0.12

 

RIPng를 통해 받은 루트정보의 앞에는 R(RIP)표시가 되어있다.

RIPng를 통해 받은 루트정보의 디스턴스 값은 RIP에서와 마찬가지로 120이다.

RIPng의 메트릭 값 단위 역시 RIP에서와 마찬가지로 홉 카운트이다. 그런데 위의예제에서 R1이 받은 R2의 룹백 인터페이스정보의 메트릭 값이 2임을 알 수 있다. 즉, RIPng에서는 RIP에서와 달리 자신의 인터페이스정보를 다른 라우터들에게 전송할 때 기본적으로 메트릭 값 1을 추가하여 전송하고, 해당정보를 받은 라우터가 자신의 데이터베이스(database)에 저장할 때 다시 메트릭 값 1을 추가하게 된다.(RIP에서는 다른 라우터로부터 받은 루트정보를 자신의 데이터베이스에 저장할 때 메트릭 값을 추가하지 않는다.-단, 해당정보를 또 다른 라우터로 전송할 때는 메트릭 값을 추가시켜 전송한다.) 메트릭 값 증가과정과 관련된 내용은 잠시 뒤에 다시 살펴보도록 하겠다. 참고로 RIPng에서의 최대 메트릭 값 즉, 최대 홉 한계 수는 RIP에서와 마찬가지로 16이다.

업데이트정보를 라우팅테이블에 올릴 때 넥스트 홉 주소는 업데이트패킷의 출발지주소를 사용한다. 이번예제에서는 R2의 링크로컬주소인 FE80::2가 R1이 받은 업데이트패킷의 출발지주소가 되겠다.

R2와 R3의 라우팅테이블도 확인해보자.(예제5.1.1)

예제 5.1.4 R2와 R3의 라우팅테이블 확인

 

R2#show ipv6 route rip

IPv6 Routing Table - 10 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

U - Per-user Static route

I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary

O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2

ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2

R 2001:1:1:1::/64 [120/2]

via FE80::1, Serial0.12

R 2001:1:1:3::/64 [120/2]

via FE80::3, Serial0.23

 

R3#show ipv6 route rip

IPv6 Routing Table - 9 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

U - Per-user Static route

I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary

O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2

ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2

R 2001:1:1:1::/64 [120/3]

via FE80::2, Serial0.23

R 2001:1:1:2::/64 [120/2]

via FE80::2, Serial0.23

R 2001:1:1:12::/64 [120/2]

via FE80::2, Serial0.23

 

이제 R1에서 R3의 룹백 인터페이스로 핑을 해보면 성공한다.(예제5.1.5)

예제 5.1.5 R3과의 통신 확인

 

R1#ping 2001:1:1:3::3

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2001:1:1:3::3, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 100/103/104 ms

 

파셜메쉬구간에서의 RIPng기본구성

이번에는 아래 그림5.3.2의 토폴로지를 바탕으로 파셜메쉬구간에서의 기본적인 RIPng네트워크를 구성해보자. 파셜메쉬구간에서의 RIP구성시 주의사항은 RIPng에서도 여전히 적용된다.

그림 5.3.2 파셜메쉬구간에서의 RIPng구성을 위한 토폴로지

  12.bmp

 

먼저 기본주소를 부여한다.(예제5.3.1)

예제 5.3.1 R1,R2,R3의 기본주소부여와 매핑

 

R1#conf t

R1(config)#ipv6 unicast-routing

R1(config)#int s0.123 multipoint

R1(config-subif)#ipv6 address 2001:1:1:123::1/64

R1(config-subif)#ipv6 address fe80::1 link-local

R1(config-subif)#frame-relay map ipv6 2001:1:1:123::2 102

①R1(config-subif)#frame-relay map ipv6 fe80::2 102 broadcast

R1(config-subif)#frame-relay map ipv6 2001:1:1:123::3 103

①R1(config-subif)#frame-relay map ipv6 fe80::3 103 broadcast

R1(config-subif)#int loopback 0

R1(config-if)#ipv6 address 2001:1:1:1::1/64

R1(config-if)#^Z

 

R2#conf t

R2(config)#ipv6 unicast-routing

R2(config)#int s0.123 multipoint

R2(config-subif)#ipv6 address 2001:1:1:123::2/64

R2(config-subif)#ipv6 address fe80::2 link-local

R2(config-subif)#frame-relay map ipv6 2001:1:1:123::1 201

②R2(config-subif)#frame-relay map ipv6 fe80::1 201 broadcast

R2(config-subif)#frame-relay map ipv6 2001:1:1:123::3 201

R2(config-subif)#frame-relay map ipv6 fe80::3 201

R2(config-subif)#int loopback 0

R2(config-if)#ipv6 address 2001:1:1:2::2/64

R2(config-if)#^Z

 

R3#conf t

R3(config)#ipv6 unicast-routing

R3(config)#int s0.123 multipoint

R3(config-subif)#ipv6 address 2001:1:1:123::3/64

R3(config-subif)#ipv6 address fe80::3 link-local

R3(config-subif)#frame-relay map ipv6 2001:1:1:123::1 301

②R3(config-subif)#frame-relay map ipv6 fe80::1 301 broadcast

R3(config-subif)#frame-relay map ipv6 2001:1:1:123::2 301

R3(config-subif)#frame-relay map ipv6 fe80::2 301

R3(config-subif)#int loopback 0

R3(config-if)#ipv6 address 2001:1:1:3::3/64

R3(config-if)#^Z

 

R1은 R2, R3과 RIPng정보를 주고받으므로 이들의 링크로컬주소에 대한 매핑시 broadcast옵션을 추가로 설정해주도록 한다.

R2와 R3은 R1과 RIPng정보를 주고받으므로 R1의 링크로컬주소에 대한 매핑시에만 broadcast옵션을 추가로 설정해주면 된다.

핑으로 각 인터페이스의 통신을 확인한 후 이상이 없으면 RIPng를 구성하도록 한다.(예제5.3.2)

예제 5.3.2 R1에서의 RIPng설정

 

R1#conf t

①R1(config)#int s0.123

R1(config-subif)#ipv6 rip NEVERSTOP enable

R1(config-subif)#int lo0

R1(config-if)#ipv6 rip NEVERSTOP enable

R1(config-if)#ipv6 router rip NEVERSTOP

②R1(config-rtr)#no split-horizon

R1(config-rtr)#^Z

 

인터페이스에 RIPng를 활성화시켜준다.

앞서 배웠듯이 RIPng에서는 기본적으로 스플릿호라이즌기능이 활성화되어있으므로, R2의 경우(파셜메쉬구간에서 하나의 인터페이스를 통해 여러 라우터들과 RIPng통신을 하는 장비의 경우) 스플릿호라이즌기능을 비활성화시켜주어야 한다. 참고로 이때 네트워크의 안정성을 위해서 홀드다운타이머를 0이상의 값으로 조정해줄 수도 있겠다.(홀드다운타이머의 기본 값은 0이다.)

R2와 R3에서도 R1과 마찬가지로 RIPng를 구성해주도록 한다.(예제5.3.3)

예제 5.3.3 R2,R3에서의 RIPng설정

 

R2#conf t

R2(config)#int s0.123

R2(config-subif)#ipv6 rip NEVERSTOP enable

R2(config-subif)#int lo0

R2(config-if)#ipv6 rip NEVERSTOP enable

R2(config-if)#^Z

 

R3#conf t

R3(config)#int s0.123

R3(config-subif)#ipv6 rip NEVERSTOP enable

R3(config-subif)#int lo0

R3(config-if)#ipv6 rip NEVERSTOP enable

R3(config-if)#^Z

 

설정을 마친 후 각 라우터들의 라우팅테이블을 확인해보면 다른 라우터들의 룹백 인터페이스정보가 존재하는 것을 알 수 있다.(예제5.1.4)

예제 5.1.4 R2와 R3의 라우팅테이블 확인

 

R2#show ipv6 route rip

IPv6 Routing Table - 8 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

U - Per-user Static route

I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary

O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2

ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2

R 2001:1:1:1::/64 [120/2]

via FE80::1, Serial0.123

R 2001:1:1:3::/64 [120/3]

via FE80::1, Serial0.123

 

R3#show ipv6 route rip

IPv6 Routing Table - 8 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

U - Per-user Static route

I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary

O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2

ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2

R 2001:1:1:1::/64 [120/2]

via FE80::1, Serial0.123

R 2001:1:1:2::/64 [120/3]

via FE80::1, Serial0.123

 

OSPFv3개요

IPv4에서의 OSPFv2(openshortestpathfirstversion2)가 IPv6네트워크 환경에 맞게 그 기능이 개선되고 발전된 것이 바로 OSPFv3이다.

IPv6에서의 OSPF

우선 OSPF가 IPv6로 도입되며 변화된 주요특징들을 간략히 정리해보도록 하자.

링크별 네트워크지정

OSPF에서는 IPv4루트정보를 OSPF 프로세스에 포함시킬 때 network명령어를 사용하여 네트워크단위로 포함을 시켰다.(예제6.1.1)

예제 6.1.1 OSPF에서의 네트워크지정 방법

 

R1#conf t

R1(config)#router ospf 1

R1(config-router)#network 1.1.12.1 0.0.0.0 area 0

 

하지만 OSPFv3에서는 RIPng와 동일하게 링크단위로 IPv6루트정보를 OSPFv3 프로세스에 포함시키게 된다.(예제6.1.2)

예제 6.1.2 OSPFv3에서의 네트워크지정 방법

 

R1#conf t

R1(config)#int s0.12

R1(config-subif)#ipv6 ospf 1 area 0

 

헬로패킷 및 LSA정보전송시 링크로컬주소를 출발지주소로 사용

IPv6에서는 BGP를 제외한 모든 라우팅프로토콜들이 업데이트전송시 자신의 링크로컬주소를 출발지주소로 사용한다. 이러한 점은 OSPFv3에서 또한 마찬가지로, 헬로패킷 및 LSA(linkstateadvertisement)정보전송시 링크로컬주소를 출발지주소로 사용한다.

헬로패킷전송시 FF02::5를 목적지주소로 사용

OSPFv3에서는 헬로패킷전송시 멀티캐스트주소인 FF02::5(혹은 FF02::6)를 목적지주소로 사용한다.(LSA정보전송시에는 네이버의 링크로컬주소를 목적지주소로 사용한다.) 참고로 OSPF에서는 헬로패킷전송시 멀티캐스트주소인 224.0.0.5(혹은 224.0.0.6)를 목적지주소로 사용하였다.

LSA타입의 변화

OSPF에서는 네트워크상의 루트정보들을 LSA정보로 요약하여 네이버에게 전달하였다. 이것은 OSPFv3에서도 마찬가지로, LSA정보와 관련된 기본동작은 유사하지만 대신LSA타입의 종류가 늘어나고 각 타입별로 포함하는 정보들 또한 변경이 되었다. 이러한 LSA타입과 관련된 내용은 잠시 뒤에 자세히 살펴볼 것이다.

인증필드의 삭제

OSPFv3헤더에는 기존에 존재했던 인증(authentication)필드가 삭제되었다. 하지만 그렇다고 OSPFv3에서 인증기능이 사라진 것은 아니다. OSPFv3헤더에서 인증필드가 삭제된 대신, IPv6헤더의 인증필드를 사용하여 네이버 혹은 에어리어(area)간에 인증을 수행하게 된다.

OSPFv3의 기본동작

이제 직접 설정을 해봄으로써 위와 같은 OSPFv3의 특징들에 대해 보다 자세히 알아볼 수 있도록 하자.

OSPFv3기본구성

아래 그림6.1.1의 토폴로지를 바탕으로 기본적인 OSPFv3네트워크를 직접 구성해보자.

그림 6.1.1 OSPFv3구성을 위한 토폴로지

   13.bmp

 

먼저 기본주소를 부여한다.(예제6.1.3)

예제 6.1.3 R1,R2,R3의 기본주소부여와 매핑

 

R1#conf t

R1(config)#ipv6 unicast-routing

R1(config)#int s0.12 multipoint

R1(config-subif)#ipv6 address 2001:1:1:12::1/64

R1(config-subif)#ipv6 address fe80::1 link-local

R1(config-subif)#frame-relay map ipv6 2001:1:1:12::2 102

①R1(config-subif)#frame-relay map ipv6 fe80::2 102 broadcast

R1(config-subif)#int loopback 0

R1(config-if)#ipv6 address 2001:1:1:1::1/64

R1(config-if)#^Z

 

R2#conf t

R2(config)#ipv6 unicast-routing

R2(config)#int s0.12 multipoint

R2(config-subif)#ipv6 address 2001:1:1:12::2/64

R2(config-subif)#ipv6 address fe80::2 link-local

R2(config-subif)#frame-relay map ipv6 2001:1:1:12::1 201

①R2(config-subif)#frame-relay map ipv6 fe80::1 201 broadcast

R2(config-subif)#int s0.23 point-to-point

R2(config-subif)#ipv6 address 2001:1:1:23::2/64

R2(config-subif)#ipv6 address fe80::2 link-local

R2(config-subif)#frame-relay interface-dlci 203

R2(config-fr-dlci)#int loopback 0

R2(config-if)#ipv6 address 2001:1:1:2::2/64

R2(config-if)#^Z

 

R3#conf t

R3(config)#ipv6 unicast-routing

R3(config)#int s0.23 point-to-point

R3(config-subif)#ipv6 address 2001:1:1:23::3/64

R3(config-subif)#ipv6 address fe80::3 link-local

R3(config-subif)#frame-relay interface-dlci 302

R3(config-fr-dlci)#int loopback 0

R3(config-if)#ipv6 address 2001:1:1:3::3/64

R3(config-if)#^Z

 

OSPFv3에서는 헬로패킷과 LSA정보를 주고받을 때 링크로컬주소를 사용하므로 반드시 상대방의 링크로컬주소에 대한 DLCI매핑도 함께해주어야 한다. 또한 링크로컬주소에 대한 DLCI매핑시에는 마지막에 broadcast옵션을 추가로 설정하여, 멀티캐스트주소를 사용하는 OSPFv3 헬로패킷이 프레임릴레이구간을 통해 전송될 수 있도록 해주어야한다.

핑으로 각 인터페이스의 통신을 확인한 후 이상이 없으면 OSPFv3를 구성하도록 한다.(예제6.1.4)

예제 6.1.4 R1에서의 OSPFv3설정

 

R1#conf t

①R1(config)#ipv6 router ospf 1

R1(config-rtr)#

Jun 1 00:12:42.743: %OSPFv3-4-NORTRID: OSPFv3 process 1 could not pick a router-id,

please configure manually

 

②R1(config-rtr)#router-id 1.1.1.1

R1(config-rtr)#int s0.12

R1(config-subif)#ipv6 ospf ?

<1-65535> Process ID

authentication Enable authentication

cost Interface cost

(생략)

 

R1(config-subif)#ipv6 ospf 1 ?

area Set the OSPF area ID

 

③R1(config-subif)#ipv6 ospf 1 area 0 ?

④ instance Set the OSPF instance

<cr>

 

R1(config-subif)#ipv6 ospf 1 area 0

⑤R1(config-subif)#ipv6 ospf neighbor fe80::2

R1(config-subif)#int lo0

⑥R1(config-if)#ipv6 ospf 1 area 0

R1(config-if)#^Z

 

먼저 전체설정모드에서 ipv6 router ospf [프로세스ID]명령어를 사용하여 OSPFv3를 활성화시켜준다. 참고로 OSPFv3에서는 동일라우터에 최대 30개까지의 서로 다른 OSPFv3 프로세스를 활성화시킬 수 있으며, 이들은 서로 별개의 라우팅프로토콜로 동작된다.

OSPFv3를 활성화시켰을 때 해당라우터에 IPv4주소가 부여되어있지 않을 경우, 관리자가 수동으로 라우터ID를 지정해야한다는 에러메시지가 뜬다. 만약 라우터에 IPv4주소가 부여되어있을 경우에는 자동으로 IPv4주소(룹백 인터페이스의 IPv4주소들 중 가장 높은 주소, 룹백 인터페이스가 없을 경우 일반인터페이스의 IPv4주소들 중 가장 높은 주소)를 OSPFv3의 라우터ID로 사용하게 된다. 이를 통해 OSPFv3에서도 라우터ID는 IPv4주소형식을 사용한다는 것을 알 수 있다.(라우터에 IPv4주소가 부여되어있다고 하더라도 관리자가 직접 라우터ID를 지정해주는 것이 좋다.)

특정인터페이스의 IPv6주소정보를 OSPFv3 프로세스에 포함시키기 위해서는 즉, 해당인터페이스에 OSPFv3를 활성화시키기 위해서는 인터페이스설정모드에서 ipv6 ospf [프로세스ID] area [소속될 에어리어ID]명령어를 설정해준다.

ipv6 ospf [프로세스ID] area [소속될 에어리어ID]명령어 뒤의 instance옵션은 OSPFv3에서 새롭게 추가된 기능이다. OSPFv3 헬로패킷에 포함된 인스턴스ID(instanceID)가 서로 다를 경우 동일링크에 연결되어있는 OSPFv3라우터라고할지라도 서로 네이버를 맺지 않으며, 인스턴스ID가 동일해야만 네이버를 맺게 된다. 즉, 동일링크에 연결되어있는 OSPFv3라우터들이라고 할지라도 인스턴스ID를 다른 값으로 부여해줌으로써 어떤 라우터들과는 네이버를 맺고, 어떤 라우터들과는 네이버를 맺지 않도록 하는 것이 가능해진다는 말이다. 이러한 인스턴스ID로 인해 OSPFv3에서는 동일링크 상에 여러 개의 에어리어가 존재하는 것이 가능해진다.(단, 동일링크에 여러 개의 프로세스를 활성화시키는 것은 불가능하다.) OSPFv3라우터가 사용하는 기본 인스턴스ID값은 0이며, 설정을 통해 링크별로 255까지의 서로 다른 값을 부여할 수가 있다.

R1의 s0.12인터페이스는 OSPFv3네트워크타입이 NBMA(nonbraoadcastmultipleaccess)이므로 네이버의 링크로컬주소를 직접 지정해주어야 한다.(이때 주의할 점으로, OSPFv3통신에는 링크로컬주소가 사용되기 때문에 네이버지정시 반드시 상대방의 링크로컬주소를 지정해야한다는 것이다.) OSPFv3에서의 네이버지정은 해당네이버와 연결된 자신의 인터페이스설정모드에서 ipv6 ospf neighbor [네이버의 링크로컬주소]명령어를 사용하여 지정한다.(OSPF에서는 라우팅설정모드에서 네이버의 주소를 지정했었다.)

R1의 룹백 인터페이스정보 또한 OSPFv3 프로세스에 포함시켜주도록 한다.

참고로 인터페이스의 OSPFv3네트워크타입은 OSPF에서와 마찬가지로 설정을 통해 조정할 수 있다.(예제6.1.5)

예제 6.1.5 OSPFv3네트워크타입 조정

 

R1#conf t

R1(config)#int s0.12

R1(config-subif)#ipv6 ospf network ?

broadcast Specify OSPF broadcast multi-access network

non-broadcast Specify OSPF NBMA network

point-to-multipoint Specify OSPF point-to-multipoint network

point-to-point Specify OSPF point-to-point network

 

R1(config-subif)#ipv6 ospf network

 

OSPFv3에서의 네트워크타입은 조정방법 뿐만 아니라 동작 또한 OSPF에서와 동일하다.(DR과 BDR의 선출여부 및 헬로와 데드주기-dead interval관련동작) R2와 R3에서도 R1과 마찬가지로 OSPFv3를 구성해보자.(예제6.1.6)

예제 6.1.6 R2,R3에서의 OSPFv3설정

 

R2#conf t

R2(config)#ipv6 router ospf 1

R2(config-rtr)#router-id 2.2.2.2

①R2(config-rtr)#int s0.12

R2(config-subif)#ipv6 ospf 1 area 0

②R2(config-subif)#int s0.23

R2(config-subif)#ipv6 ospf 1 area 23

R2(config-subif)#int lo0

R2(config-if)#ipv6 ospf 1 area 0

R2(config-if)#^Z

 

R3#conf t

R3(config)#ipv6 router ospf 1

R3(config-rtr)#router-id 3.3.3.3

②R3(config-rtr)#int s0.23

R3(config-subif)#ipv6 ospf 1 area 23

R3(config-subif)#int lo0

R3(config-if)#ipv6 ospf 1 area 23

R3(config-if)#^Z

 

인터페이스의 OSPFv3네트워크타입이 NBMA일 경우 네이버지정은 한쪽라우터에서만 해주면 된다.(앞서 R1에서 네이버지정을 해주었다.)

R2와 R3간에 연결된 인터페이스의 OSPFv3네트워크타입은 포인트-투-포인트이므로 네이버를 지정해줄 필요가 없다.

라우팅테이블의 OSPFv3정보 확인

설정을 마친 후 R1의 라우팅테이블을 확인해보면 R2로부터 OSPFv3업데이트정보를 받았음을 알 수 있다.(예제6.1.7)

예제 6.1.7 R1의 라우팅테이블 확인

 

R1#show ipv6 route ospf

IPv6 Routing Table - 9 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

U - Per-user Static route

I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary

O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2

ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2

①O 2001:1:1:2::2/128 [②110/③64]

via ④FE80::2, Serial0.12

①OI 2001:1:1:3::3/128 [110/128]

via FE80::2, Serial0.12

OI 2001:1:1:23::/64 [110/128]

via FE80::2, Serial0.12

 

OSPFv3를 통해 받은 동일에어리어루트정보의 앞에는 O(intraarea)표시가 되어있으며, 다른에어리어루트정보의 앞에는 OI(interarea)표시가 되어있다.

OSPFv3를 통해 받은 루트정보의 디스턴스 값은 OSPF에서와 마찬가지로 110이다.

R2의 룹백 인터페이스정보의 코스트(cost)(OSPFv3에서의 메트릭 값)이 64임을 알 수 있다. 코스트값과 관련된 내용은 잠시 뒤에 자세히 살펴볼 것이다.

네이버로부터 받은 OSPFv3루트정보를 라우팅테이블에 올릴 때 넥스트 홉 주소는 네이버의 링크로컬주소를 사용한다.

이제 R1에서 R3의 룹백 인터페이스로 핑을 해보면 성공한다.(예제5.1.5)

예제 5.1.5 R3과의 통신 확인

 

R1#ping 2001:1:1:3::3

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2001:1:1:3::3, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 104/104/104 ms

 

참고로 위의예제5.1.4에서 보듯이 OSPFv3에서는 OSPF에서와 마찬가지로 특별한조정이 없는 한 기본적으로 룹백 인터페이스정보를 호스트루트(128비트)로 받아오게 되는데, 이를 네트워크루트(64비트)로 변경하려면 해당인터페이스의 설정모드에서 ipv6 ospf network point-to-point명령어를 설정해주면 된다.(예제6.1.8)

예제 6.1.8 룹백 인터페이스의 OSPFv3루트정보를 64비트로 변환하기

 

R1#conf t

R1(config)#int lo0

R1(config-if)#ipv6 ospf network point-to-point

R1(config-if)#^Z

 

R2#conf t

R2(config)#int lo0

R2(config-if)#ipv6 ospf network point-to-point

R2(config-if)#^Z

 

R3#conf t

R3(config)#int lo0

R3(config-if)#ipv6 ospf network point-to-point

R3(config-if)#^Z

 

설정을 마친 후 R1의 라우팅테이블을 확인해보면 R2와 R3의 룹백 인터페이스정보가 64비트로 변경되었음을 알 수 있다.(예제6.1.9)

예제 6.1.9 변경된 룹백 인터페이스정보 확인

 

R1#show ipv6 route ospf

IPv6 Routing Table - 9 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

U - Per-user Static route

I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary

O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2

ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2

O 2001:1:1:2::/64 [110/65]

via FE80::2, Serial0.12

OI 2001:1:1:3::/64 [110/129]

via FE80::2, Serial0.12

OI 2001:1:1:23::/64 [110/128]

via FE80::2, Serial0.12

 

파셜메쉬구간에서의 OSPFv3기본구성

이번에는 아래 그림6.2.2의 토폴로지를 바탕으로 파셜메쉬구간에서의 기본적인 OSPFv3네트워크를 구성해보자. 파셜메쉬구간에서의 OSPF구성시 주의사항은 OSPFv3에서도 여전히 적용된다.

그림 6.2.2 파셜메쉬구간에서의 OSPFv3구성을 위한 토폴로지

  14.bmp

 

먼저 기본주소를 부여한다.(예제6.2.1)

예제 6.2.1 R1,R2,R3의 기본주소부여와 매핑

 

R1#conf t

R1(config)#ipv6 unicast-routing

R1(config)#int s0.123 multipoint

R1(config-subif)#ipv6 address 2001:1:1:123::1/64

R1(config-subif)#ipv6 address fe80::1 link-local

R1(config-subif)#frame-relay map ipv6 2001:1:1:123::2 102

①R1(config-subif)#frame-relay map ipv6 fe80::2 102 broadcast

R1(config-subif)#frame-relay map ipv6 2001:1:1:123::3 103

①R1(config-subif)#frame-relay map ipv6 fe80::3 103 broadcast

R1(config-subif)#int loopback 0

R1(config-if)#ipv6 address 2001:1:1:1::1/64

R1(config-if)#^Z

 

R2#conf t

R2(config)#ipv6 unicast-routing

R2(config)#int s0.123 multipoint

R2(config-subif)#ipv6 address 2001:1:1:123::2/64

R2(config-subif)#ipv6 address fe80::2 link-local

R2(config-subif)#frame-relay map ipv6 2001:1:1:123::1 201

②R2(config-subif)#frame-relay map ipv6 fe80::1 201 broadcast

R2(config-subif)#frame-relay map ipv6 2001:1:1:123::3 201

R2(config-subif)#frame-relay map ipv6 fe80::3 201

R2(config-subif)#int loopback 0

R2(config-if)#ipv6 address 2001:1:1:2::2/64

R2(config-if)#^Z

 

R3#conf t

R3(config)#ipv6 unicast-routing

R3(config)#int s0.123 multipoint

R3(config-subif)#ipv6 address 2001:1:1:123::3/64

R3(config-subif)#ipv6 address fe80::3 link-local

R3(config-subif)#frame-relay map ipv6 2001:1:1:123::1 301

②R3(config-subif)#frame-relay map ipv6 fe80::1 301 broadcast

R3(config-subif)#frame-relay map ipv6 2001:1:1:123::2 301

R3(config-subif)#frame-relay map ipv6 fe80::2 301

R3(config-subif)#int loopback 0

R3(config-if)#ipv6 address 2001:1:1:3::3/64

R3(config-if)#^Z

 

R1은 R2, R3과 OSPFv3정보를 주고받으므로 이들의 링크로컬주소에 대한 매핑시 broadcast옵션을 추가로 설정해주도록 한다.

R2와 R3은 R1과 OSPFv3정보를 주고받으므로 R1의 링크로컬주소에 대한 매핑시에만 broadcast옵션을 추가로 설정해주면 된다.

핑으로 각 인터페이스의 통신을 확인한 후 이상이 없으면 OSPFv3를 구성하도록 한다.(예제6.2.2)

예제 6.2.2 R1에서의 OSPFv3설정

 

R1#conf t

R1(config)#ipv6 router ospf 1

R1(config-rtr)#router-id 1.1.1.1

R1(config-rtr)#int s0.123

R1(config-subif)#ipv6 ospf 1 area 0

①R1(config-subif)#ipv6 ospf neighbor fe80::2

R1(config-subif)#ipv6 ospf neighbor fe80::3

R1(config-subif)#int lo0

R1(config-if)#ipv6 ospf 1 area 0

R1(config-if)#ipv6 ospf network point-to-point

R1(config-if)#^Z

 

R1의 s0.123인터페이스는 OSPFv3네트워크타입이 NBMA이므로 네이버들의 링크로컬주소를 직접 지정해주어야 한다.(네이버지정은 한 라우터에서만 해주면 된다.)

R2와 R3에서도 R1과 마찬가지로 OSPFv3를 구성해주도록 한다.(예제6.2.3)

예제 6.2.3 R2,R3에서의 OSPFv3설정

 

R2#conf t

R2(config)#ipv6 router ospf 1

R2(config-rtr)#router-id 2.2.2.2

R2(config-rtr)#int s0.123

R2(config-subif)#ipv6 ospf 1 area 0

①R2(config-subif)#ipv6 ospf priority 0

R2(config-subif)#int lo0

R2(config-if)#ipv6 ospf 1 area 0

R2(config-if)#ipv6 ospf network point-to-point

R2(config-if)#^Z

 

R3#conf t

R3(config)#ipv6 router ospf 1

R3(config-rtr)#router-id 3.3.3.3

R3(config-rtr)#int s0.123

R3(config-subif)#ipv6 ospf 1 area 0

①R3(config-subif)#ipv6 ospf priority 0

R3(config-subif)#int lo0

R3(config-if)#ipv6 ospf 1 area 0

R3(config-if)#ipv6 ospf network point-to-point

R3(config-if)#^Z

 

파셜메쉬구간에서는 반드시 모든 라우터와 연결되어있는 라우터(이번테스트에서는 R1)가 DR이 되어야하므로, 양쪽라우터인 R2와 R3은 DR이 되지못하도록 두 라우터의 OSPFv3우선순위 값을 0으로 설정해준다.

설정을 마친 후 R1에서 네이버들의 상태를 확인해보면 R2, R3과 정상적으로 네이버를 맺었으며, 또한 R1자신이 DR임을 알 수 있다.(예제6.2.4)

예제 6.2.4 R1에서의 네이버정보 확인

 

R1#show ipv6 ospf neighbor

 

Neighbor ID Pri State Dead Time Interface ID Interface

2.2.2.2 0 FULL/DROTHER 00:01:57 9 Serial0.123

3.3.3.3 0 FULL/DROTHER 00:01:55 7 Serial0.123

 

수동 터널링 기술

먼저 IPv6네트워크 환경으로의 전환과정에서 사용되는 터널링 기술들 중 수동 터널링 기술에 대해 알아보도록 하자. 수동 터널링 기술은 우리가 앞서 직접 설정해보았던 기본터널들과 유사하게 동작되며 또한 설정한다.(사실 앞서 배웠던 기본터널 또한 수동 터널링 기술의 한 종류이다.) 차이점이 있다면 단지 인캡슐레이션시키는 프로토콜종류의 차이(IPv6 over IPv6혹은 IPv6 over IPv4, GRE over IP 등)뿐이다.

수동 터널의 설정

수동 터널링 기술의 원리 및 장단점과 관련된 내용은 이미 앞에서 충분히 설명하였으므로 바로 실습을 해보도록 하겠다.

그림 10.2.1 수동 터널설정을 위한 토폴로지

  15.bmp

 

그림10.2.1의 토폴로지 상에서 R1과 R4는 서로 간에 IPv6통신을 원하지만 중간라우터인 R2와 R3사이에는 IPv4네트워크가 구축되어있으므로 통신이 불가능하다.(위의그림에서는 R2-R3간에 하나의 라인이 존재하지만 실제네트워크 환경에서는 이들 사이에 수많은 네트워크들이 서로 연결되어있을 것이다.) 이때 R2와 R3에서 수동터널을 설정하여, 이를 통해 R2이하의 내부IPv6네트워크장비(R1)와 외부IPv4네트워크너머에 존재하는 또 다른 IPv6네트워크장비(R4)간에 통신이 이루어질 수 있도록 해보자. 먼저 기본주소를 부여하고 각 프로토콜별 루트경로 또한 생성시켜주도록 한다.

예제 10.2.1 R1,R2,R3,R4의 기본주소부여와 매핑

 

R1#conf t

R1(config)#ipv6 unicast-routing

R1(config)#int s0.12 point-to-point

R1(config-subif)#ipv6 address 2001:1:1:12::1/64

R1(config-subif)#ipv6 address fe80::1 link-local

R1(config-subif)#frame-relay interface-dlci 102

R1(config-fr-dlci)#int loopback 0

R1(config-if)#ipv6 address 2001:1:1:1::1/64

R1(config-if)#^Z

 

R2#conf t

R2(config)#ipv6 unicast-routing

R2(config)#int s0.12 point-to-point

R2(config-subif)#ipv6 address 2001:1:1:12::2/64

R2(config-subif)#ipv6 address fe80::2 link-local

R2(config-subif)#frame-relay interface-dlci 201

R2(config-fr-dlci)#int s0.23 point-to-point

R2(config-subif)#ip address 1.1.23.2 255.255.255.0

R2(config-subif)#frame-relay interface-dlci 203

R2(config-fr-dlci)#int loopback 0

R2(config-if)#ipv6 address 2001:1:1:2::2/64

R2(config-if)#ip address 1.1.2.2 255.255.255.0

R2(config-if)#^Z

 

R3#conf t

R3(config)#ipv6 unicast-routing

R3(config)#int s0.23 point-to-point

R3(config-subif)#ip address 1.1.23.3 255.255.255.0

R3(config-subif)#frame-relay interface-dlci 302

R3(config-fr-dlci)#int s0.34 point-to-point

R3(config-subif)#ipv6 address 2001:1:1:34::3/64

R3(config-subif)#ipv6 address fe80::3 link-local

R3(config-subif)#frame-relay interface-dlci 304

R3(config-fr-dlci)#int loopback 0

R3(config-if)#ipv6 address 2001:1:1:3::3/64

R3(config-if)#ip address 1.1.3.3 255.255.255.0

R3(config-if)#^Z

 

R4#conf t

R4(config)#ipv6 unicast-routing

R4(config)#int s0.34 point-to-point

R4(config-subif)#ipv6 address 2001:1:1:34::4/64

R4(config-subif)#ipv6 address fe80::4 link-local

R4(config-subif)#frame-relay interface-dlci 403

R4(config-fr-dlci)#int loopback 0

R4(config-if)#ipv6 address 2001:1:1:4::4/64

R4(config-if)#^Z

 

핑으로 각 인터페이스의 통신을 확인한 후 이상이 없으면 프로토콜별로 스태틱루트를 사용하여 경로를 생성시켜주도록 한다.(예제10.2.2)

예제 10.2.2 R1,R2,R3,R4에서의 스태틱루트설정

 

R1#conf t

R1(config)#ipv6 route ::/0 s0.12

R1(config)#^Z

 

R2#conf t

R2(config)#ipv6 route 2001:1:1:1::/64 s0.12

R2(config)#ip route 1.1.3.0 255.255.255.0 s0.23

R2(config)#^Z

 

R3#conf t

R3(config)#ipv6 route 2001:1:1:4::/64 s0.34

R3(config)#ip route 1.1.2.0 255.255.255.0 s0.23

R3(config)#^Z

 

R4#conf t

R4(config)#ipv6 route ::/0 s0.34

R4(config)#^Z

 

설정을 마친 후 R2의 IPv6라우팅테이블을 확인해보면 R3너머에 존재하는 IPv6네트워크로 가는 경로가 당연히 존재하지 않는다.(예제10.2.3)

예제 10.2.3 R2의 IPv6라우팅테이블 확인

 

R2#show ipv6 route

IPv6 Routing Table - 7 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

U - Per-user Static route

I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary

O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2

ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2

S 2001:1:1:1::/64 [1/0]

via ::, Serial0.12

C 2001:1:1:2::/64 [0/0]

via ::, Loopback0

L 2001:1:1:2::2/128 [0/0]

via ::, Loopback0

(생략)

 

물론 R3에서도 R2너머에 존재하는 IPv6네트워크로 가는 경로가 존재하지 않는다. 이 상태에서 R1과 R4간의 통신은 불가능한데, 이때 R2와 R3에서 수동터널을 설정줌으로써, 이를 통해 IPv4네트워크에 의해 서로 단절된 IPv6네트워크 간(R1-R4간)의 통신이 이루어질 수 있도록 해보자.(예제10.2.4)

예제 10.2.4 R2에서의 터널 인터페이스설정

 

R2#conf t

①R2(config)#int tunnel0

②R2(config-if)#ipv6 unnumbered lo0

③R2(config-if)#tunnel source lo0

R2(config-if)#tunnel destination 1.1.3.3

R2(config-if)#exit

④R2(config)#ipv6 route 2001:1:1::/48 tunnel0

R2(config)#^Z

 

먼저 interface tunnel명령어를 사용하여 터널 인터페이스를 생성시켜준다.

다음으로 터널 인터페이스의 주소를 부여해준다. 이번예제에서는 ipv6 unnumbered명령어를 사용하여 룹백 인터페이스에 이미 부여되어있는 주소인 2001:1:1:2::2/64를 차용해오도록 설정해보았다.

tunnel source tunnel destination명령어를 사용하여 터널의 출발지와 목적지IPv4주소를 지정해준다.

터널 인터페이스를 통해 통신하고자하는 목적지(2001:1:1::/48)에 대한 루트정보의 넥스트 홉을 과정①에서 생성한 터널인터페이스로 지정해준다. 즉, R1에서 목적지주소가 2001:1:1::/48인 패킷은 모두 터널 인터페이스로 가라는 의미의 스태틱루트를 생성해준다는 것이다. 패킷이 터널 인터페이스로 가게 되면 기존의 패킷에 터널의 출발지와 목적지주소를 바탕으로 하는 새로운 IPv4헤더가 인캡슐레이션되어, 이를 바탕으로 라우팅이 이루어지게 된다.(터널의 목적지주소인 1.1.3.3으로 가는 경로는 이전에 스태틱루트를 사용하여 생성해준 상태이다.)

R3에서도 R2와 마찬가지로 터널을 설정해준다.(예제10.2.5)

예제 10.2.5 R3에서의 터널 인터페이스설정

 

R3#conf t

R3(config)#int tunnel0

R3(config-if)#ipv6 unnumbered lo0

R3(config-if)#tunnel source lo0

R3(config-if)#tunnel destination 1.1.2.2

R3(config-if)#exit

R3(config)#ipv6 route 2001:1:1::/48 tunnel0

R3(config)#^Z

 

터널링 동작 확인

설정을 마친 후 터널링이 제대로 동작되는지 핑테스트로 확인해보자. 그 전에 먼저 R2에서 debug tunnel명령어를 설정해주도록 한다.(예제10.2.6)

예제 10.2.6 debug tunnel명령어의 설정

 

R2#debug tunnel

Tunnel Interface debugging is on

 

이제 R1에서 R4의 룹백 인터페이스로 핑을 해본다.(예제10.2.7)

예제 10.2.7 터널링 동작 확인

 

R1#ping 2001:1:1:4::4 repeat 1

 

Type escape sequence to abort.

Sending 1, 100-byte ICMP Echos to 2001:1:1:4::4, timeout is 2 seconds:

!

Success rate is 100 percent (1/1), round-trip min/avg/max = 144/144/144 ms

 

R2#

Jun 1 01:55:03.859: Tunnel0: GRE/IP encapsulated 1.1.2.2->1.1.3.3 (linktype=79, len=124)

Jun 1 01:55:03.999: Tunnel0: GRE/IP to classify 1.1.3.3->1.1.2.2 (len=124 type=0x86DD ttl=254 tos=0x0)

Jun 1 01:55:04.003: Tunnel0: GRE/IP to decaps 1.1.3.3->1.1.2.2 (len=124 ttl=253)

Jun 1 01:55:04.003: Tunnel0: Tunnel0: GRE decapsulated IPV6 packet (linktype=79, len=100)

 

위의예제를 통해 터널링이 제대로 동작되고 있음을 알 수 있다. 또한 show interface tunnel명령어를 사용하면 터널 인터페이스의 전반적인 상태를 확인할 수 있다.(예제10.2.8)

예제 10.2.8 터널 인터페이스의 상태 확인

 

R2#show interface tunnel0

Tunnel0 is up, line protocol is up

Hardware is Tunnel

MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,

reliability 255/255, txload 1/255, rxload 1/255

Encapsulation TUNNEL, loopback not set

Keepalive not set

Tunnel source 1.1.2.2 (Loopback0), destination 1.1.3.3

Tunnel protocol/transport GRE/IP

(생략)

 

수동 터널링 기술의 여러 가지 모드

터널 인터페이스는 기본적으로 패킷을 IPv4헤더로만 인캡슐레이션시킬 수 있지만, 터널의 모드를 조정해줌으로써 패킷을 IPv6헤더로 인캡슐레이션시킬 수가 있으며 또한 뒤에서 배울 자동 터널링 기술들을 동작시킬 수도 있다. 자동 터널링 기술과 관련된 터널의 모드들은 뒤에서 다시언급하기로 하고, 지금은 수동 터널링 기술과 관련된 터널의 여러 가지 모드들에 대해 살펴보도록 하자.

 

IPv6모드

먼저 IPv6모드에 대해 알아본다. 시스코라우터에서 터널의 기본모드인 GREIPv4모드에서는 패킷을 IPv6헤더로 인캡슐레이션시킬 수 없지만, 터널의 모드를 IPv6모드로 변경시켜주면 IPv4(혹은 IPv6)패킷을 IPv6헤더로 인캡슐레이션시킬 수가 있게 된다.(IPv4 over IPv6 혹은 IPv6 over IPv6) 즉, IPv6터널링이 동작된다는 말이다.(그림10.2.9)

예제 10.2.9 IPv6모드에서의 터널링 패킷

  17.bmp

 

설정을 통해 터널의 모드를 IPv6모드로 변경시켜보자.(예제10.2.9)

예제 10.2.9 터널모드의 변경

 

R2#conf t

R2(config)#int tunnel0

R2(config-if)#tunnel mode ?

gre generic route encapsulation protocol

ipip IP over IP encapsulation

ipsec IPSec tunnel encapsulation

iptalk Apple IPTalk encapsulation

ipv6 Generic packet tunneling in IPv6

ipv6ip IPv6 over IP encapsulation

(생략)

 

R2(config-if)#tunnel mode ipv6

R2(config-if)#^Z

 

변경된 터널의 모드는 show tunnel interface tunnel명령어나 show interface tunnel명령어를 통해 확인할 수 있다.(예제10.2.11)

예제 10.2.11 변경된 터널모드의 확인

 

R2#show interface tunnel0

①Tunnel0 is up, line protocol is down

Hardware is Tunnel

MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,

reliability 255/255, txload 1/255, rxload 1/255

Encapsulation TUNNEL, loopback not set

Keepalive not set

① Tunnel source 2001:1:1:2::2 (Loopback0), destination 1.1.3.3

② Tunnel protocol/transport IPv6

(생략)

 

물론 터널의 모드를 IPv6모드로 변경시킨다하더라도 터널의 출발지(tunnel source)와 목적지주소(tunnel destination)가 모두 IPv6주소가 아닐 경우 터널 인터페이스는 당연히 동작되지 않는다.(패킷을 IPv6헤더로 인캡슐레이션시킬 수 없기 때문이다.)

터널의 모드가 IPv6모드로 변경되었음을 알 수 있다.

 

IPv6IP모드

터널의 모드를 IPv6IP모드로 변경시켜주면 IPv6패킷을 IPv4헤더로 인캡슐레이션시킬 수 있게 된다.(IPv6 over IPv4)(그림10.2.9)

예제 10.2.9 IPv6IP모드에서의 터널링 패킷

   17(1).bmp

 

설정을 통해 터널의 모드를 IPv6IP모드로 변경시켜보자.(예제10.2.12)

예제 10.2.12 터널모드의 변경

 

R2#conf t

R2(config)#int tunnel0

R2(config-if)#tunnel mode ipv6ip

R2(config-if)#^Z

 

IPv6IP모드와 터널의 기본모드인 GREIPv4모드간의 차이점은 잠시 뒤에 설명할 것이다. 변경된 터널의 모드는 show tunnel interface tunnel명령어 show interface tunnel명령어를 통해 확인할 수 있다.(예제10.2.13)

예제 10.2.13 변경된 터널모드의 확인

 

R2#show interface tunnel0

Tunnel0 is up, line protocol is up

Hardware is Tunnel

MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,

reliability 255/255, txload 28/255, rxload 1/255

Encapsulation TUNNEL, loopback not set

Keepalive not set

Tunnel source 1.1.2.2 (Loopback0), destination 1.1.3.3

Tunnel protocol/transport IPv6/IP

(생략)

 

GRE모드

터널의 모드가 IPv6모드이거나 혹은 IPv6IP모드일 경우는 해당 터널 인터페이스를 통해 오직IPv4 혹은 IPv6패킷만을 전송할 수 있다. 터널의 모드별로 인캡슐레이션시킬 수 있는 패킷의 종류가 정해져있기 때문이다.(그림10.2.2)

그림 10.2.2 터널모드별 인캡슐레이션 가능한 패킷의 종류

  18(1).bmp

 

위와 같이 IP패킷만을 인캡슐레이션시킬 수 있는 터널모드에서는 IS-IS라우팅 정보와 같은 CLNS패킷을 터널 인터페이스로 전송하지 못한다.(IS-IS의 포맷과 관련된 내용은 7장;IS-IS개요-그림7.1.2부분을 참조하기 바란다.) 이것은 비단 CLNS패킷뿐만이 아니라 IP패킷을 제외한 모든 종류의 패킷에 동일하게 적용되는 문제이다. 바로 이러한 터널의 문제점을 해결하기위해 GRE(genericroutingencapsulation)라는 터널모드가 개발되었다. GRE모드에서는 패킷이 터널링 동작에 의해, IPv4헤더 혹은 IPv6헤더로 인캡슐레이션되기 전에 먼저 해당패킷을 GRE헤더로 인캡슐레이션시키게 되는데, 이때 GRE헤더에는 원래패킷의 종류를 표시해둔다.(그림10.2.3)

그림 10.2.3 GRE모드에서의 터널링 패킷

  19.bmp

 

터널 인터페이스는 단순히 GRE헤더를 인캡슐레이션시킬 수만 있다면(GRE over IP), GRE헤더가 다시 넥스트헤더필드를 통해 원래패킷의 종류를 구분시켜주게 되므로 CLNS패킷인 IS-IS라우팅 정보뿐만이 아니라 어떠한 종류의 패킷이든 간에 모두 터널 인터페이스를 통해 전송시킬 수가 있게 되는 것이다.(예제10.2.14)

예제 10.2.14 터널모드의 변경

 

R2#conf t

R2(config)#int tunnel0

R2(config-if)#tunnel mode gre ?

① ip over IP

② ipv6 over IPv6

multipoint over IP (multipoint)

 

R2(config-if)#tunnel mode gre ip

R2(config-if)#^Z

 

터널의 모드를 GREIPv4모드로 변경시켜주면 GRE정보를 IPv4헤더로 인캡슐레이션시킬 수 있게 된다.(GRE over IPv4)

터널의 모드를 GREIPv6모드로 변경시켜주면 GRE정보를 IPv6헤더로 인캡슐레이션시킬 수 있게 된다.(GRE over IPv6)

이제 앞서 IPv6IP모드와 GREIPv4모드 간의 차이점을 확실히 알 수 있을 것이다. IPv6IP모드에서는 오직 IPv6패킷만을 IPv4헤더로 인캡슐레이션시킬 수 있지만, GREIPv4모드에서는 패킷을 IPv4헤더로 인캡슐레이션시키기 전에 GRE헤더를 추가시켜줌으로써, IP패킷뿐만이 아니라 어떠한 종류의 패킷이든 간에 IPv4헤더로 인캡슐레이션시킬 수가 있는 것이다.(IPv6모드와 GREIPv6모드간의 차이점도 이와 유사하다.) 변경된 터널의 모드는 show tunnel interface tunnel명령어 show interface tunnel명령어를 통해 확인할 수 있다.(예제10.2.15)

예제 10.2.15 변경된 터널모드의 확인

 

R2#show interface tunnel0

Tunnel0 is up, line protocol is up

Hardware is Tunnel

MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,

reliability 255/255, txload 1/255, rxload 1/255

Encapsulation TUNNEL, loopback not set

Keepalive not set

Tunnel source 1.1.2.2 (Loopback0), destination 1.1.3.3

Tunnel protocol/transport GRE/IP

(생략)

 


 

 IPv6

  •  

유니캐스트                                 멀티캐스트                           애니캐스트

  •                                             

에그리게이터블(공인IP)             사이트(사설IP)                   링크로컬어드레스

글로벌어드레스                        FECO::/10 ~                        FE80::/10~

2001::/16                                FEFF::/10                            FEBF::/10

2002::/16

2003:18

3FFE::/16

 

에그리케이터블

사이드로컬

           S0/0          S0/1

R1---------R2---------R3

     링크로컬  링크로컬

 

이 글은 스프링노트에서 작성되었습니다.

이전 1 다음