라이브러리
프로그래밍언어, 각종코드, 관련동향, 논문 등의 저장소
IPv6
IPv6의 개요

 
1969년 미국 국방부의 ARPAnet(Advanced Research Projects Network)이라 불리는 학술 연구망을 모체로 한 인터넷은 1994년 WWW(World Wide Web)의 대중화의 힘으로 급속도로 발전해왔다. 이러한 정보통신의 발전과 함께 국내의 인터넷은 1982년 서울대와 KIET간의 SDN (System Development Network) 이라는 통신망을 시점으로 현재는 교육전산망 (KREN: Korea Education Network), 연구전산망 (KREONet: Korea Research Environment Open Network), 초고속국가망 (PUBNet)과 같은 비영리 인터넷망을 비롯하여, BORANet, NEXTEL, KOLnet, NOWNet, KTNet, Inet, 등과 같은 많은 상업적 목적의 인터넷 망이 존재하고 있다.
이러한 국내외 통신망의 발전에 따라 인터넷 통신의 수요자는 전 세계적으로 99년 말에는 약 2억 5천만명에 이르렀으며, 2000년도에는 3억 8천명을 넘을것으로 예상된다. 또한 전 세계적으로 호스트의 수는 99년 말에는 7천만개를 넘어섰다.

위와 같이 전 세계적인 통신망을 구성하는 인터넷의 발전과 함께 그 수요의 폭발적인 증가에 따른 가까운 미래에 예측되는 인터넷의 확장은 ASIA 25억명, EASTEN EUROPE 2억 5천명, AFRICA 8억명, SOUTH AND CENTURAL AMERICA 5억명의 사용자와 그외에 이동전화사용, 홈네트워킹 기술에 기반을 둔 각종 가정기기등은 50억 이상으로 예측된다. 이러한 급속적인 수요의 증가에 따라 인터넷상의 주소(IPv4)는 고갈이 예상되었으며, IPv6에 대한 연구가 시작되었다.
   
IPv6의 특징
  가. IPv4(RFC791)의 문제점
    현재 인터넷 주소로써 사용되고 있는 IPv4는 다음과 같은 문제점을 가지고 있다 현재 32비트 주소에서의 할당용량 부족 사이트규모에 따른 class별 할당방식의 문제점IPv4헤더영역의 비효율적 사용 특히 기하급수적으로 늘어가는 사용자에 대하여 할당용량의 부족은 가장 커다란 문제점을 가지고 있으며, 이러한 문제를 해결하기 위하여 Dynamic IP allocation with PPP 와 Private IP addresses with NAT의 기술로써 임시방편적인 대책을 마련하고 있지만, 이러한 대책들은 통신, 보안, 게임 같은 대부분의 인터넷응용들은 양방향 통신이 이루어져야 하므로 NAT와 같은 단방향성인 해결책은 인터넷 확산에 대하여 장애가 될 수 있다. 따라서 근본적인 IP에 대한 해결책은 될 수 없는 것이다.
     
  나. IPv6의 특징
    IPv4에 대한 문제점과 할당공간부족에 대한 문제점을 해결책으로 개발된 IPv6의 특징으로써는 다음과 같다.
     
    - 거의 무한대 주소공간 (128bit)
- Aggregation-based address hierarchy
- 효과적인 백본 라우팅
- Efficient and Extensible IP datagram
- Fragmentation NOT by Routers, but only by a Source Host
- 보다 단순한 IPv6 기본 헤더, 40 bytes ·More efficient forwarding
- Source Routing & Hop-by-Hop Options Header
- Autoconfiguration & IP Renumbering ·Built-in Security AH & ESP
- QoS Flow Labeling
     
  다. IPv6 의 규격
    현재 RFC 규약에 의해 프로토콜규격 주소규격 라우팅 및 기타 규격에 의해 정의된 IPv6의 규격은 다음과 같다.
    - 프로토콜 규격
    RFC 2460: IPv6 Specification
RFC 1886: DNS Extensions to support IPv6
RFC 1981: Path MTU Discovery
RFC 2461: Neighbor Discovery for IPv6
RFC 2462: IPv6 Stateless Address Autoconfiguration
    - 주소 규격
    RFC 2373: IPv6 Addressing Architecture
RFC 2375: IPv6 Multicast Address Assignments
RFC 1887: An Architecture for IPv6 Unicast Address Allocation
RFC 2374: An IPv6 Aggregatable Global Unicast Address Format
RFC 2470: Proposed TLA and NLA Assignment Rules
    - Routing
    RFC 2080: RIPng for IPv6
RFC 2283: Multiprotocol Extensions for BGP-4
RFC 2545: Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain
    - 기타
    RFC 2292: Advanced Sockets API for IPv6
RFC 2553: Basic Socket Interface Extensions for IPv6
RFC 2473: Generic Packet Tunneling in IPv6 Specification
RFC 2507: IP Header Compression
RFC 2675: IPv6 Jumbograms
RFC 2711: IPv6 Router Alert Option
     
IPv6의 구조 (RFC2460)
  가. IPv6의 기본 헤더구조
   
Ver Traffic Class Flow Label
Payload length Next Header Hop limit
128bit
Source Address
128bit
Destination Address
     
  나. Version (4bits) : 0110
     
  다. Traffic Class (8bits): 클래스 또는 우선권 식별
    RFC1881에 따르면
0~7: Congestion-controlled traffic 8~15: Non-congestion-controlled traffic

0 No spechfic priorty  
1 Background traffic News
2 Unattended data transfer email
3 Reserved for fufure definition  
4 Attended bulk transfer File transfer
5 Reserved for future definition  
6 Interactive traffic Remote login & windowing systems
7 Control traffic Routing protocols & NMS
8   High-fidelity video traffic
   
15   Low-fidelity audio traffic
     
  라. Flow Level : 송신자 노드에서 할당
    - Flow : 송신자 IP 주소와 Non-zero flow label의 조합으로 유일하게 식별.
- 같은 flow에 속하는 모든 패킷들은 the same source address, destination address,and flow label.
- 아직 실험적 대상, 변경 가능성 있음
     
  마.Payload Length (16bits)
    - Basic header (40bytes)를 제외한 나머지 모든 영역

BasicHeade
BasicHeader
~ 210(65,535 bytes)
ExtensionHeaders
TCP/UDPHeaders ApplicationHeader User Data
     
  바. Next Header (8bit)
   
IP v6header Next = TCP TCP Header + DATA

IP v6 header
Next = Routing
Routing header
Next = TCP
TCP Header
+data

IP v6 header
Next = Routing
Routing header
Next = fragment
Fragment Header
Next = TCP
Fragment TCP Header + data

0 Hop-by-Hop Options Header
4 Internet Protocol
6 Transmission Control Protocol
17 User Datagram Protocol
41 IPv6
43 Routing Header
44 Fragment Header
45 Interdomain Routing Protocol
46 Resource Reservation Protocol
50 Encapsulating Security Payload
51 Authentication Header
58 Internet Control Message Protocol
59 No Next Header
60 Destination Options Header
     
  사. Hop limits (8bits)
    - 패킷 포워딩을 하는 노드에서 1씩 감소시킴
  아. Source Address (128bits)
  자. Destination Address (128bits)
   
IPv6확장헤더
  IPv6의 기본 헤더 바로 다음에 위치하여 헤더의 종류는 바로 전 NEXT 헤더부분으로 판별된다. 확장헤더는 필요할 때만 사용하여 공간을 절약하는 장점을 가지고 있으며, 확장헤더의 종류와 나열순서는 다음과 같다.
   
  가. 확장헤더의 종류
    - Hop-by-Hop Options Header
- Options: Router Alert & Jumbogram
- TLV format
- 옵션별 위치 정렬 가능 처리 효율이 증가됨
   
    Routing Header (Type 0)
    패킷 전달경로를 Routingheader 내의 주소들을 따라서 결정 (현재Type = 0만 선언)

Next header Hdr leagth Type = 0 Seg left
Reserved
Address (0)
 
Address (n)
     
    Fragment Header
   
Next header Reserved Fragment Offset Res M
Identification
    Destination Options Header ·Authentication Header ·Encapsulating Security Payload
     
  나. 헤더 나열순서
    - IPv6 header Hop-by-Hop Options header Destination Options header ·Routing header
- Fragment header
   
  다. IPv6 Addressing Architecture (RFC 2373)
    주소표현 방식(128비트형식)
      - 주소표현 형태
     
Prefix Interface -ID
ㆍInterface ?ID : 128 ?prefix(n)
   fedc::ba00::/64등으로 <prefix>/<prefix length>로 prefix표기

ㆍx:x:x:x:x:x:x:x ·x는 16비트 크기로서 네 개의 16진수로 나타냄

  예) FEDC:0098:7654:3210:FEDC:BA98:7654:3210
· 각 필드에서 앞에 나오는 0은 선택적
     
  예) FEDC:0098:… = FEDC:98:
· 주소에서 유효한 비트의 수를 /를 이용하여 나타냄
     
  예) FE80::/10
     
  각기 16비트로 구성된 여러 개의 필드가 0이면 FF01:0:0:0:0:0:0:101 = FF01::101 0:0:0:0:0:0:0:1
= ::1 0:0:0:0:0:0:0:0 = :: FF01:0:0:8A01:0:0:0:1 = FF01:0:0:8A01::1
       
    prefix
      ISP (Internet Service Provider)나 네트워크관리 담당자로부터 할당 받음 ·주소의 사용목적에 따라 다양한 할당방식이 가능하다.
     
      다음은 사용목적에 따른 할당방식의 예이다

Allocation 항목 Prefix(2진수)
reserved 0000 0000
NSAP Allocation 0000 001
IPX Allocation 0000 010
Aggregatable Unicast Address 001
Link-local Unicast Address 1111 1110 10
Site-local Unicast Address 1111 1110 11
Muticast Address 1111 1111
     
    Unicast
      어떤 인터페이스 (interface) 하나에 대한 식별자 따라서 unicast 주소로 보내진 패킷은 이 주소가 할당된 인터페이스로 전달됨
   
  - 기본형식
 
n-bits 128-nbits
Subnet prefix Interface ID
  - Interface identifiers
    ㆍLinks or Nodes with EUI-64 Identifiers (64 bits)
ㆍLinks or Nodes with MAC address (48bits)Unspecified AddressLoopback Address
  - IPv6 aggregatable global unicast address
   
3 13 8 24 16 64
FP TLA ID RES NLA ID SLA ID Interface ID
    001 Format Prefix (3 bit) for Aggregatable Global Unicast Addresses

TLA ID Top-Level Aggregation Identifier
ex.)0x1ffe, 6Bone / 0x0001, official use 0x0002, 6to4
RES Reserved for future use
NLA ID Next-Level Aggregation Identifier
SLA ID Site-Level Aggregation Identifier
INTERFACE ID Interface Identifier
   
현재 할당값
  - 6bone 테스트값
  - NIC에서의 Sub ? TLA 할당값 : 2001:/16
  - NIC에서의 6to4 transition용 TLA : 2002:/16
주소 예 : 2002:230::/35 001 0000000000010 ,
ETRI TLA 3ffe:2e00::/24 001 1111111111110 , 6Bone-KR
  - Local-use IPv6 Unicast 주소
    Link-Local addresses FE80::/10
  - Site-Local Address (fe80 ::/10)
   
10bits 38bits 16bits 64bits
1111111011 0 Subnet Interface ID
     
    Anycast
   
  - 여러 개의 인터페이스를 묶어서 하나로 나타내는 식별자
(이들 인터페이스는 통상 다른 노드에 있음)
  - Anycast 주소로 보내진 패킷은 이 주소를 사용하는 그룹 멤버들 가운데
가장 가까운 하나에게만 전달됨
     
    Multicast
      Anycast의 경우처럼 여러 개의 인터페이스를 묶어서 하나로 나타내는 식별자
그러나 이 주소로 보내진 패킷은 이 주소를 사용하는 그룹 멤버들 전체에게 전달됨
   
  - 멀티캐스트주소형식
   
8 4 4 112
8bits 4bits 4bits 112bits
11111111 flags scop Group ID
  - Flags is a set of 4flags
   
0 0 0 T

8 4 4 112
11111111 flag scop Group ID
11111111 flag scop Group ID
  - flags is a set of 4flags
   
0 0 0 T

ㆍT = 0, 영구 할당 주소용
ㆍT = 1, 임시 할당 주소용
ㆍscope (scope)은 멀티캐스트의 범위를 제한

  0 reserved 8 organization-local scope
1 node-local scope 9 A,B,C,D (unassigned)
2 link-local scope E global scope
3,4 (unassigned) F reserved
5 site-local scope
6,7 (unassigned)· 예약되어 있어 일반 사용 불가 멀티캐스트 주소

FF0[0~F]::
  - All-nodes Multicast 주소
Node-local(scope 1) FF01::1
Link-local (scope 2) FF02::1
  - All-routers Multicast 주소
Node-local (scope 1) FF01::2
Link-local (scope 2) FF02::2
Site-local (scope 5) FF05::2
  - Solicited-Node Multicast 주소
FF02::1:FFxx:xxxx, 즉, FF02:0:0:0:0:1:FF00::/104
Unicast와 Anycast 주소의 하위 24bit를 가지고 만듬
     
    URL에서의 IPv6 주소 표현 방식
      http:// [FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html
( [ ]를 사용하여 포트와 주소를 구분한다 . )

http://[1080:0:0:0:8:800:200C:417A]/index.html


http://[3ffe:2a00:100:7031::1]

( 여러 개의 0이 반복되는 경우 ::로 축약가능하다 .)

http://[1080::8:800:200C:417A]/foo

(한서버에서 여러 개의 홈페이지를 서비스하는 방법은 기존과 동일하다.)

http://[::192.9.5.5]/ipng


http://[::FFFF:129.144.52.38]:80/index.html
     
    IPv4의 사용 (prefix) IPv4-compatatible IPv6 address
   
  - IP v4주소를 그대로 IPv6에서 사용한다.
    예 ) :: <IPv4에서 사용하던 주소)
  - IPv4-mapped IPv6 address
    이 주소를 사용하는 호스트는 IPv6가 지원되지 않는 호스트임을 나타낸다.
    예 ) ::ffff:<IP v4 dotted-decimal address>
  - IPv6의 기능
  - IPv6 Stateless Address Autoconfiguration (RFC 2462)
    자동 주소 설정
Plug-and-Play 기능
자동 주소 재지정 (Renumbering) 기능 수행
Autoconfiguration 종류
      - Stateful Mechanism
  ㆍDHCP 서버로부터 주소를 비롯한 모든 네트워크 정보를 받음
- Stateless Mechanism
  ㆍRouter로부터 주소를 비롯한 모든 네트워크 정보를 받을 수도 있고, 또는
  ㆍRouter로부터 주소 정보만 받고 나머지 네트워크 정보들을 DHCP 서버로부터 받을 수도 있음
  ㆍNDP 메시지를 사용하여 자동설정
  ㆍLink - Local 주소를 NDP 메시지의 IP v6헤더에 사용
     
    NDP (Neighbor Discovery Protocol)
   
  - IPv4 에서의 Address Resolution 기능에 ICMP 에서의 router discovery.rediraction 기능이 포함되었다
  - NDP message
    Router solictation/ advertisement message
      자신과 동일한 링크에 연결되어 있는 router를 파악할 때 사용되며, 호스트는 router solicitation 으로 질의를 보내고 router는 router advertisement로 자신의 정보를 전달한다.
    Neighbor solicitation / advertisement message
  - IP v4에서의 ARP기능
  - 호스트는 neighbor solicitation으로 질의를 보낸다
  - 목적호스트는 neighbor adverisement로써 응답을 보낸다.
    Redirect message
  - 라우터가 더 나은 경로를 알고 있을 때 redirect message를 패킷전송자에게 전달
     
    Site Renumbering
      Site 주소변경 시 Network의 재설정을 용이하게 해준다.
(각 호스트에 대한 주소변경이 불필요하다.) 1. 관리자에 의해 prefix1 에서 prefix2로 변경
2. 변경된 prefix2로 Router advertisment
3. prefix / default router 변경( prefix1:host 를 prefix2:host로 변경완료)
     
    IPv4에서 IPv6로의 변환
     
      현재 전세계적으로 사용되고 있는 IPv4를 IPv6로 전환시에는 많은 시간과 비용이 필요하게 된다. 이러한 문제점은 IPv6로의 전환을 어렵게 만들고 있다. 커다란 인터넷망에서 한순간에 IPv6로의 전환은 힘들다는 것을 인지하고 IPv4와 IPv6와의 공존의 기간과 IPv6로의 전환기간역시 고려되어야 한다. 다음은 IPv4와 IPv6의 두가지 형식을 통신에 함께 사용할 수 있는 기술들이다.

- Tunneling방식 : 네트워크에서 터널을 제공해주는 서비스를 하거나 동적으로 터널을 생성해주는 방식
     
   
  AIIH( Assignment of IPv4 global Address)
    IPv4 및 IPv6 이중호스트가 원할 때에만 IPv4주소를 얻는 형식이다.
단점 : DNS/DHCPv6와의 통신방법이 불분명하다.
  2 DTI(DynamixTunnelInterface)
    IPv6 도메인내에서 IPv4호스트와의 통신을 위해서 사용되는 방식이다.
  3 6 to 4
    IPv4 도메인을 사이에 둔 IPv6도메인간의 통신을 위해 사용된다. 이 방식은 주소에 6to4 TLA 및 IPv4를 위한 NLA가 사용되며 IPv4호스트와의 통신기법은 아니므로 별도의 변환작업이 필요하다.
  Header Translation 방식
    Header Translation 방식은 네트워크에서의 호스트등에서 IPv6 의 패킷과 IPv4 의 패킷을 서로간에 변환하여 통신하는 방식이다 .
  NAT-PT
    IPv4도메인 및 IPv6도메인의 경계지점에서 각 패킷의 프로토콜 헤더부분을 변환하는 역할을 담당한다. 가) SIIT : 헤더별 변환 메커니즘을 가지고 변환하는 방식이다 나) SOCKS64 : Firewall용 프로토콜인 SOCKS64를 수정하여 IPv4와 IPv6간의 Traslator로 사용하는 형식이다. SOCKS서버는 통신을 원하는 IPv4호스트 및 IPv6호스트를 각각의 TCP로 접속하여 변환작업을 수행한다. 다) IPv6할당과 진행사항
  6bone 테스트주소를 위한 prefix(pTLA)
    3ffe:0000::/24 - 3ffe:3900::/24
3ffe:0000::/24 - 3ffe:8050::/28
  NIC에서의 공식주소 할당
    sub-TLA 할당주소 : 2002:: /16
6to4 transition용 주소 : 2002/16
  6bone-KR주소할당
    3ffe:2e01:
NLA1:3ffe:2e01::/32 3ffe:2e03::/32
(6bone-KR. APAN-KR)
NLA2 : 3ffe:2e01:1::/48 ? 3ffe2e01:9:: /48
  6bone이란?
    IPv6의 표준 구현테스트와 Transition 전략테스트 그리고 이러한 IPv6의 네트워크운영경험을 축척하기 위해서 테스트용으로 인터넷 IPv6 백본망이 필요하게 되며, 현재 북아메리카, 유럽, 일본, 한국을 포함하는 비공식적인 합작 프로젝트로써 6Bone이라는 백본망을구성하고 있다.
이러한 6Bone은 IPv6 패킷 라우팅을 지원하기 위한 물리적인 IPv4 기반의 인터넷 상속물들의 제일 높은 계층의 가상 네트워크이다. 이를 통하여 현재 IPv6와 관련된 많은 테스트들이 행하여지고 있으며, IPv4에서 IPv6로의 이행은 IPv4와 IPv6가 동시에 병행되어 쓰이면서 점차적으로 완전한 IPv6로 이행되는 형태가 될 것으로 예상된다.
     
   
- 6bone 테스트 주소를 위한 prefix (pTLA)
  3ffe:0000::/28 ? 3ffe:8050::/28
3ffe:0000::/24 ? 3ffe:3900::/24
- NIC 에서의 공식주소할당
  sub-TLA 할당 주소 : 2002::/16
6to4 transition 용 주소 : 2002::/16
- 6bone-KR 주소할당 -3ffe:2e01:
  NLA1 (3ffe:2e01::/32 ? 3ffe:2e03:2::/32 6bone-KR, APAN-KR )
NLA2 (3ffe:2e01:1::/48 ? 3ffe2e01:9::/48)

  Comments,     Trackbacks