본문 바로가기

컴퓨터 공학/컴퓨터 네트워크

[컴퓨터 네트워크] 네트워크 계층 기본 개념 정리

1. Service of network layer

1.1 Packetizing

Encapsulating

  • 송신지에서 상위 계층에서 받은 데이터(=페이로드)를 네트워크 계층 패킷에 담는 것
  • 너무 크면 쪼개서 쪼갬 fragmentation

Decapsulating

  • 수신지에서 전달받은 패킷으로부터 페이로드를 꺼내는 것
  • 라우터나 송신지에서 패킷을 쪼개서 보내는 경우 모든 조각들이 도착할 때까지 기다렸다가 재조립하고 상위 계층으로 전달

1.2 Routing

  • 물리적으로 네트워크의 조합되어 사용되기 때문에 하나 이상의 송수신지가 경로에 존재함
  • 따라서 여러 경로 중 최적의 경로를 찾아줌

1.3 Forwording

  • 라우터 input → output 으로 패킷 이동시키는 것
  • 이때 포워딩 테이블 참조해서 적절한 수신지로 보냄

1.4 Error control

  • 각 라우터에서 조각난 패킷들에 대한 에러 체크를 모두 확인하면 비효율적이라 하지 않음
  • 패킷에 체크섬필드만 헤더에 추가하여 corruption된 조각임을 알리는 정도만

1.5 Flow control

  • 없음
  • 상위 계층에서 버퍼를 사용해서 데이터를 받기 때문에 흐름 제어 해줌

1.6 Congestiong control

  • 인터넷 분야에 너무 많은 데이터그램이 있기 때문에 혼잡이 너무 많음
  • 인터넷 네트워크 계층에서 구현 X

즉, 네트워크 계층에서 오류, 흐름, 혼잡 제어 없음 + 보안 요소 없음

2. Packet switching

  • 또는 circuit switching
  • 패킷 스위칭은 네트워크 계층에서만 사용됨
  • 상위 계층에서 오는 메시지를 관리 가능한 사이즈의 패킷으로 쪼개고 각 패킷을 네트워크를 통해 보냄
  • packet switching →
    • 데이터그램 접근법 : 비연결 서비스
    • 가상 회선 접근법 : 연결 지향 서비스

2.1 Datagram approach

  • 비연결 서비스 (패킷간 관계 없음)
  • 각 패킷은 헤더에 있는 destination address 정보를 기반으로 라우팅 됨
  • 패킷 헤더 → 목적지 주소 확인 → 포워딩 테이블에서 아웃풋 인터페이스로 패킷 전달

2.2 Virtual circuit approach

  • 연결 지향 서비스
  • 가상 연결은 데이터그램을 보내기 전에 경로를 미리 준비해 둠 → 미리 세팅한 경로가 가상 회선
  • 각 패킷은 패킷 내부에 incoming 라벨을 확인 → 포워딩 테이블에 그 라벨에 해당하는 outgoing 라벨을 찾아 보냄

3. Performance of network layer

  • 성능 지표 : delay, throughput, packet loss

3.1 Delay

  • transmission delay = packet length / transmission rate
  • propagation delay = distance / propagation speed
  • processing delay = 라우터나 수신지에서 패킷을 처리하는데 필요한 시간
  • queuing delay = 인풋 아웃풋 큐에서 패킷이 대기하는 시간
  • total delay = (n+1)(transmission delay + propagation delay + processing delay) + (n)(queuing delay). ** n = 양단 사이에의 라우터 개수

3.2 Throughput

  • transmission rate에 의해 결정됨
  • 일정 시간 동안 보낼 수 있는 비트의 수
  • throughput = 송수신지 사이에 존재하는 모든 링크의 transmission rate 중 가장 작은 것 (최악의 속도)
  • 두 라우터 사이의 링크는 항상 하나의 흐름만 사용하는 것이 아니라 분산된 프름 중
  • not always dedicated to one flow
  • collect several flow and shared

3.3 Packet loss

  • 한 패킷을 처리하는 동안 라우터가 다른 패킷을 받으면 그 패킷은 input 버퍼에 저장됨
  • input 버퍼는 제한적인 사이즈를 가짐
  • 버퍼가 가득차거나 다음 패킷이 버려져야 할 때 패킷 손실 발생
  • 패킷 손실 → resent 재전송 발생 → 오버플로우 패킷 손실 더 크게 발생

4. Congestion

4.1 open loop congestion control

  • 혼잡 발생 전 예방하기

retransmission policy

  • 재전송은 혼잡 더 증가시킬 위험이 있지만
  • 좋은 혼잡 예방 방법

window policy

  • GBN, SR 에서 사용하는 송신측의 윈도우 타입
  • Go Back N 윈도우: 패킷의 타이머가 타임아웃되면 여러개의 패킷들이 재전송됨 (안전하게 도착한 패킷도 포함해서)
  • Selective repeat 윈도우 : 손실된 패킷만 재전송 시도

acknowlegement policy

  • 수신자가 받는 모든 패킷에 대해 ack를 하지 않으면 송신자는 보내는 속도 늦춤

discard policy

  • 라우터에 의해 동작
  • 전송의 integrity를 해치지 않음

admission policy

  • 가상 회선 네트워크 상에서 혼잡 예방 매커니즘

4.2 closed loop congestion control

  • 혼잡 발생 후 완화시키기

backpressure

  • 혼잡 발생시 이전 라우터에 backpressure
  • 각 라우터를 거쳐 결국 송신지로 backpressure

choke packet

  • 혼잡 발생 시점에서 choke packet을 송신지로 보냄

implicit signaling

  • 혼잡이 발생한 노드 - 송신지간 소통 없음
  • 송신지는 다른 신호들로 혼잡이 있을 것이라고 예상하는 방식

explicit signaling

5. Router

  • input ports
  • output ports
  • routing processor : 포워딩 테이블을 참조해서 다음 hop 주소와 output 포트 넘버 찾음 (= table lookup)
  • switching fabrics
    • batcher-banyan swtich

6. Network layer protocol

6.1 IP 데이터그램 포맷

  • VER : ip 프로토콜 버전 정의 4 비트 ( 4 → 6 = 0110)
  • HLEN : 헤더 총 길이 4 비트
  • TOS : 서비스 타입 8 비트
  • 총 길이 : 데이터그램의 총 바이트 정의 16 비트 (데이터 길이 =총 길이 - 헤더 길이)
  • identification: fragmentation 에 사용할 16 비트
  • flag : fragmentation 에 사용할 3 비트 플래그
  • TTL (time to live) → 라우터 방문할 때마다 값이 감소하고 0 이 되면 버림, 방문하는 홉의 수를 최대치를 제한하기 위해 사용
  • 프로토콜 : TCP, UDP, ICMP, IGMP, OSPF 등 이 계층에서 사용하는 서비스를 정의하는 8 비트
  • checksum : 16비트 오류 확인
  • 송신지 아이피 주소 32 비트
  • 수신지 아이피 주소 32 비트
  • MTU (maximum transfer unit) : 프레임에 데이터그램을 캡슐화할 때 데이터그램의 총 사이즈는 MTU 보다 작아야됨 크면 fragment

fragmentation 관련 필드

  • 데이터그램을 fragmentation으로 쪼갬
  • 송신지는 IP 패킷을 잘 쪼개지 않음
  • 데이터그램이 쪼개진 경우 각 조각들은 자신만의 헤더를 가짐
  • 수신지는 헤더 정보를 기반으로 데이터그램을 재조립
  • identification (16비트) : 송신지에서 만드는 필드로 데이터그램 공유 식별 가능한 필드, 이 숫자를 기반으로 재조립
  • flags (3비트) : 1 reserved, 2 do not fragment, 3 more fragment
  • fragmentation offset (13비트) : 8바이트 단위, 0000/8= 0 , 1400/8 = 175

6.2 IPv4 주소

  • 32비트 주소
  • 고유함
  • 주소 공간 = 2^32

표기법

  • 이진 표기법 : 32 비트로 나타내기
  • dotted decimal 표기법 : 이진수를 8개씩 잘라서 십진수로 바꾸고 . 으로 나눠서 표현
  • 이진수로 32비트 나열해서 앞에서부터 4개씩 16진수로 바꿔서 표현

addressing 계층 구조

  • prefix : 네트워크 정의 (n 비트)
  • suffix : 연결한 네트워크 중 노드 정의 (32-n 비트)

classful addressing

  • A ~ E
  • prefix 크기 : A = 8 < B = 16 < C = 24
  • 프리픽스가 클수록 구분해야 하는 네트워크가 많다는 뜻이므로 더 큰 망에 있다는 것을 의미
  • D : 멀티캐스트 주소
  • E : 미래 사용을 위해 예약된 것
  • 주소 고갈 완화를 위한 기법
    • subnetting : A, B 클래스를 여러개의 서브넷으로 나누고 각 서브넷은 원래의 네트워크보다 prefix 길이가 길다. → not work
    • supernetting : C 클래스 블럭 여러개를 하나의 큰 것으로 조합 → not work
  • 제약사항
    • 블럭 내 주소의 개수는 2의 제곱수
    • 첫번째 주소는 반드시 주소 개수로 나누어 떨어짐
    • mask - 주소에 항상 동반됨 x.y.z.t/n => n 은 블럭에서 모든 주소에 동일한 구간의 비트 수를 정의
      • prefix = 주소 범위에서 공통된 부분
      • suffix = hostid, 달라지는 부분
      • 167.199.170.82/27이면 167.199.170.82를 이진수로 나열하고 앞에부터 27 비트는 고정된 비트이고 그 뒤에 suffix만 바뀌는 것 suffix 000..0 부터 1..1

6.3 네트워크 주소

  • 주소 블럭의 첫번째 주소 = 네트워크 주소
  • 프리픽스가 n 이면 첫번째 주소 = 2^(32-n)
  • 1000개의 주소가 필요하다고 하면 2의 제곱수중 1000보다 크게 → 2^(32-10) = 2^22 ⇒ /n = /22로 설정해야 됨

6.4 특별한 주소

  • This-host : 0.0.0.0/32
  • limited-broadcase : 255.255.255.255/32 - 라우터에 연결된 모든 디바이스로 보냄
  • loopback : 127.0.0.0/8 송신지로 되돌아 옴
  • private : 10.0.0.0/8 , ...
  • 멀티캐스트 주소 244.0.0.0/4
    • 멀티캐스트 주소는 suffix를 전부 1로 설정,

6.5 DHCP

  • dynamic host configuration protocol
  • DHCPDISCOVER 메시지 : 트랜잭션 아이디가 랜덤넘버로 설정되는 경우 생성
  • DHCP 서버는 DHCPOFFER 메시지로 응답
  • offer에 대한 응답으로 DHCPREQUEST
  • 선택됨 서버는 DHCPACK로 응답
  • 포트넘버 : 있다 67 68

6.6 NAT

  • network address translation
  • private - universal 주소 간 맵핑 제공하는 기술
  • virtual private 네트워크 제공
  • private 주소에 매칭하는 universal 주소 보여주는 translation table
  • n:m 연결 허용
  • translatoin table : 송수신지 포트, 주소와 전송 계층 프로토콜

6.7 IP패킷 포워딩 기술

  • next hop method : 라우팅 테이블 → 목적지 호스트와 다음 라우터 (홉) 주소만 가지고 있음
  • network specific method : 라우팅 테이블의 각 엔트리 ⇒ 목적지 네트워크 주소를 가지고 있음
  • host specific method : 위와 달리 네트워크 내부 다른 호스트 주소를 가지고 있음
  • classless addressing
    • address aggregation
    • longest mask matching : 지리적으로 가까운 경우, 라우텅 테이블이 가장 긴 마스크부터 짧은 것까지 정렬 m1, m2, m3...
    • hierarchical routing
    • geographical routing
  • routing table searh algorithm
    • longest match 사용
    • 리스트 말고 다른 자료 구조 사용 (트리)
  • based on label : 패킷 앞에 붙은 라벨을 보고 포워딩 (연결 지향)
  • MPLS (multi protocol label switching)
    • 라우터처럼 동작 → 목적지 주소를 기준으로 포워딩
    • 스위치처럼 동작 → 라벨을 기반으로 포워딩
    • 해더 = 서브 헤더의 스택 / label → 라우터에서 포워딩 테이블 인덱스 찾기 위해 사용하는 라벨, Exp reserved, S 1이면 마지막 스택이라는 뜻, TTL 0 이면 패킷 버림

6.8 ICMPv4

ICMP message

  • 하위 계층으로 가기 전에 ip데이터그램 내부를 캡슐화
  • 프레임 → ip 헤더 + 데이터 → IP 데이터를 ICMP 메시지로 캡슐화

→ error reporting

  • ip 패킷 처리 중 라우터나 목적지 호스트가 마주할 수 있는 문제 보고
  • 도달할 수 없는 목적지 unreacheable destinatoin
    • 라우터가 데이터그램을 보낼 수 없거나 수신지가 받을 수 없는 경우 해당 데이터그램은 버려지는데 이때 destination unreachable 메시지를 원 송신지로 보냄
    • type3
    • 헤더 나머지: 사용되지 않음 모두 0
    • 데이터 부분 : 헤더 포함 데이터그램 일부 + 데이터그램 데이터의 첫번째 8 바이트
  • source quench
    • 흐름 제어의 일부
    • 데이터그램이 혼잡으로 인해 버려질 때 송신측에 source-quench 메시지를 보내서 버려졌음을 알리고 혼잡을 경고함
    • type 4
  • 시간 초과 time exceeded
    • type 11
    • code 0 : TTL 값이 0으로 된 데이터그램은 버려짐
    • code 1 : 최종 목적지가 정해진 시간 내에 모든 fragment를 받지 못한 경우
    • traceroute 프로그램으로 패킷 경로 추적 가능
  • 파라미터 문제
    • type 12
    • 라우터나 목적지 호스트가 생성할 수 있는 메시지
    • code 0: 헤더 일부에 문제 발생 → 포인터 필드의 값이 문제가 생긴 부분의 바이트를 나타냄
    • code 1 : 옵션 일부가 없는 경우
  • redirection
    • type 5
    • 헤더 나머지 부분 16비트 : 타겟 라우터 ip 주소
    • code 0 : network specific route 로 리디렉션
    • code 1 : host specific route로 리디렉션
    • code 2 : 특정 타입의 서비스 기반 network specific route로 리디렉션
    • code 3 : 특정 타입의 서비스 기반 host specific route로 리디렉션
  • 데이터 섹션에 문제가 있는 패킷을 찾기 위한 정보 담고 있음
  • 항상 원 송신지로 에러 메시지 report
  • 응답 메시지 X, first fragment가 아닌 데이터그램에 대해서, 멀티캐스트 주소 가지고 있는 데이터그램, 특별 주소 가지고 있는 데이터그램에 대해서는 에러 메시지 만들어지지 않음

→ query

  • 호스트가 라우터로부터 특정 정보를 얻을 수 있도록 돕는 메시지
  • 데이터 섹션에 쿼리 타입 기반으로 추가 정보를 담고 있음
  • 8 바이트 헤더
  • type 8 or 0 : echo request or reply
    • echo request → 호스트 또는 라우터가 보낼 수 있음
    • echo reply → request 메시지를 받은 호스트 또는 라우터가 보냄
    • 네트워크 관리자가 ip 프로토콜 동작 확인을 위해 사용
    • host 도달 가능성을 테스트하기 위한 메시지
    • 데이터 섹션에 보낸 메시지를 그대로 응답 받음
    • ping 프로그램에서 사용
  • type 13 or 14 : timestamp request or reply
    • 데이터그램이 돌아다니기 위해 필요한 round trip time을 결정하기 위한 요청 응답 메시지
    • original time stams, recevie, transmit timestamp
    • 각 필드는 ms 단위로 표현되는 숫자 가지고 있음
  • type 17 or 18 : address mask request or reply
    • requesta 메시지는 address mask in data section = all 0s
    • reply에 얻고자 하는 mask 주소 담김
  • type 10 or 9 : router solicitation or advertisement

7. Unicast routing

7.1 least cost routing

  • 가중치 그래프로 모델링된 인터넷 → 최소 비용 경로 찾기
  • N 개의 라우터가 있다면 각 라우터마다 N-1 least cost 경로가 있음
  • 전체 인터넷에 필요한 least cost path는 n*(n-1)개
  • least cost trees : 전체 노드를 방문하는 그래프

7.2 distance vector routing

  • 어떤 두 노드 사이의 거리가 최소 = 최소 비용
  • 벨만 포드 공식 : souce x - destination y 사이의 최소 비용(거리) 찾는 공식
  • 초기화 : 각 노드마다 자기 자신과의 거리 0, 이웃 노드까지의 거리의 알 수 있음, 나머지 모르는건 무한대로 표시 (각 노드마다 테이블 가짐)
  • sharing : 노드는 이웃의 테이블 모름, 최선의 방식은 전체 테이블을 전달하고 받은 쪽이 알아서 사용하는 것, 거리 벡터 라우팅에서는 각 노드가 자신의 이웃노드들과 라우팅 테이블을 주기적으로 또는 변경이 있을 때 공유
  • updating
  • two node loop instability
    • define infinity : 각 노드가 1이고 최대 16으로 제한
    • split horizon : 각 노드가 테이블 일부를 보냄
    • poison reverse : Do not use this value; what I know about this come from you
  • three node instability

7.3 link state routing

  • 최소 비용 트리, 포워딩 테이블 생성을 위한 라우팅 알고리즘
  • link state database (LSDB)
    • 각 네트워크 (노드)에 대한 연결 상태 정보를 담고 있는 map
    • building LSDB = flooding
      • 각 노드는 이웃노드에 인사 메시지 보내면서 자신의 식별자와 연결 비용 알림 (LS 패킷) + sequence number (새로운 버전의 패킷이 만들어질때마다 증가하는 숫자)
      • 각 노드는 LSP를 만들고 각 인터페이스로 보냄
      • LSP를 받은 노드는 기존의 패킷과 비교, sequence number를 통해 이미 가지고 있는 것인지 아닌지 판단
      • 오래된 LSP는 버리고 새로운 것을 유지하고 이것의 복사본을 받은 곳을 제외한 다른 인터페이스로 보냄
      • 모든 새로운 LSP를 받은 후 각 노드는 LSDB를 완성
  • 최소 비용 트리 생성
    • 모든 LSP를 받은 후 각 노드들은 전체 LSP 복본을 가지고 있음
    • 최단 경로 트리가 필요
    • 다익스트라 알고리즘 사용

7.4 path vector routing

  • 최소 비용 라우팅 기반 아님
  • ISP들 사이의 패킷 라우팅을 위해 설계된 알고리즘
  • spanning tree
    • source → 모든 destination 경로는 best spanning tree에 의해 결정
    • 만약 하나 이상의 목적지로 라우팅한다면 source는 자신의 정책으로 최적의 경로 찾아야 함
    • source는 동시에 여러개의 정책 적용할 수도 있음
    • 일반적인 정책 중 하나는 방문하는 노드의 수가 최소인 정책
    • 각 source 마다 자신의 spanning tree 생성 - 최소한의 노드만을 거쳐서 목적지로 도달할 수 있게 하는 정책 적용
  • spanning tree 만들기
    • 노도 시작 → 이웃 노드 정도 기반으로 거리 벡터 생성
    • 노드는 이웃노드로 인사 메시지 보내서 정보 얻음
    • 각 노드는 이웃 노드로부터 얻어서 초기화한 정보 전체를 이웃 노드로 보냄
    • 각 노드는 이웃으로 부터 또 받아서 업데이트함 → 여기서 업데이트는 새로 받은 정보 중 최선의 경로로 선택하는 것

7.5 unicasting routing protocols

  • unicasting : 하나의 송신지 → 하나의 수신지

인터넷

  • 모든 연결 중추 backbone
  • provider network → 모든 연결 객체들 = ISP Ineternet service provider
  • AS (autonomous system) 내부의 라우팅 = intradomain routing
  • AS 간 라우팅 = interdomain routing

RIP (Routing informaton protocol)

  • distance vector 알고리즘 사용
    • 라우터는 포워딩 테이블 전체를 응답 메시지에 담아 보냄
    • 받는 쪽은 hop 개수 하나 추가
    • 수정된 포워딩 테이블의 각 경로 = received route
    • 오래된 포워딩 테이블의 각 경로 = old route
    • 새로 받은 포워딩 테이블이 추가적인 정보를 가지고 있거나 더 작은 비용을 가지고 있는 경우 수정
    • 새로운 테이블의 값이 더 크지만 다음 라우터 값이 같은 경우 새로운 것 선택
  • intradomain routing , AS 내부
  • cost = hop count
  • 송수신지 사이의 라우터의 개수 → 맥스가 16, 15까지 나타낼 수 있음
  • 애플리케이션 계층에서 실행되지만 네트워크 계층을 위해 포워딩 테이블 생성
  • UDP , 520 포트 사용해서 라우팅 업데이트
  • RIP 메시지 : request, response
    • command : 1 - request, 2 - response
    • version : 오늘날은 2
    • family : TCP/IP 프로토콜인 경우 2
    • tag : AS 에 대한 정보
    • network address : 목적지 주소
    • subnet mask : prefix 길이
    • next hop address : 주소 길이
    • distance : 목적지까지 거쳐야 하는 hop의 수
  • 타이머
    • periodic : 일반적인 업데이트 시간 알려줌 25~35 중 랜덤, 감소하다가 0에 도달하면 업데이트 메시지 전송
    • expiration : 경로의 유효성 알림, 문제가 있다면 hop count를 16으로 만듦
    • garbage collection : 경로정보가 invalid → 즉시 제거 X 16값을 가지고 계속해서 advertise, 동시에 GC 타이버가 120으로 맞춰짐
    • 숫자가 0에 도달하면 route 제거

OSPF (open shortest path first)

  • link state 알고리즘 기반 LSDB
  • 각 연결마다 가중치 부여
  • 각 노드마다 다익스트라 알고리즘을 사용해서 shortest path tree 생성한 후 포워딩 테이블을 만듦
  • AS를 area로 나눔
  • area = AS 내에 포함된 네트워크, 호스트, 라우터의 집합
  • area border router 는 다른 area로 보내는 정보를 요약함
  • 모든 area들은 백본에 연결되어야 함 → broken → 가상 연결 생성
  • router link
    • 노드에 라우터 존재 알림
    • 포인트 투 포인트 링크는 라우터 두개가 라우터나 다른 호스트 없이 둘만 연결
    • transient link는 여러 라우터가 붙는 네트워크
    • stub link 는 오직 하나의 라우터에 연결되는 네트워크
  • network link
    • 네트워크를 노드로 알리는 것
    • 네트워크는 자기 자신을 알릴 수 없기 때문에 라우터 중 하나가 설계된 라우터로 할당되어야 함
    • 즉, 설계된 라우터 = 네트워크 노드
  • summary link to network
    • area border router 가 수행
    • 백본에 수집된 연결 요약 알리거나
    • 백본에 연결된 area에 수집된 요약 정보 알림
    • area border router가 area들에게 advertise
  • summary link to AS
    • AS router에 의해 수행
    • 백본 영역에 연결된 AS로부터 요약 알림
    • AS router가 area 로 advertisement
  • external link
    • AS router에 의해 수행
    • AS 외부에 하나의 네트워크 존재 알림
    • AS router가 area 또는 외부 네트워크에 advertisement
  • OSPF 메시지
    • 일반적인 헤더 : 모든 메시지에 사용
    • link state general 헤더 : 일부 메시지에만 사용
    • 타입
      • hello message : 라우터가 이웃에 자신을 알리기 위해 사용
      • database description message : hello에 대한 응답으로 전체 LSDB완성을 위해 새로 들어온 라우터를 넣음
      • link state request message : 라우터가 특정 링크 상태 알기 위해 보냄
      • link state update message : LSDB 생성을 위해 사용
      • link state acknowledgement : ospf 안정성 생성을 위해 사용

BGP4 (border gateway protocol version 4)

  • path vector
  • interdomain routing protocol (AS간)
  • external BGP4 각 border router에 설치
    • eBGP 이 설치된 border 라우터가 TCP 연결을 생성하려고 하는 경우 (179 포트 넘버) → 각 경우마다 순환되는 숫자가 보내는 라우터 정의
    • 예를 들어 AS1의 border router인 R1이 R5에게 자신의 AS1에 연결된 라우터들을 알림
  • internal BGP4 모든 라우터에 설치
  • BGP의 역할은 AS 내부 라우터들이 자신의 라우팅 정보를 주장하는 것을 돕는다.
  • intradomain (AS 내부 네트워크) 포워딩 테이블 (RIP, OSPF)에 다른 AS 정보 연결
  • path attribute
    • interdomain 라우팅은 intradomain에 비해 더 많은 정보 필요
    • o, p , t, e = 맨 앞에 4비트 , 뒤 4비트는 모두 0
    • optional bit : 속성이 옵션인 거면 1
    • partial bit : 옵션인 속성이 전송중 손실되면 1
    • transitive bit : 속성이 전송가능하면 1
    • extended bit : 속성 길이가 2 바이트면 1
  • path attribute
    • type1 ORIGIN : well known 의무 속성, 라우팅 정보 source 정의
      • 1 RIP or OSPF , 1 BGP, 3 unknown
    • type2 AS-PATH : 의무, 도달할 수 있는 AS 리스트
    • type 3 NEXT-HOP : 의무, 데이터 패킷이 나아가야할 다음 라우터 정의
    • type 4 MULTI-EXIT-DISC : 선택적, 전송 불가 속성
    • type 5 LOCAL-PREF : well known discretionary , 집단 정책에 기반, 관리자가 설정, 지역 선호 부여
    • type 6 ATOMIC-AGGREGATE : well keno discretionary, 목적지 프리픽스 정의, 오직 하나의 목적지
    • type 7 AGGREGATOR : optional transitive, 목적지 프리픽스가 aggregate라고 강조
  • 메시지
    • open message : 이웃 관계 형성, BGP 실행하는 라우터가 TCP 연결을 열고 이웃에 보냄
    • update message : 이전에 이미 알린 목적지 라우터로 새로운 목적지 알릴 때 사용
    • keepalive message : 주기적으로 살아있음을 알림
    • notification : 에러 상태 감지하거나 라우터 닫을 때 알림

8. Multicasting

  • 하나의 송신지 → 여러 목적지 (목적지 그룹)
  • 하나의 송신지에서 하나의 패킷으로 시작하는데 이를 라우터가 목적지만큼 복제하는 것
  • multiple unicasting은 하나의 송신지가 여러개의 패킷을 보내는 것이므로 멀티캐스팅과 다른 것

8.1 멀티캐스트 응용

  • 분산 데이터베이스에 접근 : 사용자의 요청이 모든 분산된 데이터베이스로 멀티캐스트됨
  • information dissemination : 소프트웨어 모든 구매자들에게 업데이트 소식 알리는 것
  • teleconferencing : 텔레컨퍼런스에 참가한 사람들 모두 동시에 같은 정보를 받아야 함
  • distance learning

8.2 Broadcasting

  • one to all communication : 호스트가 인터넷에 있는 모든 호스트에게 패킷을 보냄 → 대역폭 양이 너무 방대해서 실제로 잘 사용되지 않음
  • 부분적 브로드캐스팅 사용 : 일부 피어투피어 애플리케이션에서 모든 피어들에게 접근할 때 브로드캐스팅 사용

8.3 멀티캐스트 주소

  • 멀티캐스트 주소가 수신자 그룹을 정의
  • 목적지호스트는 유니캐스트와 멀티캐스트 데이터 그램을 구분해야 하기 때문에 IPv4는 주소 블럭을 할당
  • 모든 클래스 D 주소는 멀티캐스트 주소에 사용됨 224.0.0.0 ~ 239.255.255.255 (224.0.0.0/4) → 앞에 4비트만 고정된 프리픽스도 뒤 28비트로 그룹 식별
  • 멀티캐스트 블록의 서브 블록
    • local network control block 224.0.0.0/24 : 네트워크 내부에서 사용되는 멀티캐스트 라우팅 프로토콜에 할당
    • internetwork control block 224.0.1.0/24 : 인터넷 전체에서 할당
    • source specific multicast block 232.0.0.0/8 : IGMP 프로토콜에서 사용
    • GLOP block 233.0.0.0/8 : AS 내부에서 사용, 주소 범위 정의
    • adminstratively scoped block 239.0.0.0/8 : 인터넷의 특정 area에서 사용되는 블럭
    8.4 IGMP
    • internet group management protocol
    • 그룹 멤버들의 정보를 얻기 위해 사용하는 프로토콜
    • 네트워크 계층에서 정의
    • IGMP 메시지는 IP 데이터그램에 캡슐화됨
      • query message : 라우터가 주기적으로 붙어있는 모든 호스트에게 보내는 메시지, 그룹 내 멤버들의 interest를 보고하도록 요청
        • general query message : 어떤 그룹에서든 멤버에 대한 질문 요청, 224.0.0.1, 모든 라우터들은 이 메시지를 받으면 이 메시지가 이미 왔고, 다시 보내는 것을 자제하도록 알림
        • group specific query message : 라우터카 특정 그룹에 연관된 멤버에 대한 질의, 라우터가 특정 그룹에 응답을 받지 못하거나 특정 그룹에 비활 멤버가 있는 것을 확인하고자 할 때 보냄
        • source and group specific query message : 라우터가 특정 그룹과 관련있는 멤버에 대해 묻는 메시지, 특정 소스로부터 메시지가 왔을 때
      • report message
        • 호스트가 쿼리 메시지에 대한 응답으로 보내는 것
        • 메시지는 레코드 리스트를 가지고 있음
        • 각 레코드는 해당하는 그룹 식별자와 호스트가 메시지를 받길 원하는 모든 호스트에 주소 정보를 가지고 있음
        • 메시지는 멀티캐스트 주소 224.0.0.22에 데이터그랩으로 캡슐화
    8.5 Multicast forwarding
    • 패킷의 목적지는 하나의 그룹을 의미함
    • 그 그룹은 인터넷에서 하나 이상의 멤버를 의미함
    • 패킷에 적힌 목적지와 송신지 주소 모두를 보고 포워딩
    8.6 multicasting approach
    • 송신지 하나당 하나의 트리
    • shortest path tree
    • reverse path forwarding
    group shared tree
    • 그룹이 하나의 트리 공유
    • minimal spanning
    • center based trees

    9. Intradomain routing protocol (AS내)

    9.1 DVMRP
    • distance vectore multicast routing protocol
    • RIP 확장
    • source-based tree 접근법 사용
    • 라우터가 세가지 알고리즘 사용
      • RPF Reverse Path Forwarding
        • 송신지가 라우터에 전달한 unicast shortest path 정보에 의존
      • RPB Reverse Path Broadcasting
      • RPM Reverse Path multicasting
    9.2 MOSPF
    • multicast open shortest path first
    • 다익스트라 알고리즘 사용해서 최단 경로 트리 생성
    • 라우터는
    9.3 PIM
    • protocol independent multicast
    • 특정 유니캐스트 라우팅 알고리즘에 의존 X
    • 두가지 멀티캐스트 분산 시나리오
      • PIM-DM : protocol indenpendent multicast dense mode, 그룹 멤버들이 밀집된 상태, 대역폭이 충분한 상태
      • PIM-SM ... sparse mode, 그룹 내 멤버들이 퍼져있는 상태로 대역폭이 충분하지 않은 상태

    10. IPv6

    10.1 pakcet format
    • 주소 128 비트 = 16 바이트
    • version 4 bit = 6 = 0110
    • traffic class : 데이터그랩 우선순위 식별
    • flow label : 같은 흐름 내에 있는 데이터그램 식별 → 연결 지향 프로토콜로 사용
    • payload length : 2바이트, 헤더를 제외한 IP 데이터그램 길이 정의
    • next header : 첫번째 확장 헤더의 타입 또는 상위 계층 프로토콜 식별
    • hop limit : 8 비트, TTL 필드와 같은 목적
    • source and destination address : 16 바이트 = 128 비트
    • payload
    • 오직 송신지에 의해서만 fragment 될 수 있고 라우터는 안됨
    • 재조립은 목적지에서 수행
    • extension header → fragmentatoin, authentication, extended security payload 등이 나타남
    10.2 IPv6 addressing
    • 128 비트 → 4*8 16진수
    • 앞 부분의 0들은 생략될 수 있음
    • 계층적 주소 사용
    • slash, CIDR 표기법 허용
      • ** CIDR / 뒤에 고정 프리픽스 개수 나타내는 표기법 ㅜ
    • 주소 공간이 v4에 비해 2^96 배 커짐 → 2^128개의 주소 수용 가능
    • 주소 타입 : unicast, anycast, multicast
    10.3 special address
    • unspecified address : 오직 하나의 주소만 가지고 있는 서브 블럭, 호스트가 자신의 주소를 몰라서 묻기 위해 보내고 싶을 때 사용하는 것 000::/128 = 128 전체 다 0
    • loopback address : 하나의 주소 0000::1/128 = 000...001 (마지막만 1)
    • compatible address : 다른 컴퓨터로 메시지를 보내고 싶을 때 사용 0000::/96 → 다 0인데 뒤에 32비트로 버전4 주소 나타냄
    • mapped address : 컴퓨터가 이미 버전6으로 마이그래이션 한 상태에서 아직 버전4를 쓰는 컴퓨터로 보내고 싶을 때 사용 0000::FFFF/96 → 다 0 인데 뒤에 16비트 전체 1 + 뒤에 32비트로 버전4 주소 나타내기
    • unique local block
    • link local block
    10.4 IPv4 → IPv6
    • IPv6를 사용하는 컴퓨터가 IPv4를 사용하는 지역을 지나 서로 소통하고 패킷을 전달하고자 할 때 사용하는 방식
    header translation
    • 인터넷의 대부분이 버전6으로 이동하고 일부만 4를 쓰고 있을 떄 필요한 전략
    • 버전 6 구간을 사용하다가 4는 헤더 변환을 수행하고 지역 또는 호스트에 접근

    11. ICMPv6

    • internet control message protocol version 6

    12. Middleboxes

    • network appliance, network function
    • stateful → 모든 패킷과 연결에 대해 정교한 데이터를 업데이트 하고 가지고 있음
    • 패킷에 대한 복잡하고 다양한 오퍼레이션 수행
    • 안전하고 성능 좋음
      • NAT
      • application specific
      • caches
      • load balancser
      • firewalls, IDS
      • billing and usage monitoring
      • asset tracking
    • ex) Intrusion presentation system → 모든 연결들을 모니터링하고 이상한 활동을 감지함
    • ex2) web proxy → 성능 향상 appliance: 대역폭 시간 등 향상을 위해 웹 컨텐츠 캐싱
    • 최근 트랜드
      • proprierary hw
      • whitebox hw, 오픈api로 구현
      • nfv (network function virtualization)
  • tunneling
  • source based tree