이하, 첨부 도면을 참조하여 본 발명에 의한 실시예들을 상세하게 설명한다.
도 1은 본 발명의 일실시예에 의한 가상 인터페이스를 통해 데이터를 전송하 기 위한 시스템의 전체 구성도이다.
도 1을 참조하면, 본 실시예에 의한 시스템은, 서버(10) 및 클라이언트(20)를 포함하고 있으며, 상기 서버(10) 및 클라이언트(20)는 각각 서버(10) 측의 물리 인터페이스를 포함하는 가상 인터페이스(11) 및 클라이언트(20) 측의 물리 인터페이스를 포함하는 가상 인터페이스(21)를 통하여 서로 연결되어 있다.
본 실시예에 의한 서버(10)는 클라이언트(20)와의 사이에서 각각의 가상 인터페이스(11, 21)를 통하여 데이터를 송수신한다. 즉, 서버(10)가 클라이언트(20)와 데이터 패킷을 송수신하는 경우, 클라이언트(20)가 서버(10)와 연결된 각 인터넷 회선별마다 대역폭 테스트를 수행하고 그 결과를 서버(10)로 전송함으로써, 서버(10)는 상기 수행된 대역폭 테스트 결과를 이용한 트래픽 분배 가중치를 결정한다. 그에 따라 서버(10)가 상기 결정된 트래픽 분배 가중치에 상응하여 데이터 패킷을 분배하여 클라이언트(20)로 전송함으로써 데이터 전송시의 효율 및 속도를 높일 수 있다.
클라이언트(20) 역시 서버(10)와 가상 인터페이스(11, 21)를 통해 연결되어 데이터를 송수신한다. 클라이언트(20)에서 서버(10)로 데이터의 전송이 이루어질 경우, 상기 서버와 마찬가지의 과정을 거쳐서 데이터 전송이 이루어진다. 다만, 서버(10)와 클라이언트(20) 사이의 각 회선별 대역폭 테스트를 수행하는 경우, 클라이언트(20)가 서버로 대역폭 테스트 요청 신호를 전송하고, 서버는 클라이언트(20)의 요청 신호가 있는 경우, 대역폭 테스트 승인 신호를 클라이언트(20)로 전송한다는 점에서 역할의 차이가 있다.
서버(10)와 클라이언트(20) 사이의 각 회선별 대역폭 테스트를 수행하는 이유는, 서버(10)에서 클라이언트(20)로의 데이터 전송 및 클라이언트(20)에서 서버(10)로의 데이터 전송시 필요한 트래픽 분배 가중치 값을 결정하기 위한 것이다. 상기 트래픽 분배 가중치 값을 결정하기 위해서는 서버(10) 측의 업로드 전송 속도 및 클라이언트(20) 측의 업로드 전송 속도가 각각 필요하다. 다운로드 및 업로드 전송 속도의 측정은 각 회선의 인터페이스별 총 송신 바이트(bytes) 값과 총 수신 바이트 값을 이용하여 구하게 되는바, 클라이언트(20)에서 서버(10)로 연결된 각 회선별 업로드 전송 속도를 구하기 위해서는, 클라이언트(20) 측에서 서버(10)로의 업로드 시작시간과 종료시간을 기억한 뒤, 각 회선별 인터페이스의 송신 바이트 변화량을 구한 후, 이를 이용해 업로드 전송 속도를 구하게 된다.
여기서, 클라이언트(20)에서 측정한 클라이언트(20)와 서버(10) 사이의 각 회선별 다운로드 전송 속도 결과는 결국 서버(10) 측의 업로드 전송 속도 값이 되는바, 서버(10)는 클라이언트(20)에서 전송된 다운로드 전송 속도 값을 이용해 트래픽 분배 가중치 값을 결정하게 된다. 서버(10)는 동시에 여러 개의 클라이언트(20)와 대역폭 측정을 진행할 수 있기 때문에 서버(10) 측의 회선별 송신 바이트의 변화량 만으로는 정확한 업로드 측정값을 구할 수 없기 때문에 클라이언트(20)에서 측정된 다운로드 전송 속도 값을 전송받아 서버(10)의 업로드 전송 속도 값을 구하게 되는 것이다. 이러한 서버(10) 및 클라이언트(20)의 상세 구성은 도 2를 참조하여 자세히 설명한다.
가상 인터페이스(11, 21)는 서버(10) 측 가상 인터페이스(11)와 클라이언 트(20) 측 가상 인터페이스(21)로 구성되어 있으며, 서버(10) 및 클라이언트(20) 측 각각의 가상 인터페이스(11, 21)는 인터넷 회선들을 통하여 서로 연결되어 있다.
가상 인터페이스(11, 21)란 적어도 하나 이상의 물리인터페이스(인터넷 회선)를 포함하는 물리적으로는 존재하지 않는 가상의 인터페이스를 의미한다. 가상 인터페이스(11, 21)는 물리 인터페이스를 한 군데로 모아줌으로써, 사용자가 모든 것을 컨트롤할 수 있게 해주는 기능 및 데이터의 전송시 트래픽 분배를 효율적으로 이루질 수 있도록 하는 기능을 한다. 가상 인터페이스(11, 21)는 물리적인 미디어와 데이터 패킷을 송수신하는 것이 아니라, 사용자 공간의 프로그램과 데이터 패킷을 송수신한다는 점을 특징으로 한다. 본 발명에서의 가상 인터페이스(11, 21)는 예컨대 탭 디바이스(TAP DEVICE)를 사용할 수 있는데, 탭 디바이스는 가상 인터페이스(11, 21)의 한 종류로서, 물리적인 인터페이스와 유저 어플리케이션 간에 데이터 패킷의 송수신이 가능하게 해주어 연결된 상대방과 통신이 이루어지도록 하는 기능을 한다. 이와 같은 기능을 하는 가상 인터페이스로는 TUN, PPP 등이 있으나, 탭 디바이스는 이더넷(Ethernet) 인터페이스 형태이므로 ARP(Address Resolution Protocol) 쿼리가 가능하다는 장점이 존재한다.
도 2는 서버(10) 및 클라이언트(20) 장치의 상세 구성의 일실시예를 나타낸 도면이다.
도 2를 참조하면, 서버(10) 및 클라이언트(20)는 대역폭 테스트 수행부(22), 트래픽 분배 가중치 결정부(23), 데이터 패킷 분배부(24), 데이터 패킷 재정렬부(25), 데이터 전송 에러 검출부(26), 데이터 송수신부(27)를 포함하고 있으며, 각 부는 서로 정보를 주고 받을 수 있도록 연결되어 있다.
대역폭 테스트 수행부(22)는 클라이언트(20)와 서버(10) 사이에 연결된 각 회선별 전송 속도를 측정하기 위한 수단이다. 즉, 본 발명에서는 각 회선별로 대역폭 테스트를 수행하며, 그 결과를 이용하여 트래픽 분배 가중치 값을 정하게 되고, 상기 정하여진 트래픽 분배 가중치 값에 상응하여 데이터 패킷을 분배하여 전송하는 것을 주요 특징으로 하고 있다. 여기서, 각 회선별 대역폭 테스트는 트래픽 분배 가중치 값을 구하기 위해 필요한 값인 클라이언트(20) 및 서버(10) 각각의 업로드 전송 속도를 구하기 위해 수행되는 것이다.
대역폭 테스트는 클라이언트(20)가 서버(10)로 대역폭 테스트 요청을 하여 이루어지는바, 상기 도 1의 경우에서 설명했듯이, 대역폭 테스트는 업로드/다운로드 시작시간과 종료시간을 기억한 뒤, 각 회선별 인터페이스의 송신/수신 bytes 변화량을 구한 후, 이를 이용해 업로드/다운로드 전송 속도를 구하게 된다. 서버(10)는 동시에 여러 개의 클라이언트(20)와 대역폭 측정을 진행할 수 있기 때문에 서버(10) 측의 회선별 송신 bytes의 변화량 만으로는 정확한 업로드 측정값을 구할 수 없다. 따라서, 클라이언트(20)에서 측정된 다운로드 전송 속도 값을 서버(10)로 전송하여 서버(10)의 업로드 전송 속도 값을 구하게 된다.
대역폭 테스트 수행부(22)의 대역폭 테스트 결과, 서버(10) 및 클라이언트(20)는 각각 업로드 전송 속도 결과를 알 수 있게 되고, 상기 결과는 후술하는 트래픽 분배 가중치 결정부(23)에서 제1 및 제2 트래픽 분배 가중치 값을 결정하는데 사용된다.
트래픽 분배 가중치 결정부(23)는 상기 대역폭 테스트 수행부(22)에서 결정한 각 회선별 대역폭 테스트 결과를 이용하여 각 회선별로의 데이터 전송시, 데이터를 분배하는 기준이 되는 트래픽 분배 가중치를 결정하는 수단이다. 트래픽 분배 가중치는 서버(10)에서 클라이언트(20)로 데이터를 전송하는 경우 쓰이는 제1 트래픽 분배 가중치와 클라이언트(20)에서 서버(10)로 데이터를 전송하는 경우 쓰이는 제2 트래픽 분배 가중치 값으로 구성된다. 트래픽 분배 가중치는 도 4의 식에 의하여 결정되는바, 트래픽 분배 가중치를 결정하는 자세한 과정에 대해서는 도 3 및 도 4에서 상세하게 설명한다.
데이터 패킷 분배부(24)는 상기 트래픽 분배 가중치 결정부(23)에서 결정된 제1 및 제2 트래픽 분배 가중치 값을 이용하여 서버(10)와 클라이언트(20) 사이에서 데이터 전송이 이루어지는 경우, 각 회선별로 데이터 패킷을 분배하는 역할을 하는 수단이다. 데이터 패킷이 분배되어 전송되는 자세한 과정에 대해서는 도 5에서 후술하기로 한다.
데이터 패킷 재정렬부(25)는 서버(10) 또는 클라이언트(20)로부터 전송된 데이터 패킷을 클라이언트(20) 또는 서버(10)가 수신하여 이를 원래의 패킷 순서에 맞게 재정렬하는 역할을 하는 수단이다. 트래픽 분배 가중치 결과를 이용하여 데이터 패킷을 각 회선별로 분배하여 전송하더라도, 대역폭과는 별도로 각 회선별 데이터 패킷의 도달 시간은 차이가 있을 수 있기 때문에 데이터를 정상적으로 이용할 수 있기 위해서는 수신한 데이터 패킷을 원래 순서대로 재정렬할 필요성이 존재한다. 수신된 데이터 패킷을 원래 순서대로 재정렬하는 자세한 과정에 대해서는 도 6에서 후술하기로 한다.
데이터 전송 에러 검출부(26)는 서버(10)와 클라이언트(20) 사이에 연결된 각 회선별로 데이터를 전송함에 있어서, 장애가 발생한 회선을 검출하여 검출된 회선을 차단하는 역할을 하는 수단이다. 본 발명에서는 서버(10)와 클라이언트(20) 사이에 연결된 각 회선별 대역폭 측정 후, 이를 이용해 트래픽 분배 가중치를 정하게 되고, 정하여진 트래픽 분배 가중치를 이용하여 각 회선별로 데이터 패킷을 분배하여 전송하는 것을 주요 특징으로 하고 있다. 그러나, 트래픽 분배 가중치가 정하여진 이후, 각 회선별로 전송이 이루어지는 도중에 회선의 장애가 생겨서 패킷 전송이 이루어지지 않는 회선이 발생할 수 있다.
장애가 발생한 회선이 존재하는 경우, 이러한 회선에 대한 에러 검출 및 장애 극복이 이루어지지 않는다면, 통신이 되지 않는 회선을 통하여 패킷이 계속 전송되고, 수신하는 서버(10) 또는 클라이언트(20)에서는 장애가 발생한 회선을 통하여 전송된 패킷을 수신받지 못하므로 데이터의 완전한 전송이 이루어지지 않는다는 문제점이 발생한다. 데이터 전송 에러 검출부(26)는 상기와 같은 문제점을 극복하기 위해, 각 회선별로 일정 시간 이상 패킷이 수신되지 않는 경우에는 해당 회선을 차단하여, 해당 회선으로 더 이상 데이터 패킷이 전송되지 않도록 하는 역할을 한다. 데이터 전송 에러 검출부(26)에서 이루어지는 에러 검출의 자세한 과정에 대해서는 도 6에서 후술하기로 한다.
데이터 송수신부(27)는 서버 및 클라이언트 사이에서 데이터의 전송이 이루어지는 경우, 데이터의 송수신이 이루어지도록 하는 역할을 하는 수단이다. 데이터 송수신부(27)는 데이터 패킷 분배부(24)로부터 각 회선별 패킷 분배에 관한 정보를 수신하여, 그에 상응하여 데이터 패킷을 각 회선별로 분배하여 전송한다. 데이터 송수신부(27)가 서버(10) 및 클라이언트(20)로부터 데이터 패킷을 수신하는 경우에, 데이터 패킷의 재정렬이 필요하다고 판단된 경우에는, 수신한 데이터 패킷들을 데이터 패킷 재정렬부(25)로 전송하여 순서가 바뀐 데이터 패킷의 재정렬 과정을 진행시킨다. 또한, 데이터 전송 에러 검출부(26)에서는 각 회선별 에러 검출 과정에 의하여 장애가 발생한 회선이 검출된 경우, 그 장애 발생 회선에 관한 정보를 데이터 송수신부(27)로 전송하게 되고, 데이터 송수신부(27)는 장애가 발생한 회선으로 데이터 패킷을 전송하지 않음으로써 장애 극복을 수행한다. 또한, 데이터 송수신부(27)는 각 회선별로 데이터 패킷을 전송하는 경우 패킷 압축을 하여 전송함으로써 각 회선별로 더 큰 대역폭을 확보하도록 할 수 있다. 데이터 송수신부(27)에서 상기 압축된 패킷을 수신하는 경우에는 패킷 압축을 해제한 후, 데이터 패킷 재정렬부(25)로 패킷을 전송한다.
도 3은 서버(10) 및 클라이언트(20) 사이에서 데이터 전송이 이루어지는 과정의 일실시예를 나타낸 흐름도이다.
도 3을 참조하면, 서버(10) 및 클라이언트(20) 사이에서 데이터 전송이 이루어지기 전에, 클라이언트(20)가 서버(10)로 대역폭 테스트 요청 신호를 전송한 다(S200). 클라이언트(20)로부터 대역폭 테스트 요청 신호를 수신한 서버(10)는 대역폭 테스트 승인 신호를 클라이언트(20)로 전송한다(S210). 서버(10)로부터 대역폭 테스트 승인 신호를 수신한 클라이언트(20)에서는 서버(10)와 가상 인터페이스를 통해 연결된 각 회선별로 대역폭 테스트를 수행한다(S220).
대역폭 테스트를 수행한 클라이언트(20)는 대역폭 테스트 결과를 서버로 전송하여 정보를 공유한다(S230). 클라이언트(20)에서 이루어지는 대역폭 테스트는 서버(10)와 연결된 각 회선별 업로드 전송 속도 및 다운로드 전송 속도의 측정을 통해 이루어질 수 있다.
후술하는 제1 트래픽 분배 가중치를 구하기 위해서는 클라이언트(20)에서의 서버(10)로의 업로드 전송 속도가 필요하고, 제2 트래픽 분배 가중치를 구하기 위해서는 서버(10)에서 클라이언트(20)로의 업로드 전송 속도가 필요하다. 클라이언트(20)의 대역폭 테스트 수행(S220)에서 얻어진, 업로드 전송 속도는 제1 트래픽 분배 가중치를 구하는데 쓰이며, 클라이언트(20)에서 구해진 서버(10)와의 다운로드 전송 속도는 결국 서버(10)에서 클라이언트(20)로의 업로드 전송 속도에 해당하므로, 서버(10)는 클라이언트(20)에서 전송받은 다운로드 전송 속도를 이용하여 제2 트래픽 분배 가중치를 구하게 된다.
여기서, 서버(10)가 클라이언트(20)로의 업로드 전송 속도를 직접 측정하지 않고, 클라이언트(20)로부터 전송받은 결과를 이용하는 이유는 상술한 바와 같이, 서버(10)는 동시에 여러 개의 클라이언트(20)와 대역폭 측정을 진행할 수 있기 때문에 서버(10) 측의 회선별 송신 bytes의 변화량 만으로는 정확한 업로드 측정값을 구할 수 없기 때문이다. 따라서, 클라이언트(20)에서 측정된 다운로드 전송 속도 값을 서버(10)로 전송하여 서버(10)의 업로드 전송 속도 값을 구하게 되는 것이다.
상기 설명한 바와 같이, 클라이언트(20)가 대역폭 테스트 결과를 서버로 전송하게 되면, 서버는 대역폭 테스트 결과중 클라이언트(20)에서 서버(10)로의 다운로드 전송 속도 결과를 이용하여 서버(10)에서 클라이언트(20)로 데이터를 전송하는 경우 쓰이는 제1 트래픽 분배 가중치를 결정한다(S240).
클라이언트(20) 역시 클라이언트(20)에서 측정된 업로드 전송 속도 결과를 이용하여 클라이언트(20)에서 서버(10)로 데이터를 전송하는 경우 쓰이는 제2 트래픽 분배 가중치를 결정한다(S250). 상기 제1 및 제2 트래픽 분배 가중치는 서버(10) 및 클라이언트(20) 내부의 트래픽 분배 가중치 결정부(23)에서의 계산 과정에 의하여 정하여진다. 제1 및 제2 트래픽 분배 가중치는 결국, 각 회선별 업로드 전송 속도와 가장 유사한 자연수 값의 비를 구함으로써, 데이터 전송의 효율을 높이는데 의미가 있다. 실제 업로드 전송 속도는 122bps, 156bps 처럼 정확한 자연수 비로 측정되지가 않기 때문에 본 발명에서처럼 특정한 식에 의해 각 회선별 업로드 전송 속도의 비를 자연수의 비로 변환하여 줄 필요성이 존재한다.
제1 및 제2 트래픽 분배 가중치를 결정하는 과정을 도 4의 경우를 참고하여 설명해보면, 트래픽 분배 가중치 값은 예컨대 수식 W[i]=B[i] * M/S(여기서, W[i]는 i번째 회선의 트래픽 분배 가중치이고, B[i]는 대역폭 테스트 결과에 의한 i번째 회선의 업로드 전송 속도이며, M은 K*N/D(K는 가중치 계수, N은 서버와 클라이언트간의 회선의 갯수, D는 서버와 클라이언트의 회선별 업로드 전송 속도 중 최대 값을 최소값으로 나눈 값), S는 서버와 클라이언트간의 회선별 업로드 전송 속도의 총합임)에 의하여 각 회선별로 제1 및 제2 트래픽 분배 가중치 W[i]를 구하고, 상기 각각의 W[i]의 값들을 자연수 비율로 변환함으로써 각 회선별로 제1 및 제2 트래픽 분배 가중치를 각각 결정할 수 있다. 여기서, K는 가중치 계수로서, 다양한 테스트 결과, S 가 3Mbps 를 초과하는 경우에는 25의 값을 가지며, S 가 3Mbps 이하인 경우에는 10의 값을 가질 때, 실제 전송 속도의 비와 가장 유사한 자연수 비율이 나타날 수 있다.
트래픽 분배 가중치 값을 구하는 한 실시예로, 2개의 회선이 존재하며, 각 회선별 업로드 전송 속도가 308(kbps)과 605(kbps)인 경우인 경우를 생각해 본다.
N = 2, B[0] = 308, B[1] = 605, S = 913
D = 605 / 308 = 1.964286
M = K*N/D(S가 3Mbps 보다 작으므로 K=10)
= 10 * 2 / 1.964286 = 10.181817
W[0] = B[0] * M / S = 308 * 10.181817 / 913 = 3.434823 = 3
W[1] = B[1] * M / S = 605 * 10.181817 / 913 = 6.746987 = 7
여기서, 데이터 패킷의 분배는 자연수의 비로 분배가 되는 것이므로, 트래픽 분배 가중치 값 역시 자연수의 비로 표현이 되어야 한다. 자연수가 아닌 값인 W[i]값을 자연수로 만드는 방법에는 여러 가지 방법이 사용될 수 있으나, 본 실시예에서는 반올림을 이용하여 자연수로 만들었다. 상기의 계산 결과, 3:7의 트래픽 분배 가중치 값이 산출되었다. 3:7의 트래픽 분배 가중치 값이 나왔으므로, 데이 터 패킷은 각 회선별로 3:7의 비로 나뉘어 전송되게 될 것이다. 데이터 패킷의 분배 및 전송 과정에 대해서는 아래에서 후술하기로 한다.
트래픽 분배 가중치를 값을 구하는 다른 실시예로서, 3개의 회선이 존재하면며, 각 회선별 업로드 전송 속도가 2300(kbps), 3100(kbps), 4900(kbps)인 경우를 생각해 본다.
N = 3, B[0] = 2300, B[1] = 3100, B[2] = 4900, S = 10300
D = 4900 / 2300 = 2.130434
M = K*N/D(S가 3Mbps 보다 크모르 K=25)
= 25 * 3 / 2.130434 = 35.204094
W[0] = B[0] * M / S = 2300 * 35.204094 / 10300 = 7.861108 = 8
W[1] = B[1] * M / S = 3100 * 35.204094 / 10300 = 10.595406 = 11
W[2] = B[1] * M / S = 4900 * 35.204094 / 10300 = 16.747578 = 17
상기의 트래픽 분배 가중치 계산 결과, 각 회선별 분배 가중치 비는 8:11:17이 된다. 실제 업로드 전송 속도의 비인 2300:3100:4900 는 약 1:1.348:2.130 이 되는바, 8:11:17 은 약 1:1.375:2.125이므로, 실제 전송 속도의 비와 본 발명에 의한 트래픽 분배 가중치 결과의 경우 큰 차이가 없다는 것을 확인할 수 있다.
트래픽 분배 가중치를 결정하는 또 다른 실시예로서, 3개의 회선이 존재하고, 자연수 비로 만들기 전의 트래픽 분배 가중치 값이 0.25, 1.2, 1.8 이 나온 경우를 생각해 본다. 여기서, 상술한 바와 같이, 각 트래픽 분배 가중치 값을 반올림하여 자연수 비를 구하게 되면, 0, 1, 2 가 된다. 가중치 값은 자연수가 되어야 하기 때문에 상기와 같이 반올림을 하게 되면 0이라는 가중치 값이 구하여지는 문제가 발생한다. 따라서, 상기와 같은 경우에는, 1보다 작은 가중치(0.25)를 1로 만들어주기 위해 곱해진 값, 즉 4.0을 1.2와 1.8에도 곱해준다. 그러면, 가중치 비는 1:4.8:7.2 가 되는바, 이를 반올림하여 1:5:7의 트래픽 분배 가중치 값을 얻을 수 있다.
서버(10) 및 클라이언트(20)에서 제1 및 제2 트래픽 분배 가중치가 결정되면(S240 및 S250), 서버(10) 및 클라이언트(20)는 각각 물리 인터페이스들을 포함하는 가상 인터페이스(11, 21)를 생성하게 된다(S260). 도 1에서 설명한 바와 같이, 가상 인터페이스(11, 21)란 적어도 하나 이상의 물리인터페이스(인터넷 회선)를 포함하는 물리적으로는 존재하지 않는 가상의 인터페이스를 의미하며, 가상 인터페이스(11, 21)는 물리 인터페이스를 한 군데로 모아줌으로써, 사용자가 모든 것을 컨트롤 할 수 있게 해주는 기능 및 데이터의 전송시 트래픽 분배를 효율적으로 이루질 수 있도록 하는 기능을 한다.
서버(10) 및 클라이언트(20)에서는 제1 및 제2 트래픽 가중치가 결정되면 가상 인터페이스를 생성한 뒤(S240, S250 및 S260), 각 회선별로 데이터 패킷을 분배하여 전송한다(S270). 서버(10)에서 클라이언트(20)로 데이터를 전송하는 경우에는 제1 트래픽 분배 가중치 값에 상응하여 데이터 패킷을 각 회선별로 분배하여 전송하고, 클라이언트(20)에서 서버(10)로 데이터를 전송하는 경우에는 제2 트래픽 분배 가중치 값에 상응하여 데이터 패킷을 각 회선별로 분배하여 전송하게 된다.
데이터 패킷을 분배하여 전송하는 알고리즘으로는 순환 순서 방식(Round Robin,RR), Weighted Round Robin(WRR), 브로드 캐스트(Broadcast) 방식 등이 존재한다. 순환 순서 방식(RR)은 트래픽 분배 가중치에 대한 고려없이 각 회선별로 데이터 패킷을 순차적으로 분배하는 것을 의미하며, WRR 은 본 발명과 같이, 트래픽 분배 가중치를 고려하여 순차적으로 분배하는 것을 의미한다. 브로드 캐스트 방식은 동일한 패킷을 가상 인터페이스에 참여한 모든 물리 인터페이스로 보내는 것을 의미하는 바, TCP ACK, UDP 패킷, ARP 요청/응답 패킷 등은 대역폭 보다는 전송 속도에 더 중점을 둬야 하므로 브로드 캐스트 방법을 사용하여 송신을 하게 된다. 본 발명에 의하면, 상기 TCP ACK, UDP 패킷, ARP 요청/응답 패킷 등을 제외한 일반 데이터 패킷 등은 트래픽 분배 가중치 값을 이용한 분배 방법에 의하여 전송된다.
서버(10)에서 데이터를 제1 트래픽 분배 가중치 값에 상응하여 데이터 패킷을 분배하여 클라이언트(20)로 전송하는 일실시예에 대해서 도 5를 참조하여 설명해 본다. 서버(10)에서 전송하려는 데이터는 패킷의 형태로 분할되어 가상 인터페이스(11)를 통하여 클라이언트(20)로 전송되게 된다. 이때, 데이터 패킷은 각 회선별로 제1 트래픽 분배 가중치에 상응하는 비율로 분배되어 클라이언트(20)로 전송된다.
데이터 패킷이 각 회선별로 분배되어 전송되는 과정을 살펴보면, 우선 각 회선별로 회선의 번호를 정의하고, 자연수 값을 가지는 제1 트래픽 분배 가중치 값을 입력한다. 상기 정의된 회선 번호 순서대로 데이터 패킷을 각 회선으로 차례로 분배하게 되는데, 여기서, 해당 회선에 데이터 패킷이 분배된 경우에는 해당 회선에 입력된 가중치 값이 1 씩 감소 되며, 가중치 값이 0 이 된 회선에는 데이터 패킷이 분배되지 않는다. 또한 마지막 번호의 회선에 데이터 패킷이 분배된 후에는 첫 번호의 회선으로 다시 돌아가서 상기 설명한 바와 마찬가지로 데이터 패킷이 분배된다. 그리고, 각 회선에 입력된 트래픽 분배 가중치 값이 모두 0 이 된 경우에는 각 회선별로 최초의 트래픽 분배 가중치 값을 다시 입력하여 상기 설명한 패킷 분배 과정을 다시 수행한다.
상기 설명한 바와 같은 과정을 거쳐 서버(10)에서 클라이언트(20)로 데이터 패킷이 제1 트래픽 분배 가중치 값에 상응하여 분배되어 각 회선별로 전송되는바, 도 5에 나타난 도면을 참조하여 설명하여 보면, 서버(10)에서 전송하는 데이터는 10개의 패킷으로 구성되어 있고, 전송되는 순서에 따라 1번부터 10번까지의 패킷 번호를 가진다. 서버(10)와 클라이언트(20)는 가상 인터페이스(11 및 22)를 통해 4개의 회선으로 연결되어 있으며, 위로부터 차례대로 회선 번호 1, 2, 3, 4 를 가지며, 각 회선 번호별로 W[1]=1, W[2]=2, W[3]=3, W[4]=4 의 트래픽 분배 가중치 값을 입력받게 된다.
1번 패킷부터 차례대로 각 회선에 분배되는바, 1번 패킷은 1번 회선에 분배되며, 1번 회선은 하나의 패킷이 들어왔으므로, 가중치 입력 값을 1에서 0으로 변경시켜 저장시킨다. 2번 패킷은 2번 회선에 분배되며, 2번 회선 역시 가중치 입력 값을 2에서 1로 변경시킨다. 3, 4번 패킷 역시 같은 방법에 의하여 3, 4번 회선에 분배되고, 3, 4번 회선의 가중치 값은 각각 2, 3으로 변경되어 저장되어진다. 각 회선에 하나의 패킷들이 분배되면, 다시 처음으로 돌아와 앞선 과정을 반복하게 된다. 그러나 1번 회선은 앞에서 1번 패킷이 들어옴으로써, 가중치 값이 0이 되었으 므로, 5번 패킷은 1번 회선이 아닌, 2번 회선에 분배되게 된다. 마찬가지로 6, 7번 패킷은 각각 3, 4번 회선에 분배된다. 상기 7번 패킷까지의 분배가 완료되면, 2, 3, 4회선은 각각 0, 1, 2의 가중치 값으로 변경되어 입력되게 된다. 마지막으로, 남아있는 8, 9, 10 패킷은 상기 설명한 과정에 의하여 각각 3, 4, 4 회선에 분배되게 된다. 이와 같은 과정에 의하여 10번 패킷까지의 분배가 모두 끝나게 되고, 10개의 데이터 패킷은 1번부터 4번까지의 각 회선별로 각 회선별 트래픽 분배 가중치 값에 상응하여 분배됨으로써 클라이언트(20)로 전송된다. 여기서, 서버 및 클라이언트 사이에서 데이터 패킷의 전송이 있는 경우, 데이터 패킷은 압축되어 전송되어 질 수 있다. 데이터 패킷을 압축하고, 압축된 패킷을 트래픽 분배 가중치를 이용하여 전송하는 경우에는 각 회선이 가지고 있는 실제 대역폭보다 훨씬 더 큰 대역폭을 확보할 수 있다.
다시 도 3을 참조하면, 서버(10) 및 클라이언트(20) 사이에서의 데이터 전송 과정(S270)이 끝난 후, 서버(10) 또는 클라이언트(20)에서 전송한 데이터를 수신한 클라이언트(20) 또는 서버(10)는 수신된 데이터 패킷이 재정렬의 필요성이 있는 데이터 패킷인지 여부 및 압축되어 있는 데이터인지 여부를 검사한다. 수신된 데이터 패킷이 순서 재정렬할 필요가 없는 경우에는 패킷의 순서 비교과정 없이 바로 처리를 하게 되고, 수신된 데이터가 압축된 경우에는 일반 데이터 패킷 처리를 함에 앞서 압축된 부분을 먼저 해제하는 과정을 거친다.
수신된 데이터 패킷이 순서 재정렬이 필요한 경우라고 판단된 경우에는, 패킷 재정렬의 과정을 거쳐 데이터 패킷이 원래의 순서대로 재정렬 되는바(S280), 서 버(10) 또는 클라이언트(20)에서 수신된 데이터 패킷이 재정렬되는 과정을 살펴본다.
우선, 수신된 데이터 패킷이 재정렬되는 일반적인 과정을 살펴보면, 수신된 데이터 패킷에 포함되어 있는 순서 정보를 파악하고, 상기 수신된 데이터 패킷의 순서 정보와 예상 순서 정보를 비교한다. 상기 비교 결과, 상기 순서 정보가 예상 순서 정보와 같은 경우 상기 수신된 데이터 패킷을 저장하고 예상 순서 정보를 1만큼 증가시키고, 상기 순서 정보가 예상 순서 정보보다 작은 경우 수신된 데이터 패킷을 저장하고, 상기 순서 정보가 예상 순서 정보보다 큰 경우 수신된 데이터 패킷을 패킷 큐(데이터 패킷의 순서 재정렬을 위해 패킷을 임시로 보관하는 큐)에 저장하게 된다. 그리고, 일정 주기마다 패킷 큐에 포함되어 있는 데이터 패킷의 순서 정보 중에서 예상 순서 정보와 동일한 데이터 패킷을 저장하고 예상 순서 정보를 1만큼 증가시키는 단계를 거쳐 데이터 패킷이 재정렬되게 된다.
여기서, 기다리는 순서의 패킷이 영원히 오지 않을 경우(Packet Loss)나 너무 늦게 오는 경우 패킷 큐의 사이즈가 과도하게 커지고 실제 패킷 전송이 전혀 이루어지지도 않는 문제가 발생할 수 있기 때문에 일정 시간(예를 들어 50ms)의 큐 타임아웃을 정할 수 있다. 상기 설명한, 예상 순서 정보와 수신된 패킷의 순서 정보를 비교하는 과정이 끝나면, 큐 스캔을 한다.
큐 스캔이란 패킷 큐에 저장되어 있는 데이터 패킷의 순서 정보와 예상 순서 정보를 비교하여, 예상 순서 정보와 같은 패킷이 있으면 바로 데이터를 구성하는데 쓰고, 예상 순서 정보를 1 증가시키는 것이다. 또한, 큐 타임아웃이 지나면 예상 순서 정보를 패킷 큐의 헤드에 있는 패킷의 순서로 업데이트 하는 역할도 한다. 상기의 큐 스캔은 위 과정뿐 아니라, 패킷 송수신이 없는 상황에서도 일정 시간 간격으로 이루어질 수 있는 바, 이는 패킷 송수신이 거의 없는 상황에서 패킷 큐에 들어간 상태가 지속되어 패킷이 아주 늦게 전송되는 걸 막기 위함이다.
도 6을 참조하여, 본 발명의 일실시예에 의한 데이터 패킷의 재정렬 과정에 대해 설명한다. 도 6을 참조하면, 서버(10)에서 1번 6번까지의 순서 정보를 가진 데이터 패킷을 가상 인터페이스(11)를 통하여 클라이언트(20)로 전송한다. 서버(10) 및 클라이언트(20) 사이의 회선은 1번부터 4번까지 4개의 회선이 존재하나, 도 6에 나타난 바와 같이 4번 회선은 에러가 검출되어 회선이 차단되어 있으므로, 4번 회선으로는 패킷이 전송되지 않는다. 데이터 전송 에러 검출시 회선을 차단하는 과정에 대해서는 후술하기로 한다.
결국, 1, 2, 3번 회선을 통하여 1번부터 6번까지의 데이터 패킷은 상술한 바와 같이 각 회선의 가중치 값에 상응하여 데이터 패킷이 분배되어 전송되게 된다. 데이터 패킷이 각 회선별로 분배되어 전송되는 경우, 각 회선의 주변 상황에 의하여, 패킷의 도달 순서가 바뀔 수 있는바, 이러한 경우에는 수신된 데이터 패킷의 재정렬 과정을 통해 수신된 데이터 패킷을 원래의 순서대로 재정렬하는 과정을 수행한다.
도 6을 참조하면, 각 회선을 통하여 데이터 패킷이 전송되는 동안, 패킷의 순서가 바뀌어 도착하는 것을 확인할 수 있는바, 도착하는 순서를 임의로 1, 4, 5, 2, 3, 6 이라고 과정하고, 데이터 패킷 재정렬 과정을 설명하기로 한다.
우선, 예상 순서 정보는 데이터 패킷의 번호인 1, 2, 3, 4, 5, 6 이 될 것이다. 처음으로 도착하는 패킷 번호는 1번 패킷인바, 예상 순서 정보의 번호와 일치하므로, 1번 패킷은 바로 저장되어 데이터를 구성하는데 쓰이게 되고, 예상 순서 정보는 2로 변경되게 된다. 다음으로, 4번 패킷이 도착하는바, 4번 패킷은 예상 순서 정보보다 큰 패킷 번호를 가지므로, 패킷 큐에 저장된다. 다음 도착 패킷인 5번 패킷 역시 예상 순서 정보인 2보다 큰 패킷 번호를 가지므로 패킷 큐에 저장된다. 다음 도착 패킷은 예상 순서 정보와 같은 2번 패킷이므로 바로 저장되어 데이터를 구성하는데 쓰이게 되며, 예상 순서 정보는 3으로 변경된다. 다음 도착 패킷은 3번 패킷이므로, 역시 바로 저장되며, 예상 순서 정보는 4로 변경된다.
앞서 설명한 바와 같이, 예상 순서 정보와 패킷 번호와의 비교 과정이 끝난 후에는 큐 스캔을 통하여 패킷 큐에 저장된 패킷의 번호를 예상 순서 정보와 비교하는 과정을 거치게 되는바, 패킷 큐에는 현재 예상 순서 정보에 해당하는 4번 패킷이 저장되어 있으므로, 4번 패킷이 데이터를 구성하는데 쓰이게 된다. 패킷 큐에서 4번 패킷이 사용되고 나면, 패킷 큐의 정보는 업데이트 되며, 예상 순서 정보는 5로 변경되게 된다. 업데이트 된 패킷 큐에는 예상 순서 정보에 해당하는 5번 패킷 역시 존재하므로, 5번 패킷은 큐 스캔에 의하여 역시 데이터를 구성하는데 쓰이게 된다. 5번 패킷이 쓰이고 나면, 예상 순서 정보는 6으로 변경되게 되며, 다음으로 수신되는 패킷 번호는 6번 패킷이므로 6번 패킷은 바로 저장되어 데이터를 구성하는데 쓰인다.
상기의 재정렬 과정에 의하여 서버(10)에서 전송된 1번부터 6번까지의 데이 터 패킷은 클라이언트(20)로 수신되는 경우 원래의 데이터 패킷 정렬 순서를 가지고 수신된다.
다시 도 3을 참조하면, 서버(10) 및 클라이언트(20)에서는 각각 수신된 데이터 패킷의 재정렬 과정을 수행함으로써, 데이터 수신 과정을 끝내게 된다(S280).
도 4는 도 3에서 설명한 바와 같이, 서버(10) 및 클라이언트(20)의 트래픽 분배 가중치 결정부(23)에서 이루어지는 트래픽 분배 가중치 결정의 일실시예를 나타낸 도면이다.
전술한 바와 같이, 트래픽 분배 가중치 결정부(23)에서는 도 4에 나타난 식을 이용하여 제1 및 제2 트래픽 분배 가중치를 결정하게 된다. 도 4에 나타난 식에 의하여 구하여진 트래픽 분배 가중치 결과는 반올림, 올림, 내림 등의 방법을 사용하여 자연수의 형태로 표현되도록 변경될 수 있다.
도 5는 도 3에서 설명한 바와 같이, 서버(10) 및 클라이언트(20) 사이에 데이터 전송이 이루어지는 경우, 데이터 패킷이 분배되는 과정의 일실시예를 나타낸 도면이다.
전술한 바와 같이, 각 회선은 트래픽 분배 가중치 값에 상응하는 값을 입력받아, 데이터 패킷들이 트래픽 분배 가중치 값에 상응하도록 각 회선별로 분배되어 전송된다. 상기의 데이터 패킷들은 서버(10) 및 클라이언트(20) 내부의 데이터 패킷 분배부(24)의 처리에 의하여 패킷이 분배될 회선이 결정된다.
도 6은 서버(10) 및 클라이언트(20) 사이에 데이터 전송이 이루어지는 경우, 데이터 전송 에러 검출시 회선 차단 과정 및 수신된 데이터 패킷의 재정렬 과정에 대하여 나타낸 도면이다.
전술한 바와 같이, 서버(10) 및 클라이언트(20)에서 수신된 데이터 패킷들은 데이터 패킷 재정렬 과정에 의하여 원래의 순서대로 재정렬되어 원래의 데이터를 구성한다.
서버(10) 및 클라이언트(20)는 각 회선별 트래픽 분배를 통한 데이터 전송시 장애가 발생한 회선을 검출하여 해당 회선을 차단하는 역할을 하는 데이터 전송 에러 검출부(26)를 포함하고 있다. 도 2에서 설명한 바와 같이, 데이터 전송 에러 검출부(26)는 각 회선별로 일정 시간 이상 패킷이 수신되지 않는 경우에는 해당 회선을 차단하여, 해당 회선으로 더 이상 데이터 패킷이 전송되지 않도록 하는 역할을 한다. 클라이언트(20) 측에서의 데이터 전송 에러 검출부(26)에서 이루어지는 각 회선별 에러 검출 과정에 대해 살펴보면, 클라이언트(20)는 각 회선별로 에러 검출을 위한 검사 패킷이든 실제 데이터 패킷이든 패킷이 송신된 마지막 시간을 기억해 둔다. 클라이언트(20)에서는 각 회선별로 패킷이 송신된 마지막 시간과 현재 시간을 비교하여 일정 시간 이상이 차이 나면 에러 검출을 위한 검사 패킷을 서버(10)로 전송한다. 상기 에러 검출을 위한 검사 패킷에 대한 응답이든 실제 데이터 패킷이든 각 회선별로 패킷이 수신된 마지막 시간을 기억해 둔다. 클라이언트(20)에서는 각 회선별로 패킷이 수신된 마지막 시간과 현재 시간을 비교하여 일 정 시간 이상이 차이 나면 해당 회선이 통신 불가능한 상태라고 판단하고 해당 회선을 차단한다.
서버(10) 측에서의 데이터 전송 에러 검출부(26)에서는 클라이언트(20)로부터 검사 패킷을 수신하게 되면, 그에 대한 응답 패킷을 클라이언트(20)로 전송한다. 서버(10) 역시 각 회선별로 패킷이 수신된 마지막 시간을 기억해 둔 뒤, 패킷이 수신된 마지막 시간과 현재 시간이 일정 시간 이상 차이 나면 해당 회선이 통신 불가능한 상태라고 판단하고 해당 회선을 차단한다. 도 6의 4번 회선은 데이터 전송 에러 검출부(26)에 의하여 회선이 차단된 상태를 나타낸 것이다. 4번 회선이 차단되었기 때문에 데이터 패킷은 4번 회선을 통해 전송되지 않고, 2, 3, 4번 회선을 이용하여 전송되게 된다. 상기의 에러 검출에 의한 회선 차단을 통하여, 데이터 전송의 효율을 높일 수 있는 것은 물론 장애 회선을 통해 데이터 패킷이 유실되는 것을 방지할 수 있는 이점도 얻을 수 있다.
이상에서, 본 발명의 바람직한 실시예를 참조하여 본 발명의 구성을 설명하였으나, 본 발명이 상기 실시예에 한정되는 것이 아님은 물론이며, 첨부한 청구범위 및 도면에 의해 파악되는 본 발명의 범위 내에서 여러 가지의 변형, 수정 및 개선이 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 충분히 이해할 수 있을 것이다.