제5장 협상 메커니즘

5.1 협상 원칙

DTP의 핵심 설계 원칙 중 하나는 "협상 우선"이다: 모든 데이터 전송은 양측이 협상하여 달성한 약정(Agreement)에 기반해야 하며, "무약정 전송"은 존재하지 않는다. 협상 메커니즘은 다음을 보장한다:

  • 주단과 종단이 데이터 전송 전에 전송 매개변수에 대해 명확한 합의에 도달
  • 전송 과정 중 약정 매개변수를 동적으로 조정 가능
  • 어느 한쪽이든 능동적으로 약정을 종료 가능

5.2 협상 프레임 유형

DTP는 두 가지 프레임 유형을 사용하여 협상을 완료한다:

요청 프레임(Request_Frame)

데이터 요청 발행 또는 전송 약정 조정에 사용되며, 다음 요소를 포함한다:

필드설명
requestId요청 고유 식별자
requestorRole요청자 역할(master / slave)
requestType요청 유형: collection(수집) / injection(주입) / adjustment(조정) / termination(종료)
targetAgreementId조정/종료 시 참조하는 약정 ID
proposedParams제안된 약정 매개변수

응답 프레임(Response_Frame)

데이터 요청에 회신하는 데 사용되며, 다음 요소를 포함한다:

필드설명
requestId대응하는 요청 ID
result협상 결과: accepted / rejected / counter_proposal
agreedParams수락 또는 대안 시의 최종 매개변수
agreementId수락 시 생성된 약정 ID
rejectionReason거부 사유

5.3 협상 흐름

데이터 수집 협상(Master 발행)

Master                              Slave
  │                                   │
  │── Request_Frame (collection) ────▶│
  │                                   │
  │◀── Response_Frame ────────────────│
  │    (accepted / rejected /         │
  │     counter_proposal)             │
  │                                   │
  1. Master가 Slave에 데이터 수집 요청을 전송하며, 데이터 유형, 전송 모드, 빈도 등의 매개변수를 지정
  2. Slave가 Response_Frame으로 회신:
    • 수락: 요청 매개변수에 따라 데이터 전송에 동의
    • 거부: 컴플라이언스 제약(예: DLP 데이터 유출 방지 정책)에 한정되며, 반드시 컴플라이언스 사유를 첨부
    • 대안: 수정된 매개변수를 제안

데이터 주입 협상(Slave 신청)

Slave                               Master
  │                                   │
  │── Request_Frame (injection) ─────▶│
  │                                   │
  │◀── Response_Frame ────────────────│
  │    (accepted + 필터링된 데이터 범위 /│
  │     rejected /                    │
  │     counter_proposal)             │
  │                                   │
  1. Slave가 Master에 데이터 주입 신청을 전송하며, 어떤 데이터가 필요한지 설명
  2. Master가 Response_Frame으로 회신:
    • 수락: 필터링된 데이터 범위(최소 데이터셋)를 첨부
    • 거부: 데이터를 제공하지 않음
    • 대안: 다른 범위 또는 형식의 데이터를 제공

5.4 약정 매개변수

양측이 합의에 도달한 후, 고유한 Agreement_ID가 생성되며 약정 내용은 다음을 포함한다:

매개변수유형설명
dataTypestring데이터 유형 식별자
dataRangestring데이터 범위 설명
transferModeenum전송 모드: one_time / periodic / streaming
frequencynumber | null전송 빈도(Hz), 일회성 모드에서는 null
validityPeriodnumber유효 기간(밀리초)
priorityenum우선순위: low / normal / high / critical

5.5 약정 생명주기

약정은 다음 상태를 거친다:

negotiating ──▶ active ──▶ terminated
                  │
                  ▼
              suspended
  • negotiating: 협상 진행 중
  • active: 약정 발효, 데이터 전송 중
  • suspended: 연결 중단, 약정 일시 중지
  • terminated: 약정 종료

5.6 동적 조정

DTP는 전송 과정 중 새로운 Request_Frame(requestType이 adjustment)을 전송하여 기존 약정의 매개변수를 동적으로 조정하는 것을 지원한다.

대표적 시나리오: iFay가 처음에 스마트워치에 분당 1회 심박수 보고를 요구했지만, 사용자가 달리기를 시작한 것을 감지한 후 약정을 초당 1회 보고로 동적 조정한다.

5.7 약정 종료

Request_Frame(requestType이 termination)을 전송하여 약정을 명시적으로 종료한다. 종료 후 해당 약정 하의 데이터 전송은 즉시 중단된다.

5.8 다중 약정 병렬

DTP는 단일 세션에서 여러 활성 약정을 동시에 유지하는 것을 지원한다. 다중 약정의 직렬 또는 병렬 전송은 하위 전송 프로토콜의 능력에 따라 결정된다.

예시: iFay가 스마트워치와 심박수 데이터 수집 약정(초당 1회)과 걸음 수 데이터 수집 약정(분당 1회)을 동시에 유지하며, 두 약정은 독립적으로 운영된다.