Diameter - 배경 및 용어 정리

노력하는백엔드·2025년 8월 11일
0

이론 정리

목록 보기
6/9

등장 배경 및 필요성

  • 기존 AAA 프로토콜은 다이얼업 환경(전화선으로 인터넷 연결 방식)을 위해서 개발
  • 기술의 발전으로 서비스 다양화로 더 다양한 요구(확장성, 신뢰성, 보안 등) 생김
  • RADIUS 프로토콜의 문제점을 보안하여 Diameter 등장

주요 기능

  • AVP 기반 통신 : 모든 데이터를 AVP(attribute value peer) 형태로 전달
  • 기능 협상 및 오류 처리 : 상대 피어와 지원 기능을 협상하고, 명확한 오류 메시지 제공
  • 전송 계층 보안 : tls/tcp, dtls/sctp 지원
  • 장애 조치 및 상태 관리 : 장애 조치 알고리즘과 상태 기계 내장, 신뢰성있는 트랜잭션 처리
  • 에이전트, 프록시, 릴레이, 리다이렉트 등 명확한 동작 정의
  • Server Initiated 메시지 지원 : 서버가 클라이언트에게 원하는 메시지 전달 가능
  • 새로운 애플리케이션을 위한 확장 용이 : 인증과 인가를 위해서 확장은 필요 없을 것 같음

용어 정의 : Terminology


프로토콜 개요

  • 피어 간 연결, 기능 협상, 메시지 송수신/라우팅, 연결 해제의 전반적인 메커니즘 담당
  • 메시지는 AVP의 집합으로 이뤄지면, 세션 식별은 Session-Id AVP
  • 인증, 인가 요청 시 Session-Id가 사용되고, 이후 관련 메시지는 반복
  • 세션 상태는 세션 종료 요청이나 세션 타임아웃 등으로 해제

Transport

  • 기본 통신(port: 3868) : TCP or SCTP
  • 보안 통신(port: 5658) : TLS/DTLS
  • 주소간 연결은 하나만 사용
  • 연결이 없으면 주기적으로 재접속 시도
  • DNS 기반 피어 탐색 시, SRV 레코드 포트 우선 적용(DNS에 SRV 레코드에 명시된 port를 우선 적용)
  • 장애 발생 시 즉시 연결 종료

SCTP : Stream Control Transmission Protocol

Securing Diameter Message

  • 피어간 통신은 반드시 TLS/TCP나 DTLS/SCTP를 지원해야한다.
  • IPSec을 사용할 수도 있음(지양)
  • 반드시 TLS, DTLS, IPSec 중 하나이상은 지원해야함

Diameter Application Compliance(지원)

  • Diameter 기능 협상 과정에서 Application Id를 주고 받을 수 있는데
  • Application Id를 보낸다는 건 해당 어플의 기능을 모든 제공한다는 의미

Application Identifiers(식별자)

  • 모든 Diameter 어플리케이션은 IANA가 할당한 ID 사용
  • 표준 ID list
    • 0 : common message
    • 3 : basic accounting
    • 0xffffffff : relay
  • 릴레이/리다이렉트 에어전트는 relay만 사용(협상)
  • 프록시나 릴레이는 Application Id에 맞는 서버로 메시지 전달 및 적합한 서버가 없을 시 오류 반환(라우팅)

Connections VS Session

  • Connection : 두 노드 간 네트워크 연결(tcp/sctp)을 뜻하며, 데이터 송수신 통로
  • Session : Client 와 Server 간 논리적/서비스 단위, 각 세션은 Session Id AVP로 식별

Peer Table

  • Diameter 네트워크 내에서 각 피어(상대 노드)의 정보를 관리하는 구조
  • 피어 정보 사용 정보 : 호스트 식별자, 상태 값, 정적/동적 등록 여부, 만료 시간, 보안 여부, 보안 정보 등
  • 피어 테이블은 메시지 라우팅이나 피어 상태 확인의 기반
  • 피어란 : connection을 맺는 것을 피어 관계로 보면 됨
  • 피어테이블은 각 노드 로컬에서 관리 → 분산형 네트워크이기 때문
  • 피어의 정보를 보고 어디로 라우팅할지 결정하는 것임
  • DWR(Device Watchdog Request)/DWA(Device Watchdog Answer)로 만료 시간 갱신
  • 만료시간이 다 되면 상태를 변경하거나 삭제 가능(정적/동적에 따라 상이)
  • 관계를 맺을 때 supported-Application-id를 보내는데 이건 내가 지원하는 것을 알리는 용도
    • 내가 구현이 많이 되어있더라도 한정된 기능만 지원한다고 알릴 수 있음
    • 즉, supported-Application-id == localAction은 다름

Routing table

  • Realm(도메인/운영기관) 기반으로 메시지의 경로를 결정하는 구조
  • peer table 기반으로 생성됨 → 피어의 realm을 가져와서 활용
  • 주요 필드
    • Realm Name : 도메인, Rounting 기준
    • Application Identifier : Application Id에 따라 라우팅 경로가 달라질 수 있음
    • Local Action : 메시지 처리 방식 지정
      • LOCAL : 해당 노드에서 직접 처리
      • RELAY : 다음 노드로 그대로 전달
      • PROXY : 다음 노드로 전달, 필요 시 AVP 등 정책 적용 후 전달
      • REDIRECT : 목적지 정보를 알려주고 메시지 반환
    • Server Identifier : 메시지를 보낼 대상 서버(peer table의 Host ID 와 같아야함)
    • Static or Dynamic : 경로가 정적/동적 구성되었는 지 여부
    • Expiration Time : 동적경로 시 만료 시간
  • 운용 포인트
    • 각 에이전트는 local, relay, proxy, redirect 중 하나 이상 지원해야함
    • 라우팅 테이블에 default 엔트리 둘 수 있음
    • 라우팅 대상 서버는 반드시 해당 Application ID를 선언한 노드여야하며, 없으면 메시지 반환
  • 라우팅 테이블엔 내가 하는 것도 들어가기 때문에 나를 판단하고 아니면 피어테이블에서 검색 후 점진적으로 늘이는 방식

Role of Diameter Agent

  • Client, Server 외 Relay, Proxy, Redirect, Translation Agent 도입
  • Agent는 메시지 운반, 변환 안내, 적책적용을 수행하는 중간 서버 역할
  • Relay Agent
    • 메시지를 목적지 Realm 및 피어 정보를 바탕으로 단순 전달(라우팅) 담당
    • 세션 상태는 유지하지 않고 트랜잭션 상태만 유지(요청, 응답 매칭용)
    • Supported-Application-Id : Relay(0xffffffff)
  • Proxy Agent
    • Relay와 유사하지만 정책 적용/리소스 제어 등 가공/검사 기능을 수행
    • 하위(DownStream) 피어 상태를 유지하여, 자원 사용 제한, 입장 제어 등 수행
    • Supported-Application-Id : 해당 노드에서 지원하는 것만
  • Redirect Agent
    • 메시지를 직접 전달하지 않고, 목적지 정보를 반환하여 요청한 쪽에서 직접 처리하게 함
    • 네트워크 라우팅 구조를 중앙 집중화할 때 유용(구성 변경 시 전체 업데이트 불필요)
    • 세션 상태, 트랜잭션 상태 유지 안함
    • Supported-Application-Id : Relay(0xffffffff)
  • Translation Agent
    • 서로 다른 AAA 프로토콜(RADIUS, TACACS 등)와 Diameter 간 변환 담당
    • 세션 상태와 트랜잭션 둥다 관리해야함(오랜 세션 추적 필요)
    • Supported-Application-Id : 해당 노드에서 지원하는 것만

Diameter Path Authorization(권한 확인 절차)

  • 네트워트 통신 중 보안 통신으로 보호할 수 있지만 그것으로는 부족하다
  • 각 노드가 해당 역할을 수행할 권한이 있는지도 반드시 검증해야한다.
  • 모든 노드 해당 Application을 지원하고 지원하고 주변에 알린 인가 노드여야하며, 연결 협상 과정에서 확인해야한다.
  • 릴레이 프록시 에이전트는 Route-Record AVP에 경로 정보를 기록하여 최종 서버가 요청을 거친 경로를 확인할 수 있어야한다.
  • 홈서버(최종 인증 서버)는 경로가 신뢰할 수 없는 영역을 거쳤다면 요청을 거부할 수 있다.
  • 과금 또한 반드시 인가된(권한이 있는) 세션
  • 에 기반해야해며, 허가받지 않은 서비스나 경로의 요청은 추가 검증 또는 거부된다.
  • 인가 응답을 전달한다는 것은 세션에 대한 신뢰 및 과금 책임을 진다는 것이며, 각 영역은 필요시 신용 한도 등으로 위험을 제한 할 수 있다.
profile
열심히 노력하는 백엔드입니다.

0개의 댓글