KR20130082070A - 통신 장치 및 통신 방법 - Google Patents

통신 장치 및 통신 방법 Download PDF

Info

Publication number
KR20130082070A
KR20130082070A KR1020127002778A KR20127002778A KR20130082070A KR 20130082070 A KR20130082070 A KR 20130082070A KR 1020127002778 A KR1020127002778 A KR 1020127002778A KR 20127002778 A KR20127002778 A KR 20127002778A KR 20130082070 A KR20130082070 A KR 20130082070A
Authority
KR
South Korea
Prior art keywords
band
packet
communication
adjustment
session
Prior art date
Application number
KR1020127002778A
Other languages
English (en)
Other versions
KR101746629B1 (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 가부시키가이샤 진-매직
Publication of KR20130082070A publication Critical patent/KR20130082070A/ko
Application granted granted Critical
Publication of KR101746629B1 publication Critical patent/KR101746629B1/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/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5691Access to open networks; Ingress point selection, e.g. ISP selection
    • H04L12/5692Selection among different networks
    • 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/22Traffic shaping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2854Wide area networks, e.g. public data networks
    • H04L12/2856Access arrangements, e.g. Internet access
    • H04L12/2869Operational details of access network equipments
    • 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/20Traffic policing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5629Admission control

Landscapes

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

Abstract

송신 단말기(2A) 및 수신 단말기(4B)가 네트워크(10)를 거쳐서 통신을 행할 때에, 통신의 대역을 제어하는 통신 장치(1)에 있어서, 수신 대역 측정부(23)는, 송신 단말기(2A)로부터 수신 단말기(4B) 및 수신 단말기(4B)로부터 송신 단말기(2A)의 2방향의 통신 중, 적어도 1방향의 통신에 대해서 대역을 측정한다. 세션 테이블(13)은, 통신에 필요한 대역을 나타내는 목표 대역을 포함하는 대역 조정에 관계되는 정보를 기억한다. 대역 조정부(24)는, 세션 테이블(13)로부터 대역을 측정한 방향의 목표 대역을 읽어내고, 수신 대역 측정부(23)에 있어서 측정한 대역과 읽어낸 목표 대역의 비교에 기초하여 패킷의 송출 간격을 조정하는 것에 의해, 대역의 억제 또는 촉진을 행한다.

Description

통신 장치 및 통신 방법{COMMUNICATION APPARATUS AND COMMUNICATION METHOD}
본 발명은, 송신 장치와 수신 장치 사이에서 네트워크를 거쳐서 행하여지는 통신에 있어서, 통신 대역을 제어하는 기술에 관한 것이다.
최근의 네트워크 기술의 진전에 의해, 인터넷 등의 네트워크를 전해지는 트래픽은 증가의 일로를 걷고 있다. 인터넷 등에서 사용되는 IP(Internet Protocol)는, 패킷을 상대의 장치에 송신하는 역할을 담당한다. IP에 의해 실현되는 통신은, 「신뢰성이 없는 통신」이다. 즉, IP는, 데이터의 도달이나 도달 순서에 대해서는 보증하지 않고 있다.
TCP(Transmission Control Protocol)는, 「신뢰성이 있는 통신」을 실현하기 위해서 이용된다. 이하에 있어서, 「신뢰성이 있는 통신」이란, 송신 데이터가, 송신한 순서대로 과부족 없이 전송되는 통신을 말하는 것으로 한다.
TCP는, 현재, 트래픽의 큰 부분을 차지하고 있지만, 그 성능은, 불안정하고, 변동이 있는 것이 실정이다. 동화상 등의 영상 배신 서비스 등을 안정하게 공급하기 위해서는, TCP 성능을 안정하게 할 필요가 있다.
TCP 성능에 관계되는 공지의 기술의 1개로서, TCP 대역 제어 기술을 들 수 있다. TCP 대역 제어 기술은, 트래픽을 소정량 이하로 제한하는 것이며, 기본적으로, 트래픽의 종류에 따라서 우선 순위를 붙이고, 우선도가 낮은 트래픽을 파기함으로써 네트워크의 폭주를 회피하는 기술이다.
종래 기술에 따르면, TCP는, 폭주 시에는 플로우 제어에 의해 데이터 송신 속도를 조정하는 기능을 갖는다. 이 기능은, 폭주가 있는 경우에 동작하고, 송신 데이터가 패킷 파기되지 않고 수신측의 단말 장치에 도달해 있는 한, 성능을 향상시키려고 한다. 즉, 통신의 상태에 따라서 성능을 향상시킬 수는 있지만, 성능을 적절한 범위로 낮게 억제하는 등의 제어를 할 수는 없다.
어떤 통신이 필요로 하는 통신 성능에는, 우선, 어플리케이션이나 시스템 관리자에 의해 결정되는 성능 A가 있다. 그리고, 이 성능 A를 목표로 해서 실제의 통신 정황에 의해 동적으로 결정되는 성능 B가 있다. 최근의 트래픽 증가의 경향을 감안하면, 예를 들면 실제의 통신 정황이 양호하고, 성능 B가 성능 A를 상회하는 경우에는, 성능 B를 낮추고, 또한, 성능 B를 올릴 필요가 있는 경우에는, 성능 B를 올리도록 대역을 제어할 필요가 있다.
본 발명은, 대역 조정과 고속화의 밸런스를 고려하여, 필요한 성능이 얻어지도록 대역 조정을 행할 수 있는 기술을 제공하는 것을 목적으로 한다.
상기 과제를 해결하기 위해서, 개시의 통신 장치는, 송신 장치 및 수신 장치가 네트워크를 거쳐서 통신을 행할 때에, 통신의 대역을 제어하는 통신 장치로서, 상기 송신 장치로부터 상기 수신 장치 및 상기 수신 장치로부터 송신 장치의 2방향의 통신 중, 적어도 1방향의 통신에 대해서 대역을 측정하는 측정부와, 통신에 필요한 대역을 나타내는 목표 대역을 포함하는 대역 조정에 관계되는 정보를 기억하는 기억부와, 상기 기억부로부터 상기 대역을 측정한 방향의 목표 대역을 읽어내고, 상기 측정부에 있어서 측정한 대역과 이 읽어낸 목표 대역의 비교에 기초하여 패킷의 송출 간격을 조정하는 것에 의해, 대역의 억제 또는 촉진을 행하는 조정부를 구비하는 구성으로 한다.
개시의 통신 장치에 따르면, 통신이 안정화하고, 패킷의 재송을 효과적으로 억제하는 것이 가능하게 된다.
도 1은 본 실시 형태에 따른 대역 조정 장치를 갖는 통신 시스템을 도시하는 전체도.
도 2는 본 실시 형태에 따른 대역 조정 장치의 구성도.
도 3은 대역 조정 중계부의 구성도.
도 4는 본 실시 형태에 따른 대역 조정 장치의 대역 조정 중계부가 데이터 패킷의 대역을 측정하는 방법을 설명하는 도면.
도 5는 본 실시 형태에 따른 대역 조정 장치의 대역 조정 중계부가 ACK 패킷의 대역을 측정하는 방법을 설명하는 도면.
도 6은 데이터 패킷 송신 방향에 관한 대역 억제 방법을 설명하는 도면.
도 7은 ACK 패킷 송신 방향에 관한 대역 억제 방법을 설명하는 도면.
도 8은 데이터 패킷 송신 방향에 관한 대역의 촉진 방법을 설명하는 도면.
도 9는 ACK 패킷 송신 방향에 관한 대역의 촉진 방법을 설명하는 도면.
도 10은 수신한 패킷의 판별 처리를 도시한 플로우차트.
도 11은 대역 측정 처리를 도시한 플로우차트.
도 12는 대역 조정 처리의 인터럽트 처리를 도시한 플로우차트.
도 13은 대역 조정 처리를 도시한 플로우차트.
도 14는 데이터 패킷을 버퍼링하는 방법을 설명하는 도면.
도 15는 버퍼링한 ACK 패킷을 이용하는 방법을 설명하는 도면.
도 16은 데이터 패킷의 버퍼링 처리를 도시한 플로우차트.
도 17은 ACK 패킷의 버퍼링 처리를 도시한 플로우차트.
도 18은 버퍼 데이터를 파기하는 처리를 설명하는 도면.
도 19는 데이터 패킷의 대리 재송 처리를 도시한 플로우차트.
도 20은 ACK 패킷의 대리 재송 처리를 도시한 플로우차트.
도 21은 데이터 패킷의 자동 대리 재송 방법을 설명하는 도면.
도 22는 데이터 패킷의 자동 대리 재송 처리를 도시한 플로우차트.
도 23은 서비스 통지 정보의 이용에 의해 대역 조정 처리를 분산시키는 방법을 설명하는 도면.
도 24는 서비스 통지 정보의 설정 방법의 일례를 도시하는 도면.
도 25는 서비스 통지 정보의 설정 방법의 다른 예를 도시하는 도면.
도 26은 세션 관리 처리를 도시한 플로우차트.
도 27은 서비스 통지 정보를 이용한 세션 관리 처리를 도시한 플로우차트.
도 28은 서비스 통지 플래그 처리를 도시한 플로우차트.
도 29는 세션 테이블의 구조예를 도시하는 도면.
도 30은 세션 테이블 데이터의 구조예를 도시하는 도면.
이하, 본 발명의 실시 형태에 대해서, 도면을 참조해서 상세하게 설명한다.
〔구성〕
도 1은, 본 실시 형태에 따른 대역 조정 장치를 갖는 통신 시스템을 도시하는 전체도이다. 도 1(a)에 도시하는 통신 시스템은, 2대의 단말 장치(2A) 및 단말 장치(이하 단말기)(4B)가, 서로 네트워크(10)를 거쳐서 접속되고, 예를 들면 TCP 통신을 이용한 영상 배신(동화상 배신) 등의 통신을 행한다. 네트워크(10)의 예로서는, 예를 들면, ADSL(Asymmetric Digital Subscriber Line), FTTx(Fiber To The x) 등의 유선 액세스 네트워크나, HSPA(High Speed Packet Access), WiMAX(Worldwide Interoperability for Microwave Access) 등의 무선 액세스 네트워크를 들 수 있다. 단말기(2A, 4B)는, 예를 들면, 네트워크(10)에 접속된 가정용 혹은 소규모 사무실용 네트워크 기기, 퍼스널 컴퓨터, 휴대 단말기, 네트워크 접속용 어댑터 등으로 이루어진다.
각 단말기(2A, 4B)는, 각각 대역 조정 장치(1A, 1B)를 갖고, 대역 조정 장치(1A, 1B)는, 자기 장치가 송수신하는 패킷의 대역을, 통신에 따른 적절한 값으로 조정한다. 이하의 설명에서는, 데이터의 송신측의 장치에는, 부호에 「A」를, 수신측의 장치에는, 부호에 「B」를 붙이는 것으로 한다.
대역 조정 장치(1A, 1B)는, TCP/IP 패킷을 관측 가능한 위치이면, 어떤 장소이어도 배치가 가능하다. 도 1(a)에서는, 송신 단말기 및 수신 단말기 내에 대역 조정 장치(1A, 1B)를 구비하는 구성을 나타낸다.
도 1(b)은, 본 실시 형태에 따른 대역 조정 장치(1)를 단말기 이외의 장치에 내장한 경우의 시스템 구성도이다. 도 1(b)에 도시하는 예에서는, 대역 조정 장치(1C)는, 중계 장치(3) 내에 조립되고, 단말기(2A)와 단말기(4B) 사이에서 송수신되는 패킷의 대역을, 통신에 따른 적절한 값으로 조정한다.
여기서, 중계 장치(3)란, 부분적 혹은 완전하게 TCP를 인식하고, TCP에 관계되는 기능을 제공하는 네트워크 기기를 말하며, 라우터나 브릿지 등뿐만 아니라, 예를 들면, 프록시 서버, 로드 밸런서, 트래픽 셰이퍼 및 WAN(Wide Area Network) 최적화 장치 등도, 중계 장치에 포함된다.
또한, 도 1(a) 및 도 1(b)에 있어서는, 본 실시 형태에 따른 대역 조정 장치(1)의 설치 위치를 설명하기 위해서, 통신 시스템의 구성을 간략화해서 대역 단말기(2A, 4B) 및 중계 장치(3)만을 나타내고 있다.
이하에 있어서는, 도 1(b)의 구성, 즉, 송신 단말기(2A)와 수신 단말기(4B) 사이의 네트워크(10) 상에 배치되는 중계 장치(3)에 본 실시 형태에 따른 대역 조정 장치(1)가 탑재되어 있는 경우를 예로, 대역 조정 장치(1)가 송신 단말기(2A)-수신 단말기(4B)간의 통신 대역을 조정하는 방법에 대해서, 구체적으로 설명한다.
도 2는, 본 실시 형태에 따른 대역 조정 장치(1)의 구성도이다. 도 2에 도시하는 대역 조정 장치(1)는, 2개의 대역 조정 중계부(11, 12)와, 세션 테이블(13)을 갖고, 대역 조정 중계부(11, 12)는, 각각 「다른 모듈(30, 32)」로부터 패킷을 수취하고, 「다른 모듈(31, 33)」에 패킷을 전달한다.
도 2에 도시하는 「다른 모듈(30~33)」은, 중계 장치(3) 내에 구비되는 네트워크 디바이스 드라이버나 다른 프로토콜 스택이며, 각각이 TCP/IP 패킷을 포함하는 패킷을 처리한다.
대역 조정 장치(1)의 대역 조정 중계부(11, 12)는, 다른 모듈(30~33)과의 사이에서 패킷의 수수를 행한다. 대역 조정 중계부(11, 12)는, 수취한 패킷이 TCP 패킷인 경우에는, 각각 송신 단말기(2A)로부터 수신 단말기(4B) 및 수신 단말기(4B)로부터 송신 단말기(2A)를 향하는 방향의 통신에 관한 대역 조정을 실시한다. 또한, 도 2나 다음에 설명하는 도 3에서는, 각 통신 방향을 「A→B 방향」 및 「B→A 방향」이라고 기재하고 있다.
세션 테이블(13)은, 대역 조정 중계부(11, 12)가 대역 조정이 실시할 때에 필요한 정보를 저장한다. 세션 테이블(13)의 상세에 대해서는, 나중에 도 29 및 도 30을 참조해서 상세하게 설명한다.
송신 단말기(2A)로부터 수신 단말기(4B) 및 수신 단말기(4B)로부터 송신 단말기(2A)를 향하는 양방향의 패킷이 대역 조정 장치(1)를 통과하는 경우에는, 대역 조정 장치(1)는, 양방향의 통신에 대해서 대역 조정을 행한다. 한 방향의 패킷만이 대역 조정 장치(1)를 통과하는 경우에는, 대역 조정 장치(1)는, 대역 조정 중계부(11, 12) 중, 패킷이 통과하고 있는 쪽의 대역 조정 중계부에 있어서 대역 조정을 행하고, 세션 테이블(13)에 필요한 정보를 저장한다. 다른 쪽의 대역 조정 중계부는, 세션 테이블(13)을 참조하여, 대역 조정을 행하는 것도 가능하다.
도 3은, 대역 조정 중계부의 구성도이다. 도 3에 도시하는 대역 조정 중계부(11)는, 패킷 판별부(21), 세션 관리부(22), 수신 대역 측정부(23), 대역 조정부(24) 및 송신 대역 측정부(25)를 갖는다.
또한, 도 3에 있어서는, A→B 방향의 대역 조정 중계부(11)의 구성만을 나타내고 있지만, B→A 방향의 대역 조정 중계부(12)의 구성은, 도 3에 도시하는 대역 조정 중계부(11)의 구성과 마찬가지이며, 대역 조정 중계부(11, 12)는, 세션 테이블(13) 및 버퍼부(14)를 공유한다.
패킷 판별부(21)는, 다른 모듈(30)로부터 수취한 패킷이, 대역 조정의 대상으로 되는 패킷인지의 여부를 판별한다. 구체적으로는, TCP 패킷인지의 여부를 판별한다.
세션 관리부(22)는, 패킷 판별부(21)에 있어서 대역 조정의 대상으로 되는 패킷이라고 판별한 경우에, TCP 세션의 관리를 행한다. 세션 관리부(22)는, TCP 세션의 관리에 필요한 정보를 세션 테이블(13)에 저장하고, 또한, 필요한 정보를 세션 테이블(13)로부터 취출하는 등의 처리를 실행한다.
수신 대역 측정부(23)는, 세션 관리부(22)가 관리 대상으로 하는 패킷의 수신 대역을 측정한다. 수신 대역 측정부(23)는, 측정한 수신 대역을 세션 테이블(13)에 저장함과 함께, 필요한 경우에는, 수신한 패킷을 버퍼부(14)에 저장한다.
대역 조정부(24)는, 세션 테이블(13)에 저장되어 있는 측정 대역 등의 정보에 기초하여, 대역의 조정을 행한다. 구체적으로는, 통신에 필요한 대역을 나타내는 목표 대역과, 실제로 측정한 대역의 대소 관계에 따라서, 패킷의 송출 간격을 길게, 혹은 짧게 해서, 대역 조정을 행한다. 패킷의 송출 간격의 조정 방법에 대해서는, 나중에 도면을 참조해서 상세하게 설명한다.
송신 대역 측정부(25)는, 대역 조정부(24)로부터의 지시에 따라서 다른 모듈(31)에 전송되는 패킷이나, 패킷 판별부(21)로부터 다른 모듈(31)에 전송되는 패킷의 대역을 측정하고, 측정 결과를 세션 테이블(13)에 저장한다.
또한, 통신 시스템 내의 동작의 설명 중의 「송신」「수신」의 표기와 달리, 도 3의 수신 대역 측정부(23), 송신 대역 측정부(25)의 설명에 있어서는, 「수신」 및 「송신」의 표기는, 대역 조정 장치(1)를 주체로 하고 있다. 즉, 수신 대역 측정부(23)는, 대역 조정 장치(1)가 다른 모듈(30)로부터 「수신」한 패킷을 처리하고, 송신 대역 측정부(25)는, 대역 조정 장치(1)가 다른 모듈(31)에 「송신」하는 패킷을 처리하고 있기 때문에, 이와 같이 표기하고 있다.
대역 조정부(24)는, 반대 방향의 대역 조정 중계부(12)의 대역 조정부와의 사이에서, 대역 조정에 관계되는 정보를 송수신한다. 상기와 같이, 한쪽의 대역 조정 중계부에 있어서는 TCP 패킷을 송수신하고 있지 않고, 대역 측정을 행하고 있지 않은 경우에도, 다른 쪽의 대역 조정 중계부가 세션 테이블(13)에 저장한 정보나, 다른 쪽의 대역 조정부로부터 수신한 제어 정보에 기초하여, 대역 조정을 행한다.
도 1~도 3에 도시하는 바와 같이, 대역 조정 장치(1)는, TCP 통신을 감시하여, 대역 조정을 행한다. 예를 들면 Apache HTTP Server, Lighttpd, Squid cache, BitTorrent 등의 일반적인 서버 어플리케이션의 대부분은, TCP 통신마다 송신 대역을 조정하는 기능(Bandwidth Throttling)을 갖고 있다. 그러나, 이러한 공지의 어플리케이션에 의한 대역 조정 기술에서는, 고정밀도에서의 대역 조정을 기대할 수 없다.
즉, 어플리케이션에 의해 대역 조정을 행하였다고 해도, 오퍼레이팅 시스템의 스케줄링에 의존해서 트랜스포트층(TCP 등), 네트워크층(IP 등), 디바이스 드라이버 등에서 버스트 트래픽이 될 가능성이 있다. 또한, 어플리케이션으로 대역 조정을 행하면, TCP층으로부터 네트워크층에 걸친 상황을 정확하게 파악할 수 없고, 어플리케이션은, 어플리케이션이 기대하는 통신 성능과, 실제의 통신 성능의 괴리를 인식할 수 없어, 실제의 통신에 따른 대역 조정을 할 수 없다. 예를 들면, 대역 조정의 대상으로 하는 데이터이어도, 어느 정도의 데이터를 실제로 송신했는지/수신했는지/재송했는지 등의 상황을 실제로 시간적으로 인식할 수 없다. 이 때문에, 어플리케이션은, 어디까지나 「논리적으로 통신이 필요로 하는 통신 성능」이 되도록 대역 조정을 행할 뿐이며, 실체에 의거한 대역 조정은 행할 수 없다.
이것에 대하여, 본 실시 형태에 따른 대역 조정 장치(1)는, 도 1~도 3에 도시하는 바와 같이, 실제의 TCP 통신을 감시하여, 이것에 의거한 대역 조정을 행할 수 있다. 어플리케이션에 의한 대역 조정과 비교해도, 보다 고정밀도의 대역 조정이 가능하다.
〔통신의 방향〕
송신 단말기(2A) 및 수신 단말기(4B)는, 각각 상대의 단말기 앞에 데이터 패킷 및 ACK 패킷을 송신한다. 도 2 및 도 3에 도시하는 구성의 대역 조정 장치(1)는, 대역 조정 중계부(11, 12)는, 각각 A→B 방향 및 B→A 방향의 통신을 감시한다. 이 때문에, 통신 경로 상에 설치되는 대역 조정 장치(1)는, 데이터 패킷 및 ACK 패킷의 양방의 패킷을 전송하는 경우뿐만 아니라, 데이터 패킷 또는 ACK 패킷의 어느 한쪽을 전송하는 경우에도 대역 조정을 행하는 것이 가능하다. 예를 들면, 대역 조정 장치(1)를 구비하는 중계 장치(3)가 A→B 방향의 데이터 패킷만을 중계하고, ACK 패킷에 대해서는 다른 경로를 경유하는 경우에도, 대역 조정 장치(1)의 대역 조정 중계부(11)만이 데이터 패킷을 감시하여, 대역 조정을 행한다.
〔대역 측정〕
본 실시 형태에 따른 대역 조정 장치(1)가 데이터 패킷이나 ACK 패킷을 감시해서 통신 대역을 측정하는 방법에 대해서, 각각 도 4 및 도 5를 참조하여 설명한다.
도 4는, 본 실시 형태에 따른 대역 조정 장치(1)의 대역 조정 중계부(11)가 데이터 패킷의 대역을 측정하는 방법을 설명하는 도면이고, 도 5는, 대역 조정 장치(1)의 대역 조정 중계부(12)가 ACK 패킷의 대역을 측정하는 방법을 설명하는 도면이다. 도 4나 도 5의 상단은 데이터 패킷 DP의 흐름, 하단은 ACK 패킷 AP의 흐름을 나타내고 있고, 이하에 있어서도 마찬가지이다.
도 4 및 도 5에 도시하는 예에서는, 대역 조정 장치(1)는, 중계 장치(3)에 조립되어 있는 경우를 나타내고, 이하의 설명에 있어서도 마찬가지로 한다. 이후에 있어서는, 네트워크 기기로서의 중계 장치(3)를 예로 설명을 하지만, 이것에 한정되는 것은 아니다. 예를 들면, 오퍼레이팅 시스템의 내부에서 TCP/IP를 수수하는 부분에서도, 마찬가지의 기능을 완수할 수 있고, 이하에 설명하는 각종 처리는, 소프트웨어 및 하드웨어로서 내장하는 것이 가능하다.
중계 장치(3)의 대역 조정 장치(1) 내의 수신 대역 측정부(23)는, 송신 단말기(2A)가 수신 단말기(4B)에 대하여 송신하는 데이터 패킷 DP나, 데이터 패킷 DP를 수신한 수신 단말기(4B)가 송신 단말기(2A)에 돌려보내는 ACK 패킷 AP를 감시하여, 통신 대역을 측정한다.
데이터 패킷에 의해 통신 대역을 측정하는 경우에는, 도 4에 도시하는 바와 같이, 데이터 패킷에 포함되는 시퀀스 번호(도 4의 SEQ)와 패킷의 데이터 길이를 관측하여, 데이터 길이의 적산값을 구하는 것에 의해, 통신 시스템 중, 중계 장치(3)의 설치 위치에 있어서의 송신 대역을 측정한다.
ACK 패킷에 의해 통신 대역을 측정하는 경우에는, 도 5에 도시하는 바와 같이, ACK 패킷에 포함되는 ACK 번호(도 5의 ACK)에 기초하여 ACK의 증가분을 계측함으로써, 통신 시스템 중, 중계 장치(3)의 설치 위치에 있어서의 수신 대역을 측정한다.
ACK 패킷은, 데이터 패킷과 비교해서 데이터 길이가 작고, 또한, 데이터 패킷과 같이, 패킷마다 데이터 길이가 크게 상이한 경우가 없다. 이 때문에, ACK 번호만을 관측하고, 소정의 기간 내에 중계 장치(3)가 중계하는 ACK 패킷의 증가분을 적산함으로써, 수신 대역을 측정하고 있다.
〔대역 조정〕
도 4나 도 5에 도시하는 방법으로 측정한 통신 대역을 이용하여, 대역 조정 장치(1)의 대역 조정부(24)는, 중계 장치(3)로부터 패킷(데이터 패킷 DP나 ACK 패킷 AP)을 송출하는 시간 간격을 조정하는 것에 의해, 대역 조정을 행한다. 도 3의 설명에 있어서도 설명한 바와 같이, 대역 조정부(24)는, 측정한 통신 대역에 따라서, 패킷 송출의 시간 간격을 두는(시간 간격을 길게 하는) 처리, 혹은 패킷 송출의 시간 간격을 좁히는(시간 간격을 짧게 하는) 처리 중 어느 쪽을 실행할지를 결정한다.
이하에 있어서는, 패킷 송출의 시간 간격을 길게 하도록 대역 조정을 행하는 것을 「대역의 억제」, 패킷 송출의 시간 간격을 짧게 하도록 대역 조정을 행하는 것을 「대역의 촉진」이라고 정의한다. 우선, 본 실시 형태에 따른 대역 조정 장치(1)에 의한 대역의 억제 방법에 대해서 설명한다.
도 6은, 데이터 패킷 송신 방향에 관한 대역 억제 방법을 설명하는 도면이며, 도 7은, ACK 패킷 송신 방향에 관한 대역 억제 방법을 설명하는 도면이다.
중계 장치(3)의 대역 조정 장치(1) 내의 대역 조정부(24)는, 수신 대역 측정부(23)에 있어서 측정한 통신 대역이 통신에 필요한 대역을 나타내는 목표 대역을 상회하는 경우에는, 통신을 제어하여, 대역을 억제한다. 대역의 억제 방법에는, 데이터 패킷의 송신 간격을 제어하는 방법과, ACK 패킷의 송신 간격을 제어하는 방법이 있다.
예를 들면 데이터 패킷의 송신 간격의 제어에 관해서는, 도 6에 도시하는 바와 같이, 대역 조정 장치(1)의 대역 조정부(24)는, 송신 단말기(2A)가 송신한 데이터 패킷의 대역을 억제하는 제어를 행한다. 구체적으로는, 목표 대역에 대하여, 시퀀스 번호의 단위 시간당의 증가분이 소정의 범위 내로 억제되도록, 데이터 패킷의 전송 간격을 제어한다. 이에 의해, 송신 단말기(2A)가 버스트 트래픽을 시작하는 경우가 있어도, 소정의 대역에서 수신 단말기(4B)에 데이터 패킷을 보낼 수 있다.
한편, ACK 패킷의 송신 간격의 제어에 대해서는, 도 7에 도시하는 바와 같이, 대역 조정부(24)가, 수신 단말기(4B)가 송신한 ACK 패킷의 대역을 억제하는 제어를 행한다. 구체적으로는, 목표 대역에 대하여, ACK 번호의 단위 시간당의 증가분이 소정의 범위 내로 되도록, ACK 패킷의 전송 간격을 제어한다.
일반적으로, 송신 단말기(2A)는, TCP 통신의 처음 동안에는, 윈도우 사이즈 분의 데이터 패킷을 버스트 트래픽으로서 송신하지만, 후속의 데이터 패킷 송신에 대해서는, 송신 단말기(2A)는, ACK 패킷의 수신 대역에 따른 대역에서 수신 단말기(4B) 앞의 데이터 패킷을 송출한다. 이 때문에, 상기한 바와 같이 ACK 패킷의 송출 간격을 제어함으로써, 송신 단말기(2A)는, 수신한 ACK 패킷의 증가분에 따라서 데이터 패킷을 송신하게 되고, 이에 의해, 데이터 패킷 송신 방향에 관한 대역을 조정할 수 있다.
다음으로, 본 실시 형태에 따른 대역 조정 장치(1)에 의한 대역의 촉진 방법에 대해서 설명한다.
도 8은, 데이터 패킷 송신 방향에 관한 대역의 촉진 방법을 설명하는 도면이며, 도 9는, ACK 패킷 송신 방향에 관한 대역의 촉진 방법을 설명하는 도면이다.
중계 장치(3)의 대역 조정 장치(1) 내의 대역 조정부(24)는, 수신 대역 측정부(23)에 있어서 측정한 통신 대역이 상기 목표 대역을 하회하는 경우에는, 대역을 촉진하도록 제어를 행한다. 상기한 대역의 억제 방법과 마찬가지로, 대역의 촉진 방법에는, 데이터 패킷의 송신 간격을 제어하는 방법과, ACK 패킷의 송신 간격을 제어하는 방법이 있다.
데이터 패킷의 송신 간격의 제어에 관해서는, 도 8에 도시하는 바와 같이, 대역 조정 장치(1)의 대역 조정부(24)가, 버퍼부(14)에 송신 단말기(2A)로부터 수신한 데이터 패킷을 버퍼링해 두고, 버퍼링해 둔 데이터 패킷을 적어도 1회 수신 단말기(4B)에 송신한다. 버퍼링해 둔 데이터 패킷의 재송은, 목표 대역에 따라서, 복수회 행하는 경우도 있다.
이하에 있어서는, 대역 조정 장치(1)가 버퍼링해 둔 데이터 패킷을 수신 단말기(4B)에 송신하는 것을, 「데이터 패킷의 대리 재송」이라고 한다. 이하의 설명에 있어서는, 송신 단말기(2A)가 TCP의 재송 기능에 의해 데이터 패킷을 재송하는 것에 대하여, 대역 조정 장치(1)가 데이터 패킷을 재송하는 것을, 이와 같이 나타내는 것으로 한다.
대리 재송된 데이터 패킷을 수신한 수신 단말기(4B)는, 데이터 패킷에 포함되는 시퀀스 번호를 참조하여, 미 수신의 데이터 패킷이라고 인식한 경우에는, 대리 재송된 데이터 패킷에 대한 ACK 패킷을 반송한다. 이와 같이, 대역의 촉진 처리, 즉, 데이터 패킷의 대리 재송에 의해, 중계 장치(3)와 수신 단말기(4B) 사이에서 파기되어 있던 데이터 패킷에 대한 ACK 패킷이 수신 단말기(2A)로부터 반송된다.
또한, A→B 방향의 측정 대역(실제의 데이터 패킷에 관한 송신 대역)이 목표 대역을 하회하는 이유의 1개로서, ACK 패킷이 송신 단말기(2A)에 충분히 도달해 있지 않기 때문에, 송신 단말기(2A)로부터의 데이터 패킷의 송신이 지체되고 있는 것이 생각된다. 상기한 대역의 촉진 처리에 따르면, 송신 단말기(2A)는, 대리 재송된 데이터 패킷에 대한 ACK 패킷을 수신하면, 다음으로 송신해야 할 데이터 패킷을 송신하므로, 송신 단말기(2A)에 의한 데이터 패킷의 송신을 재촉하게 된다.
이와 같이, 측정 대역이 목표 대역을 하회하는 경우에 데이터 패킷의 대리 재송을 행함으로써, 수신 단말기(4B)로부터의 ACK의 반송이나 송신 단말기(2A)의 데이터 패킷의 송신이 재촉되고, 지체되고 있던 통신을 촉진시키는 효과가 얻어진다.
또한, 대리 재송된 데이터 패킷이 수신 단말기(4B)에 있어서 이미 수신 완료된 경우에는, 수신 단말기(4B)는, 대리 재송된 데이터 패킷을 파기하기 때문에, 대리 재송 처리가, TCP 통신에 악영향을 미치는 일은 없다.
또한, 종래의 TCP 개선 방식에 따르면, 송신 단말기에 다음 시퀀스 번호의 데이터 패킷의 송신을 재촉하기 위해서, 중계 장치가 대리 ACK 패킷을 송신함으로써, 송신 대역을 증강하고 있다. 이것은, 「Splitting TCP」나 「TCP Spoofing」로서 공지의 TCP 중계 기술이다. 이들 종래의 TCP 중계 기술에서는, ALG(Application Level Gateway) 방식의 TCP 중계 장치가 스케일러빌리티가 부족한 것, TCP Splicing에서는 복잡한 처리의 실행이 곤란한 것 등의 문제를 해결하고 있다.
그러나, 공지 기술이므로 상세한 설명은 생략하지만, Splitting TCP나 TCP Spoofing에서는, 중계 장치는, 송신 단말기로부터의 TCP 통신을 한번 종료하고, 수신 단말기에 대해서는, 새로운 TCP 통신을 행한다. 이것에 따르면, 만약, 중계 장치가 대리로 송신한 ACK 패킷에 대응하는 데이터 패킷(예를 들면, 「ACK 번호=10」의 ACK 패킷에 대하여 송신 단말기가 송신하는 「시퀀스 번호=10+1=11」의 데이터 패킷)을 수신 단말기가 미 수신이었다라고 하면, 이 대리 ACK 패킷(ACK 번호=10)은 가짜로 된다. 가짜의 대리 ACK 패킷을 수신한 송신 단말기는, 그 이전의 데이터(시퀀스 번호=10까지의 데이터)를 파기하므로, 중계 장치가 정지한 경우나 네트워크로부터 제거된 경우에는, 파기된 데이터를 두 번 다시 회복할 수 없다고 하는 문제가 있다.
이것에 대하여, 본 실시 형태에 따른 대역 조정 장치(1)에 따르면, 데이터 패킷을 대리 재송한 경우에도, 송신 단말기(2A)가 대리 재송된 데이터 패킷을 파기하는 일이 없고, 중계 장치(3)가 네트워크로부터 제거된 경우에도, 데이터가 소실되는 경우가 없다고 하는 이점을 갖는다.
ACK 패킷의 송신 간격의 제어에 관해서는, 도 9에 도시하는 바와 같이, 대역 조정 장치(1)의 대역 조정부(24)가, 버퍼부(14)에 ACK 패킷을 버퍼링해 두고, 목표 대역에 따라서, 버퍼링해 둔 ACK 패킷을 송신 단말기(2A)에 송신한다. 버퍼링해 둔 ACK 패킷의 재송은, 목표 대역에 따라서, 복수회 행하는 경우도 있다.
이하에 있어서는, 대역 조정 장치(1)가 버퍼링해 둔 ACK 패킷을 송신 단말기(2A)에 송신하는 것을, 「ACK 패킷의 대리 재송」이라고 한다. 이하의 설명에 있어서는, 수신 단말기(4B)가 ACK 패킷을 재송하는 것에 대하여, 대역 조정 장치(1)가 ACK 패킷을 재송하는 것을, 이와 같이 나타내는 것으로 한다.
대리 재송된 ACK 패킷을 수신한 송신 단말기(2A)는, ACK 패킷에 대응하는 데이터 패킷을 송신할 가능성이 있다. 이와 같이, 측정 대역이 목표 대역을 하회하는 경우에 ACK 패킷의 대리 재송을 행함으로써, 송신 단말기(2A)에 의한 데이터 패킷의 송신이 재촉되고, 지체되고 있던 통신을 촉진시키는 효과가 얻어진다.
그런데, TCP의 폭주 제어 기술의 1개에, 「Fast Recovery」가 있다. 이 기술에 따르면, 송신 단말기(2A)가 연속해서 3개의 동일한 ACK 패킷을 수신한 경우에는, 송신 단말기(2A)는, 패킷 파기는 일시적인 것이라고 해서, 폭주 윈도우(congestion window) 사이즈를 축소시키지 않고, 데이터 패킷을 재송한다. 상기한 ACK 패킷의 대리 재송 처리에 따르면, 「Fast Recovery」에 의한 데이터 패킷의 재송 기능이 재촉되고, 이에 의해, 송신 단말기(2A)의 대역을 증강하는 효과가 얻어진다.
또한, 대리 재송된 ACK 패킷이 송신 단말기(2A)에 있어서 이미 수신 완료이었다고 해도, 송신 단말기(2A)는, 종래와 마찬가지로 중복해서 수신한 ACK 패킷을 처리하기 때문에, ACK 패킷의 대리 재송이 TCP 통신에 악영향을 미치는 일은 없다.
도 8 및 도 9를 참조하여 설명한 바와 같이, 대역의 촉진에서는, 대역 조정 장치(1)(을 구비하는 중계 장치(3))가, 송신 단말기(2A)나 수신 단말기(4B)의 대리로 패킷을 재송한다. 대역 조정 장치(1)에 의한 대리 재송 쪽이, TCP의 재송 기능에 의한 패킷 재송보다도 빨리 실행되기 때문에, 경로 상에서 패킷 파기가 발생하고, 이에 의해 통신이 지체되고 있는 경우에는, 이러한 대리 재송에 의해, 보다 신속하게 통상적인 통신의 상태로 복귀하는 것이 가능하게 된다.
도 10~도 13을 참조하여, 본 실시 형태에 따른 대역 조정 장치(1)가, 송신 단말기(2A)와 수신 단말기(4B) 사이에서 송수신되는 패킷을 감시하고, 대역의 억제 또는 촉진의 대역 조정을 행하는 방법에 대해서, 플로우차트를 참조하여 설명한다.
도 10은, 도 3의 패킷 판별부(21)에 의해 수신한 패킷의 판별 처리를 도시한 플로우차트이다. 대역 조정 장치(1)는, 다른 모듈(30, 32)로부터 패킷을 수신한 것을 계기로 하여, 도 10에 도시하는 처리를 개시한다.
우선, 스텝 S1에서, 수신한 패킷이 TCP 패킷인지의 여부를 판정하고, TCP 패킷인 경우(스텝 S1에서 "예"인 경우)에는, 스텝 S2에서, 도 3의 세션 관리부(22)에 수신한 패킷을 전달하고, 처리를 종료한다. 스텝 S1의 판정에 있어서, 수신한 패킷이 TCP 패킷이 아니라고 판정한 경우(스텝 S1에서 "아니오"인 경우)에는, 스텝 S3으로 진행하고, 대역 조정 장치(1)에 있어서는 특별히 처리를 행하지 않고, 패킷을 중계하고, 처리를 종료한다.
스텝 S1에 있어서의 패킷의 판별은, 실시예에서는, IP 헤더의 소정의 필드를 참조하는 것에 의해 행하고 있다. 예를 들면, IPv4에 있어서는, 프로토콜(Protocol) 필드의 값을 참조하고, IPv6에 있어서는, 넥스트 헤더(Next Header) 필드의 값을 참조하는 것에 의해, TCP 패킷인지의 여부를 판별한다. IP 헤더의 포맷에 대해서는 공지의 기술이므로, 상세한 설명은 생략한다.
도 10에 도시하는 바와 같이, 실시예에서는, TCP 패킷인지의 여부를 판정하고, TCP 패킷에 대해서는 모두 대역 조정의 대상으로서 처리를 행하고 있지만, 이것에 한정되는 것은 아니다. 예를 들면, 스텝 S1에 있어서, IP 헤더나 TCP 헤더에 포함되는 IP 어드레스나 포트 번호를 참조하여, IP 어드레스나 포트 번호가 소정의 범위에 속하는 경우에는, 스텝 S2로 진행하여, 대역 조정의 대상 패킷으로 하는 등의 변형이 가능하다. 소정의 범위의 IP 어드레스나 포트 번호를 대역 조정의 대상이라고 판단함으로써, 특정한 단말기간의 통신에 대하여 적극적으로 대역 조정을 행하여 가는 것이 가능하게 된다. 본 발명은, 세션을 식별하는 지표로서 사용 가능한 값 및 세션에 있어서의 패킷의 순서를 나타내는 값을 패킷 내에 저장하는 통신 프로토콜에 대하여 일반적으로 적용 가능하다. 이러한 통신 프로토콜로서, 예를 들면 IPsec(Security Architecture for Internet Protocol) ESP(Encapsulating Security Payload), RTP(Real-time Transport Protocol) 등을 들 수 있다.
도 11은, 수신 대역 측정부(23)에 의한 대역 측정 처리를 도시한 플로우차트이다. 도 10의 패킷의 판별 처리에 의해 대역 조정의 대상으로 된 패킷은, 도 3의 세션 관리부(22)에 전달된다. 세션 관리부(22)는, 필요한 정보를 세션 테이블(13)에 등록하면, 패킷을 수신 대역 측정부(23)에 전달한다. 대역 조정 장치(1)의 수신 대역 측정부(23)는, 세션 관리부(22)로부터 패킷을 접수하면, 도 11에 도시하는 처리를 개시한다.
우선, 스텝 S11에서, 패킷이 데이터 패킷인지의 여부를 판정한다. 세션 관리부(22)로부터 수취한 패킷이 데이터 패킷인 경우(스텝 S11에서 "예"인 경우)에는, 스텝 S12로 진행하고, 데이터 패킷의 시퀀스 번호가 과거에 수신한 패킷과 중복되는지의 여부에 관계없이, 단위 시간당 중계한 데이터량을 갱신하고, 스텝 S15로 진행한다. 세션 관리부(22)로부터 수취한 패킷이 ACK 패킷인 경우(스텝 S11에서 "아니오"인 경우)에는, 스텝 S11로부터 스텝 S13으로 진행한다.
스텝 S13에서, 수신 패킷의 ACK 번호가, 최대 ACK 번호인지의 여부를 판정한다. 상세하게는 후술하지만, 최대 ACK 번호란, 대역 조정 장치(1)가 수신한 ACK 패킷에 포함되는 ACK 번호 중, 값이 최대인 것을 말하며, 스텝 S13의 판정은, 세션 테이블(13)에 유지되어 있는 최대 ACK 번호와 수신 패킷의 ACK 번호를 비교함으로써 행한다. 수신한 패킷의 ACK 번호가 최대인 경우(스텝 S13에서 "예"인 경우)에는, 스텝 S14로 진행하고, 단위 시간당의 ACK량을 갱신하면, 스텝 S15로 진행한다. 수신한 패킷의 ACK 번호가 최대가 아닌 경우(스텝 S13에서 "아니오"인 경우)에는, 그 ACK 번호의 ACK 패킷에 대해서는 중계 완료라고 해서, 특별히 처리를 행하지 않고, 스텝 S15로 진행한다.
스텝 S15에서는, 단위 측정 시간이 경과하였는지의 여부를 판정하고, 아직 단위 측정 시간이 경과하고 있지 않은 경우(스텝 S15에서 "아니오"인 경우)에는, 특별히 처리를 행하지 않고, 처리를 종료한다. 단위 측정 시간이란, 데이터 패킷의 데이터량이나 ACK 패킷의 ACK량의 측정을 행하기 위해 미리 정해 둔 시간을 말하며, 세션 테이블(13)에 값이 저장되어 있다. 상세하게는, 도 30을 참조하여 설명한다.
스텝 S15에 있어서, 단위 측정 시간이 경과하였다고 판정한 경우(스텝 S15에서 "예"인 경우)에는, 스텝 S16에서, 단위 시간당의 데이터량·ACK량의 최대값 및 최소값을 갱신한다. 이것과 함께, 각각 스텝 S12 및 스텝 S14에서 갱신한 단위 시간당의 데이터량·ACK량의 값을 클리어하고, 처리를 종료한다.
대역 조정부(24)는, 목표 대역과, 도 11에 도시하는 대역 측정 처리에 의해 구해지는 측정 대역의 비교에 기초하여, 대역 조정 처리를 실행한다. 대역 조정 처리를 실행하는 계기로서는, 예를 들면, 대역 조정 장치(1)가 중계 패킷을 수신하는 타이밍이나, 정기적인 인터럽트 처리의 타이밍을 들 수 있다. 실시예에서는, 정기적인 인터럽트 처리의 타이밍에서 대역 조정을 행하는 것으로 하고, 이 경우의 대역 조정 처리에 대해서, 도 12를 참조하여 설명한다.
도 12는, 대역 조정부(24)에 의한 대역 조정 처리의 인터럽트 처리를 도시한 플로우차트이다. 상기한 바와 같이, 실시예에서는, 대역 조정 장치(1)는, 소정의 시간 간격으로, 정기적으로 도 12에 도시하는 처리를 개시한다.
우선, 스텝 S21에서, 인터럽트 처리를 실행하는 인터럽트 주기의 단위 시간을 경과하였는지의 여부를 판정한다. 아직 인터럽트 처리의 주기를 경과하고 있지 않은 경우(스텝 S21에서 "아니오"인 경우)에는, 특별히 처리를 행하지 않고, 처리를 종료한다.
한편, 인터럽트 처리의 주기를 경과하고 있는 경우(스텝 S21에서 "예"인 경우)에는, 스텝 S22로 진행하여, 대역 조정 처리와, 필요하다고 판단한 경우에는, 목표 대역을 조정하는 처리를 실행한다. 대역 조정 처리 및 목표 대역을 조정하는 처리의 상세에 대해서는 후술한다. 또한, 대역 조정 처리의 실행 시에 필요하는 경우에는, 버퍼부(14)에 버퍼링해 둔 패킷을 이용한다. 버퍼링 처리에 대해서는 후술한다. 대역 조정 처리를 실행하면, 처리를 종료한다.
도 13은, 대역 조정부(24)에 의한 대역 조정 처리를 도시한 플로우차트이다. 상기한 바와 같이, 정기적인 인터럽트 처리나, 중계 패킷의 수신을 계기로 하여, 도 13에 도시하는 처리를 개시한다.
우선, 스텝 S31에서, 단위 조정 시간이 경과하였는지의 여부를 판정한다. 「단위 조정 시간」이란, 중계 장치(3)의 데이터 전송량을 계측하는 시간을 말한다. 아직 단위 조정 시간이 경과하고 있지 않은 경우(스텝 S31에서 "아니오"인 경우)에는, 스텝 S32로 진행하고, 유지하고 있는 단위 전송량을 클리어하면, 스텝 S33으로 진행한다. 이미 단위 조정 시간이 경과하고 있는 경우(스텝 S31에서 "예"인 경우)에는, 특별히 처리를 행하지 않고, 스텝 S33으로 진행한다.
스텝 S33에서, 도 3의 버퍼부(14)에 데이터 패킷이 버퍼링되어 있는지의 여부를 판정한다. 버퍼부(14)에 데이터 패킷이 버퍼링되어 있는 경우(스텝 S33에서 "예"인 경우)에는, 스텝 S34로 진행하고, 또한, 데이터 패킷에 관한 대역과 목표 대역을 비교한다. 구체적으로는, 데이터 패킷의 단위 전송량이, 세션 테이블(13)로부터 읽어낸 목표 전송량을 하회하는지의 여부를 판정한다. 여기서, 「패킷의 단위 전송량」이란, 수신 대역 측정부(23)가 측정하는, 상기 단위 조정 시간 내에 대역 조정 장치(1)가 전송한 데이터량으로서, 도 11의 대역 측정 처리에 있어서 측정한 방향에 관한 전송 데이터량을 말한다.
스텝 S33에서, 버퍼부(14)에 데이터 패킷이 버퍼링되어 있지 않은 경우(스텝 S33에서 "아니오"인 경우)에는, 스텝 S36으로 진행한다.
스텝 S34에서, 데이터 패킷의 단위 전송량이 목표 전송량을 하회하는 경우(스텝 S34에서 "아니오"/억제인 경우)에는, 대역의 억제를 행하고, 스텝 S36으로 진행한다. 상기한 바와 같이, 대역의 억제 처리에서는, 목표 전송량에 대하여 데이터 패킷의 단위 전송량이 소정의 범위 내로 되도록 데이터 패킷의 송출 간격을 제어하고 있다.
스텝 S34의 판정에 있어서, 데이터 패킷의 단위 전송량이 목표 전송량을 상회하는 경우(스텝 S34에서 "예"/촉진인 경우)에는, 스텝 S35로 진행하고, 대역의 촉진을 행한다. 상기한 바와 같이, 대역의 촉진 처리에서는, 버퍼부(14)에 버퍼링해 둔 데이터 패킷을, 목표 전송량에 따라서 전송한다.
송신 방향에 관한 대역 제어 처리를 실행하면, 스텝 S36 이후의 수신 방향에 관한 대역 제어 처리를 행한다. 스텝 S36~스텝 S38의 처리에 대해서는, 버퍼부(14)에 ACK 패킷이 버퍼링되어 있는 경우에는, ACK 패킷의 단위 전송량과 목표 전송량의 대소 관계에 따라서 대역의 억제나 촉진을 행하는 처리이며, 각각 스텝 S33~스텝 S35의 데이터 패킷에 대한 처리와 대응하는 것이다.
또한, 도 12의 스텝 S21의 인터럽트 주기는, 도 13의 스텝 S31의 단위 조정 시간보다도 짧은 시간을 설정한다. 이것은, 인터럽트 주기를 단위 조정 시간보다도 짧게 설정함으로써, 대역 조정 처리가 이루어지지 않는 공백의 기간을 만들지 않기 위해서이다.
이상 설명한 바와 같이, 본 실시 형태에 따른 대역 조정 장치(1)에 따르면, 대역 조정 장치(1)를 통과하는 TCP 패킷의 전송량을 감시해서 대역을 구하고, 통신에 필요한 목표 대역을 상회하는 경우에는, 패킷 송출을 제어해서 대역을 억제한다. 구한 대역이 목표 대역을 하회하는 경우에는, 버퍼링해 둔 패킷을 송신 단말기(2A)나 수신 단말기(4B) 대신에 재송(대리 재송)해서 대역의 촉진을 행한다.
종래의 TCP 통신의 문제점의 1개에, 버스트 트래픽, 즉, 일시적으로 피크가 높은 트래픽이 발생하는 것을 들 수 있다. 버스트 트래픽이 발생하는 원인은, 예를 들면, 세션 개시 후에는 초기값으로 전송을 개시하고, 「우선」 버스트 트래픽을 송신하게 되기 때문이다. 서비스를 제공하는 서버와 유저간의 통신에서는, 서버측의 네트워크에 대하여, 유저측의 네트워크 쪽이 저속인 액세스 네트워크로 접속되어 있는 경우도 많다. 이러한 구성 하에서 서버가 버스트 트래픽을 송신하면, 유저측에서는, 버스트 트래픽을 다 받지 못할 가능성이 높다. 유저측에서 다 받지 못하는 버스트 트래픽은, 유저측의 액세스 네트워크의 접속점에서 패킷 파기될 가능성이 높다.
또한, TCP 통신에서는, 어플리케이션 프로그램이 데이터를 송신하고, 오퍼레이팅 시스템의 기구를 사용해서 TCP나 IP의 프로토콜 스택이 처리하고, 마지막으로 네트워크 드라이버가 데이터를 송신한다. 통상적인 계산기 시스템에서는, 어플리케이션 프로그램이나 오퍼레이팅 시스템은, 시분할적인 스케줄링에 의해 동작하고 있다. 이 때문에, 송신 데이터가 각종 프로그램을 경유할 때마다 스케줄링이 들어가게 되고, 버스트적으로 처리되게 된다. 부하가 높은 서버에서는, 이 처리의 버스트성이 커지는 경향이 강하여, 버스트 트래픽으로 연결되는 경우가 있다.
버스트 트래픽은, 네트워크 경로에서 폭주의 원인으로 될 수 있다. 특히, 많은 TCP 세션을 집약하는 라우터 등에서는, 항상 폭주가 발생할 위험이 있다. 그러나, 본 실시 형태에 따른 대역 조정 장치(1)에 따르면, 실제의 대역이 목표 대역을 상회하는 경우에는, 대역의 억제를 행한다. 이에 의해, 버스트 트래픽을 효과적으로 억지하는 것이 가능하게 된다.
또한, 대역 조정 장치(1)는, 자기 장치를 통과하는 패킷의 대역을 측정하고, 자기 장치를 통과하는 패킷을 제어하고 있다. 종래의 TFRC(TCP-Friendly Rate Control) 등과 같이, 수신 단말기(4B)가 패킷 파기 정보를 통지하거나, 송신 단말기(2A)가 지연을 패킷마다 측정하거나 할 필요가 없다. 또한, 경로 상에 대역 조정 장치(1)가 배치되어 있으면, 상기한 대역 조정 처리를 실시하는 것이 가능하므로, 송신 단말기(2A)나 수신 단말기(4B)는, 반드시 대역 조정 장치(1)를 구비하고 있을 필요도 없다.
또한, 만약, 대역 조정을 위해서, 패킷에 변경을 가해서 패킷 길이를 변경한다고 하면, 대역 조정을 행하는 장치에 있어서 패킷을 다시 만들어낼 필요가 있어, 처리 부하의 증대나, 다른 네트워크 기기에의 영향이 염려된다. 그러나, 본 실시 형태에 따른 대역 조정 방법에서는, 패킷의 전송 간격을 제어하고 있을 뿐이기 때문에, 이러한 문제도 발생하지 않는다.
그리고, 본 실시 형태에 따른 대역 조정 방법에서는, 측정 대역이 목표 대역을 상회하는 경우·하회하는 통신에 대해서, 대역 조정이 필요하다고 판단하고, 각각 대역의 억제·촉진을 행한다. 대역 조정을 실시할 필요가 없는 통신에 대해서는, 패킷을 전송하기만 한다. 이러한 방법으로 대역 조정을 행하고 있기 때문에, 중계 장치(3)에 있어서 대역 조정이 필요한 통신과 대역 조정이 불필요한 통신이 경합하는 경우가 있어도, 대역 조정이 불필요한 통신의 속도에 악영향을 미치는 일도 없다.
〔버퍼링〕
상기한 대역 조정 처리의 설명에 있어서도 설명한 바와 같이, 본 실시 형태에 따른 대역 조정 장치(1)는, 버퍼부(14)에 패킷을 버퍼링해 두는 것에 의해, 대역의 억제나 촉진을 행하고 있다. 다음으로, 버퍼링한 패킷을 이용하는 방법에 대해서 설명한다.
도 14는, 데이터 패킷을 버퍼링하는 방법을 설명하는 도면이다.
도 14에 도시하는 바와 같이, 중계 장치(3)에 구비되는 대역 조정 장치(1)는, 데이터 패킷을 도 3의 버퍼부(14)에 버퍼링해 둔다. 그리고, 버퍼부(14)에 버퍼링하고 있는 데이터 패킷을 복사하고, 복사한 데이터 패킷을 수신 단말기(4B)에 송신하는 등의 처리를 실행한다.
대역 조정 장치(1)가 버퍼부(14)의 빈 부분을 감시하여, 대역 조정 장치(1)나 중계 장치(3)의 메모리가 고갈된 것을 인식하면, 데이터 패킷을 버퍼링하지 않고 파기하는 것으로 해도 된다. 이것은, 파기한 데이터 패킷이 수신 단말기(4B)까지 도달해 있지 않은 경우에도, 어떠한 송신 단말기(2A)가 TCP의 기능에 의해 데이터 패킷의 재송을 행하기 때문에, 통신상의 문제는 발생하지 않는다.
ACK 패킷에 대해서도 마찬가지의 버퍼링을 행한다. 데이터 패킷의 버퍼링과 마찬가지로, 메모리의 용량을 초과하는 경우에는 ACK 패킷을 파기한다고 해도, 수신 단말기(4B)가 TCP의 기능에 의해 ACK 패킷의 재송을 행하기 때문에, 통신상의 문제는 발생하지 않는다.
또한, 대역 조정 장치(1)가, 버퍼부(14)에의 패킷의 버퍼링 기능을 이용해서 이하의 처리를 실행하는 구성으로 할 수도 있다.
예를 들면, 버퍼링하는 데이터 패킷이나 ACK 패킷을, 시퀀스 번호나 ACK 번호 순으로 배열해서 버퍼링할 수도 있다. 예를 들면 네트워크의 경로에 의해, 수신 단말기(4B)에 도착하는 순서가 교체되는 경우가 있다. 이러한 경우에도, 시퀀스 번호나 ACK 번호 순으로 패킷을 나열해 둠으로써, 대역 조정 장치(1)를 구비하는 네트워크 기기(실시예에서는 중계 장치(3))에 있어서 순서를 수정할 수 있다.
또한, 수신한 패킷의 시퀀스 번호나 ACK 번호 등을 버퍼부(14)에 이미 버퍼링하고 있는 패킷의 그것과 비교하여, 중복되는 패킷은 버퍼링하지 않고 파기할 수도 있다. 패킷을 수신하는 단말 장치(수신 단말기(4B)나 송신 단말기(2A))에 있어서는, 중복되는 패킷을 파기하는 처리가 불필요하게 된다.
도 15는, 버퍼링한 ACK 패킷을 이용하는 방법을 설명하는 도면이다.
ACK 패킷에 관해서는, 또한, 버퍼링해 두는 패킷수를 1개로 한정하는 구성으로 하는 것도 가능하다. 대역 조정 장치(1)가 수신한 ACK 패킷의 ACK 번호 중, 최대의 ACK 번호를 취하는 ACK 패킷을 버퍼링해 둔다. TCP에서는, 최대의 ACK 번호를 알면, 다음으로 송신해야 할 데이터 패킷의 시퀀스 번호를 판단 가능하기 때문이다. 도 15의 예에서는, 중계 장치(3)의 대역 조정 장치(1)는, ACK 번호가 「5」인 ACK 패킷 AP(5)를 수신 단말기(4B)로부터 수신하면, 지금까지 버퍼부(14)에 유지하고 있던 ACK 번호 「4」의 ACK 패킷 AP(4)를 파기하고, 최대의 ACK 번호를 갖는 ACK 패킷(5)을 버퍼링한다. 그리고, 이 ACK 패킷 AP(5)를 이용하여, 상술한 대역의 촉진 처리를 실행한다.
패킷 손실 등에 의해 수신 단말기(4B)에 있어서 데이터 패킷을 수신하고 있지 않은 경우에도, 전술한 바와 같이, 대역의 촉진 처리를 실행함으로써, 안정된 통신을 공급하는 것이 가능하게 된다. 따라서, 대역 조정 장치(1)는, 버퍼링하는 ACK 패킷수가 1뿐이어도, 실시예에서는, 버퍼링한 ACK 패킷(도 15에 있어서는 ACK 패킷 AP(5))을 복사해서 송신함으로써, 대역 조정을 실행하고 있다.
그런데, ACK 패킷은, 수신 단말기(4B)가 데이터 패킷을 수신하고 있지 않은 기간에 대해서도, 임의의 빈도(예를 들면 목표 대역)로 송신 단말기(2A)에 돌려보내 두는 것이 바람직하다. 그래서, 대역 조정 장치(1)는, 소정의 빈도로 송신 단말기(2A)에 ACK 패킷이 되돌아오도록, 버퍼부(14)에 버퍼링하고 있는 ACK 패킷을 복사하고, 송신한다. 버퍼부(14)로부터 복사·송신이 이루어진 ACK 패킷은, 수신 단말기(4B)로부터도 송신되고, 송신 단말기(2A)에 있어서는 중복해서 수신하게 되지만, 송신 단말기(2A)는, 공지의 IP 네트워크의 사양의 범위 내에서 처리를 행한다. 이 때문에, 이러한 ACK 패킷의 재송에 의해 통신에 문제가 발생하는 경우는 없다.
다음으로, 도 16 및 도 17을 참조하면서, 상기한 버퍼링 처리에 관해서, 버퍼부(14)를 구성하는 버퍼 메모리를 관리하는 방법에 대해서 설명한다. 버퍼부(14)는, 세션 테이블(13)에 의해 관리되고, 세션의 하나의 방향마다, 즉, 도 2의 A→B 방향 및 B→A 방향의 각각에 대해서 준비한 큐(대기 행렬)이다. 큐는, 링크 트리스트 등의 데이터 구조에 의해 실현된다. 링크 트리스트에 대해서는, 공지의 기술이므로, 설명은 생략한다.
도 16은, 데이터 패킷의 버퍼링 처리를 도시한 플로우차트이다. 도 3의 대역 조정 장치(1)의 수신 대역 측정부(23)는, 데이터 패킷을 세션 관리부(22)로부터 수취하면, 도 16에 도시하는 처리를 개시한다.
우선, 스텝 S41에서, 수취한 데이터 패킷의 시퀀스 번호와 동일한 시퀀스 번호를 갖는 데이터 패킷이 큐(버퍼부(14))에 존재하는지의 여부를 판정한다. 동일한 시퀀스 번호를 갖는 데이터 패킷이 존재하는 경우(스텝 S41에서 "예"인 경우)에는, 스텝 S42로 진행하고, 수취한 데이터 패킷에 대해서는 파기하고, 처리를 종료한다.
스텝 S41의 판정에 있어서, 동일한 시퀀스 번호를 갖는 데이터 패킷이 없는 경우(스텝 S41에서 "아니오"인 경우)에는, 스텝 S43으로 진행하고, 시퀀스 번호가 나타내는 순서에 따라서 데이터 패킷을 큐에 추가하고, 처리를 종료한다.
도 17은, ACK 패킷의 버퍼링 처리를 도시한 플로우차트이다. 도 3의 대역 조정 장치(1)의 수신 대역 측정부(23)는, ACK 패킷을 세션 관리부(22)로부터 수취하면, 도 17에 도시하는 처리를 개시한다. 도 17에 있어서는, 최대 ACK 번호를 취하는 ACK 패킷을 버퍼링하는 처리를 나타낸다.
우선, 스텝 S51에서, 수취한 ACK 패킷의 ACK 번호가, 최대값을 취하는지의 여부를 판정한다. 수취한 ACK 패킷의 ACK 번호가, 지금까지 수신한 ACK 패킷 중에서 최대값이 아닌 경우(스텝 S51에서 "아니오"인 경우)에는, 스텝 S52로 진행하고, 수취한 ACK 패킷에 대해서는 파기하고, 처리를 종료한다.
스텝 S51의 판정에 있어서, 수취한 ACK 패킷의 ACK 번호가 최대값을 취하는 경우(스텝 S51에서 "예"인 경우)에는, 스텝 S53으로 진행한다. 그리고, 대역 조정 장치(1)가 복수의 ACK 패킷을 유지하는 구성을 취하는 경우에는, ACK 번호가 나타내는 순서에 따라서 ACK 패킷을 큐에 추가한다. 큐의 길이가 1이고, 1개의 ACK 패킷밖에 유지하지 않는 구성을 취하는 경우에는, 큐에 유지되어 있는 ACK 패킷을 파기함과 함께, 수취한 새로운 ACK 패킷을 큐에 기억하고, 처리를 종료한다.
도 16이나 도 17에 도시하는 버퍼링 처리는, 상기한 대역 조정을 행할 때에 실행되는 처리이므로, 종래 기술과 달리, 송신 단말기(2A)가 계속적으로 과도한 패킷을 계속해서 송출하는 일이 없다. 이에 의해, 버퍼링하는 패킷수가 계속해서 증가하는 것이나, 정상적으로 큰 값이 되는 일이 없다.
상기한 바와 같이, 실시예에서는, 패킷용의 버퍼 메모리는, 어떤 세션의 통신 방향마다, 즉, 데이터 패킷의 버퍼용과 ACK 패킷의 버퍼용으로, 적어도 2개를 준비한다. 각각의 버퍼 메모리에 버퍼링하는 패킷수는, 목표 대역과, 측정한 대역의 차에 의존한다. 예를 들면 데이터 패킷의 버퍼링하는 패킷수에 대해서는, 예를 들면, TCP 통신의 초기 전송시의 TCP 윈도우 사이즈의 패킷수 정도를 설정한다. 버퍼 메모리의 패킷 데이터를 저장하는 영역을 64킬로바이트, 초기 전송시의 TCP 윈도우 사이즈를 1450바이트로 하면, 패킷수는, 64KB/1450B=45패킷 정도이다.
패킷용의 버퍼 메모리에는, 패킷의 데이터뿐만 아니라, 버퍼부(14)의 관리를 행하기 위한 관리 정보를 포함하기 때문에, 메모리량은, 패킷 길이보다 크다. 여기서, 패킷당 2킬로바이트, 1세션당 최대 50패킷을 버퍼링한다고 가정하면, 세션당 필요한 메모리량은 100킬로바이트, 1만세션에서는, 1기가바이트가 된다.
대역 조정 처리에 의해, 목표 대역에 따라서 송신 단말기(2A)로부터의 송신 대역을 제어하고 있기 때문에, 실제로는, 1세션당의 평균 버퍼량은, 10패킷 이하가 된다. 1기가바이트의 버퍼 메모리를 준비하면, 10만세션의 동시 중계이어도 처리가 가능하다.
복수의 세션을 동시에 중계하는 경우에 대비해서 버퍼 메모리의 용량을 확보해 둔 경우에도, 버퍼 메모리가 고갈되는 케이스도 발생할 수 있다. 이와 같은 경우에는, 패킷의 버퍼링은 행하지 않고, 대역 조정 처리를 계속한다. 전술한 바와 같이, 송신 단말기(2A)나 수신 단말기(4B)는, TCP의 기능에 의해 패킷의 재송을 행하기 때문에, 메모리가 고갈된 경우에는 버퍼링을 행하지 않는 것으로 해도, 통신상의 문제는 발생하지 않는다. 버퍼 메모리에 일시적으로 과부하가 걸릴 가능성은 있지만, 통신에 악영향을 미치는 일없이, 대역 조정 처리를 행할 수 있다.
또한, 실시예와 같이, 대역 조정 장치(1)를 구비하는 네트워크 기기가 중계 장치(3)인 경우에는, 버퍼부(14)에 저장되어 있는 패킷 중, 버퍼링이 불필요한 데이터 패킷을 판단해서 파기하는 구성으로 할 수도 있다. 도 18을 참조하여, 버퍼링의 불필요한 데이터 패킷을 파기하는 방법에 대해서 구체적으로 설명한다.
도 18은, 버퍼 데이터를 파기하는 처리를 설명하는 도면이다.
수신 단말기(4B)는, 데이터 패킷을 수신하면, 다음으로 송신 장치(2A)가 송신해야 할 데이터 패킷의 시퀀스 번호를 ACK 번호에 포함시켜, ACK 패킷을 반송한다. 본 실시 형태에 따른 대역 조정 장치(1)를 구비하는 중계 장치(3)는, ACK 패킷을 수신하면, 버퍼부(14)의 데이터 패킷의 시퀀스 번호를 참조한다. 그리고, 수취한 ACK 번호와 일치하는 시퀀스 번호의 데이터 패킷이 버퍼링되어 있는 경우에는, ACK 패킷을 중계하지 않고 파기함과 함께, 불필요한 데이터 패킷이 버퍼링되어 있다고 판단한다. 그리고, ACK 번호보다도 오래된 데이터 패킷을 파기한다. 즉, 다음으로 송신 단말기(2A)가 송신해야 할 패킷의 시퀀스 번호보다도 작은 시퀀스 번호를 취하는 데이터 패킷을 파기한다.
또한, 중계 장치(3)는, 이후에 송신 단말기(2A) 측으로부터 도착한 데이터 패킷 중, ACK 번호보다도 값이 작은 시퀀스 번호의 데이터 패킷에 대해서는, 버퍼링 및 전송은 불필요하다고 판단하고, 파기한다.
도 18에 도시하는 예에서는, 대역 조정 장치(1)를 구비하는 중계 장치(3)는, ACK 번호 「5」의 ACK 패킷 AP(5)를 수신한다. 이것은, 수신 장치(4B)에 있어서는 시퀀스 번호 「4」의 데이터 패킷 DP(4)를 수신 완료라는 것을 나타낸다. 따라서, 중계 장치(3)는, 시퀀스 번호가 5-1=4 이하인 데이터 패킷 DP(4), DP(3)에 대해서는 버퍼링·전송은 불필요하다고 판단하고, 파기한다.
이와 같이, 대역 조정 장치(1)를 구비하는 중계 장치(3)에 있어서, ACK 패킷의 ACK 번호를 참조해서 오래된 데이터 패킷을 파기함으로써, 중계 장치(3)로부터 수신 단말기(4B)까지의 쓸데없는 트래픽을 삭감함과 함께, 필요한 버퍼량의 절약에 기여한다.
또한, 전술한 바와 같이, 본 실시 형태에 따른 대역 조정 장치(1)는, A→B 방향 및 B→A 방향의 2방향 중, 1방향의 패킷만을 중계하는 경우에도 대역 조정이 가능하다. 그러나, 도 18에 도시하는 패킷을 파기하는 처리에 관해서는, ACK 패킷 즉 B→A 방향의 통신의 상황에 기초하여, 데이터 패킷 즉 A→B 방향의 통신을 제어하고 있다. 따라서, 도 18의 패킷 파기의 처리는, 양방향의 통신을 감시하고 있는 경우에 적용 가능하다.
〔대리 재송〕
대역의 촉진 처리의 설명에 있어서, 대역 조정 장치(1)가 송신 단말기(2A)나 수신 단말기(4B) 대신에 패킷을 송신(대리 재송)하는 것에 대해서 설명하였다. 여기서는, 대리 재송의 구체적인 방법 및 그 응용예에 대해서, 상세하게 설명한다.
도 19는, 데이터 패킷의 대리 재송 처리를 도시한 플로우차트이다. 도 3의 대역 조정 장치(1)의 대역 조정부(24)는, 예를 들면, 도 13에 도시하는 대역 조정 처리를 실행함과 함께, 도 19에 도시하는 데이터 패킷의 대리 재송 처리를 실행한다.
우선, 스텝 S61에서, 측정 대역이 목표 대역을 하회하고 있는지의 여부를 판정한다. 측정 대역이 목표 대역을 하회하는 경우(스텝 S61에서 "예"인 경우)에는, 특별히 처리를 행하지 않고, 처리를 종료한다.
한편, 측정 대역이 목표 대역 이상인 경우(스텝 S61에서 "아니오"인 경우)에는, 스텝 S62로 진행한다. 그리고, 세션 테이블(13)에서 관리하고 있는 ACK 번호의 최대값 또는 최대값보다도 큰 값의 시퀀스 번호를 갖는 데이터 패킷을 버퍼부(14)로부터 복사하고, 수신 단말기(4B)에 송신하고, 처리를 종료한다.
도 20은, ACK 패킷의 대리 재송 처리를 도시한 플로우차트이다. 도 19에 도시하는 처리와 마찬가지로, 대역 조정부(24)는, 도 13에 도시하는 대역 조정 처리를 실행할 때에, 도 20에 도시하는 ACK 패킷의 대리 재송 처리를 아울러 실행할 수도 있다.
우선, 스텝 S71에서, 측정 대역이 목표 대역을 하회하고 있는지의 여부를 판정하고, 측정 대역이 목표 대역을 하회하는 경우(스텝 S71에서 "예"인 경우)에는 특별히 처리를 행하지 않고 처리를 종료한다. 이것은, 도 19의 스텝 S61에서 "예"인 경우와 마찬가지이다.
한편, 측정 대역이 목표 대역 이상인 경우(스텝 S71에서 "아니오"인 경우)에는, 스텝 S72로 진행한다. 그리고, 세션 테이블(13)에서 관리하고 있는 ACK 번호의 최대값을 갖는 ACK 패킷을 버퍼부(14)로부터 복사하고, 송신 단말기(2A)에 송신하고, 처리를 종료한다.
대역 조정 처리에 있어서, 데이터 패킷이나 ACK 패킷의 대리 재송을 행하는 것에 의한 효과에 대해서는, 대역 조정 처리의 설명에 있어서 설명한 바와 같다.
또한, 도 19나 도 20에 도시하는 패킷의 대리 재송 처리를 이용하여, 대역 조정 장치(1)에 있어서 데이터 패킷의 재송의 필요 여부를 판단하고, 필요하다고 판단한 경우에 데이터 패킷을 자동 재송하는 것도 가능하다.
도 21은, 데이터 패킷의 자동 대리 재송 방법을 설명하는 도면이다.
수신 단말기(4B)로부터 송신된 ACK 패킷을 수신한(중계 장치(3)의) 대역 조정 장치(1)는, 수신한 ACK 패킷에 대응하는 데이터 패킷을 버퍼부(14)에 유지하고 있는 경우에는, ACK 패킷을 송신 단말기(2A)에 전송하지 않고 파기함과 함께, 버퍼링하고 있는 데이터 패킷을 수신 단말기(4B) 앞에 송신한다. 송신 단말기(2A)가 ACK 패킷에 포함되는 ACK 번호에 따라서 대응하는 데이터 패킷을 송신하는 경우와 비교하면, 중계 장치(3)(의 대역 조정 장치(1))가 ACK 패킷에 대응하는 데이터 패킷을 송신하고 있으므로, 여기서는, 데이터 패킷의 「자동 대리 재송」이라고 표현하고 있다.
도 21에 도시하는 예에서는, 대역 조정 장치(1)를 구비하는 중계 장치(3)는, ACK 번호 「5」의 ACK 패킷 AP(5)를 수신한다. 대역 조정 장치(1)는, 버퍼부(14)에 시퀀스 번호 「5」의 데이터 패킷 DP(5)를 버퍼링하고 있는 경우에는, ACK 패킷을 송신 단말기(2A)에 전송하지 않고, 버퍼부(14)의 시퀀스 번호 「5」의 데이터 패킷 DP(5)를 복사하고, 수신 단말기(4B)에 재송한다. ACK 번호 「6」의 ACK 패킷 AP(6)를 수신하면, 시퀀스 번호 「6」의 데이터 패킷 DP(6)에 대해서도 마찬가지로 자동 재송한다.
또한, 전술한 바와 같이, 본 실시 형태에 따른 대역 조정 장치(1)는, A→B 방향 및 B→A 방향의 2방향 중, 1방향의 패킷만을 중계하는 경우에도 대역 조정이 가능하다. 그러나, 도 21에 도시하는 자동 대리 재송 처리에 관해서는, ACK 패킷 즉 B→A 방향의 통신의 상황에 기초하여, 데이터 패킷 즉 A→B 방향의 통신을 제어하고 있다. 따라서, 자동 대리 재송 처리는, 양방향의 통신을 감시하고 있는 경우에 적용 가능하다.
도 22는, 데이터 패킷의 자동 대리 재송 처리를 도시한 플로우차트이다. 도 3의 대역 조정부(24)는, 반대 방향의 대역 조정부로부터 ACK 패킷의 ACK 번호를 통지받은 것을 계기로 하여, 도 22에 도시하는 처리를 실행한다.
우선, 스텝 S81에서, 반대 방향의 대역 조정부에 있어서 수신한 ACK 패킷의 ACK 번호에 대응하는(즉 ACK 번호와 일치하는) 시퀀스 번호의 데이터 패킷이 버퍼부(14)의 큐에 저장되어 있는지의 여부를 판정한다. 해당하는 데이터 패킷이 큐에 없는 경우(스텝 S81에서 "아니오"인 경우)에는, 특별히 처리를 행하지 않고, 처리를 종료한다.
스텝 S81의 판정에 있어서, 해당하는 데이터 패킷이 큐에 저장되어 있는 경우(스텝 S81에서 "예"인 경우)에는, 스텝 S82로 진행한다. 그리고, 해당하는 데이터 패킷을 버퍼부(14)로부터 복사하여, 수신 단말기(4B)에 재송하고, 처리를 종료한다.
대역 조정 장치(1)를 구비하는 중계 장치(3)에 있어서 도 21 및 도 22에 도시하는 데이터 패킷의 자동 대리 재송을 행함으로써, 중계 장치(3)로부터 송신 단말기(2A)까지의 왕복 지연 시간 및 트래픽의 절약이 가능하게 된다.
〔데이터 패킷의 자동 용장 송신(冗送)〕
대역 조정 장치(1)의 버퍼링 기능을 이용하여, 데이터 패킷의 용장 송신 처리를 실행하는 것도 가능하다. 즉, 대역 조정 장치(1)를 구비하는 중계 장치(3)로부터 수신 단말기(4B)까지의 경로 상에 있어서, 패킷 파기의 확률이 높은 경우에는, 중계 장치(3)가, 데이터 패킷을 소정의 빈도로 복사해서 중복 송신(용장 송신)한다. 중계 장치(3)는, 패킷 파기의 확률을, ACK 패킷의 수신 상황에 의해 판단한다.
중계 장치(3)는, 용장 송신을 포함시킨 중계 대역(데이터 패킷 송신 방향의 대역)과, 수신 대역(ACK 패킷의 송신 방향의 대역)을 관측한 결과에 따라서, 용장 송신 비율을 조정하는 것도 가능하다. 예를 들면, 용장 송신을 포함시킨 중계 대역에 대하여 수신 대역이 작은 경우에는, 중계 장치(3)로부터 송신된 데이터 패킷의 파기의 확률이 높다고 판단하고, 용장 송신하는 데이터 패킷의 비율을 올리는 등의 처리를 실행한다.
이러한 데이터 패킷의 용장 송신 처리에 의해, 패킷 파기의 확률을 저하시켜, TCP 통신의 성능을 향상시키는 것도 가능하다.
또한, 전술한 바와 같이, 본 실시 형태에 따른 대역 조정 장치(1)는, A→B 방향 및 B→A 방향의 2방향 중, 1방향의 패킷만을 중계하는 경우에도 대역 조정이 가능하다. 그러나, 상기의 데이터 패킷의 자동 용장 송신 처리에 관해서는, ACK 패킷 즉 B→A 방향의 통신의 상황에 기초하여, 데이터 패킷 즉 A→B 방향의 통신을 제어하고 있다. 따라서, 자동 용장 송신 처리는, 양방향의 통신을 감시하고 있는 경우에 적용 가능하다.
〔다중 사용〕
상기한 대역 조정 기능을 갖춘 네트워크 기기에 대해서는, 통신 경로 상에 복수 설치하는 것도 가능하다. 대역 조정 장치(1)는, 패킷의 변경 등은 행하고 있지 않고, 패킷의 전송 간격을 목표 대역에 따라서 조정하고 있을 뿐이다. 이 때문에, 통신 경로 상에 대역 조정 장치를 복수 배치하고, 각 대역 조정 장치(1)에 있어서 대역 조정 처리를 실행하는 구성을 취하는 것이 가능하다. 이와 같이, 대역 조정 장치(1)를 다중 사용하는 구성으로 해도, 패킷의 변경은 행하고 있지 않기 때문에, 대역 조정 장치(1) 사이에서 서로 악영향을 미치는 일이 없다. 또한, 각 대역 조정 장치(1)가 대역 조정 처리를 실행함으로써, 각 경로에 있어서 통신이 안정화하게 되기 때문에, 1대의 대역 조정 장치(1)만으로 대역 조정을 행하는 경우와 비교하여, 더욱 높은 효과를 기대할 수 있다.
또한, 대역 조정 장치(1)를 다중 사용하고, 각 대역 조정 장치(1)에 있어서 상기 버퍼링 처리를 행하는 경우에는, 목표 대역은, 약간 낮게 설정해 두는 것이 바람직하다. 경로 상의 복수 개소에서 버퍼링을 행하는 것에 의한 중계 지연의 증가가 예측되기 때문이다. 목표 대역을 비교적 약간 낮게 설정해 둠으로써, 대역의 촉진을 위해 버퍼링을 행하는 빈도를 낮게 할 수 있고, 이에 의해, 중계 지연의 증가를 효과적으로 억제할 수 있다고 예상된다.
〔서비스 통지〕
많은 세션을 관리함으로써, 대역 조정 장치(1)의 세션 테이블(13)이 가득차면, 대역 조정 장치(1)(을 구비하는 중계 장치(3))는, 넘친 TCP 세션에 대해서는, 간단히 패킷의 중계만을 행한다. 이 때문에, 넘친 TCP 세션에 대해서는 대역 조정이 실시되지 않게 된다. 상술한 대역 조정 장치(1)의 다중 사용에 의해, 경로 상에 복수의 대역 조정 장치(1)가 설치되어 있다고 해도, 기본적으로는, 먼저 전송된 TCP 세션에 대하여 대역 조정 처리를 실시해 가게 되기 때문에, 최초의 대역 조정 장치(1)에서 넘친 TCP 세션은, 이후의 대역 조정 장치(1)에 있어서도 대역 조정이 이루어지지 않는 경우도 생각된다.
그래서, 다중 사용의 시스템 구성에 있어서, 어느 하나의 대역 조정 장치(1)에 있어서 대역 조정 처리가 이루어진 패킷인지의 여부를 나타내는 정보를, TCP 패킷에 포함시키는 것으로 할 수 있다. 대역 조정 장치(1)는, 대역 조정 처리가 미 실시인 패킷에 대하여 우선적으로 대역 조정 처리를 행하여 간다. 경로 상을 전송되는 패킷이 대역 조정 처리 완료인지의 여부를 나타내는 정보를, 「서비스 통지 정보」로 하고, 이하에, 다중 사용의 구성에 있어서, 서비스 통지 정보를 참조해서 대역 조정 처리를 실시하는 방법에 대해서, 구체적으로 설명하는 것으로 한다.
도 23은, 서비스 통지 정보의 이용에 의해 대역 조정 처리를 분산시키는 방법을 설명하는 도면이다. 도 23은, 송신 단말기(2A) 및 수신 단말기(4B)가, 2대의 중계 장치(3A, 3B)를 거쳐서 통신을 행하는 경우를 예시한다. 설명을 위해, 송신 단말기(2A)-중계 장치(3A)간, 중계 장치(3A)-중계 장치(3B)간 및 중계 장치(3B)-수신 단말기(4B)간의 경로를 각각 경로(a), (b) 및 (c)로 한다.
2개의 패킷 P1, P2가 경로(a)~(c)를 경유해서 수신 단말기(4B)에 있어서 수신될 때까지의 사이에, 대역 조정 장치(1)를 구비하는 중계 장치(3A, 3B)가, 패킷 P1, P2를 중계한다. 각 중계 장치(3A, 3B)의 대역 조정 장치(1A, 1B)는, 패킷 P1, P2의 서비스 통지 정보를 참조하여, 대역 조정 처리가 미 실시인 패킷에 대하여 우선적으로 대역 조정을 실시하는 것에 의해, 통신 시스템 내에서 대역 조정 처리의 분산을 행한다.
경로(a)를 경유해서 중계 장치(3A)에 도달한 패킷에는, 모두 서비스 통지 정보에는 대역 조정 처리가 「미 실시」인 것을 나타내는 값이 저장되어 있다. 중계 장치(3A)의 대역 조정 장치(1A)는, 중계하는 패킷 P1, P2 중, 일부의 패킷 P1에 대해서 대역 조정을 행한다. 패킷 P2에 대해서는 그대로 중계한다.
경로(b)를 경유해서 중계 장치(3B)에 도달한 패킷 중, 패킷 P1의 서비스 통지 정보에는, 대역 조정 처리가 「완료」인 것을 나타내는 값이 설정되어 있지만, 패킷 P2의 그것에는, 대역 조정 처리가 미 실시인 것을 나타내는 값이 저장되어 있다. 그래서, 중계 장치(3B)의 대역 조정 장치(1B)는, 패킷 P1, P2의 서비스 통지 정보를 참조하여, 대역 조정 처리가 아직 이루어져 있지 않은 패킷 P2에 대하여 우선적으로 대역 조정을 행한다. 경로(c)에 있어서는, 대역 조정된 패킷 P1, P2가 전송된다.
상기한 바와 같이, 경로 상에 복수의 대역 조정 장치(1)가 설치되어 있고, 서비스 통지 정보를 참조하여, 대역 조정 처리가 미 실시인 패킷을 판단해서 우선적으로 대역 조정을 행하여 가는 것에 의해, 대역 조정 처리를 분산시킬 수 있다. 이에 의해, 경로 상을 전송되는 패킷이 어느 하나의 대역 조정 장치(1)에 있어서 대역 조정될 가능성을 높일 수 있다.
다음으로, 도 24 및 도 25를 참조하여, 서비스 통지 정보의 설정 예에 대해서 설명한다.
도 24는, 서비스 통지 정보의 설정 방법의 일례를 도시하는 도면이다. 도 24에 도시하는 예에서는, 서비스 통지 정보를 TCP 헤더의 예약 비트인 1비트를 이용하여, 서비스 통지 플래그 f1을 TCP 패킷에 부가한다. 서비스 통지 플래그 f1에, 예를 들면 「1」이 저장되어 있는 경우에는 그 패킷은 대역 조정 처리가 완료이며, 「0」이 저장되어 있는 경우에는, 아직 대역 조정 처리가 이루어져서 있지 않은 것을 나타내는 것으로 한다. TCP 헤더의 다른 필드에 대해서는, 공지의 기술이므로, 설명을 생략한다.
TCP 옵션의 추가 등은 행하지 않고, 도 24에 도시하는 바와 같은 방법으로 서비스 통지 플래그 f1을 설정함으로써, 패킷의 변경을 최소한에 그치게 하고 있다.
도 25는, 서비스 통지 정보의 설정 방법의 다른 예를 도시하는 도면이다. 도 25에 도시하는 예에서는, TCP 헤더의 Urgent(URG) 플래그 f2에 「0」이 설정되어 있는 패킷에 관해서는, 긴급 포인터(Urgent Pointer) p의 필드에 서비스 통지 정보를 설정하고 있다. 여기서는, 다른 필드의 설명에 대해서는, 도 24의 경우와 마찬가지로 생략한다.
TCP의 사양에서는, 긴급 포인터 p는, URG 플래그 f2에 「1」이 설정되어 있는 경우에만 유효라고 정의되어 있다. 이 때문에, 상기한 바와 같이, URG 플래그 f2에 0이 설정되어 있는 경우, 긴급 포인터 p는 무시되게 되고, 통상적인 TCP 통신에 영향을 미치는 일이 없다.
대역 조정 장치(1)를 구비하는 중계 장치(3)는, 다른 장치로부터 수신한 TCP 패킷에 대하여 대역 조정을 행한 경우에는, 도 24나 도 25에 예시하는 바와 같은 TCP 헤더의 소정의 필드의 서비스 통지 플래그(f1이나 f2)에, 대역 조정 처리 실시 완료인 것을 나타내는 값, 여기서는 「1」을 설정하고나서, TCP 패킷을 전송한다. 대역 조정 처리가 미 실시인 패킷에는 「0」이 설정되어 있으므로, 이 소정의 필드의 값을 참조하는 것에 의해, 각 대역 조정 장치(1)가, 대역 조정 처리의 필요 여부를 판단한다.
또한, 서비스 통지 플래그는, 경로 상에 설치된 복수의 대역 조정 장치(1) 중, 적어도 1대의 대역 조정 장치(1)에 의해 대역 조정이 이루어진 것을 나타낸다. 즉, 서비스 통지 플래그에 실시 완료인 것을 나타내는 「1」이 저장되어 있는 패킷에 대하여, 다시 다른 대역 조정 장치(1)에 있어서 대역 조정을 실시하고, 상기한 다중 사용으로 해도 된다. 대역 조정 장치(1)는, 서비스 통지 플래그의 값에 상관없이, 예를 들면 세션 테이블(13)의 빈 부분이 있는 경우에는, 대역 조정의 대상으로 해도 된다.
또한, 상기한 플래그의 값은, 일례이며, 대역 조정 실시 완료인 것을 나타내는 값이 「0」이며, 미 실시인 것을 나타내는 값이 「1」이거나 해도 된다.
이상 설명한 바와 같이, 상기한 서비스 통지를 행함으로써, 대역 조정 장치(1)를 다중 사용하는 경우에도, 서비스 통지 플래그 등의 서비스 통지 정보를 참조하여, 대역 조정 처리가 미 실시인 것을 나타내는 정보가 저장되어 있는 패킷에 대하여 우선적으로 대역 조정을 행한다. 결과로서, 통신 시스템에 설치된 복수의 대역 조정 장치(1)의 각각에 대역 조정 처리가 분산되게 되고, 보다 많은 세션에 대하여 대역 조정 처리를 실시하는 것이 가능하게 된다.
〔세션 관리〕
다음으로 도 10의 패킷 판별 처리의 설명에 있어서도 설명한 바와 같이, 실시 형태에 따른 대역 조정 장치(1)는, TCP 패킷이라고 판별한 패킷을 대역의 억제 및 촉진의 대상으로 한다. 대역 조정 장치(1)는, 「Per Flow Queuing」에 의해, 플로우 단위로 TCP 통신을 식별하고, TCP 세션마다 세션을 관리하여, 대역 조정 등의 처리를 행한다. 도 3을 참조하여 설명한 바와 같이, 대역 조정 장치(1)는, 세션 테이블(13)을 이용하여, TCP 세션을 관리한다. 이하에, 세션의 관리 방법에 대해서 구체적으로 설명한다.
도 26은, 도 3의 세션 관리부(22)에 의한 세션 관리 처리를 도시한 플로우차트이다. 세션 관리부(22)는, 접수한 패킷이 TCP 패킷이라고 판단한 패킷 판별부(21)로부터 패킷을 수취한 것을 계기로 하여, 도 26에 도시하는 처리를 개시한다.
우선, 스텝 S91에서, 세션 식별 코드를 계산한다. 세션 식별 코드는, TCP 패킷이 어느 쪽의 세션의 것인지를 식별하기 위한 정보이다. 세션 식별 코드의 구체적인 취득법에 대해서는, 후술한다.
스텝 S92에서, 스텝 S91에 있어서 구한 세션 식별 코드가, 세션 테이블(13)에 등록되어 있는지의 여부를 판정한다. 세션 식별 코드가 이미 세션 테이블(13)에 등록되어 있는 경우(스텝 S92에 있어서 "예"인 경우)에는, 대역 조정 장치(1)에 있어서 대역 측정·대역 조정을 행한 경우가 있는 세션이므로, 새로운 등록은 불필요하므로, 스텝 S100으로 진행한다. 스텝 S100에서는, 패킷을 수신 대역 측정부(23)에 전송하고, 처리를 종료한다.
스텝 S92의 판정에 있어서, 스텝 S91에서 구한 세션 식별 코드가 세션 테이블(13)에 미등록인 경우(스텝 S92에 있어서 "아니오"인 경우)에는, 세션 테이블(13)에의 등록이 필요하므로, 스텝 S93으로 진행하고, 세션 테이블(13)에 빈 부분이 있는지의 여부를 판정한다. 빈 부분이 있는 경우(스텝 S93에 있어서 "예"인 경우)에는, 스텝 S99로 진행하여, 세션 등록 처리를 실행한다. 구체적으로는, 세션 식별 코드나 세션에 따른 목표 대역, 기타 필요한 정보를 세션 테이블(13)에 등록하고, 스텝 S100으로 진행한다. 스텝 S100의 처리에 대해서는 상기한 바와 같다.
또한, 스텝 S99의 세션 등록 처리에 있어서, 세션 테이블(13)에 세션을 등록할 때에, 목표 대역의 초기값의 설정을 행한다. 초기값은, IP 어드레스나 TCP 포트 번호의 범위 등의 조건에 기초하여, 미리 정의되어 있는 복수의 값 중에서 소정의 초기값을 선택하는 구성으로 해도 된다.
세션 테이블(13)에 빈 부분이 없는 경우(스텝 S93에 있어서 "아니오"인 경우)에는, 스텝 S93으로부터 스텝 S94로 진행하고, 기존의 세션, 즉, 세션 테이블(13)에 등록되어 있는 세션이 유효한지의 여부를 판정한다. 유효하지 않은 세션이 포함되는 경우(스텝 S94에 있어서 "아니오"인 경우)에는, 스텝 S94로부터 스텝 S98로 진행하여, 세션 종료 처리를 실행하고, 스텝 S99로 진행한다. 구체적으로는, 패킷의 송신처인 단말기에 종료 통지를 송신함과 함께, 유효가 아닌 세션을 세션 테이블(13)로부터 삭제하여, 스텝 S99로 진행한다. 스텝 S99 이후의 처리에 대해서는, 상기한 바와 같다.
세션 테이블(13)에 등록되어 있는 세션이 모두 유효한 경우(스텝 S94에 있어서 "예"인 경우)에는, 스텝 S94로부터 스텝 S95로 진행한다. 그리고, 스텝 S95에서, 스텝 S91에 있어서 세션 식별 코드를 구한 패킷이 FIN 패킷 또는 RST 패킷인지의 여부를 판정한다. 스텝 S95에서는, TCP 헤더의 코드 비트를 참조하는 것에 의해 판정을 행한다.
스텝 S95의 판정에 있어서, 패킷이 FIN 패킷 또는 RST 패킷인 경우(스텝 S95에 있어서 "예"인 경우)에는, 스텝 S95로부터 스텝 S97로 진행하여, 세션 종료 처리를 실행한다. 구체적으로는, 패킷의 송신처인 단말기에 종료 통지를 송신함과 함께, 스텝 S91에서 구한 세션 식별 코드를 이용하여, 해당하는 세션을 취득하고, 세션 테이블(13)로부터, 해당하는 세션에 관계되는 정보를 삭제하고, 처리를 종료한다.
패킷이 FIN 패킷도 RST 패킷도 아닌 경우(스텝 S95에 있어서 "아니오"인 경우)에는, 스텝 S95로부터 스텝 S96으로 진행하여, 대역 측정·대역 조정은 행하지 않고 그대로 패킷을 중계하고, 처리를 종료한다.
또한, 스텝 S91에서 구한 세션 식별 코드는, 예를 들면, IP 어드레스 및 TCP 포트 번호의 쌍을 이용해서 산출한다. IP 어드레스 및 TCP 포트의 쌍의 길이는, Ipv4에서 10바이트, IPv6에서 34바이트이며, 여기서 4바이트 정도의 세션 식별 코드를 생성한다. 도 26의 플로우차트의 설명에 있어서도 설명한 바와 같이, 세션 테이블(13)의 검색은, 세션 식별 코드를 이용해서 행한다.
실시예에서는, 세션 테이블(13)의 검색을 효율적으로 행하기 위해서, 공지의 해시 테이블을 이용하고 있다. 이 경우, 세션 식별 코드는, 해시값이다.
구체적으로는, IP 어드레스와 TCP 포트 번호로부터 해시값을 구하고, 구한 값을 세션 식별 코드로 한다. 해시값으로서 적절한 세션 식별 코드를 생성하기 위해서, 예를 들면, 체크 섬, CRC(Cyclic Redundancy Check) 코드 등을 이용함으로써, 생성되는 코드의 값을 적당하게 변동시킬 수 있다.
혹은, IP 어드레스·TCP 포트 번호쌍의 정보를, 정수 가산하는 것에 의해 얻어지는 값을 세션 식별 코드로 해도 된다. 이러한 코드의 생성 방법이어도, 실용상은 충분히 코드값을 변동시킬 수 있고, 이 경우, 코드 생성 처리에 필요로 하는 시간은, 1기가헤르츠에서 동작하는 마이크로프로세서로 처리한 경우에는, 기계어 명령이 10명령 정도이고, 10나노초 정도이다.
이상 설명한 바와 같이, 본 실시 형태에 따른 세션 관리 방법에 따르면, 대역 조정 장치(1)는, 패킷을 수신할 때마다, 세션 식별 코드를 구하고, 구한 세션 식별 코드가 세션 테이블(13)에 등록되어 있는지의 여부의 판정을 행한다. 구한 세션 식별 코드가 세션 테이블(13)에 미등록인 경우에는, 새롭게 세션 테이블(13)에의 등록을 행하고, 이미 등록되어 있는 경우에는, 등록되어 있는 정보를 이용하여, 대역의 측정이나 대역 조정을 행한다. 이와 같이, 실시 형태에 따른 대역 조정 장치(1)는, TCP 세션이 계속중인 것을 인식할 수 있으면, 시퀀스 번호나 ACK 번호를 추적해서 대역의 측정· 조정 처리가 가능하여, TCP 통신의 상태 천이를 감시·추적할 필요가 없다. 따라서, 상기한 세션의 관리 방법을 채용함으로써, 대역 조정 장치(1)에 관한 부하를 경감할 수 있다.
〔세션의 감시·세션의 삭제〕
TCP 통신은, 통상은, FIN 패킷이나 RST 패킷에 의해 종료한다. 이것은, 도 26의 스텝 S95~스텝 S97와 같다. 그러나, 이 이외에도, 단말기(송신 단말기(2A)나 수신 단말기(4B))의 이상 종료나, 네트워크의 절단 등의 요인에 의해, 통신이 정상적으로 종료하지 않은 채 방치되는 경우가 있다. 통신이 정상적으로 종료하지 않고, 방치되어 있는 경우에도, 최종적으로는, 단말기의 타임아웃에 의해 종료하는 경우도 있다.
그래서, 도 26의 스텝 S94~스텝 S98의 처리와 같이, 새롭게 세션의 등록을 행하는 타이밍에서, 소정의 기간 이상에 걸쳐서 패킷이 도착해 있지 않은 세션에 대해서는, 세션 테이블(13)로부터 정보를 삭제한다. 혹은, 소정의 시간걸러 세션 테이블(13)을 조사하고, 등록되어 있는 세션 중에서, 소정의 기간 이상에 걸쳐 패킷이 도착해 있지 않은 것이 있는 경우에는 그 정보를 삭제한다.
이와 같이, 정상적으로 종료할 수 없었던 통신이 방치되어 있는 것을 인식하여, 세션 테이블(13)로부터 등록되어 있는 정보를 삭제함으로써, 세션 테이블(13)의 영역의 쓸데없는 사용을 배제하고, 보다 많은 세션에 대해서 대역 조정을 행하는 것이 가능하게 된다.
또한, 대역 조정 장치(1)는, 새롭게 세션의 등록을 행하는 타이밍이나 소정의 기간 이상에 걸쳐 감시를 한 결과, 패킷이 도착해 있지 않은 세션을 인식한 경우에는, 세션 테이블(13)로부터 정보의 삭제를 행함과 함께, 단말기에 대하여 통신을 종료하는 취지의 통지를 하고, 통신 종결 처리를 실행한다. 통신 종결 처리를 실행하기 위해서, 미리 TCP 세션의 감시 시간을 타이머로 설정해 둔다. 설정한 시간을 경과한 세션이 있으면, 그 세션에 관계되는 정보의 세션 테이블(13)로부터의 삭제 및 단말기에의 종료 통지를 행한다. 예를 들면, TCP 커맨드의 1개인 「RST」를 포함하는 RST 패킷을 단말기에 송신함으로써, 종료 통지를 행한다. RST 패킷을 수신한 단말기는, TCP 세션의 강제 종료를 실행한다.
이상과 같이, 통신 장해나 단말기에 있어서의 장해에 의해 TCP 세션이 회복 불능이 된 경우에는, 서버나 클라이언트의 단말기는, 대역 조정 장치(1)로부터 수신한 종료 통지에 따라서, 회복 불능이 된 TCP 세션을 강제 종료시킨다. 웹 서버를 예로 들면, 10만 세션을 관리할 필요가 있다. 이 때문에, 장해로부터의 회복이 불능이 된 세션에 대해서는 강제 종료시킴으로써, 대량의 액세스를 보유하는 서버에 걸리는 처리 부하를 크게 경감시키는 것이 가능하게 된다.
〔서비스 통지를 행하는 경우의 세션 관리〕
서비스 통지 정보를 이용하여, 복수의 대역 조정 장치(1) 사이에서 대역 조정 처리를 분산시키는 것에 대해서는 앞서 설명한 바와 같다. 여기서는, 세션을 관리할 때에 서비스 통지 정보를 이용하는 방법에 대해서 설명한다.
도 27은, 서비스 통지 정보를 이용한 세션 관리 처리를 도시한 플로우차트이다. 여기서는, 서비스 통지 정보로서, 도 24나 도 25에 도시하는 서비스 통지 플래그를 이용하는 경우를 나타낸다.
도 27에 도시하는 일련의 처리 중, 스텝 S91~스텝 S100의 처리에 대해서는, 각각 도 26의 스텝 S91~스텝 S100과 마찬가지이기 때문에, 여기서는 설명을 생략하고, 도 26과 상이한 처리에 대해서 설명한다.
스텝 S90에서, 패킷 판별부(21)로부터 수취한 패킷의 TCP 헤더를 참조하여, 서비스 통지 플래그에 대역 조정이 미 실시인 것을 나타내는 값이 저장되어 있는 경우에, 스텝 S91로 진행하고, 상술한 스텝 S91 이후의 세션 관리 처리를 실행한다. 서비스 통지 플래그에 대역 조정 처리 완료인 것을 나타내는 값이 저장되어 있는 경우에는, 세션 관리부(22)에 있어서의 세션 관리 대상 외의 패킷이라고 해서, 특별히 처리를 행하지 않고, 처리를 종료한다.
스텝 S100에서, 패킷을 수신 대역 측정부(23)에 전송하고, 세션의 관리에 관해서 실행해야 할 처리가 완료하면, 스텝 S101에서, 서비스 통지 플래그에, 대역 조정 처리 완료인 것을 나타내는 값을 설정하고, 처리를 종료한다.
도 28은, 서비스 통지 플래그 처리를 도시한 플로우차트이다. 도 28은, 도 27의 세션 관리 처리 중, 스텝 S90의 서비스 통지 플래그 체크 처리의 상세 플로우이다.
우선, 스텝 S111에서, TCP 헤더의 서비스 통지 플래그가 온, 즉, 서비스 통지 플래그에 대역 조정 처리가 실시 완료인 것을 나타내는 값이 저장되어 있는지의 여부를 판정한다. 서비스 통지 플래그가 오프, 즉, 서비스 통지 플래그에는 대역 조정 처리가 미 실시인 것을 나타내는 값이 저장되어 있는 경우(스텝 S111에 있어서 "아니오"인 경우)에는, 도 27의 스텝 S91 이후의 세션 관리 처리로 진행한다.
한편, 서비스 통지 플래그가 온인 경우(스텝 S111에 있어서 "예"인 경우)에는, 스텝 S112로 진행하여, 세션 테이블(13)에 빈 부분이 있는지의 여부를 다시 판정한다. 세션 테이블(13)에 빈 부분이 있는 경우(스텝 S112에 있어서 "예"인 경우)에는, 도 27의 스텝 S91 이후의 세션 관리 처리로 진행한다.
세션 테이블(13)에 빈 부분이 없는 경우(스텝 S112에 있어서 "아니오"인 경우)에는, 스텝 S113으로 진행하여, 대역 측정·대역 조정은 행하지 않고 그대로 패킷을 중계하고, 처리를 종료한다.
또한, 스텝 S112의 세션 테이블(13)의 빈 부분의 유무를 판정하는 처리에 대해서는, 이미 대역 조정 처리가 이루어진 패킷이어도(스텝 S111에서 "예"인 경우에도), 세션 테이블(13)에 빈 부분이 있으면, 대역 조정의 실시가 가능하다고 판단하고, 도 27의 스텝 S91 이후의 세션 관리 처리를 실행하기 위해서이다.
또한, 스텝 S112에서는, 세션 테이블(13)에 새롭게 1세션 분의 정보를 등록할 만한 빈 부분이 있는지의 여부를 판정하고 있지만, 이것에 한정되는 것은 아니다. 예를 들면, 소정의 비율이나 임계값을 설정해 두고, 세션 테이블(13)의 빈 부분이 소정의 비율이나 임계값을 하회하는지의 여부를 판정하는 구성으로 해도 된다.
이와 같이, 서비스 통지 플래그를 참조하여, 미리 처리 대상의 패킷이라고 판단한 경우에 스텝 S91 이후의 세션 관리 처리를 실행한다. 다시 말해서, 대역 조정 장치(1)에 있어서는 비 처리 대상의 패킷에 대해서는 스텝 S91 이후의 세션 관리 처리를 불필요하다고 판단하고, 처리를 행하지 않는다. 이에 의해, 대역 조정 장치(1)에 관한 부하를 경감하는 효과가 얻어진다.
〔활성 삽입·활성 제거〕
다음으로 도 26 등의 설명에 있어서도 설명한 바와 같이, 대역 조정 장치(1)는, TCP 패킷을 수신한 것을 계기로 하여, 세션 테이블(13)에 정보를 등록하고, 대역의 측정·대역 조정을 개시한다. 즉, 대역 조정 장치(1)는, 대역 조정을 위해서 TCP 통신의 「SYN」로부터 「FIN/RST」까지의 상태 천이를 감시하는 것이 불필요하다.
이 때문에, 어떤 세션의 한가운데에 대역 조정 장치(1)를 구비하는 중계 장치(3)를 네트워크에 삽입한 경우에도, 수신한 TCP 패킷으로부터 대역 조정을 행하는 것이 가능하게 된다. 또한, 중계 장치(3)가 통신을 중계중에 대역 조정 장치(1)를 구비하는 중계 장치(3)를 네트워크로부터 제거한 경우나 중계 장치(3)가 장해 등에 의해 정지한 경우에도, 상기 버퍼링 처리를 행하고 있기 때문에 TCP 통신에 악영향을 미치지 않고 완료한다.
여기서는, 세션의 한가운데에 대역 조정 장치(1)를 통신 시스템에 설치하는 것을 「활성 삽입」, 세션의 한가운데에 대역 조정 장치(1)를 통신 시스템으로부터 제거하는 것을 「활성 제거」라고 한다.
본 실시 형태에 따른 대역 조정 장치(1)가 활성 삽입 및 활성 제거 가능한 것에 의해, 통신 시스템을 운용하는 관점으로부터도, 효과를 갖는다.
〔세션 테이블〕
상기한 TCP 세션 관리 방법에 있어서도 설명한 바와 같이, 대역 조정 장치(1)는, 수신한 패킷에 대해서 대역 조정을 행함에 있어서, 세션 테이블(13)에 세션에 관계되는 정보를 등록한다. 여기서는, 도 29 및 도 30을 참조하여, 세션 테이블(13)의 데이터 구조 등에 대해서 설명한다.
도 29는, 세션 테이블(13)의 구조예를 도시하는 도면이다. 도 29에 도시하는 세션 테이블(13)은, 송신 단말기(2A)로부터 수신 단말기(4B)의 방향 및 역방향의 쌍방향의 세션 정보를 저장한 해시 테이블(일차원 배열)이고, 인덱스와 대응지어 세션 테이블 데이터를 저장한다.
실시예에서는, 해시 키 코드를 테이블의 크기로 잉여를 취한 값을 해시 테이블의 인덱스로 함으로써, 세션 정보의 식별을 가능하게 하고 있다. 이러한 인덱스의 취득법에 대해서는, 공지의 기술을 이용하고 있다. 해시 키 코드는, 상술한 바와 같이, IP 어드레스 및 TCP 포트 번호의 쌍으로부터 구한다.
도 30은, 세션 테이블 데이터의 구조예를 도시하는 도면이다. 해시 테이블의 인덱스와 대응지어지는 세션 테이블 데이터는, 세션마다 설치되고, 관리 정보 D1, 반대 방향의 세션 정보의 장소를 지시하는 데이터 D2, 패킷의 송신원 및 송신처의 IP 어드레스나 TCP 포트 번호에 관계되는 데이터 D3, 시각 데이터 D4(D4-1과 D4-2), 단위 시간 D5, 측정 대역 데이터 D6, 목표 대역 데이터 D7, 중계 대역 데이터 D8, 시퀀스 번호에 관계되는 데이터 D9, ACK 번호에 관계되는 데이터 D10 및 패킷의 버퍼 데이터 D11을 포함한다.
관리 정보 D1은, 대역 조정 장치(1)의 세션 관리부(22)가 세션 테이블(13)의 관리에 이용하는 정보이다.
반대 방향의 세션 정보의 장소를 지시하는 데이터 D2는, 도 30에 도시하는 세션 정보와 쌍을 이루는 세션 정보의 세션 테이블(13) 상의 장소, 즉 도 29의 「인덱스」를 저장한다. 대역 조정 장치(1)의 세션 관리부(22) 등의 각 부는, 데이터 D2를 이용하고, 세션 테이블(13) 상의 반대 방향의 세션 정보에 액세스한다. 데이터 D2는, 반대 방향의 트래픽을 중계하지 않는 경우에는 무효하다.
패킷의 송신원 및 송신처의 IP 어드레스나 TCP 포트 번호에 관계되는 데이터 D3은, 해시 키 코드(세션 식별 코드), 송신 IP 어드레스, 수신 IP 어드레스, 송신 포트 번호 및 수신 포트 번호를 포함한다.
또한, 데이터 D3에는, 송신원 및 송신처의 IP 어드레스나 TCP 포트 번호가 저장되어 있고, 실시예에서는, IP 어드레스 및 TCP 포트 번호의 쌍을 이용하여, 해시 키 코드인 세션 식별 코드를 구하고 있다. 이 때문에, 반대 방향의 세션 정보의 장소를 지시하는 데이터 D2에 대해서는, 데이터 D3을 이용하여, IP 어드레스와 TCP 포트 번호의 송신/수신을 교체해서 산출하는 것도 가능하다. 단, 데이터 D2의 영역에 미리 구한 값을 저장해 둠으로써, 해시 코드 생성에 필요로 하는 시간을 절약할 수 있다.
시각 데이터 D4는, 세션 개시 시각, 데이터 패킷 중계 시각 및 ACK 패킷 중계 시각 등의, 대역 조정에 관계되는 각종 시각 정보를 포함한다. 예를 들면, 마이크로초 단위의 시각 수치나, Jiffy 등의 오퍼레이팅 시스템의 최소 타이머 인터럽트로 계시하는 시각값 등의 일반적인 시각값을 사용한다. 예를 들면, 현재 시각과 세션 개시 시각의 차로부터 세션 계속 시간이 얻어지고, 얻어진 세션 계속 시간을 이용하여, 상기 세션의 삭제 처리 등을 행한다.
단위 시간 D5는, 대역 조정 장치(1)를 구비하는 네트워크 기기(상기한 예에서는 중계 장치(3))나 단말기 등에 있어서의 내부 시각의 단위 시간의 길이를 나타내는 수치이다. 단위 시간은, 세션마다 상이한 경우가 있어서, 실시예에서는, 세션마다 설정하고 있다.
측정 대역 데이터 D6은, 수신 대역 측정부(23)에 있어서 측정한 대역을 저장하고, 각각 단위 시간당의 측정 데이터량, 최대 측정 데이터량, 최소 측정 데이터량, ACK량, 최대 ACK량 및 최소 ACK량을 포함한다. 단위 시간당의 측정 데이터량 및 ACK량은, 단위 시간 D5의 기간 내에 수신 대역 측정부(23)이 계측한 트래픽량이며, 각각의 최대값 및 최소값에는, 과거의 최대값 및 최소값을 기록한다.
목표 대역 데이터 D7에는, 단위 시간에 중계해야 할 데이터 패킷이나 ACK 패킷의 증가분의 총량을 나타내는 정보, 즉, 목표 대역이 저장된다. 목표 대역 데이터 D7의 각 항목의 값은, 세션 관리부(22)가, 새롭게 세션 테이블(13)에 정보를 등록할 때에, 소정의 초기값을 저장하고, 예를 들면 반대 방향의 통신 대역의 측정 결과 등에 따라서 값을 변경한다. 대역의 측정 방법에 있어서 설명한 바와 같이, 단위 시간당의 전송 가능 데이터량은, 데이터량의 적산이다. 이것에 대하여, 단위 시간당의 전송 가능ACK량은, ACK 패킷 길이의 증가분이 아니라, ACK의 증가분이다.
중계 대역 데이터 D8은, 대역 조정부(24)의 대역 조정에 의해 중계되는 패킷의 대역을 저장하고, 단위 시간당의 중계 데이터량, 최대 중계 데이터량, 최소 중계 데이터량, 중계 ACK량, 최대 중계 ACK량 및 최소 중계 ACK량을 포함한다. 데이터량 및 ACK량은, 측정 대역이나 목표 대역과 마찬가지로, 각각 데이터량의 적산 및 ACK의 증가분으로 이루어진다. 또한, ACK가 증가하지 않는 경우에는, 중계 ACK량은 「0」이 된다. 또한, ACK 패킷의 순서가 교체되는 것에 의해, ACK량이 감소하는 경우에는, 해당하는 ACK 패킷에 대해서는 무시하고 ACK량을 계측한다.
시퀀스 번호에 관계되는 데이터 D9는, 버퍼부(14)에 버퍼링하고 있는 데이터 패킷의 시퀀스 번호를 저장하고, 도 30에 도시하는 예에서는, 버퍼링하고 있는 데이터 패킷의 시퀀스 번호 중, 최대 시퀀스 번호와 최소 시퀀스 번호를 저장한다. 데이터 D9에 의해, 버퍼부(14)에 버퍼링하고 있는 패킷의 해석을 불필요로 하여, 대역 조정 장치(1)의 처리가 경감된다.
ACK 번호에 관계되는 데이터 D10은, 버퍼부(14)에 버퍼링하고 있는 ACK 패킷의 ACK 번호를 저장하고, 도 30에 도시하는 예에서는, 버퍼링하고 있는 ACK 패킷의 ACK 번호 중, 최대 ACK 번호를 저장한다.
버퍼 데이터 D11은, 데이터 패킷이나 1개의 ACK 패킷을 큐에 저장하고 있다.
도 30에 도시하는 바와 같이, 세션 테이블 데이터는, 한 방향의 통신에 대해서 128바이트이므로, 2방향에 대해서는, 256바이트가 된다. 메모리가 1메가바이트 하면, 4096 세션을 등록 가능하다. 현재의 기술 수준에서는, 10만 세션에는 25메카바이트, 100만 세션에는 256메카바이트 있으면, 세션 테이블(13)을 용이하게 실현할 수 있다.
〔목표 대역의 설정〕
대역 조정 처리에 있어서 사용하는 목표 대역은, 도 30에 도시하는 바와 같이, 세션 테이블(13)에 저장된다. 목표 대역의 초기값은, 예를 들면, IP 어드레스나 포트 번호의 값의 범위에 따라서, 미리 정의되어 있는 값 중에서 선택시키는 구성으로 할 수 있다. IP 어드레스나 포트 번호에 의해 목표 대역을 결정함으로써, 통신마다에 따른 목표 대역을 설정 가능하게 된다. 이러한 처리는, 예를 들면 세션 관리부(22) 등이 실행한다.
대역 조정 장치(1)가, TCP 패킷의 수신을 인식하고, 대역 조정 처리를 개시하면, 그 후, 목표 대역을 동적으로 변경하는 것도 가능하다. 변경의 타이밍으로서는, 예를 들면, 어떠한 패킷 처리에서 세션 테이블(13)을 참조했을 때, 도 12에 도시하는 정기적인 인터럽트 처리를 행했을 때, 대역 조정 장치(1)의 관리자가 의도적으로 변경할 때 등이 있다. 어떠한 경우에 있어서도, 그 시점의 세션 테이블 데이터(도 30)를 참조하여, 데이터 D7의 단위 시간 전송 가능 데이터량이나 단위 시간 전송 가능 ACK량을 적절히 설정한다. 이러한 처리는, 예를 들면 수신 대역 측정부(23) 등이 실행한다.
동적으로 목표 대역을 설정함으로써, 실제의 통신에 따른 보다 적절한 목표 대역을 이용해서 대역 조정하는 것이 가능하게 된다.
이상 설명한 바와 같이, 본 실시 형태에 따른 대역 조정 장치(1)에 따르면, 대역 조정 장치(1)를 통과하는 패킷을 감시하여, 통신에 필요한 대역을 나타내는 목표 대역과, 측정한 실제의 대역을 비교하고, 비교에 따라서, 대역의 억제나 촉진을 행한다. 측정 대역이 목표 대역을 상회하는 경우에는, 패킷의 송신 타이밍을 제어해서 일정한 간격, 즉, 목표 대역에서 패킷이 송신되도록, 대역을 「억제」한다. 한편, 측정 대역이 목표 대역을 하회하는 경우에는, 미리 버퍼링해 둔 패킷을 송신 단말기(2A)나 수신 단말기(4B)에 대리로 재송함으로써, 대역을 「촉진」한다. 대역의 억제에 의해, 통신 성능이 소정의 범위 내로 억제되므로, 버스트 트래픽 등의 발생을 효과적으로 억제하게 되고, 단말기간에서의 통신 성능의 변동을 억제한다. 이에 의해, 종래는 1Mbps 정도이었던 통신 성능을, 수Mbps 정도까지 개선할 수 있다. 또한, 대역의 촉진에 의해, 단말기에 의한 패킷 송신이 재촉됨으로써, 패킷 재송 및 재송에 수반하는 트래픽의 증가를 효과적으로 억제한다. 이와 같이, 실제의 대역을 목표 대역에 근접하도록 대역의 억제 또는 촉진을 행함으로써, 대역 조정 장치(1)를 경유하는 통신에 대해서는, 세션 단위로 통신 성능을 소정의 범위로 억제함과 함께, 패킷의 재송을 효과적으로 억제할 수 있기 때문에, 통신의 안정화에 효과를 발휘한다.
인터넷 등의 IP 네트워크는, 「신뢰성이 없는 통신」을 제공하는 네트워크 기반이지만, 이 네트워크 하에서, TCP와 같은 「신뢰성이 있는 통신」을 제공하는 통신에 대하여 상기 대역 조정을 행한다. 종래에 있어서는, 단말기마다 네트워크 속도가 크게 상이한 경우에는, 단말기간에 제공되는 통신 품질에 불균형이 생겨 있었다. 예를 들면, 서비스를 제공하는 서버는 고속인 네트워크에 접속되어 있는 것에 대해, 유저측 단말기는 비교적 저속인 액세스 네트워크에 접속되어 있는 것이 일반적이다. 이러한 불균형한 환경에 있어서, 상기한 대역의 촉진 및 억제를 행함으로써, 「신뢰성이 있는 통신」을 행하는 단말기간의 통신을 개선한다.
또한, 본 실시 형태에 따른 대역 조정 장치(1)에 따르면, 2방향의 통신 중 1방향의 패킷만을 감시해서 다른 방향의 대역 조정에 이용하는 것도 가능하므로, 대향하는 장치를 설치할 필요가 없다. 또한, 경로 상의 임의의 장소에 설치해도 되기 때문에, 네트워크 설계 코스트를 삭감시키는 것이 가능하다. 또한, 경로 상에 복수의 대역 조정 장치(1)를 설치해도, 각 장치가, 자기 장치 내를 흐르는 패킷을 감시해서 대역 조정을 행하기 때문에, 장치간에서 서로 간섭하는 일도 없다. 오히려, 복수의 대역 조정 장치(1)의 각각에서 대역 조정을 행함으로써, 경로 상의 복수 개소에서 대역 조정이 이루어져, TCP 통신을 더욱 안정화시킬 수 있다.
또한 TCP/IP 패킷에 대하여 통신에 영향을 주는 변경을 가하는 것은 아니고, IP층의 「신뢰성이 없는 통신」에서 허용된 패킷 조작만을 이용하고, 또한, 적어도 TCP 통신의 1방향만의 중계 등에서 대역 조정 처리를 실시하는 것이 가능하다. 이러한 대역 조정 처리는, 비교적 단순한 소프트웨어에 의해서도 실현할 수 있고, 이에 의해, 라우터, 브릿지, 네트워크 어플라이언스 기기, 단말기 등의 통신 기능을 갖춘 네트워크 접속 기기이면, 대역 조정 장치(1)를 내장하는 것이 가능하게 된다.
또한, 실시예에서는, 대역 조정 장치(1)를 중계 장치(3)에 내장하는 경우를 예로 설명하고 있기 때문에, 패킷을 어떻게 「중계」해서 대역 조정을 행할지에 대해서 기재하고 있다. 대역 조정 장치(1)를 단말기에 내장하는 경우에는, 대역 조정 장치(1)는, 자기 장치가 송출하는 패킷이나 자기 장치가 수신하는 패킷을, 대역 측정·대역 조정 등의 대상으로 하고, 상기한 방법으로 패킷을 「송신」함으로써, 실현할 수 있다. 세션의 감시·삭제 처리에 대해서는, 단말기가 자기 장치 내의 대역 조정 장치로부터 TCP층에 종료 통지를 함으로써, 회복 불능인 세션을 종료시키고 있다.
또한, 대역 조정 장치(1)에 의한 대역 조정 처리에서는, 대역 조정 장치(1)를 중계 장치(3)에 설치한 경우에도, 종래의 TCP 기술과 같이, 중계 TCP를 종단하지 않다. 또한, 대역 조정 처리는, 기존의 TCP/IP 처리 기능에 의존하지 않고 있다. 대역 조정 장치(1)는, 수신한 TCP/IP 패킷의 제어 정보를 참조함으로써, 대역 조정 처리를 행할 수 있어, 복잡한 처리를 불필요로 한다. 이 때문에, 중계 장치(3)에 대역 조정 장치(1)를 내장하는 경우에도, 해당 중계 장치(3)에 고속인 TCP Splicing을 실장시키는 것이 용이해진다. 따라서, 처리 성능의 스케일러빌리티를 향상시키는 효과가 있다. 또한, 처리 성능의 스케일러빌리티의 향상에 의해, 많은 트래픽이 집약되는 기간 네트워크에 있어서도, 세션마다 관리해서 대역 조정을 행하는 것이 가능하게 된다.
그리고, 대역 조정 장치(1)는, 수신한 패킷이 TCP 패킷인지의 여부에 기초하여, 세션을 인식하고, 세션 단위로 대역 조정을 행하므로, TCP 헤더를 참조하여, TCP 통신의 상태를 판단할 필요가 없다. 이에 의해, 송신 단말기(2A)와 수신 단말기(4B) 사이에서 통신이 계속되고 있을 때라도, 통신을 절단시키지 않고, 대역 조정 장치(1)를 통신 시스템에 추가로 설치하는 것, 통신 시스템으로부터 제거하는 것이 가능하게 된다. 따라서, 대역 조정 장치(1)의 추가나 제거에 의해 네트워크의 신뢰성을 저하시키지 않고, TCP 통신의 안정화를 실현하는 것이 가능하게 된다.
또한, 상기에 있어서는, 송신 단말기(2A)-수신 단말기(4B)간의 통신에는, TCP를 이용하는 경우의 대역 조정을 실시하는 방법을 예로 설명하고 있지만, 이것에는 한하지 않는다. 예를 들면 SCTP(Stream Control Transmission Protocol)나 XTP(Xpress Transport Protocol) 등을 이용해서 통신을 행하는 경우에 대해서도 마찬가지로, 상기의 대역 조정 방법을 적용하는 것이 가능하다.

Claims (19)

  1. 송신 장치 및 수신 장치가 네트워크를 통하여 통신을 행할 때에, 통신의 대역을 제어하는 통신 장치로서,
    상기 송신 장치로부터 상기 수신 장치 및 상기 수신 장치로부터 송신 장치의 2방향의 통신 중, 적어도 1방향의 통신에 대해서 대역을 측정하는 측정부와,
    통신에 필요한 대역을 나타내는 목표 대역을 포함하는 대역 조정에 관계되는 정보를 기억하는 기억부와,
    상기 기억부로부터 상기 대역을 측정한 방향의 목표 대역을 읽어내고, 상기 측정부에 있어서 측정한 대역과 그 읽어낸 목표 대역의 비교에 기초하여 패킷의 송출 간격을 조정함으로써, 대역의 억제 또는 촉진을 행하는 조정부
    를 구비하는 것을 특징으로 하는 통신 장치.
  2. 제1항에 있어서,
    상기 조정부는, 상기 송신 장치 및 수신 장치 사이에서 송수신되는 패킷에는 변경을 가하지 않고, 패킷의 파기, 패킷의 중계 또는 송신, 복수의 복사 패킷의 중계 또는 송신, 및 패킷의 송출 간격의 제어를 행하는 패킷 처리를 행함으로써, 대역을 조정하는 것을 특징으로 하는 통신 장치.
  3. 제1항에 있어서,
    상기 측정부는, 상기 송신 장치로부터 제1 패킷을 수신한 상기 수신 장치가 그 송신 장치 앞에 반송하는 제2 패킷을 관측하여, 그 제2 패킷의 송신 방향의 통신에 관한 대역을 측정하고,
    상기 조정부는, 상기 제2 패킷의 송출 간격을 제어하여, 그 제2 패킷의 송출 간격을 비우거나 또는 채움으로써, 대역의 억제 또는 촉진을 행하는 것을 특징으로 하는 통신 장치.
  4. 제3항에 있어서,
    상기 측정부는, 상기 제2 패킷에 포함되는, 상기 송신 장치가 다음에 송신해야 할 상기 제1 패킷을 나타내는 정보에 기초하여, 그 제2 패킷의 송신 방향의 대역을 측정하고,
    상기 조정부는, 상기 송신 장치가 다음에 송신해야 할 상기 제1 패킷을 나타내는 정보의 증가분이 상기 목표 대역에 근접하도록 상기 제2 패킷의 송출 간격을 제어하여, 상기 대역의 억제 또는 촉진을 행하는 것을 특징으로 하는 통신 장치.
  5. 제1항에 있어서,
    상기 송신 장치가 송신하는 제1 패킷 및 상기 수신 장치가 그 제1 패킷에 대하여 반송하는 제2 패킷을, 그 제1 및 제2 패킷에 포함되는 패킷의 순서를 나타내는 정보에 따라서 저장하는 패킷 저장부
    를 더 구비하고,
    상기 조정부는,
    상기 네트워크를 거쳐서 패킷을 수신하면, 그 수신한 패킷 및 상기 패킷 저장부에 저장하고 있는 패킷의 상기 패킷의 순서를 나타내는 정보를 비교하고,
    상기 패킷의 순서를 나타내는 정보가 서로 일치하는 경우에는, 상기 패킷 저장부에 저장하고 있는 패킷 또는 상기 수신한 패킷 중 어느 한쪽을 파기하고, 다른 쪽의 패킷에 대해서는 그 패킷 저장부에 보존시키는
    것을 특징으로 하는 통신 장치.
  6. 제5항에 있어서,
    상기 조정부는, 상기 제 1 또는 제2 패킷의 송신 방향의 대역이, 그 통신 방향의 상기 목표 대역을 하회하는 경우에는, 상기 패킷 저장부에 저장한 패킷을 복사하고, 그 복사 패킷을, 그 목표 대역에 따른 송출 간격으로 적어도 1회 송출하는 것을 특징으로 하는 통신 장치.
  7. 제6항에 있어서,
    상기 조정부는, 소정의 기간 이상에 걸쳐서 상기 제2 패킷을 인식하지 않는 경우에는, 제1 패킷의 순서를 나타내는 번호가, 제2 패킷의 순서를 나타내는 번호 중 최대의 번호와 대응하는 제1 패킷을 상기 패킷 저장부로부터 취득하고, 그 취득한 제1 패킷의 복사 패킷을, 상기 수신 장치를 향해서 송출시키는 것을 특징으로 하는 통신 장치.
  8. 제6항에 있어서,
    상기 조정부는, 소정의 기간 이상에 걸쳐서 상기 제1 패킷을 인식하지 않는 경우에는, 제2 패킷의 순서를 나타내는 번호가 최대의 번호를 취하는 제2 패킷을 상기 패킷 저장부로부터 취득하고, 그 취득한 제2 패킷의 복사 패킷을, 상기 송신 장치를 향해서 송출시키는 것을 특징으로 하는 통신 장치.
  9. 제6항에 있어서,
    상기 조정부는, 상기 패킷의 순서를 나타내는 번호가 동일한 제2 패킷에 관한 복사 패킷을, 소정의 횟수 이상 연속해서 송출하여, 상기 송신 장치에 있어서의 송신 대역을 향상시키는 것을 특징으로 하는 통신 장치.
  10. 제1항에 있어서,
    상기 측정부 및 조정부는, 상기 송신 장치 및 수신 장치 간의 2방향의 통신 중, 한쪽의 통신에 관한 대역 측정 및 대역 조정을 각각 행하는 제1 측정부 및 제1 조정부, 및 다른 쪽의 통신에 관한 대역 측정 및 대역 조정을 각각 행하는 제2 측정부 및 제2 조정부를 갖고,
    상기 2방향 중 패킷을 인식하고 있는 통신 방향의 측정부 및 조정부를 동작시켜, 그 인식하고 있는 통신 방향에 대해서 대역 조정을 행하는 것을 특징으로 하는 통신 장치.
  11. 제5항에 있어서,
    상기 조정부는, 상기 수신 장치로부터 수신한 제2 패킷 중, 상기 송신 장치에 있어서 파기되는 패킷에 대해서는, 그 송신 장치에 송출시키지 않고, 자기 장치에 있어서 파기하는 것을 특징으로 하는 통신 장치.
  12. 제1항에 있어서,
    상기 송신 장치 또는 수신 장치로부터 패킷을 수신한 것을 계기로 해서 상기 기억부에 정보의 등록을 행하고, 그 송신 장치와 수신 장치 사이의 세션의 관리를 개시하는 관리부
    를 더 구비하고,
    상기 기억부는, 상기 송신 장치와 상기 수신 장치 사이의 세션을 식별하는 정보와 대응지어, 그 세션에 관한 대역 조정에 관계되는 정보를 기억하는 것을 특징으로 하는 통신 장치.
  13. 제12항에 있어서,
    상기 세션 관리부는, 상기 패킷에 포함되는, 통신의 상태 천이를 나타내는 정보를 참조하여, 그 상태 천이를 나타내는 정보에 그 송신 장치 및 수신 장치 사이의 세션을 종료한다는 취지의 값이 저장되어 있는 경우에는, 그 세션을 식별하는 정보 및 이것과 대응지어진 대역 조정에 관계되는 정보를 상기 기억부로부터 삭제함과 함께, 그 패킷의 송신처인 상기 송신 장치 또는 수신 장치에 대하여, 통신의 종료를 통지하는 통지 패킷을 생성하여, 송출하는 것을 특징으로 하는 통신 장치.
  14. 제1항에 있어서,
    상기 세션 관리부는, 관리중인 세션에 관한 패킷을 소정의 기간에 걸쳐서 인식하지 않는 경우에는, 그 세션을 식별하는 정보 및 이것과 대응지어진 대역 조정에 관계되는 정보를 상기 기억부로부터 삭제함과 함께, 상기 송신 장치 및 수신 장치에 대하여, 통신의 종료를 통지하는 패킷을 생성하여, 송출하는 것을 특징으로 하는 통신 장치.
  15. 제1항에 있어서,
    상기 조정부는, 대역 조정을 행한 상기 패킷에, 대역 조정 처리가 실시 완료인 것을 나타내는 정보를 설정하고, 수신한 패킷에 그 정보가 설정되어 있는지의 여부에 기초하여, 그 수신한 패킷이 대역 조정의 대상인지의 여부를 판정하는 것을 특징으로 하는 통신 장치.
  16. 제15항에 있어서,
    상기 조정부는, 상기 패킷의 TCP(Transmission Control Protocol) 헤더의 URGENT 비트에는 0을 설정하고, URGENT 포인터 필드에는, 대역 조정 처리가 실시 완료인 것을 나타내는 정보를 설정하고, 그 패킷의 체크섬 필드에는, 그 설정한 정보의 값을 포함시키는 값을 설정하는 것을 특징으로 하는 통신 장치.
  17. 제1항에 있어서,
    상기 측정부는, 상기 측정한 대역과 상기 목표 대역을 비교하여, 그 측정한 대역이 그 목표 대역을 상회하는 경우에는, 미리 설정되어 있는 목표 대역의 허용 범위 내에서 목표 대역을 늘리고, 그 측정한 대역이 그 목표 대역을 하회하는 경우에는, 그 허용 범위 내에서 목표 대역을 줄여, 그 변경한 목표 대역을 상기 기억부에 기억시키는 것을 특징으로 하는 통신 장치.
  18. 제12항에 있어서,
    상기 관리부는, 관리하는 세션에 관한 목표 대역을, 패킷의 네트워크 어드레스의 범위, 통신 프로토콜의 종류, 통신의 계속 시간, 시간대, 측정 대역 혹은 송출한 데이터량에 따라서 변경하고, 그 변경한 목표 대역을 상기 기억부에 기억시키는 것을 특징으로 하는 통신 장치.
  19. 송신 장치 및 수신 장치가 네트워크를 통해 통신을 행할 때에, 통신의 대역을 제어하는 통신 방법으로서,
    상기 송신 장치로부터 상기 수신 장치, 및 상기 수신 장치로부터 송신 장치의 2방향의 통신 중, 적어도 1방향의 통신에 대해서 대역을 측정하고,
    통신에 필요한 대역을 나타내는 목표 대역을 포함하는 대역 조정에 관계되는 정보를 기억하는 기억부로부터 상기 대역을 측정한 방향의 목표 대역을 읽어내고, 상기 측정한 대역과 그 읽어낸 목표 대역의 비교에 기초하여 패킷의 송출 간격을 조정함으로써, 대역의 억제 또는 촉진을 행하는 것을 특징으로 하는 통신 방법.
KR1020127002778A 2010-05-31 2010-05-31 통신 장치 및 통신 방법 KR101746629B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/059221 WO2011151884A1 (ja) 2010-05-31 2010-05-31 通信装置及び通信方法

Publications (2)

Publication Number Publication Date
KR20130082070A true KR20130082070A (ko) 2013-07-18
KR101746629B1 KR101746629B1 (ko) 2017-06-13

Family

ID=45066283

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127002778A KR101746629B1 (ko) 2010-05-31 2010-05-31 통신 장치 및 통신 방법

Country Status (12)

Country Link
US (1) US8761010B2 (ko)
EP (1) EP2579516B1 (ko)
JP (1) JP5059976B2 (ko)
KR (1) KR101746629B1 (ko)
CN (1) CN102474463B (ko)
BR (1) BR112012030524A2 (ko)
CA (1) CA2800669C (ko)
HK (1) HK1171134A1 (ko)
IL (1) IL223255A (ko)
SG (1) SG185769A1 (ko)
TW (1) TWI530123B (ko)
WO (1) WO2011151884A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010146665A1 (ja) * 2009-06-16 2010-12-23 富士通オプティカルコンポーネンツ株式会社 光通信装置及び光通信装置の節電制御方法
JP5501052B2 (ja) * 2010-03-24 2014-05-21 キヤノン株式会社 通信装置、通信装置の制御方法、プログラム
JP5937806B2 (ja) * 2011-11-10 2016-06-22 株式会社Nttドコモ 移動通信方法、ポリシー及び課金ルールサーバ装置及び移動管理ノード
US9648133B2 (en) * 2012-03-12 2017-05-09 Telefonaktiebolaget L M Ericsson Optimizing traffic load in a communications network
JP5739373B2 (ja) * 2012-05-01 2015-06-24 日本電信電話株式会社 可用帯域測定装置及び方法及びプログラム
US9413672B2 (en) * 2012-06-06 2016-08-09 Apple Inc. Flow control for network packets from applications in electronic devices
JP5935571B2 (ja) * 2012-07-27 2016-06-15 富士通株式会社 帯域幅制御装置、帯域幅制御方法、および、帯域幅制御プログラム
US20140047126A1 (en) * 2012-08-10 2014-02-13 International Business Machines Corporation Coordinated enforcement of traffic shaping limits in a network system
CN103944691B (zh) * 2013-01-17 2019-01-15 中兴通讯股份有限公司 一种协同业务传输中的数据重传方法及接入网网关
WO2014134135A1 (en) 2013-02-26 2014-09-04 Fastly Inc. Enhanced acknowledgement handling in communication packet transfer
JP6236933B2 (ja) * 2013-07-02 2017-11-29 富士通株式会社 中継装置
JP6144559B2 (ja) * 2013-07-16 2017-06-07 日本放送協会 並列分散管理装置、プログラム及び並列分散処理システム
US20150071273A1 (en) * 2013-09-11 2015-03-12 Celeno Communications (Israel) Ltd. Efficient transfer of tcp traffic over wlan
US20150195326A1 (en) * 2014-01-03 2015-07-09 Qualcomm Incorporated Detecting whether header compression is being used for a first stream based upon a delay disparity between the first stream and a second stream
JP2015130121A (ja) * 2014-01-08 2015-07-16 ヤマハ株式会社 中継装置
US10666319B2 (en) * 2014-04-01 2020-05-26 Uniquoss Inc. Method for synchronized communication in access network applied G.hn technology thereto, access network multiplexer, access network terminal and access network system using the same
US9450879B2 (en) * 2014-05-09 2016-09-20 Nexgen Storage, Inc. Adaptive bandwidth throttling
US9961585B2 (en) * 2014-05-16 2018-05-01 Nokia Solutions And Networks Oy Network-side buffer management
JP6525576B2 (ja) * 2014-12-17 2019-06-05 キヤノン株式会社 制御装置、制御システム、制御方法、医用画像撮影装置、医用画像撮影システム、撮影制御方法およびプログラム
JP6485040B2 (ja) * 2014-12-26 2019-03-20 コニカミノルタ株式会社 画像形成システム、画像処理装置、および画像処理装置の制御プログラム
US10601721B2 (en) 2015-10-29 2020-03-24 Altiostar Networks, Inc. Maintenance of downlink throughput
CN105391589B (zh) * 2015-12-15 2018-09-25 京信通信系统(中国)有限公司 一种报文传输的方法及装置
TWI678084B (zh) * 2016-09-05 2019-11-21 日商日本電氣股份有限公司 網路頻段量測裝置及網路頻段量測方法
JP6805713B2 (ja) * 2016-10-19 2020-12-23 日本電気株式会社 受信トラヒックの高速化装置、高速化方法、および高速化プログラム
US20180131640A1 (en) * 2016-11-07 2018-05-10 Qualcomm Incorporated Techniques for encoding and decoding multiple acknowledgement signals in new radio
CN109905327B (zh) * 2017-12-11 2021-05-07 网宿科技股份有限公司 一种无线网络数据传输方法、发送端及接收端
US10784931B2 (en) * 2018-06-08 2020-09-22 Apple Inc. Assisted multi-user multi-input multi-output (MU-MIMO) communication system
CN117500057A (zh) * 2022-07-21 2024-02-02 华为技术有限公司 一种通信方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008219812A (ja) * 2007-03-07 2008-09-18 Daikin Ind Ltd 帯域制御装置、同帯域制御装置を備えたネットワーク及び空調管理システム、帯域制御方法並びに帯域制御プログラム
US7908624B2 (en) * 2007-06-18 2011-03-15 Broadcom Corporation System and method for just in time streaming of digital programs for network recording and relaying over internet protocol network
US8411566B2 (en) * 2007-10-31 2013-04-02 Smart Share Systems APS Apparatus and a method for distributing bandwidth
JP2009141565A (ja) 2007-12-05 2009-06-25 Panasonic Corp 受信端末装置
US8289870B2 (en) * 2009-09-23 2012-10-16 Avaya Inc. Priority-based, dynamic optimization of utilized bandwidth

Also Published As

Publication number Publication date
US8761010B2 (en) 2014-06-24
EP2579516A4 (en) 2013-04-10
EP2579516A1 (en) 2013-04-10
TWI530123B (zh) 2016-04-11
SG185769A1 (en) 2013-01-30
IL223255A (en) 2016-06-30
US20130176848A1 (en) 2013-07-11
TW201212593A (en) 2012-03-16
BR112012030524A2 (pt) 2019-09-24
WO2011151884A1 (ja) 2011-12-08
CN102474463B (zh) 2015-07-08
CA2800669A1 (en) 2011-12-08
CA2800669C (en) 2017-04-25
KR101746629B1 (ko) 2017-06-13
JPWO2011151884A1 (ja) 2013-07-25
EP2579516B1 (en) 2015-08-26
JP5059976B2 (ja) 2012-10-31
HK1171134A1 (en) 2013-03-15
CN102474463A (zh) 2012-05-23
IL223255A0 (en) 2013-02-03

Similar Documents

Publication Publication Date Title
KR20130082070A (ko) 통신 장치 및 통신 방법
US9655003B2 (en) Systems and methods for improved wireless interface aggregation
EP2887595B1 (en) Method and node for retransmitting data packets in a tcp connection
US6741555B1 (en) Enhancement of explicit congestion notification (ECN) for wireless network applications
US7369498B1 (en) Congestion control method for a packet-switched network
JP5544430B2 (ja) 通信装置および通信システム
EP2479941B1 (en) Communication apparatus and communication system for enhancing speed of communications between terminals
EP2302827B1 (en) A method and device for transmitting data
US20040052234A1 (en) Method and system for dispatching multiple TCP packets from communication systems
US8085669B2 (en) Session relay device and session relay method
EP2903192B1 (en) Packet handling method and forwarding device
US7693058B2 (en) Method for enhancing transmission quality of streaming media
CN102148662B (zh) 一种数据发送速率的调整方法及装置
CN111435866B (zh) 数据传输方法及相关装置
CN112436924B (zh) 一种数据传输方法及电子设备
US8599734B1 (en) TCP proxy acknowledgements
CN104683259A (zh) Tcp拥塞控制方法及装置
CN111092907B (zh) 基于udp协议的数据流快速传输方法、系统及介质
JP5723307B2 (ja) パケット監視システム
KR100756183B1 (ko) 페이크 응답 계층을 구비하는 네트워크 전송 장치와 이를이용한 티씨피 패킷 송수신 방법
KR100913897B1 (ko) 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜혼잡제어방법
KR101933175B1 (ko) 서버와 클라이언트간 통신을 중개하는 중개장치
CN116566920A (zh) 一种数据传输控制方法及相关装置
JP2003198612A (ja) パケット通信ネットワークにおけるファイル転送方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant