[CS] 아키텍쳐 관점에서의 DNS와 Namespace

2024. 1. 7. 07:53
반응형

 



DNS(Domain Name System)은 인터넷에서 도메인 이름을 호스트의 IP 주소로 매핑해주는 서버로 잘 알라져 있다.

DNS는 분산 시스템 관점에서 계층적 네임스페이스를 활용한 시스템이다.

 

 


 

Namespace의 개념

 

  1. Name : Entity를 Refer(참조)할 때 사용할 수 있는 시퀀스(Bit or String)
    • 분산 시스템에서의 Entity = 자원(Resources)
    • Access Point : Entity를 엑세스 할 때 필요
      1. Address : Access Point의 Name
      2. Entity의 Address를 Name으로 사용하지 않음 → 엔티티의 엑세스 포인트가 변경될 수 있음. 둘 이상의 엑세스 포인트가 있을 수 있음
        • 예) 전화번호(개인의 Address) → 여러 개의 전화번호를 가질 수 있음, Access Point 변경(전화번호, 이메일 주소..)
    • Identifier : 엔티티를 고유하게 식별하는 이름
      1. Identifier의 재사용 금지, 최대 하나의 Entity를 나타냄, 각 Entity는 하나의 Identifier로 참조됨
    • 분산시스템에서는 Naming System이 자체적으로 분산되어 있음


  2. Namespace : 특정 서비스의 Name이 구성되는 방식, 특정 서비스에서 인식되는 Name의 집합
    • 계층적 내부 구조를 가질 수 있음, 잠재적으로 무한함
    • 각각의 Name은 별도의 Context를 기준으로 함 → 서로 다른 엔티티가 관리하는 서로 다른 컨텍스트


  3. Name Resolution : Name → 명명된 리소스에 대한 정보로 Resolve(번역), 변환되는 과정
    • 요구사항 : Scalable(확장성), Long Lifetime(긴 수명), Availability(고가용성), Fault Isolation(결함 격리), Tolerance of mistrust(불신 상쇄)
    • 바인딩 (Binding): Name과 Resource의 연결 혹은 연관성, 주로는 주소와 연결된 것을 의미


  4. Name Service: 이름과 관련된 리소스 및 속성 정보를 저장하고 관리하는 서비스
    • 이 서비스는 하나 이상의 Name Context( = Binding(Name ↔ Resource))을 저장하며 Name Resolution 및 새로운 바인딩 생성, 바인딩 삭제 등의 작업을 지원


파일 이름은 계층적 내부 구조를 가지고 있으면서, Name(파일명)으로 Entity(파일)을 접근할 수 있음.

  • 리프 노드 : Named 된 Entity를 나타냄
  • 디렉터리 노드 : 에지 레이블, 노드 식별자 쌍의 테이블을 저장함(경로)
  • 원격 파일은 노드 이름, 경로 이름을 사용하여 엑세스 된다. → 위치 독립성
    • NFS(Network File System) Mount Protocol : 원격 노드를 Local DAG에 매핑


Namespace Distribution

 

 

Naming Graph의 Node를 배포하여, 여러 Machine들에 Name space와, Name Resolution을 배포함

Naming Graph에 따라 세 가지의 레벨을 구분함

  • Global layer : High level의 Directory Nodes들 → 다른 Adminstrations들이 함께 관리되어야 함
  • Adminstrational layer : Mid-level의 Directory Nodes들 → 각 그룹을 별도의 Admin들이 관리하도록 그룹화해주는 중간계층
  • Managerial layer : Admin 단일 관리 내의 Low-level의 디렉터리. Local name server와 효과적으로 매핑하는 것이 Issue

 

 

 

Name Resolution 구현 방식

 

 

 

Iterative Name Resolution

  • 루트 → 각 레이어는 최대한 확인 후 다음 네임서버의 주소 반환
  • 클라이언트 단에서만 캐싱 가능

 

 

Recursive Name Resolution

  • 루트 → 각 레이어는 최대한 해결하고 나머지는 다음 레이어에 전달 및 호출
  • 서버 단 캐싱과 함께 작동 시 유리함
  • 재귀적 방법으로 통신 비용(Communication Cost) 절감 가능
  • 각 네임서버에 상대적으로 높은 Performance을 요구함

 

 

 

 

 

 

 

 


DNS

DNS는 본래 중앙 파일은 HOSTS.TXT를 통해 관리되었었다. 하지만 이는 Scalability, Name의 충돌과 제한 및 일관성에 의한 문제가 발생하였다. 중앙 집중화된 Centralized DNS가 실패한 이유는 다음과 같다.

  1. SPoF
  2. 트래픽 문제
  3. Centralize Database와의 Distance
  4. 확장성(Scalibility)

따라서 DNS는 Name Resolution 기반의 분산 서비스로서의 패러다임을 가지게 된다.

 

< 함께 보기 : DNS의 작동 원리 >

 

https://sjh9708.tistory.com/185

 

[Network] 네트워크 주소 체계(Port, MAC, IP Address)와 DNS

네트워크 주소 체계 우선 네트워크에서 사용되는 Port, MAC, IP 등 주소의 종류와 주소 형식 체계에 대해서 살펴보자 Port 컴퓨터 내에서 특정 프로세스를 식별하는 데 사용 -> 같은 IP 주소 상의 호스

sjh9708.tistory.com

 

 

Name Resolution의 활용

 

1. Domain Name을 IP Address(Entity)에 매핑

  1. Lookup Mechanism : DNS는 Name(Domain Name)과 Entity(IP) 간의 Binding(Mapping)을 제공
  2. 데이터베이스로서 : Database의 Key는 Domanin Name이고, 각각은 하나 이상의 속성(Resource Record) 포함

2. 분산된 책임 : Domain 소유자에게 권한 위임

 



분산 시스템으로서의 DNS의 특징

 

  1. Global Distribution(전역 배포)
    1. 데이터는 로컬로 유지되지만, 전역적으로 검색 가능
      1. 로컬 DNS 캐시 조회 → 외부 DNS 조회
  2. Loose Coherency(느슨한 일관성)
    1. DNS 데이터베이스는 Master 복사본과 여러 복제본으로 구성. Mater 복사본에서의 변경 사항은 Zone 관리자가 설정한 시간대에 따라 복제본으로 전파.
    2. 데이터의 일관성을 유지하고 변경 사항을 네트워크 전체로 분산시키는 역할을 한다.
    3. DNS 데이터베이스는 여러 개의 존으로 나뉘며, 각 존은 일련 번호를 가지며, 이 일련 번호는 데이터베이스의 변경 사항을 추적하기 위해 사용된다.
  3. Scalability(확장성)
    1. 데이터베이스와 쿼리의 크기에 제한이 없음. → Master, Slave, Cache에 분산된 쿼리
  4. Reliability(신뢰성)
    1. Master의 데이터가 여러 Slave Server로 복사됨
    2. 클라이언트가 Master server 및, Slave server의 Copies들에 대해서 Query가 가능하다.
    3. 부하를 줄이기 위한 캐시 응답
    4. UDP 사용, Timeout 시 대체 서버 시도
      1. UDP 사용 : 전송 Object는 매우 작으며, Response를 받지 못하면 요청을 다시 보냄
      2. TCP는 오버헤드가 높아 Server간 Zone을 전송할 때에 사용됨
  5. Dynamicity(역동성)
    1. 마스터 데이터베이스를 동적으로 업데이트 할 수 있음
    2. 마스터 데이터베이스 수정 시, Slave 서버에 복제 과정이 Trigger됨
  6. Load Concerns(부하 처리)
    1. DNS는 Load Balance가 가능
  7. Performance Concerns(성능 처리)
    1. DNS는 매우 가벼운 프로토콜
    2. 모든 Performance Limitation은 네트워크 제한으로 인해 발생함
  8. Workload and Caching(캐싱)
    1. DNS 응답이 캐시됨.
    2. 철자 오류 등 Negative Query도 캐시하여 응답 시간 단축 및 부하 방지
  9. Security Concerns(보안)
    1. DNS 스푸핑 공격 → DNS 보안 확장 → DOS Attack..
    2. DNSSEC는 계층 구조를 권장함

 

 

 

 


Content / Image Reference 

 

Tannenbaum and Van Steen :: Distributed Systems: Principles and Paradigms (PDF)

반응형

BELATED ARTICLES

more