대규모 P2P 시뮬레이션을 위한 GUI 기반 자바 시뮬레이터 설계와 구현
초록
본 논문은 자바 스레드와 메시지 패싱을 이용해 피어를 구현하고, GUI를 통해 사용자가 노드 수와 키 분포를 손쉽게 설정·관찰할 수 있는 P2P 시뮬레이터를 설계·구현하였다. NBDT 구조를 사례로 채택해 통계 수집 및 부하 균형 분석 기능을 제공한다.
상세 분석
이 시뮬레이터는 크게 세 계층으로 구성된다. 가장 아래는 피어와 메시지를 정의하는 커널 계층으로, 피어는 Thread를 상속받아 독립적인 실행 흐름을 가진다. 메시지는 송·수신자 ID, 타입, 데이터 객체를 포함하는 구조체이며, Network 클래스가 전역 버퍼(Vector<Message>)와 카운터, 로그 파일을 관리한다. 전송은 sendMessage()가 비동기적으로 버퍼에 삽입하고, 수신은 recvMessage()가 블로킹 형태로 구현돼 POSIX 소켓의 send/recv 동작을 모방한다.
시뮬레이터가 선택한 NBDT(Nested Balanced Distributed Tree) 구조는 각 피어가 LSI(Left Spine Index)와 CI(Collection Index) 테이블을 보유해 O(log log N) 홉으로 검색·삽입·삭제가 가능하도록 설계되었다. 논문은 키 분포를 “smooth distribution”이라고 정의하고, 이러한 분포 하에서 각 피어의 부하가 polylog N 수준으로 제한된다는 이론적 근거를 제시한다. 이는 시뮬레이션 결과와 일치한다는 점에서 설계의 타당성을 뒷받침한다.
기존 P2P 시뮬레이터(PeerSim, p2psim, OverSim)와 비교했을 때, 본 도구는 GUI 기반의 직관적인 오버레이 구성과 자동 통계 수집 기능을 제공한다는 차별점을 가진다. 그러나 스레드 기반 구현은 메모리 사용량이 급증해 수십만 노드 규모에서는 한계가 있다. 또한 네트워크 지연·패킷 손실 모델이 현재는 구현되지 않아, 실제 인터넷 환경을 반영한 평가에는 추가적인 확장이 필요하다.
동시성 제어 측면에서, Network의 버퍼 접근은 synchronized 메서드로 보호하지만, 피어 스레드 간의 경쟁 조건을 완전히 방지하기 위해서는 보다 정교한 락 전략이나 메시지 큐 기반의 비동기 처리 모델이 요구된다. 현재 구현은 “입장 노드가 순차적으로 삽입돼야 한다”는 전제에 의존하고 있어, 대규모 동시 조인 상황을 시뮬레이션하기엔 제한적이다.
전체적으로, 이 시뮬레이터는 교육·연구 목적의 프로토타입으로서 가시성과 사용 편의성을 크게 향상시켰으며, NBDT와 같은 복합 트리 구조의 성능을 검증하는 데 유용하다. 향후 확장성을 높이기 위해 이벤트 기반 시뮬레이션 엔진으로 전환하거나, 네트워크 오류·지연 모델을 추가하는 것이 바람직하다.
댓글 및 학술 토론
Loading comments...
의견 남기기