KR100790673B1 - 통신 장치, 통신 방법, 패킷 처리 장치 및 전화 장치 - Google Patents

통신 장치, 통신 방법, 패킷 처리 장치 및 전화 장치 Download PDF

Info

Publication number
KR100790673B1
KR100790673B1 KR1020077006527A KR20077006527A KR100790673B1 KR 100790673 B1 KR100790673 B1 KR 100790673B1 KR 1020077006527 A KR1020077006527 A KR 1020077006527A KR 20077006527 A KR20077006527 A KR 20077006527A KR 100790673 B1 KR100790673 B1 KR 100790673B1
Authority
KR
South Korea
Prior art keywords
packet
buffer
unit
data
processing
Prior art date
Application number
KR1020077006527A
Other languages
English (en)
Other versions
KR20070045338A (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
Priority claimed from JP2002315085A external-priority patent/JP3524914B1/ja
Priority claimed from JP2003005101A external-priority patent/JP3557202B2/ja
Priority claimed from JP2003005100A external-priority patent/JP3557201B2/ja
Application filed by 산요덴키가부시키가이샤 filed Critical 산요덴키가부시키가이샤
Publication of KR20070045338A publication Critical patent/KR20070045338A/ko
Application granted granted Critical
Publication of KR100790673B1 publication Critical patent/KR100790673B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • 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/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2416Real-time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/165Combined use of TCP and UDP protocols; selection criteria therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

복수의 통신 프로토콜에 의한 데이터 통신을 효율적으로 처리하는 기술을 제공한다. 인터넷 전화 장치(100)에서, 네트워크 인터페이스부(130)가 패킷을 수신하면, 프로토콜 검출부(176)가 TCP 패킷인지 UDP 패킷인지를 검출한다. TCP 패킷인 경우는 범용 회로인 CPU(110)가 소프트웨어에 의해 패킷 처리를 행한다. UDP 패킷인 경우는 전용 회로인 UDP 처리부(174)가 패킷 처리를 행한다. UDP 패킷에 의해 송수신되는 음성 데이터는 코덱 처리부(140)에 의해 복호되어 스피커(160)로 출력된다.
TCP 패킷, UDP 패킷, 코덱 처리부, 음성 데이터, 네트워크 인터페이스부

Description

통신 장치, 통신 방법, 패킷 처리 장치 및 전화 장치{COMMUNICATION DEVICE AND APPLICATION THEREOF}
도 1은 제1 실시 형태에 따른 통신 장치의 일례로서의 인터넷 전화 장치의 전체 구성을 도시하는 도면.
도 2는 제1 실시 형태에 따른 통신 방법의 수순을 나타내는 흐름도.
도 3은 제2 실시 형태에 따른 통신 장치의 일례로서의 비디오 전화 장치의 전체 구성을 도시하는 도면.
도 4는 제3 실시 형태에 따른 통신 장치의 일례로서의 디지털 카메라의 전체 구성을 도시하는 도면.
도 5는 제4 실시 형태에 따른 통신 장치의 일례로서의 비디오 전화 장치의 전체 구성을 도시하는 도면.
도 6은 제5 실시 형태에 따른 통신 장치의 일례로서의 디지털 카메라의 전체 구성을 도시하는 도면.
도 7은 제6 실시 형태에 따른 통신 장치의 일례로서의 인터넷 전화 장치의 전체 구성을 도시하는 도면.
도 8은 제6 실시 형태에 따른 인터넷 전화 장치의 패킷 수신부의 내부 구성을 도시하는 도면.
도 9는 제6 실시 형태에서의 패킷의 수신 수순을 나타내는 흐름도.
도 10은 제6 실시 형태에 따른 인터넷 전화 장치의 IP 판별부의 내부 구성을 도시하는 도면.
도 11은 제6 실시 형태에서의 패킷 처리 수순을 나타내는 흐름도.
도 12는 제7 실시 형태에 따른 통신 장치의 일례로서의 인터넷 전화 장치의 전체 구성을 도시하는 도면.
도 13은 제7 실시 형태에 따른 프로토콜 엔진의 내부 구성을 도시하는 도면.
도 14는 제7 실시 형태에 따른 호스트 테이블의 내부 데이터를 나타내는 도면.
도 15는 제7 실시 형태에 따른 기입 제어부 및 판독 제어부의 내부 구성을 도시하는 도면.
도 16은 기입 제어부에 의해 패킷의 데이터가 정형되는 형태를 나타내는 도면.
도 17은 제8 실시 형태에 따른 통신 장치의 일례로서의 인터넷 전화 장치의 전체 구성을 도시하는 도면.
도 18은 도 17의 TCP/UDP 처리부의 내부 구성을 도시하는 도면.
도 19은 데이터 저장부와 체크썸 저장부의 내부 데이터의 예를 나타내는 도면.
도 20은 제8 실시 형태에 따른 체크썸 산출 방법의 수순을 나타내는 흐름도.
〈도면의 주요부분에 대한 부호의 설명〉
100: 인터넷 전화 장치
110: CPU
130: 네트워크 인터페이스부
140: 코덱 처리부
170: 프로토콜 처리부
172: 시큐러티 처리부
176: 프로토콜 검출부
본 발명은 통신 기술에 관한 것으로, 특히 패킷을 효율적으로 처리하는 기술, 복수의 통신 프로토콜에 의한 데이터 통신을 효율적으로 처리하는 기술, 네트워크를 통해 송수신되는 패킷의 체크썸을 산출하는 기술에 관한 것이다.
인터넷이 널리 보급되어, 네트워크의 인프라의 정비도 진행되고 있는 현재, 통화 음성 신호를 부호화한 데이터를 패킷화하여, 인터넷 등의 네트워크를 통해 송수신하는 인터넷 전화 장치가 주목받고 있다. 통화 음성과 함께 비디오 영상을 보냄으로써, 비디오 전화 장치로서 이용하는 것도 가능하며, 종래의 전화 장치를 대신하는 차세대 전화 장치로서 기대되고 있다.
현재, 패킷 통신을 위한 통신 프로토콜로서, TCP/IP(Transmission Control Protocol/Internet Protocol)가 널리 이용되고 있다. TCP는, 장치 사이에서 접속을 확립하고 나서 데이터를 송수신하는 등, 정확성을 중시하는 통신 프로토콜이다. 그러나, 처리가 복잡하여, 상대측이 패킷을 수신한 것을 확인할 때까지 다음 패킷을 보낼 수 없는 등의 시간적 제약이 있어서, 리얼타임성이 부족하기 때문에, 통화 음성의 송수신에는 부적합하다.
TCP보다도 간편한 통신 프로토콜로, UDP/IP(User Datagram Protocol/Internet Protocol)가 있다. UDP에서는, 데이터의 송수신에 앞서 장치 사이에서 접속을 확립할 필요가 없이, 패킷의 수신 확인을 대기하지 않고 다음 패킷을 보내는 것이 허용되기 때문에, 송신측은 잇달아 패킷을 송출할 수 있다. 그 때문에, 데이터의 정확성보다도 리얼타임성이 중시되는, 통화 음성의 송수신에 적합다.
TCP와 UDP 양쪽의 통신 프로토콜을 서포트하는 장치에서는, 패킷 처리는 CPU 등의 범용 프로세서에 의해 소프트웨어 처리되는 것이 일반적이다. 즉, 네트워크 인터페이스 디바이스가 패킷을 수신하면, 자장치(自裝置) 이외의 MAC(Media Access Control) 어드레스 목적지에서의 패킷이 필터링되어, CRC(Cyclic Redundancy Check)에 의한 오류 체크가 행해진 후, 이들을 통과한 모든 패킷이 CPU로 보내져서 처리된다.
그러나, 모든 패킷을 CPU에 의해 소프트웨어 처리하는 방식에서는, 처리 효율이 나쁘고, 속도가 느리며, 소비 전력이 크다는 등의 과제가 있다. 특히, 복수의 상대와 동시에 통화하거나, 음성과 함께 화상을 보내기도 하는 경우에는, 프로토콜 처리가 율속(律速)으로 되어, 리얼타임성이 손상될 우려가 있다. 또한, 통화 중에는 항상 CPU가 프로토콜 처리를 실행하고 있기 때문에, 그 밖의 어플리케이션 을 병행하여 실행시키는 것이 곤란하다. 예를 들면, 퍼스널 컴퓨터 등과 같이 고성능의 CPU를 탑재한 장치에 의해 통신을 행하는 경우에는, CPU에 모든 패킷 처리를 담당하게 하여도, 그것에 적당한 충분한 능력을 갖고 있기 때문에 문제는 없지만, 인터넷 전화를 위한 전용 장치를 개발할 경우, 장치의 소형화, 저가격화, 저소비 전력화를 실현하기 위해서는, 비교적 성능이 낮은 CPU를 탑재하지 않을 수 없기 때문에, 어떻게 CPU의 처리 부하를 경감할지가 과제로 된다. 처리 속도를 향상시키기 위해 CPU 능력을 높이면, 비용, 소비 전력, 열 발생 등을 증대시키는 결과로 되기 때문에, 어느 하나를 희생하여 타협점을 발견할 필요가 있다.
또한, 네트워크 라우터 등, 고속성이 요구되는 일부의 장치에서는, 모든 프로토콜 처리를 하드웨어화하여 실장하고 있다. 양쪽의 통신 프로토콜을 하드웨어에 의해 처리하는 방식에서는, 고속의 프로토콜 처리가 가능해지지만, 복잡한 처리가 필요한 TCP의 처리도 하드웨어화하기 때문에, 회로 규모가 커져서, 비용, 소비 전력, 열의 발생 등의 면에서 문제가 있다.
또한, TCP 및 UDP에서는, 데이터를 패킷화하여 송수신하지만, 수신한 데이터의 신뢰성을 체크하기 위해, 각각의 패킷에는 체크썸이 부여된다. 체크썸은 패킷의 전체 데이터에 1의 보수를 가산한 것이며, 패킷의 헤더 내에 저장된다. 송신측은 패킷의 송신에 앞서, 그 패킷의 전체 데이터를 가산하여 체크썸을 산출하여, 헤더에 저장하고 송신한다. 수신측은 패킷을 수신하면, 그 패킷의 전체 데이터를 가산하여, 그 결과가 헤더 내에 저장된 체크썸값과 일치하는지 여부를 체크한다. 일치하고 있으면, 패킷의 수신에 성공하였다고 판단하고, 일치하지 않으면, 수신한 패킷 내의 데이터에 오류가 있다고 판단하여, 그 패킷을 폐기한다.
TCP의 경우, 1회에 송신 가능한 데이터량은 네트워크의 상황이나, 수신측의 버퍼의 상황 등에 따라 변동되므로, 송신 직전에 결정된다. 그 때문에, 송신측에서는, 일반적으로, 다음에 송신할 패킷의 사이즈를 확정한 후에, 그 패킷의 데이터를 판독하여 체크썸을 산출하고 있다. 그리고, 그 체크썸을 패킷의 헤더에 저장하고, 헤더 정보를 송신한 후, 다시 데이터를 판독하여 송신한다.
일본 특개2001-268159호 공보는, TCP 패킷을 생성하는 방법을 개시한다. 이 방법에서는, TCP에 의해 송신해야 할 데이터를 일단 TX 버퍼에 저장하고, 다음에 송신할 패킷의 사이즈를 확정하면, 그 사이즈의 데이터를 TX 버퍼로부터 판독하여 체크썸을 산출함과 함께, 그 데이터를 임시 버퍼에 저장한다. 그리고, 체크썸을 포함한 헤더를 송신한 후, 임시 버퍼로부터 데이터를 판독하여 송신한다. 이와 같이, 메모리를 2개 준비함으로써, 체크썸 산출을 위한 TX 버퍼로부터의 데이터 판독과, 데이터 송신을 위한 임시 버퍼로부터의 데이터 판독을 병행하여 파이프 라인적으로 행할 수 있기 때문에, 오버헤드를 개선할 수 있다.
그러나, 이 방법에 의해서도, 다음에 송신할 패킷의 사이즈를 확정하고 나서 체크썸을 산출하는 데 변화가 없어, 패킷 송출까지 지연 시간이 길어진다는 문제가 있다. 또한, 물리적으로 분할된 2종류의 메모리를 준비할 필요가 있기 때문에, 하드웨어 규모가 커져서 비용이 든다는 문제가 있다.
본 발명은 그와 같은 과제를 감안하여 이루어진 것으로, 그 목적은 데이터 통신에 수반하는 패킷 처리를 효율적으로 행하는 기술을 제공하는 것에 있다.
본 발명의 일 양태는 통신 장치에 관한 것이다. 이 통신 장치는 네트워크를 통해 보내진 패킷을 수신하는 수신부와, 수신한 패킷이 데이터의 송수신에 앞서 장치 사이에서 접속을 확립하는 것을 필요로 하는 제1 통신 방식에 의해 보내진 패킷이었을 때, 그 패킷을 소프트웨어에 의해 처리하기 위한 범용 회로와, 수신한 패킷이, 장치 사이에서의 접속의 확립을 필요로 하지 않는 제2 통신 방식에 의해 보내진 패킷이었을 때, 그 패킷을 처리하기 위한 전용 회로를 구비한다.
본 발명의 다른 양태도 통신 장치에 관한 것이다. 이 통신 장치는, 네트워크를 통해 보내진 패킷을 수신하는 수신부와, 수신한 패킷이 송신 패킷의 도착 확인을 행하는 제1 통신 방식에 의해 보내진 패킷이었을 때, 그 패킷을 소프트웨어에 의해 처리하기 위한 범용 회로와, 수신한 패킷이 송신 패킷의 도착 확인을 행하지 않는 제2 통신 방식에 의해 보내진 패킷이었을 때, 그 패킷을 처리하기 위한 전용 회로를 구비한다.
범용 회로는 CPU, DSP 등이어도 된다. 제1 통신 방식은, 예를 들면 TCP이어도 된다. 제2 통신 방식은, 예를 들면 UDP이어도 된다. UDP의 처리만을 하드웨어화함으로써, 회로 규모의 증대를 억제하면서, UDP의 처리를 고속화할 수 있다.
이 통신 장치는, 네트워크를 통해 패킷을 송신하는 송신부를 더 구비하며, 송신하는 패킷이 상기 제1 통신 방식에 의해 보내질 때, 그 패킷을 상기 범용 회로에 의해 처리하며, 송신하는 패킷이 상기 제2 통신 방식에 의해 보내질 때, 그 패킷을 상기 전용 회로에 의해 처리해도 된다.
이 통신 장치는, 수신한 패킷이 어떤 통신 방식에 의해 보내졌는지를 검출하는 검출부를 더 구비하여도 된다. 검출부는 패킷의 헤더를 참조하여, 통신 방식을 검출해도 된다. 이 검출부도, 전용 회로에 의해 구성되어도 된다.
상기 검출부에 의해, 상기 제1 통신 방식에 의해 보내진 패킷이 검출되었을 때, 상기 검출부는 그 패킷을 상기 범용 회로를 통하지 않고, 직접 상기 전용 회로로 보내도 된다. 소프트웨어 처리를 통하지 않고, 전용 회로에 의해 처리함으로써, 고속 처리가 실현한다. 또한, CPU 등의 범용 회로의 처리 부담을 경감할 수 있다.
이 통신 장치는 패킷을 구성하는 데이터를 암호화 또는 복호화하는 시큐러티 처리부를 더 구비하여도 된다. 이 시큐러티 처리부도, 전용 회로에 의해 구성되어도 된다.
본 발명의 또 다른 양태도 통신 장치에 관한 것이다. 이 통신 장치는, 네트워크를 통해 보내진 패킷을 수신하는 수신부와, 수신한 패킷이 프래그먼트화된 패킷이었을 때, 그 패킷을 소프트웨어에 의해 처리하기 위해 범용 회로로 보내며, 수신한 패킷이 프래그먼트화되어 있지 않은 패킷이었을 때, 그 패킷을 하드웨어에 의해 처리하기 위해 제1 전용 회로로 보내는 제1 판별부를 구비한다.
IP 패킷 중, 옵션을 추가한 IP 패킷이나, 프래그먼트화된 IP 패킷 등은 복잡한 처리를 필요로 하기 때문에, 이들 IP 패킷도 전용 회로로 처리하고자 하면, 회로 규모가 증대되어, 소비 전력이나 비용의 증대를 초래한다. 그 때문에, 통상의 IP 패킷은 전용 회로에 의해 고속으로 처리하면서, 통상의 IP 패킷보다도 복잡한 처리를 필요로 하는 특수한 IP 패킷은 CPU 등의 범용 회로에서 소프트웨어에 의해 처리함으로써, 전용 회로의 회로 규모를 억제하여, 소비 전력 및 비용을 저감할 수 있다.
이 통신 장치는, 상기 제1 전용 회로에 의해 처리한 패킷이 데이터의 송수신에 앞서 장치 사이에서 접속을 확립하는 것을 필요로 하는 제1 통신 방식에 의해 보내진 패킷이었을 때, 그 패킷을 상기 범용 회로로 보내고, 상기 제1 전용 회로에 의해 처리한 패킷이 장치 사이에서의 접속의 확립을 필요로 하지 않는 제2 통신 방식에 의해 보내진 패킷이었을 때, 그 패킷을 하드웨어에 의해 처리하기 위한 제2 전용 회로로 보내는 제2 판별부를 더 구비하여도 된다. 통상의 IP 패킷의 IP 처리를 IP 처리 회로에서 행한 후, 패킷이 UDP인지 TCP인지를 판단하여, UDP 패킷만을 UDP 처리 회로로 처리하고, TCP 패킷은 CPU 등의 범용 회로에 의해 소프트웨어 처리해도 된다.
본 발명의 또 다른 양태도 통신 장치에 관한 것이다. 이 통신 장치는, 네트워크를 통해 수신한 패킷이 리얼타임 처리를 필요로 하는 데이터를 포함하는 패킷인지의 여부를 판별하는 판별부와, 상기 패킷을 일시적으로 보유하는 버퍼와, 상기 버퍼에의 상기 패킷의 저장을 제어하는 제어부를 구비하며, 상기 제어부는 상기 버퍼의 빈 영역이 소정의 임계값을 하회하였을 때, 상기 리얼타임 처리를 필요로 하는 데이터를 포함하는 패킷의 상기 버퍼로의 저장을 허가하는 한편, 리얼타임 처리를 필요로 하는 데이터를 포함하지 않는 패킷의 상기 버퍼로의 저장을 금지한다.
리얼타임 처리를 필요로 하는 패킷을 우선적으로 수신 버퍼에 저장하여 처리 함으로써, 버퍼가 포화되어 리얼타임 처리를 필요로 하는 패킷이 파기될 가능성을 억제할 수 있다.
본 발명의 또 다른 양태도 통신 장치에 관한 것이다. 이 통신 장치는, 네트워크를 통해 수신한 패킷이 데이터의 송수신에 앞서 장치 사이에서 접속을 확립하는 것을 필요로 하는 제1 통신 방식에 의해 보내진 패킷인지, 장치 사이에서의 접속의 확립을 필요로 하지 않는 제2 통신 방식에 의해 보내진 패킷인지를 판별하는 판별부와, 상기 패킷을 일시적으로 보유하는 버퍼와, 상기 버퍼에의 상기 패킷의 저장을 제어하는 제어부를 구비하며, 상기 제어부는 상기 버퍼의 빈 영역이 소정의 임계값을 하회하였을 때, 상기 제2 통신 방식에 의해 보내진 패킷의 상기 버퍼로의 저장을 허가하는 한편, 상기 제1 통신 방식에 의해 보내진 패킷의 상기 버퍼로의 저장을 금지한다.
전화 장치에서의 통화 음성 신호나, 비디오 전화 장치에서의 영상 신호 등을 UDP에 의해 송수신하는 경우, UDP 패킷을 TCP 패킷보다 우선하여 선택적으로 저장함으로써, UDP 패킷이 파기되어 통화 음성 신호 등의 데이터가 누락될 가능성을 억제할 수 있다.
본 발명의 또 다른 양태도 통신 장치에 관한 것이다. 이 통신 장치는 네트워크를 통해 수신한 패킷의 종별을 판별하는 판별부와, 상기 패킷을 일시적으로 보유하는 버퍼와, 상기 버퍼로의 패킷의 저장을 제어하는 제어부를 구비하며, 상기 제어부는 상기 버퍼로의 패킷의 저장의 허락 여부를 판정하기 위한 임계값을 패킷의 종별에 따라 복수 보유하고, 상기 버퍼의 빈 영역이 임계값을 하회한 패킷 종별 의 패킷의 상기 버퍼로의 저장을 금지한다.
리얼타임 처리를 필요로 하는 패킷이나, 중요도가 높은 패킷에 대한 임계값을 그 밖의 패킷에 대한 임계값보다도 낮게 설정해도 된다. 이것에 의해, 버퍼의 빈 영역이 적어졌을 때에, 리얼타임성을 갖는 패킷이나, 중요도가 높은 패킷을 우선적으로 저장하여, 패킷이 파기될 가능성을 억제할 수 있다.
본 발명의 또 다른 양태는 전화 장치에 관한 것이다. 이 전화 장치는 음성을 입력하는 입력부와, 상기 입력부에 의해 입력된 음성을 다른 장치로 송신하고, 다른 장치로부터 음성을 수신하는 통신부와, 다른 장치로부터 수신한 음성을 출력하는 출력부를 구비하며, 상기 통신부는 네트워크를 통해 보내진 패킷을 수신하는 수신부와, 수신한 패킷의 통신 방식을 검출하는 검출부와, 상기 통신 방식이 데이터의 송수신에 앞서 장치 사이에서 접속을 확립하는 것을 필요로 하는 제1 통신 방식이었을 때, 그 패킷을 소프트웨어에 의해 처리하기 위한 범용 회로와, 상기 통신 방식이 장치 사이에서의 접속의 확립을 필요로 하지 않는 제2 통신 방식이었을 때, 그 패킷을 처리하기 위한 전용 회로를 포함하며, 상기 음성을 상기 제2 통신 방식에 의해 송수신한다. 출력부는 스피커이어도 되며, 입력부는 마이크로폰이어도 된다.
본 발명의 또 다른 양태는 비디오 전화 장치에 관한 것이다. 이 비디오 전화 장치는 화상 및 음성을 입력하는 입력부와, 상기 입력부에 의해 입력된 화상 및 음성을 다른 장치로 송신하여, 다른 장치에서 화상 및 음성을 수신하는 통신부와, 다른 장치로부터 수신한 화상 및 음성을 출력하는 출력부를 구비하고, 상기 통신부 는 네트워크를 통해 보내진 패킷을 수신하는 수신부와, 수신한 패킷의 통신 방식을 검출하는 검출부와, 상기 통신 방식이 데이터의 송수신에 앞서 장치 사이에서 접속을 확립하는 것을 필요로 하는 제1 통신 방식이었을 때, 그 패킷을 소프트웨어에 의해 처리하기 위한 범용 회로와, 상기 통신 방식이 장치 사이에서의 접속의 확립을 필요로 하지 않는 제2 통신 방식이었을 때, 그 패킷을 처리하기 위한 전용 회로를 포함하며, 상기 화상 및 음성을 상기 제2 통신 방식에 의해 송수신한다.
본 발명의 또 다른 양태는 촬상 장치에 관한 것이다. 이 촬상 장치는 화상을 촬상하는 촬상부와, 상기 촬상부에 의해 촬상된 화상을 다른 장치로 송신하며, 다른 장치로부터 화상을 수신하는 통신부를 구비하며, 상기 통신부는 네트워크를 통해 보내진 패킷을 수신하는 수신부와, 수신한 패킷의 통신 방식을 검출하는 검출부와, 상기 통신 방식이 데이터의 송수신에 앞서 장치 사이에서 접속을 확립하는 것을 필요로 하는 제1 통신 방식이었을 때, 그 패킷을 소프트웨어에 의해 처리하기 위한 범용 회로와, 상기 통신 방식이 장치 사이에서의 접속의 확립을 필요로 하지 않는 제2 통신 방식이었을 때, 그 패킷을 처리하기 위한 전용 회로를 포함하며, 상기 화상을 상기 제2 통신 방식에 의해 송수신한다.
본 발명의 또 다른 양태는 통신 방법에 관한 것이다. 이 방법은 패킷을 수신하였을 때에, 그 패킷의 통신 방식을 검출하는 단계와, 상기 통신 방식에 따라, 그 패킷을 처리하기 위한 회로에 패킷의 데이터를 전송하는 단계를 포함한다.
상기 검출하는 단계는 패킷의 헤더를 해석함으로써, 데이터의 송수신에 앞서 장치 사이에서의 접속의 확립을 필요로 하는 제1 통신 방식에 의한 패킷인지, 장치 사이에서의 접속의 확립을 필요로 하지 않는 제2 통신 방식에 의한 패킷인지를 검출하여, 상기 데이터를 전송하는 단계는 상기 제1 통신 방식에 의한 패킷을 소프트웨어 처리하기 위한 범용 회로로 보내며, 상기 제2 통신 방식에 의한 패킷을 그 패킷을 처리하기 위한 전용 회로로 보내도 된다.
상기 검출하는 단계는, 패킷의 헤더를 해석함으로써, 프래그먼트화된 패킷인지, 프래그먼트화되어 있지 않은 패킷인지를 검출하며, 상기 데이터를 전송하는 단계는 상기 프래그먼트화된 패킷을 소프트웨어 처리하기 위한 범용 회로로 보내며, 상기 프래그먼트화되어 있지 않은 패킷을 그 패킷을 처리하기 위한 전용 회로로 보내도 된다.
리얼타임성을 필요로 하지 않는 데이터는, 상기 제1 통신 방식에 의해 송수신하는 한편, 리얼타임성을 필요로 하는 스트림 데이터는 상기 제2 통신 방식에 의해 송수신해도 된다. 리얼타임 처리를 필요로 하는 데이터란, 시간 제약을 받는 데이터를 의미하며, 또한, 리얼타임성을 필요로 하지 않는 데이터란, 시간 제약을 받지 않는 데이터를 뜻한다. 스트림 데이터는, 예를 들면 통화 음성 데이터, 동화상 데이터 등이어도 된다.
본 발명의 또 다른 양태는 통신 방법에 관한 것이다. 이 방법은 패킷을 수신하였을 때에, 그 패킷의 종별을 검출하는 단계와, 상기 종별마다 설정된 조건에 기초하여, 패킷을 일시적으로 보유하는 버퍼로의 그 패킷의 저장의 허락 여부를 판단하는 단계와, 저장이 허가되었을 때에, 그 패킷을 상기 버퍼로 저장하는 단계와, 저장이 허가되지 않았을 때에, 그 패킷을 파기하는 단계를 포함한다.
본 발명의 또 다른 양태는 패킷 처리 장치에 관한 것이다. 이 패킷 처리 장치는 네트워크를 통해 취득한 패킷을 일시적으로 보유하는 버퍼와, 상기 패킷의 상기 버퍼로의 저장을 제어하는 기입 제어부를 구비하며, 상기 기입 제어부는 상기 패킷의 헤더 정보 중, 송신 목적지 어드레스 정보를 파기하고 상기 수신 버퍼에 저장한다.
패킷의 MAC 헤더에 저장되어 있는 송신 목적지 MAC 어드레스는 패킷을 수신하면 이후의 패킷 처리에는 불필요하기 때문에, 이것을 파기함으로써, 버퍼의 사용 효율을 향상시킬 수 있다.
상기 기입 제어부는 상기 송신 목적지 어드레스 정보 대신, 그 패킷이 유니캐스트, 멀티캐스트, 브로드캐스트 중 어느 것에 의해 송신되었는지를 나타내는 송신 종별 정보를 포함하는 관리 정보를 저장해도 된다. 상기 관리 정보는 패킷의 종별을 나타내는 패킷 종별 정보, 및 다음 패킷의 저장 위치를 나타내는 어드레스 정보를 더 포함하여도 된다. 상기 기입 제어부는 상기 관리 정보를 1 워드 내로 하며, 후속 데이터를 워드 단위로 정형하여 상기 버퍼에 저장해도 된다.
MAC 헤더는 32 비트 워드로 3.5 워드이며, 불완전한 사이즈이기 때문에, 그대로 버퍼에 저장하면, 후속 데이터가 모두 반(半) 워드씩 어긋나게 된다. 그 때문에, 1.5 워드분의 송신 목적지 MAC 어드레스를 파기하고 버퍼에 저장함으로써, 후속 데이터를 워드 단위로 얼라이먼트할 수 있다. 이 때, 패킷 처리에 필요한 관리 정보를 1 워드분 추가해도 된다. 이것에 의해, 하드웨어적으로나 소프트웨어적으로도 취급이 용이해진다.
본 발명의 또 다른 양태도 패킷 처리 장치에 관한 것이다. 이 패킷 처리 장치는 네트워크를 통해 취득한 패킷을 일시적으로 보유하는 버퍼와, 상기 패킷의 상기 버퍼로부터의 판독을 제어하는 판독 제어부를 구비하며, 상기 패킷의 헤더 부분에는 각각 독립한 레지스터를 할당하여 랜덤 액세스를 가능하게 하는 한편, 상기 패킷의 데이터 부분은 액세스 포트 레지스터를 통해 판독을 행하도록 구성한다.
헤더 정보는 CPU가 패킷의 전송 목적지를 결정하기 위해 판독할 필요가 있기 때문에, 독립한 레지스터를 할당하여 용이하게 액세스할 수 있도록 한다. 데이터 부분은 전송 목적지만 결정되면, 전송 목적지로 복사하면 될 뿐이기 때문에, 액세스 포트 레지스터에 의해 포인터를 관리하지 않고 액세스할 수 있도록 한다.
상기 판독 제어부는 판독하는 패킷의 종별에 따라, 상기 액세스 포트 레지스터가 판독을 개시하는 위치를 설정해도 된다. 예를 들면, MAC 패킷에서는 MAC 데이터의 선두 위치에, IP 패킷에서는 IP 데이터의 선두 위치에, 판독 개시 위치를 자동적으로 설정한다. 이것에 의해, CPU의 처리 부하를 보다 경감할 수 있다.
상기 패킷을 상기 버퍼에 저장하기 전에, 그 헤더 정보를 해석함으로써 불필요한 패킷을 파기하는 헤더 해석부와, 상기 패킷을 상기 버퍼에 저장하기 전에, 그 체크썸을 산출하여, 헤더에 저장된 체크썸값과 일치하는지 여부를 검증하는 체크썸 산출부를 더 구비하여도 된다. 이것에 의해, CPU는 버퍼에 보유된 패킷이 유효한 패킷인 것을 전제로 처리를 행할 수 있다.
본 발명의 또 다른 양태는 전화 장치에 관한 것이다. 이 전화 장치는 음성을 입력하는 입력부와, 상기 입력부에 의해 입력된 음성을 다른 장치로 송신하고, 다른 장치로부터 음성을 수신하는 통신부와, 다른 장치로부터 수신한 음성을 출력하는 출력부를 구비하며, 상기 통신부는 네트워크를 통해 보내진 패킷을 수신하는 수신부와, 수신한 패킷을 처리하는 패킷 처리부를 포함하며, 상기 패킷 처리부는 상기 패킷을 일시적으로 보유하는 버퍼와, 상기 패킷의 상기 버퍼로의 저장을 제어하는 기입 제어부를 포함하며, 상기 기입 제어부는 상기 패킷의 헤더 정보 중, 송신 목적지 어드레스 정보를 파기하고 상기 수신 버퍼에 저장한다.
본 발명의 또 다른 양태도 전화 장치에 관한 것이다. 이 전화 장치는 음성을 입력하는 입력부와, 상기 입력부에 의해 입력된 음성을 다른 장치로 송신하고, 다른 장치로부터 음성을 수신하는 통신부와, 다른 장치로부터 수신한 음성을 출력하는 출력부를 구비하며, 상기 통신부는 네트워크를 통해 보내진 패킷을 수신하는 수신부와, 수신한 패킷을 처리하는 패킷 처리부를 포함하며, 상기 패킷 처리부는 상기 패킷을 일시적으로 보유하는 버퍼와, 상기 패킷의 상기 버퍼로부터의 판독을 제어하는 판독 제어부를 포함하고, 상기 패킷의 헤더 부분에는 각각 독립한 레지스터를 할당하여 랜덤 액세스를 가능하게 하는 한편, 상기 패킷의 데이터 부분은 액세스 포트 레지스터를 통해 판독을 행하도록 구성한다.
본 발명의 또 다른 양태는 패킷 처리 방법에 관한 것이다. 이 방법은 패킷을 수신하였을 때에, 그 패킷을 버퍼에 일시적으로 저장하는 단계와, 상기 저장하는 단계에 앞서, 상기 패킷의 헤더 정보 중, 송신 목적지 어드레스 정보를 파기하는 단계를 포함한다.
본 발명의 또 다른 양태는 체크썸 산출 방법에 관한 것이다. 이 방법은 소 정의 타이밍에서 데이터 길이가 확정되는 데이터 블록에 체크썸을 부여하기 위해, 상기 타이밍에 앞서, 상기 데이터 블록을 포함하는 데이터 유닛의 소정 길이마다, 상기 데이터 유닛의 선두로부터의 체크썸의 누적값을 산출하여 기억 장치에 보유한다.
데이터 블록은, 예를 들면 TCP에서의 페이로드이어도 된다. TCP 패킷은 송신 직전에 데이터 길이가 확정되지만, 미리 소정 길이마다 체크썸의 누적값을 저장해둠으로써, 데이터 길이가 확정되였을 때에, 그 데이터 블록 전후의 누적값을 이용하여, 단시간에 패킷의 체크썸을 산출할 수 있다.
상기 데이터 블록의 데이터 길이가 확정된 후, 그 데이터 블록 전후의 상기 누적값을 상기 기억 장치로부터 판독하여, 그 데이터 블록의 체크썸을 산출해도 된다. 상기 데이터 블록의 직전의 데이터까지의 체크썸의 누적값과, 상기 데이터 블록의 최후의 데이터까지의 체크썸 누적값을 상기 기억 장치로부터 판독하여, 이들의 차를 산출하여, 그 데이터 블록의 체크썸으로 하여도 된다.
본 발명의 또 다른 양태도 체크썸 산출 방법에 관한 것이다. 이 방법은 소정의 타이밍에서 데이터 길이가 확정되는 데이터 블록에 체크썸을 부여하기 위해, 상기 타이밍에 앞서, 상기 데이터 블록을 포함하는 데이터 유닛을 소정 길이로 분할하고, 그 각 부분마다 체크썸값을 산출하여 기억 장치에 보유한다. 상기 데이터 블록의 데이터 길이는 상기 소정 길이의 정수배가 되도록 제한되어도 된다.
본 발명의 또 다른 양태는 체크썸 기록 방법에 관한 것이다. 이 방법은 어떤 데이터 유닛의 복수의 부분에 대하여, 데이터 유닛의 선두에서 그 부분까지의 체크썸값을 산출하여 보유한다. 데이터 유닛의 사이즈가 큰 경우이더라도, 도중의 복수의 부분에 대하여, 체크썸의 도중 결과를 기록해둠으로써, 데이터 유닛의 선두에 가까운 데이터에 오류가 있었을 때에, 데이터 유닛 전체의 체크썸을 계산할 필요없이, 오류를 검출할 수 있다.
본 발명의 또 다른 양태는 통신 장치에 관한 것이다. 이 통신 장치는 데이터 유닛을 입력받는 입력부와, 상기 데이터 유닛의 선두로부터의 체크썸의 누적값을 산출하는 산출부와, 상기 데이터 유닛의 소정 길이마다, 상기 누적값을 보유하는 보유부를 구비한다.
상기 데이터 유닛을 복수의 데이터 블록으로 분할하여, 네트워크를 통해 송출하는 출력부와, 다음에 송출할 데이터 블록의 사이즈를 제어하는 사이즈 제어부와, 다음에 송출할 데이터 블록의 사이즈를 취득하여, 그 데이터 블록 전후의 상기 누적값을 상기 보유부로부터 판독하여, 그 데이터 블록의 체크썸을 산출하는 제2 산출부를 더 구비하여도 된다.
상기 보유부는 송출할 데이터 블록의 사이즈가 미리 정해져 있지 않은 통신 방식에 의해 데이터 유닛을 송출하는 경우에는, 소정 길이마다, 그 데이터 유닛의 선두로부터의 체크썸의 누적값을 보유하며, 송출할 데이터 블록의 사이즈가 미리 정해져 있는 통신 방식에 의해 데이터 유닛을 송출하는 경우에는, 그 데이터 유닛 전체의 체크썸을 보유해도 된다. 송출할 데이터 블록의 사이즈가 미리 정해져 있지 않은 통신 방식은, 예를 들면 TCP이어도 되며, 송출할 데이터 블록의 사이즈가 미리 정해져 있는 통신 방식은 예를 들면 UDP이어도 된다.
이상의 구성 요소를 임의로 조합하여, 본 발명의 표현을 방법, 장치, 시스템 등의 사이에서 변환한 것도 또한, 본 발명의 양태로서 유효하다.
<발명을 실시하기 위한 최량의 형태>
(제1 실시 형태)
도 1은 본 발명의 제1 실시 형태에 따른 통신 장치의 일례로서의 인터넷 전화 장치(100)의 전체 구성을 도시한다. 인터넷 전화 장치(100)는 인터넷(20)을 통해, 다른 인터넷 전화 장치(100)와 통화를 행하기 위한 장치이다. 인터넷 전화 장치(100)는, 주로 소프트웨어 처리를 실행하기 위한 범용 회로인 CPU(110), 프로그램 에리어 또는 워크 에리어로서 이용되는 메모리(120), 인터넷(20)을 통해 패킷을 송수신하는 네트워크 인터페이스부(130), 음성 신호를 입력하는 마이크(150), 음성 신호를 출력하는 스피커(160), 음성 신호의 압축 부호화 처리 및 복호 처리를 행하는 코덱 처리부(140), 통신 프로토콜에 따른 각종 처리를 행하는 프로토콜 처리부(170), 및 이들 구성을 전기적으로 접속하는 버스(102)를 구비한다.
본 실시 형태의 인터넷 전화 장치(100)에서는, 트랜스포트층의 통신 프로토콜로서, UDP를 이용하여 음성 신호를 송수신한다. UDP는 접속의 확립을 필요로 하지 않아, 패킷을 잇달아 송출하는 것이 가능한 통신 방식이기 때문에, 프로토콜 처리가 간단하며, 또한 고속 통신이 가능하여, 통화 음성을 전송하는 등의 리얼타임 통신에 적합하다. 본 실시 형태의 인터넷 전화 장치(100)에서는, UDP에 의해 보내진 패킷의 처리를 전용 회로인 프로토콜 처리부(170)에 실행시킴으로써, 처리 속도 를 보다 향상시켜서, 리얼타임으로 통화 음성의 송수신을 실현한다.
인터넷 전화 장치(100)가 송수신하는 패킷 중, TCP에 의해 송수신되는 패킷은 CPU(110)를 이용하여 소프트웨어에 의해 처리된다. 리얼타임성을 필요로 하지 않는 TCP에 대해서는 전용 회로를 설치하지 않고, 범용 회로에 의한 소프트웨어 처리를 행함으로써, 회로 규모의 증대를 억제하여, 비용, 소비 전력, 열 발생의 증대를 최소한으로 억제할 수 있다. 본 발명자의 시산(試算)에 따르면, TCP과 UDP 양쪽을 전용 회로에 의해 처리하는 경우에 비해, 회로의 면적 및 소비 전력이 약 1/3로 가능한 것을 알 수 있다.
네트워크 인터페이스부(130)가 수신한 패킷은 프로토콜 처리부(170)의 IP 처리부(178)로 보내진다. lP 처리부(178)는 패킷이 자장치에 할당된 IP 어드레스로 보내진 것인지 여부를 판단하여, 자장치를 목적지로 하는 패킷만을 프로토콜 검출부(176)로 보낸다. 프로토콜 검출부(176)는 패킷에 첨부된 IP 헤더 내의 프로토콜 종별을 나타내는 PROT를 참조하거나, 또는 TCP 헤더 또는 UDP 헤더를 참조하여, 프로토콜의 종별을 검출한다. 패킷이 TCP에 의해 보내진 패킷인 경우에는 그 패킷의 데이터를 버스(102) 상으로 보내어, CPU(110)에 의해 소프트웨어 처리시킨다. 패킷이 UDP의 패킷인 경우에는, 그 패킷의 데이터를 UDP 처리부(174)로 보내어, UDP 데이터의 처리를 위해 전용으로 설치된 회로에 의해 처리시킨다.
UDP 처리부(174)는 UDP 패킷을 처리하기 위한 전용 회로이며, UDP 패킷을 수취하고, 그 헤더를 해석하여 필요한 처리를 실행한다. 시큐러티 처리부(172)는 데이터에 대하여 암호화 처리 등의 시큐러티 대책이 실시되어 있었던 경우에, 암호를 복호하는 등의 처리를 행한다. 복호된 데이터는 코덱 처리부(140)로 보내진다. 코덱 처리부(140)는 압축 부호화되어 있는 통화 음성 신호를 복호하여, 스피커(160)로 출력한다.
이와 같이, 본 실시 형태의 인터넷 전화 장치(100)에서는, 정확성보다도 리얼타임성이 중시되어, 통화 중 상시 처리가 필요하게 되는 통화 음성 데이터는 UDP에 의해 송수신을 행하고, 전용 회로인 UDP 처리부(174)에 의해 하드웨어 처리를 행하는 한편, 리얼타임성보다도 정확성이 중시되는 데이터는 TCP에 의해 송수신을 행하여, CPU(110)에 의해 소프트웨어 처리를 행한다. 이것에 의해, 회로의 복잡화, 회로 규모, 비용, 소비 전력, 열 발생 등의 증대를 억제하면서, 통화 음성 데이터를 고속으로 처리하는 것이 가능해진다. 이러한 이점은 복수의 상대와 동시에 통화하거나, 통화 음성과 함께 화상을 송신하는 등, 대량의 데이터를 동시에 처리하는 것이 필요한 경우에 보다 현저해진다. 또한, 프로토콜 검출부(176)에 의해 패킷의 종별을 검출하여, 패킷의 처리 주체를 고속이며 또한 적절하게 선택할 수 있다. 또한, CPU(110)의 처리 부담을 경감하여, 저비용화, 저소비 전력화를 실현할 수 있는 것 이외에, CPU(110)에 여력이 생기기 때문에, 통화 중에 다른 어플리케이션을 실행하는 것이 가능해져서, 새로운 서비스를 제공할 수도 있다.
이상, 패킷을 수신하였을 때의 동작에 대하여 설명하였지만, 계속해서, 마이크(150)로부터 입력된 음성 신호를 패킷화하여 송신할 때의 동작에 대하여 설명한다. 마이크(150)로부터 입력된 음성 신호는 코덱 처리부(140)로 보내져서 부호화된다. 부호화된 신호는 필요하면, 시큐러티 처리부(172)에 의해 암호화된 후, UDP 처리부(174)로 보내져, UDP 헤더가 첨부되어 패킷화된다. 이 UDP 패킷은 네트워크 인터페이스부(130)를 통해 인터넷(20)으로 송출된다.
도 2는 본 실시 형태에서의 통신 방법의 수순을 나타내는 흐름도이다. 네트워크 인터페이스부(130)가 패킷을 수신하면(S100), IP 처리부(178)가 처리를 행한후, 프로토콜 검출부(176)가 UDP 패킷인지 TCP 패킷인지를 검출한다(S102). UDP 패킷인 경우에는(S102의 '예'), UDP 패킷을 처리하기 위한 전용 회로인 UDP 처리부(174)에 의해 패킷 처리가 행해진다(S104). TCP 패킷인 경우에는(S102의 '아니오'), 범용 회로인 CPU(110)에 의해 패킷 처리가 행해진다(S106). 그 후, 데이터의 종류에 따라 필요한 처리가 행해진다.
실시 형태에서는 전화 장치를 예로 들어 설명하였지만, 본 실시 형태의 기술은, 컴퓨터나 휴대 전화 등, 스트림 데이터를 송수신하는 통신 장치 전반에 이용 가능하다.
IP 처리부(178), 프로토콜 검출부(176), UDP 처리부(174)의 기능을 갖는 회로를 하나의 반도체 기판 위에 탑재해도 된다. 또한, 시큐러티 처리부(172), 코덱 처리부(140), CPU(110) 등의 회로를 탑재해도 된다. 이것에 의해, 통신 장치의 소형화, 경량화, 고속화를 도모할 수 있다.
본 실시 형태에 따르면, 복수의 통신 프로토콜에 의한 데이터 통신을 효율적으로 처리할 수 있다. 또한, 비교적 간편한 회로 구성에 의해, 고속의 리얼타임 통신을 실현할 수 있다.
(제2 실시 형태)
도 3은 제2 실시 형태에 따른 통신 장치의 일례로서의 비디오 전화 장치(200)의 전체 구성을 도시한다. 본 실시 형태의 비디오 전화 장치(200)는, 도 1에 도시한 제1 실시 형태의 인터넷 전화 장치(100)의 구성 이외에, 입력부의 일례로서의 화상 입력부(180), 및 출력부의 일례로서의 표시 장치(190)를 구비한다. 그 밖의 구성에 대해서는 제1 실시 형태와 마찬가지이다. 마찬가지의 구성에는 동일한 부호를 붙인다. 본 실시 형태에서는, 화상 데이터도 UDP에 의해 송수신된다.
화상 입력부(180)는 통화 음성과 함께 상대에게 송신하기 위한 화상을 입력한다. 화상 입력부(180)는 외부의 카메라나 비디오 재생 장치 등으로부터 화상을 입력해도 되며, 자신이 촬상 장치로서 화상을 촬상해도 된다. 입력된 화상은 코덱 처리부(140)로 직접 보내져서 부호화되며, UDP 처리부(174)에 의해 UDP 패킷으로 정형되어, 네트워크 인터페이스부(130)에 의해 인터넷(20)으로 송출된다. 표시 장치(190)는 통화 음성과 함께 상대로부터 수신한 화상을 표시한다. 네트워크 인터페이스부(130)가 수신한 UDP 패킷에 포함되는 화상 데이터는, UDP 처리부(174), 시큐러티 처리부(172), 및 코덱 처리부(140)에 의해 처리되며, 코덱 처리부(140)로부터 표시 장치(190)로 직접 화상 데이터가 보내져서 표시된다.
(제3 실시 형태)
도 4는 제3 실시 형태에 따른 통신 장치의 일례로서의 디지털 카메라(300)의 전체 구성을 도시한다. 본 실시 형태의 디지털 카메라(300)는 전화 통신 기능을 갖고 있으며, 도 1에 도시한 제1 실시 형태의 인터넷 전화 장치(100)의 구성 이외에, 촬상부(182) 및 표시 장치(190)를 구비한다. 그 밖의 구성에 대해서는 제1 실 시 형태와 마찬가지이다. 마찬가지의 구성에는 동일한 부호를 붙인다.
촬상부(182)는 CCD 등의 촬상 소자와, 그것을 제어하는 구성을 포함하며, 정지 화상 또는 동화상을 촬상한다. 촬상된 화상은 코덱 처리부(140)에 직접 보내져서 부호화되며, UDP 처리부(174)에 의해 UDP 패킷으로 정형되어, 네트워크 인터페이스부(130)에 의해 인터넷(20)으로 송출된다. 표시 장치(190)는 통화 음성과 함께 상대로부터 수신한 화상을 표시한다. 네트워크 인터페이스부(130)가 수신한 UDP 패킷에 포함되는 화상 데이터는 UDP 처리부(174), 시큐러티 처리부(172), 및 코덱 처리부(140)에 의해 처리되어, 코덱 처리부(140)로부터 표시 장치(190)로 직접 화상 데이터가 보내져서 표시된다.
(제4 실시 형태)
도 5는 제4 실시 형태에 따른 통신 장치의 일례로서의 비디오 전화 장치(200)의 전체 구성을 도시한다. 본 실시 형태의 비디오 전화 장치(200)는, 도 3에 도시한 제2 실시 형태의 비디오 전화 장치(200)에 비해, 화상 입력부(180) 및 표시 장치(190)가 코덱 처리부(140)에 직접 접속되어 있지 않고, 버스(102)에 접속되어 있다. 그 밖의 구성은 도 3과 마찬가지이며, 마찬가지의 구성에는 동일한 부호를 붙인다.
화상 입력부(180)가 입력한 화상은 메모리(120)에 보유되며, 적절하게 판독되어, 코덱 처리부(140)에 의해 부호화된다. 부호화된 화상 데이터는 UDP 처리부(174)에 의해 UDP 패킷으로 정형되어, 네트워크 인터페이스부(130)에 의해 인터넷(20)으로 송출된다. 네트워크 인터페이스부(130)가 수신한 UDP 패킷에 포함되는 화상 데이터는 UDP 처리부(174), 시큐러티 처리부(172), 및 코덱 처리부(140)에 의해 처리되어, 버스(102)를 통해 표시 장치(190)로 보내져서 표시된다.
(제5 실시 형태)
도 6은 제5 실시 형태에 따른 통신 장치의 일례로서의 디지털 카메라(300)의 전체 구성을 도시한다. 본 실시 형태의 디지털 카메라(300)는 도 4에 도시한 제3 실시 형태의 디지털 카메라(300)에 비해, 촬상부(182) 및 표시 장치(190)가 코덱 처리부(140)에 직접 접속되어 있지 않고, 버스(102)에 접속되어 있다. 그 밖의 구성은 도 4와 마찬가지이며, 마찬가지의 구성에는 동일한 부호를 붙인다.
촬상부(182)가 촬상한 화상은 메모리(120)에 보유되며, 적절하게 판독되어, 코덱 처리부(140)에 의해 부호화된다. 부호화된 화상 데이터는 UDP 처리부(174)에 의해 UDP 패킷으로 정형되어, 네트워크 인터페이스부(130)에 의해 인터넷(20)으로 송출된다. 네트워크 인터페이스부(130)가 수신한 UDP 패킷에 포함되는 화상 데이터는 UDP 처리부(174), 시큐러티 처리부(172), 및 코덱 처리부(140)에 의해 처리되어, 버스(102)를 통해 표시 장치(190)로 보내져서 표시된다.
(제6 실시 형태)
도 7은 제6 실시 형태에 따른 통신 장치의 일례로서의 인터넷 전화 장치(100)의 전체 구성을 도시한다. 본 실시 형태의 인터넷 전화 장치(100)는, 도 1에 도시한 제1 실시 형태의 인터넷 전화 장치(100)의 구성 이외에, IP 판별부(186) 및 패킷 수신부(192)를 더 구비하며, 프로토콜 검출부(176) 대신 UDP 판별부(184)를 구비한다. 그 밖의 구성은 도 1와 마찬가지이고, 마찬가지의 구성에는 동일한 부호를 붙인다.
본 실시 형태의 인터넷 전화 장치(100)에서도, 제1 실시 형태와 마찬가지로, 음성 신호를 포함하는 UDP 패킷을 전용 하드웨어로 처리함으로써, 처리 속도를 향상시켜, 리얼타임으로 통화 음성의 송수신을 실현하지만, 본 실시 형태에서는 보다 리얼타임성을 향상시키기 위한 기술을 제안한다.
패킷 수신부(192)는 리얼타임성을 필요로 하는 데이터를 포함하는 패킷을, 리얼타임성을 필요로 하지 않는 패킷에 우선하여 수신 버퍼(193)에 저장하기 위해, 리얼타임성을 필요로 하지 않는 패킷에 대해서는 수신 버퍼(193)의 빈 영역이 소정의 임계값을 하회하면 수신 버퍼(193)로의 저장을 금지하고, 리얼타임성을 필요로 하는 패킷만을 저장 가능하게 한다. 이것에 의해, 리얼타임성을 필요로 하는 패킷의 수신이 지연되거나, 패킷이 파기되어 데이터가 누락될 가능성을 억제할 수 있다.
IP 판별부(186)는 IP 패킷 중, 복잡한 처리를 필요로 하는 특수한 패킷을 판별하여, 그 패킷을 CPU(110)로 보내어 소프트웨어에 의해 처리시키는 한편, 통상의 IP 패킷은 IP 처리부(178)로 보내어 하드웨어에 의해 처리시킨다. 이것에 의해, IP 처리부(178)의 하드웨어 규모의 증대, 복잡화, 소비 전력의 증대를 피하면서, 전용 하드웨어에 의해 통상의 IP 패킷을 고속으로 처리할 수 있다. 각각의 기술의 상세에 대해서는 도면을 참조하면서 후술한다.
도 8은 패킷 수신부(192)의 내부 구성을 도시한다. 제어부(195)는 판독 위치 관리부(196), 기입 위치 관리부(197), 및 버퍼 포화 검출부(198)를 포함한다. 본 실시 형태의 수신 버퍼(193)는 FIFO(First In First Out) 메모리에 의해 구성되어 있으며, 판독 위치 관리부(196)는 수신 버퍼(193)의 리드 어드레스를 보유하는 레지스터이고, 기입 위치 관리부(197)는 수신 버퍼(193)의 라이트 어드레스를 보유하는 레지스터이다. 버퍼 포화 검출부(198)는 판독 위치 관리부(196)에 보유된 리드 어드레스와, 기입 위치 관리부(197)에 보유된 라이트 어드레스의 차를 산출함으로써, 수신 버퍼(193)의 사용 영역의 크기를 검출하여, 수신 버퍼(193)의 빈 영역을 파악한다.
버퍼 포화 검출부(198)는 수신 버퍼(193)로의 기입의 허락 여부를 판정하기 위한 복수의 임계값을 보유하고 있다. 임계값은 패킷의 종별에 따라 설정되어 있으며, 수신 버퍼(193)의 빈 영역이 어떤 패킷 종별에 대한 임계값을 하회하면, 그 종별의 패킷의 수신 버퍼(193)로의 기입을 금지하고, 수신한 패킷을 파기한다.
본 실시 형태에서는, 리얼타임 처리를 필요로 하는 데이터를 포함하는 패킷을 우선적으로 수신 버퍼(193)에 저장하기 위해, 리얼타임 처리를 필요로 하는 패킷에 대한 허락 여부 판정의 임계값을 리얼타임 처리를 필요로 하지 않는 패킷에 대한 허락 여부 판정의 임계값보다도 낮게 설정한다. 예를 들면, 리얼타임 처리를 필요로 하는 패킷에 대한 임계값을 0으로 하며, 리얼타임 처리를 필요로 하지 않는 패킷에 대한 임계값을 버퍼 사이즈의 50%로 하였을 때, 버퍼 포화 검출부(198)는 수신 버퍼(193)의 빈 영역이 50%를 하회하면, 리얼타임 처리를 필요로 하지 않는 패킷에 대해서는 버퍼가 포화하였다고 판정하여 기입을 금지하는 한편, 리얼타임 처리를 필요로 하는 패킷에 대해서는 빈 영역이 있다고 판정하여 기입을 허가한다. 즉, 수신 버퍼(193)의 빈 영역이 50% 이상일 때에는, 리얼타임 처리를 필요로 하는 패킷이나 리얼타임 처리를 필요로 하지 않는 패킷 모두 수신 버퍼(193)에 저장 가능하게 하지만, 빈 영역이 50%를 하회하면, 리얼타임 처리를 필요로 하는 패킷만의 저장을 허가한다.
본 실시 형태에서는 리얼타임성을 필요로 하는 음성 신호는 UDP을 이용하여 송수신된다. 그 때문에, 패킷 판별부(194)는 수신한 패킷이 TCP 패킷인지 UDP 패킷인지를 판별하여, TCP 패킷이면, 리얼타임 처리를 필요로 하지 않는 패킷에 대한 허락 여부 판정을 채용하고, UDP 패킷이면, 리얼타임 처리를 필요로 하는 패킷에 대한 허락 여부 판정을 채용한다. 패킷 판별부(194)는 저장을 허가된 패킷을 수신 버퍼(193)에 저장하고, 저장을 거부한 패킷을 파기한다.
TCP에서는, FTP(File Transfer Protocol)에 의해 데이터 파일을 전송하는 경우 등, 일시에 대량의 패킷을 수신할 가능성이 있지만, 이 때, 수신 버퍼(193)가 TCP 패킷에서 포화되어, UDP 패킷을 수신할 수 없게 될 우려가 있다. 음성 신호를 포함하는 UDP 패킷은 리얼타임으로 재생할 필요가 있기 때문에, UDP 패킷이 우선적으로 수신 버퍼(193)를 이용할 수 있도록 함으로써, 패킷의 파기에 의한 데이터의 누락을 최소한으로 억제한다. UDP는 재송 제어를 행하지 않기 때문에, 일단 패킷이 파기되면 다시 취득할 수 없지만, TCP는 재송 제어를 행하기 때문에, 누락된 데이터를 재송에 의해 보충하는 것이 가능하다.
수신 버퍼(193)를 2개 설치하여, 한쪽에 리얼타임성을 필요로 하는 패킷을 저장하고, 다른쪽에 리얼타임성을 필요로 하지 않는 패킷을 저장하도록 구성해도 되지만, 상술한 기술을 이용함으로써, 1개의 수신 버퍼(193)로 리얼타임 처리를 필요로 하는 패킷을 우선적으로 수신할 수 있으므로, 2개의 수신 버퍼(193)를 설치하는 경우에 비해, 하드웨어 규모를 억제하여 소비 전력을 저감할 수 있다.
리얼타임 처리를 필요로 하는 데이터를 포함하는지 여부를 나타내는 정보를 패킷의 헤더 정보에 저장해두고, 그 정보를 참조하여 패킷의 종별을 취득하여, 수신 버퍼(193)로의 저장의 허락 여부를 판정해도 된다. 리얼타임성의 유무뿐만 아니라, 다른 관점에 기초하여 임계값을 설정하여, 수신 버퍼(193)로의 저장의 우선도를 결정해도 된다. 예를 들면, 중요도가 높아서, 데이터의 누락이 허용되지 않는 패킷의 임계값을 다른 패킷의 임계값보다도 낮게 설정하여, 우선적으로 저장하도록 해도 된다. 패킷 판별부(194)가 임계값을 보유하고, 버퍼 포화 검출부(198)로부터 수신 버퍼(193)의 잔량을 취득하여, 수신 버퍼(193)로의 기입의 허락 여부를 판정해도 된다.
도 9는 본 실시 형태에서의 패킷의 수신 수순을 나타내는 흐름도이다. 네트워크 인터페이스부(130)가 패킷을 수신하면(S200), 패킷 판별부(194)가 리얼타임 처리를 필요로 하는 데이터를 포함하는 패킷인지 여부를 판별한다(S202). 리얼타임성의 패킷인 경우에는(S202의 '예'), 리얼타임성의 패킷에 대하여 설정된 임계값을 이용하여 수신 버퍼(193)로의 저장의 허락 여부가 판정된다(S204). 리얼타임성의 패킷이 아닌 경우에는(S202의 '아니오'), 비리얼타임성의 패킷에 대하여 설정된 임계값을 이용하여 수신 버퍼(193)로의 저장의 허락 여부가 판정된다(S206). 그리고, 수신한 패킷의 수신 버퍼(193)로의 저장이 허가된 경우에는(S208의 '예'), 패 킷을 수신 버퍼(193)에 저장하고(S210), 저장이 허가되지 않은 경우에는(S208의 '아니오'), 패킷은 파기된다(S212).
도 10은 IP 판별부(186)의 내부 구성을 도시한다. 제1 판별부의 일례로서의 IP 판별부(186)는 IP 헤더 검출부(187), IP 헤더 판정부(188), 및 패킷 출력 전환부(189)를 포함한다. IP 헤더 검출부(187)는 패킷 수신부(192)로부터 취득한 패킷의 IP 헤더를 검출하여, IP 헤더 판정부(188)로 보낸다. IP 헤더 판정부(188)는 IP 헤더 등을 참조하여, 그 패킷이 통상의 IP 패킷인지, 복잡한 처리를 필요로 하는 특수한 IP 패킷인지를 판정하여, 판정 결과를 패킷 출력 전환부(189)로 통지한다. 특수한 IP 패킷은, 예를 들면 옵션을 추가한 IP 패킷, 프래그먼트화된 IP 패킷 등이어도 된다. 패킷 출력 전환부(189)는 IP 헤더 판정부(188)의 판정 결과에 기초하여, IP 헤더 검출부(187)가 취득한 IP 패킷의 출력 목적지를 전환한다. 패킷 출력 전환부(189)는 통상의 IP 패킷을 하드웨어에 의해 처리시키기 위해 제1 전용 회로의 일례로서의 IP 처리부(178)로 출력하고, 복잡한 처리를 필요로 하는 특수한 IP 패킷을 소프트웨어에 의해 처리시키기 위해 버스 인터페이스를 통해 범용 회로의 일례로서의 CPU(110)로 출력한다.
프래그먼트화된 IP 패킷은 패킷의 순서의 관리나, 누락이나 중복이 있었을 때의 처리 등, 통상의 lP 처리보다도 복잡한 처리가 필요해진다. 또한, 옵션을 추가한 IP 패킷은 첨부된 옵션에 따른 처리가 필요해진다. 이러한 예외적인 처리도 하드웨어에 의해 실현하고자 하면, 회로 규모가 증대되어, 비용이나 소비 전력의 증대를 초래한다. 그 때문에, 통상의 IP 패킷만을 처리 가능한 하드웨어만을 설치 함으로써, 비용이나 소비 전력을 억제한다.
IP 처리부(178)에 의해 처리된 패킷은, 제2 판별부의 일례로서의 UDP 판별부(184)로 보내진다. UDP 판별부(184)는 수신한 패킷이 TCP 패킷인지 UDP 패킷인지를 판별하여, UDP 패킷은 제2 전용 회로의 일례로서의 UDP 처리부(174)에 의해 하드웨어 처리하는 한편, TCP 패킷은 범용 회로의 일례로서의 CPU(110)에 의해 소프트웨어 처리한다. 여기서, UDP 판별부(184)는 제1 실시 형태에서의 프로토콜 검출부(176)와 마찬가지의 기능을 갖지만, 본 실시 형태에서는 통신 프로토콜 중 트랜스포트층의 통신 방식의 종별을 판별하는 것을 명시하기 위해, 이 명칭을 이용하고 있다.
이와 같이, 본 실시 형태의 인터넷 전화 장치(100)에서는, IP 판별부(186)에 의해 IP 패킷의 종별을 검출하여, 패킷의 처리 주체를 고속으로 또한 적절하게 선택할 수 있다. 또한, 통화 음성 등의 리얼타임 처리를 필요로 하는 데이터를 포함하는 통상의 IP 패킷은 전용 회로인 IP 처리부(178)에 의해 고속으로 처리를 행하면서, 복잡한 처리를 필요로 하는 특수한 IP 패킷은 CPU(110)에 의해 소프트웨어 처리를 행함으로써, 회로의 복잡화, 회로 규모, 비용, 소비 전력, 열 발생 등의 증대를 억제할 수 있다.
도 11은 본 실시 형태에서의 패킷 처리 수순을 나타내는 흐름도이다. 네트워크 인터페이스부(130)가 패킷을 수신하면(S300), IP 판별부(186)가 통상의 IP 패킷인지 여부를 판별한다(S302). 통상의 IP 패킷인 경우에는(S302의 '예'), 전용 회로인 IP 처리부(178)에 의해 IP의 패킷 처리가 행해진다(S304). 프래그먼트화된 IP 패킷 등, 복잡한 처리를 필요로 하는 특수한 IP 패킷인 경우에는(S302의 '아니오'), 범용 회로인 CPU(110)로 보내져서 소프트웨어에 의해 패킷 처리가 행해진다(S310). UDP 판별부(184)는 IP 처리부(178)에 의해 처리된 패킷이 UDP 패킷인지의 여부를 판별한다(S306). UDP 패킷인 경우에는(S306의 '예'), 전용 회로인 UDP 처리부(174)에 의해 UDP의 패킷 처리가 행해진다. TCP 패킷인 경우에는(S306의 '아니오'), 범용 회로인 CPU(110)로 보내져서 소프트웨어에 의해 패킷 처리가 행해진다(S310).
본 실시 형태에 의해서도, 복수의 통신 프로토콜에 의한 데이터 통신을 효율적으로 처리할 수 있다. 또한, 비교적 간편한 회로 구성에 의해, 고속의 리얼타임 통신을 실현할 수 있다.
(제7 실시 형태)
도 12는 본 발명의 제7 실시 형태에 따른 통신 장치의 일례로서의 인터넷 전화 장치(100)의 전체 구성을 도시한다. 인터넷 전화 장치(100)는 인터넷(20)을 통해, 다른 인터넷 전화 장치(100) 사이에서 통화를 행하기 위한 장치이다. 인터넷 전화 장치(100)는 주로, 소프트웨어 처리를 실행하기 위한 범용 회로인 CPU(110), 프로그램 에리어 또는 워크 에리어로서 이용되는 메모리(120), 인터넷(20)을 통해 패킷을 송수신하는 네트워크 인터페이스부(130), 음성 신호를 입력하는 마이크(150), 음성 신호를 출력하는 스피커(160), 음성 신호의 압축 부호화 처리 및 복호 처리를 행하는 코덱 처리부(140), 통신 데이터의 암호화 처리 또는 복호 처리 등을 행하는 시큐러티 처리부(172), UDP 패킷을 처리하기 위한 전용 회로인 UDP 처 리부(174), 통신 프로토콜에 따른 각종 처리를 행하는 프로토콜 엔진(50), 및 이들 구성을 전기적으로 접속하는 버스(102)를 구비한다.
본 실시 형태의 인터넷 전화 장치(100)는, 수신한 패킷의 처리를 CPU(110)에만 맡기지 않고, CPU(110)로 패킷을 전송하기 전에, 전용 하드웨어에 의해 구성된 프로토콜 엔진(50)이 헤더 해석, 에러 체크, 데이터의 얼라이먼트 등의 처리를 행하기 때문에, CPU(110)가 쓸모없는 패킷 처리를 행할 필요가 없어서, 처리 부하가 대폭 경감된다.
본 실시 형태의 인터넷 전화 장치(100)에서는, UDP를 이용하여 음성 신호를 송수신한다. UDP는 접속의 확립을 필요로 하지 않아, 패킷을 잇달아 송출하는 것이 가능한 통신 방식이기 때문에, 프로토콜 처리가 간단하며, 또한 고속 통신이 가능하여, 통화 음성을 전송하는 등의 리얼타임 통신에 적합하다. 본 실시 형태의 인터넷 전화 장치(100)에서는, UDP 패킷의 처리를 전용 회로인 UDP 처리부(174)에 실행시킴으로써, 처리 속도를 보다 더 향상시켜, 리얼타임으로 통화 음성의 송수신을 실현한다.
인터넷 전화 장치(100)가 송수신하는 패킷 중, TCP에 의해 송수신되는 패킷은 CPU(110)를 이용하여 소프트웨어에 의해 처리된다. 리얼타임성을 필요로 하지 않는 TCP 패킷에 대해서는 전용 회로를 설치하지 않고, 범용 회로에 의한 소프트웨어 처리를 행함으로써, 회로 규모의 증대를 억제하여, 비용, 소비 전력, 열 발생의 증대를 최소한으로 억제할 수 있다. 본 발명자의 시산에 따르면, TCP과 UDP의 양쪽을 전용 회로에 의해 처리하는 경우에 비해, 회로의 면적 및 소비 전력이 약 1/3 로 가능함을 알 수 있다. 이와 같이, 본 실시 형태에서는, 전용 하드웨어와 범용 소프트웨어에 의해 협조 처리함으로써, 처리의 고속화와 회로 규모의 삭감이라는 이율 배반적인 요망에 부응할 수 있다.
네트워크 인터페이스부(130)가 수신한 패킷은 프로토콜 엔진(50)으로 보내진다. 프로토콜 엔진(50)은 패킷이 자장치에 할당된 IP 어드레스로 보내진 것인지 여부를 판단하여, 자장치에서의 패킷만을 통과시키고, 그 밖의 패킷을 파기한다. 또한, 패킷에 첨부된 헤더 정보를 참조하여 프로토콜의 종별을 검출하여, 패킷이 TCP에 의해 보내진 패킷인 경우에는 그 패킷의 데이터를 버스(102) 상으로 보내며, CPU(110)에 의해 소프트웨어 처리시킨다. 패킷이 UDP의 패킷인 경우에는, 그 패킷의 데이터를 UDP 처리부(174)로 보내어, UDP 패킷의 처리를 위해 전용으로 설치된 회로에 의해 처리시킨다.
UDP 처리부(174)는 UDP 패킷을 처리하기 위한 전용 회로이며, UDP 패킷을 수취하고, 그 헤더를 해석하여 필요한 처리를 실행한다. 시큐러티 처리부(172)는 데이터에 대하여 암호화 처리 등의 시큐러티 대책이 실시되어 있었던 경우에, 암호를 복호하는 등의 처리를 행한다. 복호된 데이터는 코덱 처리부(140)로 보내진다. 코덱 처리부(140)는 압축 부호화되어 있는 통화 음성 신호를 복호하여, 스피커(160)로 출력한다.
이와 같이, 본 실시 형태의 인터넷 전화 장치(100)에서는, 정확성보다도 리얼타임성이 중시되어, 통화 중 항상 처리가 필요해지는 통화 음성 데이터는, UDP에 의해 송수신을 행하여, 전용 회로인 UDP 처리부(174)에 의해 하드웨어 처리를 행하 는 한편, 리얼타임성보다도 정확성이 중시되는 데이터는 TCP에 의해 송수신을 행하여, CPU(110)에 의해 소프트웨어 처리를 행한다. 이것에 의해, 회로의 복잡화, 회로 규모, 비용, 소비 전력, 열 발생 등의 증대를 억제하면서, 통화 음성 데이터를 고속으로 처리하는 것이 가능해진다. 이러한 이점은 복수의 상대와 동시에 통화하거나, 통화 음성과 함께 화상을 송신하는 등, 대량의 데이터를 동시에 처리하는 것이 필요한 경우에, 보다 현저해진다. 또한, 프로토콜 엔진(50)에 의해 패킷의 종별을 검출하여, 패킷의 처리 주체를 고속으로 또한 적절하게 선택할 수 있다. 또한, CPU(110)의 처리 부담을 경감하여, 저비용화, 저소비 전력화를 실현할 수 있는 것 이외에, CPU(110)에 여력이 생기기 때문에, 통화 중에 다른 어플리케이션을 실행하는 것이 가능해져서, 새로운 서비스를 제공할 수도 있다.
이상, 패킷을 수신하였을 때의 동작에 대하여 설명하였지만, 계속해서, 마이크(150)로부터 입력된 음성 신호를 패킷화하여 송신할 때의 동작에 대하여 설명한다. 마이크(150)로부터 입력된 음성 신호는 코덱 처리부(140)로 보내져서 부호화된다. 부호화된 신호는 필요하면, 시큐러티 처리부(172)에 의해 암호화된 후, UDP 처리부(174)로 보내져서, UDP 헤더가 첨부되어 패킷화된다. 이 UDP 패킷은 프로토콜 엔진(50)에 의해 체크썸값 등의 헤더 정보가 첨부되어, 네트워크 인터페이스부(130)를 통해 인터넷(20)으로 송출된다.
도 13은 프로토콜 엔진(50)의 내부 구성을 도시한다. ARP 제어부(202)는 네트워크 인터페이스부(130)가 자장치의 IP 어드레스로 보낸 ARP(Address Resolution Protocol) 패킷을 수신하였을 때에, 자동적으로 자장치의 데이터 링크층의 어드레 스(MAC 어드레스) 정보를 세트하여 응답 패킷을 생성하고, ARP 패킷의 송신원으로 송신한다. 종래에는, ARP 패킷도 CPU(110)에 의해 소프트웨어 처리 하였지만, 본 실시 형태에서는 ARP 제어부(202)가 CPU(110)를 통하지 않고 자동 응답함으로써, CPU(110)의 부담을 대폭 경감함과 함께, 인터럽트에 의한 태스크 스위치를 감소시킬 수 있다.
헤더 해석부(210)는 패킷의 헤더 정보를 해석하여, 불필요한 패킷을 파기하고, 필요한 패킷만을 통과시키는 처리를 행한다. 예를 들면, 자장치의 IP 어드레스를 목적지로 한 패킷만을 통과시키고, 그 밖의 IP 어드레스 목적지에서의 패킷은 파기한다. IP 패킷만을 송수신하는 장치에 본 실시 형태의 프로토콜 엔진(50)을 탑재하는 경우, IP 이외의 통신 방식의 패킷을 파기해도 된다. 또한, 특정한 패킷을 검출하여, 그 패킷을 처리하는 전용 회로로 보내도 된다. 본 실시 형태에서는 UDP 패킷을 전용 회로인 UDP 처리부(174)에 의해 처리하기 때문에, 헤더 해석부(210)는 헤더 정보를 해석함으로써 UDP 패킷을 검출하면, 그 UDP 패킷을 CPU(110)를 통하지 않고 직접 UDP 처리부(174)에 전송한다. 이 때, 헤더 정보를 파기하여 데이터 부분만을 보내도 된다. 이것에 의해, 소프트웨어 처리가 필요한 패킷만을 CPU(110)에 의해 처리시킬 수 있기 때문에, CPU(110)의 처리 부담을 경감할 수 있다. 또한, 적절하게 전용 하드웨어에 의해 패킷을 처리함으로써, 처리의 고속화를 도모할 수 있다.
체크썸 산출부(212)는 패킷의 체크썸을 산출하여, 헤더에 저장된 체크썸값과 일치하는지 여부를 검증한다. 일치한 경우에는 그 패킷을 통과시키고, 일치하지 않는 경우에는 그 패킷을 파기한다. 종래에는, CPU(110)가 체크썸의 검증을 행하고 있었지만, 본 실시 형태와 같이, CPU(110)로 보내기 전의 단계에서 전용 회로에 의한 체크썸의 검증을 행함으로써, CPU(110)에 의해 불필요한 패킷을 처리시키는 것을 방지하여, CPU(110)의 처리 부담을 경감할 수 있다.
기입 제어부(220)는 헤더 해석부(210)를 통과한 패킷을 수신 버퍼(230)에 저장한다. 체크썸 산출부(212)에 의해 에러가 검출된 패킷은 수신 버퍼(230)에 저장하지 않고 파기하지만, 체크썸 산출부(212)가 체크썸을 산출하고 있는 동안, 수신 버퍼(230)로의 기입을 대기하고 있는 것보다도, 병행하여 수신 버퍼(230)로 기입해나가는 편이 효율적이다. 그 때문에, 기입 제어부(220)는 헤더 해석부(210)를 통과한 패킷을 체크썸 산출부(212)에 의한 검증의 결과를 대기하지 않고 수신 버퍼(230)에 기입해가며, 체크썸 산출부(212)에 의한 검증으로 에러가 검출된 경우에는 기입한 패킷을 소거하고, 라이트 포인터를 원래로 복귀시킨7다. 판독 제어부(240)는 수신 버퍼(230)에 저장된 수신 패킷의 판독을 제어한다. 기입 제어부(220), 수신 버퍼(230), 및 판독 제어부(240)의 구성 및 동작의 상세에 대해서는 도 15에서 상술한다.
체크썸 생성부(280)는 송신 패킷의 체크썸을 산출한다. UDP 패킷은 송신큐에 투입하는 시점에 패킷 사이즈가 확정되어 있기 때문에, 체크썸 생성부(280)에 의해 미리 데이터부의 체크썸을 산출하여 보유해두고, 패킷 송출 시에 헤더 합성부(250)에 의해 헤더에 체크썸값을 세트한다. TCP 패킷은 패킷 송출 시에 패킷 사이즈가 확정되기 때문에, 미리 데이터부의 체크썸값을 산출해둘 수 없지만, 소정의 구간마다 체크썸 누적값을 산출하여 보유해둠으로써, 패킷 송출 시의 체크썸 산출 처리를 간략화할 수 있다. TCP 패킷의 패킷 사이즈를 체크썸 누적값의 산출 구간의 정수배로 한정하면, 데이터부의 체크썸값은 데이터부의 구간 전후의 체크썸 누적값을 감산하는 것만으로 얻을 수 있다.
제1 송신 버퍼(270)는 송신 패킷 중, 송신 목적지의 MAC 어드레스가 미해결된 것을 저장한다. 제2 송신 버퍼(272)는 송신 패킷 중, 송신 목적지의 MAC 어드레스를 알 수 있는 것을 저장한다. ARP 인터페이스(260)는 제1 송신 버퍼(270)에 저장된, 송신 목적지의 MAC 어드레스가 불명확한 패킷에 대하여, 그 MAC 어드레스를 해결하기 위해, ARP 패킷을 생성하여 네트워크로 브로드캐스트한다. ARP 패킷의 응답이 되돌아오기까지는 그 패킷을 송출할 수 없기 때문에, 어드레스 해결이 불필요한 패킷의 큐와는 별도로 제1 송신 버퍼(270)를 설치하여 대기시켜 두고, 그 동안에는 제2 송신 버퍼(272)에 의해 대기 중의 어드레스 해결이 불필요한 송신 패킷을 송출한다. ARP의 응답이 되돌아오면, 해결된 MAC 어드레스를 세트하여 제1 송신 버퍼(270)의 패킷을 송출하고, 다음에 대기 중인 패킷에 대하여 ARP 패킷을 송출한다. 그리고, 응답이 되돌아갈 때까지는, 다시 제2 송신 버퍼(272)의 패킷을 송출한다. 이것에 의해, 전체의 송신 대기 시간을 감소시켜, 효율적으로 패킷을 송출할 수 있다. 또한, 송신 목적지의 MAC 어드레스가 미해결의 패킷이라도, 제1 송신 버퍼(270)에 투입해두면 자동적으로 MAC 어드레스를 해결하면서 패킷을 송출하기 때문에, CPU(110)측의 처리가 단순해져서, 처리 부하를 경감할 수 있다.
헤더 합성부(250)는 제1 송신 버퍼(270) 또는 제2 송신 버퍼(272)에 보유된 송신 대기 중의 송신 패킷을 네트워크 인터페이스부(130)를 통해 송출하기 위한, 그 패킷의 헤더 정보를 생성한다. 헤더 합성부(250)는 빈번하게 변경되지 않는 파라미터나 용이하게 추측 가능한 파라미터를 자동적으로 생성하여 헤더 정보를 생성한다. 예를 들면, IP 헤더의 식별자는 CPU(110)가 지정하지 않아도 헤더 합성부(250)가 자동적으로 인크리먼트하여 헤더에 세트한다. CPU(110)는 데이터 이외에는 송신 목적지와 패킷 사이즈만을 지정하면 된다. 이것에 의해, CPU(110)의 버퍼 관리를 단순화하여, 처리 부하를 경감할 수 있다.
호스트 테이블(204)은 다른 장치의 MAC 어드레스 및 IP 어드레스를 대응시켜 보유한다. 도 14는 호스트 테이블(204)의 내부 데이터의 예를 나타낸다. 호스트 테이블(204)에는 호스트 ID란(205), MAC 어드레스란(206), 및 IP 어드레스란(207)이 구비되어 있다. 호스트 테이블(204)의 내용은 CPU(110)가 미리 빈번하게 통신을 행할 가능성이 있는 호스트 장치의 정보를 등록해도 되며, 통신 중에 CPU(110) 등이 등록해도 된다. MAC 어드레스가 불명확한 호스트 장치이어도, 먼저 IP 어드레스만을 저장해두고, ARP 인터페이스(260)에 의해 ARP 패킷을 송출하며, 그 응답을 취득하였을 때 MAC 어드레스를 등록해도 된다. 호스트 테이블(204)을 구비하고 있음으로써, CPU(110)는 패킷의 송신 목적지를 지정할 때에, 호스트 ID, MAC 어드레스, IP 어드레스 중 어느 것을 이용하여 지정해도 된다. 헤더 합성부(250)는 호스트 테이블(204)을 참조하여, 헤더 생성에 필요한 정보를 취득할 수 있다.
호스트 인터페이스부(290)는 프로토콜 엔진(50)의 구성 요소와 CPU(110) 사이에서 데이터나 지시의 입출력을 제어한다.
도 15는 기입 제어부(220) 및 판독 제어부(240)의 내부 구성을 도시한다. 기입 제어부(220)는 관리 정보 생성부(222), 데이터 교체부(224), 기입 어드레스 생성부(226), 지연 회로(228), 및 셀렉터(229)를 구비한다. 헤더 해석부(210)에 의한 패킷 필터링을 통과한 패킷은 관리 정보 생성부(222) 및 데이터 교체부(224)에 의해 정형되어 수신 버퍼(230)에 저장된다. 패킷의 데이터가 정형되는 형태는 도 16을 참조하면서 후술하기로 한다. 기입 어드레스 생성부(226)는 수신 버퍼(230)의 라이트 포인터를 관리한다. 상술한 바와 같이, 체크썸 산출부(212)에 의한 체크썸의 검증에 병행하여 수신 버퍼(230)에 패킷의 데이터를 저장해가지만, 체크썸 에러가 검출되었을 때는 기입 어드레스 생성부(226)는 라이트 포인터를 원래의 위치로 복귀시킨다. 체크썸 에러가 검출되지 않고, 수신 버퍼(230)로의 저장이 정상적으로 종료하면, 기입 어드레스 생성부(226)는 관리 정보 생성부(222)에 다음 패킷의 어드레스를 통지한다. 판독 제어부(240)는 판독 어드레스 생성부(242) 및 셀렉터(244)를 구비한다.
도 16은 기입 제어부(220)에 의해 패킷의 데이터가 정형되는 형태를 나타낸다. 통상의 IP 패킷은 선두의 MAC 헤더가 14 바이트를 차지하고 있지만, 32 비트 워드에서는 3.5 워드로 불완전해지기 때문에, 이후의 데이터가 16 비트씩 어긋난 형태로 된다. 이대로 수신 버퍼(230)에 저장하면, 액세스할 때에 불편하므로, 본 실시 형태에서는 MAC 헤더가 3 워드로 되도록 데이터를 정형하고 나서 수신 버퍼(230)에 저장한다. 즉, MAC 헤더를 16 비트분만큼 줄이면 된다. MAC 헤더 중, 수신처 MAC 어드레스는 자장치의 MAC 어드레스와 동일하며, 이미 패킷을 수신하고 있기 때문에 불필요하다. MAC 어드레스는 48 비트이기 때문에, 이것을 파기하면, 32 비트분 여유가 남는다. 어플리케이션에 따라서는, 이 패킷이 유니캐스트, 멀티캐스트, 브로드캐스트 중 어느 것에 의해 송신된 것인지 등의 정보가 필요한 경우가 있기 때문에, 이것을 플래그로 하여 수신처 MAC 어드레스 대신에 저장한다. 이 플래그는 2 비트로 충분하므로, 아직 30 비트분 여유가 있다. 따라서, 패킷 종별을 나타내는 플래그나, 다음 패킷의 저장 위치를 나타내는 어드레스 정보 등을 관리 정보로서 저장한다. 이상에 의해, MAC 헤더가 3 워드를 차지하기 때문에, 이후의 데이터를 워드 단위로 정렬시킬 수 있어서, 액세스가 용이해진다.
도 15에 되돌아가서, 수신한 패킷을 기입하는 수순과 판독하는 수순에 대하여 설명한다. 관리 정보 생성부(222)는 상술한 관리 정보를 생성한다. 관리 정보로서, 예를 들면, 이 패킷이 유니캐스트, 멀티캐스트, 브로드캐스트 중 어느 것에 의해 송신된 것인지를 나타내는 송신 종별 정보, 이 패킷이 TCP 패킷인지 UDP 패킷인지, 프래그먼트화된 IP 패킷 또는 옵션을 추가한 IP 패킷 등 복잡한 처리를 필요로 하는 특수한 IP 패킷인지의 여부 등을 나타내는 패킷 종별 정보, 다음 패킷의 저장 위치를 나타내는 어드레스 정보 등을 생성해도 된다. 다음 패킷의 어드레스 정보를 저장할 경우에는, 자(自)패킷의 데이터의 저장이 종료하고 나서, 기입 어드레스 생성부(226)로부터 다음 패킷의 어드레스 정보를 취득하기 때문에, 관리 정보의 수신 버퍼(230)로의 기입은 패킷의 데이터의 저장이 완료된 후가 된다. 이들 관리 정보는 전체로 1 워드로 되도록 정형되어, 셀렉터(229)를 통해 수신 버퍼(230)에 저장된다.
데이터 교체부(224)는 수신한 패킷의 데이터 중, MAC 어드레스를 제외한 데이터를 32 비트 워드로 정렬시키기 위해, 상위 16 비트와 하위 16 비트를 교체한다. 데이터 교체부(224)의 출력 중, 상위 16 비트를 지연 회로(228)에 의해 1 클럭 지연시켜 합성함으로써, 16 비트씩 어긋나 있었던 데이터를 정렬시킬 수 있다. 정형된 데이터는 셀렉터(229)를 통해 수신 버퍼(230)에 저장된다.
기입 어드레스 생성부(226)는 먼저, 기입 위치의 선두에 포인터를 이동하지만, 1 워드째의 관리 정보는 마지막으로 저장되기 때문에, 포인터를 인크리먼트하여, MAC 헤더 중 수신처 MAC 어드레스를 제외한 2 워드, IP 헤더 5 워드, IP 데이터를 포인터를 인크리먼트하면서 잇달아 기입해간다. 데이터 부분의 기입이 종료되면, 다음 기입 개시 위치를 관리 정보 생성부(222)로 통지하여, 기입 위치의 선두에 포인터를 복귀시키고, 관리 정보를 기입한다.
관리 정보를 포함하는 헤더 정보는 각각 독립한 레지스터를 할당하여, CPU(110)가 랜덤하게 몇번이라도 액세스할 수 있도록 한다. 수신 버퍼(230)에 저장된 패킷은 이미 헤더 해석부(210) 및 체크썸 산출부(212)에 의해 유효성이 검증된 것이기 때문에, CPU(110)가 직접 헤더 정보에 액세스하여 데이터를 전달하기 위한 어플리케이션을 판단할 수 있도록 한다. 한편, 데이터 부분은 1개의 액세스 포트 레지스터로부터 판독하도록 한다. 즉, 액세스 포트 레지스터로의 최초의 판독에서는, 데이터 부분의 최초의 데이터가 판독되며, 이후 동일한 레지스터를 연속하여 액세스함으로써, 데이터가 잇달아 판독된다. 데이터의 전송 목적지가 결정되면, 다음은 데이터를 복사하기만 하면 되기 때문에, 랜덤 액세스를 가능하게 할 필 요는 없다. 따라서, 액세스 포트 방식을 채용함으로써, 포인터 관리가 필요한 메모리 맵 방식보다도 간편하고 처리 부담을 경감할 수 있다. 또한, CPU(110)를 갖지 않는 하드웨어와 조합하여 이용할 수도 있다.
수신 버퍼의 판독 어드레스는 상위 어드레스와 하위 어드레스로 구성된다. CPU(110)는 수신 버퍼(230)에 저장된 패킷의 헤더 정보에 액세스할 때에는 상위 어드레스와 하위 어드레스 둘 다를 지정한다. 상위 어드레스에 대해서는 어떤 패킷의 어떤 헤더에 액세스하고자 하는지를 판독 어드레스 생성부(242)에 지정하면, 판독 어드레스 생성부(242)가 자동적으로 상위 어드레스를 생성하여 포인터를 이동한다. 하위 어드레스에 대해서는 CPU(110)가 출력하는 하위 어드레스를 그대로 수신 버퍼의 하위 어드레스로 하여, CPU(110)가 자유롭게 판독할 수 있도록 한다. CPU(110)는 패킷의 데이터 부분에 액세스할 때에는, 판독 어드레스 생성부(242)에, 어떤 패킷의 데이터에 액세스하고자 하는지를 지정하면 된다. 판독 어드레스 생성부(242)는 자동적으로 상위 어드레스와 하위 어드레스를 생성하여 포인터를 이동하여, 데이터를 잇달아 판독한다.
실시 형태에서는 전화 장치를 예로 들어 설명하였지만, 본 실시 형태의 기술은 컴퓨터나 휴대 전화 등, 스트림 데이터를 송수신하는 통신 장치 전반에 이용 가능하다.
프로토콜 엔진(50)의 기능을 갖는 회로를 하나의 반도체 기판 위에 탑재해도 된다. 또한, 시큐러티 처리부(172), 코덱 처리부(140), CPU(110) 등의 회로를 탑재해도 된다. 이것에 의해, 통신 장치의 소형화, 경량화, 고속화를 도모할 수 있 다.
본 실시 형태에 따르면, 데이터 통신에 수반하는 패킷 처리를 효율적으로 행하는 기술을 제공할 수 있다. 또한, 본 실시 형태에 따르면, 패킷 처리에서의 CPU의 처리 부하를 경감하여, 고속의 리얼타임 통신을 실현하는 기술을 제공할 수 있다.
(제8 실시 형태)
도 17은 본 발명의 제8 실시 형태에 따른 통신 장치의 일례로서의 인터넷 전화 장치(100)의 전체 구성을 도시한다. 인터넷 전화 장치(100)는 인터넷(20)을 통해, 다른 인터넷 전화 장치(100)와의 사이에서 통화를 행하기 위한 장치이다. 인터넷 전화 장치(100)는 주로, 소프트웨어 처리를 실행하기 위한 범용 회로인 CPU(110), 프로그램 에리어 또는 워크 에리어로서 이용되는 메모리(120), 인터넷(20)을 통해 패킷을 송수신하는 네트워크 인터페이스부(130), 음성 신호를 입력하는 마이크(150), 음성 신호를 출력하는 스피커(160), 음성 신호의 압축 부호화 처리 및 복호 처리를 행하는 코덱 처리부(140), IP에 의한 통신을 위한 각종 처리를 행하는 IP 처리부(178), TCP 또는 UDP에 의한 통신을 위한 각종 처리를 행하는 TCP/UDP 처리부(400), 및 이들 구성을 전기적으로 접속하는 버스(102)를 구비한다.
본 실시 형태의 인터넷 전화 장치(100)에서는, 음성 신호 등의 데이터를 TCP/IP에 의해 송신하기 위해 TCP 패킷을 생성하는 것에 대응하여, 송신하는 데이터가 입력되었을 때에, 미리 소정 길이마다 체크썸의 누적값을 산출하여 보유해둔다. 그리고, TCP 패킷의 사이즈가 확정되었을 때에, 그 누적값을 이용하여, 그 패 킷의 체크썸을 산출한다. 이것에 의해, 종래의, 송신 사이즈가 확정된 후 데이터를 판독하여 체크썸을 산출하는 방식에 비교하여, 체크썸의 산출에 필요로 하는 시간을 대폭으로 단축할 수 있다. 이 점에 대해서는 도 18 이후의 설명 부분에서 상세하게 설명한다.
먼저, 인터넷 전화 장치(100)가 패킷을 수신하였을 때의 동작의 개요에 대하여 설명한다. 네트워크 인터페이스부(130)가 수신한 패킷은 IP 처리부(178)로 보내진다. IP 처리부(178)는 패킷이 자장치에 할당된 IP 어드레스를 목적지로 한 것인지 여부를 판단하여, 자장치를 목적지로 하는 패킷만을 TCP/UDP 처리부(400)로 보낸다. TCP/UDP 처리부(400)는 헤더 정보 등으로부터 패킷이 TCP 패킷인지 UDP 패킷인지를 판단하여, 각각의 패킷에 대하여 필요한 처리를 실행한다. 수신한 패킷이 음성 신호인 경우, 그 데이터는 코덱 처리부(140)로 보내진다. 코덱 처리부(140)는 압축 부호화되어 있는 통화 음성 신호를 복호하여, 스피커(160)로 출력한다.
계속해서, 인터넷 전화 장치(100)가 음성 신호를 포함하는 데이터를 송신할 때의 동작의 개요에 대하여 설명한다. 마이크(150)로부터 입력된 음성 신호는 코덱 처리부(140)로 보내져서 부호화된다. 부호화된 신호는 필요하면, 시큐러티 처리부(도시 생략)에 의해 암호화된 후, TCP/UDP 처리부(400)로 보내져서 패킷화된다. 생성된 TCP 또는 UDP 패킷은 네트워크 인터페이스부(130)를 통해, 인터넷(20)으로 송출된다.
IP 처리부(178), TCP/UDP 처리부(400), 및 코덱 처리부(140)의 기능은 하드 웨어적으로는 CPU(110)나 메모리(120) 등의 구성에 의해 실현할 수 있으며, 소프트웨어적으로는 프로토콜 처리 기능 또는 코덱 처리 기능이 있는 프로그램 등에 따라 실현할 수 있지만, 본 도면에서는 이들의 제휴에 의해 실현되는 기능 블록을 그리고 있다. 따라서, 이들 기능 블록은 하드웨어, 소프트웨어의 조합에 의해 여러가지 형태로 실현할 수 있다. 이들 구성을 전용 회로에 의해 실현해도 된다. 본 도면에서는, IP 처리부(178), TCP/UDP 처리부(400), 및 코덱 처리부(140)는 각각 버스(102)에 접속되어 있지만, 이들을 전용 회로에 의해 실현할 경우, 각각의 회로를 전용 버스에 의해 접속해도 된다.
도 18은 도 17의 TCP/UDP 처리부(400)의 내부 구성 중, 본 실시 형태에서 특징적인 패킷 생성 기능을 실현하기 위한 구성을 도시한다. TCP/UDP 처리부(400)는 CPU(110) 등에 의해 준비된 송신 데이터를 입력받는 데이터 입력부(410), 송신 데이터의 체크썸의 누적값을 산출하는 체크썸 산출부(420), 송신 데이터를 보유하는 데이터 저장부(430), 송신 데이터의 소정 길이의 구간마다 체크썸의 누적값을 보유하는 체크썸 저장부(432), 데이터 저장부(430)에 남아있는 미송신된 데이터의 사이즈를 저장하는 데이터 사이즈 저장부(434), TCP 패킷의 송신 사이즈를 제어하는 송신 사이즈 제어부(440), TCP 및 UDP 패킷의 헤더 정보를 생성하는 제2 산출부의 일례로서의 헤더 생성부(450), 및 TCP 및 UDP 패킷을 출력하는 패킷 출력부(460)를 포함한다.
먼저, TCP 패킷이 생성되는 수순에 대하여 설명한다. CPU(110) 등으로부터 데이터 입력부(410)를 통해 입력된 송신 데이터는 데이터 저장부(430)에 저장됨과 함께, 체크썸 산출부(420)로 보내진다. 체크썸 산출부(420)는 입력된 데이터의 선두로부터의 체크썸의 누적값을 산출하여, 소정 길이마다, 산출된 누적값을 출력하여 체크썸 저장부(432)에 보유해둔다. 체크썸은 16 비트(1 워드)마다 일괄한 데이터를 순차 가산함으로써 산출되지만, 여기서, 가산이란 1의 보수 가산을 가리키며, 가산 결과가 16 비트에 들어가지 않고 자릿수를 넘어간 경우에는 가산 결과에 1을 가한다.
도 19는 데이터 저장부(430) 및 체크썸 저장부(432)의 내부 데이터의 예를 나타낸다. 본 도면에서는, 288 워드의 송신 데이터가 데이터 저장부(430)에 저장되어 있다. 체크썸 저장부(432)에는 64 워드마다 체크썸의 누적값이 저장되어 있다. 예를 들면, 송신 데이터의 선두로부터 64 워드째까지의 체크썸 누적값은 16진수로 3210이고, 선두로부터 128 워드째까지의 체크썸 누적값은 16진수로 5332이다.
도 18로 되돌아가 TCP 패킷의 생성 수순의 설명을 계속한다. 송신 사이즈 제어부(440)는 수신측의 버퍼의 상황이나, 패킷 소실 등의 네트워크의 상황을 고려하여, 다음에 송신해야 할 TCP 패킷의 사이즈를 결정한다. 이 때, TCP 패킷의 사이즈는 체크썸 누적값을 기록한 구간의 단위 길이의 정수배로 제한된다. 즉, 본 실시 형태에서는, TCP 패킷의 사이즈는 64 워드의 정수배로 제한된다. 이 이유에 대해서는 후에 상술한다.
헤더 생성부(450)는 송신 사이즈 제어부(440)로부터, 다음에 송신하기 위한 TCP 패킷의 사이즈를 취득하면, 그 사이즈를 기초로 송신하여야 할 데이터의 구간을 결정하고, 그 구간 직전의 구간의 최후의 체크썸 누적값과, 그 구간의 최후의 체크썸 누적값을 체크썸 저장부(432)로부터 판독한다. 그리고, 이들 차를 산출하여, 해당 구간의 체크썸값을 얻는다. 1의 보수 연산에서는 음수를 절대값의 비트 반전으로 표현하고, a-b=a+^b(단, ^b는 b의 비트 반전을 나타냄)로서 감산을 행한다. 헤더 생성부(450)는 이 체크썸값을 헤더 정보에 저장하고, 그 밖의 헤더 정보와 함께 출력한다. 패킷 출력부(460)는 헤더 생성부(450)로부터 취득한 헤더 정보를 출력한 후, 데이터 저장부(430)로부터 송신 사이즈만큼의 데이터를 판독하여 출력한다.
도 19의 예에서, 예를 들면, 최초로 송신하는 TCP 패킷의 사이즈가 64 워드이었다고 하면, 그 패킷의 체크썸값은 3210h이다. 계속해서, 144 워드의 데이터 길이의 패킷을 송신 가능하였다고 한다. 이 때, 송신 사이즈 제어부(440)는 체크썸 누적값을 기록한 구간의 단위 길이의 정수배이며, 또한 송신 가능한 패킷의 사이즈를 초과하지 않는 사이즈를 다음에 송신할 TCP 패킷의 사이즈로 한다. 여기서는 144를 초과하지 않는 최대의 64의 배수, 즉 128 워드로 된다. 다음에 송신해야 할 데이터(430b 및 430c)의 체크썸값은 그 구간의 최후의 체크썸 누적값인 7654h로부터, 그 구간 직전의 구간(430a)의 최후의 체크썸 누적값인 3210h를 감한 값, 즉 4444h로 된다.
데이터를 송신하면, 데이터 사이즈 저장부(434)에 보유되어 있는 미송신 데이터 사이즈의 값으로부터, 송신한 데이터의 사이즈를 감한다. 송신 사이즈 제어부(440)가 결정한 TCP 패킷의 데이터 사이즈가 미송신 데이터의 사이즈보다도 큰 경우에는, 데이터 사이즈 저장부(434)에 보유된 데이터 사이즈가 헤더 생성부(450) 로 출력된다. 이 때, 헤더 생성부(450)는 데이터 전체의 체크썸 누적값으로부터, 직전에 송신한 데이터 구간의 최후의 체크썸 누적값을 감하여, 송신 패킷의 체크썸값을 얻는다.
이와 같이, 미리 소정 길이마다 체크썸 누적값을 산출하여 보유해두고, 그 누적값을 이용하여 패킷의 체크썸을 산출하기 때문에, 체크썸의 산출에 필요로 하는 시간을 대폭으로 단축할 수 있어서, 패킷 사이즈가 확정하고 나서 패킷을 송출하기까지의 지연 시간을 삭감할 수 있다. 이것은 통화 음성 등 리얼타임성이 요구되는 데이터를 송수신할 때에 특히 유효하다.
체크썸 누적값을 기록하는 단위 구간의 사이즈는 송신측 및 수신측의 장치의 성능이나, 네트워크의 성능 등을 고려하여 설계하면 된다. 네트워크 상의 통신이 어느 정도의 불확실성을 수반하는 것은 불가피하며, 또한 필요 이상으로 작은 사이즈의 패킷으로 통신을 행하는 것은 비효율적이기 때문에, 송신하는 패킷의 사이즈를 예를 들면 64 워드의 정수배로 제한한다고 하여도 지장은 없다. 64 워드마다 체크썸 누적값을 저장할 경우, 체크썸 저장부(432)의 용량은 모든 데이터에 대하여 체크썸 누적값을 보유해두는 경우에 비해, 64분의 1로 가능하다. 또한, 패킷의 체크썸을 산출하기 위해 메모리로부터 판독하는 데이터는 패킷 데이터 전후의 체크썸 누적값에 대응하는 2 워드로 가능하기 때문에, 데이터 저장부(430)와 체크썸 저장부(432)를 물리적으로 분할된 2 종류의 메모리에 의해 실현할 필요없이, 1개로 통합하여도 된다. 즉, 메모리에 대한 제약이 작다.
상술한 방법은 소프트웨어에 의해서도 실현할 수 있지만, 보다 고속화를 도 모하기 위해 TCP 및 UDP을 위한 처리를 전용 하드웨어에 의해 실현하는 경우에, 본 방법을 적용하면, 메모리 액세스의 오버헤드가 개선되어, 보다 유효하게 처리의 고속화에 기여할 수 있다.
다음으로, UDP 패킷을 생성하는 수순에 대하여 설명한다. CPU(110) 등으로부터 데이터 입력부(410)를 통해 입력된 데이터는 데이터 저장부(430)에 저장됨과 함께, 체크썸 산출부(420)로 보내진다. UDP인 경우는 송신하는 패킷의 사이즈가 미리 지정되기 때문에, 소정의 구간마다 체크썸 누적값을 보유해 둘 필요없이, 패킷 전체의 체크썸을 산출하여 체크썸 저장부(432)에 보유한다. 헤더 생성부(450)는 다음에 송신해야 할 UDP 패킷의 체크썸값을 체크썸 저장부(432)로부터 판독하여 헤더 정보에 저장하고, 그 밖의 헤더 정보와 동시로 출력한다. 패킷 출력부(460)는 헤더 생성부(450)로부터 취득한 헤더 정보를 출력한 후, 데이터 저장부(430)로부터 데이터를 판독하여 출력한다.
이와 같이, 본 실시 형태에 따르면, TCP과 UDP의 패킷 생성 처리를 위한 구성을 별도로 설치할 필요없이, 동일한 구성에 의해 쌍방의 패킷을 생성하여 송신할 수 있다.
TCP에 의해 데이터를 송신하는 경우라도, 최초로 송신해야 할 패킷의 사이즈가 데이터 사이즈보다도 큰 경우에는 한번에 모든 데이터를 송신 가능하므로, 감산에 의해 체크썸값을 산출할 필요가 없으며, 데이터 전체의 체크썸값이 패킷의 체크썸값으로 된다.
도 20은 본 실시 형태에서의 체크썸 산출 방법의 수순을 나타내는 흐름도이 다. CPU(110) 등으로부터 데이터 입력부(410)를 통해 송신 데이터가 입력되면(S400), 체크썸 산출부(420)는 입력된 데이터의 선두로부터의 체크썸의 누적값을 산출하여, 소정 길이마다, 산출된 누적값을 출력하여 체크썸 저장부(432)에 보유한다(S402). 헤더 생성부(450)는 송신 사이즈 제어부(440)로부터, 다음에 송신해야 할 TCP 패킷의 사이즈를 취득하면(S404), 그 사이즈를 기초로 송신해야 할 데이터의 구간을 결정하고, 그 구간 직전의 데이터까지의 체크썸 누적값과, 그 구간의 최후의 데이터까지의 체크썸 누적값을 체크썸 저장부(432)로부터 판독한다(S406). 그리고, 이들 차를 산출하여, 해당 구간의 체크썸값을 얻는다(S408). 패킷 출력부(460)는 헤더 생성부(450)로부터 취득한 체크썸을 포함하는 헤더 정보를 송신하며(S410), 또한 데이터 저장부(430)로부터 송신 사이즈분의 데이터를 판독하여 송신한다(S412). 송신 데이터가 남아있는 경우에는(S414의 '아니오'), S404로 되돌아가 패킷을 생성하여 송신하는 수순을 반복한다. 모든 데이터를 송신하면(S414의 '예'), 처리를 종료한다.
실시 형태에서는, 인터넷 전화 장치를 예로 들어 설명하였지만, 본 실시 형태의 기술은 컴퓨터, 휴대 전화, 디지털 카메라, 비디오 장치 등, 데이터를 송수신하는 통신 장치 전반에 이용 가능하다. 또한, 일련의 데이터 열에 대하여, 선두로부터의 체크썸 누적값을 복수 부분에 저장하는 기술은 통신에 한하지 않고, 데이터를 기록하는 장치 전반에 이용 가능하다.
TCP/UDP 처리부(400)를 실현하기 위한 회로 및 메모리를 하나의 반도체 기판 위에 탑재해도 된다. 또한, IP 처리부(178), 코덱 처리부(140), CPU(110), 시큐러티 처리부 등의 회로를 탑재하여도 된다. 이것에 의해, 통신 장치의 소형화, 경량화, 고속화를 도모할 수 있다.
본 실시 형태에 따르면, 데이터의 체크썸의 산출에 필요로 하는 시간을 단축하는 기술을 제공할 수 있다. 또한, 고속의 체크썸 산출에 필요로 하는 하드웨어의 규모를 줄이는 기술을 제공할 수 있다.
이상, 본 발명을 실시 형태를 기초로 설명하였다. 이 실시 형태는 예시일 뿐이므로, 이들 각 구성 요소나 각 처리 프로세스의 조합에 여러가지의 변형이 가능하며, 또한 그러한 변형예도 본 발명의 범위 내에 있다는 것은 당업자에게는 이해 가능하다.
상술한 설명에서는, 주로 전화 장치를 예로 들어 설명하였지만, 실시 형태에서 설명한 기술은 컴퓨터나 휴대 전화 등, 스트림 데이터를 송수신하는 통신 장치 전반에 이용 가능하다.
이상과 같이, 본 발명은 통신 장치, 전화 장치, 패킷 처리 장치 등에 이용 가능하다.

Claims (17)

  1. 네트워크를 통해 수신한 패킷이 리얼타임 처리를 필요로 하는 데이터를 포함하는 패킷인지의 여부를 판별하는 판별부와,
    상기 패킷을 일시적으로 보유하는 버퍼와,
    상기 버퍼로의 상기 패킷의 저장을 제어하는 제어부를 구비하며,
    상기 제어부는 상기 버퍼의 빈 영역이 소정의 임계값을 하회하였을 때, 상기 리얼타임 처리를 필요로 하는 데이터를 포함하는 패킷의 상기 버퍼로의 저장을 허가하는 한편, 리얼타임 처리를 필요로 하는 데이터를 포함하지 않는 패킷의 상기 버퍼로의 저장을 금지하는 것을 특징으로 하는 통신 장치.
  2. 네트워크를 통해 수신한 패킷이, 데이터의 송수신에 앞서 장치 사이에서 접속을 확립하는 것을 필요로 하는 제1 통신 방식에 의해 보내진 패킷인지, 장치 사이에서의 접속의 확립을 필요로 하지 않는 제2 통신 방식에 의해 보내진 패킷인지를 판별하는 판별부와,
    상기 패킷을 일시적으로 보유하는 버퍼와,
    상기 버퍼에의 상기 패킷의 저장을 제어하는 제어부를 구비하며,
    상기 제어부는, 상기 버퍼의 빈 영역이 소정의 임계값을 하회하였을 때, 상기 제2 통신 방식에 의해 보내진 패킷의 상기 버퍼로의 저장을 허가하는 한편, 상기 제1 통신 방식에 의해 보내진 패킷의 상기 버퍼로의 저장을 금지하는 것을 특징 으로 하는 통신 장치.
  3. 네트워크를 통해 수신한 패킷의 종별을 판별하는 판별부와,
    상기 패킷을 일시적으로 보유하는 버퍼와,
    상기 버퍼로의 패킷의 저장을 제어하는 제어부를 구비하며,
    상기 제어부는, 상기 버퍼로의 패킷의 저장의 허락 여부를 판정하기 위한 임계값을 패킷의 종별에 따라 복수 보유하여, 상기 버퍼의 빈 영역이 임계값을 하회한 패킷 종별의 패킷의 상기 버퍼로의 저장을 금지하는 것을 특징으로 하는 통신 장치.
  4. 제3항에 있어서,
    리얼타임 처리를 필요로 하는 패킷의 종별의 임계값을, 리얼타임 처리를 필요로 하지 않는 패킷의 종별의 임계값보다도 낮게 설정한 것을 특징으로 하는 통신 장치.
  5. 패킷을 수신하였을 때, 그 패킷의 종별을 검출하는 단계와,
    상기 종별마다 설정된 조건에 기초하여, 패킷을 일시적으로 보유하는 버퍼로의 그 패킷의 저장의 허락 여부를 판단하는 단계와,
    저장이 허가되었을 때에 그 패킷을 상기 버퍼로 저장하는 단계와,
    저장이 허가되지 않았을 때 그 패킷을 파기하는 단계
    를 포함하는 것을 특징으로 하는 통신 방법.
  6. 네트워크를 통해 취득한 패킷을 일시적으로 보유하는 버퍼와,
    상기 패킷의 상기 버퍼로의 저장을 제어하는 기입 제어부를 구비하며,
    상기 기입 제어부는, 상기 패킷의 헤더 정보 중, 송신 목적지 어드레스 정보를 파기하여 상기 수신 버퍼에 저장하는 것을 특징으로 하는 패킷 처리 장치.
  7. 제6항에 있어서,
    상기 기입 제어부는, 상기 송신 목적지 어드레스 정보 대신, 그 패킷이 유니캐스트, 멀티캐스트, 브로드캐스트 중 어느 것에 의해 송신되었는지를 나타내는 송신 종별 정보를 포함하는 관리 정보를 저장하는 것을 특징으로 하는 패킷 처리 장치.
  8. 제7항에 있어서,
    상기 관리 정보는, 패킷의 종별을 나타내는 패킷 종별 정보, 및 다음 패킷의 저장 위치를 나타내는 어드레스 정보를 더 포함하는 것을 특징으로 하는 패킷 처리 장치.
  9. 제7항 또는 제8항에 있어서,
    상기 기입 제어부는 상기 관리 정보를 1 워드 내로 하고, 후속 데이터를 워 드 단위로 정형하여 상기 버퍼에 저장하는 것을 특징으로 하는 패킷 처리 장치.
  10. 네트워크를 통해 취득한 패킷을 일시적으로 보유하는 버퍼와,
    상기 패킷의 상기 버퍼로부터의 판독을 제어하는 판독 제어부를 구비하며,
    상기 패킷의 헤더 부분에는, 각각 독립한 레지스터를 할당하여 랜덤 액세스를 가능하게 하는 한편, 상기 패킷의 데이터 부분은 액세스 포트 레지스터를 통해 판독을 행하도록 구성한 것을 특징으로 하는 패킷 처리 장치.
  11. 제10항에 있어서,
    상기 판독 제어부는 판독하는 패킷의 종별에 따라, 상기 액세스 포트 레지스터가 판독을 개시하는 위치를 설정하는 것을 특징으로 하는 패킷 처리 장치.
  12. 제10항 또는 제11항에 있어서,
    상기 패킷을 상기 버퍼에 저장하기 전에, 그 헤더 정보를 해석함으로써 불필요한 패킷을 파기하는 헤더 해석부와,
    상기 패킷을 상기 버퍼에 저장하기 전에 그 체크썸을 산출하여, 헤더에 저장된 체크썸값과 일치하는지 여부를 검증하는 체크썸 산출부를 더 구비하는 것을 특징으로 하는 패킷 처리 장치.
  13. 음성을 입력하는 입력부와,
    상기 입력부에 의해 입력된 음성을 다른 장치로 송신하고, 다른 장치로부터 음성을 수신하는 통신부와,
    다른 장치로부터 수신한 음성을 출력하는 출력부를 구비하며,
    상기 통신부는,
    네트워크를 통해 보내진 패킷을 수신하는 수신부와,
    수신한 패킷을 처리하는 패킷 처리부를 포함하고,
    상기 패킷 처리부는,
    상기 패킷을 일시적으로 보유하는 버퍼와,
    상기 패킷의 상기 버퍼로의 저장을 제어하는 기입 제어부를 가지며,
    상기 기입 제어부는, 상기 패킷의 헤더 정보 중, 송신 목적지 어드레스 정보를 파기하고 상기 수신 버퍼에 저장하는 것을 특징으로 하는 전화 장치.
  14. 음성을 입력하는 입력부와,
    상기 입력부에 의해 입력된 음성을 다른 장치로 송신하고, 다른 장치로부터 음성을 수신하는 통신부와,
    다른 장치로부터 수신한 음성을 출력하는 출력부를 구비하며,
    상기 통신부는,
    네트워크를 통해 보내진 패킷을 수신하는 수신부와,
    수신한 패킷을 처리하는 패킷 처리부를 포함하고,
    상기 패킷 처리부는,
    상기 패킷을 일시적으로 보유하는 버퍼와,
    상기 패킷의 상기 버퍼로부터의 판독을 제어하는 판독 제어부를 가지며,
    상기 패킷의 헤더 부분에는 각각 독립한 레지스터를 할당하여 랜덤 액세스를 가능하게 하는 한편, 상기 패킷의 데이터 부분은 액세스 포트 레지스터를 통해 판독을 행하도록 구성한 것을 특징으로 하는 전화 장치.
  15. 삭제
  16. 삭제
  17. 삭제
KR1020077006527A 2002-09-30 2003-09-24 통신 장치, 통신 방법, 패킷 처리 장치 및 전화 장치 KR100790673B1 (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
JP2002287870 2002-09-30
JPJP-P-2002-00287870 2002-09-30
JP2002315085A JP3524914B1 (ja) 2002-10-29 2002-10-29 チェックサム算出方法、チェックサム記録方法、およびその方法を利用可能な通信装置
JPJP-P-2002-00315085 2002-10-29
JP2003005101A JP3557202B2 (ja) 2002-09-30 2003-01-10 通信装置、通信方法、およびその方法を利用可能な電話装置、ビデオ電話装置、撮像装置
JPJP-P-2003-00005100 2003-01-10
JPJP-P-2003-00005101 2003-01-10
JP2003005100A JP3557201B2 (ja) 2003-01-10 2003-01-10 パケット処理装置、パケット処理方法、およびその方法を利用可能な電話装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020047014902A Division KR100753734B1 (ko) 2002-09-30 2003-09-24 통신 장치 및 그 응용

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020077018565A Division KR100899923B1 (ko) 2002-09-30 2003-09-24 통신 장치

Publications (2)

Publication Number Publication Date
KR20070045338A KR20070045338A (ko) 2007-05-02
KR100790673B1 true KR100790673B1 (ko) 2008-01-02

Family

ID=32110946

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020077006527A KR100790673B1 (ko) 2002-09-30 2003-09-24 통신 장치, 통신 방법, 패킷 처리 장치 및 전화 장치
KR1020077018565A KR100899923B1 (ko) 2002-09-30 2003-09-24 통신 장치
KR1020047014902A KR100753734B1 (ko) 2002-09-30 2003-09-24 통신 장치 및 그 응용

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020077018565A KR100899923B1 (ko) 2002-09-30 2003-09-24 통신 장치
KR1020047014902A KR100753734B1 (ko) 2002-09-30 2003-09-24 통신 장치 및 그 응용

Country Status (4)

Country Link
KR (3) KR100790673B1 (ko)
CN (1) CN1656767B (ko)
AU (1) AU2003266582A1 (ko)
WO (1) WO2004036865A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103401805A (zh) * 2007-03-29 2013-11-20 威盛电子股份有限公司 网络装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001339462A (ja) * 2000-05-29 2001-12-07 Toshiba Corp 通信プロトコル処理方法および通信プロトコル処理装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU769419B2 (en) * 1999-08-04 2004-01-29 Telefonaktiebolaget Lm Ericsson (Publ) An IP based telephone system
FR2797543B1 (fr) * 1999-08-12 2004-04-09 Cit Alcatel Procede pour faire communiquer un utilisateur avec au moins une base de donnees

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001339462A (ja) * 2000-05-29 2001-12-07 Toshiba Corp 通信プロトコル処理方法および通信プロトコル処理装置

Also Published As

Publication number Publication date
KR20070045338A (ko) 2007-05-02
AU2003266582A1 (en) 2004-05-04
KR20070091232A (ko) 2007-09-07
CN1656767A (zh) 2005-08-17
KR100753734B1 (ko) 2007-08-31
CN1656767B (zh) 2010-05-05
KR20040091769A (ko) 2004-10-28
WO2004036865A1 (ja) 2004-04-29
KR100899923B1 (ko) 2009-05-28

Similar Documents

Publication Publication Date Title
US7843968B2 (en) Communication apparatus and applications thereof
US20080019440A1 (en) Apparatus and method for transmitting and receiving moving pictures using near field communication
US8018931B2 (en) Communication apparatus and integrated circuit for communication
KR100790673B1 (ko) 통신 장치, 통신 방법, 패킷 처리 장치 및 전화 장치
JP3524914B1 (ja) チェックサム算出方法、チェックサム記録方法、およびその方法を利用可能な通信装置
JP3796251B2 (ja) 通信装置
JP3557202B2 (ja) 通信装置、通信方法、およびその方法を利用可能な電話装置、ビデオ電話装置、撮像装置
KR20140070896A (ko) 비디오 스트리밍 방법 및 그 전자 장치
JP4737243B2 (ja) 集積回路装置及びデータ伝送システム
JP3557201B2 (ja) パケット処理装置、パケット処理方法、およびその方法を利用可能な電話装置
KR100919216B1 (ko) 데이터 송신 방법, 수신 방법 및 그 장치
JP4514487B2 (ja) パケット処理装置
JP2004236351A (ja) 通信方法、通信装置
KR100502270B1 (ko) 패킷 통신장치
JP2004173332A (ja) 通信装置
JP4470585B2 (ja) ネットワークインターフェースおよびパケット送受信装置
JP2005269134A (ja) 構内交換機
JP2005167458A (ja) 音声画像伝送方法
JP4408743B2 (ja) 通信装置及び受信バッファの制御方法
JP2005123985A (ja) 通信装置及び通信方法
JP2007195240A (ja) パケット処理装置、通信装置
JP4201719B2 (ja) 通信装置
US20050002393A1 (en) Method and device for creating data packets in a packet-based data-transmission network
KR100916469B1 (ko) 미디어 장치 및 그 제어방법
JP2008311942A (ja) データ送信装置及びデータ送信方法

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121203

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20131202

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20141203

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee