KR100895294B1 - EPON MAC에서 단편화 손실(fragmentloss) 방지를 위한 유효 프레임 길이 검출 방법 - Google Patents

EPON MAC에서 단편화 손실(fragmentloss) 방지를 위한 유효 프레임 길이 검출 방법 Download PDF

Info

Publication number
KR100895294B1
KR100895294B1 KR1020070105753A KR20070105753A KR100895294B1 KR 100895294 B1 KR100895294 B1 KR 100895294B1 KR 1020070105753 A KR1020070105753 A KR 1020070105753A KR 20070105753 A KR20070105753 A KR 20070105753A KR 100895294 B1 KR100895294 B1 KR 100895294B1
Authority
KR
South Korea
Prior art keywords
frame
length
ethernet
flength
sum
Prior art date
Application number
KR1020070105753A
Other languages
English (en)
Other versions
KR20080050302A (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 KR20080050302A publication Critical patent/KR20080050302A/ko
Application granted granted Critical
Publication of KR100895294B1 publication Critical patent/KR100895294B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • H04Q11/0001Selecting arrangements for multiplex systems using optical switching
    • H04Q11/0062Network aspects
    • H04Q11/0066Provisions for optical burst or packet 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/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]

Landscapes

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

Abstract

본 발명은 ONU가 OLT로 이더넷 프레임 형태의 데이터를 전송하는 경우에 있어서 단편화 손실(fragmentation loss)이 없는 게이트(gate) 크기의 설정을 위해 ONU의 실제 데이터 크기이며 ONU가 보고 프레임의 형태로 OLT로 전송하는 유효 프레임 길이의 검출 방법에 관한 것이다. 이더넷 프레임이 ONU의 프레임 버퍼로 입력(또는 출력)되는 경우에 있어서, 상기 프레임 버퍼를 OLT와의 관계에서 이미 설정된 기준치들을 기준으로 나눈 후 상기 기준치들, 이미 입력된 이더넷 프레임들의 길이 및 상기 입력(또는 출력)되는 이더넷 프레임의 길이를 이용하여 유효 프레임의 길이를 검출하는 방법들을 제시한다.

Description

EPON MAC에서 단편화 손실(fragment loss) 방지를 위한 유효 프레임 길이 검출 방법{Method of detecting effective frame length for preventing fragment loss in ethernet passive optical network media access control}
본 발명은 EPON MAC(Ethernet Passive Optical Network Media Access Control)에서 단편화 손실(fragment loss) 방지를 위한 유효 프레임의 길이를 검출하는 방법에 관한 것이다.
본 발명은 정보통신부 및 정보통신연구진흥원의 IT신성장동력핵심기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2005-S-401-02, 과제명: 초고속 광가입자망 기술개발].
TDMA(Time Division Multiple Access) 전송방식을 사용하는 EPON 시스템에서 OLT(Optical Line Terminal)는 자신의 제어를 받는 다수의 ONU(Optical Network Unit)로 하여금 특정한 시간에 주어진 양의 데이터를 전송하도록 제어한다. 이 경우 각 ONU는 OLT로부터 전송 가능한 시간을 할당 받기까지 이더넷 프레임(ethernet frame)의 형태로 구현되는 전송 데이터를 프레임 버퍼(frame buffer)에 저장한다.
이때 만일 OLT가 프레임 버퍼에 저장된 전송 데이터의 길이(length) 정보를 명확히 알지 못하면, 각 ONU가 자신에게 할당되는 전송 가능한 데이터 량(이하 ‘gate’)에 해당하는 데이터를 OLT로 전송시에 fragmentation loss 현상(주어진 gate가 전송되어야 할 이더넷 프레임의 실제 길이보다 작아서 이더넷 프레임이 OLT로 전송되지 못하고 gate가 낭비되는 현상)이 발생할 수 있다.
fragmentation loss 현상을 방지하기 위해, 종래에는, 각 ONU의 프레임 버퍼에 전송 대상 데이터 량의 기준치(threshold)를 설정하고 각 ONU가 OLT로 보내는 보고 프레임(report frame)에 이 기준치 보다 작은 프레임 길이 정보(유효 프레임 길이 정보)를 포함시켜 보내어, OLT로 하여금 기준치 보다 작은 유효 프레임 길이로 ONU에 gate를 할당하여 fragmentation loss 현상을 제거토록 했다. 그리고 OLT로 하여금 기준치를 조정할 수 있는 방안을 제시하고 있으며 ONU로 하여금 다수의 기준치를 설정/관리하도록 하고 있다.
그러나 ONU가 다수의 기준치를 설정/관리함에는 많은 문제점이 발생한다.
예를 들면 하나의 ONU에 하나의 프레임 버퍼가 존재하는 경우 해당 프레임 버퍼에 다수의 기준치를 설정한다면, ONU는 각 기준치 보다 작은 유효 프레임 길이를 검출하기 위해 프레임 버퍼에 저장된 프레임의 길이를 항상 계수(count)하고 있어야 하며, 그 계수 결과를 또 다른 메모리에 저장해 두어야 한다. 이 경우 많은 양의 메모리와 제어회로가 소요되는 문제가 발생하며 특히, 기준치가 다수이고 각 기준치가 가변임을 고려하면 하드웨어/소프트웨어 양 측면 모두에서 부하의 심각한 증가를 초래할 수밖에 없다.
본 발명은 상기와 같은 문제를 해결하기 위해 창안된 것으로, 본 발명의 목적 및 이루고자하는 기술적 과제는 fragmentation loss 현상을 방지하기 위한 보다 효율적인 유효 프레임의 길이 검출 방법을 제공하는 것에 있다.
상기와 같은 기술적 과제를 달성하기 위해 본 명세서에서 개시하는 유효 프레임 길이 검출 방법은, (a) 전송할 데이터의 크기에 대한 기준치를 프레임 버퍼에 하나 이상 설정하는 단계; (b) 상기 프레임 버퍼에 기존에 입력되어 있는 이더넷 프레임들의 길이의 합과 상기 합보다 큰 기준치들 중 최소인 기준치와의 차인 잔여 프레임 길이를 구하는 단계; 및 (c) 상기 프레임 버퍼에 새로이 입력되는 이더넷 프레임의 길이가 상기 잔여 프레임 길이보다 작으면 상기 기존에 입력되어 있는 이더넷 프레임들의 길이의 합을 유효 프레임 길이로 검출하고, 그렇지 않으면 상기 기존에 입력되어 있는 이더넷 프레임들의 길이의 합과 상기 새로이 입력되는 이더넷 프레임의 길이의 합을 유효 프레임 길이로 검출하는 단계;를 포함하여 본 발명의 목적 및 기술적 과제를 달성한다.
상기와 같은 기술적 과제를 달성하기 위해 본 명세서에서 개시하는 유효 프레임 길이 검출의 또 다른 방법은, (a) 전송할 데이터의 크기에 대한 기준치를 프레임 버퍼에 하나 이상 설정하는 단계; (b) 상기 프레임 버퍼에 입력된 이더넷 프레임들 중 출력되는 이더넷 프레임보다 먼저 입력된 이더넷 프레임들의 길이의 합 과 상기 먼저 입력된 이더넷 프레임들의 길이의 합보다 큰 기준치들 중 최소인 기준치와의 차인 잔여 프레임 길이를 구하는 단계; 및 (c) 출력되는 이더넷 프레임의 위치로 이동되는 이더넷 프레임들의 길이와 상기 잔여 프레임 길이로부터 유효 프레임 길이를 도출하는 단계;를 포함하여 본 발명의 목적 및 기술적 과제를 달성한다.
본 발명은 최소의 하드웨어 및 소프트웨어를 이용하여 실시간으로 프레임 버퍼에 설정된 하나 이상의 기준치에 따른 유효 프레임 길이를 검출할 수 있는 방안을 제시한다.
본 발명에서 제시한 방법을 사용함으로써, ONU는 하나의 최소 크기의 frame length 메모리(FLB)를 이용하여 임의 길이를 가지는 다수개의 이더넷 프레임 버퍼의 다수 기준치를 손쉽게 운용할 수 있을 뿐 아니라 동작 중에 Queue의 개수, 크기가 바뀌거나 아니면 각 Queue에 할당된 기준치의 개수 및 크기가 바뀌더라도 손쉽게 대응할 수 있다.
이하, 본 발명의 기술적 사상 및 기술적 해결 수단을 명확화하기 위한 발명의 구성을 본 발명의 실시예에 근거하여 첨부 도면을 참조하여 상세히 설명하되, 도면의 구성요소들에 참조번호를 부여함에 있어서 동일 구성요소에 대해서는 비록 다른 도면상에 있더라도 동일 참조번호를 부여하였으며 당해 도면에 대한 설명시 필요한 경우 다른 도면의 구성요소를 인용할 수 있음을 미리 밝혀둔다.
본 발명은 하나 이상의 기준치가 설정된 ONU의 프레임 버퍼(Queue)를 설정된 기준치의 개수 보다 하나 많고 연속적으로 연결된 가상 논리적 버퍼로 분할하여 관리하며, 이들 가상 논리적 버퍼에 대해 프레임 데이터의 쓰기(write) 또는 읽기(read) 동작을 통한 프레임 데이터의 입출력 량의 관계로부터 각 기준치에 따른(각 논리적 버퍼에 대한) 유효 프레임 길이를 실시간으로 검출한다. 예를 들어, 도 2b를 참조하면, Queue#2(첨부 도면에서는 프레임 버퍼를 Queue로 표시하였다)의 경우 하나의 Queue가 두 개의 기준치(TH2_1=90KB, TH2_2=190KB)에 의해 세 개의 가상 논리적 버퍼로 분할되고, 이들 각 가상 논리적 버퍼는 연속적으로 연결되어 있다.
한편, ONU는 다수의 프레임 버퍼를 가질 수 있으며 각 프레임 버퍼에는 출력 우선순위 즉, OLT로의 데이터 전송 우선순위가 부여된다. 여기서는 그 우선순위의 반영을 위한 방법 중 하나로서, 각 프레임 버퍼에 대한 이더넷 프레임의 쓰기 또는 읽기를 FIFO(First In First Out)에 의하도록 구현한다.
본 발명은 이더넷 프레임 전송 시스템의 초기 power-on 후에 CPU와의 인터페이스를 통해 ONU의 Queue 개수, 각 Queue당 기준치의 개수에 따른 Queue set 개수( 각 Queue 당 가상 논리적 버퍼의 개수,n), 기준치 및 프레임 길이 계수 방법(length counting method)을 결정한다.
각 Queue에 저장된 프레임 길이 정보는 별도의 프레임 길이 정보 저장 메모리(Frame length 메모리, 도 2b의 맨 하단에 제시됨)에 저장되며, 이 메모리의 depth는 각 Queue에 저장될 수 있는 최대 프레임의 개수의 합과 같다. Frame length 메모리는 버퍼(buffer)로 구현되고 이하에서 Frame length 메모리는 FLB(Frame Length Buffer)로 칭한다. 한편 도 2b에서 보는 바와 같이 각 Queue는 자신의 base address(Base_addr for Queue#X)를 가진다.
FLB는 ONU에 구현된 프레임 버퍼에 저장 가능한 모든 이더넷 프레임(전송 데이터)의 길이를 저장할 수 있어야 하며, 총 프레임 버퍼의 depth를 64로 나눈 값을 사용한다. 또한 FLB의 data width는 최대 프레임 길이(flength_max)를 나타낼 수 있어야 하며, 따라서 data width = Ceil(Log22flength_max)로 한다. Ceil(A)은 수학적인 의미로 A보다 큰 가장 작은 정수를 구하는 것이다.
각 Queue 별로 base address를 달리하는 것 이외의 모든 Queue에서의 본 발명의 동작은 동일하므로 이하에서는 설명의 편의를 위해 ONU에 존재하는 다수개의 Queue 중 하나의 Queue 의 동작(Queue#X의 동작)을 기준으로 본 발명의 메커니즘을 설명한다.
<WRITE 동작에 의한 유효 프레임 길이의 검출>
프레임 버퍼에 OLT로 전송할 데이터에 해당하는 이더넷 프레임이 Queue#X의 가상 논리적 버퍼 (n+1)에 입력되면 쓰기(write) 동작에 의한 유효 프레임 길이의 검출이 수행된다. 먼저 입력 이더넷 프레임의 frame byte counter 인 Bcnt와 FEC(Forward Error Correction) parity byte counter인 Pcnt를 초기화한다[Bcnt ← 0, Pcnt ← 0]. FEC는 전송선로 상의 에러를 수신기에서 정정하는 기능을 의미한다.
한편 FLB에는 각 이더넷 프레임 중 실질 데이터에 해당하는 프레임의 길이(Bcnt)와 함께 IFG(Inter Frame Gap), preamble 및 FEC parity byte(Pcnt*16)가 저장되어야 한다. 이더넷 프레임의 입력이 계속되면 Bcnt는 증가하고[Bcnt ← Bcnt + 1], Pcnt는 입력되는 이더넷 프레임들의 길이에 따라 필요한 FEC parity byte를 계산한다. EPON은 Reed-Solomon code(239,255)를 사용하므로 프레임 길이 239 byte마다 16 byte의 FEC parity가 소요된다[Pcnt ← Ceil(Bcnt/239)].
이더넷 프레임의 입력이 완료되면 입력 이더넷 프레임의 총 길이(flength)가 결정되는데, flength는 이더넷 프레임 중 실질 데이터에 해당하는 프레임의 길이(Bcnt), preamble, IFG 및 FEC parity byte의 합으로 결정[flength = Bcnt + preamble + IFG + Pcnt*16]된다.
다음으로 상기 flength 값과 함께 FEC의 운용 여부(FEC_en)를 FLB에 저장하되, 선행 입력되어 있는 이더넷 프레임들의 길이 정보가 저장된 번지의 다음 최초 번지인 waddr_Qx 번지(Queue#X의 write address)에 저장한다[FLB(waddr_Qx) ← (flength, FEC_en)]. 다음으로 차후에 입력되는 이더넷 프레임의 길이 정보가 기록될 주소 값을 지정하기 위해 waddr_Qx 번지를 하나 증가시킨다[waddr_Qx ← waddr_Qx + 1].
다음으로 프레임 버퍼 Queue#X에 선행 입력되어 있는 이더넷 프레임들의 길이 값의 총합(flength_ThX)이 Queue#X의 i번째 기준치(ThX_i) 보다 작고 아울러 이 총합과 입력 프레임의 총 길이(flength)를 합한 값이 ThX_i보다 크면, Queue#X에 선행 입력되어 있는 이더넷 프레임들의 길이 값의 총합(flength_ThX)을 ThX_i에 대한(논리적 버퍼 i에 대한) 유효 프레임 길이인 flength_ThX_i로 검출한다[flength_ThX_i ← flength_ThX]. 만약 여기서 flength_ThX와 flength를 합한 값이 ThX_i보다 작으면, ThX_i에 대한(논리적 버퍼 i에 대한) 유효 프레임 길이는 flength_ThX와 flength를 합한 값이 된다.
검출된 flength_ThX_i는 [waddr_Qx - 1] 번지에 저장되며, [waddr_Qx - 1] 번지를 FLB의 포인터(pointer) ptr_ThX_i로 지정한다[ptr_ThX_i ← waddr_Qx - 1]. 이는 n회 즉, Queue#X의 가상 논리적 버퍼의 개수에 해당하는 회수만큼 반복된다.
write 동작에 의한 유효 프레임 길이의 검출에 관한 이해의 편의를 위해 구체적 수치를 들어 예를 들어 제시하면 다음과 같다.
512 byte 크기의 Queue#X에 하나의 기준치(ThX_1)가 설정되어 있고 ThX_1가 300 byte라 가정하자. 현재 Queue#X에 200 byte의 이더넷 프레임 하나가 선행 저장되어 있고, 이 프레임의 길이가 FLB의 waddr_Qx = 1 번지 위치에 저장되어 있는 상황에서 64 byte 크기의 FEC를 수행해야 하는 하나의 이더넷 프레임이 입력된다고 하면,
1)입력되는 이더넷 프레임의 총 길이(flength) = 64(Bcnt) + 8(Preamble 크기) + 22(최소 IPG 크기 + FEC framing redundancy) + 16(FEC parity) = 110 byte.
2)입력되는 이더넷 프레임은 Queue #X에 저장되고, 그 프레임의 길이(flength=110 byte) 정보는 FLB의 2번지(waddr_Qx = 2)에 저장된다.
3)Queue #X에 선행 입력되어 저장된 프레임들의 길이 중 ThX_1(=300 byte)을 넘지 않는 최대 길이(flength_ThX=200 byte)와 입력 이더넷 프레임의 길이(flength=110 byte)를 합한 값(=310 byte)은 ThX_1(=300 byte) 보다 크게 되며, 따라서 ThX_1에 대한 유효 프레임 길이(flength_ThX_1)는 200 byte가 되며, 이 값 은 FLB의 [waddr_Qx -1 = 1]번지에 저장되고 이 번지는 FLB의 포인터(pointer) ptr_ThX_1로 지정된다.
4)만약 ThX_1을 넘지 않는 최대 길이(flength_ThX)와 입력 이더넷 프레임의 길이(flength)를 합한 값이 ThX_1 보다 작으면, ThX_1에 대한 유효 프레임 길이는 바로 ThX_1 자신이 된다.
<READ 동작에 의한 유효 프레임 길이의 검출>
프레임 버퍼에서 임의 길이의 이더넷 프레임이 OLT로 전송되기 위해 출력되면 읽기(Read) 동작에 의한 유효 프레임 길이의 검출이 수행된다. 읽기 동작은 프레임 버퍼로부터 이더넷 프레임이 출력되는 과정으로, 이는 해당 프레임 버퍼(Queue#X)에 존재하고 연속적으로 연결된 모든 가상 논리적 버퍼로부터 동일한 길이의 프레임이 출력되어 선행하는 가상 논리적 버퍼로 입력시키는 동작을 의미한다. 즉, Queue#X의 가상 논리적 버퍼 i로부터 소정 길이를 갖는 프레임이 출력되면 가상 논리적 버퍼 [i+1]에 있는 프레임이 그 소정 길이만큼 출력되어 가상 논리적 버퍼 i로 입력되는 것을 뜻한다.
read 동작은 먼저 프레임 버퍼 Queue#X의 가상 논리적 버퍼 1로부터 이더넷 프레임의 출력이 시작되면 그 출력 프레임의 길이(rd_flength_Qx)를 독출하는 것으로 시작된다. 다음으로 ThX_i에 의한 유효 프레임의 길이를 검출하기 위해 ptr_ThX_i가 지정하는 번지에 대한 flength_ThX_i의 검출이 진행된다. 도 3에서 ptr_ThX_i는 ThX_i를 넘지 않는 최대 유효 프레임 길이(flength_ThX_i)를 저장한 번지를 가리키는 포인터 값을 의미한다.
ptr_ThX_i가 지정하는 번지에 대한 flength_ThX_i의 검출은 다음과 같이 이루어진다. 먼저 rd_flength_Qx 값에 해당하는 길이의 프레임의 출력으로 인한 ThX_i에 의한 유효 프레임 길이(flength_ThX_i)는 현재 값(즉, 출력 이전의 유효 프레임 길이)에서 출력 프레임의 길이(rd_flength_Qx) 만큼을 뺀 값이 잠정적으로 지정된다[flength_ThX_i = flength_ThX_i(현재 값) - rd_flength_Qx].
다음으로 이렇게 얻어진 잠정적인 flength_ThX_i와 논리적 버퍼 [i+1]의 유효 프레임의 길이(FLB(ptr_ThX_i))의 합이 ThX_i 보다 작은지를 논리적 버퍼 [i+1]의 각 이더넷 프레임 단위로 판단한다[flength_ThX_i + FLB(ptr_ThX_i) < ThX_i ?]. 만일 작다고 판단되면 ThX_i에 의한 유효 프레임 길이(flength_ThX_i)로서 상기 잠정적인 flength_ThX_i와 FLB(ptr_ThX_i)의 합이 지정되어[flength_ThX_i ← flength_ThX_i + FLB(ptr_ThX_i)] ThX_i에 의한 유효 프레임의 길이가 검출된다. 그리고 ptr_ThX_i은 1만큼 증가한다[ptr_ThX_i ← ptr_ThX_i + 1].
이러한 read 과정은 가상 논리적 버퍼 i에서 출력된 프레임의 길이보다 가상 논리적 버퍼 [i+1]에서 가상 논리적 버퍼 i로 출력시키는 프레임의 길이의 총합이 크지 않는 범위 내에서 즉, ptr_ThX_i를 하나씩 증가시키면서 각 ptr_ThX_i의 경우에 대해 상기한 과정에 의해 도출되는 flength_ThX_i가 ThX_i를 넘지 아니하는 범위내에서 반복적으로 수행된다. 반복적으로 수행하는 과정 중에 flength_ThX_i 가 ThX_i를 넘는 경우에는 바로 전의 ptr_ThX_i의 경우에 얻어진 flength_ThX_i가 바로 ThX_i에 대한 유효 프레임의 길이로 검출된다.
그리고 유효 프레임의 길이의 검출은 Queue#X에 설정된 기준치의 개수에 따 라 진행된다. 이는 설정 기준치의 개수 보다 하나 많고 연속적으로 연결된 가상 논리적 버퍼 단위로 유효 프레임의 길이를 검출한다는 것과 동일 의미이다. 다시 말해 만일 Queue#X에 설정된 기준치의 개수가 2개 이면, ThX_1과 ThX_2에 대한 유효 프레임의 길이가 검출되며, 각 기준치에 따른 유효 프레임의 검출 방식은 상기에서 언급한 과정에 의한다.
read 동작에 의한 유효 프레임 길이의 검출에 관한 이해의 편의를 위해 구체적 수치를 들어 예를 들어 제시하면 다음과 같다.
하나의 ONU는 도 2b에 제시된 바와 같이 임의 길이를 가지는 다수개의 Queue를 가질 수 있다. Queue#2를 예로 들어 설명하면, Queue#2에는 두 개의 기준치인 Th2_1(=90KB)과 Th2_2(=190KB)가 설정되어 있으며, 이들 기준치로 인해 Queue#2는 세 개의 가상 논리적 프레임 버퍼로 분할된다(가상 논리적 버퍼 1 내지 가상 논리적 버퍼 3). 또한 도 2b의 최 하단에 제시된 FLB를 참조하면 Queue#2의 base address(Base_addr)는 2000이다.
Queue#2에 대한 FLB를 참조하면 Th2_1에 의한 유효 프레임 길이(flength_Th2_1)는 80KB(=60KB+20KB), Th2_2에 의한 유효 프레임 길이(flength_Th2_2)는 140KB(=60KB+20KB+20KB+40KB)이고, 최대 프레임 길이(flength_max)는 380KB이다.
만일 Queue#2의 논리적 버퍼 1에서 60KB의 길이(rd_flength_Qx=60KB)를 갖는 프레임 하나가 출력된다고 가정하자. 먼저 Th2_1에 의한 유효 프레임의 길이의 검출이 진행된다.
유효 프레임의 검출은 ptr_ThX_i 단위로 진행되며 본 예시에 의하면 우선 ptr_Th2_1=2인 경우의 flength_Th2_1의 검출이 진행된다.
우선, 60KB 길이의 프레임의 출력으로 인해 Th2_1에 의한 잠정적인 유효 프레임 길이(flength_Th2_1)는 현재 값(=80KB)에서 출력 프레임의 길이(=60KB) 만큼을 뺀 값(=20KB)이 된다[flength_Th2_1(=20KB) = flength_Th2_1(=80KB) - rd_flength_Qx(=60KB)].
잠정적인 flength_Th2_1(=20KB)와 FLB(ptr_Th2_1)(=20KB)의 합(=40KB)은 Th2_1(=90KB) 보다 작으므로[flength_Th2_1(=20KB) + FLB(ptr_Th2_1)(=20KB) < Th2_1(=90KB)], Th2_1에 의한 유효 프레임 길이(flength_Th2_1)로서 flength_Th2_1(=20KB)와 FLB(ptr_Th2_1)(=20KB)의 합(=40KB)이 잠정 지정된다[flength_Th2_1(=40KB) ← flength_Th2_1(=20KB) + FLB(ptr_Th2_1)(=20KB)]. 그리고 ptr_Th2_1은 1만큼 증가한다[ptr_Th2_1(=3) ← ptr_Th2_1(=2) + 1].
다음으로 ptr_Th2_1(=2)인 경우의 flength_Th2_1(=40KB)가 Th2_1(=90KB)에는 아직 여유가 있으므로 ptr_Th2_1(=3)인 경우의 flength_Th2_1를 도출할 필요가 있다.
ptr_Th2_1(=2)인 경우의 flength_Th2_1(=40KB)와 FLB(ptr_Th2_1)(=40KB)의 합(=80KB)이 Th2_1(=90KB) 보다 여전히 작으므로[flength_Th2_1(=40KB) + FLB(ptr_Th2_1)(=40KB) < Th2_1(=90KB)], Th2_1에 의한 유효 프레임 길이(flength_Th2_1)로서 flength_Th2_1(=40KB)와 FLB(ptr_Th2_1)(=40KB)의 합(=80KB)이 잠정 지정된다[flength_Th2_1(=80KB) ← flength_Th2_1(=40KB) + FLB(ptr_Th2_1)(=40KB)]. 그리고 ptr_Th2_1은 1만큼 증가한다[ptr_Th2_1(=4) ← ptr_Th2_1(=3) + 1].
다음으로 ptr_Th2_1(=3)인 경우의 flength_Th2_1(=80KB)도 Th2_1(=90KB)에는 아직 여유가 있으므로 ptr_Th2_1(=4)인 경우의 flength_Th2_1를 도출할 필요가 있다.
ptr_Th2_1(=4)인 경우의 flength_Th2_1(=80KB)와 FLB(ptr_Th2_1)(=80KB)의 합(=160KB)은 Th2_1(=90KB) 보다 크므로 ptr_Th2_1(=3)인 경우의 flength_Th2_1(=80KB)가 ptr_Th2_1(=4)인 경우의 flength_Th2_1로 최종 지정된다[break]. 따라서 Th2_1에 의한 유효 프레임 길이(flength_Th2_1)가 80KB로 검출된다.
Th2_1에 의한 유효 프레임의 길이가 검출되면 TH2_2에 대한 유효 프레임 길이(flength_Th2_2)의 검출이 진행되는데, 우선 ptr_Th2_2(=4)인 경우의 flength_Th2_2의 검출이 진행된다.
우선, 60KB 길이의 프레임의 출력으로 인해 Th2_2에 의한 잠정적인 유효 프레임 길이(flength_Th2_1)는 현재 값(=140KB)에서 출력 프레임의 길이(=60KB) 만큼을 뺀 값(=80KB)이 된다[flength_Th2_2(=80KB) = flength_Th2_2(=140KB) - rd_flength_Qx(=60KB)].
flength_Th2_2(=80KB)와 FLB(ptr_Th2_2)(=80KB)의 합(=160KB)이 Th2_2(=190KB) 보다 작으므로[flength_Th2_2(=80KB) + FLB(ptr_Th2_2)(=80KB) < Th2_2(=190KB)], Th2_2에 의한 유효 프레임 길이(flength_Th2_2)로서 flength_Th2_2(=80KB)와 FLB(ptr_Th2_2)(=80KB)의 합(=160KB)이 잠정 지정된다[flength_Th2_2(=160KB) ← flength_Th2_2(=80KB) + FLB(ptr_Th2_2)(=80KB)]. 그리고 ptr_Th2_2은 1만큼 증가한다[ptr_Th2_2(=5) ← ptr_Th2_2(=4) + 1].
다음으로 ptr_Th2_2(=4)인 경우의 flength_Th2_2(=160KB)가 Th2_2(=190KB)에는 아직 여유가 있으므로 ptr_Th2_2(=5)인 경우의 flength_Th2_2를 도출할 필요가 있다.
ptr_Th2_2(=4)인 경우의 flength_Th2_2(=160KB)와 FLB(ptr_Th2_2)(=80KB)의 합(=240KB)은 Th2_2(=190KB) 보다 크므로 ptr_Th2_2(=4)인 경우의 flength_Th2_2(=160KB)가 ptr_Th2_2(=5)인 경우의 flength_Th2_2로 최종 지정된다[break]. 따라서 Th2_2에 의한 유효 프레임 길이(flength_Th2_1)가 160KB로 검출된다.
상기한 방법에 따라 가상 논리적 버퍼 2에서는 20KB 프레임 하나와 40KB 프레임 하나가 출력되어 가상 논리적 버퍼 1로 입력될 것이며, ptr_Th2_1은 최종적으로 4번지로 이동할 것이다.
위에서 본 바와 같이 read 과정은 가상 논리적 버퍼 i에서 출력된 프레임의 길이보다 가상 논리적 버퍼 [i+1]에서 가상 논리적 버퍼 i로 입력시키는 프레임의 길이의 총합이 크지 않는 범위 내에서 반복적으로 수행된다.
본 방법발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함 한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다.
그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 균등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1은 본 발명의 바람직한 일실시예의 흐름도이다.
도 2a는 본 발명의 바람직한 일실시예의 또 다른 흐름이다.
도 2b는 본 발명의 구현예의 설명을 위한 예시도이다.

Claims (4)

  1. (a) 전송할 데이터의 크기에 대한 기준치를 프레임 버퍼에 하나 이상 설정하는 단계;
    (b) 상기 프레임 버퍼에 기존에 입력되어 있는 이더넷 프레임들의 길이의 합과 상기 합보다 큰 기준치들 중 최소인 기준치와의 차인 잔여 프레임 길이를 구하는 단계; 및
    (c) 상기 프레임 버퍼에 새로이 입력되는 이더넷 프레임의 길이가 상기 잔여 프레임 길이보다 작으면 상기 기존에 입력되어 있는 이더넷 프레임들의 길이의 합을 유효 프레임 길이로 검출하고, 그렇지 않으면 상기 기존에 입력되어 있는 이더넷 프레임들의 길이의 합과 상기 새로이 입력되는 이더넷 프레임의 길이의 합을 유효 프레임 길이로 검출하는 단계;를 포함하는 것을 그 특징으로 하는 EPON MAC에서 단편화 손실(fragmentaion loss) 방지를 위한 유효 프레임 길이 검출 방법.
  2. (a) 전송할 데이터의 크기에 대한 기준치를 프레임 버퍼에 하나 이상 설정하는 단계;
    (b) 상기 프레임 버퍼에 입력된 이더넷 프레임들 중 출력되는 이더넷 프레임보다 먼저 입력된 이더넷 프레임들의 길이의 합과 상기 먼저 입력된 이더넷 프레임들의 길이의 합보다 큰 기준치들 중 최소인 기준치와의 차인 잔여 프레임 길이를 구하는 단계;
    (c) 출력되는 이더넷 프레임 위치로 이동되는 이더넷 프레임들의 길이를 누적하여 합하는 단계; 및
    (d) 상기 누적하여 합한 값 중 상기 잔여 프레임 길이보다 작으면서 최대인 값과 상기 먼저 입력된 이더넷 프레임들의 길이의 합을 더한 값을 유효 프레임의 길이로 도출하는 단계;를 포함하는 것을 특징으로 하는 EPON MAC에서 단편화 손실(fragmentaion loss) 방지를 위한 유효 프레임 길이 검출 방법.
  3. 삭제
  4. 제 2 항에 있어서, 상기 (c)단계는
    (c11) 메모리에 상기 프레임 버퍼에 저장된 이더넷 프레임의 길이를 저장하고, 상기 메모리에 상기 기준치들에 대한 현재의 유효 프레임의 길이를 나타내는 이더넷 프레임의 길이를 가리키는 포인터들을 설정하는 단계; 및
    (c12) 상기 기준치에 대한 포인터를 이동시키며 상기 포인터가 가리키는 값을 누적하여 합하는 단계;를 포함하는 것을 특징으로 하는 EPON MAC에서 단편화 손실(fragmentaion loss) 방지를 위한 유효 프레임 길이 검출 방법.
KR1020070105753A 2006-12-01 2007-10-19 EPON MAC에서 단편화 손실(fragmentloss) 방지를 위한 유효 프레임 길이 검출 방법 KR100895294B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020060120983 2006-12-01
KR20060120983 2006-12-01

Publications (2)

Publication Number Publication Date
KR20080050302A KR20080050302A (ko) 2008-06-05
KR100895294B1 true KR100895294B1 (ko) 2009-04-29

Family

ID=39805790

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070105753A KR100895294B1 (ko) 2006-12-01 2007-10-19 EPON MAC에서 단편화 손실(fragmentloss) 방지를 위한 유효 프레임 길이 검출 방법

Country Status (1)

Country Link
KR (1) KR100895294B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030062526A (ko) * 2002-01-17 2003-07-28 삼성전자주식회사 기가비트 이더넷 수동 광 가입자 망 시스템에서의 동작구현방법 및 그 이더넷 프레임 구조
KR20050118663A (ko) * 2002-09-13 2005-12-19 패씨브 엘티디. 이더넷 수동 광통신망 내에서의 동적 대역 할당 및 큐 관리방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030062526A (ko) * 2002-01-17 2003-07-28 삼성전자주식회사 기가비트 이더넷 수동 광 가입자 망 시스템에서의 동작구현방법 및 그 이더넷 프레임 구조
KR20050118663A (ko) * 2002-09-13 2005-12-19 패씨브 엘티디. 이더넷 수동 광통신망 내에서의 동적 대역 할당 및 큐 관리방법

Also Published As

Publication number Publication date
KR20080050302A (ko) 2008-06-05

Similar Documents

Publication Publication Date Title
US7257080B2 (en) Dynamic traffic-based packet analysis for flow control
EP2074756B1 (en) Method, system, and computer program product for resequencing of data segments received over a bonding channel set
JP2782973B2 (ja) パケット網における流量監視方法及びシステム
KR102408176B1 (ko) 클라이언트 전송 방법 및 디바이스
CN111355549B (zh) 一种数据保护方法及装置
CN111817977A (zh) 一种网络拥塞控制方法和装置
US20170289066A1 (en) Facilitating communication of data packets using credit-based flow control
TW201330538A (zh) 光網路單元及其方法
US20020035655A1 (en) Method of checking for and recovering from underruns and overrun slips when writing to circular buffers in dynamic bandwidth circuit emulation services
JPWO2012144041A1 (ja) 中継装置、及び復旧方法
CN1359067A (zh) 使循环缓冲器中的数据有效的方法
EP1491995B1 (en) Dual-port functionality for a single-port cell memory device
JP5267193B2 (ja) Ponシステムとこれに用いる宅側装置及びその送信制御方法
KR100895294B1 (ko) EPON MAC에서 단편화 손실(fragmentloss) 방지를 위한 유효 프레임 길이 검출 방법
EP1654651B1 (en) Method and apparatus for providing tandem connection, performance monitoring, and protection architectures over ethernet protocols
US8856399B2 (en) System and method for determining non-fragmentation for communication of packets
CN101854259A (zh) 一种数据包的计数方法及系统
US6754743B2 (en) Virtual insertion of cells from a secondary source into a FIFO
CN112995060B (zh) 一种基于硬件计数器的流量控制方法
CN103888211A (zh) 一种交叉芯片间进行数据传输的方法及装置
CN1996807B (zh) 一种实现无损伤虚级联延时补偿的方法
JP4252379B2 (ja) 可変長フレームバッファ装置
CN1213577C (zh) 一种在成帧器中实现高速率数据复接的方法
CN1373570A (zh) 一种检测及恢复欠载和过载滑移的方法
JP3565629B2 (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
LAPS Lapse due to unpaid annual fee