KR20100112151A - 네트워크 카드 및 정보 처리 장치 - Google Patents

네트워크 카드 및 정보 처리 장치 Download PDF

Info

Publication number
KR20100112151A
KR20100112151A KR1020107017310A KR20107017310A KR20100112151A KR 20100112151 A KR20100112151 A KR 20100112151A KR 1020107017310 A KR1020107017310 A KR 1020107017310A KR 20107017310 A KR20107017310 A KR 20107017310A KR 20100112151 A KR20100112151 A KR 20100112151A
Authority
KR
South Korea
Prior art keywords
data
network
bus
size
unit
Prior art date
Application number
KR1020107017310A
Other languages
English (en)
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 스미토모덴코 네트웍스 가부시키가이샤
Publication of KR20100112151A publication Critical patent/KR20100112151A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

호스트 커넥터와 네트워크 커넥터를 구비하는 네트워크 카드로서, 네트워크 커넥터를 통해 송신하게 되는 데이터를, 호스트 커넥터를 통해 제1 사이즈보다 큰 제2 사이즈의 블록 데이터를 단위로 하여 수신하는 수신 수단과, 수신한 블록 데이터를 일시적으로 기억하기 위한 버퍼 메모리와, 제1 사이즈 이하가 되는 데이터 프레임을 생성하고, 네트워크 커넥터에 접속된 네트워크상에 이 데이터 프레임을 송신하는 송신 수단을 포함한다.

Description

네트워크 카드 및 정보 처리 장치{NETWORK CARD AND INFORMATION PROCESSOR}
본 발명은, 데이터 송출 기술, 특히 광대역인 스트리밍 데이터를 효율적으로 송출하는 기술에 관한 것이다.
최근, 비디오 온 디맨드(VOD) 등 스트리밍 서비스가 실현되고 있다. 또한, 최근 액세스망의 광대역화에 의해, 배송 서버로부터 송출되는 비디오 스트리밍 데이터 하나당의 대역도 증대하고 있다. 또한 이후 소위 HD(고선명) 영상의 배송 등에 의해, 더 나은 광대역화가 예상된다. 배송 서버로부터 데이터 송출 레이트가 증대함에 따라, 이 배송 서버의 내부 버스(예컨대 PCI 등)의 이용율도 증대하는 경향이 있다.
일반적으로 네트워크 인터페이스에는 각각의 규격에 따라 전송할 수 있는 최대의 데이터 길이(MTU)가 규정되어 있다. 예컨대 IEEE802.3 시리즈 규격으로서도 알려진 이더넷(등록상표)에서는 최대 약 1.5 k 바이트이다. 이 때문에, 일반적으로는 디바이스 드라이버는, 내부 버스로 전송할 수 있는 데이터 길이가 충분히 큰 경우라도, 네트워크상에 송신하는 데이터를 전술의 MTU를 초과하지 않는 크기의 데이터로 분할한 후, 내부 버스를 경유하여 인터페이스 보드에 전송한다. 또한, 이 분할을 프래그먼트 처리라고 부른다. 그 후, 보드 위의 MAC/PHY에 의해 처리가 행해져 네트워크상에 송출된다.
한편, 스트리밍 서비스에서는, 데이터량이 많기 때문에 네트워크상에서의 패킷 파기 등이 발생할 수 있다. 이 경우에 수신측으로부터 재송 요구를 내지 않아도 좋도록, 배송 서버에서 전방 오류 정정(FEC) 부호화가 이용된다. 예컨대 특허문헌 1에 개시되는 부호화가 이용되고 있다.
특허문헌 1: 국제 공개 번호 제WO2005/112250호
내부 버스에서는, 일반적으로는 스트리밍 데이터의 송신 단위에 맞춰 충분히 큰 데이터 단위(데이터 길이)로 전송할 수 있다. 그러나, 전술한 바와 같이 MTU에 의한 제한으로부터 결과로서 내부 버스 위를 흐르는 데이터 길이는 작은 것으로 되어 버린다. 이 때문에, 스트리밍 데이터의 송신에서는, 버스의 혼잡이 발생하기 쉽고, 프래그먼트 처리에 의한 CPU 파워도 필요로 된다는 문제점이 있다.
또한, 대량의 데이터에 대하여 특허문헌 1에 개시되어 있는 부호화 처리를 실행하기 위해서는 한층 더 CPU 파워를 필요로 한다.
본 발명은 전술한 문제점을 감안하여 이루어진 것으로, 이들 문제점 중 하나 이상을 해결하는 것을 목적으로 한다.
전술한 문제점 중 하나 이상을 해결하기 위해 본 발명의 네트워크 카드는 이하의 구성을 구비한다.
즉, 호스트 장치에 설치된 버스 커넥터에 접속하기 위한 호스트 커넥터와, 네트워크에 접속하기 위한 네트워크 커넥터를 포함하는 네트워크 카드로서, 상기 네트워크 커넥터를 통해 송신할 수 있는 데이터 프레임의 최대 사이즈를 제1 사이즈로 했을 때, 상기 네트워크 커넥터를 통해 송신하게 되는 데이터를, 상기 호스트 커넥터를 통해 상기 제1 사이즈보다 큰 제2 사이즈의 블록 데이터를 단위로 하여 수신하는 수신 수단과, 상기 수신 수단에 있어서 수신한 블록 데이터를 일시적으로 기억하기 위한 버퍼 메모리와, 상기 버퍼 메모리로부터, 송신하는 데이터 프레임에 포함시키기 위한 데이터를 판독하고, 상기 제1 사이즈 이하가 되는 데이터 프레임을 생성하며, 상기 네트워크 커넥터에 접속된 네트워크상에 이 데이터 프레임을 송신하는 송신 수단을 포함한다.
전술한 문제점 중 하나 이상을 해결하기 위해 본 발명의 정보 처리 장치는 이하의 구성을 구비한다.
즉, 버스에 의해 접속된 호스트 처리부와 네트워크 처리부를 포함하고, 네트워크에 스트리밍 데이터를 송출하는 정보 처리 장치로서, 상기 호스트 처리부는, 스트림 데이터를 입력하는 데이터 입력 수단과, 적어도 상기 스트림 데이터를, 상기 네트워크에 있어서 전송할 수 있는 데이터 프레임의 최대 사이즈를 제1 사이즈로 했을 때, 이 제1 사이즈보다 큰 제2 사이즈의 블록 데이터를 단위로 하여, 상기 버스를 통해 상기 네트워크 처리부에 전송하는 버스 전송 수단을 포함하며, 상기 네트워크 처리부는, 상기 버스 전송 수단으로부터 상기 버스를 통해 송신된 블록 데이터를 수신하는 수신 수단과, 상기 수신 수단에 있어서 수신한 블록 데이터를 일시적으로 기억하기 위한 기억 수단과, 상기 기억 수단으로부터, 송신하는 데이터 프레임에 포함시키기 위한 데이터를 판독하고, 상기 제1 사이즈 이하가 되는 데이터 프레임을 생성하며, 상기 네트워크 커넥터에 접속된 네트워크상에 이 데이터 프레임을 송신하는 송신 수단을 포함한다.
본 발명에 의하면, 스트리밍 데이터를 효율적으로 송출하는 기술을 제공할 수 있다.
도 1은 스트리밍 배송 시스템의 전체 구성을 예시적으로 도시하는 도면이다.
도 2는 제1 실시예에 따른 배송 서버의 내부 구성을 도시하는 도면이다.
도 3은 제1 실시예에 따른 배송 서버 내의 네트워크 보드의 내부 구성을 도시하는 도면이다.
도 4는 제1 실시예에 따른 배송 서버의 데이터 송신에 관련되는 기능 구성을 도시하는 도면이다.
도 5는 제1 실시예에 따른 배송 서버에서의 데이터의 처리 흐름도이다.
도 6은 제2 실시예에 따른 배송 서버 내의 네트워크 보드의 내부 구성을 도시하는 도면이다.
도 7은 제2 실시예에 따른 배송 서버의 데이터 송신에 관련되는 기능 구성을 도시하는 도면이다.
이하에, 도면을 참조하여, 본 발명의 적합한 실시형태를 자세히 설명한다. 또한, 이들 실시형태는 어디까지나 예시이고, 본 발명의 범위를 이것에만 한정하는 취지가 아니다.
(제1 실시예)
본 발명에 따른 데이터 송출 장치의 제1 실시예로서, 범용의 PC 및 네트워크 보드에 의해 구성된 스트리밍 배송 장치를 예로 들어 이하에 설명한다.
<개요>
제1 실시예의 스트리밍 배송 장치에서는, 종래 PC 본체의 CPU가 디바이스 드라이버 프로그램을 실행하는 것에 의해 행했던 프래그먼트 처리를 네트워크 보드 위의 하드웨어에 의해 처리한다. 그 결과, PC 본체의 CPU에서의 부하 저감을 실현하고, 버스를 통한 네트워크 보드에의 데이터 전송을 보다 큰 데이터 길이에 의해 행할 수 있어, 버스 사용 효율의 향상을 실현시킨다.
<시스템 구성 및 장치 구성>
도 1은, 스트리밍 배송 시스템의 전체 구성의 개념도를 도시한다.
배송 서버(100)는 스트리밍 배송 서버, 110a, 110b는 스트리밍 수신 장치이다. 또한 101, 111a 및 111b는, 각각 배송 서버(100), 수신 장치(110a, 110b)가 속하는 네트워크 세그먼트이다. 각각의 네트워크 세그먼트(101, 111a, 111b)는, 라우터(102, 112a, 112b) 및 코어 네트워크(120)를 통해 접속되어 있다. 또한, 이후에는, 각 네트워크 세그먼트 사이의 데이터 전송에는, 인터넷 프로토콜(IP)이 사용되는 것으로서 설명한다.
배송 서버(100)는, 수신 단말(110a, 110b)에 대하여 스트림 데이터를 RTP/UDP/IP의 형식으로 패킷화하여 송신한다. 여기, RTP는 실시간 트랜스포트 프로토콜을 의미하고, UDP는 사용자 데이터 프로그램 프로토콜을 의미한다. 또한, 배송 서버(100)는 유니캐스트로 각 수신 단말에 스트리밍 배송하여도 좋고, 멀티캐스트로 배송하여도 좋다. 또한, 소위 비디오 온 디맨드(VOD) 서비스와 같이 각 수신 단말로부터의 배송 요구에 기초하여 배송을 시작하여도 좋다.
도 2는, 제1 실시예에 따른 배송 서버의 내부 구성을 도시하는 도면이다. 도면에 도시되는 바와 같이, 배송 서버(100)는 CPU(201), RAM(202), ROM(203), HDD(204), 유저 I/F(205) 및 네트워크(NW) 보드(200)로 구성되어 있고, 각부는 내부 시스템 버스(210)에 의해 서로 접속되어 있다.
CPU(201)는, ROM(203)이나 HDD(204)에 기억되는 각종 프로그램을 실행하는 것에 의해, 각부를 제어, 또는 도 4에서 후술하는 각 기능부를 실현한다. ROM(203)은, 배송 서버(100)의 기동시 등에 실행되는 프로그램 등을 기억하고 있다. RAM(202)은, CPU(201)에 의해 실행되는 각종 프로그램이나 각종 데이터를 일시 기억한다. HDD(204)는, 대용량의 기억 장치이고, 각종 프로그램이나 각종 데이터 파일을 기억한다. 프로그램에는 오퍼레이팅 시스템(OS) 프로그램이나 스트리밍 배송프로그램이 포함된다. 유저 I/F(205)는 도시되지 않는 키보드나 마우스 등의 사용자 입력 장치, 및 도시되지 않는 디스플레이 등의 표시 출력 장치이다.
내부 시스템 버스(210)로서는 일반적인 PCI 버스를 포함하는 범용 버스를 상정하지만, 물론 전용 버스여도 좋다. 단, 버스(210)에서의 전송 속도는 네트워크(101)에서의 전송 속도보다 크고, 전송할 수 있는 데이터 길이는 네트워크(101)에서의 데이터 길이보다 긴 것으로 한다.
또한, 이후에는 설명을 간단히 하기 위해, 배송 서버(100)에서, 네트워크(NW) 보드(200)를 "NW 보드측", 그 이외의 부분을 "서버 본체측"으로 부르는 경우가 있다.
도 3은, 제1 실시예에 따른 배송 서버 내의 네트워크 보드의 내부 구성을 도시하는 도면이다. 도면에 도시되는 바와 같이, 네트워크 보드(200)는 패킷 핸들러(301), 메모리(302), 메모리 컨트롤러(303) 및 버스 I/F(310)로 구성되어 있다.
메모리(302)는, 버스(210) 및 버스 I/F(310)를 통해 서버 본체측으로부터 수신한 데이터를, 일시적으로 저장하는 부분이고, 내부에 패킷 버퍼(302a)를 구비하고 있다. 또한 상세한 것은 후술하지만 패킷 버퍼(302a)는 스트림마다 영역이 확보된다.
패킷 핸들러(301)는, 메모리(302)에 일시 기억된 데이터를 네트워크(110)에 적합한 데이터 형식으로 송신하는 회로부이다. 구체적으로는, 메모리(302)에 일시 기억된 데이터에 대하여, 후술하는 프래그먼트 처리나 스무징 처리를 한 후, 네트워크(110)에 출력한다.
<기능 구성 및 동작>
도 4는, 제1 실시예에 따른 배송 서버의 기능 구성을 도시하는 도면이다.
배송 서버(100)는, 데이터 송신에 관련되는 기능부로서, 입력부(401), 버스 전송부(402), 프래그먼트 처리부(403) 및 스무징 처리부(404)를 구비하고 있다. 또한 입력부(401) 및 버스 전송부(402)의 각 기능부는, 서버 본체측의 CPU(201)가 각종 프로그램을 실행하는 것에 의해 실현된다. 한편, 프래그먼트 처리부(403) 및 스무징 처리부(404)의 각 기능부는 NW 보드측의 하드웨어에 의해 실현된다. 이하, 각 기능부에 대해서 설명한다.
또한, 이하에서는 설명을 간단히 하기 위해 각 처리부의 RTP/UDP/IP 형식의 스트리밍 데이터에 대한 처리에 대해서만 설명한다. 그 외 데이터에 대해서는, 종래대로 처리가 이루어진다. 또한, 패킷의 구별은 IP 헤더에 기재되는 포트 번호에 기초하여 행하여도 좋고, 단순히 패킷의 데이터 길이에 기초하여 행하여도 좋다.
입력부(401)는, 네트워크 보드(200)를 통해 송신하게 되는 스트리밍 파일을 입력하는 기능부이다. 구체적으로는, CPU(201)가 스트리밍 배송 소프트웨어를 실행하는 것에 의해, HDD(204) 등에 저장되는 스트리밍 데이터를 RAM(202)에 읽어 들이는 것에 의해 실현된다. 또한 입력부(401)는 입력 수단으로서 기능한다.
버스 전송부(402)는, 입력부(401)에 의해 RAM(202) 상으로 입력된 스트리밍 데이터를 미리 지정된 고정 길이 데이터로 분할한 후, RTP/UDP/IP 형식으로서 저장하고, 버스(210)를 통해 NW 보드측에 전송하는 기능부이다. 구체적으로는, CPU(201)가, IP 스택 프로그램 및 NW 보드(200)의 디바이스 드라이버 프로그램을 실행하는 것에 의해 실현된다. 또한 버스 전송부(402)는 버스 전송 수단으로서 기능한다.
단, 배경기술에서 설명한 경우와 달리, 전송되는 스트리밍 데이터 패킷은 네트워크(101)에 송출할 수 있는 데이터 길이에 비교하여 큰 것으로 되어 있다. 예컨대 네트워크(101)가 이더넷(등록상표)인 경우, 즉 최대의 데이터 길이(MTU)(제1 사이즈)가 약 1.5 k 바이트여도, 예컨대 32 k 바이트 등의 큰 데이터 블록(제2 사이즈)으로서 전송한다.
또한, 일반적으로 애플리케이션과 IP 스택 프로그램 사이, 및 IP 스택 프로그램과 디바이스 드라이버 사이의 데이터 형식에 대해서는 사양이 정해져 있기 때문에 변경하기 위해서는 큰 설계 변경을 수반하게 된다. 그러나, 전술과 같이, 디바이스 드라이버와 하드웨어 사이의 데이터 형식은 비교적 자유롭게 설계할 수 있는 것에 주의를 요한다.
상세한 것은 후술하지만, 데이터(데이터 블록)에서, IP, UDP, RTP의 각 헤더를 제외한 페이로드부를, 스트림 데이터의 최소 처리 단위의 정수배(또는 2의 거듭제곱배)에 상당하는 데이터 길이로 하는 것이 적합하다.
프래그먼트 처리부(403)는, 버스(210)(버스 커넥터)를 통해 버스 전송부(402)로부터 전송된 데이터(데이터 블록)를 네트워크(101)에 송출할 수 있는 데이터 길이로 분할하는 기능부이다. 구체적으로는, 도시하지 않는 호스트 커넥터를 통해 메모리(302)에 저장된 데이터 블록을, 네트워크(101)의 MTU 이하가 되는 데이터 길이로 분할하고, 분할된 데이터에 대응하는 IP, UDP, RTP의 각 헤더를 재생성한다. 그리고, 네트워크(101)에 직접 송신할 수 있는 데이터 길이의 IP 패킷을 패킷 버퍼(302a)에 저장한다. 또한 버스 I/F(310)는 수신 수단으로서 기능하고, 메모리(302)는 버퍼 메모리 또는 기억 수단으로서 기능한다. 또한, 프래그먼트 처리부(403)는 송신 수단의 일부를 구성하고, 패킷 핸들러(301)가 송신 수단으로서 기능한다.
또한, IP, UDP, RTP의 각 헤더의 재생성이란 구체적으로는 이하의 처리를 말한다. IP 헤더에는 이 IP 패킷에 포함되는 데이터의 데이터 길이(페이로드 길이)가 기재되어 있다. 또한, UDP 헤더에는 이 UDP 패킷에 포함되는 데이터의 데이터 길이 및 이 데이터의 체크섬이 기재되어 있다. 또한 RTP 헤더에는 이 RTP 패킷에 포함되는 데이터의 시퀀스 번호 및 타임스탬프가 기재되어 있다. 이 때문에 프래그먼트 처리부(403)에 의한 프래그먼트 처리의 결과, RTP 패킷은 분할되기 때문에, 이들 각 헤더 안에 기재된 정보를, 분할된 패킷에 맞춰 산출하고, 헤더 정보를 갱신하는 것이다. 또한 버스 전송부(402)로부터 전송된 데이터(데이터 블록)에서, IP, UDP, RTP의 각 헤더를 제외한 페이로드부를 등분할로 하는 것에 의해 헤더 정보의 산출이 간단해진다. 이 때문에 전술한 바와 같이, 데이터 블록의 페이로드부를 스트림 데이터의 최소 처리 단위의 정수배(또는 2의 거듭제곱배)에 상당하는 데이터 길이로 하는 것이 바람직한 것이다.
스무징 처리부(404)는, 프래그먼트 처리부(403)에 의해 패킷 버퍼(302a)에 저장된 고정 길이의 IP 패킷을 등간격으로 네트워크(101)에 송출하는 기능부이다. 구체적으로는, 패킷 버퍼(302a)에 저장된 고정 길이의 IP 패킷 내의 헤더 정보에 기초하여 송출 간격을 산출하고, 저장된 순서대로 IP 패킷을 송출한다. 송출 간격은, 예컨대 IP 헤더 또는 UDP 헤더의 데이터 길이의 정보와 RTP 헤더의 타임스탬프의 정보에 의해 산출할 수 있다. 또한, 버스트적인 트래픽 특성이 되지 않는 것으로 상정되는 미리 설정된 송출 간격이 되도록 순서대로 IP 데이터를 송출하여도 좋다. 또한 스무징 처리부(404)는, 송신 간격 제어 수단으로서 기능한다.
또한, 전술한 설명에서는, 프래그먼트 후의 IP(RTP) 패킷이 시간 방향으로 균등 간격이 되도록 송출을 제어하였다. 그러나, 일반적으로는 NW 보드(200)로부터는 RTP 패킷뿐만 아니라, 이 RTP 패킷 스트림의 제어에 이용되는 RTCP 패킷, 또는 그 외 패킷이 송출될 수 있다. 이 때문에, 미리 RTP 패킷 이외에 사용할 수 있는 시간 슬롯을 확보해 두고, 이 시간 슬롯을 제외하는 기간에서 균등 간격이 되도록 송출을 제어하도록 구성하는 것도 적합하다.
<동작 흐름>
도 5는, 제1 실시예에 따른 배송 서버에서의 데이터의 처리 흐름도이다. 또한 이하의 단계는, 예컨대 수신 장치[110a(또는 110b)]로부터의 스트리밍 데이터의 송신 요구의 접수에 의해 시작된다. 또한 여기서는, 스트림 데이터의 최소 처리 단위는 64 바이트로 가정한다.
단계 S501에서는, 입력부(401)는 수신 장치(110a)로부터 요구가 있던 스트리밍 데이터를 HDD(204) 등으로부터 판독 RAM(202)에 저장한다.
단계 S502에서는, 버스 전송부(402)는 단계 S501에서 RAM(202)에 저장된 데이터를, 예컨대 16 k 바이트(=64 바이트×28)의 데이터 길이의 데이터 블록으로 분할한다. 그리고, 이 데이터 블록에 대한 IP, UDP, RTP의 각 헤더를 생성하고, RTP/UDP/IP의 형식으로서 저장하며, 버스(210)를 통해 NW 보드측에 전송한다.
단계 S503에서는, 프래그먼트 처리부(403)는 단계 S502에서 버스(210)를 통해 버스 전송부(402)로부터 전송된 데이터 블록 내의 페이로드 데이터를, 예컨대 512 바이트(=64 바이트×23)의 데이터 길이의 데이터로 분할한다. 즉 네트워크(101)에서의 MTU 이하의 데이터 길이가 되도록 데이터 블록을 분할한다. 그리고, 분할되어 생성된 512 바이트 길이의 각 데이터에 대하여 IP, UDP, RTP의 각 헤더를 재생성하고, RTP/UDP/IP의 형식으로서 저장한다. 그리고 재생성된 IP 패킷을 패킷 버퍼(302a)에 저장한다.
단계 S504에서는, 스무징 처리부(404)는 단계 S503에서 패킷 버퍼(302a)에 저장된 IP 패킷을, 등간격으로 네트워크(101)에 송출한다.
또한, 전술한 흐름도에서는, 설명을 간단히 하기 위해 배송 서버(100)로부터는 단일 스트리밍 데이터가 송신되도록 설명하였다. 그러나, 물론 전술한 처리를 스트리밍 데이터마다 실행할 수도 있다. 특히 스트리밍 데이터마다 전술의 스무징 처리부(404)의 처리를 실행하는 것에 의해, 각 수신 장치(110a, 110b)가 속하는 네트워크 세그먼트(111a, 111b)에 도달하는 스트리밍 데이터는, 각각이 버스트성이 억제된 트래픽이 되기 때문에, 데이터의 손실이 잘 발생되지 않게 되는 이점이 있다.
이상 설명한 바와 같이, 제1 실시예의 배송 서버에 의하면, 프래그먼트 처리에 의한 버스(210)의 부하(폭주), 및 프래그먼트 처리 실행에 의한 CPU(201)의 부하를 대폭 저감할 수 있다. 이 때문에 버스(210)의 전송 능력 또는 CPU(201)의 처리 능력에 기인하는 보틀넥을 대폭 완화할 수 있게 된다. 그 결과, 스트리밍 데이터를 보다 효율적으로 송출할 수 있게 된다.
(제2 실시예)
<개요>
제2 실시예에서는, 제1 실시예의 구성에 추가로, NW 보드 위에 전방 오류 정정 부호(FEC)의 부호기를 배치한다. 또한 여기서 말하는 전방 오류 정정 부호는 결손 보상 부호를 포함한다. 이러한 구성으로 하는 것에 의해, FEC 부호화 처리에 소비되는 CPU 파워를 대폭 저감할 수 있게 된다. 또한 버스 사용율(트래픽)을 저감할 수 있게 된다.
또한, 스트리밍 배송 시스템의 전체 구성(도 1), 및 배송 서버의 내부 구성(도 2)에 대해서는 제1 실시예와 유사하기 때문에 설명은 생략한다.
<FEC 부호>
본 발명에서는 FEC 부호로서 특히 결손 보상 부호를 이용하는 것이 효과적이다. 이 때문에, 제2 실시예에서, FEC 부호로서는, 미국 디지털 파운틴사에 의해 개발된 FEC 부호인 Raptor 부호를 이용하는 것으로 가정한다. 단, 물론 일반적인 리드 솔로몬(RS) 베이스의 부호를 이용할 수도 있다. 이하에 Raptor 부호에 대해서 간단히 설명하지만, 상세한 것에 대해서는 배경기술에서 진술한 특허문헌 1을 참조한다.
Raptor 부호에서는, 스트림 파일을 특정한 데이터 길이(s×k 바이트)의 구간마다 나눠, 각 구간 데이터를 "입력 심볼"이라고 불리는 동일 데이터 길이(s 바이트)의 k개의 데이터로 분할한다. 그리고 키라고 불리는 인덱스값에 기초하여, 분할된 k개의 입력 심볼로부터 1 이상의 입력 심볼을 선택하고, 선택된 입력 심볼끼리를 비트마다 XOR 연산하며, "출력 심볼"로 불리는 s 바이트의 데이터 길이의 데이터를 생성한다. 이러한 출력 심볼을 상이한 키에 대하여 연속하여 생성한다.
한편, 수신측에서는, 확률적으로 k+α개(α는 k에 비해 작다)의 출력 심볼을 수신하고, 출력 심볼끼리를 XOR 연산하는 것에 의해 입력 심볼을 복원한다. 이 때, k+α개의 출력 심볼은 임의로 선택할 수 있기 때문에, 전송중에 어느 패킷이 손실된 경우라도 복원할 수 있는 우수한 특성을 갖고 있다.
<장치 구성>
도 6은, 제2 실시예에 따른 배송 서버 내의 네트워크 보드의 내부 구성을 도시하는 도면이다. 도면에 도시되는 바와 같이, 네트워크 보드(600)는 패킷 핸들러(601), 메모리(602), 메모리 컨트롤러(603), 버스 I/F(610)에 추가로, 부호화 엔진(604) 및 부호화 제어부(605)를 구비하고 있다. 이하에서는, 제1 실시예와 상이한 부분인 FEC 부호화 엔진(604) 및 부호화 제어부(605)에 대해서 설명한다.
FEC 부호화 엔진(604)은, XOR 연산을 하드웨어로 실행하는 회로이다. XOR 연산을 포함하는 논리 연산을 하드웨어에 의해 용이하게 구성할 수 있는 것은, 당업자에게는 잘 알려져 있다.
부호화 제어부(605)는, 전술한 Raptor 부호의 부호화 동작을 FEC 부호화 엔진(604)을 제어하는 것에 의해 실현하는 기능부이다. 또한, 부호화 제어부(605)를, 도시되지 않는 CPU 및 제어 프로그램을 저장하는 플래시 메모리로서 구성하는 것에 의해, 다른 FEC 부호 알고리즘에 용이하게 변경할 수 있게 되어 적합하다. 또한 부호화 제어부(605) 및 FEC 부호화 엔진(604)이, 실시예에서의 부호화 수단에 상당한다.
구체적으로는, 부호화 제어부(605)는 메모리(602)에 일시 기억된 데이터(입력 심볼)로부터, 1 이상의 입력 심볼을 선택하여 FEC 부호화 엔진(604)에 입력하는 것에 의해 순차 출력 심볼을 생성한다. 그리고, 생성된 출력 심볼을 메모리(602)에 일시 기억한다.
단, 전술의 Raptor 부호에 대해서 설명으로도 진술한 바와 같이, 출력 심볼과 입력 심볼의 데이터 길이는 동일하지만, 수는 적어도 α개 이상 증가하고 있는 것에 주의한다.
패킷 핸들러(601)는, 메모리(602)에 일시 기억된 출력 심볼에 의해 구성된 데이터를 네트워크(110)에 적합한 데이터 형식으로 송신하는 회로부이다. 구체적으로는, 메모리(602)에 일시 기억된 데이터에 대하여, 프래그먼트 처리나 스무징 처리를 한 후, 네트워크(110)에 출력한다.
<기능 구성 및 동작>
도 7은, 제2 실시예에 따른 배송 서버의 기능 구성을 도시하는 도면이다.
배송 서버(100)는, 데이터 송신에 관련되는 기능부로서, 입력부(701), 버스 전송부(702), 프래그먼트 처리부(703), 스무징 처리부(704)에 추가로, 부호화 처리부(705)를 구비하고 있다. 이하에서는, 제1 실시예와 상이한 부분인 부호화 처리부(705)에 관련되는 부분에 대해서 설명한다.
부호화 처리부(705)는, 버스(210)를 통해 버스 전송부(702)로부터 전송된 데이터(데이터 블록)에 대하여 FEC 부호화 처리를 실행하는 기능부이다. 구체적으로는, 부호화 엔진(604) 및 부호화 제어부(605)에 의해 실현되고, 메모리(302)에 저장된 데이터 블록을, 전술의 입력 심볼로 보고, 출력 심볼을 생성한다.
프래그먼트 처리부(703)는, 부호화 처리부(705)에 의해 부호화된 출력 심볼(데이터 블록)을 네트워크(101)에 송출할 수 있는 데이터 길이로 분할하는 기능부이다. 구체적으로는, 메모리(602)에 저장된 데이터 블록을, 네트워크(101)의 MTU 이하가 되는 데이터 길이로 분할하고, 분할된 데이터에 대응하는 IP, UDP, RTP의 각 헤더를 재생성한다. 그리고, 네트워크(101)에 직접 송신할 수 있는 데이터 길이의 IP 패킷을 패킷 버퍼(602a)에 저장한다.
단, 전술한 바와 같이, 부호화 처리부(705)에 의한 부호화 처리에 의해, 용장 데이터가 추가되기 때문에, 결과로서 부호화 처리부(705)의 입력 레이트에 비교하여 출력 레이트가 크다. 구체적으로는, k개의 입력 심볼로부터 k+α개의 출력 심볼을 생성하는 경우, 동일한 데이터 길이이기 때문에, 출력 레이트는 입력 레이트의 (k+α)/k배가 된다. 이 때, 부호화율은 k/(k+α)로 나타내고, 예컨대 RTP 헤더의 타임스탬프는 부호화율에 기초하여 재설정된다. 즉, 비부호화시에 비교하여 시간 간격을 약 k/(k+α)배만큼 짧게 설정한다. 여기서, 입력 심볼 및 출력 심볼 1개의 데이터량이 실시예에서의 제1 데이터량에 상당한다. 또한, 입력 심볼 k개에 상당하는 데이터량이 실시예에서의 제2 데이터량에 상당한다.
스무징 처리부(704)는, 프래그먼트 처리부(703)에 의해 패킷 버퍼(602a)에 저장된 고정 길이의 IP 패킷을 등간격으로 네트워크(101)에 송출하는 기능부이다. 구체적으로는, 패킷 버퍼(602a)에 저장된 고정 길이의 IP 패킷 내의 헤더 정보에 기초하여 송출 간격을 산출하고, 저장된 순서대로 IP 패킷을 송출한다. 전술과 같이 RTP 헤더의 타임스탬프가 짧게 설정되기 때문에, 결과적으로 송출 간격도 약 k/(k+α)배만큼 짧게 설정되게 된다.
이상 설명한 바와 같이, 제2 실시예의 배송 서버에 의하면, 제1 실시예에서 설명한 프래그먼트 처리에 추가로 FEC 부호화 처리를 NW 보드(600) 위에서 실행하는 것에 의해 CPU(201)의 부하를 대폭 저감할 수 있다. 또한 버스(210)에는 FEC 부호화에 의한 용장 데이터가 흐르지 않기 때문에, 버스 사용율(트래픽)을 저감할 수 있게 된다. 그 결과, 스트리밍 데이터를 보다 효율적으로 송출할 수 있게 된다.
(변형예)
또한, 전술의 설명에서는, 네트워크 보드가 직접 접속하는 네트워크[여기서는 이더넷(등록상표)]의 최대 전송 사이즈(약 1.5 k 바이트)보다 작은 고정 길이 패킷(512 바이트)을 전송 사이즈로서 설정하였다. 그러나, 물론 MTU와 대략 동일하게 설정하여도 좋다. 또한, 일반적으로는 배송 서버로부터 수신 단말까지는 복수의 여러 가지의 네트워크를 혼재할 수 있어, 각각의 MTU가 상이할 가능성이 있다. 또한, 수신 단말마다 경로가 상이하기 때문에, 수신 단말마다 "패스 MTU"가 상이할 가능성이 있다. 이 때문에 패스 MTU 탐색(Path MTU Discovery) 등을 이용하여 사전에 패스 MTU를 검출하고, 각각의 단말에 대응하는 패스 MTU 이하가 되도록 패킷 사이즈를, 스트림 배송 시작시에 동적으로 설정하여도 좋다.
100: 배송 서버, 110a, 110b: 수신 단말, 301: 패킷 핸들러(송신 수단), 302: 메모리(버퍼 메모리 또는 기억 수단), 303: 메모리 컨트롤러, 310: 버스 I/F(수신 수단), 401: 입력부(입력 수단), 402: 버스 전송부(버스 전송 수단), 403: 프래그먼트 처리부(송신 수단), 404: 스무징 처리부(송신 간격 제어 수단).

Claims (8)

  1. 호스트 장치에 설치된 버스 커넥터에 접속하기 위한 호스트 커넥터와, 네트워크에 접속하기 위한 네트워크 커넥터를 포함하는 네트워크 카드로서,
    상기 네트워크 커넥터를 통해 송신할 수 있는 데이터 프레임의 최대 사이즈를 제1 사이즈로 했을 때,
    상기 네트워크 커넥터를 통해 송신하게 되는 데이터를, 상기 호스트 커넥터를 통해 상기 제1 사이즈보다 큰 제2 사이즈의 블록 데이터를 단위로 하여 수신하는 수신 수단과,
    상기 수신 수단에 있어서 수신한 블록 데이터를 일시적으로 기억하기 위한 버퍼 메모리와,
    상기 버퍼 메모리로부터, 송신하는 데이터 프레임에 포함시키기 위한 데이터를 판독하고, 상기 제1 사이즈 이하가 되는 데이터 프레임을 생성하며, 상기 네트워크 커넥터에 접속된 네트워크상에 이 데이터 프레임을 송신하는 송신 수단
    을 포함하는 것을 특징으로 하는 네트워크 카드.
  2. 제1항에 있어서, 상기 송신 수단은 1 이상의 상기 데이터 프레임을 시간축 방향으로 대략 균등한 간격으로 상기 네트워크에 송출하는 송신 간격 제어 수단을 더 포함하는 것을 특징으로 하는 네트워크 카드.
  3. 제2항에 있어서, 상기 블록 데이터에 포함되는 데이터에 대하여 전방 오류 정정 부호(FEC)의 부호화 처리를 하는 부호화 수단을 더 포함하는 것을 특징으로 하는 네트워크 카드.
  4. 제3항에 있어서, 상기 송신 수단은, 상기 부호화 수단에 의해 부호화된 데이터에 기초하여, 상기 제2 사이즈 이하가 되는 데이터 프레임을 생성하고,
    상기 송신 간격 제어 수단은, 상기 부호화 수단이 이용하는 부호화율에 기초하여, 상기 데이터 프레임을 송출하는 상기 간격을 결정하는 것을 특징으로 하는 네트워크 카드.
  5. 제4항에 있어서, 상기 부호화 수단은, 상기 부호화 처리를, 미리 정해진 제1 데이터량을 단위로 하는 논리 연산을 반복하여 실행하는 것에 의해 행하고 있고,
    상기 송신 수단은, 상기 제1 데이터량의 정수배 사이즈의 데이터를 상기 데이터 프레임에 포함시키는 것을 특징으로 하는 네트워크 카드.
  6. 제4항 또는 제5항에 있어서, 상기 부호화 수단은, 미리 정해진 제2 데이터량을 단위로 하여 상기 부호화 처리를 하고, 상기 수신 수단은, 상기 제2 데이터량의 정수배 사이즈로 설정된 상기 블록 데이터를 수신하는 것을 특징으로 하는 네트워크 카드.
  7. 버스에 의해 접속된 호스트 처리부와 네트워크 처리부를 포함하고, 네트워크에 스트리밍 데이터를 송출하는 정보 처리 장치로서,
    상기 호스트 처리부는,
    스트림 데이터를 입력하는 데이터 입력 수단과,
    적어도 상기 스트림 데이터를, 상기 네트워크에서 전송할 수 있는 데이터 프레임의 최대 사이즈를 제1 사이즈로 했을 때, 이 제1 사이즈보다 큰 제2 사이즈의 블록 데이터를 단위로 하여, 상기 버스를 통해 상기 네트워크 처리부에 전송하는 버스 전송 수단
    을 포함하며,
    상기 네트워크 처리부는,
    상기 버스 전송 수단으로부터 상기 버스를 통해 송신된 블록 데이터를 수신하는 수신 수단과,
    상기 수신 수단에 있어서 수신한 블록 데이터를 일시적으로 기억하기 위한 기억 수단과,
    상기 기억 수단으로부터, 송신하는 데이터 프레임에 포함시키기 위한 데이터를 판독하고, 상기 제1 사이즈 이하가 되는 데이터 프레임을 생성하며, 상기 네트워크 커넥터에 접속된 네트워크상에 이 데이터 프레임을 송신하는 송신 수단
    을 포함하는 것을 특징으로 하는 정보 처리 장치.
  8. 버스에 의해 접속된 호스트 처리부와 네트워크 처리부를 포함하고, 네트워크에 스트리밍 데이터를 송출하는 정보 처리 장치로서,
    상기 호스트 처리부는,
    스트림 데이터를 입력하는 데이터 입력부와,
    적어도 상기 스트림 데이터를, 상기 네트워크에서 전송할 수 있는 데이터 프레임의 최대 사이즈를 제1 사이즈로 했을 때, 이 제1 사이즈보다 큰 제2 사이즈의 블록 데이터를 단위로 하여, 상기 버스를 통해 상기 네트워크 처리부에 전송하는 버스 전송
    을 포함하며,
    상기 네트워크 처리부는,
    상기 버스 전송부로부터 송신된 블록 데이터를 수신하는 수신부와,
    상기 수신부에 있어서 수신한 블록 데이터를 일시적으로 기억하기 위한 버퍼 메모리와,
    상기 버퍼 메모리로부터, 송신하는 데이터 프레임에 포함시키기 위한 데이터를 판독하고, 상기 제1 사이즈 이하가 되는 데이터 프레임을 생성하며, 상기 네트워크 커넥터에 접속된 네트워크상에 이 데이터 프레임을 송신하는 송신부
    를 포함하는 것을 특징으로 하는 정보 처리 장치.
KR1020107017310A 2008-01-10 2008-01-10 네트워크 카드 및 정보 처리 장치 KR20100112151A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/050206 WO2009087774A1 (ja) 2008-01-10 2008-01-10 ネットワークカードおよび情報処理装置

Publications (1)

Publication Number Publication Date
KR20100112151A true KR20100112151A (ko) 2010-10-18

Family

ID=40852899

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107017310A KR20100112151A (ko) 2008-01-10 2008-01-10 네트워크 카드 및 정보 처리 장치

Country Status (5)

Country Link
US (1) US20110022717A1 (ko)
EP (1) EP2242220A1 (ko)
KR (1) KR20100112151A (ko)
CN (1) CN101911613A (ko)
WO (1) WO2009087774A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9124423B2 (en) * 2010-05-14 2015-09-01 International Business Machines Corporation Iterative data secret-sharing transformation
US20120173641A1 (en) * 2010-12-30 2012-07-05 Irx - Integrated Radiological Exchange Method of transferring data between end points in a network
CN107273213B (zh) * 2017-06-27 2024-04-19 联想(北京)有限公司 一种计算控制方法、网卡及电子设备
US10853377B2 (en) * 2017-11-15 2020-12-01 The Climate Corporation Sequential data assimilation to improve agricultural modeling
EP3996302B1 (en) 2019-09-10 2024-03-20 Huawei Technologies Co., Ltd. Message processing method and apparatus, and chip

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0637750A (ja) * 1992-07-20 1994-02-10 Hitachi Ltd 情報転送方式
JP3176837B2 (ja) * 1996-01-26 2001-06-18 株式会社日立製作所 Atmコントローラおよび、atm通信制御装置
JPH1079744A (ja) * 1996-09-04 1998-03-24 Mitsubishi Electric Corp 通信装置
JP2000358037A (ja) * 1999-06-16 2000-12-26 Sony Corp 情報処理装置、及び情報処理装置の管理方法
US6775693B1 (en) * 2000-03-30 2004-08-10 Baydel Limited Network DMA method
JP3557998B2 (ja) * 2000-04-28 2004-08-25 日本電気株式会社 フラグメンテーション処理デバイスおよびこれを用いたフラグメンテーション処理装置
JP2002354537A (ja) * 2001-05-28 2002-12-06 Victor Co Of Japan Ltd 通信システム
JP4146708B2 (ja) * 2002-10-31 2008-09-10 京セラ株式会社 通信システム、無線通信端末、データ配信装置及び通信方法
KR20040110923A (ko) * 2003-06-21 2004-12-31 삼성전자주식회사 에러 정정 부호화 방법, 그 장치, 에러 정정 복호화 방법및 그장치
US20100211626A1 (en) * 2004-01-12 2010-08-19 Foundry Networks, Inc. Method and apparatus for maintaining longer persistent connections
EP1776797B1 (en) * 2004-06-29 2009-08-05 Telefonaktiebolaget LM Ericsson (publ) Packet-based data processing technique, transmission and reception
US7474619B2 (en) * 2004-07-22 2009-01-06 International Business Machines Corporation Method and apparatus for providing fragmentation at a transport level along a transmission path
US7697524B2 (en) * 2005-04-05 2010-04-13 Cisco Technology, Inc. Method and system for determining path maximum transfer unit for IP multicast
US7680047B2 (en) * 2005-11-22 2010-03-16 Cisco Technology, Inc. Maximum transmission unit tuning mechanism for a real-time transport protocol stream
WO2007090196A2 (en) * 2006-02-01 2007-08-09 Coco Communications Corp. Protocol link layer
JP2008028767A (ja) * 2006-07-21 2008-02-07 Sumitomo Electric Networks Inc ネットワークカードおよび情報処理装置
US20080285476A1 (en) * 2007-05-17 2008-11-20 Yasantha Nirmal Rajakarunanayake Method and System for Implementing a Forward Error Correction (FEC) Code for IP Networks for Recovering Packets Lost in Transit
US8091011B2 (en) * 2007-10-09 2012-01-03 Broadcom Corporation Method and system for dynamically adjusting forward error correction (FEC) rate to adapt for time varying network impairments in video streaming applications over IP networks

Also Published As

Publication number Publication date
WO2009087774A1 (ja) 2009-07-16
EP2242220A1 (en) 2010-10-20
CN101911613A (zh) 2010-12-08
US20110022717A1 (en) 2011-01-27

Similar Documents

Publication Publication Date Title
JP6334028B2 (ja) 通信システムにおけるパケット送受信装置及び方法
US7451381B2 (en) Reliable method and system for efficiently transporting dynamic data across a network
EP2528289B1 (en) System and method for achieving accelerated throughput
JP6181654B2 (ja) データ通信システムにおける符号化装置及び方法
JP5550834B2 (ja) 可変fecオーバヘッド及び保護期間を利用したストリーミング及びバッファリング
CN110943800B (zh) 数据包的发送方法、装置及系统、存储介质、电子装置
US9537611B2 (en) Method and apparatus for improving the performance of TCP and other network protocols in a communications network using proxy servers
CN101061659B (zh) 自适应前向纠错的方法和设备
KR100458878B1 (ko) Fec 코딩 방식에 기초한 가변길이 패킷 송수신 방법
US8996946B2 (en) Application of fountain forward error correction codes in multi-link multi-path mobile networks
EP2437421B1 (en) Method, device and communication system for retransmitting based on forward error correction
CN103023813B (zh) 抖动缓冲器
US20090092152A1 (en) Method and System for Dynamically Adjusting Forward Error Correction (FEC) Rate to Adapt for Time Varying Network Impairments in Video Streaming Applications Over IP Networks
KR101983032B1 (ko) 방송 및 통신 시스템에서 패킷 송수신 장치 및 방법
KR102657709B1 (ko) 데이터 스트림에 대한 전송 방법 및 디바이스
KR20100112151A (ko) 네트워크 카드 및 정보 처리 장치
CN111385055B (zh) 一种数据传输方法和装置
WO2022105753A1 (zh) 网络数据编码传输方法及装置
JP2008028767A (ja) ネットワークカードおよび情報処理装置
US12010016B2 (en) Data stream transmission method and device
Lochina et al. aENAC, University of Toulouse, Toulouse, France, bUniversite de la Reunion, Saint-Denis Reunion, France, cThales Communications, Colombes, France
CN117997471A (zh) 多通道发送方法、多通道接收方法、发送端及接收端
Hayasaka et al. Peer-to-peer multimedia streaming with guaranteed QoS for future real-time applications

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid