[go: up one dir, main page]

KR19980702323A - 패킷 자동 재전송용 네트워크 어댑터 장치 및 그 방법 - Google Patents

패킷 자동 재전송용 네트워크 어댑터 장치 및 그 방법 Download PDF

Info

Publication number
KR19980702323A
KR19980702323A KR1019970705720A KR19970705720A KR19980702323A KR 19980702323 A KR19980702323 A KR 19980702323A KR 1019970705720 A KR1019970705720 A KR 1019970705720A KR 19970705720 A KR19970705720 A KR 19970705720A KR 19980702323 A KR19980702323 A KR 19980702323A
Authority
KR
South Korea
Prior art keywords
transmission
packet
collision
buffer
threshold
Prior art date
Application number
KR1019970705720A
Other languages
English (en)
Inventor
폴 기디언
워씨머 아비아드
벤-마이클 시모니
하위 윌리엄
Original Assignee
아더 더블유. 피셔
디지탈 이큅먼트 코오포레이숀
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아더 더블유. 피셔, 디지탈 이큅먼트 코오포레이숀 filed Critical 아더 더블유. 피셔
Publication of KR19980702323A publication Critical patent/KR19980702323A/ko

Links

Classifications

    • 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/40Bus networks
    • H04L12/40006Architecture of a communication node
    • H04L12/40032Details regarding a bus interface enhancer
    • 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/40Bus networks
    • H04L12/407Bus networks with decentralised control
    • H04L12/413Bus networks with decentralised control with random access, e.g. carrier-sense multiple-access with collision detection [CSMA-CD]
    • 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/40Bus networks
    • H04L12/40006Architecture of a communication node
    • H04L12/40013Details regarding a bus controller

Landscapes

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

Abstract

본 발명의 방법은 패킷의 자동 재전송용 컴퓨터 네트워크 어댑터에 의해 구현되며, 패킷 전송은 다음 단계를 수반하는 다수의 과잉 충돌의 발생에 의해 중단된다. (a) 과잉 충돌 회수가 과잉 충돌 한계값 이하이면, 전송을 중단하고 패킷의 전송을 다시 즉각적으로 개시한다. (b) 과잉 충돌 회수가 과잉 충돌 한계값을 초과하게 되면, 전송을 중단하고 패킷을 폐기한다. 또한, 본 발명의 방법은 전송 버퍼 언더플로우 상태에 기인한 비성공적인 전송 시도에 포함된 임으의 패킷의 자동 재전송을 수행하며, 다음 단계들을 수반한다. (a) 전송을 중단한다. (b) 증가된 전송 임계값으로 소정 회수의 시도까지 패킷의 다른 전송을 재실행한다. 전송 임계값은 전송의 개시에 앞서 전송 버퍼에 저장된 전송과 관련된 패킷 데이타의 바이트수가 된다. 초기 전송 시도에 대해, 어댑터는 전송 버퍼에 저장될 소수의 패킷 데이타만을 필요로하는 것이 바람직하다. 버퍼 언더플로우 상태가 발생한 후, 어댑터는 패킷의 대부분이 전송용 전송 버퍼내에 진입한 후 알고리즘에 따라 재실행을 시도한다. 만일 재실행이 성공적이면, 어댑터는 인터럽트를 수행할 필요가 없다.

Description

패킷 자동 재전송용 네트워크 어댑터 장치 및 그 방법
이더넷은 통상적으로 반송파 감지 다중 엑세스/충돌 검출(CSMA/CD) 기법이라 불리는 네트워크 엑세스 프로토콜을 사용하는 LAN에 사용된다. CSMA/CD 프로토콜은 미국, 뉴욕 10017, 뉴욕, 345 이스트 45 스트리트에 소재한, IEEE(the Institute of Electrical and Electronics Engineers, Inc.)에 의해 발행된, ANSI/IEEE std. 802.3에 정의되어 있다. 여기서의 표준사양은 10 Mbps CSMA/CD 채널(예컨대, 네트워크 버스)에 적용되는 반면, 본 발명은 이러한 채널에 한정되지 않으며, 예컨대 100 Mbps 에서 동작하는 다른 채널에도 적용될 수 있다는 것을 알 수 있을 것이다.
채널 엑세스 제어 프로토콜용의 CSMA/CD 기법하에서, 네트워크의 모든 노드는 동등한 엑세스 우선순위를 가지며 채널이 클리어되는 즉시 전송을 개시할 수 있다. 메시지의 전송을 원하는 임의의 노드는 전송을 개시하기 전에, 먼저 채널이 클리어되었는지를 확인하여야 한다. 만일 전송하기를 원하는 노드에 있어서 패킷간(inter-packet) 지연 또는 갭이라 불리는 소정 시간 주기, 예컨대 9.6 마이크로초 동안 어떤 다른 전송이 검출되지 않았다면, 이 노드는 전송을 개시하게 된다. 이 노드는 패킷이라고도 불리며 각각이 소정 크기를 갖는 복수의 블록내의 네트워크 시스템을 통해 메시지와 제어 정보를 전송한다.
본 발명의 이해를 위해, 과잉 충돌(excessive collision), 네트워크 어댑터 버퍼 언더플로우(underflow)를 포함하는 여러 가지의 일반적이며 잠재적인 네트워크-성능-저하 상태 또는 조건들에 대해서 논의될 것이다.
A.충돌 처리 및 과잉 충돌
만일 하나 이상의 노드가 채널을 통해 동시에 패킷을 전송하고자 한다면, 노드에서 출력된 신호들이 서로 겹쳐서 오전(誤傳:garble)될 수 있다. 채널을 통한 패킷의 다중 전송에서 상기와 같은 상황을 충돌이라 한다.
통상적으로, 전송을 개시한 노드가 충돌을 검출한다면, 전송을 원하는 모든 노드가 충돌을 검출할 것이라는 것을 확인하기 위해 충돌 윈도우(collision window)라 불리는 소정 시간 동안 전송을 계속한다. 충돌을 검출한 후 충돌 윈도우 동안 노드가 전송하는 것은 예컨대, CSMA/CD 프로토콜에 따른 JAM이라 불리는 32비트의 0과 1의 반복인 의미없는 데이타이다. 예컨대, 전송할 데이타 패킷을 갖는 모든 다른 노드인 모든 다른 활성 노드는 충돌을 검출하고 32 비트 JAM을 전송할 것이다. 이어서, 충돌을 검출한 모든 노드는 전송을 종료한다.
충돌에 관련된 노드는 패킷간 지연에 부가적인 지연시간을 합한, 종종 백오프(backoff)라 불리는 시간 주기 동안 전송을 중지한다. 이 백오프는 통상적으로 노드에 의해 랜덤하게 선택된 어떤 다양한 지속기간을 가지게 되어, 충돌에 관련된 다른 노드에 의해 제공된 백오프와 일반적으로 상이하게 된다. 이들 각각의 백오프 시간이 경과된 후, 액티브 노드는 그들 각각의 패킷을 다시 재전송한다. 다양하고 상이한 백오프시간으로 인해, 재전송은 성공적일 확률이 높다. 즉, 노드는 다른 충돌을 일으키지 않을 것이다.
물론, 재전송시에서의 제 1 시도는 성공적이지 않을 수 있다. 그러면, 다른 백오프 시간을 가지고, 전송이 성공할 때까지 또는 소정의 최대 가능 수(예컨대, CSMA/CD 프로토콜에 따르면 16번)의 시도가 행해지고 충돌에 의해 모두 종료될 때까지 재전송이 반복된다. 성공적인 전송을 못하고 최대 전송 시도를 행했다면, 관련 노드는 과잉 충돌이라 여기고 전송 준비되었던 패킷을 버린다. 이 과잉 충돌은 상위 네트워크 층에 통보된다. 이 결과 상위 네트워크 층에 의한 복원은 상당 시간(예컨대, 몇 초) 경과 후 행해지기 때문에 시스템 성능의 저하를 가져오게 되며, 실질적으로 패킷 지연이 되는 것이다. 또한, 이러한 상황으로 인해 프로세서 처리 시간의 소비를 가져오므로 시스템 성능이 저하된다.
요약해서 말하면, 재전송 사이의 백오프 시간과 상위 프로토콜 층의 관련으로 인해, 과잉 충돌 이은 재전송으로 관련 패킷의 전송이 장시간 지연됨으로써 시스템 성능이 저하된다.
B.네트워크 어댑터 및 버퍼 언더플로우
네트워크 동작상의 단점은 네트워크의 각 노드에 위치한 이더넷 어댑터와 같은 네트워크 어댑터내에서 발생한다. 통상적으로, 네트워크 어댑터는 어댑터를 포함하는 호스트 노드와 이 호스트 노드가 접속된 네트워크 시스템 사이의 통신을 관리한다.
예컨대, 네트워크 어댑터는 네트워크 시스템에 접속된 디스크 저장 장치와 호스트 노드의 주 메모리 사이의 데이타 이동을 제어한다. 인바운드(inbound:어댑터내로 들어오는) 데이타가 디스크 저장 장치로부터 수신될 때, 네트워크 어댑터는 상기 데이타를 호스트 노드의 주 메모리로 전송하여 추가적인 처리를 대기한다. 네트워크 어댑터는 전송을 하기 위해, 호스트 노드의 소자가 접속된 시스템 버스로의 엑세스를 획득하여야 한다. 이와 유사하게, 네트워크 어댑터는 데이타가 주 메모리로부터 시스템 버스를 통해 회수된 후 아웃바운드(outbound:어댑터로부터 나가는) 데이타를 네트워크로 전송한다.
네트워크 시스템과 시스템 버스는 공유 자원이 될 수 있으며, 상이한 방향으로의 데이타 전송이 유효하도록 하는 엑세스를 획득하기 위한 중재를 요청한다. 따라서, 네트워크 어댑터를 통한 데이타의 전송은 공유 자원의 제어를 필요로 한다. 이러한 공유 자원의 제어는 통상적으로 (i) 공유 자원에 대한 엑세스 요청 및 이 엑세스 요청에 따른 엑세스 허가와, (ii) 공유 자원으로 또는 공유 자원으로부터의 소정 크기의 데이타의 버스트를 포함한다. 공유 자원은 호스트 노드의 다른 소자에 대한 동작 수행으로 바쁘기 때문에, 공유 자원을 항상 즉각적으로 사용할 수 있는 것은 아니다. 공유 자원을 엑세스하기 위한 요청과 이 공유 자원에 대한 엑세스의 허가 사이의 시간은 공유 자원의 지연으로 구성된다. 통상적으로, 시간 지연은 시스템에 따라 변하며, 네트워크 시스템 또는 시스템 버스의 처리율과 네트워크 시스템 및 시스템 버스에 접속된 장치(예컨대, 호스트 장치)의 수에 따라 달라지게 된다.
가변 지연시간을 수용하기 위해, 네트워크 어댑터는 통상적으로 수신 및 송신 경로 모두에 버퍼 메모리를 포함한다. 수신용 버퍼는 네트워크 시스템과 시스템 버스 사이의 수신 경로를 따라 배치되어, 공유 자원, 예컨대 시스템 버스로의 엑세스가 획득되어 전송이 개시될 수 있을 때까지 입력 데이타를 일시적으로 저장할 수 있다.
전송 버퍼는 시스템 버스와 네트워크 시스템 사이의 송신 경로를 따라 배치되어, 아웃바운드 데이타를 일시적으로 저장할 수 있다. 일단 네트워크 시스템으로의 엑세스가 허용되면, 한 블록의 데이타, 예컨대 패킷은 통상 소정의 전송률로 네트워크 시스템으로 전송되어야 한다. 전송 버퍼는 일반적으로, 예컨대 시스템 버스로의 엑세스가 아직 허용되지 않았을 때조차 일정한 아웃바운드 데이타 스트림을 상기 전송률로 전송시킬 수 있다.
어떤 상황하에서 버퍼 언더플로우라 불리는 문제점이 발생할 수 있다. 버퍼 언더플로우는 전송 버퍼내에서 필요한 전송률을 유지하기 위한 데이타가 충분하지 않은 경우 발생하며, 데이타 부족분을 채우기 위해 공유 자원, 예컨대 시스템 버스로의 엑세스는 획득될 수 없다.
버퍼 언더플로우는 또한 공유 자원, 예컨대 시스템 버스로부터 전송 버퍼로 입력되는 데이타 전송률이 전송 버퍼로부터 네트워크 시스템으로 출력되는 데이타 전송률보다 작은 경우 발생할 수 있다. 이 현상은 시스템 버스의 높은 지연시간으로 노드내에서 발생할 수 있다. 이 현상은 또한 시스템 버스의 평균 처리율이 네트워크 시스템의 최대 처리율보다 큰 경우에도 발생할 수 있는데, 이는 시스템 버스에서 활성의 버스티(bursty) 특성 때문이다. 즉, 시스템 버스가 정규적으로 높은 지연시간을 갖지 않는다 하더라도 어댑터에 긴 시스템 버스 지연시간이 있으면 개별 시간 주기가 있다.
언더플로우 상태가 발생하면, 통상적으로 노드는 패킷 전송을 중단하고 전송되지 않은 패킷 부분을 폐기하고, 노드의 프로세서에 인터럽트 신호를 보낸다. 인터럽트는 전송이 언더플로우 상황에 의해 중단되었다는 것을 나타낸다. 상위 네트워크 프로토콜 층은 중단된 패킷의 수신 승인을 인식하지 못할 것이기 때문에, 결국 종료되어, 상기 기술된 바와 같이 이 상태로부터 획복하기 위한 활성을 개시할 것이다. 상기 주지된 바와 같이 이러한 목적을 위한 상위 네트워크 프로토콜 층의 관련으로 인해 시간의 소비와 시스템 성능(프로세서 시간에 대한) 및 네트워크 성능(패킷 지연에 관한)의 저하를 야기시킨다.
버퍼 언더플로우를 피하기 위해, 소정량의 데이타가 전송 버퍼내로 진입한 후 공지된 네트워크 어댑터가 전송을 개시하는데, 상기 소정 데이타량은 전송 임계량이라 불린다. 이 전송 임계량은 전송될 패킷의 모든 바이트수와 같은 바이트수로 설정될 수 있으며, 예컨대 1518 바이트의 패킷중에서 128 바이트가 전송 버퍼내에 있으면 이 전송 임계량이 설정될 수 있다. 불행히도, 이러한 접근 방법은 전송 개시에 전송 지연을 더하며, 데이타량이 획득되는데 걸리는 시간과 같으며, 전송 버퍼내에 저장되는데, 이것을 내부 전송 지연이라 부른다. 이 지연이 벤치마킹(benchmarking) 구동기가 어댑터에서 동작할 때 획득된 결과를 저하시키며, 이러한 지연이 패킷간 갭보다 더 길다면 특히 네트워크 처리량에 크게 영향을 줄 수 있다.
본 발명은 이더넷(Ethernet) 네트워크와 같은 로컬 에리어 네트워크(LAN:Local Area Network:근거리 통신망), 더 상세히 말해서 네트워크를 통해 통신을 제어하는 네트워크 어댑터에 관한 것이다.
도 1은 본 발명의 실시예에 따라 네트워크 시스템에 접속된 노드를 나타낸 블록도.
도 2는 본 발명의 실시예에 따라 도 1의 어댑터에 의해 구현될 수 있는 언더플로우 상태 이후 자동적으로 재전송하는 알고리즘을 나타낸 플로우챠트.
도 3은 본 발명의 실시예에 따라 도 1의 어댑터에 의해 구현될 수 있는 과잉 충돌 복귀에 대한 알고리즘을 나타낸 플로우챠트.
본 발명은 예컨대 과잉 충돌이나 버퍼 언더플로우 상황과 같은 바람직하지 않은 전송 상태에서 패킷의 재전송을 자동으로 실행하며, 공유 자원에 접속되고 전송 버퍼를 갖는 컴퓨터 네트워크 어댑터에 의해 구현된 방법을 제공하는데, 여기서 패킷에 대해 이전에 충돌된 회수가 과잉 충돌 한계 이하이면 충돌후 즉시(그리고 백오프 없이)재전송이 시도된다. 특히, 본 발명의 방법은 발생된 어떤 충돌을 검출하는 단계와, 각 검출된 충돌을 충돌 계수 한계까지 계수하는 단계를 포함한다. 충돌 계수 한계에 도달할 때마다, 본 발명의 방법은 과잉 충돌 회수를 나타내는 과잉 충돌 계수를 증분시킨다. 만일 과잉 충돌 계수가 한계를 초과하면, 본 발명의 방법은 패킷의 재전송을 중단하고, 어댑터의 전송 버퍼에 저장된 패킷 데이타를 무시한다.
과잉 충돌 한계는 상수값이 될 수 있으며, 네트워크의 전송량 상태에 따라 동적으로 결정될 수 있다.
본 발명은 전송 버퍼 언더플로우에 의한 성공하지 못한 전송 시도에 관련된 어떤 패킷을 자동으로 재전송하는 컴퓨터 네트워크 어댑터에 의해 구현된 방법을 제공하는데, 여기서 전송 임계량 값은 초기 전송 시도에 대한 상대적으로 작은 값으로부터 재전송을 위한 더 높은 값으로 증가한다. 본 발명의 방법은 일반적으로 (a) 언더플로우 조건 상태의 발생시 버퍼의 전송을 중단하고, 런트(runt) 패킷으로서 수신단부에서 패킷의 어떤 전송된 부분을 폐기하는 단계와, (b) 더 높은 전송 임계값을 이용하여 소정수(재실행 수, 또는 N)의 시도로 N번의 실행간의 백오프 또는 어떤 삽입된 지연 없이 패킷의 다른 전송을 즉각적으로 실행하는 단계를 포함한다.
초기 전송 시도에 대해, 어댑터는 전송 버퍼내에 저장된 패킷의 소수의 바이트, 즉 전송 임계값으로 예컨대 4 바이트 만을 필요로 하는 것이 바람직하다. 버퍼 언더플로우 상태가 발생된 후, 어댑터는 대부분의 패킷이 전송 버퍼로 진입한 후 본 발명에 따라 재실행을 시도한다. 이러한 요구사항으로 초기 언더플로우 조건을 일으키는 피크 지연을 피할 수 있다. 어떤 재실행이 성공하면, 어댑터는 실패한 전송을 알려주는 인터럽트를 이슈할 필요가 없다. 알고리즘은 언더플로우 패킷 전송의 재실행을 계수하고 네트워크 또는 시스템 모니터링을 하기 위한 목적으로 계수를 통보한다.
더 상세히 말해서, 공유자원에 접속되어 데이타를 전송하는 어댑터의 동작에 있어서, 본 발명은 패킷을 전송하고, 버퍼 언더플로우시에 패킷 전송을 자동으로 재실행하는 방법을 제공한다. 본 발명에 따른 방법은 (A) 전송 버퍼내에 소정의 제1 데이타량이 저장된 후 전송을 개시하는 단계와, (B) 버퍼 언더플로우 상태가 발생하면, 상기 소정의 제1 데이타량보다 큰 소정의 제2 데이타량이 전송 버퍼내에 저장된 후 다시 전송을 개시하는 단계와, (C) 상기 단계 (B) 이후 바로, 패킷의 완전한 전송 또는 재전송 수에 대한 소정 한계 또는 계수에 다다를 때까지 다수의 시간 동안 전송을 다시 개시하고 상기 단계 (B)와 단계 (C)를 반복하는 단계를 포함한다. 만일 언더플로우 상태가 발생되면, 본 발명의 방법은 전송 버퍼내의 패킷 데이타를 폐기하고, 언더플로우 상태를 나타내는 신호를 발생시킨다.
이후 기술된 것은 전송 버퍼 언더플로우 상태나 과잉 충돌 상태 이후 패킷을 자동으로 재전송할 수 있는 방법이다. 이 관점에 따라, 패킷 전송 동안 전송 버퍼 언더플로우 상태가 발생하면, 본 발명의 방법은 패킷의 전송을 중단하고 패킷의 제2 데이타량이 전송 버퍼내에 저장된 후에 패킷의 재전송을 개시한다. 제2 데이타량은 언더플로우 상태에서 시도된 전송에 앞서 전송 버퍼에 저장될 필요가 있는 데이타량보다 많다. 본 발명의 방법은 네트워크 전송량 상태에 응답하여 과잉 충돌 한계와 제2 데이타량의 동작 결정을 포함할 수 있다. 또한, 과잉 충돌 한계 및 제2 데이타량은 소정의 상수값을 가질 수 있다.
더욱 상세히 말해서, 본 발명의 방법은 과잉 충돌 상태 이후 데이타 패킷을 자동적으로 재전송하는 네트워크 어댑터에 의해 구현될 수 있다. 패킷 전송은 소정수의 패킷의 바이트가 전송으로 적당한 후 개시된다. 만일 충돌이 검출되면, 충돌 계수가 증분하고, 충돌 계수가 과잉 충돌을 구성하는 것을 한정하는 소정의 제1 한계, 즉 16을 초과하지 않는다면 다른 전송 시도가 수행된다. (물론, 전송은 언더플로우 상태와 같은 다른 상태가 발생할 때 중단될 수도 있지만, 이러한 다른 상태는 본 발명의 더 넓은 관점 범위내에 있지 않다.) 만일 충돌 계수가 제1 한계를 초과한다면, 본 발명의 방법은 다수의 단계를 수행한다. 먼저, 재실행(RNEC) 계수가 제2 한계를 초과하면, 패킷 전송이 중단되고, 다음으로 RNEC 계수가 제2 한계를 초과하지 않는다면, RNEC 계수는 증분되고 본 발명의 방법은 증분된 RNEC 계수를 이용하여 상기 단계들을 다시 수행한다. 결론적으로, 본 발명의 전송 개시 단계는 제1 한계에 제2 한계를 배수한, 즉 충돌 계수의 최대값에 RNEC 계수의 최대값을 배수한 값과 동일하게 수행된다.
따라서, 본 발명은 재실행간의 백오프 시간을 도입하지 않고, 대부분의 경우에 상위 프로토콜 층이 연관되지 않도록 과잉 충돌 상태를 처리하는 효율적인 메카니즘을 제공한다. 따라서, 본 발명은 상기 기술된 종래 기술에서와 같은 관련 패킷의 전송에 대한 긴 지연 시간 없이, 그리고 시스템 성능의 저하 없이, 자동 전송을 제공한다.
본 발명의 전술한 내용과, 기타의 목적 및 특징은 본 발명에 관한 기술분야의 당업자가 첨부 도면을 참조하여 발명의 아래 설명을 고찰해 보면 더욱 명확해질 것이다.
도 1은 LAN 또는 디스크 저장 장치와 같은 네트워크 시스템(12)에 접속된 컴퓨터 시스템인 노드(10)를 나타낸다. 이 노드(10)는 네트워크 어댑터(14)와, 주 메모리(16)와, CPU(18)와, 단말기와 같은 주변 장치(20)를 포함하는데, 이들 모두는 시스템 버스(22), 예컨대 PCI 버스에 의해 접속되어 있다. 네트워크 어댑터(14)는 시스템 버스(22)에 양방향 경로(24)로 접속되어 있으며, 네트워크 시스템(12)에도 양방향 경로(26)로 접속되는 것이 바람직하다. 네트워크 시스템(12)은 예컨대, 높은 대역폭과, 노드(10)의 어댑터(14)와, 예컨대 네트워크 시스템에 접속된 유사한 구조의 다른 노드(27)의 어댑터(도시 안됨) 사이의 반2중(half-duplex) 데이타 통신을 수용하는 버스 토폴로지를 구현하는 것이 바람직하다. 또한, 어댑터(14)는 네트워크 시스템(12)에 접속된 노드(10, 27) 사이의 전2중(full-duplex) 통신을 제공하도록 구성될 수도 있다.
수신 동작 동안, 데이타는 네트워크 시스템(12)으로부터 어댑터(14)로 전송되며, 이어서 처리를 기다리기 위해 주 메모리(16)로 전송된다. 어댑터(14)와 주 메모리(16) 사이의 데이타 전송은 시스템 버스(22) 상에서의 직접 메모리 엑세스(Direct Memory Access:DMA) 전송에 따라 수행된다. DMA 전송은 시스템 버스로의 엑세스 요청과, 이 요청에 이은 엑세스의 허가와, 소정 크기의 데이타의 버스트를 포함한다. 전송 동작 동안, 주 메모리(16)로부터 수신된 데이타는 어댑터(14)로부터 네트워크 시스템(12)으로 전송된다. 네트워크 시스템(12)과 어댑터(14) 사이의 데이타 전송은 각각의 패킷에 기초하여 고정된 전송률을 갖는다.
시스템 버스(22)는 주 메모리(16)의 판독 및 기록 전송을 수행하기 위해 어댑터(14)에 의한 엑세스가 항상 즉각적으로 이용가능한 것은 아니다. 이 시스템 버스(22)는 판독 및 기록 메모리 전송을 수행하는 이 버스에 접속된 다른 유닛 또는 다른 소자, 예컨대 유닛(20)을 포함하는 다른 동작을 수행하는 것이 바쁠 수 있다. 결론적으로 시스템 버스(22)는 공유 자원(주 메모리에 대한)으로 간주되며, 시스템 버스(22)를 엑세스하기 위한 요청과 시스템 버스로의 엑세스의 허가 사이의 시간은 시스템 버스(22)의 지연을 이루게 된다.
버스 지연을 해결하기 위해, 어댑터(14)는 버퍼 메모리를 포함하는데, 이 버퍼 메모리는 FIFO(선입선출) 전송 버퍼(30)와, FIFO 수신용 버퍼(32)를 구비한다. 네트워크 시스템(12)으로부터 라인(26)을 통해 어댑터(14)로 입력되는 데이타는 수신 상태 머신(36)의 제어하에 있는 네트워크 인터페이스(34)를 통해 수신용 버퍼(32)로 입력된다. 수신용 버퍼(32)는 어댑터(14)가 시스템 버스(22)에 대한 엑세스를 획득할 때까지 데이타를 일시적으로 저장하며, 이때 수신 DMA 모듈(37)은 수신용 FIFO 버퍼(32)에 있는 데이타를 판독하고, 주 메모리(16)로의 기록 전송을 수행한다. 이후, 데이타는 시스템 버스 인터페이스(38)를 통해 시스템 버스(22)를 통과하여 주 메모리(16)에 기록된다.
네트워크 시스템(12)으로 전송될 데이타는 시스템 버스(22)를 엑세싱하는 시스템 버스 인터페이스(38)를 통해 전송 DMA 모듈(39)에 의해 주 메모리(16)로부터 판독되고, 전송 버퍼(30)에 저장된다. 어댑터(14)가 네트워크 시스템(12)으로의 엑세스를 획득하면, 데이타는 전송 상태 머신(40) 제어하에 있는 네트워크 인터페이스(34)로 제공되어, 네트워크 시스템(12)으로 이동한다. 어댑터(14)의 소자들은 내부 버스(35)에 의해 상호접속되어 있다.
네트워크 인터페이스(34)는 네트워크 시스템(12)과의 통신에 필요한 타이밍 및 전기적 특성을 어댑터(14)가 만족시키는데 필요한 종래의 데이타 경로 로직 및 물리적 접속을 포함한다. 예컨대, 네트워크 인터페이스(34)는 네트워크(12)의 응용가능한 네트워크 프로토콜, 예컨대 이더넷을 구현하기 위한 매체 엑세스 제어(MAC)를 포함할 수 있다.
시스템 버스 인터페이스(38)는 네트워크 시스템(22)과의 통신에 필요한 타이밍 및 전기적 특성을 어댑터(14)가 만족시키는데 필요한 종래의 데이타 경로 로직 및 물리적 접속을 포함한다. 예컨대, 시스템 버스(22)는 PCI 버스가 될 수 있으며, 인터페이스(38)는 예컨대 PCI 버스 인터페이스가 될 수 있다.
어댑터(14)를 통한 양방향 데이타 흐름은 인터페이스(38)의 중재 기능에 의해 제어된다. 중재 기능은 종래의 중재 처리에 따라 DMA 머신(37, 39)에 의해 시스템 버스의 제어를 중재한다. 전송 상태 머신(36, 40)과 함께, 중재 모듈(38)은 순차 논리회로로 구성된 레지스터와 조합 논리회로(도시 안됨)를 포함하는 것이 바람직하다.
DMA 머신(37, 39)은 전송 및 수신용 버퍼(30, 32)를 통해 네트워크와 시스템 버스(22) 사이의 양방향 데이타 흐름을 설정한다. 특히, 전송 DMA 머신(39)은 시스템 버스의 판독 전송과 함께 주 메모리(16)로부터 아웃바운드 데이타 버스트의 전송을 개시한다. 이러한 아웃바운드 데이타 버스트는 전송 버퍼(30)에 일시적으로 저장되었다가 전송 상태 머신(40)에 의해 네트워크 시스템(12)으로 전송된다. 수신 상태 머신(36)은 네트워크 시스템(12)으로부터의 아웃바운드 데이타 버스트를 관리하며, 수신용 버퍼(32)에 일시적으로 저장하며, 수신용 DMA 상태 머신(37)은 버스 인터페이스(38)와 시스템 버스(22)를 통해 메모리(16)에 데이타를 전송한다. 상태 머신(36, 40)에 의해 수행된 기능의 예는 데이타를 버퍼에 저장하기 전 또는 후에 바이트-와이드 워드내에 네트워크(12)로부터 또는 네트워크에 데이타의 직렬 비트 스트림의 변환이다.
수신용 버퍼(32)에 수신되었던 데이타의 소정 임계 레벨과 시스템 버스(22)로의 엑세스 획득에 따라, 수신 상태 머신(36)은 시스템 버스(15)로의 기록 전송과 같이, 주 메모리(16)로 소정 크기의 인바운드 데이타의 버스트의 전송을 개시한다. 데이타 버스트의 크기는 시스템 버스 특성에 따라 변경될 수 있다. 시스템 버스(22) 상에서의 버스트 동안 전송된 데이타량은 네트워크 시스템(12)에 대한 패킷에서의 전송된 데이타 블록보다 훨씬 작은 것이 일반적이다. 수신 DMA 머신(37) 및 전송 DMA 머신(39)은 버스(22)상의 데이타의 단일 버스트의 각 전송에 대한 시스템 버스(22)의 엑세스를 중재하여야 한다.
여기 기술되지 않은, 상태 머신(36, 40), DMA 머신(37, 39), 인터페이스 모듈(38)의 구성 및 동작은 이 기술분야의 당업자에게 명백할 것이다.
도 2는 전송 상태 머신(40)에 의해 구현될 수 있는 전송 버퍼 언더플로우 상태 이후 자동적으로 재전송하는 알고리즘(100)을 나타낸다.
블록 110에서, 전송 상태 머신(40)은 비활성상태, 즉 미사용(idle) 모드이다. 블록 110에서는 전송을 위한 새로운 패킷을 인출하고, NO_OF_RETRIES라 불리는 변수와 임계값 T를 나타내는 변수를 포함하는 변수들을 초기화한다. NO_OF_RETRIES는 전송 상태 머신(40)이 시도할 수 있는 재실행 세트수를 나타낸다. 임계값 T는 전송이 개시되는 것이 허가되기 전에 전송 버퍼(30)내에서 이용하는데 필요한 바이트수를 나타낸다.
이러한 변수들 NO_OF_RETRIES 및 T 는 알고리즘(100)이 구현되는 특정 어댑터의 각각의 필요성을 제공하기위해 프로그램 가능한 값을 갖는 것이 바람직하다. 본 발명은 NO_OF_RETRIES의 값에 대해 한계를 정할 수 있으며, 이로써 전송 상태 머신은 언더플로우 상태가 발생할 때마다 단일의 부가적인 재전송 세트를 시도할 수 있다.
변수 T는 N1의 값으로 초기에 설정될수 있지만, 예컨대, 어댑터(14)의 동작 동안 3가지 값 N1, N2 및 N3중 어느 것으로 추정할 수 있으며, 여기서 N1은 중간 값이며, N2는 N1과 같거나 작고, N3는 N1과 같거나 크다(N2≤N1≤N3). 예컨대 N1은 72 바이트가 되며, N2는 전송 버퍼(30)내의 최소 어드레스가능한 블록 데이타(즉 단일 롱워드)내에 저장됨으로써, 전송 상태 머신(40)이 인출할 수 있는 최소 바이트수가 된다. 따라서, N2는 4바이트 데이타 이하값이 될 수 있다. N3는 패킷부와 동일한, 즉 128 바이트가 된다.
블록 112에서는 임계 제어 비트가 예컨대 논리적 하이(HIGH)로 설정되었는지, 언더플로우 플래그가 예컨대 논리적 로우(LOW)로 클리어되었는지를 검사한다. 임계 제어 비트의 설정과 언더플로우 플래크의 클리어에 응답하여, 블록 114에서는 임계값 T를 N1의 초기값으로부터 N2 값으로 감소시켜, 전송을 개시하기 위해 전송 버퍼(30)내에 필요한 바이트수를 감소시키게 된다. 언더플로우 플래그는 언더플로우가 발생했는지를 나타내는데, 만일 이하 기술된 바와 같이 언더플로우 플래그가 셋트되면, 알고리즘(100)은 T 값을 가능한 가장 큰 값 즉 N3로 변경시키게 된다.
블록 114를 실행한 후, 또는 블록 112에서의 검사 결과가 부정으로 판명(즉, 임계 제어 비트가 클리어되거나, 언더플로우 플래그가 셋트)되면, 블록 116에서는 전송 상태 머신이 임계값 T에 도달, 즉 전송 버퍼(30)가 T의 응용가능한 값에 의해 판정된 전송을 하기 위해 이용가능한 바이트수를 가질 때까지 대기한다. 그리고나서, 블록 118에서는 전송을 개시한다.
블록 120에서는 충돌 윈도우가 종료하였는지를 검사한다. 충돌 윈도우는 어댑터가 네트워크(12)상에서의 충돌을 검사하는 시간이며, 때때로 네트워크 획득 시간이라 불리운다. 충돌 윈도우는 충돌 윈도우 지시자라 불리는 다른 변수에 의해 특정되며, 네트워크의 사양에 의해 통상적으로 결정된 시스템 인자를 나타낸다. 10-Mbps 이더넷 네트워크에 있어서, 충돌 윈도우 지시자는 51.2 마이크로초의 네트워크 획득 시간을 특정할 것이다.
만일 충돌 윈도우 지시자에 의해 특정된 충돌 윈도우가 종료하지 않았다면, 블록 122에서는 언더플로우 상태가 발생했는지를 나타내기 위해 언더플로우 플래그가 셋트되었는지를 검사한다. 상기 기술된 바와 같이, 전송 버퍼(30)내에 네트워크에 대해 필요한 전송률을 만족시키기 위해 충분한 패킷 데이타가 부족할 때, 언더플로우 상태가 발생한다. 만일 언더플로우 플래크가 셋트되지 않았다면, 알고리즘(100)은 충돌 윈도우가 종료되었는지를 검사하기 위해 블록 120으로 되돌아간다.
반면, 블록 122에서의 검사가 언더플로우 상태가 발생했다는 것을 나타낸다면, 블록 124에서는 NO_OF_RETRIES가 R의 한계값 예컨대 1 보다 작은 지를 검사하게 된다. 다시 말해서, 충돌 윈도우 동안 언더플로우 상태가 발생하고, 재실행 수가 R보다 작다면, 블록 124에서의 검사는 예를 제공하며, 그렇지 않다면, 아니오를 제공할 것이다.
블록 124에서 검사의 긍정 결과에 따라, 알고리즘(100)은 블록 126으로 진행하여, NO_OF_RETRIES를 예컨대 1 증분시킨다. 그러므로, 블록 126에서 R은 1이된다.
블록 128에서는 언더플로우 플래그를 셋트시키며, 재전송을 위해 언더플로우된 패킷을 스케쥴한다. 블록 130에서는, 임계값을 값 N3로 증가시킴으로써 셋트된 언더플로우 플래그에 응답한다. 이어서, 알고리즘(100)은 블록 112로 되돌아간다.
만일 블록 120에서의 검사로 충돌 윈도우가 종료되었다는 결과를 나타낸다면, 블록 132에서 전송 상태 머신은 패킷의 전송을 계속한다.
검사 시간이라 불리는 소정 주기의 시간이 경과된 후, 블록 134에서는 언더플로우가 충돌 윈도우가 종료된 후 발생되었는지를 판정하기 위해 언더플로우 상태를 검사한다. 만일 이러한 언더플로우가 발생했으면, 블록 136에서는 언더플로우 인터럽트가 선언되며 블록 138에서는 언더플로우 플래그를 클리어시킨다. 블록 138에 이어, 알고리즘(100)은 블록 110으로 되돌아가서, 전송 상태 머신(40)은 미사용 모드를 재개하고, 변수들은 관련 블록과 연관하여 상기 기술된 바와 같이 리셋된다.
만일 블록 134에서의 검사 결과가 언더플로우가 발생하지 않았다는 것을 나타내면, 블록 140에서는 종단 전송 패킷이 전송되었는지를 판정함으로써 패킷 전송이 왼료되었는지를 검사한다. 만일 전송이 완료되지 않았다면, 알고리즘(100)은 블록 132로 되돌아가서 전송을 계속한다. 반면, 만일 전송이 완료되었으면, 알고리즘(100)은 블록 138로 진행하여, 상기 기술된 바와 같이 언더플로우 플래그가 클리어되고, 블록 110으로 진행하게 된다.
따라서, 알고리즘(100)은 전송 버퍼(30)에 데이타의 언더플로우가 발생할 때 자동 재전송을 위한 효율적인 방법을 제공하여, 시스템 성능을 향상시키고 데이타 지연을 감소시킬 수 있다.
명백한 것은 알고리즘(100)이 전송 동안 발생된 언더플로우가 충돌 윈도우 주기내에 있는 때만 자동 재실행을 구현한다. 본 발명은 충돌 윈도우 주기 동안 또는 그후를 포함하는 전송 동안 자동 재실행을 구현할 수 있다.
도 3은 과잉 충돌 복귀에 대한 알고리즘(200)을 나타낸다. 알고리즘(200)은 전송 상태 머신(40)에 의해 구현될 수 있는데, 버퍼 언더플로우로부터의 결과인 자동 재전송에 대한 알고리즘(100)과는 다르며, 2개의 알고리즘(100, 200)은 서로 조합될 수 있으며, 당업자가 보아 명백할 것이다. 알고리즘(200)은 블록 210에서 개시하며, 전송을 위한 새로운 패킷을 정렬하고, 이하 기술된 바와 같이 알고리즘(200)에서 사용된 특정 변수 RNEC 및 T를 초기화한다.
블록 212에서는 블록 116에 대해 상기 기술된 것과 동일한 방식으로 임계값 T에 도달하였는지를 검사하는 것이 바람직하다. 이러한 경우에 있어서, 임계값 T는 N1과 동일하거나 다른 값으로 설정될 수 있다. 만일 임계값 T에 도달하지 않았다면, 알고리즘(200)은 임계값에 도달할 때까지 블록 212에서의 검사를 반복한다. 블록 212에서는 또한 COLLISION_COUNT 변수를 0으로 초기화한다.
반면, 만일 임계값 T에 도달하였다면, 블록 214에서는 전송 상태 머신(40)이 데이타의 전송을 개시한다. 블록 215에서는 상기 기술된 바와 같이 블록 120에 대하여 충돌 윈도우 지시자를 검사함으로써 충돌 윈도우가 종료되었는지를 검사한다. 만일 충돌 윈도우가 종료되었으면, 알고리즘(200)은 블록 216에서의 전송이 완료된 후 블록 210으로 되돌아가서, 새로운 패킷에 대해 앞선 단계들을 반복한다. 만일 충돌 윈도우가 종료되지 않았으면, 블록 217에서는 전송에 관련된 패킷에 대해 충돌이 있었는지를 검출한다. 만일 블록 217에서 충돌이 검출되지 않았다면, 알고리즘(200)은 블록 215로 되돌아간다.
관련 패킷에 대해 충돌이 검출될 때마다, 블록 218에서는 COLLISION_COUNT라 불리는 변수를 증분하고, 블록 219에서는 발생된 과잉 충돌 회수를 나타낸다. 반면, COLLISION_COUNT가 16이하인 동안, 블록 219에서의 검사는 과잉 충돌이 발생하지 않았다는 것을 나타내게 된다.
과잉 충돌 상태가 발생하지 않았다는 것을 나타내는 블록 219로부터의 부정 결과에 이어, 블록 220에서는 알고리즘(100)의 블록 140에서와 동일한 방식으로 전송이 종료되었는지를 검사한다. 만일 전송이 종료되었으면, 알고리즘(200)은 블록 214로 되돌아가서 동일한 패킷의 전송을 재개한다. 다시 말해서, 알고리즘(200)은 CSMA/CD 정규 전송 재실행(16번의 시도까지)을 발생시킨다. 만일 블록 220에서 전송이 종료되지 않았다는 것을 나타낸다면, 블록 221에서 알고리즘(200)은 블록 220의 검사가 반복되기 전에 약간의 시간을 대기하게 된다. 이 약간의 시간은 채널을 통해 단일 비트를 전송하기 위해 필요한 시간, 예컨대 100 Mbps에서 동작하는 채널에 대해 10 나노초(또는 10 Mbps에 대해 10 나노초)를 말한다. 블록 221에서의 대기 주기 동안, 노드는 발명의 배경부분에서 기술된 바와 같이 JAM을 전송한다.
본 발명에 따라 블록 219에서 과잉 충돌 상태가 발생했다는 것을 나타내면, 블록 222 내지 228에서는 블록 212 내지 220에서의 단계가 검출된 충돌이 없거나 전송이 성공적일 때까지 또는 소정 RNEC 한계에 이를 때까지 과잉 충돌에 대한 재실행 수(RNEC)라 불리는 반복 회수 동안 반복하게 된다. 예컨대, 만일 COLLISION_COUNT 한계값이 16이 되고 RNEC 한계값이 2가 되면, 알고리즘(200)은 32 회수(즉, 16번의 반복을 2번 반복) 동안 블록 212 내지 220을 반복할 것이다. 만일 반복된 충돌에 관련된 패킷의 성공적인 전송 없이 RNEC 한계값이 도달하면, 알고리즘은 상기 기술된 바와 같이 패킷을 폐기하고, 블록 210으로 되돌아가서 새로운 패킷이 정렬된다.
더욱 상세히 말해서, 만일 블록 218에서의 검사가 과잉 수의 충돌이 발생했다는 것을 나타낸다면, 블록 222에서는 RNEC 한계값을 획득하고, 블록 223에서는 RNEC가 현재 한계값보다 작은지를 검사한다. 만일 블록 223에서의 검사 결과가 RNEC 한계값에 도달했다는 것을 나타낸다면, 알고리즘(200)은 상기 기술된 바와 같이 전송이 종료된 후 블록 210으로 되돌아간다. 만일 블록 223에서의 검사 결과가 RNEC에 도달하지 못했다는 것을 나타낸다면, 블록 224에서는 RNEC를 예컨대 1 증분시킨다. 그리고나서, 블록 226에서는 네트워크 인터페이스(34)가 현재의 패킷을 처음 전송될 새로운 패킷으로 취급한다. 블록 228에서는 재전송을 위해 과잉 충돌에 관련된 패킷을 재정렬시킨다. 이어서, 알고리즘(200)은 블록 212로 되돌아간다.
따라서, 알고리즘(200)은 과잉 충돌 복귀에 대해 효율적인 방법을 제공하여, 시스템 성능을 향상시키고 데이타 지연을 감소시키게 된다. RNEC 한계값은 사전에 프로그램될 수 있으며, 전송량 상태에 따라 동적으로 결정될 수 있다. 다시 말해서, 네트워크의 전송이 가장 혼잡할 때, 어댑터(14)는 존재할 수 있는 증가된 충돌 상태를 악화시키기 않게 하기 위해 RNEC 한계값을 감소시킬 수 있다. 반면, 다른 시기에 성공적인 전송이 일어날 때까지 전송을 위한 패킷에 대해 상위 프로토콜 층을 재스케쥴하여야 하는 필요성을 피함으로써 패킷 지연을 감소키시고 다음 패킷을 성공적으로 전송할 확률을 증가시키기 위해 RNEC 한계값은 증가될 수 있다. 블록 222에서는 사전 설정된 RNEC 한계값을 획득하거나, 네트워크 상태 패킷으로부터 획득된 네트워크 상태 정보에 기초하여 RNEC 한계값을 계산한다.
다른 특징 및 실시예
본 발명의 실시예는 상기에 기술되었다. 여러 가지 다른 특징 및 변형예는 본 발명이 속하는 기술분야의 당업자에게 명백하도록 이하 기술될 것이다. 예컨대, 패킷 데이타가 전송 버퍼에 과도하게 기록되지 않은 동안 기술된 실시예에서 언더프로우 또는 과잉 충돌에 대한 재실행이 발생하는 반면, 본 발명은 전송 충돌 윈도우 동안 언더플로우가 발생할 때 재실행을 발생시키기 위해 구현될 수 있다.
또한, 성공적인 전송의 확률을 최대로 하기 위해, 언더플로우 또는 충돌 히스토리 정보, 네트워크 전송량 상태 및/또는 버스 부하 상태에 기초하여 최대 재실행 회수를 계산하는 알고리즘으로 본 발명을 구현할 수 있다.
특히, 여기서는 전송 버퍼 언더플로우 상태를 고려해보자. 호스트 시스템 버스 피크 지연이 하이이거나 및/또는 시스템 버스 처리율이 작을 때 언더플로우가 발생한다. 결론적으로, 언더플로우는 주로 호스트 CPU 시스템 버스와 관계가 있다. 반면, 네트워크가 혼잡하고, R이 하이값으로 설정되면, 네트워크에 대한 불필요한 간섭이 제공된다. 따라서, 어떤 장치에 있어서는 네트워크가 크게 혼잡하고 및/또는 호스트 CPU 버스의 부하가 많은 경우 R 값을 감소시키기 위해 동적으로 계산된 값(미리 설정된 값이 아닌 상수값)을 사용할 수 있다. 결론적으로, 블록 124에서는 한계값 R에 대해 고정된 값을 사용하기 보다는, NO_OF_RETRIES의 검사시 값을 이용하기 앞서 상기 언급된 히스토리 정보에 기초하여 R을 계산할 수 있다.
또한, 백오프 스케쥴을 계산하기 위해 알고리즘을 사용하는 것이 가능하며, 여기서 소정수의 재실행이 성공하지 못한 후, 재실행이 성공하지 못하는 원인이 되는 상태를 피하기 위해 다음 재실행 전에 계산된 주기의 지연이 삽입된다.
언더플로우 또는 과잉 충돌에 대해, 재실행 개시 시간은 전송 버퍼내로 DMA 처리된 관련 패킷의 바이트수의 함수가 될 수 있다. 이 함수는 프로그램된 값(예컨대 언더플로우의 경우 적어도 160 바이트의 패킷이 버퍼내에 포함될 때까지 대기하거나)이거나 히스토리로부터 얻을 수 있게 적응성이 있거나 또는 재실행 수의 함수가 될 수 있다.
따라서, 본 발명은 패킷 손실을 최소화할 수 있고, 상위 네트워크 층을 관련시키지 않고 언더플로우 또는 과잉 충돌의 복귀를 할 수 있다. 결론적으로, 본 발명은 신속하고 간단한 패킷 전송 방법을 제공하며, 언더플로우 또는 과잉 충돌이 시스템 버스의 큰 지연의 일시적 현상하에서 발생된 경우라 하더라도 해당된다. 게다가, 본 발명은 전송 개시까지 전송 버퍼내로의 패킷 전송의 개시 시간에 대한 지연을 감소시킬 수 있는데, 이는 언더플로우를 피하기 위해 종래기술에서 필요했던 통상적인 대용량 패킷의 수신을 대기할 필요가 없기 때문이다.
본 발명이 비록 일부 특정 실시예에 대해서만 설명되었지만 적절한 변경을 가하여 다른 태양으로도 실시 가능하다. 즉, 첨부된 청구범위의 개념과 범위는 본 명세서에 개시된 실시예에만 한정되지 않는다.

Claims (12)

  1. 전송 버퍼를 가지며 공유 자원에 접속되어 데이타를 전송하는 어댑터의 동작에 대하여, 과잉 충돌 상태 및 버퍼 언더플로우가 선택적으로 일어나 바람직하지 않은 전송 상태가 발생할 경우에 패킷을 전송하고 패킷 전송을 자동적으로 재실행하는 방법에 있어서,
    패킷의 소정의 제1 데이타량이 상기 어댑터의 전송 버퍼내에 저장된 후, 전송을 개시하는 단계와;
    상기 전송 개시 단계 후에 각각의 선택된 회수로 시도된 상기 패킷 전송이 충돌에 관련되었을 때 일어나는 과잉 충돌 상태가 발생하였는지를 판정하여, 만일 과잉 충돌 상태가 발생하였으면 과잉 충돌 계수를 갱신하는 단계를 포함하는데, (i) 만일 상기 과잉 충돌 계수가 과잉 충돌 한계값 이하이면, 전송을 중단하고 상기 패킷의 전송을 즉각적으로 반복하는 단계를 수행하며, (ii) 만일 상기 과잉 충돌 계수가 과잉 충돌 한계값 이상이면, 전송을 중단하고 상기 전송 버퍼내에 저장된 상기 패킷의 데이타를 폐기하는 단계를 수행하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 발생한 충돌을 검출하는 단계와;
    상기 발생한 충돌을 충돌 계수 한계값까지 계수하는 단계와;
    상기 충돌 계수 한계값에 이르게 될 때마다 과잉 충돌 회수를 나타내는 과잉 충돌 지시자 계수를 증분시키는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서, 상기 공유 자원은 컴퓨터 네트워크에 접속되며,
    네트워크 전송량 상태에 따라 과잉 충돌 한계값을 동적으로 결정하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서, 상기 패킷을 전송하는 동안 전송 버퍼 언더플로우가 발생하는 경우, 상기 패킷의 전송을 중단하는 단계와, 상기 제1 데이타량보다 많은 제2 데이타량이 상기 전송 버퍼에 저장된 후 상기 패킷 전송을 다시 개시하는 단계를 포함하며,
    전송 버퍼 언더플로우 상태에 따라 패킷의 자동 재전송을 제공하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서, 상기 공유 자원은 컴퓨터 네트워크에 접속되며,
    네트워크 전송량 상태에 따라 상기 과잉 한계값과 제2 데이타량을 동적으로 결정하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  6. 과잉 충돌 상태에 따라 패킷 데이타를 자동으로 재전송하는 네트워크 어댑터에 의해 구현된 방법에 있어서,
    (a) 상기 패킷의 소정수의 바이트가 전송에 이용가능한 후에 패킷 전송을 개시하는 단계와;
    (b) 충돌이 검출되면 충돌 계수를 증분하고, 상기 충돌 계수가 소정의 제1 한계값을 초과하지 않으면 전송을 계속하는 단계와;
    (c) 상기 충돌 계수가 상기 제1 한계값을 초과하는 경우, (i) 재실행 (RNEC) 계수가 제2 한계값을 초과하면 상기 패킷의 전송을 중단하는 단계와, (ii) 상기 RNEC 계수가 상기 제2 한계값을 초과하지 않으면, 상기 RNEC 계수를 증분하고 상기 증분된 RNEC 계수를 이용하여 상기 단계 (a) 내지 (c)를 다시 수행하는 단계를 실행하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제6항에 있어서, 상기 패킷 전송을 개시하는 단계는 상기 충돌 계수에 대한 제1 한계값이 상기 RNEC 계수에 대한 제2 한계값의 배수와 동일한 회수까지 실행하는 것을 특징으로 하는 방법.
  8. 제6항에 있어서, 상기 단계 (b)는 충돌 윈도우 동안 충돌 상태가 발생하였는지를 판정하는 단계와, 상기 충돌 상태가 상기 충돌 윈도우 동안 검출될 때만 상기 충돌 상태에 기인하여 상기 패킷 전송을 중단하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 전송 버퍼를 가지며 공유 자원에 접속되어 데이타를 전송하는 어댑터의 동작에 대하여, 과잉 충돌 상태 및 버퍼 언더플로우가 선택적으로 일어나 바람직하지 않은 전송 상태가 발생할 경우에 패킷을 전송하고 패킷 전송을 자동적으로 재실행하는 방법에 있어서,
    (a) 패킷의 소정의 제1 데이타량이 상기 어댑터의 전송 버퍼내에 저장된 후, 전송을 개시하는 단계와;
    (b) 상기 전송 개시 단계가 수행된 후, 버퍼 언더플로우 상태가 발생한 경우, 전송을 중단하는 단계와, 제1 데이타량보다 더 많은 소정의 제2 데이타량이 상기 전송 버퍼에 저장된 후에만 재전송을 개시하는 단계를 실행하는 단계와;
    (c) 상기 단계 (b)를 실행한 후 즉각적으로, 제1 및 제2 상태중 하나가 발생할 때까지의 회수 동안 전송을 다시 개시하고 상기 단계 (b) 및 (c)를 반복하는 단계를 포함하는데, 상기 제1 상태는 전송의 완료를 포함하며, 상기 제2 상태는 상기 단계 (b)가 한계값에 도달할 때까지의 반복한 회수를 포함하는 것을 특징으로 하는 방법.
  10. 제9항에 있어서, 상기 한계값은 소정의 고정 값인 것을 특징으로 하는 방법.
  11. 제9항에 있어서, 상기 어댑터에서 발생한 언더플로우 상태에 기초하여 한계값을 계산하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  12. 전송 버퍼를 가지며 공유 자원에 접속되어 데이타를 전송하는 어댑터의 동작에 대하여, 버퍼 언더플로우가 발생한 경우 패킷을 전송하고 패킷 전송을 자동적으로 재실행하는 방법에 있어서,
    (a) 전송을 개시하기에 앞서 상기 전송 버퍼내에서 필요로 하는 다수의 바이트를 나타내는 임계 변수 T를 제1 값 N2로 설정하는 단계와;
    (b) 상기 어댑터가 상기 공유 자원에 전송될 패킷 데이타를 획득하여, 상기 전송 버퍼에 저장하는 단계와;
    (c) 상기 패킷의 T 바이트의 데이타가 상기 전송 버퍼내에 저장된 후에만 공유 자원으로의 패킷 전송을 개시하는 단계와;
    (d) 상기 패킷 전송을 개시한 후, 충돌 윈도우 기간인 소정 주기의 시간이 종료하였는지를 검사하는 단계를 포함하는데, 상기 단계 (d)의 검사 결과에 대해,
    (i) 상기 충돌 윈도우가 종료된 경우, 버퍼 언더플로우 상태를 포함하는 제1 상태 및 전송의 완료를 포함하는 제2 상태중 하나가 발생할 때까지 전송을 계속하는 단계와;
    (ii) 상기 충돌 윈도우가 종료되지 않은 경우, 상기 단계 (d)를 반복 수행하는 단계와;
    (iii) 버퍼 언더플로우 상태가 상기 단계 (d)의 (i)에서 발생되고 재실행 한계값이 상기 소정 한계값에 이르게 되면, 전송을 중단하고 상기 상태를 나타내는 메시지 신호를 발생시키는 단계와;
    (iv) 버퍼 언더플로우 상태가 상기 단계 (d)의 (i)에서 발생되고 재실행 한계값이 상기 소정 한계값이하로 되면, 상기 단계 (d)의 전송을 반영하기 위해 상기 재실행 계수를 변경하고, 임계 변수를 상기 제1 변수값 N2 보다 큰 제2 변수값 N3로 설정하며, 상기 단계 (b), (c) 및 (d)를 반복 수행하는 단계를 포함하는 것을 특징으로 하는 방법.
KR1019970705720A 1995-12-22 1996-12-04 패킷 자동 재전송용 네트워크 어댑터 장치 및 그 방법 KR19980702323A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/577,575 US5778175A (en) 1995-12-22 1995-12-22 Method implemented by a computer network adapter for autonomously adjusting a transmit commencement threshold valve upon concurrence of an underflow condition
US8/577575 1995-12-22

Publications (1)

Publication Number Publication Date
KR19980702323A true KR19980702323A (ko) 1998-07-15

Family

ID=24309318

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970705720A KR19980702323A (ko) 1995-12-22 1996-12-04 패킷 자동 재전송용 네트워크 어댑터 장치 및 그 방법

Country Status (6)

Country Link
US (1) US5778175A (ko)
EP (1) EP0811285B1 (ko)
JP (1) JP3671057B2 (ko)
KR (1) KR19980702323A (ko)
DE (1) DE69633821T2 (ko)
WO (1) WO1997023976A1 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038605A (en) * 1996-02-15 2000-03-14 Emc Corporation Method and apparatus for interfacing two remotely disposed devices coupled via a transmission medium
WO1998012837A1 (en) * 1996-09-18 1998-03-26 Philips Electronics N.V. Information distribution system
US6137804A (en) * 1997-12-02 2000-10-24 International Business Machines Corporation System and method for automatic retry of transmit, independent of a host processor, after an underrun occurs in a LAN
DE69941557D1 (de) * 1998-01-15 2009-12-03 Regenesis Biomedical Inc Verbesserte vorrichtung zur behandlung mittels pulsierter elektromagnetischer energie
US6665728B1 (en) * 1998-12-30 2003-12-16 Intel Corporation Establishing optimal latency in streaming data applications that use data packets
GB2349717A (en) * 1999-05-04 2000-11-08 At & T Lab Cambridge Ltd Low latency network
US6463478B1 (en) * 1999-05-21 2002-10-08 Advanced Micro Devices, Inc. Method and apparatus for identifying runt data frames received by a network switch
GB9916718D0 (en) * 1999-07-17 1999-09-15 Racal Airtech Limited Adaptive equalising FIFO
JP3506960B2 (ja) * 1999-08-03 2004-03-15 シャープ株式会社 パケット処理装置及びパケット処理プログラムを記録した記憶媒体
US6519461B1 (en) 1999-10-29 2003-02-11 Telefonaktiebolaget Lm Ericsson (Publ) Channel-type switching from a common channel to a dedicated channel based on common channel load
CN1158815C (zh) * 1999-11-17 2004-07-21 艾利森电话股份有限公司 移动电信中与加速度相关的信道转换
US6594241B1 (en) 1999-12-08 2003-07-15 Telefonaktiebolaget Lm Ericsson (Publ) Channel-type switching control
US6643719B1 (en) 2000-03-27 2003-11-04 Racal Airtech Limited Equalizing FIFO buffer with adaptive watermark
US8073994B2 (en) * 2000-05-03 2011-12-06 At&T Laboratories Data transfer, synchronising applications, and low latency networks
US6829482B2 (en) 2000-05-16 2004-12-07 Telefonaktiebolaget Lm Ericsson (Publ) Switching from dedicated to common channels when radio resources are controlled by drift radio network
US6952739B2 (en) * 2000-08-03 2005-10-04 International Business Machines Corporation Method and device for parameter independent buffer underrun prevention
US7088872B1 (en) * 2002-02-14 2006-08-08 Cogent Systems, Inc. Method and apparatus for two dimensional image processing
GB2406014B (en) * 2003-09-10 2007-01-31 Thales Uk Plc Video system
US7404017B2 (en) * 2004-01-16 2008-07-22 International Business Machines Corporation Method for managing data flow through a processing system
US8131477B2 (en) * 2005-11-16 2012-03-06 3M Cogent, Inc. Method and device for image-based biological data quantification
US8275179B2 (en) * 2007-05-01 2012-09-25 3M Cogent, Inc. Apparatus for capturing a high quality image of a moist finger
US8411916B2 (en) * 2007-06-11 2013-04-02 3M Cogent, Inc. Bio-reader device with ticket identification
US8023522B2 (en) * 2009-03-30 2011-09-20 Intel Corporation Enabling long-term communication idleness for energy efficiency
US8751881B1 (en) * 2009-11-06 2014-06-10 Brocade Communications Systems, Inc. Transmission buffer under-run protection
WO2011147445A1 (en) * 2010-05-26 2011-12-01 Abb Technology Ag Configuration management
JP5999178B2 (ja) * 2012-05-14 2016-09-28 トヨタ自動車株式会社 車両用ネットワークの通信管理装置及び通信管理方法
WO2014020715A1 (ja) 2012-08-01 2014-02-06 トヨタ自動車株式会社 外部給電コネクタ、車両および外部給電システム
US10686560B2 (en) * 2014-06-23 2020-06-16 Qualcomm Incorporated Quick RLC retransmission on HARQ failure during tune away
US10303630B2 (en) * 2017-10-08 2019-05-28 Huawei Technologies Co., Ltd. Configurable hardware accelerators
CN113395187B (zh) * 2021-05-27 2022-05-20 深圳市常工电子计算机有限公司 一种基于485总线的通信增强方法和系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4692894A (en) * 1984-12-18 1987-09-08 Advanced Micro Devices, Inc. Overflow/Underflow detection for elastic buffer
US5353287A (en) * 1992-03-25 1994-10-04 Alcatel Network Systems, Inc. Local area network with message priority
US5412782A (en) * 1992-07-02 1995-05-02 3Com Corporation Programmed I/O ethernet adapter with early interrupts for accelerating data transfer
US5299313A (en) * 1992-07-28 1994-03-29 3Com Corporation Network interface with host independent buffer management
US5434872A (en) * 1992-07-28 1995-07-18 3Com Corporation Apparatus for automatic initiation of data transmission
US5446735A (en) * 1992-12-18 1995-08-29 Starlight Networks Bandwidth allocation in a shared transmission channel employing CSMA/CD

Also Published As

Publication number Publication date
JP3671057B2 (ja) 2005-07-13
EP0811285A1 (en) 1997-12-10
US5778175A (en) 1998-07-07
DE69633821T2 (de) 2005-10-20
DE69633821D1 (de) 2004-12-16
JPH11501196A (ja) 1999-01-26
EP0811285B1 (en) 2004-11-10
WO1997023976A1 (en) 1997-07-03

Similar Documents

Publication Publication Date Title
KR19980702323A (ko) 패킷 자동 재전송용 네트워크 어댑터 장치 및 그 방법
US5721955A (en) System for transferring portion of data to host from buffer if size of packet is greater than first threshold value but less than second threshold value
US5802048A (en) Method and apparatus for accelerating arbitration in a serial bus by detection of acknowledge packets
US4682324A (en) Implicit preemptive lan
US5404353A (en) Dynamic defer technique for traffic congestion control in a communication network bridge device
US6055578A (en) Apparatus and method for selectively controlling transmission of consecutive packets in a network station
US5701305A (en) Error recovery in a network having cascaded hubs
US5436903A (en) Method and apparatus for use in a network of the ethernet type, to improve fairness by controlling collision backoff times and using stopped backoff timing in the event of channel capture
US4560985A (en) Dual-count, round-robin distributed arbitration technique for serial buses
JPH08180006A (ja) ネットワークインタフェースおよび計算機ネットワークシステム
US5572546A (en) Data communications system with multilink protocol
US6222850B1 (en) Dynamic transmit tuning for ethernet device drivers
JPS60501484A (ja) 通信ネツトワ−ク内での伝送の衝突に続く伝送遅延を減少するための方法及び装置
US6172984B1 (en) System and method for reducing the latency for time sensitive data over CSMA/CD networks
EP0877511A2 (en) System and method for improving CSMA/CD network performance during collisions
US6778551B1 (en) Collision control systems and methods utilizing an inter-frame gap code counter
US5717889A (en) Collison reduction algorithm for an ethernet backoff protocol
US6009104A (en) Apparatus and method for selectively modulating interpacket gap interval following a collision to avoid capture effect
US5768250A (en) Error recovery in a network having cascaded hubs
JPH03268534A (ja) Csma/cd方式のネットワークにおける送信優先度クラス分け方式
USRE36353E (en) Methods and apparatus for use in a network of the ethernet type, to improve fairness by controlling collision backoff times and using stopped backoff timing in the event of channel capture
JP2001144789A (ja) 送信衝突制御装置、通信装置及び伝送システム並びにプログラムを記録したコンピュータ読み取り可能な記録媒体
KR100430648B1 (ko) 전송예약 기법을 이용한 이더넷 망의 프레임 전송방법
JP2003122706A (ja) データ処理システム
JPS60254943A (ja) バス型lanシステムにおけるデ−タ伝送方式

Legal Events

Date Code Title Description
A201 Request for examination
PA0105 International application

Patent event date: 19970819

Patent event code: PA01051R01D

Comment text: International Patent Application

PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 19970819

Comment text: Request for Examination of Application

PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20000228

Patent event code: PE09021S01D

E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 20000718

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20000228

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I