KR20060068517A - Method of supporting rtp in node where rtp module is realized in kernel area - Google Patents

Method of supporting rtp in node where rtp module is realized in kernel area Download PDF

Info

Publication number
KR20060068517A
KR20060068517A KR1020040107230A KR20040107230A KR20060068517A KR 20060068517 A KR20060068517 A KR 20060068517A KR 1020040107230 A KR1020040107230 A KR 1020040107230A KR 20040107230 A KR20040107230 A KR 20040107230A KR 20060068517 A KR20060068517 A KR 20060068517A
Authority
KR
South Korea
Prior art keywords
rtp
rtcp
system call
socket
module
Prior art date
Application number
KR1020040107230A
Other languages
Korean (ko)
Inventor
이형석
임용관
김성조
선동국
Original Assignee
한국전자통신연구원
중앙대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원, 중앙대학교 산학협력단 filed Critical 한국전자통신연구원
Priority to KR1020040107230A priority Critical patent/KR20060068517A/en
Publication of KR20060068517A publication Critical patent/KR20060068517A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

커널 영역에 RTP 모듈이 구현된 노드에서의 RTP 지원 방법이 개시된다. 본 발명에 따른 커널 영역에 RTP 모듈이 구현된 노드에서의 RTP 지원 방법은, 소켓 시스템 콜 함수를 호출하여 RTP 소켓 및 RTCP 소켓을 생성하고, RTP 파일 디스크립터 및 RTCP 파일 디스크립터를 생성하는 단계; 바인드 시스템 콜 함수를 호출하여 RTP 수신 주소 및 포트와 RTCP 수신 주소 및 포트를 설정하는 단계; 및 컨넥트 시스템 콜 함수를 호출하여 RTP 송신 주소 및 포트와 RTCP 송신 주소 및 포트를 설정하여, 상기 RTP 세션 및 상기 RTCP 세션 연결을 수행하는 단계;를 포함한다. 본 발명에 따르면, RTP 모듈을 커널 영역에 구현함으로써 공통의 RTP 처리 루틴이 커널 영역에 존재하므로 RTP 구현을 위한 별도의 노력을 기울일 필요가 없으며, 커널 영역에 구현된 RTP 모듈을 표준 네트워크 API에 통합함으로써 응용프로그램 개발자에게 단일의 네트워크 인터페이스를 제공해줄 수 있는 효과를 제공한다.A method of supporting RTP in a node in which an RTP module is implemented in a kernel region is disclosed. According to the present invention, a method of supporting RTP in a node in which an RTP module is implemented in a kernel region may include: generating a RTP socket and an RTCP socket by calling a socket system call function, and generating an RTP file descriptor and an RTCP file descriptor; Calling a bind system call function to set an RTP receiving address and port and an RTCP receiving address and port; And calling a connect system call function to set an RTP send address and port and an RTCP send address and port to perform the RTP session and the RTCP session connection. According to the present invention, since the common RTP processing routines exist in the kernel region by implementing the RTP module in the kernel region, no extra effort for RTP implementation is required, and the RTP module implemented in the kernel region is integrated into the standard network API. This provides the effect of providing a single network interface to application developers.

RTP(Real-Time Protocol), 커널(Kernel), 네트워크 API(Network API)Real-Time Protocol (RTP), Kernel, Network API

Description

커널 영역에 RTP 모듈이 구현된 노드에서의 RTP 지원 방법{Method of supporting RTP in node where RTP module is realized in kernel area}Method of supporting RTP in node where RTP module is realized in kernel area}

도 1은 RTP 모듈을 내장한 응용 프로그램의 일 예를 나타내는 도면, 1 is a diagram illustrating an example of an application program incorporating an RTP module;

도 2는 라이브러리에서 RTP 모듈을 지원하는 일 예를 나타내는 도면,2 is a diagram illustrating an example of supporting an RTP module in a library;

도 3은 본 발명의 일 실시예에 따른 커널 영역에 구현된 RTP 모듈을 나타내는 도면,3 is a diagram illustrating an RTP module implemented in a kernel region according to an embodiment of the present invention;

도 4는 본 발명의 일 실시예에 따른 소켓 시스템 콜 내부 프로시져의 일 예를 나타내는 도면,4 is a view showing an example of a socket system call internal procedure according to an embodiment of the present invention;

도 5는 본 발명의 일 실시예에 따른 바인드 시스템 콜 내부 프로시져의 일 예를 나타내는 도면,5 illustrates an example of a bind system call internal procedure according to an embodiment of the present invention;

도 6은 본 발명의 일 실시예에 따른 컨넥트 시스템 콜 내부 프로시져의 일 예를 나타내는 도면,6 is a view showing an example of a connect system call internal procedure according to an embodiment of the present invention;

도 7은 본 발명의 일 실시예에 따른 라이트 시스템 콜 내부 프로시져의 일 예를 나타내는 도면,7 is a view showing an example of a write system call internal procedure according to an embodiment of the present invention;

도 8은 본 발명의 일 실시예에 따른 리드 시스템 콜 내부 프로시져의 일 예를 나타내는 도면,8 is a view showing an example of a lead system call internal procedure according to an embodiment of the present invention;

도 9는 본 발명의 일 실시예에 따른 클로즈 시스템 콜 내부 프로시져의 일 예를 나타내는 도면이다.9 is a diagram illustrating an example of a closed system call internal procedure according to an embodiment of the present invention.

본 발명은 커널 영역에 RTP(Real Time Protocol) 모듈이 구현된 노드(node)에서의 RTP 지원 방법에 관한 것으로, 보다 상세하게는 네트워크 상에서 서버 클라이언트간 스트리밍 서비스(Streaming Service)를 구현하기 위해 RTP(Real-Time Protocol)를 사용할 때, 두 노드(node)에서 사용하는 RTP 모듈(Module)을 응용프로그램(Application) 레벨이 아닌 커널(Kernel) 레벨에 두고 이들에 대한 네트워크 표준 API(Network Standard API)를 제공하는 방법에 관한 것이다.The present invention relates to a method of supporting RTP in a node in which a real time protocol (RTP) module is implemented in a kernel area, and more particularly, to implement a streaming service between server clients on a network. When using Real-Time Protocol, put the RTP module used by two nodes at the kernel level, not the application level, and set the Network Standard API for them. It is about a method to provide.

앞으로는 PC를 사용하여 인터넷에 접속하는 사람보다 PDA, 휴대폰, 전자책,홈서버, 웹 TV등과 같은 non-PC 기기 혹은 임베디드 기기를 통해 인터넷에 접속하는 사람이 더욱 많아질 것으로 예상하고 있다. 더불어 이와 같은 기기에 멀티미디어 서비스에 대한 요구가 크게 늘어가고 있다. 이러한 임베디드 시스템에서의 멀티미디어 서비스는 크게 VOD(Video On Demand)와 AOD(Audio On Demand) 같은 주문형 멀티미디어 서비스와 화상회의 시스템, VoIP(Voice over IP)와 같은 인터넷 전화 서비스로 구분할 수 있다. RTP는 오디오, 비디오 및 시뮬레이션 데이터와 같은 실시간 데이터를 멀티캐스트 혹은 유니캐스트 네트워크를 통해 단대단(end-to-end) 전송 기능을 제공하기 위해 개발되었고 RTCP(Real Time Control Protocol)는 RTP 패킷의 데이터 전송 품질에 대한 피드백을 제공함으로써 응용프로그램이 QoS(Quality of Service)를 보장할 수 있도록 정보를 제공하는 기능을 한다. 좁은 의미의 RTP는 실제 멀티미디어 데이터 전송을 위한 통신 프로토콜만을 의미하지만 넓은 의미에서는 RTCP와 같은 컨트롤 프로토콜도 포함하는 개념이다. In the future, it is expected that more people will access the Internet through non-PC devices or embedded devices such as PDAs, mobile phones, e-books, home servers, web TVs, etc. than those who use the Internet. In addition, the demand for multimedia services on such devices is increasing. Multimedia services in such embedded systems can be broadly classified into on-demand multimedia services such as video on demand (VOD) and audio on demand (AOD), and internet telephony services such as video conferencing systems and voice over IP (VoIP). RTP was developed to provide end-to-end transmission of real-time data, such as audio, video and simulation data, over a multicast or unicast network. Real Time Control Protocol (RTCP) provides data in RTP packets. By providing feedback on the quality of transmission, the application provides information to guarantee the quality of service (QoS). In a narrow sense, RTP refers only to a communication protocol for actual multimedia data transmission, but broadly includes a control protocol such as RTCP.

최근의 RTP에 관한 연구는 RTP를 더욱 효율적으로 활용하기 위해 RTP의 약점이라 할 수 있는 QoS 등을 지원하기 위한 노력이 활발하고, 기업에서는 자사의 제품만을 위한 RTP 라이브러리를 개발하는 사례가 많다. RADVISION사에서는 자사의 VoIP 개발 솔루션 중의 하나로써 RTP/RTCP프로토콜 스택 툴킷을 판매하고 있다. 이 툴킷은 RTP 프로토콜 스택 표준을 만족하는 라이브러리로서 멀티미디어 서버, 홈 게이트웨이, 미디어 플레이어 등 어느 도메인에라도 적용시킬 수 있는 범용 라이브러리이다. 벨 연구소, 콜롬비아 대학, 메사추세스 대학에서는 RTP라이브러리를 공동으로 개발하였다. 이 라이브러리는 유닉스를 기반으로 작성되었으며 IP 멀티캐스트와 유니캐스트를 지원한다. 이와 같은 회사나 대학 혹은 연구소의 주된 관심사는 RTP의 보다 나은 QoS를 보장하기 위한 라이브러리의 개발임을 알 수 있다. 즉 이런 모든 연구들이 RTP는 라이브러리 즉 사용자공간에서 구현한다는 것을 전제로 진행된다. Recently, research on RTP has been actively conducted to support QoS, which is a weak point of RTP, in order to utilize RTP more efficiently, and many companies develop RTP libraries for their own products. RADVISION sells the RTP / RTCP protocol stack toolkit as one of its VoIP development solutions. The toolkit is a library that meets the RTP protocol stack standard, and is a general-purpose library that can be applied to any domain such as multimedia server, home gateway, and media player. Bell Labs, Columbia University, and the University of Massachusetts have co-developed the RTP library. The library is based on Unix and supports IP multicast and unicast. The main concern of such companies, universities or research institutes is the development of libraries to ensure better QoS of RTP. In other words, all these studies are based on the premise that RTP is implemented in a library, user space.

RTP를 구현하는 위치에 따른 응용프로그램의 호환성과 전체적인 시스템 성능을 생각해 볼 수 있다. 첫 번째로 도 1에 도시한 바와 같이 응용프로그램을 개발할 때 RTP모듈을 내장하여 개발했을 경우이다. 이 응용프로그램이 POSIX(Portable Operating System Interface) 호환 네트워크 API를 기반으로 구현이 되었다면, 그 API를 지원하는 어떤 시스템에서도 동작가능 하므로 응용프로그램의 호환성을 기대 할 수 있다. 그러나 시스템의 성능 측면에서 바라봤을 때 이는 그다지 바람직한 방향이 아니다. 만일 RTP를 사용하는 여러 응용프로그램이 한 시스템 안에서 동시에 동작하고 있다고 가정했을 때, 공통의 RTP 모듈 부재로 각각의 RTP모듈을 따로 구현해야 한다. 이는 곧 시스템의 공간적 측면에서 엄청난 낭비가 된다. 기존의 PC보다 성능과 각종 시스템 자원이 한정될 수 밖에 없는 non-PC혹은 임베디드 시스템에서 이와 같은 구현은 매우 어려운 일임을 알 수 있다.Consider the application compatibility and overall system performance depending on where you implement RTP. First, as shown in FIG. 1, when the application program is developed, the RTP module is embedded. If this application is implemented based on POSIX (Portable Operating System Interface) compatible network API, it can be operated on any system that supports the API, so application compatibility can be expected. However, in terms of system performance, this is not a desirable direction. If we assume that several applications using RTP are running in the same system at the same time, each RTP module must be implemented separately without a common RTP module. This is a huge waste of space in the system. Such implementation is very difficult in non-PC or embedded systems, which have more limited performance and system resources than conventional PCs.

두 번째로 도 2에 도시한 바와 같이 응용계층의 라이브러리에 RTP를 구현하였을 때를 고려해 볼 수 있다. 이 경우 만약 제공되는 RTP관련 API가 기존의 POSIX기반 네트워크 API와 통합되어 라이브러리가 개발되면(①과 ②가 같다면) 응용 프로그램의 호환성을 어느 정도 보장 할 수 있을 것이다. 그러나 현재 대다수의 RTP관련 라이브러리는 독자적인 RTP API를 따로 제공하고(POSIX 표준 네트워크 API를 지원하지 않음. ①과 ②가 다름), 이 API가 내부적으로 기존의 네트워크 API를 호출하는 형식으로 개발되는 것이 대부분이다. 이는 새로운 네트워크 프로토콜 구현의 편리함만을 도모하기 위한 접근으로써, 이 API를 사용한 응용 프로그램의 호환성을 보장할 수 없는 문제가 존재한다.Secondly, as shown in FIG. 2, the case of implementing RTP in a library of an application layer may be considered. In this case, if the provided RTP API is integrated with the existing POSIX based network API and the library is developed (if ① and ② are the same), the compatibility of the application program can be guaranteed to some extent. Currently, however, most RTP-related libraries provide their own RTP APIs (does not support POSIX standard network APIs; they are different from ① and ②), and most of them are developed internally by calling existing network APIs. to be. This approach is only for the convenience of implementing a new network protocol, and there is a problem in that compatibility of applications using this API cannot be guaranteed.

한편, 네트워크 응용 프로그램을 개발하는 개발자의 입장에서 각 네트워크 프로토콜 별로 서로 다른 API를 가지고 개발을 수행한다면, 응용 프로그램의 설계 및 알고리즘에 대한 고민 이전에 각 API를 숙지하는 일을 먼저 수행해야만 한다. 이 작업은 겉으로 보기엔 간단한 일인 듯 보이나 실제로 개발 단계에 들어가고 시제품과 유지보수를 해야 하는 단계에까지 이르게 되면 결국엔 혼란을 초래하게 되 어 이 부담이 다시 개발자에게 전가될 수 밖에 없다.On the other hand, if a developer who develops a network application program develops with different APIs for each network protocol, it is necessary to first understand each API before thinking about the design and algorithm of the application program. This task seems seemingly simple, but when you actually get into the development phase and get to prototypes and maintenance, you end up with confusion and this burden is passed on to the developer.

그러므로 표준 네트웍 인터페이스를 제공하는 일은 네트워크 프로토콜을 구현하는 데 있어 매우 중요한 요소이지만, RTP 분야에서 이러한 시도는 한번도 일어나지 않았다. 나날이 휴대형 임베디드 기기의 확산이 증가되고 멀티미디어 컨텐츠에 대한 수요가 늘어가고 있는 지금, RTP 관련 응용프로그램의 숫자도 증가되고 있다. 이러한 상황에서, 표준 네트워크 인터페이스를 지원하는 RTP에 대한 요구가 높아지고 있다.Therefore, providing a standard network interface is a very important factor in implementing network protocols, but this attempt has never occurred in the field of RTP. With the proliferation of portable embedded devices and the increasing demand for multimedia content, the number of RTP-related applications is increasing. In this situation, there is an increasing demand for RTP supporting standard network interfaces.

본 발명이 이루고자 하는 기술적 과제는 커널 영역에 RTP(Real Time Protocol) 모듈이 구현된 노드(node)에서의 RTP 지원 방법을 제공하는데 있다.An object of the present invention is to provide a method for supporting RTP in a node in which a Real Time Protocol (RTP) module is implemented in a kernel region.

상기 과제를 이루기 위한 본 발명의 일 측면에 의한 커널 영역에 RTP(Real Time Protocol) 모듈이 구현된 노드(node)에서의 RTP 지원 방법은,According to an aspect of the present invention for achieving the above object, a method of supporting RTP in a node in which a Real Time Protocol (RTP) module is implemented in a kernel region is provided.

소켓(socket) 시스템 콜 함수를 호출하여 RTP 소켓 및 RTCP(Real Time Control Protocol) 소켓을 생성하고, RTP 파일 디스크립터 및 RTCP 파일 디스크립터를 생성하는 단계; 바인드(bind) 시스템 콜 함수를 호출하여 RTP 수신 주소 및 포트와 RTCP 수신 주소 및 포트를 설정하는 단계; 및 컨넥트(connect) 시스템 콜 함수를 호출하여 RTP 송신 주소 및 포트와 RTCP 송신 주소 및 포트를 설정하여, 상기 RTP 세션 및 상기 RTCP 세션 연결을 수행하는 단계;를 포함하는 것을 특징으로 한다. Calling a socket system call function to create an RTP socket and a Real Time Control Protocol (RTCP) socket, and to generate an RTP file descriptor and an RTCP file descriptor; Calling a bind system call function to set an RTP receiving address and port and an RTCP receiving address and port; And setting a RTP transmission address and port and an RTCP transmission address and port by calling a connect system call function to perform the RTP session and the RTCP session connection.

본 발명의 다른 측면에 의하면, RTP 데이터를 송신하기 위한 라이트(write) 시스템 콜 함수를 호출하여, 커널 영역에서 구현된 RTP 모듈에서 RTP 패킷을 생성하고, 상기 RTP 패킷을 송신하는 단계;를 더 포함한다.According to another aspect of the present invention, calling the write system call function for transmitting the RTP data, generating an RTP packet in the RTP module implemented in the kernel region, and transmitting the RTP packet; do.

본 발명의 또 다른 측면에 의하면, RTP 데이터를 수신하기 위한 리드(read) 시스템 콜 함수를 호출하여, 커널 영역에서 구현된 RTP 모듈에서 수신한 RTP 패킷을 재구성하는 단계;를 더 포함한다.According to another aspect of the present invention, the method further includes calling a read system call function for receiving RTP data to reconstruct an RTP packet received by an RTP module implemented in a kernel region.

본 발명의 또 다른 측면에 의하면, 클로즈(close) 시스템 콜 함수를 호출하여, 상기 RTP 세션 및 상기 RTCP 세션 연결의 해제를 알리는 메시지를 전송하는 단계; 상기 RTP 소켓을 제거하고, 상기 RTP 세션을 위해 할당된 메모리를 해제하는 단계; 및 상기 RTCP 소켓을 제거하고, 상기 RTCP 세션을 위해 할당된 메모리를 해제하는 단계;를 더 포함한다.According to still another aspect of the present invention, there is provided a method, comprising: calling a close system call function to transmit a message indicating release of an RTP session and an RTCP session connection; Removing the RTP socket and freeing the memory allocated for the RTP session; And removing the RTCP socket and releasing memory allocated for the RTCP session.

본 발명의 또 다른 측면에 의하면, 상기 RTP 모듈은 POSIX 호환 네트워크 API를 지원하는 것을 특징으로 한다. According to another aspect of the invention, the RTP module is characterized in that it supports POSIX compatible network API.

이하, 첨부한 도면을 참조하면서 본 발명에 따른 실시예들을 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면상에 표시되더라도 동일한 부호로 표기한다. 또한, 아래 설명에서는 구체적인 회로의 구성소자 등과 같은 많은 특정사항들이 도시되어 있는데, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐 이러한 특정사항들 없이도 본 발명이 실시될 수 있음은 이 기술분야에서 통상의 지식을 가진 자에게는 자명하다 할 것이다. 그리고, 본 발명을 설명함에 있어서, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. In adding reference numerals to the components of each drawing, the same components are denoted by the same reference numerals even if they are shown on different drawings. In addition, in the following description there are shown a number of specific details, such as components of the specific circuit, which are provided to aid a more general understanding of the invention, it is to be understood that the present invention may be practiced without these specific details. It will be self-evident to those of ordinary knowledge. In describing the present invention, when it is determined that detailed descriptions of related known functions or configurations may obscure the gist of the present invention, the detailed description thereof will be omitted.

도 3은 본 발명의 일 실시예에 따른 커널 영역에 구현된 RTP 모듈을 나타내는 도면이다. 도 3에 도시한 바와 같이 POSIX(Portable Operating System Interface) 기반 표준 네트웍 API를 지원하는 RTP 모듈을 커널 레벨에서 구현한다면, 공통의 RTP 처리 루틴이 커널 영역에 존재하므로 RTP구현을 별도의 수고를 할 필요가 없다. 그리고 POSIX 기반 표준 네트워크 API를 지원하는 RTP는 응용프로그램 개발자에게 단일의 네트워크 인터페이스를 제공해줄 수 있으며, 상기 두가지 모델에서의 단점을 보완할 수 있게 된다. 3 is a diagram illustrating an RTP module implemented in a kernel region according to an embodiment of the present invention. As shown in FIG. 3, if the RTP module supporting the POSIX-based standard network API is implemented at the kernel level, since the common RTP processing routines exist in the kernel area, extra effort must be taken to implement the RTP. There is no. In addition, RTP supporting POSIX-based standard network APIs can provide a single network interface to application developers, and can compensate for the shortcomings of the two models.

한편, POSIX는 유닉스 운영체계에 기반을 두고 있는 일련의 표준 운영체계 인터페이스를 말한다. 그리고, 커널은 컴퓨터 운영체계의 가장 중요한 핵심으로서, 운영체계의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공한다. 일반적으로, 커널에는 종료된 입출력 연산 등의 커널의 서비스를 경쟁적으로 요구하는 모든 요청들을 처리하는 인터럽트 처리기와 어떤 프로그램들이 어떤 순서로 커널의 처리시간을 공유할 것인지를 결정하는 스케줄러 및 스케줄이 끝나면 실제로 각 프로세스들에게 컴퓨터의 사용권을 부여하는 수퍼바이저 등이 포함되어 있다. 커널은 또한, 메모리나 저장장치 내에서 운영체계의 주소공간을 관리하고, 이들을 모든 주변장치들과 커널의 서비스들을 사용하는 다른 사용자들에게 고루 나누어주는 메모리 관리자를 가지고 있다. 커널의 서비스는 운영체계의 다른 부분이나 스템 호출이라고 알려진 일련의 프로그램 인터페이스들을 통해 요청된다. 커널을 유지하기 위 한 코드는 지속적으로 사용되기 때문에, 보통 커널은 자주 사용되지 않는 운영체계의 나머지 부분에 의해 덮어씌워져 훼손되지 않도록, 보호된 메모리 영역에 적재된다. POSIX, on the other hand, is a set of standard operating system interfaces based on the Unix operating system. And, the kernel is the most important core of the computer operating system, providing several basic services to all other parts of the operating system. In general, the kernel has an interrupt handler that handles all requests that competitively require kernel services, such as terminated I / O operations, and a scheduler that determines which programs will share the kernel's processing time and in what order. It includes a supervisor that gives each process a license to the computer. The kernel also has a memory manager that manages the operating system's address space in memory or storage and distributes it to all peripherals and other users of the kernel's services. Kernel services are requested through different parts of the operating system or through a set of program interfaces known as system calls. Because the code to maintain the kernel is used continuously, the kernel is usually loaded in a protected memory area so that it is not overwritten by the rest of the less frequently used operating system.

본 발명에서 안출한 커널 레벨에서 RTP를 지원하는 방법은 커널 영역에 RTP 모듈을 구현한 경우, 이에 맞게 시스템 콜 내부 프로시져를 변경하고 시스템 콜(system call) 파라미터를 추가할 필요가 있다. 시스템 콜(system call)은 응용프로그램이나 사용자 프로그램에서 운용체제의 기능을 사용하기 위해 호출하는 함수를 말한다. In the method of supporting RTP at the kernel level proposed in the present invention, when the RTP module is implemented in the kernel region, it is necessary to change a system call internal procedure and add a system call parameter accordingly. A system call is a function called by an application program or a user program to use an operating system function.

본 발명의 일 실시예에서 세션의 연결과 관련된 시스템 콜은 3가지로써, 소켓(socket), 바인드(bind) 및 컨넥트(connect)이다. 도 4는 본 발명의 일 실시예에 따른 소켓 시스템 콜 내부 프로시져의 일 예를 나타내는 도면이다. socket 시스템 콜은 내부적으로 sys_socket함수와 연결되며, sys_socket함수에서는 소켓 구조체를 생성하고, 생성된 구조체에 하나의 파일 디스크립터를 매핑시킨다. RTP/RTCP는 세션연결을 할 때 각각의 세션을 따로 생성해주어야 하므로 2개의 세션을 열어주어야 한다. 곧 socket 시스템 콜을 호출할 때 RTP 관련 세션을 열어주는 옵션(SOCK_RTP)을 소켓 타입 파라미터로 넘겨주어야 하고, 내부적으로 두가지 세션을 열어주는 프로시져를 수행하여야 한다.In one embodiment of the present invention, there are three system calls associated with the connection of a session: socket, bind, and connect. 4 is a diagram illustrating an example of a socket system call internal procedure according to an embodiment of the present invention. The socket system call is internally connected to the sys_socket function. The sys_socket function creates a socket structure and maps a file descriptor to the generated structure. Since RTP / RTCP must create each session separately when connecting sessions, two sessions must be opened. Soon, when calling the socket system call, the option to open an RTP related session (SOCK_RTP) must be passed as a socket type parameter, and the procedure to open two sessions internally must be performed.

도 5는 본 발명의 일 실시예에 따른 바인드 시스템 콜 내부 프로시져의 일 예를 나타내는 도면이다. bind 시스템 콜은 생성된 소켓에 수신 주소 및 수신 포트 넘버를 부여하는 시스템 콜이다. 앞선 socket 시스템콜에서 RTP/RTCP를 위해 두 개의 소켓이 생성되었기 때문에 bind작업또한 두번 수행되어야 한다.5 is a diagram illustrating an example of a bind system call internal procedure according to an embodiment of the present invention. The bind system call is a system call that assigns a listening address and a listening port number to a created socket. Since two sockets were created for RTP / RTCP in the previous socket system call, the bind operation must also be performed twice.

도 6은 본 발명의 일 실시예에 따른 컨넥트 시스템 콜 내부 프로시져의 일 예를 나타내는 도면이다. connect 시스템 콜은 내부적으로 주어진 소켓으로 컨넥션을 맺는 작업을 수행한다. bind 시스템 콜과 마찬가지로, socket 시스템 콜에서 RTP를 위해서 두 개의 소켓이 생성되었기 때문에 connect 작업 또한 두번 수행해야 한다. 또한 세션 관련 자료구조에 RTP/RTCP 송신 주소 및 송신 포트를 설정해 주는 과정도 필요하다.6 is a diagram illustrating an example of a connect system call internal procedure according to an embodiment of the present invention. The connect system call internally performs a connection to a given socket. As with the bind system call, the connect operation must be performed twice because two sockets were created for RTP in the socket system call. It is also necessary to set the RTP / RTCP sending address and sending port in the session related data structure.

세션을 통한 데이터를 송수신 하는 시스템콜은 read/write, send/sendto, recv/recvfrom 이다. 도 7은 본 발명의 일 실시예에 따른 라이트 시스템 콜 내부 프로시져의 일 예를 나타내는 도면이다. write 시스템콜은 커널 내부에 생성된 소켓 자료구조를 통해 인자로 받은 데이터를 전송하는 역할을 수행한다. write 시스템 콜은 하위에 sock_sendmsg, inet_sendmsg, udp_sendmsg 함수를 차례로 호출하는 구조를 가진다. sys_write(send, sendto) 함수에서 파일 디스크립터를 검색하여, RTP 소켓이면 rtp_send함수를 호출하고 애플리케이션으로부터 받은 데이터에 RTP 헤더를 첨부하여 RTP패킷을 생성한다. 그다음, kudp_send 함수를 호출하여 RTP 패킷을 msghdr구조체 형태로 만들고, 이것을 UDP 계층의 송신 함수인 udp_sendmsg 함수에게 넘겨준다.The system calls to send and receive data through the session are read / write, send / sendto and recv / recvfrom. 7 is a diagram illustrating an example of a write system call internal procedure according to an embodiment of the present invention. The write system call is responsible for sending data received as arguments through the socket data structures created inside the kernel. The write system call has a structure that calls sock_sendmsg, inet_sendmsg, and udp_sendmsg in order. The sys_write (send, sendto) function retrieves the file descriptor. If it is an RTP socket, it calls the rtp_send function and creates an RTP packet by attaching an RTP header to the data received from the application. Next, the kudp_send function is called to form an RTP packet in the form of an msghdr structure, which is then passed to the udp_sendmsg function, which is a UDP layer send function.

도 8은 본 발명의 일 실시예에 따른 리드 시스템 콜 내부 프로시져의 일 예를 나타내는 도면이다. read 시스템 콜은 데이터를 수신하는 시스템 콜이다. read 시스템 콜은 sock_read 함수와 연결된다. sock_read 함수는 하위 계층의 sock_recvmsg, inet_recvmsg, udp_recvmsg 함수를 차례로 호출하는 구조를 가지게 된다. 이와 별도로 RTP를 지원하기 위한 함수들로써 RTP 패킷을 수신하는 함수인 rtp_get_packet 함수는 하위 계층의 데이터 수신 함수를 호출해서 데이터를 수신하는 구조가 아니라, 해당 세션의 RTP 패킷 버퍼에서 데이터를 읽어오는 구조이다. RTP 패킷이 수신되면 udp_recvmsg 함수를 통해 rtp_demux함수로 패킷이 전달된다. 이 패킷은 rtp_insert_packet함수를 호출하여 해당되는 프로세스 세션의 RTP 패킷 버퍼에 RTP 패킷을 저장하고 rtp_get_packet함수는 sleep 상태인 데이터를 기다리는 프로세스를 깨워주게 된다.8 is a diagram illustrating an example of a lead system call internal procedure according to an embodiment of the present invention. The read system call is a system call that receives data. The read system call is connected to the sock_read function. The sock_read function has a structure that calls the sock_recvmsg, inet_recvmsg, and udp_recvmsg functions in the lower layer in order. In addition, rtp_get_packet function, which is a function to receive RTP packet as a function to support RTP, is not a structure to receive data by calling data receiving function of lower layer, but to read data from RTP packet buffer of a corresponding session. When the RTP packet is received, the packet is delivered to the rtp_demux function through the udp_recvmsg function. This packet calls rtp_insert_packet to store the RTP packet in the RTP packet buffer of the corresponding process session, and the rtp_get_packet function wakes up the process waiting for data that is sleeping.

도 9는 본 발명의 일 실시예에 따른 클로즈 시스템 콜 내부 프로시져의 일 예를 나타내는 도면이다. 클로즈 시스템 콜은 RTP/RTCP 세션을 해제하기 위한 시스템 콜이다. 클로즈 시스템 콜은 RTP/RTCP 소켓을 제거하기 전에 BYE RTCP 메시지를 전송하여 양측간에 세션연결을 해제한다는 메시지를 전송한다. 그리고 나서 RTP/RTCP 세션 소켓을 제거하고 각각에 할당되었던 메모리를 반환한다. 9 is a diagram illustrating an example of a closed system call internal procedure according to an embodiment of the present invention. The closed system call is a system call for releasing an RTP / RTCP session. The closed system call sends a BYE RTCP message before removing the RTP / RTCP socket, indicating that the session is disconnected between the two sides. It then removes the RTP / RTCP session sockets and returns the memory allocated for each.

이상 설명한, 커널 영역에 구현된 RTP 모듈이 구현된 노드(node)에서의 RTP 지원 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 유형의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는, ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장 장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.As described above, the RTP supporting method in a node in which the RTP module implemented in the kernel region is implemented may be implemented as computer readable code on a computer readable recording medium. Computer-readable recording media include any type of recording device that stores data that can be read by a computer system. Examples of computer-readable recording media include ROM, RAM, CD-ROM, magnetic tape, floppy disks, optical data storage devices, and the like, and may also be implemented in the form of a carrier wave (for example, transmission over the Internet). It includes being. The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.

이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.So far I looked at the center of the preferred embodiment for the present invention. Those skilled in the art will appreciate that the present invention can be implemented in a modified form without departing from the essential features of the present invention. The scope of the present invention is shown in the claims rather than the foregoing description, and all differences within the scope will be construed as being included in the present invention.

본 발명에 따르면, RTP 모듈을 커널 영역에 구현함으로써 공통의 RTP 처리 루틴이 커널 영역에 존재하므로 RTP 구현을 위한 별도의 노력을 기울일 필요가 없다. 또한, 커널 영역에 구현된 RTP 모듈을 표준 네트워크 API에 통합함으로써 응용프로그램 개발자에게 단일의 네트워크 인터페이스를 제공해줄 수 있는 효과를 제공한다.According to the present invention, since the common RTP processing routines exist in the kernel region by implementing the RTP module in the kernel region, no extra effort for RTP implementation is required. In addition, by integrating the RTP module implemented in the kernel domain into the standard network API, it provides the effect of providing a single network interface to application developers.

Claims (5)

커널 영역에 RTP(Real Time Protocol) 모듈이 구현된 노드(node)에서의 RTP 지원 방법에 있어서,In a method of supporting RTP in a node in which a real time protocol (RTP) module is implemented in a kernel region, 소켓(socket) 시스템 콜 함수를 호출하여 RTP 소켓 및 RTCP(Real Time Control Protocol) 소켓을 생성하고, RTP 파일 디스크립터 및 RTCP 파일 디스크립 터를 생성하는 단계;Calling a socket system call function to create an RTP socket and a Real Time Control Protocol (RTCP) socket, and to generate an RTP file descriptor and an RTCP file descriptor; 바인드(bind) 시스템 콜 함수를 호출하여 RTP 수신 주소 및 포트와 RTCP 수신 주소 및 포트를 설정하는 단계; 및Calling a bind system call function to set an RTP receiving address and port and an RTCP receiving address and port; And 컨넥트(connect) 시스템 콜 함수를 호출하여 RTP 송신 주소 및 포트와 RTCP 송신 주소 및 포트를 설정하여, 상기 RTP 세션 및 상기 RTCP 세션 연결을 수행하는 단계;를 포함하는 것을 특징으로 하는 방법. Invoking a connect system call function to set an RTP send address and port and an RTCP send address and port to perform the RTP session and the RTCP session connection. 제1 항에 있어서,According to claim 1, RTP 데이터를 송신하기 위한 라이트(write) 시스템 콜 함수를 호출하여, 커널 영역에서 구현된 RTP 모듈에서 RTP 패킷을 생성하고, 상기 RTP 패킷을 송신하는 단계;를 더 포함하는 것을 특징으로 하는 방법. Calling a write system call function for transmitting RTP data, generating an RTP packet in an RTP module implemented in a kernel region, and transmitting the RTP packet. 제1 항에 있어서,According to claim 1, RTP 데이터를 수신하기 위한 리드(read) 시스템 콜 함수를 호출하여, 커널 영역에서 구현된 RTP 모듈에서 수신한 RTP 패킷을 재구성하는 단계;를 더 포함하는 것을 특징으로 하는 방법. Calling a read system call function for receiving RTP data to reconstruct an RTP packet received by an RTP module implemented in a kernel region. 제1 항에 있어서,According to claim 1, 클로즈(close) 시스템 콜 함수를 호출하여, 상기 RTP 세션 및 상기 RTCP 세션 연결의 해제를 알리는 메시지를 전송하는 단계;Calling a close system call function to transmit a message informing of the release of the RTP session and the RTCP session; 상기 RTP 소켓을 제거하고, 상기 RTP 세션을 위해 할당된 메모리를 해제하는 단계; 및Removing the RTP socket and freeing the memory allocated for the RTP session; And 상기 RTCP 소켓을 제거하고, 상기 RTCP 세션을 위해 할당된 메모리를 해제하는 단계;를 더 포함하는 것을 특징으로 하는 방법. Removing the RTCP socket and releasing memory allocated for the RTCP session. 제1 항에 있어서, According to claim 1, 상기 RTP 모듈은 POSIX 호환 네트워크 API를 지원하는 것을 특징으로 하는 방법. And the RTP module supports a POSIX compliant network API.
KR1020040107230A 2004-12-16 2004-12-16 Method of supporting rtp in node where rtp module is realized in kernel area KR20060068517A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040107230A KR20060068517A (en) 2004-12-16 2004-12-16 Method of supporting rtp in node where rtp module is realized in kernel area

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040107230A KR20060068517A (en) 2004-12-16 2004-12-16 Method of supporting rtp in node where rtp module is realized in kernel area

Publications (1)

Publication Number Publication Date
KR20060068517A true KR20060068517A (en) 2006-06-21

Family

ID=37162808

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040107230A KR20060068517A (en) 2004-12-16 2004-12-16 Method of supporting rtp in node where rtp module is realized in kernel area

Country Status (1)

Country Link
KR (1) KR20060068517A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8194658B2 (en) 2007-01-05 2012-06-05 Samsung Electronics Co., Ltd. Transmitting and receiving method and apparatus in real-time system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8194658B2 (en) 2007-01-05 2012-06-05 Samsung Electronics Co., Ltd. Transmitting and receiving method and apparatus in real-time system

Similar Documents

Publication Publication Date Title
US7340531B2 (en) Apparatus and method for data transfer
US7356409B2 (en) Manipulating a telephony media stream
US20020156900A1 (en) Protocol independent control module
US8484328B2 (en) Apparatus and method for stateful web services enablement
WO2020248649A1 (en) Audio and video data synchronous playback method, apparatus and system, electronic device and medium
WO2024037296A1 (en) Protocol family-based quic data transmission method and device
US8954851B2 (en) Adding video effects for video enabled applications
CN103177028B (en) A kind of method and system of information exchange
US20090182833A1 (en) Sharing Material in a Master-Slave Configuration Using an Instant Messaging Infrastructure
CN110535839A (en) Information processing method, device, system and computer readable storage medium
US20240089352A1 (en) Udp message distribution method, udp message distribution apparatus, electronic device and computer readable storage medium
WO2023165320A1 (en) Playback parameter configuration method and device
Lohse et al. Network-integrated multimedia middleware (NMM)
CN103970593A (en) Multi-process interaction method and system
KR20060068517A (en) Method of supporting rtp in node where rtp module is realized in kernel area
Fitzpatrick et al. Design and application of TOAST: an adaptive distributed multimedia middleware platform
CN110290035B (en) Intelligent family data storage and access method and system based on K3S
Lohse Network-Integrated Multimedia Middleware, Services, and Applications
KR100339374B1 (en) multimedia middleware in distributed process system
Poellabauer et al. Kernel support for the event-based cooperation of distributed resource managers
CN105142015A (en) Method of sharing and playing BHD file based on DLNA
CN106209860B (en) Real-time classroom streaming media live broadcast load distribution method
Schill et al. A quality of service abstraction tool for advanced distributed applications
Lohse et al. Session Sharing as Middleware Service for Distributed Multimedia Applications
Mitchell DJINN: A programming framework for distributed multimedia groupware applications

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application