TIL 2021-10-12 IPv6
IPv6는 인터페이스들을 위한 128bit 식별자다.
interface는 node가 link가 붙은것
128bit = 16btye
32개의 16진수로 표현됨
16bit(16진수 2개 이상) 이상의 0은 ::을 통해 묶음
2001:DB8:0:0:8:800:200C:417A
->
2001:DB8::8:800:200C:417A
0:0:0:0:0:0:0:0
->
::
모든 타입의 IPv6 주소는 노드가 아니라 interface에 할당됨
모든 인터페이스는 최소한 하나의 Link-Local unicast 주소를 가져야한다.
하나의 인터페이스는 어떤 타입(unicast, anycast, multicast)이든 다양한 IPv6 주소를 가질수 있다.
subnet prefix는 하나의 링크와 연결됨
여러 subnet prefix는 하나의 링크에 연결될수 있음
IPv6안에 허락되는 네트워크 마스크의 형태는 CIDR 다.
IPv6가 16진수라고 해도 network mask 값은 10진수
2001:410:0:1:0:0:0:45FF/128
2001:410:0:1::/64
2001:410:0::/48
대체로 128비트에서 64는 network prefix 64는 host prefix인데, 48비트만 사용했다는것은 나머지 16비트는 subnet으로 사용한다는 의미
3가지의 주소 타입
Unicast
하나의 인터페이스의 신별자
Anycast
인터페이스들의 식별자(가장 가까운 노드들과 communicate하기 위한 방법)
Multicast
인퍼에시들의 식별자(그 주소에 식별된 모든 인터페이스들에게 패킷을 보냄)
Unicast IPv6 주소
Global Unicast
Link-Local
Site-Local
Unique local
Special
Global Unicast주소
public IPv4와 동일
Globally routable and reachable on IPv6
플랫하고 계층적인 라우팅인 IPv4 기반 인터넷과 다르게 IPv6 기반 인터넷은 효율적이고 계층적인 addressing과 라우팅을 위한다는 기반으로 디자인됨
MSB 3bit가 001로 식별
3파트로 나누어짐
001로 고정된 부분
글로벌 주소로 현재 할당된 주소 prefix는 2000::/3
1. Global Routing Prefix - Site Prefix
기관에 할당된 Site prefix는 최소 /48임
45 + 001(higher order bits)
기관에 할당된 prefix는 제공자의 prefix의 부분임
2. Subnet - Site
하나의 /48 prefix는 제공자에 의해 기관에 할당되는데, 기관으로하여금 65535 subnets를 사용할수 있게 한다.
(서브넷의 64bit prefix 할당때문, 48bit -> 네트워크, 16bit -> subnet)
기관은 서브넷으로 받은 49~64bit를 사용가능
3. interface-id - Host
호스트는 각 노트의 interface tlrqufwkfmf tkdydgka
주소의 low-order 64bit를 대표하는 IPv6 부분은 interface-id라고 부름
2001:0410:00::/48 assigned by a provider
2001:0410:0100:0002::/64 는 기관안의 network subenet
2001:0410:0100:0002:0200:CBCF:1234:4404 서브넷 안의 node 주소
Interface Identifier
IPv6 unicast 주소의 interface identifier는 링크에 있는 인터페이스를 식별하기 위함
Interface ID
64비트
Modified EUI-64 format( binary value 000을 시작으로하는 값들 제외)
subnet prefix 안에서 unique해야함 (IPv6 주소의 unique와는 별개
EUI-64 format
Extended Unique Identifier(EUI)는 호스트가 스스로에게 unique 64비트 IP Version 6 interface identifer
IPv4와 대비되는 key benefit
IPv4의 DHCP or 수동 설정의 필요성을 지웠기 떄문
같은 모든 디바이스는 같은 mapping technique를 사용해야함
layer 2 address 의 일반적인 타입은 IEEE 802 MAC 주소다.
Layer 2 address
48비트(24비트 블럭 2개)
상위 24비트 -> organizationally unique identifier(OUI)-> 각각의 기관에 다른 값 할당
하위 24비트 -> 디바이스 식별자
EUI-64 Format
OUI이 24비트로 남아 있을때 device identifier가 24 대신 40 비트 되는 경우 제외하면, 48bit MAC 형태와 비슷함
IPv6 EUI-64 format 주소는 48bit MAC address를 통해 획득됨
MAC 주소는 먼저 두 24비트로 나누어짐(하나는 OUI, 하나는 NIC)
16bit 0xFFFE는 64bit EUI 주소를 위해 두 24비트 사이에 삽입
IEEE 는 FFFE를 EUI-48 MAC address에서 생성된 EUI 64에 나타나는 예약된 값으로 선택한다
왼쪽에서 7번쨰 비트는 inverted되야한다.이 비트는 이 identifier가 universally or locally administered인지 확인함.
if 0 -> locally
if 1 -> globally
Global Unicast Address Allocation
IPv4, IPv6, Address Space number, domain등은 Internet Assigned Numbers Authority(IANA)에 의해 관리됨
총 5개의 RIR가 있다. AfriNIC(Africa), APNIC(Asia-Pacific), ARIN(North America), LACNIC(Latin America, CARIBBEAN), RIPE NCC(Europe)
RIR은 IANA에 의해 할당된 address resource를 연계된 NIR에게 분배함
IPv6 Unicast 주소 스코프
Link-Local Scope
single layer 2domain의 무든 호스트를 식별함 (LAN)
link-local address
Unique-local scope
도달할수 있는 administrative site나 대체로 mutiple distinct link를 포함한 도메인의 모든 디바이스를 식별
unique-local address(ULAs)
Global scope
인터넷을 통해 접근할수 있는 모든 디바이스를 식별
Global Unicast address (GUAs)
Local-use Unicast Address
2가지 타입
Link-local address
on-link neigbour이나 Neighbor Discovery Process(NDP)에 사용
다른 unicast 주소가 없더라도 자동으로 설정됨
link-local adress의 scope = local link
Site local address
동일 사이트의 다른 노트들이 소통하는데 사용
Local-use Unicast Address
동일한 local-link로 연결된 노드들에만 사용
IPv6 스택이 node에 가능해졌을때, 하나의 link-local 주소는 부트 시간에 노드의 각 interface에 자동으로 할당됨
IPv6 link-local prefix (FE80::/10)가 사용되고
EUI-64 형식의 inteface identifier는 주소의 low-order 64비트로 연결됨
11~64비트는 0으로 설정됨
Link-local 주소는 local-link 스코프를 위해서며 사이트 내의 서브넷 사이에서 라우팅되면 안됨
Site-Local Address
Site-local address는 IPv4 Private address space와 동일 (10.0.0./8, 172.16.0.0/12, 192.168.0.0/16)
Site-local은 다른 사이트로부터 도달되면 안되고, 라우터는 site-local 트래픽을 사이트 밖에서 forward하면 안됨
스코프는 site
link-local address와 달리 자동으로 설정되지 않음
Special IPv6 주소
Unspecified address
0:0:0:0:0:0:0:0 or ::
address가 없다는 것을 나타낼때만 사용
IPv4의 0.0.0.0과 동일
임시 주소의 유일성을 검증하기 위한 packet attempting에 사용되는 source address로 사용됨
interface에 할당되거나 destination address로 사용되지 않음
Loopback address
0:0:0:0:0:0:0:1 or ::1
은 노드가 자체에게 패킷을 보낼수 있도록 하는 루프백 인터페이스를 식별하는데 사용
IPv4의 127.0.0.1과 동일
루프백 주소에 보내진 패킷은 링크 상으로 보내지거나 IPv6 라우터에 의해 forward되지 않음
Special IPv6 주소
IPv4 mapped IPv6 주소
1. IPv4 -compatible IPv6 address
IPv4 주소를 IPv6 주소로 embedding 하여 IPv6 디바이스로 하여금 IPv4 연결 네트워크와 소통할수 있게 해줌
나중에 IPv4라우터에 의해 추출되어 IPv4 네트워크를 통해 라우트 될수 있음
IPv4 네트워크를 통해 IPv6 패킷을 옮기는 automatic tunnel을 설립하기 위해 사용됨
0:0:0:0:0:0:~~~
96개의 0bit
2. IPv4 -mapped IPv6 address
IPv4 mapped IPv6 주소
IPv4 Only 노드의 주소를 IPv6 주소로 대표하기 위함
::FFFF:~~
80개의 0비트, 16개의 1비트
IPv6 Anycast
만약 동일한 Anycast 주소가 다른 노드의 인터페이스에 할당되어있다면, Routing Protocol 알고리즘에 의해 가장 가깝다고 결정되는 인터페이스로 전송됨
의의
traffic load balancing
2002년 DDos 공격으로 8/13 개의 루트 DNS를 다운시킴
Anycast IP를 사용함으로써, DNS는 하나의 지역이 무너지더라도, 다른 지역에서 서비스가 가능하게 분배할수 있음
Google public device 8.8.8.8
network redundancy를 위해 사용될수 있음
Server A에 통신이 없을떄, 클라이언트는 network operation의 아무런 설정 없이 Server B와 자동적으로 통신 가능
서브넷 라우터 anycast 주소는 predefined되어야함
anycast의 subnet prefix는 specific link을 식별하는 prefix임
Sub-Router anycast 주소는 노드가 라우터들의 집합중 어느 하나와 통신이 필요한 어플리케이션에 사용하려고 의도됨
건설될떄, 적합한 value를 고정시키고 남은 비트를 0으로 채움
서브넷에 연결된 모든 라우터 인터페이스는 그 서브넷의 Subnet-Router anycast주소로 할당됨
specified 서브넷의 연결된 가장 가까운 라우터오 ㅏ연결됨
IPv6패킷의 source 주소로 사용될수 없음
Multicast
IPv6는 broadcast가 없음.
IPv6에선 모든 노드들은 multicast를 지원해야함.
30년전엔 Multicast가 없었음
IPv4가 specified되면, IP네트워크를 위한 multicast standard가 없었음.
그래서 DHCP나 ARP 같은 많은 서비스는 broadcast에 의존해야했음
LANs의 크기가 거지고, 스위치가 있기에 broadcast 굳이
IPv6에서 multicast traffic 은 IPv4와 동일하게 작동함
IPv6 노드는 동시간에 다양한 multicast 주소를 listen할수 있음
노드는 어느 시점에서나 multicast group을 참여하거나 떠날수 있음
source address나 Routing extendsion header의 intermediate destination으로 사용할수 없음,
주 목표는 노드 간에 교환되는 패킷 량을 최적화하여 link의 bandwidth를 저장한 효율적인 네트워크를 만드는것