KR20120109995A - 노드 장치, 기억 매체 및 프레임 송신 방법 - Google Patents

노드 장치, 기억 매체 및 프레임 송신 방법 Download PDF

Info

Publication number
KR20120109995A
KR20120109995A KR20117030491A KR20117030491A KR20120109995A KR 20120109995 A KR20120109995 A KR 20120109995A KR 20117030491 A KR20117030491 A KR 20117030491A KR 20117030491 A KR20117030491 A KR 20117030491A KR 20120109995 A KR20120109995 A KR 20120109995A
Authority
KR
South Korea
Prior art keywords
node
frame
data frame
node device
identification information
Prior art date
Application number
KR20117030491A
Other languages
English (en)
Other versions
KR101301885B1 (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 KR20120109995A publication Critical patent/KR20120109995A/ko
Application granted granted Critical
Publication of KR101301885B1 publication Critical patent/KR101301885B1/ko

Links

Images

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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/02Communication route or path selection, e.g. power-based or shortest path routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/36Backward learning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/24Connectivity information management, e.g. connectivity discovery or connectivity update

Abstract

노드 장치는 송신 대상 프레임과, 송신처의 인접 노드 장치와, 홉 수 1 이하의 범위에서 송신 대상 프레임의 기원으로서 인식되는 노드 장치 각각의 식별 정보를 대응시켜 기억한다. 노드 장치는 프레임을 수신하여, 기억하는 송신 대상 프레임의 식별 정보와 수신 프레임의 식별 정보가 같은 경우, 수신 프레임의 최종수신처에 대응시켜 기억하는 송신 가능성 정보를 갱신한다. 송신 가능성 정보는 복수의 인접 노드 장치 각각으로의 송신 가능성을 나타내며, 수신 프레임의 식별 정보와 대응시켜져 있는 송신처에의 송신 가능성이 「송신 불능」을 나타내도록 갱신된다. 노드 장치는 송신 가능한 인접 노드 장치가 없고, 또 기억하는 송신 대상 프레임의 식별 정보가 수신 프레임의 식별 정보와 같은 경우, 수신 프레임의 식별 정보에 대응시켜 기원으로서 인식하고 있는 인접 노드 장치에, 수신 프레임을 송신한다.

Description

노드 장치, 기억 매체 및 프레임 송신 방법{NODE DEVICE, STORAGE MEDIUM, AND METHOD FOR TRANSMITTING FRAME}
본 발명은 복수의 노드를 포함하는 네트워크에서 경로 선택이 가능한 노드 장치에 관한 것이다.
네트워크 장치에 대해서는 지금까지 매우 많은 연구가 이루어지고 있다. 가장 보급된 것은 IP(Internet Protocol) 네트워크를 이용한 네트워크 장치이다. 또한, 복수의 프로토콜이나 네트워크를 수용하는 것을 목적으로 한 MPLS(Multi Protocol Labeled Switching)는 자동적으로 경로를 작성하는 기구를 갖는 네트워크 장치에 관한 기술이다. 또한, 애드혹 알고리즘의 대표적인 예로서 AODV(Ad-hoc On-Demand Vector)나 OLSR(Optimized Link State Routing)이 있다.
IP 네트워크 장치에서는 IP 어드레스에 따라서 패킷을 라우팅한다. IP 어드레스는 트리 구조를 갖는다. 따라서, 다음과 같은 순서에 따라, 최종적으로 목표로 하는 단말에 패킷을 전송할 수 있다. 즉, 패킷의 수신처 IP 어드레스의 상위 옥텟으로부터 순차로, 수신처 IP 어드레스와 전방(前方) 일치하는 IP 어드레스에 대응하는 IP 네트워크를 관리하는 네트워크 장치가 검색되어, 발견된 네트워크 장치에의 패킷 전송이 반복된다.
라우팅은 IP 어드레스 체계에 의해 결정된다. 어떤 네트워크 장치가 어떤 IP 네트워크를 관리하고 있는지는 라우팅 테이블에 의해서 규정된다. 라우팅 테이블은 수동으로 설정되는 경우도 많지만, RIP(Routing Information Protocol)에 의해 자동적으로 갱신되는 경우도 있다. RIP란, 네트워크 장치가 관리하는 IP 네트워크를 주위에 브로드캐스트하여, 네트워크 장치가 서로 관리하는 IP 네트워크를 확인하는 방식이다.
MPLS에서는, 네트워크를, LSR(Label Switch Router)이라 불리는 네트워크 장치 간의 네트워크인 내부 네트워크와 외부 네트워크로 분리한다. 외부 네트워크로부터의 프레임은 엣지 노드라고 불리는 장치(즉, 외부 네트워크와 내부 네트워크의 양방에 걸친 네트워크 장치)에 의해서 내부 네트워크에 받아들여진다.
이때, 외부프레임의 선두에는 라벨이 삽입된다. 각 LSR은 각각이 라벨 전송 테이블을 갖는다. 라벨 전송 테이블은 입력 프레임의 라벨과 출력 프레임의 라벨 및 수신처를 유지한다. LSR은 입력되는 프레임의 라벨을 추출하여, 해당하는 라벨을 라벨 전송 테이블로부터 발견하고, 출력 프레임의 라벨에 재기록하여, 해당하는 수신처에 송출한다.
이상의 처리는 라벨 전송 테이블의 LDP(Label Distribution Protocol)에 의해서 이루어진다. LDP는 우선 RIP 등에 따라 라우팅 테이블을 작성하고, 이것에 라벨을 부가하여, 인접 노드 사이에서 서로 통지하는 프로토콜이다.
AODV는 경로 검색에 브로드캐스트를 이용해서, 다른 통신 노드 장치가 브로드캐스트를 반복하여, 목적의 노드 장치에의 경로를 발견하는 수법이다. 통신 노드 장치는 목표로 하는 경로를 발견하기 위해서 주위에 「Route Request(RREQ)」라는 프레임을 송출한다. 이 프레임에는 검색 목표의 통신 노드 ID가 명기되어 있다.
주위의 통신 노드 장치는 자신을 검색하고 있지 않은 경우는, 새롭게 RREQ 프레임을 작성하여, 주위로 반복해서 브로드캐스트한다. 이때 각 통신 노드 장치는 송신원의 메시지가 인접해 있는 어떤 통신 노드 장치로부터 수신된 것인지를 기록한다. RREQ 메시지가 목적의 통신 노드 장치에 도달했을 때, 그 목적 통신 노드 장치는 「Route Reply(RREP)」 프레임을 작성하여, 송신원의 노드에 대하여, RREQ 프레임이 보내져 온 경로를 찾아가도록 하여 RREP 프레임을 송신한다. 이와 같은 식으로, 양방향의 통신 경로가 작성된다.
OLSR(Optimized Link State Routing)에서는, 통신 노드 장치들이 정기적으로 프레임을 서로 교환함으로써, 네트워크 전체를 파악하여, 원하는 통신 노드까지의 경로를 검출하는 방식을 채용하고 있다. 통신 노드 장치는 주기적으로 HELLO(헬로) 프레임을 송출하여, 서로 존재를 통지한다. 통신 상대가 되는 통신 노드 장치의 존재가 판명된 곳에서, 이어서 효율적으로 네트워크 전체에 프레임을 배신(配信)하기 위한 플러딩(flooding)용의 패스가 생성된다. 이것을 MPR(Multi Point Relay)이라 부른다.
MPR에 의해 각 통신 노드 장치로부터 효율적으로 프레임을 네트워크 전체에 브로드캐스트할 수 있다. 이어서 이 MPR을 이용하여, 경로 작성 메시지인 TC(Topology Control) 프레임을 노드 장치들 간에 서로 배신함으로써, 전체 노드 장치가 네트워크 토폴로지를 알 수 있다.
프레임을, 목표로 하는 통신 노드 장치에 보내기 위해서는, 송출원이 되는 통신 노드 장치 자신이 알고 있는 네트워크 토폴로지를 참조하여, 보내야 하는 인접 통신 노드 장치에 프레임을 의탁한다. 인접 노드 장치도 같은 식으로 처리해서, 최종적으로 목표 노드 장치에 프레임이 보내진다.
애드혹 무선 통신 네트워크에 관해서는, 예컨대 다음과 같은 기술도 개시되어 있다. 즉, 각 노드는 헬로 메시지로서 자(自)노드의 존재를 통지하는 정보와, 자노드까지의 루트 메트릭을 포함한 정보를 방송한다. 그리고, 헬로 메시지를 수신한 타(他)노드는 수신한 루트 메트릭에 헬로 메시지를 방송하여 온 노드와 자노드 사이의 루트를 위한 루트 메트릭을 추가하여, 추가 후의 루트 메트릭을 사용한다. 여기서의 루트 메트릭은 홉 수, 링크 품질 등의 인자(因子)에 의해 산출되는, 송신원과 수신처와의 비용을 나타내는 값이다.
일본 특허 공표 2006-526937호 공보 일본 특허 공개 2003-273964호 공보 일본 특허 공개 2002-271399호 공보 일본 특허 공개 2006-340165호 공보 일본 특허 공개 2001-298488호 공보 일본 특허 공개 2006-33275호 공보 일본 특허 4173842호 공보
이와오 타다시게(岩尾忠重), 야마다 켄지(山田健二), 노무라 코지(野村浩司), 호소카와 타케시(細川武司) 저 「다용도용 유선 센서 네트워크 : S-wire」 잡지 FUJITSU, 2006년 5월호(VOL. 57, NO. 3), 285~290 페이지
상기한 바와 같이, 네트워크 기술에 대해서는 많은 연구가 이루어지고 있는데, 네트워크 내의 각 노드 장치가 네트워크 토폴로지를 인식하는 것을 전제로 한 각종 네트워크 시스템에는 다음과 같은 문제가 있다. 즉, 네트워크 환경은 동적으로 변할 수 있기 때문에, 노드 장치가 사전에 경로 생성 페이즈에서 인식한 네트워크 토폴로지에 기초하여, 데이터 송신 페이즈에서 데이터를 송신하려고 해도, 반드시 송신에 성공하는 것은 아니다.
그래서 본 발명은 데이터가 송신되는 시점에서 네트워크 토폴로지를 각 노드 장치가 인식하지 않고 있더라도, 네트워크 전체적으로는, 각 노드 장치에 의한 자율 분산 처리의 결과로서, 적절한 경로가 선택되어 데이터가 송신되는 기술을 제공하는 것을 목적으로 한다.
일 양태에서는 노드 장치가 제공된다. 상기 노드 장치는 수신 수단과, 제1 기억 수단과, 제2 기억 수단과, 갱신 수단과, 송신 수단과, 백트랙 수단을 구비한다.
상기 수신 수단은 복수의 인접 노드 장치 중 임의의 하나로부터 프레임을 수신한다.
상기 제1 기억 수단은 송신 대상 프레임을 식별하는 프레임 식별 정보와, 상기 복수의 인접 노드 장치 중에서 상기 송신 대상 프레임의 송신처인 송신처 인접 노드 장치를 식별하는 송신처 인접 노드 식별 정보와, 이 송신 대상 프레임을 최초로 송신한 인접 노드 장치를 식별하는 기원 노드 식별 정보를 대응시켜 기억한다.
상기 제2 기억 수단은 프레임의 최종 수신처에 대응시켜, 상기 복수의 인접 노드 장치 각각에의 송신 가능성을 나타내는 송신 가능성 정보를 기억한다.
상기 갱신 수단은 상기 수신 수단이 수신한 수신 프레임을 식별하는 수신 프레임 식별 정보가 상기 제1 기억 수단에 상기 프레임 식별 정보로서 기억되어 있는 경우에, 다음과 같이 동작한다. 즉, 상기 갱신 수단은, 상기 수신 프레임에 지정된 최종 수신처인 수신 프레임 수신처에 대응시켜져 상기 제2 기억 수단에 기억되어 있는 상기 송신 가능성 정보를, 상기 제1 기억 수단에 상기 수신 프레임 식별 정보와 대응시켜져 기억되어 있는 상기 송신처 인접 노드 식별 정보에 의해 식별되는 제1 인접 노드 장치에의 상기 송신 가능성이 송신 불능을 나타내도록, 갱신한다.
상기 송신 수단은, 상기 수신 프레임 수신처에 대응시켜져 상기 제2 기억 수단에 기억되어 있는 상기 송신 가능성 정보에 기초해서, 상기 복수의 인접 노드 장치 중에서, 송신 가능한 제2 인접 노드 장치를 선택하여, 상기 제2 인접 노드 장치에 상기 수신 프레임을 송신한다.
상기 백트랙 수단은 상기 제2 기억 수단의 송신 가능성 정보에 있어서, 상기 복수의 인접 노드 장치 중에 송신 가능한 것이 없고, 또 상기 수신 프레임 식별 정보가 상기 제1 기억 수단에 상기 프레임 식별 정보로서 기억되어 있는 경우에, 다음과 같이 동작한다. 즉, 상기 백트랙 수단은 상기 제1 기억 수단에서 상기 수신 프레임 식별 정보에 대응시켜진 상기 기원 노드 식별 정보로서 기억되는 제3 인접 노드 장치에 상기 수신 프레임을 송신한다.
상기 노드 장치에 따르면, 상기 노드 장치가 송신한 적이 있는 프레임이 네트워크를 경유하여 상기 노드 장치 자신에게 수신되면, 전회 선택한 인접 노드 장치와는 별도의 인접 노드 장치가 송신처로서 시도된다. 그리고, 송신 가능한 인접 노드 장치가 없으면, 백트랙 수단에 의해서 상기 제3 인접 노드 장치로 수신 프레임이 송신되기 때문에, 제3 인접 노드 장치에 별도의 새로운 경로를 시도하게 할 수 있다.
따라서, 상기 노드 장치와 같은 복수의 노드 장치를 포함하는 네트워크에서는, 네트워크 토폴로지를 각 노드 장치가 인식하고 있지 않더라도, 다음과 같은 효과를 얻을 수 있다. 즉, 네트워크 전체적으로는, 각 노드 장치에 의한 자율 분산 처리의 결과로서, 적절한 경로가 선택되어 데이터가 송신된다.
도 1은 네트워크 구성의 제1 예를 도시하는 도면이다.
도 2는 네트워크 구성의 제2 예를 도시하는 도면이다.
도 3은 제1 실시형태에서의 노드 장치의 구성을 도시하는 기능 블록도이다.
도 4는 제1 실시형태에서의 노드 장치의 하드웨어 구성을 도시하는 도면이다.
도 5는 하나의 노드 장치에 주목하여 가중치 학습에 관해서 설명하는 도면이다.
도 6은 도 1의 네트워크(1)에서 동적이고 또한 자율 분산적으로 경로가 선택되는 상태를 설명하는 도면이다.
도 7은 프레임의 예를 도시하는 도면이다.
도 8은 도 3의 버퍼부(109)에 저장되는 데이터의 예를 도시하는 도면이다.
도 9는 도 3의 인접 노드 관리 테이블(103)의 예를 도시하는 도면이다.
도 10은 도 3의 가중치 테이블(104)의 예를 도시하는 도면이다.
도 11은 도 10의 가중치 테이블(104-1-N3)의 변화를 설명하는 도면이다.
도 12는 도 3의 FID 관리 테이블(105)의 예를 도시하는 도면(제1)이다.
도 13은 도 3의 FID 관리 테이블(105)의 예를 도시하는 도면(제2)이다.
도 14는 프레임 수신 처리의 흐름도이다.
도 15는 도 14의 단계 S203에서의 헬로 프레임 수신 처리의 흐름도이다.
도 16은 헬로 프레임 송신 처리의 흐름도이다.
도 17은 인접 노드 관리 테이블(103)의 에이징 처리의 흐름도이다.
도 18은 가중치 테이블(104)의 에이징 처리의 흐름도이다.
도 19는 FID 관리 테이블(105)의 에이징 처리의 흐름도이다.
도 20은 도 14의 단계 S205에서의 데이터 프레임 수신 처리의 흐름도(제1)이다.
도 21은 도 14의 단계 S205에서의 데이터 프레임 수신 처리의 흐름도(제2)이다.
도 22는 도 14의 단계 S205에서의 데이터 프레임 수신 처리의 흐름도(제3)이다.
도 23은 도 14의 단계 S205에서의 데이터 프레임 수신 처리의 흐름도(제4)이다.
도 24는 도 21의 단계 S812a에서의 가중치 테이블 조정 처리의 흐름도이다.
도 25는 도 14의 단계 S206에서의 ACK 프레임 수신 처리의 흐름도이다.
도 26은 ACK 프레임이 타임아웃 시각까지 수신되지 않는 경우의 처리를 도시하는 흐름도이다.
도 27은 노드 장치(100)가 GS가 되어 데이터 프레임을 송신하는 경우의 송신처리의 흐름도(제1)이다.
도 28은 노드 장치(100)가 GS가 되어 데이터 프레임을 송신하는 경우의 송신처리의 흐름도(제2)이다.
도 29는 GS로도 될 수 있는 노드 장치(100)가, 데이터 프레임 수신 처리의 일부로서 도 23의 처리 대신에 수행하는 처리의 흐름도이다.
도 30은 경로를 탐색하기 위한 탐색 공간을 나타내는 탐색 트리의 형식으로, 도 6에서의 경로 선택을 설명하는 도면이다.
도 31은 헬로 프레임의 송수신에 의한 인접 노드의 인식과 도 6의 경로 선택을 도시하는 타이밍도이다.
도 32는 제2 실시형태가 적용되는 유선 네트워크의 예를 도시하는 도면이다.
도 33은 제2 실시형태에서의 인접 노드 관리 테이블(103a)의 예를 도시하는 도면이다.
도 34는 루프 판정이 있지만 백트랙 동작이 없는 제1 비교예에 관해서 설명하는 도면(제1)이다.
도 35는 루프 판정이 있지만 백트랙 동작이 없는 제1 비교예에 관해서 설명하는 도면(제2)이다.
도 36은 의사적인 백트랙 동작은 수행하지만 루프 판정은 하지 않는 제2 비교예에 관해서 설명하는 도면이다.
이하, 몇가지 실시형태에 관해서 도면을 참조하면서 상세히 설명한다. 구체적으로는, 우선 도 1과 도 2를 참조하여 네트워크 구성의 예를 설명하고, 도 3~도 31을 참조하여 제1 실시형태에 관해서 설명한다. 그 후, 도 32~도 33을 참조하여 제2 실시형태에 관해서 설명하고, 그 밖의 실시형태에 관해서도 설명한다. 마지막으로, 도 34~도 36에 도시하는 2개의 비교예와 비교하면서 각 실시형태에 공통된 이점에 관해서 설명한다.
도 1은 네트워크 구성의 제1 예를 도시하는 도면이다. 도 1의 네트워크(1)는 이하의 각 실시형태를 적용할 수 있는 애드혹 네트워크의 일례이며, 복수의 노드 장치를 포함한다. 한편, 이하에서는, 네트워크 토폴로지 관점에서 설명함에 있어서, 「노드 장치」를 단순히 「노드」라고 하는 경우도 있다.
네트워크(1) 내의 각 노드 장치에는, 네트워크(1) 내에서 고유 식별 정보[이하, 「노드 ID(identification)」라고 함]가 미리 할당되어 있다. 이하에서는, 참조 부호 「Ni」가 노드 ID를 나타내는 것으로 하고, 예컨대, 노드 ID로서 Ni가 할당된 노드 장치를 「노드 장치 Ni」와 같이 참조한다. 한편, 이하에서는, 노드 장치 Ni에 있어서 자기 자신에게 할당된 노드 ID인 Ni를, 노드 장치 Ni의 「자노드 ID」라고도 한다(도 1에서는 1≤i≤7).
또한, 도 1에서는 링크를 실선으로 나타내고 있다. 구체적으로는, 네트워크(1)의 토폴로지는 다음과 같다. 즉, 노드 장치 N1과 N2 사이, 노드 장치 N2와 N3 사이, 노드 장치 N2와 N6 사이, 노드 장치 N3과 N4 사이, 노드 장치 N3과 N5 사이, 노드 장치 N4와 N5 사이, 노드 장치 N4와 N7 사이, 및 노드 장치 N6과 N7 사이에, 각각 링크가 존재한다.
한편, 이하에서 「링크」는 무선 링크일 수도 있고, 유선 링크일 수도 있다. 노드 장치 Ni와 Nj가 다른 노드 장치 Nk에 의한 중계를 거치지 않고서 직접 무선으로 정보를 서로 통신할 수 있을 때, 「노드 장치 Ni와 Nj 사이에 무선 링크가 존재한다」고 한다(도 1에서는 1≤i, j, k≤7). 또한, 노드 장치 Ni와 Nj 사이가 직접 케이블로 접속되어 있어, 노드 장치 Ni와 Nj가 케이블을 통해 정보를 서로 통신할 수 있을 때, 「노드 장치 Ni와 Nj 사이에 유선 링크가 존재한다」라고 한다.
또한, 노드 장치 Ni와 Nj 사이에 무선 또는 유선 링크가 존재할 때, 「노드 장치 Ni와 Nj는 서로 인접해 있다」고 한다. 바꿔 말하면, 노드 장치 Ni에 있어서 노드 장치 Nj는 인접 노드 장치이며, 노드 장치 Nj에 있어서 노드 장치 Ni는 인접 노드 장치이다.
한편, 도 1의 네트워크(1)에는, 새로운 노드 장치가 추가되는 경우도 있을 수 있고, 노드 장치 N1~N7 중 어느 것이 철거되어 네트워크(1)로부터는 소멸되는 경우도 있을 수 있다. 또한, 링크는 고정적이 아니라, 동적으로 변할 수 있다.
예컨대, 날씨나 차폐물 등의 영향으로, 노드 장치 Ni와 Nj 사이에 무선 링크가 새롭게 확립되거나, 지금까지 확립되어 있던 무선 링크가 소멸되는 경우가 있다. 노드 장치가 가동식이라면, 노드 장치 사이의 거리 변동에 의해서 링크의 유무가 변하는 경우도 있다. 또한, 케이블의 접속 전환에 의하여, 새로운 유선 링크가 확립되거나, 지금까지 존재하였던 유선 링크가 소멸되는 경우가 있고, 케이블의 절단 등의 장해에 의해서 유선 링크가 소멸되는 경우도 있다.
이하에 설명하는 각 실시형태에 따르면, 이와 같이 노드나 링크가 동적으로 변하는 환경에서도, 데이터가 송신되는 시점에서의 네트워크(1)의 상황에 따라서, 이용 가능하며 적절한 경로가 동적으로 발견되고 선택되면서, 데이터의 송신이 이루어진다. 더구나, 동적으로 변하는 네트워크(1) 전체의 토폴로지를 각 노드 장치 N1~N7이 인식할 필요없이, 동적인 토폴로지의 변화에 따른 경로 선택이 자율 분산적으로 실현된다.
그런데, 자세하게는 도 7과 함께 후술하지만, 이하에서는 노드 장치 사이에서 송수신되는 PDU(Protocol Data Unit)를 「프레임」이라고 부른다. 네트워크(1) 내에서의 데이터 송수신은 프레임을 이용하여 이루어지는데, 프레임 송신원의 노드 장치를 이하에서는 「GS(Global Source)」라고 하고, 프레임 수신처의 노드 장치를 이하에서는 「GD(Global Destination)」라고 한다.
예컨대, 노드 장치 N1이 GS이고 노드 장치 N7이 GD인 경우, 네트워크(1)에서 노드 장치 N1과 N7은 인접해 있지 않기 때문에, 다른 노드 장치에 의해서 프레임이 중계되고, 그 결과로서, 프레임은 노드 장치 N7에 도달한다. 예컨대, 프레임은 노드 장치 N1에서 노드 장치 N2로 송신되고, 노드 장치 N2에서 노드 장치 N6으로 송신되고, 노드 장치 N6에서 노드 장치 N7로 송신될 지도 모른다. 이하에서는 경로를 〈N1, N2, N6, N7〉과 같은 튜플(tuple)로 나타낸다.
경로 〈N1, N2, N6, N7〉의 예에 있어서, 예컨대 노드 장치 N1에서 노드 장치 N2로 프레임이 송신될 때, 프레임의 최종적인 수신처는 GD인 노드 장치 N7이지만, 프레임의 직접적인 수신처는 노드 장치 N1에 인접해 있는 노드 장치 N2이다. 이하에서는, 이와 같이 서로 인접해 있는 2개의 노드 장치 사이에서의 프레임 송신에 있어서, 프레임 송신원의 노드 장치를 「LS(Local Source)」라고 하고, 프레임 수신처의 노드 장치를 「LD(Local Destination)」라고 한다. 예컨대, 상기한 바와 같이 프레임이 노드 장치 N1로부터 노드 장치 N2와 N6을 경유하여 노드 장치 N7로 중계되는 경우의 LS와 LD는 다음과 같다.
GS이기도 한 노드 장치 N1로부터 노드 장치 N1에 인접해 있는 노드 장치 N2로, 최초로 프레임이 송신될 때, LS는 노드 장치 N1이며, LD는 노드 장치 N2이다. 계속해서, 노드 장치 N2로부터 노드 장치 N2에 인접해 있는 노드 장치 N6으로, 프레임이 송신될 때, LS는 노드 장치 N2이며, LD는 노드 장치 N6이다. 그리고, 노드 장치 N6로부터, 노드 장치 N6에 인접해 있고 GD이기도 한 노드 장치 N7로 프레임이 송신될 때, LS는 노드 장치 N6이며, LD는 노드 장치 N7이다.
한편, 네트워크(1) 내의 하나 또는 복수의 노드 장치가 네트워크(1)와는 별도의 네트워크(이하, 「외부 네트워크」라고 함)에 속하는 도시되지 않는 네트워크 기기와 접속되어 있더라도 좋다.
예컨대, 데이터 관리 서버를 포함하는 외부 네트워크의 게이트웨이 장치에, 유선 링크 또는 무선 링크를 통해 노드 장치 N7이 접속되어 있더라도 좋다. 그리고, 노드 장치 N7이 GD로서 지정되어 네트워크(1) 내에서 송신되는 데이터는 노드 장치 N7로부터 게이트웨이 장치를 통해 데이터 관리 서버에 송신되어, 데이터 관리 서버에서 관리되더라도 좋다.
이어서, 도 2를 참조하여 다른 네트워크의 예에 관해서 설명한다. 도 2는 네트워크 구성의 제2 예를 도시하는 도면이다. 도 2의 네트워크(2)도 이하의 각 실시형태를 적용할 수 있는 애드혹 네트워크의 일례이며, 복수의 노드 장치를 포함한다. 또한, 도 1의 네트워크(1)와 마찬가지로, 네트워크(2)도 도시되지 않는 외부 네트워크와 접속되어 있더라도 좋다.
네트워크(2)는 노드 장치 N101~N120을 포함한다. 도 2는 노드 장치 N101~N120 중, 하나의 노드 장치 N105에 주목하여 표현한 도면이다. 즉, 굵은 실선의 동그라미로 나타낸 노드 장치 N105는 직접 통신하는 것이 가능하다, 인접해 있는 3개의 노드 장치 N107, N111 및 N112의 존재와 노드 ID만 인식하고 있으면 되며, 네트워크(2) 전체의 토폴로지를 인식할 필요는 없다. 노드 장치 N105는 네트워크(2)의 토폴로지는 커녕, 네트워크(2) 내에 존재하는 노드 장치의 개수를 인식할 필요도 없고, 노드 장치 N105에 인접해 있지 않은 노드 장치의 노드 ID를 미리 알고 있을 필요도 없다.
도 2에서는, 노드 장치 N105가 인식하는 부분을 실선으로 나타내고, 노드 장치 N105가 인식할 필요가 없는 부분을 파선으로 나타내고 있다. 즉, 도 2에서는, 노드 장치 N105로부터 보아 홉 수 1 이내의 범위에 존재하는 이하의 것만이 실선으로 표시되어 있다.
·노드 장치 N105 자신
·노드 장치 N105에 인접해 있는 3개의 노드 장치 N107, N111 및 N112
·노드 장치 N105를 3개의 인접 노드 장치 N107, N111 및 N112에 각각 접속하는 3 라인의 링크
이하에 설명하는 각 실시형태에 따르면, 네트워크 내의 각 노드 장치는 상기한 노드 장치 N105와 같이, 인접 노드 장치만 인식하고 있으면 된다. 따라서, 네트워크의 규모가 증대되더라도 「각 노드 장치가 네트워크 토폴로지를 인식하기 위해서 제어 정보 통신을 수행하고, 제어 정보의 통신 때문에 네트워크의 부하가 높아져, 통신 시스템 전체적인 성능이 악화된다」고 하는 사태에 빠지는 일은 없다.
이하에서는 구체적으로, 도 1의 네트워크(1)나 도 2의 네트워크(2) 등 임의의 토폴로지를 갖는 네트워크에 적용할 수 있는 실시형태에 관해서 설명한다. 우선, 도 3~도 31을 참조하여 제1 실시형태에 관해서 설명하고, 다른 실시형태에 관해서는 제1 실시형태와의 차이를 중심으로 설명한다.
제1 실시형태에 관해서는, 우선, 도 3과 도 4를 참조하여 노드 장치의 구성을 설명하고, 도 5를 참조하여 노드 장치의 동작의 개요를 설명한다. 그리고, 「각 노드 장치가 자율 분산적으로 도 5와 같이 행동함으로써, 도 1의 네트워크(1) 전체에서는 어떻게 해서 동적인 경로 선택이 실현되는 것인가」라는 점에 관하여, 도 6을 참조하여 개요를 설명한다.
그 후, 도 7을 참조하여 프레임의 예를 설명하고, 도 8~도 13을 참조하여 각 노드 장치가 기억하는 각종 정보의 예를 설명하고, 도 14~도 29를 참조하여 각 노드 장치가 수행하는 처리의 상세한 점을 설명한다. 그리고, 도 7~도 29의 상세한 내용에 근거해, 재차 네트워크(1)의 전체적인 행동에 관해서 도 30과 도 31을 참조하여 설명한다.
그런데, 도 3은 제1 실시형태에서의 노드 장치의 구성을 도시하는 기능 블록도이다. 도 1 또는 도 2의 각 노드 장치는 구체적으로는 예컨대 도 3에 도시되는 노드 장치(100)이다.
노드 장치(100)는 프레임을 수신하는 수신부(101)와, 프레임을 송신하는 송신부(102)를 구비한다. 또한, 노드 장치(100)는 프레임의 송신을 위해 이용하는 각종 정보를 저장하기 위해서, 인접 노드 관리 테이블(103), 가중치 테이블(104) 및 FID(Frame IDentification) 관리 테이블(105)을 구비한다.
노드 장치(100)는 또한, 수신부(101)가 수신한 프레임의 종류를 판별하는 프레임 분기 처리부(106)를 구비한다. 자세한 형식은 도 7과 함께 후술하지만, 제1 실시형태에서는, 「데이터 프레임」, 「헬로 프레임」 및 「ACK(ACKnowledgment) 프레임」과 같은 적어도 3 종류의 프레임이 사용된다.
노드 장치(100)는 ACK 프레임에 관한 처리를 하는 ACK 처리부(107)와, 헬로 프레임의 수신에 따라서 처리를 하는 링크 관리부(108)를 구비한다. 또한, 노드 장치(100)는 데이터 프레임의 수신에 따른 처리를 하기 위해서, 버퍼부(109)와 데이터 프레임 처리부(110)를 구비한다. 노드 장치(100)는 또한 상위층 처리부(111), 헬로 프레임 생성부(112) 및 FID 생성부(113)도 구비한다.
노드 장치(100)의 각 부는 다음과 같이 동작한다.
수신부(101)가 프레임을 수신하고, 수신한 프레임을 프레임 분기 처리부(106)에 출력한다. 그러면, 프레임 분기 처리부(106)가 프레임의 종별을 판별한다.
헬로 프레임이 수신된 경우, 프레임 분기 처리부(106)는 수신된 헬로 프레임을 링크 관리부(108)에 출력한다. 링크 관리부(108)는 인접 노드 관리 테이블(103)을 관리하고, 또한 가중치 테이블(104)의 관리에도 관여한다.
여기서, 헬로 프레임은 제어 정보를 통신하기 위한 제어 프레임의 일종이며, 구체적으로는, 노드 장치(100)가 자기 자신의 존재를 다른 노드 장치에 통지하기 위한 프레임이다. 따라서, 자세하게는 도 15와 함께 후술하는 바와 같이, 링크 관리부(108)는 헬로 프레임의 수신을 계기로 하여 인접 노드 장치의 존재를 인식하고, 인식 결과를 인접 노드 관리 테이블(103)에 반영시킨다. 즉, 인접 노드 관리 테이블(103)은 노드 장치(100)에 인접해 있는 다른 노드 장치를 노드 장치(100)가 기억해 두기 위한 테이블이다.
한편, 네트워크의 상황은 동적으로 변할 수 있기 때문에, 경우에 따라서는, 지금까지 인접 노드 장치로서 링크 관리부(108)에 인식되었던 다른 노드 장치가 인접 노드 장치로서 인식 불능이 될지도 모른다. 따라서, 자세하게는 도 17과 함께 후술하는 바와 같이, 링크 관리부(108)는 인접 노드 장치로서 인식 불능으로 된 노드 장치에 관한 엔트리를 인접 노드 관리 테이블(103)로부터 삭제하기 위한 에이징 처리도 한다.
또한, 제1 실시형태에 있어서 링크 관리부(108)는 인접 노드 장치의 변화에 동반하여 가중치 테이블(104)을 추가, 삭제 혹은 갱신한다.
여기서, 가중치 테이블(104)은 프레임을 어떤 인접 노드 장치에 송신할지를 결정하기 위한 정보를 GD마다 관리하기 위한 테이블이다. 도 3에는 M개의 GD 각각에 대응하여 형성된 가중치 테이블(104-1~104-M)이 도시되어 있다. 본 명세서에 있어서 「가중치 테이블(104)」이란, 가중치 테이블(104-1~104-M)의 총칭이다. 또한, 노드 장치(100)의 운용이 시작되는 시점에서는 가중치 테이블(104)은 존재하지 않아, M=0이다.
구체적으로는, 가중치 테이블(104)은 「최종적으로 프레임을 GD에 도달시키기 위해서는, 노드 장치(100) 자신은 어떤 인접 노드 장치를 LD로서 선택할 수 있는지」라는 것을 GD마다 관리한다. 바꿔 말하면, 가중치 테이블(104)은 프레임의 GD마다, 노드 장치(100)에 인접해 있는 하나 이상의 노드 장치에 관해서, LD로서 선택할 때의 우선도를 가중치로서 표현하여 유지한다.
다른 관점에서 말하면, 어떤 인접 노드 장치가 「LD로서 선택 가능하다」란, 그 인접 노드 장치에의 프레임의 송신 가능성이 「송신 가능」임을 의미한다. 또한, 어떤 인접 노드 장치가 「LD로서 선택 불능이다」란, 그 인접 노드 장치에의 프레임의 송신 가능성이 「송신 불능」임을 의미하며, 그 인접 노드 장치의 우선도가 「송신 불능」에 대응하는 정해진 최저 우선도임을 의미한다.
따라서, 네트워크의 상황 변화에 따라서 노드 장치(100)의 인접 노드 장치가 변하면, 링크 관리부(108)는 자세하게는 도 15 및 도 17과 함께 후술하는 바와 같이, 인접 노드 장치의 변화에 따라서 가중치 테이블(104)을 추가, 갱신, 또는 삭제한다.
또한, ACK 프레임이 수신된 경우, 프레임 분기 처리부(106)는 수신된 ACK 프레임을 ACK 처리부(107)에 출력한다. 여기서, ACK 프레임은 제어 프레임의 일종이며, 노드 장치(100)가 송신한 데이터 프레임의 LD인 노드 장치로부터, 노드 장치(100)에 데이터 프레임의 수신을 통지하기 위한 프레임이다.
따라서, ACK 프레임의 수신은 데이터 프레임의 송신이 성공했음을 의미하고, 정해진 시간이 경과하더라도 ACK 프레임이 수신되지 않고서 타임아웃이 되는 것은 데이터 프레임의 송신에 실패했음을 의미한다. ACK 처리부(107)는 후술하는 도 25에 도시하는 ACK 프레임 수신의 타임아웃을 감시한다.
버퍼부(109)는 데이터 프레임의 송신 실패와 재송신에 대비하여, 데이터 프레임을 저장한다. 따라서, 자세하게는 도 25와 함께 후술하는 바와 같이, ACK 처리부(107)는 ACK 프레임의 수신을 계기로 하여 데이터 프레임의 송신 성공을 인식하면, 불필요하게 된 데이터 프레임을 버퍼부(109)로부터 삭제한다. 또한, ACK 처리부(107)는 데이터 프레임의 송신 성공 여부를 데이터 프레임 처리부(110)에 통지한다.
또한, 데이터 프레임이 수신된 경우, 프레임 분기 처리부(106)는 수신된 데이터 프레임을 버퍼부(109)에 저장하고, 후술하는 도 20~도 23의 처리를 하도록 데이터 프레임 처리부(110)에 의뢰한다.
여기서, 데이터 프레임은 GS인 노드 장치가 GD인 노드 장치에 전달하고자 하는 데이터를 페이로드로서 포함하는 프레임이다. 바꿔 말하면, 제1 실시형태에 있어서의 프레임이 정의되는 층보다도 상위층에서 정의되는 프로토콜의 PDU가 페이로드로서 데이터 프레임에 포함된다. 상위층 처리부(111)는 노드 장치(100)가 GS 또는 GD인 경우에, 데이터 프레임에 페이로드로서 포함되는 상위층의 PDU를 처리한다.
프레임 분기 처리부(106)로부터 데이터 프레임의 처리 의뢰를 받은 데이터 프레임 처리부(110)의 동작의 개요는 다음과 같다.
데이터 프레임 처리부(110)는 수신부(101)가 수신한 데이터 프레임에 대한 ACK 프레임의 송신을 송신부(102)에 의뢰한다. 또한, 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 GD의 값이 노드 장치(100)의 자노드 ID와 같은지 여부를 판단한다. 그리고, 수신된 데이터 프레임의 GD의 값이 노드 장치(100)의 자노드 ID와 다른 경우, 데이터 프레임 처리부(110)는 FID 관리 테이블(105)을 참조함으로써, 이번의 수신이 하기 (A1)과 (A2) 중 어느 쪽에 해당하는 것인지를 판단한다.
(A1) 과거에 노드 장치(100)가 LS가 되어 송신한 데이터 프레임이, 네트워크 내에서 중계되는 중에 노드 장치(100)로 되돌아가, 수신부(101)에서 수신되었다.
(A2) 상기 (A1) 이외의 새로운 데이터 프레임이 수신부(101)에서 수신되었다.
데이터 프레임 처리부(110)는 이번의 수신이 (A2)에 해당한다고 판단하면, 가중치 테이블(104)을 참조하여, 수신한 데이터 프레임을 전송하기 위해서 LD로서 지정하는 인접 노드 장치를 선택하여, 데이터 프레임의 전송을 송신부(102)에 의뢰한다.
한편, 데이터 프레임 처리부(110)는 이번의 수신이 (A1)에 해당한다고 판단하면, 과거에 LD로서 선택한 인접 노드 장치가 적절한 LD가 아니었다고 인식하여, 인식 결과를 가중치 테이블(104)에 반영시킨다. 그리고, 데이터 프레임 처리부(110)는 가중치 테이블(104)을 참조하여, LD로서 선택 가능한 인접 노드 장치가 그 밖에 아직 남아 있는지 여부를 판단한다.
데이터 프레임 처리부(110)는, 또한 ACK 처리부(107)로부터의 데이터 프레임 송신 성공 혹은 송신 실패를 통지받아, 그 데이터 프레임의 LD로서 선택한 인접 노드 장치가 적절한지 여부를 인식하여, 그 인식 결과를 가중치 테이블(104)에 반영시킨다.
한편, 노드 장치(100)에 인접해 있는 어떤 노드 장치 Ni가 「LD로서 선택 가능하다」란, 직감적으로는 「인접 노드 장치 Ni를 LD로서 선택해 봐서, 프레임이 성공리에 GD까지 도달하는지 여부를 시도해 볼 가치가 있다」고 하는 의미이다. 구체적으로는, 노드 장치 Ni가 「LD로서 선택 가능하다」란, 「하기 (B1)도 아니고 하기 (B2)도 아니다」라는 의미이다. 한편, 「선택 가능」하다는 것의 보다 상세한 의미에 관해서는, 후술하는 도 5에 관한 설명과, 도 22에 관한 (F1)~(F2)와 (G1)~(G4)의 설명으로부터 분명하다.
(B1) 노드 장치(100)가 인접 노드 장치 Ni를 과거에 LD로서 선택한 결과, 루프 등의 어떤 실패가 발생한 경우가 있어, 「노드 장치 Ni는 LD로서 부적절하다」고 이미 판명되었다.
(B2) 이번 수신부(101)가 수신한 데이터 프레임을 이전에 수신부(101)가 처음에 수신했을 때의 LS(이하 「Original Local Source」라고 부르고, 「OLS」라고 약칭함)가 노드 장치 Ni였다.
데이터 프레임 처리부(110)는 만일 LD로서 선택 가능한 인접 노드 장치가 그 밖에 아직 남아 있으면, 선택 가능한 인접 노드 장치를 선택해 LD로서 지정하여, 데이터 프레임의 전송을 송신부(102)에 의뢰한다. 반대로, LD로서 선택 가능한 인접 노드 장치가 벌써 남아 있지 않으면, 데이터 프레임 처리부(110)는 하기 (C1) 또는 (C2)와 같이 동작한다.
(C1) 이번 수신된 데이터 프레임의 GS가 노드 장치(100) 이외인 경우, 데이터 프레임 처리부(110)는 OLS에 데이터 프레임을 반송하기 위해서, OLS를 LD로서 선택하여, 데이터 프레임의 전송을 송신부(102)에 의뢰한다. 이 동작은 OLS인 인접 노드 장치에 「노드 장치(100)를 LD로서 선택하는 것은 부적절하다」라고 인식시키기 위한 동작이며, 후술하는 대로 경로 탐색에 있어서의 백트랙에 상당한다.
(C2) 이번 수신된 데이터 프레임의 GS가 노드 장치(100) 자신인 경우, 이 데이터 프레임을 원래 생성한 것은 상위층 처리부(111)이다. 따라서, 데이터 프레임 처리부(110)는 상위층 처리부(111)에 대하여 데이터 프레임의 송신 실패를 통지하여, 버퍼부(109)에 저장되어 있는 데이터 프레임을 파기한다.
한편, 이상과 같은 데이터 프레임 처리부(110)의 동작을 실현하기 위해서는, 데이터 프레임 처리부(110)는 상기 (A1)과 (A2)를 구별할 필요가 있다. 그 때문에 제1 실시형태에서는, 데이터 프레임을 고유하게 식별할 수 있는 프레임 식별 정보가 각 데이터 프레임에 포함되어 있고, 프레임 식별 정보는 FID 관리 테이블(105)에 기억된다.
제1 실시형태에서의 프레임 식별 정보는 구체적으로는 데이터 프레임의 GS인 노드 장치의 노드 ID와 FID의 조합이다. FID는 어떤 하나의 노드 장치가 GS가 되어 송신하는 복수의 프레임 각각을 고유하게 식별하는 식별 정보이며, 예컨대 정해진 비트수의 시퀀스 번호일 수도 있고, 타임 스탬프일 수도 있다.
즉, 개개의 노드 장치는 독립적으로 FID를 생성하기 때문에, 다른 복수의 노드 장치가 우연히 동일한 FID를 생성하는 경우도 있을 수 있다. 그러나, 프레임 식별 정보는 FID 단독으로 된 것이 아니라, 데이터 프레임의 GS인 노드 장치의 노드 ID와 FID의 조합이다. 그리고, 노드 ID는 상기한 바와 같이 네트워크 내에서 노드 장치를 고유하게 식별하는 정보이다. 따라서, 가령 다른 복수의 노드 장치가 우연히 동일한 FID를 생성했다고 해도, 다른 노드 장치가 각각 GS가 되어 송신한 프레임은 다른 프레임 식별 정보를 갖기 때문에 구별 가능하다.
한편, 프레임 식별 정보는 데이터 프레임이 하나 이상의 노드 장치를 경유하여 네트워크 내에서 전송되더라도, 데이터 프레임을 중계하는 노드 장치에 의해서 재기록되는 일은 없고, 따라서 변하지 않는다. 데이터 프레임 처리부(110)는 송신부(102)에 송신을 의뢰한 데이터 프레임의 프레임 식별 정보를 FID 관리 테이블(105)에 기록함으로써, 후에 데이터 프레임이 노드 장치(100) 자신에게 되돌아왔을 때, 상기 (A1)에 해당한다고 인식할 수 있다.
한편, 노드 장치(100)는 프레임의 수신을 계기로 하지 않는 그 밖의 처리도 한다. 구체적으로, 헬로 프레임 생성부(112)는 FID 생성부(113)가 생성하는 FID를 이용하여 정기적으로 헬로 프레임을 생성하여, 송신부(102)에 출력한다. 그렇게 하면 송신부(102)가 헬로 프레임을 송신하기 때문에, 노드 장치(100)는 노드 장치(100) 자신의 존재를 정기적으로 주위에 통지할 수 있다.
또한, 상위층 처리부(111)는 임의의 타이밍에, 데이터 프레임에 페이로드로서 포함시켜 송신하는 대상 데이터를 데이터 프레임 처리부(110)에 출력할 수 있다. 그러면, 데이터 프레임 처리부(110)는 상위층 처리부(111)의 요구에 따라서 데이터 프레임을 생성하여, 송신부(102)에 데이터 프레임 송신을 지시한다. 이렇게 해서, 노드 장치(100)는 스스로 GS가 될 수 있다.
도 4는 제1 실시형태에서의 노드 장치의 하드웨어 구성을 도시하는 도면이다. 도 3의 노드 장치(100)는, 예컨대 도 4에 도시하는 각종 하드웨어에 의해 실현되더라도 좋다.
도 4의 예에서는, 노드 장치(100)는 MPU(MicroProcessing Unit)(201), PHY(PHYsical layer) 칩(202) 및 타이머 IC(Integrated Circuit)(203)를 구비한다. 또한, 노드 장치(100)는 DRAM(Dynamic Random Access Memory)(204), 플래시 메모리(205) 및 무선 모듈(206)을 구비한다.
MPU(201)와 PHY 칩(202) 사이를 접속하는 통신 인터페이스는 MII/MDIO(Media Independent Interface or Management Data Input/Output)(207)이다. MII와 MDIO는 모두 물리층과 MAC 부속층(Mediaaccess Control sublayer) 사이의 인터페이스이다. 또한, MPU(201)와 타이머 IC(203)는 I2C/PIO(Inter-Integrated Circuit or Parallel Input/Output) 버스(208)를 통해 접속된다. 그리고, DRAM(204)과 플래시 메모리(205)와 무선 모듈(206)은 PCI(Peripheral Component Interconnect) 버스(209)를 통해 MPU(201)에 접속된다.
MPU(201)는 비휘발성 기억 장치의 일종인 플래시 메모리(205)에 저장된 펌웨어 등의 프로그램을 DRAM(204)에 로드하고, DRAM(204)를 워킹 메모리로서 사용하면서 각종 처리를 실행한다. MPU(201)는 프로그램을 실행함으로써, 도 3의 프레임 분기 처리부(106), ACK 처리부(107), 링크 관리부(108), 데이터 프레임 처리부(110), 상위층 처리부(111), 헬로 프레임 생성부(112) 및 FID 생성부(113)로서 동작할 수 있다.
한편, 펌웨어 등의 프로그램은 컴퓨터 판독 가능한 기억 매체에 저장되어서 제공되어, 노드 장치(100)에 인스톨될 수도 있다. 또는, 프로그램은 네트워크로부터 PHY 칩(202) 혹은 무선 모듈(206)을 통해 다운로드되어, 노드 장치(100)에 인스톨될 수도 있다.
한편, 실시형태에 따라서, DRAM(204)이나 플래시 메모리(205) 이외의 다른 종류의 기억 장치가 이용될 수도 있다. 예컨대, 노드 장치(100)는 CAM(Content Addressable Memory), SRAM(Static Random Access Memory), SDRAM(Synchronous Dynamic Random Access Memory) 등의 기억 장치를 갖더라도 좋다.
도 3의 인접 노드 관리 테이블(103), 가중치 테이블(104), FID 관리 테이블(105) 및 버퍼부(109)는 DRAM(204), 플래시 메모리(205) 혹은 도시되지 않는 그 밖의 기억 장치에 의해 실현된다. 또한, 플래시 메모리(205)는 프로그램뿐만 아니라, 노드 장치(100)의 노드 ID 등, 노드 장치(100)의 고유 정보도 기억한다.
PHY 칩(202)은 유선 접속 시 물리층을 처리하는 회로이다. 제1 실시형태는 무선 네트워크에 적용되기 때문에, 제1 실시형태에서는, 노드 장치(100)는 PHY 칩(202)을 구비하지 않아도 된다. 그러나, 노드 장치(100)와 외부 네트워크와의 접속을 위해, 노드 장치(100)는 PHY 칩(202)을 구비하여도 된다.
예컨대, 노드 장치(100)는 이더넷(등록상표) 규격에 따라서 유선 LAN 포트를 구비하고, 유선 LAN 포트에 접속된 케이블을 통해 외부 네트워크의 게이트웨이 장치 등에 접속될 수도 있다.
그 경우, MPU(201)는 이더넷 프레임을 생성하여, MII/MDIO(207)를 통해 PHY 칩(202)에 출력할 수 있다. 그리고, PHY 칩(202)은 MPU(201)로부터의 출력(즉, 이더넷 프레임을 나타내는 논리 신호)을, 케이블의 종류에 따른 신호(즉 전기 신호 또는 광 신호)로 변환하여, 케이블에 출력한다. 이렇게 해서, 노드 장치(100)는 PHY 칩(202)을 이용하여 외부 네트워크에 데이터를 송신할 수 있다.
또한, PHY 칩(202)은 케이블과 유선 LAN 포트를 통해 외부 네트워크로부터 입력되는 전기 신호 또는 광 신호를 논리 신호로 변환하여, MII/MDIO(207)를 통해 MPU(201)에 출력할 수도 있다. 이렇게 해서, 노드 장치(100)는 PHY 칩(202)을 이용하여 외부 네트워크로부터 데이터를 수신할 수 있다.
무선 모듈(206)은 무선 접속 시 물리층을 처리하는 하드웨어이다. 무선 모듈(206)은, 예컨대 안테나, ADC(Analog-to-Digital Converter), DAC(Digital-to-Analog Converter), 변조기, 복조기, 부호화기, 복호기 등을 포함한다.
제1 실시형태에서는, 도 3의 수신부(101)와 송신부(102)는 도 4의 무선 모듈(206)에 의해 실현된다. 즉, 제1 실시형태에서는, 네트워크 내의 링크는 무선 링크이다. 물론, 후술하는 제2 및 제3 실시형태와 같이, 유선 링크가 존재하는 실시형태도 가능하다.
타이머 IC(203)는 설정된 시간이 경과할 때까지 카운트업 동작을 하고, 설정된 시간이 경과하면 인터럽트 신호를 출력한다. 예컨대, 타이머 IC(203)는 인접 노드 관리 테이블(103), 가중치 테이블(104), FID 관리 테이블(105)의 에이징 처리를 각각 정해진 간격으로 실행하기 위한 인터럽트 신호를 출력하더라도 좋다.
한편, 실시형태에 따라서, 노드 장치의 하드웨어 구성은 도 4와 다를 수도 있고, 도 4에 예시한 규격·종류 이외의 그 밖의 하드웨어를 노드 장치에 이용할 수도 있다.
예컨대, 도 3의 프레임 분기 처리부(106), ACK 처리부(107), 링크 관리부(108), 데이터 프레임 처리부(110), 상위층 처리부(111), 헬로 프레임 생성부(112), 또는 FID 생성부(113)는 하드웨어 회로에 의해 실현되더라도 좋다. 구체적으로는, MPU(201) 대신에, FPGA(Field Programmable Gate Array) 등의 재구성 가능한(ReConfigurable) 회로나, ASIC(Application Specific Integrated Circuit) 등에 의해, 이들 도 3의 각 부가 실현될 수도 있다. 물론, MPU(201)와 하드웨어 회로의 쌍방에 의해 도 3의 각 부가 실현될 수도 있다.
한편, 이하의 설명에서는 설명을 명확하게 하기 위해, 도 3 및 도 4의 각 부의 참조 부호 뒤에 노드 ID를 붙인 참조 부호를 이용하는 경우가 있다. 예컨대, 노드 장치 N1이 갖는 도 3의 인접 노드 관리 테이블(103)을 「103-N1」이라는 참조 부호로 참조하는 경우가 있다.
이어서, 개개의 노드 장치의 동작의 개요에 관해서 도 5를 참조하여 설명하고, 개개의 노드 장치의 동작 결과로서 네트워크 전체적으로 실현되는 경로 선택에 관해서 도 6을 참조하여 설명한다.
도 5는 하나의 노드 장치에 주목하여 가중치 학습에 관해서 설명하는 도면이다. 도 5에는, 네트워크(3) 내의 6개의 노드 장치가 「노드 α」~「노드 ζ」로서 발췌되어 표시되어 있다. 도 5에 도시하는 바와 같이, 노드 β에는 노드 α, γ, δ, ε 및 ζ가 인접해 있고, 도 5에는 하기 5 라인의 링크가 실선으로 표시되어 있다.
·노드 β와 α 사이의 링크 Lβ,α
·노드 β와 γ 사이의 링크 Lβ,γ
·노드 β와 δ 사이의 링크 Lβ,δ
·노드 β와 ε 사이의 링크 Lβ,ε
·노드 β와 ζ 사이의 링크 Lβ,ζ
또한, 도 5에 있어서 구름 형태로 모식적으로 표현된 네트워크(3a)는 네트워크(3) 중의 일부분이다. 네트워크(3a)는 구체적으로는, 노드 δ와 ζ 사이를 직접적으로 접속하는 링크, 또는 하나 이상의 도시되지 않는 노드와 2 라인 이상의 도시되지 않는 링크를 통해 노드 δ와 ζ 사이를 간접적으로 접속하는 경로를 포함한다.
이하에서는, 도 5에 있어서 노드 β에 주목하여, 노드 β에서의 가중치 학습에 관해서 설명한다.
이때, 노드 β가 네트워크(3) 내의 도시되지 않는 어느 노드(이하, 편의적으로 「노드 η」이라고 함)를 GD로 하는 데이터 프레임(301)을, 링크 Lβ,α를 통해 노드 α로부터 수신한다. 노드 β는 도 3의 가중치 테이블(104)을 갖고 있고, 이 중 노드 η에 대응하는 가중치 테이블을, 도 5의 설명에서는 편의적으로 「104-h」라고 하는 참조 부호로 참조한다.
자세하게는 도 10 및 도 11과 함께 후술하지만, GD마다 관리되는 가중치 테이블(104)의 각각은 인접 노드와 가중치의 대응을 기억한다. 노드 β에는 노드 α, γ, δ, ε 및 ζ가 인접해 있기 때문에, 가중치 테이블(104-h)에서는, 노드 α와 가중치 Wα, 노드 γ와 가중치 Wγ, 노드 δ와 가중치 Wδ, 노드 ε와 가중치 Wε 및 노드 ζ와 가중치 Wζ가 각각 대응시켜져 있다.
설명의 편의상, 노드 β가 노드 α로부터 데이터 프레임(301)을 수신한 시점에서의 가중치의 관계가 식 (1)과 같다고 한다.
Wγ<Wδ<Wε<Wζ (1)
이하, 제1 실시형태에 있어서는 설명의 편의상 가중치에 대해 0 이상 1 이하의 값을 취하고, 가중치가 작을수록 그 가중치에 대응하는 노드의 우선도가 높다는 것을 나타낸다고 한다.
따라서, 식 (1)에 기초하여 노드 β는 가장 경한 가중치 Wγ와 대응시켜진 노드 γ의 우선도가 인접 노드 γ, δ, ε 및 ζ 중에서 가장 높음을 인식한다. 따라서, 노드 β는 데이터 프레임(301)을 전송하기 위한 LD로서, 인접 노드 γ, δ, ε 및 ζ 중에서 우선 노드 γ를 선택하여, 노드 γ에 데이터 프레임(301)을 송신한다.
여기서, 노드 β로부터 노드 γ로의 송신이 실패하면, 노드 β는 「노드 η를 GD로 하는 데이터 프레임을 송신할 때에 노드 γ를 LD로서 선택하는 것은 부적절하다」고 학습한다. 그리고, 학습의 결과로서, 노드 β는 노드 γ의 우선도를 내린다. 즉, 노드 β는 가중치 Wγ의 값을 크게 한다.
송신 실패에는 몇 종류가 있는데, 구체적으로는, 노드 β는 하기 (D1) 또는 (D2)와 같이 하여, 「노드 η을 GD로 하는 데이터 프레임을 송신할 때에 노드 γ를 LD로서 선택하는 것은 부적절하다」고 학습한다.
(D1) 링크 장해의 경우
노드 β가 데이터 프레임(301)을 노드 γ에 전송한 시점에서, 우연히 링크 Lβ,γ 혹은 노드 γ에 장해가 발생하면, 노드 β는 노드 γ에의 송신이 실패했다고 인식한다.
예컨대, 링크 Lβ,γ가 무선 링크인 경우, 노드 γ로부터 데이터 프레임(301)에 대한 ACK 프레임이 정해진 시간 내에 회신되어 오지 않으면, 노드 β는 타임아웃하여, 「노드 γ에의 데이터 프레임(301)의 송신에 실패했다」고 판단한다. 그리고, 노드 β는 「노드 η를 GD로 하는 데이터 프레임을 송신할 때에 노드 γ를 LD로서 선택하는 것은 부적절하다」고 학습하여, LD로서 선택한 노드 γ에 대응시켜진 가중치 Wγ의 값을 크게 한다.
한편, 무선 링크는 그 품질 환경이 변하기 쉽기 때문에, 링크 장해가 다시 해소될 가능성이 있다. 그 때문에, 제1 실시형태에서는, 링크 장해 시에 한번에 가중치 Wγ를 최대치로 하는 것이 아니라, 정해진 값만큼 크게 하는 방식을 취한다. 이와 같이 하면, 1회의 링크 장해 발생만으로 그 LD가 부적절하게 되는 것을 막을 수 있다.
(D2) 노드 γ로부터 노드 β로 데이터 프레임(301)이 되돌아오는 경우
노드 β는 일단 노드 γ에의 데이터 프레임(301)의 송신에 성공한다. 예컨대, 노드 β는 데이터 프레임(301)에 대한 ACK 프레임을 노드 γ로부터 수신함으로써, 노드 γ에의 데이터 프레임(301)의 송신이 성공했음을 인식한다. 따라서, 일단 노드 β는 LD로서 선택한 노드 γ에 대응시켜진 가중치 Wγ의 값을 작게 한다.
그러나, 그 후, 노드 γ에서 노드 η까지 데이터 프레임(301)을 전송할 수 있는 경로가 네트워크(3) 내에서 발견되지 않으면, 후술하는 백트랙 동작에 의해, 노드 γ는 노드 β에 데이터 프레임(301)을 돌려보낸다. 예컨대, 노드 γ가 노드 β에만 인접해 있는 경우, 노드 γ는 노드 η까지 데이터 프레임(301)을 전송할 수 있는 경로를 찾아낼 수 없다. 또한, 노드 γ가 노드 β 이외에 몇 개의 노드에 인접해 있는 경우라도, 네트워크(3)의 토폴로지에 따라서는 노드 γ에서 노드 η까지 도달 불능인 경우도 있다.
노드 γ가 백트랙 동작을 하면, 노드 β는 노드 β 자신이 과거에 노드 γ에 송신한 데이터 프레임(301)을 노드 γ로부터 수신하기 때문에, 「노드 γ에의 송신이 실패했다」고 인식할 수 있다. 인식 결과, 노드 β는 「노드 η를 GD로 하는 데이터 프레임을 송신할 때에 노드 γ를 LD로서 선택하는 것은 부적절하다」고 학습하여, LD로서 선택한 노드 γ에 대응시켜진 가중치 Wγ의 값을 크게 한다.
제1 실시형태에서는, (D2)와 같이, 노드 β 자신이 과거에 송신한 데이터 프레임(301)을 수신함으로써 노드 β가 송신 실패를 인식하는 경우, 노드 β는 구체적으로는 가중치 Wγ의 값을 최대치로 설정한다.
이하에서는 설명의 편의상, 도 5의 예에 있어서 (D2)와 같이 하여 노드 β가 송신 실패를 인식하여, 가중치 Wγ의 값을 최대치로 설정했다고 한다. 그 결과, 식(2)가 성립한다.
Wδ<Wε<Wζ<Wγ (2)
이어서 노드 β는 GD인 도시되지 않는 노드 η에 데이터 프레임(301)을 도달시키기 위해서, 부적절하다고 판명된 노드 γ 이외의 인접 노드를 LD로서 선택하여, 데이터 프레임(301)의 재송신을 시도한다. 구체적으로는 식 (2)에 기초하여, 노드 β는 현시점에서 가장 경한 가중치 Wδ와 대응시켜진 노드 δ를 LD로서 선택하여, 노드 δ에 데이터 프레임(301)을 송신한다.
도 5의 예에서는, 데이터 프레임(301)에 대한 ACK 프레임을 노드 β가 노드 δ로부터 수신하여, 노드 β는 송신 성공을 인식한다. 송신 성공을 인식하면, 노드 β는, LD로서 선택한 노드 δ에 대응시켜진 가중치 Wδ의 값을 작게 한다. 그 결과, 역시 식 (2)이 성립한다.
이어서, 데이터 프레임(301)은 네트워크(3a)를 통해 노드 δ로부터 노드 ζ에 도달했다고 한다. 그리고, 노드 ζ가 LD로서 노드 β를 선택했다고 한다.
그러면, 노드 β는 노드 β 자신이 과거에 노드 δ에 송신한 데이터 프레임(301)을 노드 ζ로부터 수신하기 때문에, 「노드 δ에의 송신은 루프가 존재하여 실패했다」고 인식할 수 있다. 인식 결과, 노드 β는 「노드 η를 GD로 하는 데이터 프레임을 송신할 때에 노드 δ를 LD로서 선택하는 것은 부적절하다」고 학습하여, 가중치 Wδ의 값을 크게 한다.
여기서, 루프에 의해 되돌아온 데이터 프레임(301)을 노드 β가 노드 ζ로부터 수신하는 경우도, 「노드 β 자신이 과거에 송신한 데이터 프레임(301)을 수신함으로써 노드 β가 송신 실패를 인식한다」고 하는 점에서는 상기 (D2)의 경우와 마찬가지다. 따라서, 노드 β는 「노드 η를 GD로 하는 데이터 프레임을 송신할 때에 노드 δ를 LD로서 선택하는 것은 부적절하다」고 학습하여, LD로서 선택한 노드 δ에 대응시켜진 가중치 Wδ의 값을 최대치로 설정한다. 그 결과, 식 (3)이 성립한다.
Wε<Wζ<Wγ=Wδ (3)
도 5에는, 노드 ζ로부터 동일 데이터 프레임(301)을 수신하여 가중치를 갱신한 결과의 새로운 가중치의 관계로서, 식 (3)을 나타낸다.
이어서 노드 β는 GD인 도시되지 않는 노드 η에 데이터 프레임(301)을 도달시키기 위해서, 부적절하다고 판명된 노드 γ 및 δ 이외의 인접 노드를 LD로서 선택하여, 데이터 프레임(301)의 재송신을 시도한다. 구체적으로는 식 (3)에 기초하여, 노드 β는 현시점에서 가장 경한 가중치 Wε와 대응시켜진 노드 ε를 LD로서 선택하여, 노드 ε에 데이터 프레임(301)을 송신한다.
도 5의 예에서는, 데이터 프레임(301)에 대한 ACK 프레임을 노드 β가 노드 ε로부터 수신하여, 노드 β는 송신 성공을 인식한다. 송신 성공을 인식하면, 노드 β는 LD로서 선택한 노드 ε에 대응시켜진 가중치 Wε의 값을 작게 한다. 그 결과, 역시 식 (3)이 성립한다.
여기서 만일, 노드 ε로부터 백트랙에 의해서 데이터 프레임(301)이 노드 β로 회신되는 일이 없다고 한다. 또한, 데이터 프레임(301)이 네트워크(3) 내에서 루프되어, 노드 β의 어느 한 인접 노드로부터 노드 β에 송신되며, 노드 β에서 수신되는 일도 없다고 한다.
그러면, 식 (3)으로부터, 노드 β는 데이터 프레임(301)과 마찬가지로 노드 η를 GD로 하는 별도의 데이터 프레임을 인접 노드 α, γ, δ, ζ 중 어느 것으로부터 수신한 경우에, 가장 경한 가중치 Wε와 대응시켜진 노드 ε를 LD로서 우선하여 선택하게 된다.
도 6은 도 1의 네트워크(1)에서 동적이고 또한 자율 분산적으로 경로가 선택되는 상태를 설명하는 도면이다. 구체적으로는, 도 6은 노드 장치 N1이 GS가 되고 노드 장치 N7을 GD로서 지정한 데이터 프레임을 송신하는 경우, 네트워크(1) 내에서의 경로 선택의 상태를 도시한다.
도 6에는 도 1의 네트워크(1)와, 노드 장치 N4와 N7 사이에서 발생한 장해가 표시되어 있다. 또한, 도 6의 12 라인의 굵은 화살표는 네트워크(1) 내에서 경로가 동적으로 선택되면서 데이터 프레임이 GS(즉, 노드 장치 N1)에서 GD(즉, 노드 장치 N7)까지 전송되는 상태를 나타낸다.
한편, 이하에서는, 노드 장치 Ni의 가중치 테이블(104-Ni) 중, 노드 장치 N7에 대응하는 것을 편의적으로 「104-hi-Ni」라는 참조 부호로 참조하는 것으로 한다(1≤i≤6).
또한, 도 6의 설명에서는, 특별히 언급하지 않는 한 데이터 프레임의 송신이 성공하여 ACK 프레임이 회신되는 것으로 하고, ACK 프레임의 회신에 관해서는 생략하여 설명을 간략하게 한다. ACK 프레임의 회신을 비롯한 일련의 처리 흐름은 도 31과 함께 후술한다.
단계 S101에서, GS인 노드 장치 N1은 유일하게 노드 장치 N1에 인접해 있는 노드 장치 N2를 LD로서 선택하여, 데이터 프레임을 노드 장치 N2에 송신한다.
노드 장치 N2에는, 단계 S101에서 송신된 데이터 프레임의 LS인 노드 장치 N1 이외에, 노드 장치 N3과 N6이 인접해 있다. 그리고, 이 2개의 인접 노드 장치 N3과 N6 중에 노드 장치 N3이 가중치 테이블(104-h2-N2)에서 보다 경한 가중치와 대응시켜져 있다고 한다.
그러면, 단계 S102에서 노드 장치 N2는 단계 S101에서 수신한 데이터 프레임을 전송하기 위한 LD로서 노드 장치 N3을 선택하여, 노드 장치 N3에 데이터 프레임을 송신한다.
노드 장치 N3에는, 단계 S102에서 송신된 데이터 프레임의 LS인 노드 장치 N2 이외에, 노드 장치 N4와 N5가 인접해 있다. 그리고, 이 2개의 인접 노드 장치 N4와 N5 중에 노드 장치 N4가 가중치 테이블(104-h3-N3)에서 보다 경한 가중치와 대응시켜져 있다고 한다.
그러면, 단계 S103에서 노드 장치 N3은 단계 S102에서 수신한 데이터 프레임을 전송하기 위한 LD로서 노드 장치 N4를 선택하여, 노드 장치 N4에 데이터 프레임을 송신한다.
노드 장치 N4에는, 단계 S103에서 송신된 데이터 프레임의 LS인 노드 장치 N3 이외에, 노드 장치 N5와 N7이 인접해 있다. 그리고, 이 2개의 인접 노드 장치 N5와 N7 중에 노드 장치 N7이 가중치 테이블(104-h4-N4)에서 보다 경한 가중치와 대응시켜져 있다고 한다.
그러면, 단계 S104에서 노드 장치 N4는 단계 S103에서 수신한 데이터 프레임을 전송하기 위한 LD로서, GD이기도 한 노드 장치 N7을 선택하여, 노드 장치 N7에 데이터 프레임을 송신한다.
그러나, 도 6에 도시하는 바와 같이, 노드 장치 N4가 노드 장치 N7에 데이터 프레임을 송신한 시점에서, 노드 장치 N4와 N7 사이의 링크에는 장해가 발생하고, 따라서 송신은 실패한다. 즉, 노드 장치 N4는 정해진 시간 대기하더라도 노드 장치 N7로부터 ACK 프레임이 회신되어 오지 않기 때문에, 타임아웃하여, 송신 실패를 인식한다.
한편, 단계 S104에서의 노드 장치 N4는 도 5에서 노드 γ로의 데이터 프레임의 송신에 상기 (D1)과 같은 식으로 하여 실패한 노드 β에 상당한다. 따라서, 노드 장치 N4는 송신 실패에 따라 가중치 테이블(104-h4-N4)을 갱신한다(구체적으로는, 단계 S104의 송신에서의 LD인 노드 장치 N7에 대응시켜진 가중치를 크게 한다).
그리고, 단계 S105에서 노드 장치 N4는 단계 S103에서 수신한 데이터 프레임을 전송하기 위한 LD로서, 아직 시도하지 않은 다른 인접 노드 장치 N5를 선택하여, 노드 장치 N5에 데이터 프레임을 송신한다.
노드 장치 N5에는, 단계 S105에서 송신된 데이터 프레임의 LS인 노드 장치 N4 이외에는, 노드 장치 N3만이 인접해 있다.
그래서, 단계 S106에서 노드 장치 N5는 단계 S105에서 수신한 데이터 프레임을 전송하기 위한 LD로서 노드 장치 N3을 선택하여, 노드 장치 N3에 데이터 프레임을 송신한다.
그러면, 단계 S106에서 노드 장치 N3은 「노드 장치 N3 자신이 단계 S103에서 송신한 것과 동일한 데이터 프레임을 수신했다」고 인식한다. 즉, 단계 S106에서의 노드 장치 N3은 도 5에 있어서 루프된 데이터 프레임을 노드 ζ로부터 수신한 노드 β에 상당한다. 따라서, 노드 장치 N3은 도 5와 같은 식으로 하여 가중치 테이블(104-h3-N3)을 갱신한다(구체적으로는, 단계 S103에서의 송신 LD인 노드 장치 N4에 대응시켜진 가중치를 최대치로 설정한다).
그리고, 단계 S107에서 노드 장치 N3은 OLS(즉, 단계 S102에서 노드 장치 N3이 최초로 그 데이터 프레임을 수신했을 때의 LS인 노드 장치 N2) 이외의 인접 노드 장치 중에서, 아직 LD로서 시도되지 않은 것을 찾는다. 여기서, OLS 이외의 인접 노드 장치는 노드 장치 N4와 N5이며, 노드 장치 N4는 단계 S103에서 선택되었다.
따라서, 단계 S107에서 노드 장치 N3은 미선택 노드 장치 N5를 LD로서 선택하여, 노드 장치 N5에 데이터 프레임을 송신한다. 즉, 단계 S107에서의 노드 장치 N3은 도 5에 있어서 노드 ε를 LD로서 다시 선택하여 노드 ε에 데이터 프레임을 송신하는 노드 β에 상당한다.
그러면, 단계 S107에서 노드 장치 N5는 「노드 장치 N5 자신이 단계 S106에서 송신한 것과 동일한 데이터 프레임을 수신했다」고 인식한다. 즉, 단계 S107에서의 노드 장치 N5는 도 5에 있어서 노드 γ에의 데이터 프레임의 송신에 (D2)와 같은 식으로 하여 실패한 노드 β에 상당한다. 따라서, 노드 장치 N5는 도 5와 같은 식으로 하여 가중치 테이블(104-h5-N5)을 갱신한다(구체적으로는, 단계 S106에서의 송신 LD인 노드 장치 N3에 대응시켜진 가중치를 최대치로 설정한다).
그리고, 노드 장치 N5에 있어서, OLS(즉, 단계 S105에서 노드 장치 N5가 최초로 상기 데이터 프레임을 수신했을 때의 LS인 노드 장치 N4) 이외에 인접해 있는 노드 장치는 이미 송신 실패로 판명된 노드 장치 N3뿐이다. 따라서, 이제는 LD로서 선택 가능한 인접 노드 장치가 없다.
따라서, 단계 S108에서 노드 장치 N5는 OLS인 노드 장치 N4에 데이터 프레임을 돌려보낸다. 단계 S108은 백트랙 동작이며, 백트랙 동작에 의해서 노드 장치 N5는 「노드 장치 N7을 GD로 하는 데이터 프레임의 송신에서는 노드 장치 N5 자신보다 앞의 경로가 막다른 길(dead end)이다」라는 것을 노드 장치 N4에 알릴 수 있다.
그러면, 단계 S108에서 노드 장치 N4는 「노드 장치 N4 자신이 단계 S105에서 송신한 것과 동일한 데이터 프레임을 수신했다」고 인식한다. 즉, 단계 S108에서의 노드 장치 N4는 도 5에 있어서 노드 γ에의 데이터 프레임의 송신에 (D2)와 같은 식으로 하여 실패한 노드 β에 상당한다. 따라서, 노드 장치 N4는 도 5와 같은 식으로 하여 가중치 테이블(104-h4-N4)을 갱신한다(구체적으로는, 단계 S105에서의 송신 LD인 노드 장치 N5에 대응시켜진 가중치를 최대치로 설정한다).
그러나, 도 5의 노드 β에는, 노드 γ에의 데이터 프레임의 송신에 실패하더라도, 아직 LD로서 선택 가능한 노드 δ 등이 남아 있지만, 도 6의 단계 S108의 노드 장치 N4에는 LD로서 선택 가능한 인접 노드 장치가 남아 있지 않다. 즉, OLS 이외의 2개의 인접 노드 장치 N7과 N5는 단계 S104와 S105에서 각각 LD로서 선택되어, 양자 모두 송신 실패의 결과가 된다고 이미 판명되었다.
따라서, 단계 S109에서 노드 장치 N4는 OLS인 노드 장치 N3에 데이터 프레임을 돌려보낸다. 단계 S109도 백트랙 동작이며, 노드 장치 N4는 노드 장치 N3에 「노드 장치 N7을 GD로 하는 데이터 프레임의 송신에서는 노드 장치 N4 자신보다 앞의 경로가 막다른 길이다」라는 것을 알릴 수 있다.
그러면, 단계 S109에서 노드 장치 N3은 「노드 장치 N3 자신이 단계 S107에서 송신한 것과 동일한 데이터 프레임을 수신했다」고 인식한다. 즉, 단계 S109에서의 노드 장치 N4는 도 5에 있어서 루프된 데이터 프레임을 노드 ζ로부터 수신한 노드 β에 상당한다. 따라서, 노드 장치 N3은 도 5와 같은 식으로 하여 가중치 테이블(104-h3-N3)을 갱신한다(구체적으로는, 단계 S107에서의 송신 LD인 노드 장치 N5에 대응시켜진 가중치를 최대치로 설정한다).
그러나, 도 5의 노드 β에는, 노드 δ에의 데이터 프레임의 송신이 실패한다고 판명되더라도, 아직 LD로서 선택 가능한 노드 ε가 남아 있지만, 도 6의 단계 S109의 노드 장치 N3에서는 LD로서 선택 가능한 인접 노드 장치가 남아 있지 않다. 즉, OLS 이외의 2개의 인접 노드 장치 N4와 N5는, 단계 S103과 S107에서 각각 LD로서 선택이 끝나, 양자 모두 송신 실패라는 결과가 된다고 이미 판명되었다.
따라서, 단계 S110에서 노드 장치 N3은 OLS인 노드 장치 N2에 데이터 프레임을 돌려보낸다. 단계 S110도 백트랙 동작이며, 노드 장치 N3은 노드 장치 N2에 「노드 장치 N7을 GD로 하는 데이터 프레임의 송신에서는 노드 장치 N3 자신보다 앞의 경로가 막다른 길이다」라는 것을 알릴 수 있다.
그러면, 단계 S110에서 노드 장치 N2는 「노드 장치 N2 자신이 단계 S102에서 송신한 것과 동일한 데이터 프레임을 수신했다」고 인식한다. 즉, 단계 S110에서의 노드 장치 N2는 도 5에서 노드 γ로의 데이터 프레임의 송신에 (D2)와 같이 하여 실패한 노드 β에 상당한다. 따라서, 노드 장치 N2는 도 5와 같은 식으로 하여 가중치 테이블(104-h2-N2)을 갱신한다(구체적으로는, 단계 S102에서의 송신 LD인 노드 장치 N3에 대응시켜진 가중치를 최대치로 설정한다).
그리고, 단계 S111에서 노드 장치 N2는 데이터 프레임을 전송하기 위한 LD로서, 아직 시도되지 않은 다른 인접 노드 장치 N6을 선택하여, 노드 장치 N6에 데이터 프레임을 송신한다.
노드 장치 N6에는, 단계 S111에서 송신된 데이터 프레임의 LS인 노드 장치 N2 이외에는, GD이기도 한 노드 장치 N7만이 인접해 있다.
그래서, 단계 S112에서 노드 장치 N6은 단계 S111에서 수신한 데이터 프레임을 전송하기 위한 LD로서 노드 장치 N7을 선택하여, 노드 장치 N7에 데이터 프레임을 송신한다.
이상과 같이 하여, 네트워크(1) 내에 장해가 발생하더라도, 각 노드 장치가 자율 분산적으로 행동함으로써, 데이터 프레임은 성공적으로 GD까지 도달한다.
또한, 데이터 프레임의 전송에 있어서, 국소적으로 부적절한 노드 장치가 LD로서 선택되더라도, 최종적으로는 네트워크 전체적으로는, GS에서 GD에 이르는 경로가 선택된다. 그 이유는 각 노드 장치가 LD로서 선택 가능한 노드 장치를 차례차례 선택하여, 선택 가능한 노드 장치가 없어지면 백트랙 동작을 하기 때문이다.
구체적으로는, 도 6의 예에서는, 단계 S102에서 노드 장치 N2가 노드 장치 N3을 LD로서 선택한 것은 결과적으로는 부적절하다고 단계 S110에서 판명된다. 그러나, 단계 S103~S110의 동작에 의해, 네트워크(1) 전체적으로는 최종적으로는 GS에서 GD에 이르는 경로 〈N1, N2, N6, N7〉의 선택에 성공한다.
이렇게 해서 선택된 경로는 학습되어, 다음번 이후의 데이터 프레임의 전송 효율화에 기여한다. 학습에 의한 효율화에 관해서 구체적으로 설명하면 다음과 같다.
단계 S110에서의 데이터 프레임의 수신 결과, 노드 장치 N2는 가중치 테이블(104-h2-N2)을 학습하여, 노드 장치 N3에 대응시켜진 가중치를 최대치로 설정한다. 따라서, 노드 장치 N2는 노드 장치 N7을 GD로 하는 새로운 데이터 프레임을 인접 노드 장치 N1로부터 수신하면, 처음부터 노드 장치 N6을 LD로서 선택한다. 즉, 네트워크(1) 전체적으로는, 자율 분산적인 학습의 결과, 백트랙을 포함하는 시행착오 없이, 데이터 프레임을 효율적으로 경로 〈N1, N2, N6, N7〉를 통해 GD까지 송신하는 것이 가능하게 된다.
더욱이, 제1 실시형태에 따르면, 부적절한 LD 선택의 영향 또는 국소적인 장해의 영향은 네트워크(1) 전체에는 미치지 않고, 국소적으로 한정된다. 즉, 제1 실시형태에 따르면, 예컨대 노드 장치 N4와 N7 사이의 링크에 장해가 발생하더라도, 대체 경로를 조회하기 위한 제어 프레임이 네트워크(1) 전체의 전체 노드 장치로 플러딩되지 않는다. 따라서, 제1 실시형태에 따르면, 장해나 루프가 국소적으로 발생하더라도, 네트워크(1) 전체에 브로드캐스트 스톰을 야기시키는 사태는 일어나지 않는다.
또한, 도 6의 예에 있어서 노드 장치 N1은 노드 장치 N4와 N7 사이의 링크 장해나, 루프〈N3, N4, N5, N3〉에 관해서는 전혀 인식하지 않은 것이 분명하다. 이것은 부적절한 LD의 선택이나 국소적인 장해의 영향이 국소적으로 한정되어, 네트워크(1) 전체에는 미치지 않는다는 것을 의미한다.
문제의 영향이 국소적으로 한정된다는 것은 국소적인 문제가 네트워크(1) 전체로 포지티브하게 피드백되어 발산되는 일이 없다는 것이며, 네트워크(1)가 시스템으로서 안정적이라는 것이다. 문제가 국소적으로 한정되는 것의 다른 예를 들면, 예컨대 다음과 같다.
예컨대, 만일 네트워크(1)에 있어서 노드 장치 N5와 N7 사이에도 링크가 존재하고, 가중치 테이블(104-h5-N5)에 있어서 노드 장치 N3보다도 노드 장치 N7이 경한 가중치에 대응시켜져 있다고 한다. 그러면, 단계 S105 직후에 노드 장치 N5가 노드 장치 N7을 LD로서 선택하여 데이터 프레임을 노드 장치 N7에 송신한다. 그 결과, 단계 S108~S112의 송신은 이루어지지 않고, 노드 장치 N1뿐만 아니라 노드 장치 N2와 N3도 장해 발생을 전혀 인식하지 않는다. 이와 같이, 링크의 장해나 루프의 발생 등의 문제는 문제가 생긴 장소에 따라서 최소한의 국소적인 범위밖에는 영향을 미치지 않는다.
계속해서, 이상 설명한 노드 장치(100)의 구성과 동작 및 네트워크(1) 전체에서 실현되는 자율 분산 협조 동작에 관해서, 더욱 상세히 설명한다.
도 7은 프레임의 예를 도시하는 도면이다.
제1 실시형태에서의 데이터 프레임은 도 7의 데이터 프레임(302)과 같이, LD, LS, GD, GS, FID, 타입, 길이의 각 필드를 포함하는 헤더와, 페이로드를 포함한다. 예컨대, 도 5의 데이터 프레임(301)도 데이터 프레임(302)과 같은 형식이다.
데이터 프레임(302)의 LD 필드, LS 필드, GD 필드 및 GS 필드에는, 데이터 프레임(302)의 LD, LS, GD 및 GS인 각 노드 장치의 노드 ID가 각각 지정된다. 또한, 데이터 프레임(302)의 FID 필드에는, 데이터 프레임(302)의 GS인 노드 장치가 생성하여 데이터 프레임(302)에 할당한 FID가 지정된다.
데이터 프레임(302)의 타입 필드에는 「데이터 프레임」이라는 타입을 나타내는 정해진 상수가 지정된다. 또한, 데이터 프레임(302)의 길이 필드에는 페이로드의 길이가 지정된다. 데이터 프레임(302)의 페이로드는 데이터 프레임(302)이 정의되는 프로토콜보다도 상위층의 프로토콜의 PDU이다.
예컨대, MAC 부속층을 가상적으로 2개의 부속층으로 더 분할하는 것을 상정한다. 제1 실시형태의 프레임은 이 가상적인 2개의 부속층 중 아래쪽의 부속층으로 정의되어도 좋고, 즉 MAC 부속층에서 정의되는 다른 프로토콜(예컨대, 이더넷 등)의 PDU를 페이로드에 포함하여도 좋다. 바꿔 말하면, 제1 실시형태의 프레임은 제2층에서 정의되는 이더넷 프레임을 캡슐화하는 프레임이어도 좋다. 이 경우, 상위층 처리부(111)는 이더넷 프레임을 처리하는 처리부이므로, 공지된 MAC 칩을 이용하여 실현할 수도 있다.
이하에서는 설명의 편의상, 데이터 프레임(302)의 페이로드는 MAC층 프로토콜의 프레임(구체적으로는 예컨대 이더넷 프레임)인 것으로 한다.
그러나, 물론 실시형태에 따라서는, 데이터 프레임(302)의 페이로드는 네트워크층(제3층) 이상에서 정의되는 프로토콜의 PDU라도 좋고, 특정 통신 프로토콜과는 관계없는 미처리 데이터이어도 좋다. 예컨대, 데이터 프레임(302)의 페이로드가 IP(Internet Protocol) 데이터그램이어도 좋다. 이 경우, 상위층 처리부(111)는 IP 데이터그램을 처리하는 처리부이다.
데이터 프레임(302)의 형식은 이상 설명한 바와 같지만, 구체적인 값을 사용하여 보다 자세하게 예시하면, 데이터 프레임(303 및 304)과 같다.
데이터 프레임(303)은 도 6의 단계 S102에서 노드 장치 N2가 노드 장치 N3에 송신하는 데이터 프레임이다. 데이터 프레임(303)의 구체적인 내용은 다음과 같다.
·LD 필드에는, 단계 S102의 송신에서 LD로서 선택된 노드 장치 N3의 노드 ID(즉, N3)가 지정된다.
·LS 필드에는, 단계 S102의 송신에서의 LS인 노드 장치 N2의 노드 ID(즉, N2)가 지정된다.
·GD 필드에는, GS인 노드 장치 N1이 단계 S101의 송신 시에 지정한 노드 장치 N7의 노드 ID(즉, N7)가 지정된다.
·GS 필드에는, GS인 노드 장치 N1의 노드 ID(즉 N1)가 지정된다.
·FID 필드에는, GS인 노드 장치 N1이 생성한 FID(이하 Fa로 함)가 지정된다.
·타입 필드에는, 「데이터 프레임」이라는 타입을 나타내는 정해진 상수 D가 지정된다. 예컨대, 타입은 2 비트로 나타낼 수도 있으며, D=(00)2라도 좋다.
·길이 필드에는, 데이터 프레임(302)의 페이로드의 길이 Pa가 지정된다. 한편, 길이는 예컨대 바이트 단위로 나타내어도 좋고, 그 밖의 단위로 나타내어도 좋다.
·페이로드로서, MAC층 프로토콜의 프레임(예컨대, 이더넷 프레임)이 포함된다.
또한, 데이터 프레임(303)을 수신한 노드 장치 N3이 도 6의 단계 S103에서 노드 장치 N4에 송신하는 것이 도 7의 데이터 프레임(304)이다. 데이터 프레임(304)의 구체적인 내용은 다음과 같다.
·LD 필드에는, 단계 S103의 송신에서 LD로서 선택된 노드 장치 N4의 노드 ID(즉 N4)가 지정된다. 즉, 전송 시에, 노드 장치 N3은 LD 필드를 재기록한다.
·LS 필드에는, 단계 S103의 송신에서의 LS인 노드 장치 N3의 노드 ID(즉 N3)가 지정된다. 즉, 전송 시에, 노드 장치 N3은 LS 필드를 재기록하여, 자노드 ID를 설정한다.
·GD, GS, FID, 타입, 길이의 각 필드와 페이로드의 내용은 노드 장치 N3이 수신한 데이터 프레임(303)과 동일하다.
또한, 제1 실시형태에서의 헬로 프레임은 도 7의 헬로 프레임(311)과 같이, LD, LS, GD, GS, FID, 타입의 각 필드를 포함하는 헤더를 갖지만, 페이로드를 갖지 않는다. 헬로 프레임(311)의 구체적인 예는 헬로 프레임(312)이며, 헬로 프레임(312)은 후술하는 도 31의 단계 S1203에서 노드 장치 N3에 의해 송신되는 것이다.
헬로 프레임(311)의 LD 필드에는, 헬로 프레임(311)을 송신하는 노드 장치에 인접해 있는 모든 노드 장치에의 브로드캐스트를 나타내는 특수한 값이 지정된다. 또 여기서의 「브로드캐스트」는 「인접해 있는 모든 노드 장치에의 브로드캐스트」이며, 「네트워크(1) 전체로의 플러딩」이 아니기 때문에 주의해야 한다.
이하, 설명의 편의상, 제1 실시형태에서는 노드 ID가 3 바이트로 나타내는 것으로 하고, 「0x」는 16진수를 나타내는 것으로 한다. 또한, 0x000000과 0xFFFFFF는 예약되어 있고, 통상의 노드 ID로서는 사용되지 않는 것으로 한다.
제1 실시형태에서의 모든 헬로 프레임에서는, 헬로 프레임(312)과 마찬가지로 LD 필드에, 그 헬로 프레임을 송신하는 노드 장치에 인접해 있는 모든 노드 장치에의 브로드캐스트를 나타내는 특수한 값으로서, 0xFFFFFF가 지정된다.
헬로 프레임(311)의 LS 필드에는, 헬로 프레임(311)을 송신하는 노드 장치 자신의 노드 ID가 지정된다. 따라서, 노드 장치 N3이 송신하는 헬로 프레임(312)의 LS 필드에는, 노드 장치 N3의 노드 ID인 N3이 지정된다.
또한, 제1 실시형태에 있어서의 모든 헬로 프레임에서는, GD 필드에, 널(null)을 나타내는 특수한 값 0x000000이 지정된다. 그 이유는 헬로 프레임은 인접 노드 장치가 이용할 뿐이며 전송되지 않기 때문이다.
헬로 프레임(311)의 GS 필드에는, LS 필드와 마찬가지로, 헬로 프레임(311)을 송신하는 노드 장치 자신의 노드 ID가 지정된다. 따라서, 헬로 프레임(312)의 GS 필드에는, 노드 장치 N3의 노드 ID인 N3이 지정된다.
헬로 프레임(311)의 FID 필드에는, 헬로 프레임(311)을 송신하는 노드 장치가 생성하여 헬로 프레임(311)에 할당한 FID가 지정된다. 마찬가지로, 헬로 프레임(312)의 FID 필드에는, 헬로 프레임(312)을 송신하는 노드 장치 N3이 생성하여 헬로 프레임(312)에 할당한 FID(이하 Fb로 한다)가 지정된다.
헬로 프레임(311)의 타입 필드에는, 「헬로 프레임」이라는 타입을 나타내는 정해진 상수가 지정된다. 구체적으로, 「헬로 프레임」이라는 타입은 헬로 프레임(312)에 예시하는 바와 같이 정해진 상수 H에 의해 나타내어지며, 예컨대 H=(10)2일 수도 있다.
또한, 제1 실시형태에서의 ACK 프레임은 도 7의 ACK 프레임(321)과 같이, LD, LS, GD, GS, FID, 타입의 각 필드를 포함하는 헤더를 갖지만, 페이로드를 갖지 않는다. ACK 프레임(321)의 구체적인 예는 ACK 프레임(322)이다. 또한, ACK 프레임(322)은 도 6의 단계 S102에서 노드 장치 N2가 노드 장치 N3에 데이터 프레임(303)을 송신했을 때, 노드 장치 N3이 노드 장치 N2에 회신하는 ACK 프레임이다. 후술하는 도 31에서는, 이 노드 장치 N3으로부터 노드 장치 N2로의 ACK 프레임(322)의 회신을 단계 S102a로서 나타낸다.
ACK 프레임(321)의 LD 필드에는, ACK 프레임(321)의 송신 계기가 된 데이터 프레임을 송신한 인접 노드 장치의 노드 ID가 지정된다. 따라서, 예컨대 ACK 프레임(322)의 LD 필드에는, ACK 프레임(322)을 노드 장치 N3이 송신하는 계기가 된 데이터 프레임(303)을 송신한, 노드 장치 N3의 인접 노드 장치 N2의 노드 ID인 N2가 지정된다.
ACK 프레임(321)의 LS 필드에는, ACK 프레임(321)을 송신하는 노드 장치 자신의 노드 ID가 지정된다. 따라서, 노드 장치 N3이 송신하는 ACK 프레임(322)의 LS 필드에는, 노드 장치 N3의 노드 ID인 N3이 지정된다.
또한, 헬로 프레임과 마찬가지로 ACK 프레임도 전송되지 않기 때문에, 제1 실시형태에 있어서의 모든 ACK 프레임에서는, GD 필드에, 널을 나타내는 특수한 값 0x000000이 지정된다.
ACK 프레임(321)의 GS 필드와 FID 필드에는, ACK 프레임(321)의 송신 계기가 된 데이터 프레임의 GS 필드와 FID 필드의 값이 카피된다. 상기한 바와 같이, GS 필드와 FID 필드의 값의 조합에 의해, 데이터 프레임이 네트워크 내에서 고유하게 식별된다. 따라서, ACK 프레임(321)을 송신하는 노드 장치는 수신된 데이터 프레임으로부터 값을 카피함으로써, ACK 프레임(321)이 어떤 데이터 프레임에 대한 것인지를, ACK 프레임(321)을 수신한 노드 장치에 있어서 식별하는 것이 가능하게 된다.
따라서, 예컨대 데이터 프레임(303)의 수신을 계기로 하여 송신되는 ACK 프레임(322)에서는, GS 필드와 FID 필드의 값은 데이터 프레임(303)과 마찬가지로, 각각 N1과 Fa이다.
ACK 프레임(321)의 타입 필드에는 「ACK 프레임」이라는 타입을 나타내는 정해진 상수가 지정된다. 구체적으로는, 「ACK 프레임」이라는 타입은 ACK 프레임(322)에 예시하는 바와 같이 정해진 상수 A에 의해 나타내어지고, 예컨대 A=(11)2일 수도 있다.
한편, 도 7에 도시한 프레임의 형식은 일례에 지나지 않고, 실시형태에 따라서, 프레임에 포함되는 필드의 배열 순서는 적절하게 결정될 수 있으며, 또한, 도시되지 않는 다른 필드를 프레임이 포함하고 있어도 좋다. 또한, 프레임이 FCS(Frame Check Sequence) 등의 트레일러를 더 포함하여도 좋다.
또한, 이하에서는 기재를 간단하게 하기 위해, 혼란의 우려가 없는 경우는, 예컨대 「LD 필드」를 단순히 「LD」라고 부르는 경우도 있다. 다른 필드에 대해서도 마찬가지이다.
도 8은 도 3의 버퍼부(109)에 저장되는 데이터의 예를 도시하는 도면이다.
버퍼부(109)는 수신부(101)가 수신한 개개의 데이터 프레임에 각각 대응하는 복수의 엔트리를 포함한다. 그리고, 각 엔트리는 타임아웃 시각과 수신한 데이터 프레임을 포함한다.
도 8은 노드 장치 N3의 버퍼부(109-N3) 내의 어느 엔트리를 예시하고 있다. 구체적으로는, 도 6의 단계 S102에 있어서, 노드 장치 N2로부터 노드 장치 N3이 도 7의 데이터 프레임(303)을 수신하면, 버퍼부(109-N3)에는, 타임아웃 시각 TI3 ,j와 데이터 프레임(303)을 포함하는 엔트리가 작성된다. 버퍼부(109)에서의 엔트리 작성의 상세한 내용은 도 14와 함께 후술한다. 또한, 타임아웃 시각 TI3 ,j의 의미는 다음과 같다.
노드 장치 N3은 단계 S102에서 수신한 데이터 프레임(303)의 헤더를, 단계 S103에서 도 7의 데이터 프레임(304)과 같이 재기록한다. 그리고, 노드 장치 N3은 단계 S103에서 데이터 프레임(304)을 송신한다.
도 8의 타임아웃 시각 TI3 ,j는 노드 장치 N3이 데이터 프레임(304)을 송신한 후, 데이터 프레임(304)에 대한 ACK 프레임의 수신을 언제까지 기다릴 것인지를 나타낸다. 즉, 노드 장치 N3은 타임아웃 시각 TI3 ,j까지 데이터 프레임(304)에 대한 ACK 프레임을 노드 장치 N4로부터 수신할 수 없으면, 타임아웃되어, 노드 장치 N4로의 데이터 프레임(304)의 송신에 실패했다고 판단한다.
또, 자세하게는 도 22, 도 26 및 도 28에 도시하는 바와 같이, 버퍼부(109)에 설정되는 타임아웃 시각은 덮어쓰기되는 경우도 있다.
예컨대, 도 6의 단계 S104에서 노드 장치 N7에의 데이터 프레임의 송신에 실패한 노드 장치 N4는 단계 S105에서, 노드 장치 N3으로부터 수신한 데이터 프레임에 대응하는 버퍼부(109-N4) 내의 타임아웃 시각을 갱신한다. 갱신 후의 타임아웃 시각은 구체적으로는, 단계 S105에서 노드 장치 N5에 송신한 데이터 프레임에 ACK 프레임이 수신되는 것을 언제까지 노드 장치 N4가 기다리는지를 나타낸다.
도 9는 도 3의 인접 노드 관리 테이블(103)의 예를 도시하는 도면이다. 인접 노드 관리 테이블(103)에는, 노드 ID 필드와 최종 갱신 시각 필드가 있다.
예컨대, 도 1의 네트워크(1)에서는, 노드 장치 N2에는 노드 장치 N1, N3 및 N6이 인접해 있다. 따라서, 노드 장치 N2의 인접 노드 관리 테이블(103-N2)은, 이들 3개의 인접 노드 장치 N1, N3 및 N6에 각각 대응하는 3개의 엔트리가 있다. 그리고, 인접 노드 장치 Ni(i=1, 3, 6)에 대응하는 각 엔트리에 있어서, 노드 ID 필드에는 인접 노드 장치 Ni의 노드 ID인 Ni가 저장되고, 최종 갱신 시각 필드에는 그 엔트리가 마지막으로 갱신된 시각 TA2 ,i가 저장된다.
또한, 도 1의 네트워크(1)에서는, 노드 장치 N3에 노드 장치 N2, N4 및 N5가 인접해 있다. 따라서, 노드 장치 N3의 인접 노드 관리 테이블(103-N3)은 이들 3개의 인접 노드 장치 N2, N4 및 N5에 각각 대응하는 3개의 엔트리가 있다. 그리고, 인접 노드 장치 Ni(i=2, 4, 5)에 대응하는 각 엔트리에 있어서, 노드 ID 필드에는 인접 노드 장치 Ni의 노드 ID인 Ni가 저장되고, 최종 갱신 시각 필드에는 그 엔트리가 마지막으로 갱신된 시각 TA3 ,i가 저장된다.
도 10은 도 3의 가중치 테이블(104)의 예를 도시하는 도면이다. 도 10은 구체 적인 예로서, 도 1의 노드 장치 N3의 가중치 테이블(104-N3)을 나타내고 있다.
도 3에 도시하는 바와 같이, 「가중치 테이블(104)」이란, GD마다 관리되는 복수의 가중치 테이블(104-1~104-M)의 총칭이다. 각 가중치 테이블(104-i)(1≤i≤M)은 대응하는 GD를 기억한다.
그리고, 각 가중치 테이블(104-i)(1≤i≤M)은 하나 이상의 엔트리를 갖고, 각 엔트리는 최종 갱신 시각 필드와 LD 필드와 가중치 필드를 갖는다. 최종 갱신 시각 필드에는 가중치 학습을 위해 엔트리가 마지막으로 갱신된 시각이 저장되고, LD 필드에는 인접 노드 장치의 노드 ID가 저장되며, 가중치 필드에는 그 인접 노드 장치에 대응시켜진 가중치가 저장된다.
도 10의 예에서, 첫번째 가중치 테이블(104-1-N3)은 노드 장치 N7이 GD로서 지정되어 있는 데이터 프레임의 송신용 테이블이기 때문에, GD로서 노드 장치 N7의 노드 ID인 N7을 기억한다.
또한, 도 1의 네트워크(1)에서는, 노드 장치 N3에는 노드 장치 N2, N4 및 N5가 인접해 있다. 따라서, 가중치 테이블(104-1-N3)은 이들 3개의 인접 노드 장치 N2, N4 및 N5에 각각 대응하는 3개의 엔트리를 갖는다. 가중치 테이블(104-1-N3)에 있어서 인접 노드 장치 Ni(i=2, 4, 5)에 대응하는 각 엔트리의 내용은 다음과 같다.
·최종 갱신 시각 필드에는, 엔트리의 최종 갱신 시각 TW3 ,7,i가 저장된다.
·LD 필드에는, 인접 노드 장치 Ni의 노드 ID인 Ni가 저장된다.
·가중치 필드에는, 인접 노드 장치 Ni에 대응시켜지는 가중치 W3 ,7,i가 저장된다.
즉, 가중치 W3 ,7,i는, 노드 장치 N7[즉, 가중치 테이블(104-1-N3)에 대응하는 GD]을 GD로서 지정하는 데이터 프레임을 노드 장치 N3이 송신하는 경우에 참조되는, 인접 노드 장치 Ni에 대응하는 가중치이다.
마찬가지로, 도 10의 예에서, 두번째 가중치 테이블(104-2-N3)은 노드 장치 N4가 GD로서 지정되어 있는 데이터 프레임의 송신용 테이블이기 때문에, GD로서 노드 장치 N4의 노드 ID인 N4를 기억한다.
그리고, 도 1의 네트워크(1)에서는, 노드 장치 N3에 노드 장치 N2, N4 및 N5가 인접해 있기 때문에, 가중치 테이블(104-2-N3)도 이들 3개의 인접 노드 장치 N2, N4 및 N5에 각각 대응하는 3개의 엔트리를 갖는다. 가중치 테이블(104-1-N3)에 있어서 인접 노드 장치 Ni(i=2, 4, 5)에 대응하는 각 엔트리의 내용은 다음과 같다.
·최종 갱신 시각 필드에는, 엔트리의 최종 갱신 시각 TW3 ,4,i가 저장된다.
·LD 필드에는, 인접 노드 장치 Ni의 노드 ID인 Ni가 저장된다.
·가중치 필드에는, 인접 노드 장치 Ni에 대응시켜지는 가중치 W3 ,4,i가 저장된다.
물론, 가중치 테이블(104-N3)에는, 또 다른 GD와 대응시켜진 가중치 테이블(104-j-N3)(j>2)이 포함되어도 좋다.
한편, 다음의 점은 주의하여야 한다. 즉, 가중치 테이블(104)은 동일한 GD라면, 가령 FID와 GS의 조합이 다른 데이터 프레임을 송신했다고 해도, 송신할 때마다, 송신처가 된 LD의 가중치가 갱신된다. 예컨대, 어떤 데이터 프레임을 송신할 때에, 링크 장해 때문에 특정한 LD의 가중치가 커지더라도(우선도가 낮아지더라도), 곧바로 다른 데이터 프레임(GD와 LD는 동일)의 송신에 의해, 링크 장해가 해소되어 송신 성공이 되면, 그 LD의 가중치는 작아진다(우선도는 높아짐). 반대로, 복수의 다른 데이터 프레임(GD와 LD는 동일)이 연이어 링크 장해 때문에 송신 실패가 되면, 가령 동일한 FID와 GS의 조합의 데이터 프레임은 1번밖에 송신을 시도하지 않더라도, 그 LD의 가중치가 최대치가 되어 버리는 경우도 있을 수 있다.
도 11은 도 10의 가중치 테이블(104-1-N3)의 변화를 설명하는 도면이다. 도 11의 예에서는, Ta<Tb<Tc<Td<Te이다.
예컨대, 도 6의 단계 S102에서 노드 장치 N2로부터 데이터 프레임을 수신한 시점에서는, 노드 장치 N3의 가중치 테이블(104-N3)에는, 노드 장치 N7에 대응하는 가중치 테이블(104-1-N3)이 존재하지 않았다고 한다. 그리고, 단계 S102의 수신을 계기로 하여, 다음과 같은 내용의 새로운 가중치 테이블(104-1-N3)이 가중치 테이블(104-N3)에 작성되었다고 한다.
·3개의 엔트리의 최종 갱신 시각은 모두 시각 Ta이다.
·3개의 엔트리에 있어서, 인접 노드 장치 Ni(i=2, 4, 5)에 대응시켜지는 가중치 W3 ,7,i는 모두 0.5이다.
한편, 도 6에 관해서는 설명을 간단하게 하기 위해, 「2개의 인접 노드 장치 N4와 N5 중에서 노드 장치 N4가 가중치 테이블(104-h3-N3)에서 보다 경한 가중치와 대응시켜져 있다고 한다」라고 설명했다. 즉, 도 10과 도 11은 h3=1의 예이며, 도 6의 설명에서는 W3 ,7,4<W3 ,7,5로 가정하고 있다.
그러나, 예컨대 도 11에 도시하는 바와 같이, W3 ,7,2=W3 ,7,4=W3 ,7,5=0.5의 경우도 있을 수 있다. 도 11의 예에서는, 노드 장치 N4와 N5가 동일한 가중치 0.5에 대응시켜져 있기 때문에, 노드 장치 N3은 단계 S103에서의 송신 LD로서 노드 장치 N4와 N5 중 어느 것을 선택할 수도 있는데, 가령 도 6의 예와 같이, 노드 장치 N4를 LD로서 선택했다고 한다.
그러면, 단계 S103에서 노드 장치 N3이 노드 장치 N4에 데이터 프레임을 송신한다. 그 후, 도 31에 있어서 단계 S103a로서 도시하는 바와 같이 노드 장치 N4가 노드 장치 N3에 ACK 프레임을 송신하면, 노드 장치 N3은 노드 장치 N4에의 데이터 프레임의 송신이 성공했다고 인식한다.
그리고, 도 5의 예와 같은 식으로 하여, 노드 장치 N3은 노드 장치 N4에 대응시켜진 가중치 W3 ,7,4의 값을 작게 한다. 도 11의 예에서는, 구체적으로, 노드 장치 N3은 W3 ,7,4의 값을 0.5에서 0.4로 갱신한다. 또한, 노드 장치 N3은 노드 장치 N4에 대응하는 엔트리의 최종 갱신 시각 필드에, 현재 시각 Tb를 설정한다.
그 후, 도 6에 도시하는 바와 같이, 노드 장치 N3은 단계 S106에서 다시 동일한 데이터 프레임을 수신한다. 그 결과, 노드 장치 N3은 도 6에 관해서 설명한 바와 같이, 가중치 테이블(104-1-N3)에 있어서 노드 장치 N4와 대응시켜져 있는 가중치 W3 ,7,4의 값을 0.4에서 최대치인 1.0로 갱신한다. 또한, 노드 장치 N3은 노드 장치 N4에 대응하는 엔트리의 최종 갱신 시각 필드에, 현재 시각 Tc를 설정한다.
이어서, 도 6의 단계 S107에 도시하는 바와 같이, 노드 장치 N3은 노드 장치 N5를 LD로서 선택하여 데이터 프레임을 송신한다. 그 후, 도 31에 있어서 단계 S107a로서 나타내는 바와 같이 노드 장치 N5가 노드 장치 N3에 ACK 프레임을 송신하면, 노드 장치 N3은 노드 장치 N5에의 데이터 프레임의 송신이 성공했다고 인식한다.
그리고, 도 5의 예와 같은 식으로 하여, 노드 장치 N3은 노드 장치 N5에 대응시켜진 가중치 W3 ,7,5의 값을 작게 한다. 도 11의 예에서는, 구체적으로, 노드 장치 N3은 W3 ,7,5의 값을 0.5에서 0.4로 갱신한다. 또한, 노드 장치 N3은 노드 장치 N5에 대응하는 엔트리의 최종 갱신 시각 필드에, 현재 시각 Td를 설정한다.
그 후, 도 6에 도시하는 바와 같이, 노드 장치 N3은 단계 S109에서 다시 동일한 데이터 프레임을 수신한다. 그 결과, 도 6에 관해서 설명한 바와 같이, 가중치 테이블(104-1-N3)에 있어서 노드 장치 N5와 대응시켜져 있는 가중치 W3 ,7,5의 값을, 0.4에서 최대치인 1.0로 갱신한다. 또한, 노드 장치 N3은 노드 장치 N5에 대응하는 엔트리의 최종 갱신 시각 필드에, 현재 시각 Te를 설정한다.
이상과 같이, 가중치 테이블(104-1-N3)은 ACK 프레임의 수신을 계기로 하여, 혹은 송신이 끝난 데이터 프레임과 동일한 데이터 프레임의 수신을 계기로 하여, 갱신된다.
도 12와 도 13은 도 3의 FID 관리 테이블(105)의 예를 도시하는 도면이다. 도 12와 도 13에 도시하는 바와 같이, FID 관리 테이블(105)에는, FID, GS, LD, OLS, 최종 갱신 시각의 각 필드가 있다.
FID 관리 테이블(105)에 있어서의 FID 필드와 GS 필드는 데이터 프레임을 고유하게 식별하기 위한 필드이며, 수신된 데이터 프레임의 FID 필드와 GS 필드로부터 값이 각각 카피된다.
FID 관리 테이블(105)의 LD 필드에는, FID 필드와 GS 필드의 값에 의해 식별되는 데이터 프레임을 송신하기 위해서, 마지막으로 LD로서 선택한 인접 노드 장치의 노드 ID가 저장된다.
또한, FID 관리 테이블(105)의 OLS 필드에는, FID 필드와 GS 필드의 값에 의해 식별되는 데이터 프레임을 최초로 수신했을 때에 그 데이터 프레임의 LS 필드에 지정되어 있던 인접 노드 장치의 노드 ID가 저장된다. OLS 필드는 데이터 프레임의 전송을 위해 LD를 선택함에 있어서, LD의 후보 중에서 OLS를 제외하기 위해서도 이용되고, 백트랙 동작할 때의 LD를 결정하기 위해서도 이용된다.
그리고, FID 관리 테이블(105)의 최종 갱신 시각 필드에는 엔트리가 마지막으로 갱신된 시각이 저장된다.
그런데, 도 12와 도 13은 도 6의 단계 S101~S112에서의 각 노드 장치의 FID 관리 테이블(105)을 구체예로서 나타내고 있다. 이하, 단계 S101~S112가 각각 실행되는 시각을 TF101~TF112로 나타낸다.
단계 S101에서 노드 장치 N1이 노드 장치 N2에 데이터 프레임을 송신할 때, 노드 장치 N1은 FID 관리 테이블(105-N1)에 새로운 엔트리 E1을 작성한다.
그리고, 노드 장치 N1은 엔트리 E1의 FID 필드와 GS 필드에, 송신한 데이터 프레임의 FID와 GS의 값을 설정한다.
여기서, 데이터 프레임의 GS와 FID의 값은 전술한 바와 같이, 데이터 프레임이 네트워크(1) 내에서 전송되더라도 재기록되지 않는다. 따라서, 도 6의 단계 S101~S112에서 네트워크(1) 내에 송신되는 데이터 프레임의 FID와 GS의 값은 도 7의 데이터 프레임(303 및 304)과 마찬가지로 각각 Fa와 N1이다. 따라서, 단계 S101에서 노드 장치 N1은 엔트리 E1의 FID 필드와 GS 필드에, 각각 Fa와 N1이라는 값을 설정한다.
한편, 이하의 각 단계 S102~S112에서 다른 노드 장치가 각각의 FID 관리 테이블(105)의 엔트리의 FID 필드와 GS 필드에 설정하는 값도 마찬가지로 Fa와 N1이다. 따라서, 이하에서는 FID 필드와 GS 필드에 관한 설명을 생략한다.
또한, 단계 S101에서 노드 장치 N1은 LD로서 선택한 노드 장치 N2의 노드 ID인 N2를 엔트리 E1의 LD 필드에 설정한다.
그런데, GS와 FID의 값의 조합에 의해 고유하게 식별된다. 어떤 특정한 데이터 프레임에 관해서, OLS란, 그 특정한 데이터 프레임을 최초로 수신했을 때의 그 특정한 데이터 프레임의 LS에 지정된 노드 ID로 식별되는 인접 노드 장치를 말한다.
그러나 이와 같이 OLS를 정의하면, 예컨대 노드 장치 N1이 GS가 되어 데이터 프레임을 송신하는 경우에, 노드 장치 N1 자신에 있어서는, 송신한 데이터 프레임에 관해서 OLS가 미정의로 되어 버린다. 그래서, 이하에서는 OLS의 정의를 확장한다. 구체적으로는, 「노드 장치 Ni 자신이 GS가 되어 데이터 프레임을 송신하는 경우에는, 그 데이터 프레임에 관한 노드 장치 Ni 자신에 있어서의 OLS란, 노드 장치 Ni 자신이다」라고 정의한다.
바꿔 말하면, OLS란, 노드 장치 Ni 자신이 직접 인식하고 있는 네트워크의 범위 내에서, 노드 장치 Ni에 있어서 데이터 프레임의 기원으로서 인식되는 노드 장치이다. 또 여기서, 「노드 장치 Ni 자신이 직접 인식하고 있는 네트워크의 범위」란, 노드 장치 Ni에서 보아 홉 수 1 이하의 범위이며, 구체적으로는 노드 장치 Ni 자신과, 노드 장치 Ni의 인접 노드 장치만이 포함된다. 예컨대, 도 2의 예에서는, 노드 장치 N105 자신이 직접 인식하고 있는 네트워크의 범위만이 실선으로 나타내어져 있다.
이상의 확장된 OLS의 정의로부터, 단계 S101에서 노드 장치 N1이 엔트리 E1의 OLS 필드에 설정하는 값은 노드 장치 N1 자신의 노드 ID(즉 N1)이다. 노드 장치 N1은 만일 금후 GS의 값이 N1이고 FID의 값이 Fa인 데이터 프레임을 수신하는 일이 있으면, 이상과 같이 하여 작성된 엔트리 E1에 기초하여, 「이전에 노드 장치 N1 자신이 송신한 데이터 프레임을 수신했다」고 인식할 수 있다.
또한, 단계 S101에서 노드 장치 N1은 현재 시각 TF101을 엔트리 E1의 최종 갱신 시각 필드에 설정한다. 한편, 이하의 각 단계 S102~S112에서 다른 노드 장치가 각각의 FID 관리 테이블(105)의 엔트리의 최종 갱신 시각 필드에 설정하는 값은 마찬가지로 각 단계 S102~S112가 실행되는 시각 TF102~TF112이다. 따라서, 이하에서는 최종 갱신 시각 필드에 관한 설명도 생략한다.
그리고, 단계 S101에서 노드 장치 N1로부터 데이터 프레임을 수신한 노드 장치 N2는 단계 S102에서 노드 장치 N3에 데이터 프레임을 송신할 때에 FID 관리 테이블(105-N2)에 새로운 엔트리 E2를 작성한다. 그리고, 노드 장치 N2는 엔트리 E2에 있어서, OLS 필드에는 N1로 설정하고, LD 필드에는 N3으로 설정한다.
이어서, 단계 S102에서 노드 장치 N2로부터 데이터 프레임을 수신한 노드 장치 N3은 단계 S103에서 노드 장치 N4에 데이터 프레임을 송신할 때에 FID 관리 테이블(105-N3)에 새로운 엔트리 E3을 작성한다. 그리고, 노드 장치 N3은 엔트리 E3에 있어서, OLS 필드에는 N2로 설정하고, LD 필드에는 N4로 설정한다.
이어서, 단계 S103에서 노드 장치 N3으로부터 데이터 프레임을 수신한 노드 장치 N4는 단계 S104에서 노드 장치 N7에 데이터 프레임을 송신할 때에 FID 관리 테이블(105-N4)에 새로운 엔트리 E4를 작성한다. 그리고, 노드 장치 N4는 엔트리 E4에 있어서, OLS 필드에는 N3으로 설정하고, LD 필드에는 N7로 설정한다.
그런데, 단계 S104에서의 송신은 노드 장치 N4와 N7 사이의 링크 장해 때문에 실패한다. 즉, 노드 장치 N4는 노드 장치 N7로부터 ACK 프레임을 수신할 수 없기 때문에, 타임아웃이 발생한다. 그 결과, 노드 장치 N4는 단계 S105와 같이, 다른 인접 노드 장치 N5를 다음 LD로서 재선택하여, 노드 장치 N5에 데이터 프레임을 송신한다.
여기서, 단계 S104와 S105에서 각각 송신되는 데이터 프레임은 FID의 값이 Fa이고 GS의 값이 N1이므로, 동일한 데이터 프레임이다. 따라서, 단계 S105에서 노드 장치 N4는 새로운 엔트리를 작성하는 것이 아니라, 기존의 엔트리 E4를 갱신한다.
구체적으로는, 단계 S105에서 노드 장치 N4는 엔트리 E4에 있어서, LD 필드의 값을 N5로 덮어쓰기한다. 한편, GS의 값이 N1이고 FID의 값이 Fa인 동일한 데이터 프레임을 노드 장치 N4가 몇 번 송신하더라도 「노드 장치 N4가 그 데이터 프레임을 최초로 수신한 것은 노드 장치 N3으로부터다」라는 사실은 변하지 않는다. 따라서, 엔트리 E4의 OLS 필드의 값은 재기록되는 일이 없고, N3 그대로이다.
이어서, 단계 S105에서 노드 장치 N4로부터 데이터 프레임을 수신한 노드 장치 N5는 단계 S106에서 노드 장치 N3에 데이터 프레임을 송신할 때에 FID 관리 테이블(105-N5)에 새로운 엔트리 E5를 작성한다. 그리고, 노드 장치 N5는 엔트리 E5에 있어서, OLS 필드에는 N4로 설정하고, LD 필드에는 N3으로 설정한다.
그리고, 단계 S106에서 노드 장치 N5로부터 데이터 프레임을 수신한 노드 장치 N3은 수신된 데이터 프레임의 GS와 FID의 값을 키로 하여 FID 관리 테이블(105-N3)을 검색하여, 엔트리 E3을 찾아낸다. 엔트리 E3이 발견되었기 때문에, 노드 장치 N3은 「노드 장치 N3 자신이 이전에 단계 S103에서 송신한 것과 동일한 데이터 프레임을 단계 S106에서 수신했다」고 인식할 수 있다.
따라서, 노드 장치 N3은 다음 단계 S107에서 데이터 프레임을 노드 장치 N5에 송신함에 있어서, FID 관리 테이블(105-N3)에 새로운 엔트리를 작성하는 것이 아니고, 기존의 엔트리 E3을 갱신한다. 구체적으로는, 단계 S107에서 노드 장치 N3은 엔트리 E3에 있어서, LD 필드의 값을 N5로 덮어쓰기한다. 한편, 엔트리 E3의 OLS 필드의 값은 재기록되는 일은 없고, N2 그대로이다.
그러면, 단계 S107에서 노드 장치 N3으로부터 데이터 프레임을 수신한 노드 장치 N5는 수신된 데이터 프레임의 GS와 FID의 값을 키로 하여 FID 관리 테이블(105-N5)을 검색하여, 엔트리 E5를 찾아낸다. 엔트리 E5가 발견되었기 때문에, 노드 장치 N5는 「노드 장치 N5 자신이 이전에 단계 S106에서 송신한 것과 동일한 데이터 프레임을 단계 S107에서 수신했다」고 인식할 수 있다.
따라서, 노드 장치 N5는 다음 단계 S108에서 데이터 프레임을 노드 장치 N4에 송신함에 있어서, FID 관리 테이블(105-N5)에 새로운 엔트리를 작성하는 것이 아니라, 기존의 엔트리 E5를 갱신한다. 구체적으로는, 단계 S108에서 노드 장치 N5는 엔트리 E5에 있어서, LD 필드의 값을 N4로 덮어쓰기한다. 한편, 엔트리 E5의 OLS 필드의 값은 재기록되는 일 없이, N4 그대로이다.
그러면, 단계 S108에서 노드 장치 N5로부터 데이터 프레임을 수신한 노드 장치 N4는 수신된 데이터 프레임의 GS와 FID의 값을 키로 하여 FID 관리 테이블(105-N4)을 검색하여, 엔트리 E4를 찾아낸다. 엔트리 E4가 발견되었기 때문에, 노드 장치 N4는 「노드 장치 N4 자신이 이전에 단계 S105에서 송신한 것과 동일한 데이터 프레임을 단계 S108에서 수신했다」고 인식할 수 있다.
따라서, 노드 장치 N4는 다음 단계 S109에서 데이터 프레임을 노드 장치 N3에 송신함에 있어서, FID 관리 테이블(105-N4)에 새로운 엔트리를 작성하는 것이 아니라, 기존의 엔트리 E4를 갱신한다. 구체적으로는, 단계 S109에서 노드 장치 N4는 엔트리 E4에 있어서, LD 필드의 값을 N3으로 덮어쓰기한다. 한편, 엔트리 E4의 OLS 필드의 값은 재기록되는 일 없이, N3 그대로이다.
그러면, 단계 S109에서 노드 장치 N4로부터 데이터 프레임을 수신한 노드 장치 N3은 수신된 데이터 프레임의 GS와 FID의 값을 키로 하여 FID 관리 테이블(105-N3)을 검색하여, 엔트리 E3을 찾아낸다. 엔트리 E3이 발견되었기 때문에, 노드 장치 N3은 「노드 장치 N3 자신이 이전에 단계 S103에서 송신한 것과 동일한 데이터 프레임을 단계 S109에서 수신했다」고 인식할 수 있다.
따라서, 노드 장치 N3은 다음 단계 S110에서 데이터 프레임을 노드 장치 N2에 송신함에 있어서, FID 관리 테이블(105-N3)에 새로운 엔트리를 작성하는 것이 아니라, 기존의 엔트리 E3을 갱신한다. 구체적으로는, 단계 S110에서 노드 장치 N3은 엔트리 E3에 있어서, LD 필드의 값을 N2로 덮어쓰기한다. 한편, 엔트리 E3의 OLS 필드의 값은 재기록되는 일 없이, N2 그대로이다.
그러면, 단계 S110에서 노드 장치 N3으로부터 데이터 프레임을 수신한 노드 장치 N2는 수신된 데이터 프레임의 GS와 FID의 값을 키로 하여 FID 관리 테이블(105-N2)을 검색하여, 엔트리 E2를 찾아낸다. 엔트리 E2가 발견되었기 때문에, 노드 장치 N2는 「노드 장치 N2 자신이 이전에 단계 S102에서 송신한 것과 동일한 데이터 프레임을 단계 S110에서 수신했다」고 인식할 수 있다.
따라서, 노드 장치 N2는 다음 단계 S111에서 데이터 프레임을 노드 장치 N6에 송신함에 있어서, FID 관리 테이블(105-N2)에 새로운 엔트리를 작성하는 것이 아니라, 기존의 엔트리 E2를 갱신한다. 구체적으로는, 단계 S111에서 노드 장치 N2는 엔트리 E2에 있어서, LD 필드의 값을 N6로 덮어쓰기한다. 한편, 엔트리 E2의 OLS 필드의 값은 재기록되는 일 없이, N1 그대로이다.
그리고, 단계 S111에서 노드 장치 N2로부터 데이터 프레임을 수신한 노드 장치 N6은 단계 S112에서 노드 장치 N7에 데이터 프레임을 송신할 때에 FID 관리 테이블(105-N6)에 새로운 엔트리 E6을 작성한다. 그리고, 노드 장치 N6은 엔트리 E6에 있어서, OLS 필드에는 N2로 설정하고, LD 필드에는 N7로 설정한다.
계속해서, 도 14~도 29의 흐름도를 참조하여, 노드 장치(100)의 동작의 상세한 점을 설명한다.
도 14는 프레임 수신 처리의 흐름도이다. 프레임 수신 처리는 노드 장치(100)에 전원이 투입되면 시작된다.
단계 S201에서 수신부(101)는 프레임을 수신할 때까지 대기한다. 즉, 수신부(101)는 프레임을 수신하지 않으면 단계 S201을 반복한다. 프레임을 수신하면, 수신부(101)는 수신된 프레임을 프레임 분기 처리부(106)에 출력하고, 처리는 단계 S202로 이행한다.
단계 S202에서는, 프레임 분기 처리부(106)가 단계 S201에서 수신부(101)가 수신한 프레임의 타입 필드의 값을 참조하여, 프레임의 타입을 판정한다. 수신한 프레임의 타입이 헬로 프레임인 경우, 처리는 단계 S203으로 이행하고, 데이터 프레임인 경우, 처리는 단계 S204로 이행하고, ACK 프레임인 경우, 처리는 단계 S206으로 이행한다.
단계 S203에서는, 수신된 헬로 프레임을 프레임 분기 처리부(106)가 링크 관리부(108)에 출력하여, 링크 관리부(108)가 도 15의 헬로 프레임 수신 처리를 한다. 그리고, 처리는 단계 S201로 되돌아간다. 물론, 도 4의 MPU(201)가 도 3의 각 부에 대응하는 복수의 태스크를 병행하여 실행하는 멀티태스크 환경에서는, 프레임 분기 처리부(106)가 헬로 프레임을 출력하면, 헬로 프레임 수신 처리의 종료를 기다리지 않고서 처리가 단계 S201로 이행할 수도 있다.
또한, 단계 S204에서는, 프레임 분기 처리부(106)가 단계 S201에서 수신된 데이터 프레임을 버퍼부(109)에 저장한다. 즉, 프레임 분기 처리부(106)는 버퍼부(109) 내에 새로운 엔트리의 영역을 확보하고, 확보한 영역에 단계 S201에서 수신된 데이터 프레임을 저장한다. 또한, 프레임 분기 처리부(106)는 다음 단계 S205를 위해서 데이터 프레임으로부터 GS와 FID의 값을 추출하여 기억해 둔다.
한편, 도 8과 같이 버퍼부(109)는 타임아웃 시각 필드를 갖지만, 단계 S204의 시점에서는, 타임아웃 시각은 아직 설정되지 않는다.
그리고, 단계 S205에서 프레임 분기 처리부(106)는 데이터 프레임 처리부(110)에 데이터 프레임 수신 처리를 하도록 지시한다. 지시에 있어서 프레임 분기 처리부(106)는 단계 S204에서 기억해 둔 데이터 프레임의 GS와 FID의 값을 데이터 프레임 처리부(110)에 통지한다.
또, 노드 장치(100)가 GS가 되지 않는 타입의 장치인 경우[즉, 노드 장치(100)가 중계 전용 장치인 경우], 데이터 프레임 수신 처리는 도 20~도 23과 같다. 한편, 노드 장치(100)가 GS가 될 수 있는 타입의 장치인 경우, 데이터 프레임 수신 처리는 도 20~도 22, 도 29와 같다.
데이터 프레임 처리부(110)가 지시에 따라서 데이터 프레임 수신 처리를 하면, 처리는 단계 S201로 되돌아간다. 물론, 멀티태스크 환경에서는, 프레임 분기 처리부(106)가 데이터 프레임 처리부(110)에 데이터 프레임 수신 처리를 하도록 지시하면, 데이터 프레임 수신 처리의 종료를 기다리지 않고서 처리가 단계 S201로 이행할 수도 있다.
또한, 단계 S206에서는, 수신된 ACK 프레임을 프레임 분기 처리부(106)가 ACK 처리부(107)에 출력하여, ACK 처리부(107)가 도 25의 ACK 프레임 수신 처리를 한다. 그리고, 처리는 단계 S201로 되돌아간다. 물론, 멀티태스크 환경에서는, 프레임 분기 처리부(106)가 ACK 프레임을 출력하면, ACK 프레임 수신 처리의 종료를 기다리지 않고서 처리가 단계 S201로 이행할 수도 있다.
도 15는 도 14의 단계 S203에 있어서의 헬로 프레임 수신 처리의 흐름도이다. 도 15의 처리는 프레임 분기 처리부(106)로부터 헬로 프레임이 링크 관리부(108)에 출력되면 시작된다.
단계 S301에서 링크 관리부(108)는 수신된 헬로 프레임의 LS와 동일한 값을 노드 ID로서 갖는 엔트리가 인접 노드 관리 테이블(103)(도 9 참조)에 존재하는지 여부을 판단한다. 엔트리가 발견되면 처리는 단계 S302로 이행하고, 엔트리가 발견되지 않으면 처리는 단계 S303으로 이행한다.
한편, 도 15의 설명에 있어서 「수신된 헬로 프레임」이란, 도 14의 단계 S201에서 수신부(101)가 수신한 헬로 프레임이다. 즉, 도 15의 설명에 있어서 「수신된 헬로 프레임」이란, 단계 S202에서 프레임 분기 처리부(106)가 링크 관리부(108)에 출력하여 도 15의 처리가 시작하는 계기가 된 헬로 프레임이다.
단계 S302에서 링크 관리부(108)는 단계 S301에서 발견된 엔트리의 최종 갱신 시각으로서 현재 시각을 설정한다. 그리고, 도 15의 처리는 종료된다.
예컨대, 노드 장치 N2에 있어서 단계 S302가 실행된 결과로서, 도 9와 같이 인접 노드 관리 테이블(103-N2)에서, N1이라는 노드 ID에 대응하는 최종 갱신 시각 필드의 값이 TA2 ,1로 갱신된다. 그 결과, 노드 장치 N2는 「시각 TA2 ,1에는 노드 장치 N2가 노드 장치 N1을 인접 노드 장치로서 인식 가능한 상황이었다」고 기억해 둘 수 있다.
한편, 단계 S301에서 엔트리가 발견되지 않는 경우는, 지금까지 인접 노드 장치로서 인식하지 않았던 새로운 노드 장치로부터 헬로 프레임이 수신되었다는 것이다. 따라서, 계속되는 단계 S303~S308에서, 그 새로운 노드 장치를 인접 노드 장치로서 등록하기 위한 처리가 이루어진다.
단계 S303에서 링크 관리부(108)는 인접 노드 관리 테이블(103)에 신규 엔트리를 추가한다.
그리고, 단계 S304에서 링크 관리부(108)는 단계 S303에서 추가한 신규 엔트리에, 수신된 헬로 프레임의 LS의 값과 현재 시각을 설정한다. 예컨대, 도 7의 헬로 프레임(312)을 처음으로 수신했을 때, 노드 장치 N2는 신규 엔트리의 노드 ID 필드에, 헬로 프레임(312)의 LS의 값인 N3을 설정하고, 신규 엔트리의 최종 갱신 시각 필드에 현재 시각을 설정한다.
계속해서, 단계 S305에서 링크 관리부(108)는 가중치 테이블(104-1~104-M)(도 10과 도 11을 참조) 중에, 아직 주목하지 않는 가중치 테이블(104-i)(1≤i≤M)이 있는지 여부를 판단한다. 이미 모든 가중치 테이블(104-1~104-M)에 다 주목했다면, 도 15의 처리는 종료되고, 아직 주목하지 않은 가중치 테이블(104-i)이 있으면, 처리는 단계 S306으로 이행한다.
단계 S306에서 링크 관리부(108)는 가중치 테이블(104-1~104-M) 중 아직 주목하지 않은 것 중에서, 다음의 가중치 테이블에 주목한다. 이하에서는 설명의 편의상, 단계 S306에서는 가중치 테이블(104-i)을 주목한다고 한다.
그리고, 단계 S307에서 링크 관리부(108)는 주목한 가중치 테이블(104-i)에 신규 엔트리를 추가한다.
더욱이, 단계 S308에서 링크 관리부(108)는 단계 S307에서 추가한 신규 엔트리의 LD, 가중치, 최종 갱신 시각의 각 필드에, 수신된 헬로 프레임의 LS의 값과, 초기 가중치와, 현재 시각을 각각 설정한다. 초기 가중치는 실시형태에 따라서 임의로 결정할 수 있는 상수이다.
제1 실시형태에서는, 상기한 바와 같이 가중치가 0 이상 1 이하이며, 1은 LD로서 선택 불능임을 나타내는 특별한 값이므로, 초기 가중치는 0 이상 1 미만의 임의의 값이면 된다. 보다 구체적으로는, 초기 가중치는 예컨대 0.5일 수도 있다. 예컨대, 도 11의 첫번째에 나타낸 가중치 테이블(104-1-N3)의 최초의 엔트리는 다음과 같이 하여 작성된 것이어도 좋다(단, 정확하게는 그 경우, 최초의 엔트리의 최종 갱신 시각에는, 다른 2개의 엔트리의 최종 갱신 시각 Ta와는 다른 값이 설정되고, 도 11과 완전히 같아지지는 않는다).
·GD로서 노드 장치 N7에 대응시켜진 가중치 테이블(104-1-N3)이 이미 존재한다.
·그러나, 노드 장치 N3은 노드 장치 N2를 인접 노드 장치로서 지금까지 인식하지 않았다.
·노드 장치 N3은 노드 장치 N2로부터 처음으로 헬로 프레임을 수신했다.
·이상의 상황에 있어서, 단계 S306에서는 가중치 테이블(104-1-N3)을 주목하였다.
·따라서, 단계 S308에서는, 신규 엔트리의 LD 필드에, 수신된 헬로 프레임의 LS의 값인 N2가 설정되고, 신규 엔트리의 가중치 필드에, 초기 가중치인 0.5가 설정되었다.
단계 S308의 실행 후, 처리는 단계 S305로 되돌아간다.
도 16은 헬로 프레임 송신 처리의 흐름도이다. 도 16의 처리는 도 14의 처리와는 독립적으로 병행되어 헬로 프레임 생성부(112)에 의해 실행된다. 구체적으로는, 노드 장치(100)에 전원이 투입되면, 헬로 프레임 생성부(112)가 도 16의 처리를 시작한다.
단계 S401에서 헬로 프레임 생성부(112)는 현재 시각이 송신 예정 시각인지 여부를 판단한다. 현재 시각이 송신 예정 시각이라면 처리는 단계 S402로 이행하고, 현재 시각이 송신 예정 시각이 아니라면 처리는 단계 S401로 되돌아간다. 즉, 헬로 프레임 생성부(112)는 송신 예정 시각까지 대기한다.
예컨대, 기준 시각 Tref와 헬로 프레임의 송신 간격 ΔThello가 미리 정해져 있어도 좋다. 또한, 헬로 프레임 생성부(112)는, 예컨대 도 4의 MPU(201)의 클록에 기초하여 현재 시각 Tnow를 참조할 수 있다. 헬로 프레임 생성부(112)는 식 (4)의 Z가 정수일 때만, 「현재 시각은 송신 예정 시각이다」라고 판단하더라도 좋다.
Z=(Tref-Tnow)/ΔThello (4)
예컨대, 기준 시각 Tref는 미리 결정된 상수이어도 좋고, 노드 장치(100)에 전원이 투입된 시각이어도 좋다. 또한, 송신 간격 ΔThello는 실시형태에 따라서 적절하게 결정할 수 있으며, 예컨대 10초 등의 비교적 긴 시간이어도 좋다.
단계 S402에서는, 헬로 프레임 생성부(112)가 FID 생성부(113)에 새로운 FID의 생성을 요구하여, FID 생성부(113)가 새로운 FID를 생성한다. 예컨대, FID는 시퀀스 번호라도 좋고, FID 생성부(113)는 카운터 회로를 사용하여 실현되더라도 좋다. 물론, FID 생성부(113)는 MPU(201)가 프로그램을 실행함으로써 실현될 수도 있다.
단계 S402에서는 또한, FID 생성부(113)가 생성한 FID를 이용하여 헬로 프레임 생성부(112)가 헬로 프레임을 생성한다.
예컨대, 도 7의 헬로 프레임(312)은 다음과 같은 식으로 생성된다. 즉, 노드 장치 N3의 FID 생성부(113-N3)가 새로운 FID로서 Fb라는 값을 생성한다. 그러면, 노드 장치 N3의 헬로 프레임 생성부(112-N3)는 새로운 헬로 프레임(312)을 생성한다.
그 때, 헬로 프레임 생성부(112-N3)는 헬로 프레임(312)에 있어서, LD에 0xFFFFFF라는 정해진 값을 설정하고, LS와 GS에 자노드 ID인 N3을 설정하며, GD에 0x000000라는 정해진 값을 설정한다. 또한, 헬로 프레임 생성부(112-N3)는 헬로 프레임(312)에 있어서, FID에는 FID 생성부(113-N3)에 의해 생성된 값 Fb를 설정하고, 타입에는 정해진 값 H를 설정한다.
이상과 같이 하여 단계 S402에서 헬로 프레임이 생성되면, 이어서 단계 S403에서, 헬로 프레임 생성부(112)는 생성된 헬로 프레임의 송신을 송신부(102)에 의뢰하여, 송신부(102)가 헬로 프레임을 송신한다. 그리고, 처리는 단계 S401로 되돌아간다.
계속해서, 각종 테이블의 에이징 처리에 관해서 도 17~도 19를 참조하여 설명한다. 각 에이징 처리는, 예컨대 도 4의 타이머 IC(203)로부터의 인터럽트 신호를 계기로 하여 시작될 수도 있다.
도 17은 인접 노드 관리 테이블(103)의 에이징 처리의 흐름도이다. 예컨대, 타이머 IC(203)가 정해진 간격 Ia로 인터럽트 신호를 링크 관리부(108)에 출력하고, 인터럽트 신호를 계기로 하여 링크 관리부(108)가 정해진 간격 Ia로 도 17의 처리를 하여도 좋다.
단계 S501에서 링크 관리부(108)는 인접 노드 관리 테이블(103)(도 9를 참조)의 첫번째 엔트리에 주목한다. 이하, 도 17에 관한 설명에서는, 링크 관리부(108)가 주목하는 인접 노드 관리 테이블(103)의 엔트리를 「주목 엔트리」라고 한다.
계속해서 단계 S502에서 링크 관리부(108)는 현재 시각과 주목 엔트리의 최종 갱신 시각과의 차가 정해진 값 Ga 이상인지 여부를 판단한다. 한편, 실시형태에 따라, Ga=Ia라도 좋고, Ga<Ia라도 좋고, Ga>Ia라도 좋다.
현재 시각과 주목 엔트리의 최종 갱신 시각과의 차가 정해진 값 Ga 이상이라면, 처리는 단계 S503으로 이행한다. 한편, 현재 시각과 주목 엔트리의 최종 갱신 시각과의 차가 정해진 값 Ga 미만이라면, 처리는 단계 S505로 이행한다.
단계 S503에서 링크 관리부(108)는 주목 엔트리의 노드 ID와 동일한 값을 LD로서 갖는 엔트리를 가중치 테이블(104)로부터 삭제한다.
예컨대, 주목 엔트리가 도 9의 인접 노드 관리 테이블(103-N3)의 3번째 엔트리인 경우, 주목 엔트리의 노드 ID의 값은 N5이다. 따라서, 단계 S503에서 링크 관리부(108)는 가중치 테이블(104-1-N3~104-M-N3)의 각각으로부터 LD의 값이 N5인 엔트리를 삭제한다. 예컨대, 단계 S503에서는, 도 10의 가중치 테이블(104-1-N3)의 3번째 엔트리와 가중치 테이블(104-2-N3)의 3번째 엔트리가 삭제된다.
그리고, 단계 S504에서 링크 관리부(108)는 주목 엔트리를 인접 노드 관리 테이블(103)로부터 삭제한다. 그리고, 처리는 단계 S505로 이행한다.
단계 S505에서 링크 관리부(108)는 아직 주목하지 않은 엔트리가 인접 노드 관리 테이블(103)에 남아 있는지 여부를 판단한다. 링크 관리부(108)가 인접 노드 관리 테이블(103)의 모든 엔트리에 다 주목했으면, 도 17의 처리는 종료된다. 한편, 아직 링크 관리부(108)가 주목하지 않은 엔트리가 인접 노드 관리 테이블(103)에 남아 있으면, 처리는 단계 S506으로 이행한다.
단계 S506에서 링크 관리부(108)는 인접 노드 관리 테이블(103)의 아직 주목하지 않은 엔트리 중에서 다음 엔트리에 주목한다. 그리고, 처리는 단계 S502로 되돌아간다.
이상의 도 17의 에이징 처리에 의해, 노드 장치(100)는 지금까지 인접 노드 장치로서 인식하였던 노드 장치로부터의 헬로 프레임의 수신이 끊어지면, 「이 노드 장치는 이제는 노드 장치(100)에 인접해 있지 않다」고 인식할 수 있게 된다. 즉, 도 17의 처리에 의해, 노드 장치(100)는 잠재적인 LD의 후보로서의 인접 노드 장치를 환경 변화에 추종하여 적절하게 관리할 수 있게 된다.
또, 상기한 정해진 간격 Ia 및 정해진 값 Ga는 환경의 변화 용이성 등에 따라서, 실시형태에 따라 적절하게 결정할 수 있는 것이 바람직하다. 한편, 제1 실시형태에서는, 네트워크 내의 모든 노드 장치에 동일한 헬로 프레임의 송신 간격ΔThello가 설정되어 있고, 인접 노드 관리 테이블(103)의 에이징 시간인 상기한 정해진 값 Ga는, Ga>ΔThello를 만족한다.
도 18은 가중치 테이블(104)의 에이징 처리의 흐름도이다. 예컨대, 타이머 IC(203)가 정해진 간격 Iw으로 인터럽트 신호를 데이터 프레임 처리부(110)에 출력하고, 인터럽트 신호를 계기로 하여 데이터 프레임 처리부(110)가 정해진 간격 Iw으로 도 18의 처리를 하여도 좋다.
단계 S601에서 데이터 프레임 처리부(110)는 가중치 테이블(104)(도 10과 도 11을 참조) 중 첫번째 가중치 테이블(104-1)에 주목한다. 이하, 도 18에 관한 설명에서는, 데이터 프레임 처리부(110)가 주목하는 가중치 테이블을 「104-i」라는 참조 부호로 나타내고(1≤i≤M), 「주목 테이블」이라고 한다. 단계 S601의 실행 직후는 i=1이다.
이어서 단계 S602에서 데이터 프레임 처리부(110)는 주목 테이블(104-i)의 1번째 엔트리에 주목한다. 이하, 주목 테이블 중에서 데이터 프레임 처리부(110)가 주목하는 엔트리를 「주목 엔트리」라고 한다.
계속해서 단계 S603에서 데이터 프레임 처리부(110)는 현재 시각과 주목 엔트리의 최종 갱신 시각과의 차가 정해진 값 Gw 이상인지 여부를 판단한다. 한편, 실시형태에 따라서, Gw=Iw라도 좋고, Gw<Iw라도 좋고, Gw>Iw라도 좋다.
현재 시각과 주목 엔트리의 최종 갱신 시각과의 차가 정해진 값 Gw 이상이라면, 처리는 단계 S604로 이행한다. 한편, 현재 시각과 주목 엔트리의 최종 갱신 시각과의 차가 정해진 값 Gw 미만이라면, 처리는 단계 S605로 이행한다.
단계 S604에서 데이터 프레임 처리부(110)는 주목 테이블(104-i)로부터 주목 엔트리를 삭제한다. 그리고, 처리는 단계 S605로 이행한다.
단계 S605에서 데이터 프레임 처리부(110)는 주목 테이블(104-i)에 아직 주목하지 않은 엔트리가 남아 있는지 여부를 판단한다. 데이터 프레임 처리부(110)가 주목 테이블(104-i)의 모든 엔트리에 다 주목하면, 처리는 단계 S607로 이행한다. 한편, 아직 데이터 프레임 처리부(110)가 주목하지 않은 엔트리가 주목 테이블(104-i)에 남아 있으면, 처리는 단계 S606으로 이행한다.
단계 S606에서 데이터 프레임 처리부(110)는 주목 테이블(104-i) 내의 아직 주목하지 않은 엔트리 중에서, 다음 엔트리에 주목한다. 그리고, 처리는 단계 S603으로 되돌아간다.
단계 S607에서 데이터 프레임 처리부(110)는 주목 테이블(104-i)에 엔트리가 존재하는지 여부를 판단한다. 단계 S603~S606의 반복 결과, 주목 테이블(104-i)에 엔트리가 없는 경우는, 처리는 단계 S608로 이행한다. 한편, 주목 테이블(104-i)에 하나 이상 엔트리가 존재하면, 처리는 단계 S609로 이행한다.
단계 S608에서 데이터 프레임 처리부(110)는 엔트리가 존재하지 않는 주목 테이블(104-i)을 삭제한다. 그리고, 처리는 단계 S609로 이행한다.
단계 S609에서 데이터 프레임 처리부(110)는 아직 주목하지 않은 가중치 테이블이 가중치 테이블(104) 중에 남아 있는지 여부를 판단한다. 데이터 프레임 처리부(110)가 모든 가중치 테이블(104-1~104-M)에 다 주목하면, 도 18의 처리는 종료된다. 한편, 아직 데이터 프레임 처리부(110)가 주목하지 않은 가중치 테이블(104-j)(1≤j≤M)이 가중치 테이블(104) 중에 남아 있으면, 처리는 단계 S610으로 이행한다.
단계 S610에서 데이터 프레임 처리부(110)는 가중치 테이블(104) 중에서 아직 주목하지 않은 다음 가중치 테이블(104-j)에 주목한다[즉, 가중치 테이블(104-j)을 주목 테이블(104-i)로서 선택함]. 그리고, 처리는 단계 S602로 되돌아간다.
이상의 도 18의 에이징 처리에 의해, 노드 장치(100)는 「과거 장해의 영향이 누적되어, 어떤 인접 노드 장치도 LD로서 선택하는 것이 불능으로 된다」와 같은 사태에 빠지지 않고 끝난다.
예컨대, 도 6의 예에 있어서, 단계 S112 후, 노드 장치 N6과 N7 사이의 링크에 장해가 발생하고, 노드 장치 N4와 N7 사이의 링크가 장해로부터 복구되었다고 하는 상황을 상정한다. 만일 도 18의 에이징 처리가 이루어지지 않으면, 실제로는 장해로부터의 복구에 의해, 예컨대 경로 〈N1, N2, N3, N4, N7〉에서의 데이터 프레임의 송신이 가능하게 되더라도, 자율 분산 협조의 결과로서 이 경로가 선택되는 일이 없어져 버린다. 그러나, 도 18의 에이징 처리가 이루어지면, 상기에서 상정한 상황에 있어서, 경로 〈N1, N2, N3, N4, N7〉이 선택될 수 있게 된다.
한편, 상기한 정해진 간격 Iw 및 정해진 값 Gw는 환경의 변화 용이성 등에 따라서, 실시형태에서 적절하게 결정할 수 있는 것이 바람직하다.
도 19는 FID 관리 테이블(105)의 에이징 처리의 흐름도이다. 예컨대, 타이머 IC(203)가 정해진 간격 If로 인터럽트 신호를 데이터 프레임 처리부(110)에 출력하고, 인터럽트 신호를 계기로 하여 데이터 프레임 처리부(110)가 정해진 간격 If로 도 19의 처리를 하여도 좋다.
단계 S701에서 데이터 프레임 처리부(110)는 FID 관리 테이블(105)(도 12과 도 13을 참조) 중 1번째 엔트리에 주목한다. 이하, 도 19에 관한 설명에서는, 데이터 프레임 처리부(110)가 주목하는 엔트리를 「주목 엔트리」라고 한다.
이어서 단계 S702에서 데이터 프레임 처리부(110)는 현재 시각과 주목 엔트리의 최종 갱신 시각과의 차가 정해진 값 Gf 이상인지 여부를 판단한다. 한편, 실시형태에 따라서, Gf=If라도 좋고, Gf<If라도 좋고, Gf>If라도 좋다.
또한, 도 21의 단계 S807에 관해서 후술하는 이유로부터, 제1 실시형태에서는 가중치 테이블(104)의 에이징 시간인 정해진 값 Gw와, FID 관리 테이블(105)의 에이징 시간인 정해진 값 Gf는 Gf<Gw를 만족한다.
현재 시각과 주목 엔트리의 최종 갱신 시각과의 차가 정해진 값 Gf 이상이라면, 처리는 단계 S703으로 이행한다. 한편, 현재 시각과 주목 엔트리의 최종 갱신 시각과의 차가 정해진 값 Gf 미만이라면, 처리는 단계 S704로 이행한다.
단계 S703에서 데이터 프레임 처리부(110)는 주목 엔트리를 FID 관리 테이블(105)로부터 삭제한다. 그리고, 처리는 단계 S704로 이행한다.
그리고, 단계 S704에서 데이터 프레임 처리부(110)는 아직 주목하지 않은 엔트리가 FID 관리 테이블(105)에 남아 있는지 여부를 판단한다. 데이터 프레임 처리부(110)가 FID 관리 테이블(105)의 모든 엔트리에 다 주목했으면, 도 19의 처리는 종료된다. 한편, 아직 데이터 프레임 처리부(110)가 주목하지 않은 엔트리가 FID 관리 테이블(105)에 남아 있으면, 처리는 단계 S705로 이행한다.
단계 S705에서 데이터 프레임 처리부(110)는 FID 관리 테이블(105)의 아직 주목하지 않은 엔트리 중에서, 다음 엔트리에 주목한다. 그리고, 처리는 단계 S702로 되돌아간다.
이상의 도 19의 에이징 처리에 의해, 「FID 관리 테이블(105)의 엔트리가 계속해서 증가하여 기억 영역을 다 사용해 버린다」고 하는 사태를 막을 수 있다.
한편, 상기한 정해진 값 Gf는, 예컨대 몇 번이나 백트랙이 생기는 최악 케이스에 있어서 데이터 프레임이 GS에서부터 GD에 도달하는 데 걸린다고 예측되는 시간의 길이 이상이 되도록 정해져 있어도 좋다. 또, 「최악 케이스」란, 자세하게는 도 30과 함께 후술하지만, 탐색 공간에 있어서, 가지치기되어 있지 않은 전체 탐색 노드를 백트랙하면서 깊이 우선 탐색 순으로 찾아가는 경우를 의미한다. 일반적으로는, 네트워크의 규모가 클수록 정해진 값 Gf도 크게 설정해 두는 것이 바람직하다.
도 20~도 23은 도 14의 단계 S205에 있어서의 데이터 프레임 수신 처리의 흐름도이다. 한편, 설명의 편의상, 우선 노드 장치(100)가 GS가 되지 않고 중계 전용 타입인 경우의 데이터 프레임 수신 처리에 관해서, 도 20~도 23을 참조하여 설명한다. 노드 장치(100)가 GS로도 될 수 있는 타입인 경우에 관해서는, 도 23 부분이 후술하는 도 29의 처리로 치환된다.
도 14의 단계 S205에서 프레임 분기 처리부(106)로부터 데이터 프레임 수신 처리를 수행하도록 지시되면, 데이터 프레임 처리부(110)는 도 20의 처리를 시작한다. 한편, 전술한 대로, 프레임 분기 처리부(106)로부터의 지시는 수신된 데이터 프레임의 GS와 FID의 값의 통지를 동반한다.
단계 S801에서 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 LD의 값이 자노드 ID인지 여부를 판단한다. 수신된 데이터 프레임의 LD의 값이 자노드 ID가 아니면, 처리는 단계 S802로 이행하고, 수신된 데이터 프레임의 LD의 값이 자노드 ID라면, 처리는 단계 S803으로 이행한다.
한편, 데이터 프레임 수신 처리의 설명에 있어서, 「수신된 데이터 프레임」이란, 도 14의 단계 S201에서 수신부(101)가 수신하고, 단계 S204에서 버퍼부(109)에 저장되며, 도 20의 처리가 시작하는 계기가 된 데이터 프레임을 말한다.
또한, 프레임 분기 처리부(106)는, 데이터 프레임 수신 처리의 시작을 데이터 프레임 처리부(110)에 지시할 때, 수신한 데이터 프레임의 GS와 FID의 값을 데이터 프레임 처리부(110)에 통지한다. 따라서, 데이터 프레임 처리부(110)는 통지된 GS와 FID의 값을 키로 하여 버퍼부(109)를 검색함으로써, 수신한 데이터 프레임을 포함하는 엔트리를 찾아낼 수 있다. 따라서, 데이터 프레임 처리부(110)는 찾아낸 엔트리로부터, 수신된 데이터 프레임의 헤더에 포함되는 각 필드의 값을 읽어낼 수 있다.
정확하게는, 단계 S801에서는, 데이터 프레임 처리부(110)는 우선 이상과 같이 하여, 수신한 데이터 프레임의 헤더에 포함되는 각 필드의 값을 버퍼부(109)로부터 읽어내어 기억한다. 그리고, 기억한 LD의 값(즉, 수신된 데이터 프레임의 LD의 값)을 자노드 ID와 비교한다. 한편, 노드 장치(100) 자신의 노드 ID인 자노드 ID는, 예컨대 도 4의 플래시 메모리(205)에 미리 기록되어 있기 때문에, 데이터 프레임 처리부(110)는 자노드 ID를 참조할 수 있다.
수신한 데이터 프레임의 LD의 값이 자노드 ID와 다를 때, 노드 장치(100)는 노드 장치(100) 자신과 무관계한 데이터 프레임을 우연히 수신했다고 한다. 따라서, 단계 S802에서 데이터 프레임 처리부(110)는 수신된 데이터 프레임을 파기한다. 즉, 데이터 프레임 처리부(110)는 단계 S801에서 찾아낸 버퍼부(109)의 엔트리를 삭제한다. 그리고, 데이터 프레임 수신 처리는 종료한다.
한편, 수신한 데이터 프레임의 LD의 값이 자노드 ID와 같은 경우는 단계 S803에서 데이터 프레임 처리부(110)는 ACK 프레임을 생성하여, ACK 프레임의 송신을 송신부(102)에 의뢰한다. 그리고, 송신부(102)가 ACK 프레임을 송신한다.
예컨대, 도 7의 데이터 프레임(303)을 노드 장치 N3이 수신하면, 노드 장치 N3의 데이터 프레임 처리부(110-N3)는 단계 S803에서 도 7의 ACK 프레임(322)을 생성한다. 그리고, 송신부(102-N3)가 ACK 프레임(322)을 송신한다.
구체적으로는, 데이터 프레임 처리부(110-N3)는 수신된 데이터 프레임(303)의 LS의 값인 N2를 ACK 프레임(322)의 LD에 설정하고, 자노드 ID(즉 노드 장치 N3 자신의 노드 ID인 N3)를 ACK 프레임(322)의 LS에 설정한다. 또한, ACK 프레임(322)은 대응하는 데이터 프레임(303)의 LS인 노드 장치 N2 이외에는 무관계하기 때문에, 데이터 프레임 처리부(110-N3)는 ACK 프레임(322)의 GD에는 널을 나타내는 특수한 값 0x000000을 설정한다.
또한, 데이터 프레임 처리부(110-N3)는 ACK 프레임(322)을 수신한 노드 장치 N2가 「ACK 프레임(322)은 데이터 프레임(303)에 대한 ACK 프레임이다」라고 인식할 수 있도록 ACK 프레임(322)의 GS와 FID를 설정한다. 즉, 데이터 프레임 처리부(110-N3)는 ACK 프레임(322)의 GS와 FID에, 각각 수신된 데이터 프레임(303)의 GS와 FID의 값 N1과 Fa를 설정한다.
그리고, 데이터 프레임 처리부(110-N3)는 ACK 프레임(322)의 타입으로서, 「ACK 프레임」을 나타내는 정해진 값 A를 설정한다. 단계 S803에서는, 이상과 같이 하여 데이터 프레임 처리부(110-N3)가 ACK 프레임(322)을 생성하고, 송신부(102-N3)가 ACK 프레임(322)을 송신한다.
계속해서, 단계 S804에서 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 GD의 값이 자노드 ID인지 여부를 판단한다. 수신한 데이터 프레임의 GD의 값이 자노드 ID라면, 처리는 단계 S805으로 이행한다. 한편, 수신한 데이터 프레임의 GD의 값이 자노드 ID와 다르면, 처리는 도 21의 단계 S806으로 이행한다.
단계 S805에서 데이터 프레임 처리부(110)는 상위층 처리부(111)에, 수신한 데이터 프레임의 페이로드를 전달하고, 데이터 프레임 수신 처리를 종료한다. 구체적으로는, 데이터 프레임 처리부(110)는 단계 S801에서 찾아낸 버퍼부(109)의 엔트리로부터 페이로드를 추출하여 상위층 처리부(111)에 출력하고, 그 엔트리를 버퍼부(109)로부터 삭제한다. 그리고 데이터 프레임 수신 처리는 종료된다.
예컨대, 도 6의 단계 S112에서 데이터 프레임을 노드 장치 N6으로부터 수신한 노드 장치 N7에서는, 수신된 데이터 프레임의 페이로드가 상위층 처리부(111-N7)에 출력되어, 상위층 처리부(111-N7)에서 처리된다.
도 21의 단계 S806 이후의 처리는 수신된 데이터 프레임의 LD의 값이 자노드 ID와 같고, 또한 수신한 데이터 프레임의 GD의 값이 자노드 ID와 다른 경우에 실행된다.
단계 S806에서 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 FID와 GS의 값을 검색 키로서 이용하여, FID 관리 테이블(105)을 검색한다. 또, 상기한 바와 같이, 수신한 데이터 프레임의 FID와 GS의 값은 도 20의 처리를 시작할 때에 프레임 분기 처리부(106)로부터 통지된다.
계속해서, 단계 S807에서 데이터 프레임 처리부(110)는 단계 S806의 검색 결과 엔트리가 히트되었는지 여부를 판단한다. 엔트리가 히트된 경우, 노드 장치(100)가 이전에 송신한 적이 있는 데이터 프레임과 동일한 데이터 프레임이 수신되었다는 것이기 때문에, 처리는 단계 S808로 이행한다. 한편, 엔트리가 히트되지 않은 경우, 노드 장치(100)가 송신한 적이 없는 데이터 프레임이 수신되었다는 것이기 때문에, 처리는 단계 S810으로 이행한다.
또, 정확하게는, 「노드 장치(100)가 이전에 송신한 적이 있는 데이터 프레임과 동일한 데이터 프레임이 수신되었지만, 검색 대상의 엔트리가 이미 에이징에 의해 소멸되어 버렸다」라는 경우도, 엔트리는 히트되지 않는다. 이러한 경우가 생기지 않도록, 네트워크 내에서 백트랙이 반복되는 최악 시간의 견적 등에 기초하여, 적절하게 FID 관리 테이블(105)의 에이징 시간 Gf가 정해지는 것이 바람직하다.
단계 S808에서 데이터 프레임 처리부(110)는 단계 S806의 검색에서 히트된 FID 관리 테이블(105)의 엔트리의 LD와 OLS의 값을 추출하여, 예컨대 도 4의 DRAM(204) 등의 기억 영역에 기억한다.
계속해서 단계 S809에서 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 GD의 값에 대응하는 가중치 테이블(이하, 도 21~도 23의 설명에서는 「104-i」라는 참조 부호로 참조함)을 다음과 같이 갱신한다. 즉, 데이터 프레임 처리부(110)는 가중치 테이블(104-i)에 있어서, 단계 S808에서 취득된 LD에 대응하는 가중치를 최대치로 변경한다. 한편, 제1 실시형태에서는 가중치의 최대치는 1이다. 가중치의 변경 후, 처리는 단계 S817로 이행한다.
또, 단계 S807, S808, S809로 처리가 진행되는 경우, 단계 S808에서 취득된 LD에 대응하는 엔트리가, 수신된 데이터 프레임의 GD의 값에 대응하는 가중치 테이블(104-i)에 존재하는 것이 단계 S809에서 보증된다. 그 이유는 다음과 같다.
도 12와 도 13에 관해서 설명한 바와 같이, FID 관리 테이블(105)의 엔트리에 있어서 최종 갱신 시각은 데이터 프레임을 송신할 때에 설정된다. 또한, 도 19에 관해서 설명한 바와 같이, FID 관리 테이블(105)의 에이징 시간 Gf는, 예컨대 최악 케이스에서 예측되는 시간 이상으로 설정된다. 따라서, 노드 장치(100)가 과거에 송신한 데이터 프레임이 네트워크 내에서 돌아 노드 장치(100)에서 수신될 때, 그 데이터 프레임에 대응하는 엔트리는 아직 FID 관리 테이블(105)에 남아 있음이 보증된다.
그리고, 도 11에 관해서 설명한 바와 같이, 데이터 프레임이 송신되어 ACK 프레임이 회신되면, 가중치가 갱신되고, 가중치 테이블(104-1~101-M) 내의 각 엔트리에서는, 가중치가 갱신될 때에 최종 갱신 시각도 설정된다.
따라서, 시계열을 따르면 하기 (E1)~(E5)의 순서가 된다.
(E1) GD의 값이 NGD이고, GS의 값이 NGS이고, LD의 값이 NLD이고, FID의 값이 Fc인 데이터 프레임이 노드 장치(100)로부터 송신된다. 이 때, FID 관리 테이블(105)에서 최종 갱신 시각이 설정된다. 예컨대, 도 6의 노드 장치 N3에 있어서, 단계 S103에서 도 12의 엔트리 E3에 최종 갱신 시각 T103이 설정된다.
(E2) 상기 데이터 프레임에 대한 ACK 프레임이 수신되면, 노드 장치 NGD에 대응하는 가중치 테이블(104-i)에 있어서, LD 필드의 값이 NLD인 엔트리의 가중치가 갱신된다. 이 때, 그 엔트리의 최종 갱신 시각이 설정된다. 예컨대, 노드 장치 N3에 있어서, 도 11에 도시하는 바와 같이 단계 S103a에서 가중치 테이블(104-1-N3)의, LD 필드의 값이 N4인 엔트리의 최종 갱신 시각이 Tb로 설정된다.
(E3) GS의 값이 NGS이고, FID의 값이 Fc인 동일한 데이터 프레임이 노드 장치(100)에서 수신된다. 예컨대, 도 6의 단계 S106에서 노드 장치 N3이 데이터 프레임을 수신한다. 한편, 데이터 프레임의 GD의 값은 중계 시에 재기록되는 일은 없기 때문에, (E3)에서 수신되는 데이터 프레임의 GD의 값은 상기 (E1)로부터 당연히 NGD이다.
(E4) 상기 (E1)의 시점에서부터, FID 관리 테이블(105)의 에이징 시간 Gf가 경과한다.
(E5) 상기 (E2)의 시점에서부터, 가중치 테이블(104)의 에이징 시간 Gw가 경과한다.
이상과 같이, (E3)의 시점은 (E5)의 시점보다 전이다. 따라서, (E3)의 시점에서는, 노드 장치 NGD에 대응하는 가중치 테이블(104-i)에 있어서, LD 필드의 값이 NLD인 엔트리의 존재가 보증된다.
예컨대, 상기한 예에서는, 가중치 테이블(104-1-N3)에서, LD 필드의 값이 N4인 엔트리의 존재가 도 6의 단계 S106의 시점 보증이 된다. 한편, 여기서의 「단계 S106의 시점」이란, 보다 자세하게는, 단계 S106에서의 수신을 계기로 하는 데이터 프레임 수신 처리에 포함되는 단계 S809의 처리를 노드 장치 N3이 실행하는 시점을 말한다.
따라서, 도 21의 단계 S806의 검색에서 FID 관리 테이블(105)에 엔트리가 발견된 경우, 단계 S809에서는 반드시 단계 S808에서 취득된 LD에 대응하는 엔트리가 가중치 테이블(104-i)에 존재한다. 따라서, 단계 S809에서 데이터 프레임 처리부(110)는 존재가 보증된 엔트리에 있어서, 가중치를 최대치로 설정한다.
반대로, 단계 S806의 검색에서 엔트리가 발견되지 않은 경우, 단계 S810에서 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 LS의 값을 예컨대 도 4의 DRAM(204) 등의 기억 영역에 OLS로서 기억한다.
그리고, 단계 S811에서 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 GD의 값을 검색 키로서 이용하여, 가중치 테이블(104)을 검색한다.
계속해서, 단계 S812에서 데이터 프레임 처리부(110)는 단계 S811의 검색 결과, 테이블이 히트되었는지 여부를 판단한다.
수신한 데이터 프레임의 GD의 값에 대응하는 가중치 테이블이 가중치 테이블(104) 중에 존재하면, 처리는 단계 S812a로 이행한다. 한편, 단계 S809에서 도입한 「104-i」라는 참조 부호는 수신된 데이터 프레임의 GD의 값에 대응하는 가중치 테이블을 가리키기 때문에, 단계 S811의 검색 결과 히트된 테이블도 「가중치 테이블(104-i)」이다.
한편, 수신한 데이터 프레임의 GD의 값에 대응하는 가중치 테이블이 가중치 테이블(104) 중에 존재하지 않으면, 처리는 단계 S813으로 이행한다.
단계 S812a에서 데이터 프레임 처리부(110)는 단계 S811의 검색에서 히트된 가중치 테이블(104-i)을 조정한다. 단계 S812a의 가중치 테이블 조정 처리는 자세하게는 도 24와 함께 후술하지만, 에이징 처리의 부작용을 중화하는 처리이다.
단계 S812a의 결과, 인접 노드 관리 테이블(103)에서 관리되는 모든 인접 노드 장치에 대응하는 엔트리가 가중치 테이블(104-i)에 존재하는 것이 보증된다. 그리고, 처리는 단계 S817로 이행한다.
단계 S813에서 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 GD의 값에 대응하는 신규 가중치 테이블을 추가한다. 한편, 단계 S813에서 추가되는 테이블도 「가중치 테이블(104-i)」이다.
그리고, 단계 S814에서 데이터 프레임 처리부(110)는 신규 가중치 테이블(104-i)에 있어서, 수신한 데이터 프레임의 GD의 값을 가중치 테이블(104-i)의 GD로서 설정한다.
더욱이, 단계 S815에서 데이터 프레임 처리부(110)는 인접 노드 관리 테이블(103)의 엔트리수와 동수의 신규 엔트리를 신규 가중치 테이블(104-i)에 작성한다.
그리고, 단계 S816에서 데이터 프레임 처리부(110)는 단계 S815에서 작성된 각 엔트리에, 각각 인접 노드 관리 테이블(103)의 각 엔트리의 노드 ID와, 초기 가중치와, 현재 시각을 설정한다.
한편, 이상의 단계 S811~S816의 구체적인 예를 들면, 다음과 같다.
예컨대, 도 6의 단계 S102에서 노드 장치 N2로부터 도 7의 데이터 프레임(303)을 수신했을 때, 노드 장치 N3의 가중치 테이블(104-N3)에는 도 11의 가중치 테이블(104-1-N3)이 존재하지 않은 것으로 한다. 그러면, 노드 장치 N3이 수신한 데이터 프레임(303)의 GD의 값인 N7을 검색 키로 하여 노드 장치 N3의 데이터 프레임 처리부(110-N3)가 단계 S811에서 가중치 테이블(104-N3)을 검색하더라도, 테이블은 히트되지 않는다.
그래서, 데이터 프레임 처리부(110-N3)는 단계 S813에서 새롭게 가중치 테이블(104-1-N3)을 작성하여, 단계 S814에서 가중치 테이블(104-1-N3)의 GD에 N7을 설정한다. 그리고, 데이터 프레임 처리부(110-N3)는 단계 S815에서, 도 9의 인접 노드 관리 테이블(103-N3)과 동수의(즉, 3개의) 신규 엔트리를 가중치 테이블(104-1-N3)에 작성한다.
여기서, 인접 노드 관리 테이블(103-N3)의 각 엔트리의 노드 ID는 도 10과 같이, N2와 N4와 N5이다. 따라서, 단계 S816에서 데이터 프레임 처리부(110-N3)는 단계 S815에서 작성된 3개의 엔트리 각각에, LD로서 N2와 N4와 N5를 설정한다. 또한, 데이터 프레임 처리부(110-N3)는 이들 3개의 엔트리의 가중치 필드에, 모두 0.5라는 초기 가중치를 설정하고, 이들 3개의 엔트리의 최종 갱신 시각 필드에, 모두 현재 시각을 설정한다.
이상의 단계 S813~S816의 결과로서, 도 11의 1번째 단과 같은 가중치 테이블(104-1-N3)이 가중치 테이블(104-N3) 중에 추가된다.
여기서, 구체예의 설명에서 도 21의 처리 일반의 설명으로 되돌아간다. 단계 S817이 실행되는 것은, 단계 S809의 실행 후, 단계 S816의 실행 후, 또는 단계 S811의 검색에 있어서 테이블이 히트되었다고 단계 S812에서 판단된 후이다. 따라서, 단계 S817을 실행할 때에는, 수신된 데이터 프레임의 GD의 값에 대응하는 가중치 테이블(104-i)의 존재가 보증된다.
그래서, 단계 S817에 있어서 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 GD의 값에 대응하는 가중치 테이블(104-i)에 있어서, OLS와는 다른 LD 중에서 최소의 가중치와 대응시켜져 있는 LD의 값을 취득한다.
즉, 데이터 프레임 처리부(110)는 가중치 테이블(104-i)에 있어서, 단계 S808 또는 S810에서 기억한 OLS의 값과는 다른 값을 LD로서 갖는 엔트리 중에서, 가중치가 최소인 것을 선택한다. 그리고, 데이터 프레임 처리부(110)는 선택된 엔트리의 LD와 가중치를, 예컨대 도 4의 DRAM(204) 등의 기억 영역에 기억한다.
이어서, 단계 S818에서 데이터 프레임 처리부(110)는 하기의 2개의 조건 (F1)과 (F2) 중 어느 것이 성립하는지 여부를 판단한다.
(F1) 단계 S817(또는 후술하는 S829)에서 취득한 LD의 값에 대응하는 가중치가 가중치의 최대치(제1 실시형태에서는 1.0)이다.
(F2) 단계 S808 또는 S810에서 기억한 OLS의 값과는 다른 LD에의 데이터 프레임의 전송이 전부 실패했다[단, 가중치 테이블(104-i)에 있어서의 LD가 원래 OLS밖에 존재하지 않은 경우도 포함함].
조건 (F1) 또는 (F2)가 성립하는 경우, 이제는 LD로서 선택 가능한 인접 노드 장치는 남아 있지 않기 때문에, 처리는 도 23의 단계 S830으로 이행한다.
한편, 조건 (F1)과 (F2) 중 어느 것도 성립하지 않는 경우, 아직 LD로서 선택 가능한 인접 노드 장치가 남아 있다. 바꿔 말하면, (G1)~(G4) 중 어디에도 해당하지 않는 인접 노드 장치가 적어도 하나는 존재한다. 그리고, LD로서 선택 가능한 인접 노드 장치의 노드 ID가 단계 S817(또는 후술하는 S829)에서 취득된다.
(G1) 그 인접 노드 장치로부터 앞의 경로가 막다른 길이나 루프가 된다고 판단되었기 때문에, 그 인접 노드 장치는 최대치의 가중치와 대응시켜져 있다.
(G2) 과거에 그 인접 노드 장치에의 동일 GD로 어드레스된 데이터 프레임의 송신에 실패한 결과가 누적되었기 때문에, 그 인접 노드 장치는 최대치의 가중치와 대응시켜져 있다.
(G3) 이번의 데이터 프레임 수신 처리에 있어서 그 인접 노드 장치에의 데이터 프레임의 송신을 시도한 결과로서, 「송신 실패」라고 판명되었다. 즉, 데이터 프레임을 송신한 인접 노드 장치로부터 정해진 시간이 지나더라도, ACK 프레임을 수신할 수 없었다.
(G4) 그 인접 노드 장치는 OLS이다.
그래서, 단계 S818에서 조건 (F1)과 (F2) 중 어느 것도 성립하지 않는다고 판단되면, 처리는 단계 S819로 이행한다. 단계 S819 이후의 처리는 취득된 LD의 값으로 식별되는 인접 노드 장치에의 데이터 프레임의 전송을 시도하는 처리이다.
단계 S819에서 데이터 프레임 처리부(110)는 다음과 같이 하여 새로운 데이터 프레임을 작성하여 송신부(102)에 출력하고, 작성된 데이터 프레임을 송신부(102)가 송신한다.
구체적으로는, 데이터 프레임 처리부(110)는 단계 S817(또는 후술하는 S829)에서 취득한 LD의 값을 새로운 데이터 프레임의 LD로 지정하고, 자노드 ID를 새로운 데이터 프레임의 LS로 지정한다. 또한, 데이터 프레임 처리부(110)는 수신된 데이터 프레임으로부터 GD, GS, FID, 타입, 길이의 각 필드의 값과 페이로드를 새로운 데이터 프레임에 카피한다. 한편, 「수신한 데이터 프레임」이란, 상기한 바와 같이, 단계 S801에서 발견된 버퍼부(109) 내의 엔트리에 저장되어 있는 데이터 프레임이다.
단계 S819에서의 송신 후, 처리는 단계 S820으로 이행하여, 데이터 프레임 처리부(110)가 버퍼부(109)의 타임아웃 시각을 갱신한다. 즉, 데이터 프레임 처리부(110)는 버퍼부(109)에 있어서, 수신된 데이터 프레임을 저장하고 있는 엔트리의 타임아웃 시각에, 식 (5)의 시각 Ttimeout을 설정한다.
Ttimeout=Tnow+Twait (5)
한편, 식 (5)에 있어서 시각 Tnow는 현재 시각이고, 시간 Twait는 ACK 프레임 대기 시간이다.
그리고, 단계 S821에서 데이터 프레임 처리부(110)는 단계 S806의 FID 관리 테이블(105)의 검색에서 엔트리가 히트되는지, 또는 후술하는 단계 S823 및 단계 S824에서, FID 관리 테이블(105)에 신규 엔트리를 추가하여 값을 설정하는지 여부를 확인한다. 즉, 수신한 데이터 프레임의 GS와 FID의 값과 같은 값을 GS 및 FID로서 갖는 엔트리가 FID 관리 테이블(105)에 존재하는지 여부를 데이터 프레임 처리부(110)는 확인한다.
단계 S806의 검색에서 엔트리가 히트되거나, 단계 S823 및 단계 S824에서 FID 관리 테이블(105)에 신규 엔트리를 추가하여 값을 설정하면, 이번의 데이터 프레임 수신 처리는 과거에 노드 장치(100) 자신이 송신한 것과 동일한 데이터 프레임의 수신을 계기로 하는 처리이다. 따라서, 데이터 프레임 처리부(110)는 이어서 단계 S822를 실행한다. 한편, 단계 S806의 검색에서 엔트리가 히트되지 않고, 또한, 단계 S823 및 단계 S824에서 FID 관리 테이블(105)에 신규 엔트리를 추가하여 값을 설정하지 않으면, 노드 장치(100)는 처음으로 수신하는 데이터 프레임의 첫 전송을 시도하고 있는 참이다. 따라서, 처리는 단계 S823으로 이행한다.
단계 S822에서 데이터 프레임 처리부(110)는 단계 S806의 검색에서 히트된 엔트리를 갱신한다. 구체적으로는, 데이터 프레임 처리부(110)는 단계 S806의 검색에서 히트된 엔트리에 있어서, LD 필드에는 단계 S819에서 송신한 데이터 프레임의 LD의 값을 설정하고, 최종 갱신 시각 필드에는 현재 시각을 설정한다. 그리고, 처리는 단계 S825로 이행한다.
또한, 단계 S823에서 데이터 프레임 처리부(110)는 FID 관리 테이블(105)에 신규 엔트리를 추가한다.
그리고, 다음 단계 S824에서 데이터 프레임 처리부(110)는 신규 엔트리에 값을 설정한다. 구체적으로는, 데이터 프레임 처리부(110)는 신규 엔트리에 있어서, FID와 GS와 LD의 각 필드에는, 각각 단계 S819에서 송신한 데이터 프레임의 값을 카피한다. 또한, 데이터 프레임 처리부(110)는 신규 엔트리에 있어서, 최종 갱신 시각 필드에는 현재 시각을 설정하고, OLS 필드에는 단계 S810에서 기억한 OLS의 값을 카피한다. 그리고, 처리는 단계 S825로 이행한다.
단계 S825에서 데이터 프레임 처리부(110)는 단계 S819에서의 송신 성공 여부의 통지를 대기한다.
예컨대, 데이터 프레임 처리부(110)가 정해진 프로그램의 스레드를 실행하는 도 4의 MPU(201)에 의해 실현되는 경우, 단계 S825에서는 스레드가 슬립하여도 좋다. 그 경우, 「송신 성공」 또는 「송신 실패」의 통지는 스레드를 일으키는 처리이다.
단계 S819의 송신이 성공한 경우는 단계 S819에서 송신한 데이터 프레임에 있어서 LD로서 지정되어 있는 인접 노드 장치로부터 ACK 프레임이 회신된다. 그리고, ACK 처리부(107)가 후술하는 도 25의 처리를 하여, 데이터 프레임 처리부(110)에 「송신 성공」을 통지한다.
또한, 단계 S819에서의 송신 실패란, 단계 S819에서 송신한 데이터 프레임에 있어서 LD로서 지정되어 있는 인접 노드 장치로부터의 ACK 프레임이 식 (5)의 시각 Ttimeout이 되더라도 노드 장치(100)에서 수신되지 않는 것이다. ACK 프레임의 수신은 ACK 처리부(107)에 의한 후술하는 도 26의 처리에 의해 감시되고, ACK 프레임이 타임아웃 시각 Ttimeout이 되어도 수신되지 않으면, ACK 처리부(107)가 데이터 프레임 처리부(110)에 「송신 실패」를 통지한다.
데이터 프레임 처리부(110)가 단계 S825에서의 대기 후, ACK 처리부(107)로부터 「송신 성공」 또는 「송신 실패」를 통지받으면, 처리는 단계 S826으로 이행한다.
단계 S826에서 데이터 프레임 처리부(110)는 ACK 처리부(107)로부터 받은 통지에 기초하여, 단계 S819의 송신이 성공했는지 여부를 판단한다. 송신이 성공한 경우, 처리는 단계 S827로 이행하고, 송신이 실패한 경우, 처리는 단계 S828로 이행한다.
송신이 성공한 경우, 단계 S827에서 데이터 프레임 처리부(110)는 가중치 테이블(104)에 있어서, 단계 S819에서 송신한 데이터 프레임의 GD와 LD의 조합에 대응하는 가중치를 작게 한다. 여기서, 데이터 프레임의 GD는 전송에 의해 재기록되지 않음에 주의하여 환언하면, 단계 S827에서 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 GD에 대응하는 가중치 테이블(104-i)에서 가중치를 갱신한다.
즉, 데이터 프레임 처리부(110)는 단계 S817(또는 후술하는 단계 S829)에서 취득된 LD의 값을 LD로서 갖는 엔트리를 가중치 테이블(104-i)에서 찾아, 발견된 엔트리의 가중치를 작게 한다. 가중치를 작게 하는 것은 대응하는 LD의 우선도를 높이는 것이다.
여기서, 발견된 엔트리의 현재의 가중치를 Wcurrent라고 하면, 단계 S827에서 데이터 프레임 처리부(110)는 발견된 엔트리의 가중치를 예컨대 식 (6)의 Wrevised로 갱신하여도 좋다.
Wrevised=max(Wmin, Wcurrent-ΔWsuccess) (6)
한편, 식 (6)에 있어서, Wmin은 가중치의 최소치이며, 제1 실시형태에서는 Wmin=0이다. 또한, ΔWsuccess는 송신이 성공했을 때에 가중치를 줄이는 정해진 양이며, 실시형태에 따라서 적절하게 값을 결정할 수 있다. 예컨대, ΔWsuccess=0.1일 수도 있다.
더욱이, 데이터 프레임 처리부(110)는 단계 S827에서, 단계 S817(또는 후술하는 단계 S829)에서 취득한 LD의 값을 LD로서 갖는 가중치 테이블(104-i)의 엔트리에 있어서, 최종 갱신 시각에 현재 시각을 설정한다. 그리고, 데이터 프레임 수신 처리는 종료된다.
한편, 송신이 실패한 경우, 단계 S828에서 데이터 프레임 처리부(110)는 가중치 테이블(104)에 있어서, 단계 S819에서 송신한 데이터 프레임의 GD와 LD의 조합에 대응하는 가중치를 크게 한다. 즉, 단계 S828에서 데이터 프레임 처리부(110)는 단계 S817(또는 후술하는 단계 S829)에서 취득한 LD의 값을 LD로서 갖는 엔트리를 가중치 테이블(104-i)에서 찾아, 발견된 엔트리의 가중치를 크게 한다. 가중치를 크게 하는 것은 대응하는 LD의 우선도를 내리는 것이다.
예컨대, 단계 S828에서 데이터 프레임 처리부(110)는 발견된 엔트리의 가중치를 식 (7)의 Wrevised로 갱신하여도 좋다.
Wrevised=min(Wmax, Wcurrent+ΔWfailure) (7)
한편, 식 (7)에 있어서, Wmax는 가중치의 최대치이며, 제1 실시형태에서는 Wmax=1이다. 또한, ΔWfailure는 송신이 실패했을 때에 가중치를 늘리는 정해진 양이며, 실시형태에 따라서 적절하게 값을 결정할 수 있다. 예컨대, ΔWfailure=0.1일 수 있다. 물론, ΔWfailure≠ΔWsuccess일 수도 있다.
한편, 데이터 프레임 처리부(110)는 단계 S828에서, 단계 S817(또는 후술하는 단계 S829)에서 취득한 LD의 값을, 예컨대 도 4의 DRAM(204) 등의 작업 영역에 「전송에 실패한 LD」로서 기억한다. 예컨대, 데이터 프레임 처리부(110)는, DRAM(204) 상의 선형 리스트를 단계 S817에서 블랭크로 초기화하고, 단계 S828을 실행할 때마다, 단계 S817(또는 후술하는 단계 S829)에서 취득한 LD의 값을 유지하는 요소를 선형 리스트에 추가하여도 좋다. 물론, 「전송에 실패한 LD」의 기억을 위해 배열 등 다른 데이터 구조가 사용될 수도 있다.
더욱이, 데이터 프레임 처리부(110)는 단계 S828에서, 단계 S817(또는 후술하는 단계 S829)에서 취득한 LD의 값을 LD로서 갖는 가중치 테이블(104-i)의 엔트리에 있어서, 최종 갱신 시각에 현재 시각을 설정한다. 그리고, 처리는 단계 S829로 이행한다.
단계 S829에서 데이터 프레임 처리부(110)는 지금까지 LD로서 시도하지 않은 다른 선택 가능한 인접 노드 장치를 찾는다. 구체적으로는, 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 GD의 값에 대응하는 가중치 테이블(104-i)에 있어서, 전송에 실패한 LD 이외이며, 또 OLS와는 다른 LD 중에서, 최소의 가중치와 대응시켜져 있는 LD의 값을 취득한다. 한편, 전송에 실패한 LD는 단계 S828에 있어서 예컨대 도 4의 DRAM(204) 등의 작업 영역에, 예컨대 선형 리스트 등의 형태로 기억된다.
즉, 데이터 프레임 처리부(110)는 가중치 테이블(104-i)에 있어서, (H1)과 (H2)인 값을 LD로서 갖는 엔트리 중에서, 가중치가 최소인 것을 선택한다. 그리고, 데이터 프레임 처리부(110)는 선택된 엔트리의 LD와 가중치를 예컨대 도 4의 DRAM(204) 등의 기억 영역에 기억한다.
(H1) 과거에 단계 S817 또는 S829에서 취득한 LD의 값과는 다른 값
(H2) 단계 S808 또는 S810에서 기억한 OLS의 값과는 다른 값
따라서, 예컨대 단계 S828에서 0.2로 갱신된 가중치와 대응시켜진 인접 노드 장치는 단계 S829에서 LD로서 선택되지 않고, 단계 S829에서는 0.2보다 큰 0.8 등의 가중치의 인접 노드 장치가 선택되는 경우도 있을 수 있다.
이상의 단계 S817~S829의 구체적인 예를 들면, 다음과 같다. 예컨대, 도 6의 노드 장치 N4에는 노드 장치 N3, N5 및 N7이 인접해 있다. 그리고, 도 12와 같이, 노드 장치 N4의 FID 관리 테이블(105-N4)의 엔트리 E4의 OLS의 값은 N3이다.
도 6의 예에서는, 노드 장치 N4의 데이터 프레임 처리부(110-N4)가 최초로 단계 S817에서 LD의 값 N7을 취득하기 때문에, 단계 S104와 같이 노드 장치 N7에의 데이터 프레임이 송신된다. 그러나, 도 6에 도시하는 대로 단계 S104의 송신은 실패하기 때문에, 데이터 프레임 처리부(110-N4)는 단계 S826에서 「송신 실패」라고 판단한다.
그러면, 데이터 프레임 처리부(110-N4)가 단계 S829를 실행하는 시점에서, 전송에 실패한 LD(즉, N7) 이외이며, 또 OLS(즉, N3)와는 다른 LD의 값은 N5뿐이다. 따라서, 단계 S829에서는 LD의 값 N5가 취득된다.
이렇게 해서 단계 S829에서 LD의 값이 취득되면, 처리는 단계 S829에서 단계 S818로 되돌아간다.
따라서, 상기한 노드 장치 N4의 예에서는, 단계 S829 후, 재차 단계 S818~S826이 실행된다. 그리고, 도 6에 단계 S105로서 도시하는 바와 같이, 이번에는 단계 S826에서 「송신 성공」이라고 판단되어, 단계 S827이 실행되고, 데이터 프레임 수신 처리가 종료된다.
한편, 단계 S828에서, 예컨대 식 (7)과 같이 가중치를 갱신하는 것의 영향에 관해서 구체적인 예를 들어 설명하면, 다음과 같다.
예컨대, 도 2의 네트워크(2)에 있어서, 노드 장치 N106이 인접 노드 장치 N108로부터, 노드 장치 N118을 GD로서 지정하는 제1 데이터 프레임을 시각 Trcv1에 수신한다고 한다. 그리고, 시각 Trcv1에 노드 장치 N106에는, 노드 장치 N118에 대응하는 가중치 테이블(104-g106-N106)이 존재한다고 한다. 또한, 시각 Trcv1의 가중치 테이블(104-g106-N106)에서는, 노드 장치 N102에는 가중치 0.4가, 노드 장치 N103에는 가중치 0.7이, 노드 장치 N107에는 가중치 0.1이, 노드 장치 N108에는 가중치 0.5가 각각 대응시켜져 있었다고 한다.
그러면, 단계 S817에서는, 최소의 가중치 0.1과 대응시켜져 있는 노드 장치 N107이 LD로서 선택된다. 그런데, 단계 S819에서 데이터 프레임이 송신될 때, 우연히 노드 장치 N106과 N107 사이에 차폐물이 놓이는 등의 이유로 일시적으로 노드 장치 N106과 N107의 무선 링크가 통신 불능이 되었다고 한다.
그러면, ACK 프레임이 회신되지 않기 때문에, 단계 S828에서는, 노드 장치 N107의 가중치가 0.1에서 0.2로 갱신된다. 그리고, 단계 S829에서는, 가중치 0.4와 대응시켜져 있는 노드 장치 N102가 LD로서 선택된다. 여기서, 단계 S819에서의 데이터 프레임 송신이 성공하여, 노드 장치 N102로부터 ACK 프레임이 회신되었다고 한다. 그러면, 단계 S827에서 노드 장치 N102의 가중치가 0.4에서 0.3으로 갱신되고, 데이터 프레임 수신 처리가 종료된다.
여기서, 노드 장치 N106에서 노드 장치 N102로 송신된 제1 데이터 프레임은 노드 장치 N106에 백트랙되지 않고, 노드 장치 N118에 도달했다고 한다. 즉, 가중치 테이블(104-g106-N106)에서는, 제1 데이터 프레임의 전송에 동반하여 가중치가 1로 갱신되는 엔트리는 없었다고 한다.
그러면, 노드 장치 N106이 그 후의 시각 Trcv2에, 마찬가지로 노드 장치 N118을 GD로서 지정하는 제2 데이터 프레임을 이번에는 노드 장치 N103으로부터 수신했을 때, 가중치 테이블(104-g106-N106)의 내용은 다음과 같다. 즉, 노드 장치 N102에는 가중치 0.3이, 노드 장치 N103에는 가중치 0.7이, 노드 장치 N107에는 가중치 0.2가, 노드 장치 N108에는 가중치 0.5가 각각 대응시켜져 있다.
따라서, 단계 S817에서는, 제1 데이터 프레임의 전송에 실패했다고는 해도, 또 최소의 가중치와 대응시켜져 있는 노드 장치 N107이 LD로서 선택된다. 그리고, 만일 시각 Trcv2에 노드 장치 N106과 N107 사이의 무선 링크의 통신 품질이 호전되고, 단계 S819에서의 제2 데이터 프레임의 송신이 성공하면, 단계 S827에서 노드 장치 N107의 가중치는 다시 0.1로 되돌아간다.
여기서, 제2 데이터 프레임의 노드 장치 N107에의 전송 결과, 백트랙이 생기지 않는다고 하면, 노드 장치 N107의 가중치는 0.1 그대로이다. 따라서, 더욱 그 후의 시각 Trcv3에, 마찬가지로 노드 장치 N118을 GD로서 지정하는 제3 데이터 프레임을, 노드 장치 N107 이외의 인접 노드 장치로부터 노드 장치 N106이 수신하면, LD로서 가장 우선적으로 선택되는 것은 역시 노드 장치 N107이다.
이와 같이, 단계 S829에서 가중치를 급격히 최대치로 설정하는 것이 아니라 조금만 크게 하면, 가중치 테이블(104)이 통신 환경의 변화에 지나치게 반응하는 일은 없다. 따라서, 동일한 노드 장치를 GD로서 지정하는 복수의 데이터 프레임을 차례차례 노드 장치 N106이 수신하는 와중에, 일시적으로 장해가 생겼던 링크가 장해로부터 회복되면, 환경의 호전에 따라, 과거의 학습 결과가 다시 LD의 선택에 이용되기 시작한다. 즉, 상기한 예에서는, LD로서 적절하다고 과거에 학습이 끝난 노드 장치 N107이 다시 LD로서 우선적으로 선택되게 된다.
혹은, 시각 Trcv2에 있어서 노드 장치 N106과 N107 사이의 무선 링크가 장해로부터 복구되지 않는 경우도 있을 수 있다. 그 경우, 제2 데이터 프레임을 송신할 때의 LD로서, 일단은 가중치 0.2의 노드 장치 N107이 선택되지만, ACK 프레임이 수신되지 않기 때문에, 노드 장치 N107의 가중치는 0.3으로 갱신된다. 그리고, 최종적으로는 가중치 0.3과 대응시켜진 노드 장치 N102가 LD로서 선택되고, 송신이 성공하여 가중치가 0.2로 갱신되는 경우도 있을 수 있다.
그러면, 시각 Trcv3에, 예컨대 노드 장치 N103으로부터, 노드 장치 N106이 제3 데이터 프레임을 수신하면, 가중치 0.2에 대응시켜진 노드 장치 N102가 LD로서 선택되고, 또한 송신이 성공하고, 노드 장치 N102의 가중치가 0.1이 될지도 모른다. 그리고, 그 후 당분간은 노드 장치 N118을 GD로서 지정하는 데이터 프레임의 LD로서, 노드 장치 N106은 노드 장치 N102를 계속해서 선택할 지도 모른다.
그러나, 또 그 후, 노드 장치 N106과 N102 사이의 무선 링크에 장해가 생겼다고 하면, 노드 장치 N102로부터는 ACK 프레임이 회신되지 않는다. 그렇게 하면 단계 S829에서 LD를 재선택하게 된다.
그 경우, 시각 Trcv1 이전에 LD로서 적합하다고 학습되었던 노드 장치 N107이 가중치 0.5나 0.7과 대응시켜져 있고 상대적으로 LD로서 그다지 적절하지 않은 노드 장치 N108이나 N103보다도 우선적으로 LD로서 선택된다. 그 이유는 제1와 제2 데이터 프레임을 송신할 때의 가중치 학습은 단계 S828에 나타내는 바와 같이 가중치를 완만하게 변화시키는 것이며, 노드 장치 N107의 가중치는 또 노드 장치 N108이나 N103의 가중치보다도 작기 때문이다.
그리고, 이 시점에서 노드 장치 N106과 N107 사이의 무선 링크가 장해로부터 복구되면, 다시 노드 장치 N107의 가중치 0.2로 줄어든다. 이와 같이, 다소 복구에 시간이 걸리더라도, 일시적인 환경의 변화가 지나치게 가중치 테이블(104)에 반영되지 않기 때문에, 과거 학습의 성과가 천천히 반영된다. 따라서, 적절한 LD가 선택될 개연성도 높아진다.
이상과 같이, 일시적인 장해의 영향을 지나치게 받지 않도록 하기 위해서, 단계 S828에서는 가중치가 약간만 조정된다.
그런데 여기서, 단계 S818의 분기의 설명으로 되돌아간다. 단계 S818에서 2개의 조건 (F1)과 (F2) 중 어느 것이 성립한다고 판단되면, 이제는 LD로서 선택 가능한 인접 노드 장치는 남아 있지 않기 때문에, 처리는 도 23의 단계 S830으로 이행한다.
단계 S830에서 데이터 프레임 처리부(110)는 다음과 같이 하여 새로운 데이터 프레임을 작성해서 송신부(102)에 출력하고, 작성된 데이터 프레임을 송신부(102)가 송신한다.
구체적으로는, 데이터 프레임 처리부(110)는 단계 S808 또는 S810에서 기억한 OLS의 값을 새로운 데이터 프레임의 LD로 지정하고, 자노드 ID를 새로운 데이터 프레임의 LS로 지정한다. 또한, 데이터 프레임 처리부(110)는 수신된 데이터 프레임으로부터 GD, GS, FID, 타입, 길이의 각 필드의 값과 페이로드를, 새로운 데이터 프레임에 카피한다. 한편, 「수신한 데이터 프레임」이란, 상기한 바와 같이, 단계 S801에서 발견된 버퍼부(109) 내의 엔트리에 저장되어 있는 데이터 프레임이다. 단계 S830에서 이루어지는 송신 처리가, 즉 백트랙 동작이다.
한편, 단계 S830의 송신의 구체적인 예는 도 6의 단계 S110이다.
단계 S830에서의 송신 후, 처리는 단계 S831로 이행한다. 단계 S831에서 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 FID와 GS의 값을 검색 키로서 이용하여 FID 관리 테이블(105)을 검색한다.
그리고, 단계 S832에서 데이터 프레임 처리부(110)는 단계 S831의 검색 결과, 엔트리가 히트되었는지 여부를 판단한다. 엔트리가 히트되면 처리는 단계 S833으로 이행하고, 엔트리가 히트되지 않으면 처리는 단계 S834로 이행한다.
한편, 단계 S807에서 「엔트리가 히트되었다」고 판단되는 경우에, 단계 S831의 검색 결과 발견되는 엔트리는 단계 S806의 검색 결과 발견된 엔트리이다. 또한, 단계 S807에서 「엔트리가 히트되지 않았다」고 판정되고, 또 단계 S823에 있어서 신규 엔트리가 작성된 경우는 단계 S831의 검색 결과, 단계 S823에서 작성된 신규 엔트리가 발견된다.
단계 S832에서 「엔트리가 히트되지 않았다」고 판단되는 것은 (I1)과 (I2)의 경우이며, 바꿔 말하면, (J1)과 (J2)의 경우이다.
(I1) 단계 S807에서 「엔트리가 히트되지 않았다」고 판단되었다.
(I2) 1번째에 단계 S818가 실행된 직후에, 단계 S830으로 처리가 이행했다.
(J1) 노드 장치(100)가 지금까지 수신한 적이 없는 데이터 프레임이 수신되었다.
(J2) 수신된 데이터 프레임의 GS의 값에 대응하는 가중치 테이블(104-i)에서는, 모든 LD에 최대치의 가중치가 대응시켜져 있다.
단계 S833에서 데이터 프레임 처리부(110)는 단계 S831의 검색 결과 히트된 엔트리를 갱신한다. 구체적으로는, 데이터 프레임 처리부(110)는 히트된 엔트리에 있어서, LD에는 히트된 엔트리 자신의 OLS의 값을 카피하고, 최종 갱신 시각에는 현재 시각을 설정한다. 그리고, 처리는 단계 S836으로 이행한다.
한편, 단계 S834에서는, 데이터 프레임 처리부(110)는 FID 관리 테이블(105)에 신규 엔트리를 추가한다.
그리고, 다음 단계 S835에서 데이터 프레임 처리부(110)는 단계 S834에서 추가한 신규 엔트리에 값을 설정한다. 구체적으로는, 데이터 프레임 처리부(110)는 신규 엔트리에 있어서, FID와 GS에는 수신된 데이터 프레임의 값을 각각 카피하고, 최종 갱신 시각에는 현재 시각을 설정하며, OLS와 LD에는 수신된 데이터 프레임의 LS의 값을 카피한다. 그리고, 처리는 단계 S836으로 이행한다.
단계 S836에서 데이터 프레임 처리부(110)는 단계 S830에서 송신한 데이터 프레임에 관한 송신 성공 여부의 통지를 대기한다. 그리고, 「송신 성공」 또는 「송신 실패」의 통지를 데이터 프레임 처리부(110)가 ACK 처리부(107)로부터 받으면, 처리는 단계 S837로 이행한다. 단계 S836은 단계 S825와 유사하기 때문에, 자세한 설명은 생략한다.
그리고, 단계 S837에서 데이터 프레임 처리부(110)는 단계 S830에서의 데이터 프레임 송신이 성공했는지 여부를 판단한다. 송신이 실패한 경우, 처리는 단계 S838로 이행하고, 송신이 성공한 경우, 처리는 단계 S839로 이행한다.
단계 S838이 실행될 때는 (K1)과 (K2)와 같은 예외적인 경우이다.
(K1) OLS 이외의 모든 인접 노드 장치가 (K1-1) 또는 (K1-2)이다.
(K1-1) 최대치의 가중치와 대응시켜져 있다.
(K1-2) LD로서 지정하여 데이터 프레임을 송신하면, 송신에 실패한다.
(K2) OLS에의 데이터 프레임의 송신(즉, 백트랙 동작)은 실패했다.
이 경우, 데이터 프레임 처리부(110)는 단계 S838에서, 수신한 데이터 프레임을 파기한다. 즉, 데이터 프레임 처리부(110)는 단계 S801에서 찾아낸 엔트리를 버퍼부(109)로부터 삭제한다. 그리고, 데이터 프레임 수신 처리는 종료된다.
한편, 단계 S838의 영향에 관해서 구체적인 예와 함께 설명하면 다음과 같다.
예컨대, 도 6의 단계 S110은 노드 장치 N3이 단계 S830에서 실행하는 송신이다. 도 6의 예에서는, 단계 S110에서의 노드 장치 N3으로부터 노드 장치 N2로의 데이터 프레임의 송신에 대하여, 노드 장치 N2가 ACK 프레임을 노드 장치 N3에 회신한다.
여기서, 반대로, 단계 S110의 시점에서 노드 장치 N2와 N3 사이의 링크에 장해가 발생하여, 단계 S110(즉, 단계 S830)에서 노드 장치 N3이 송신한 데이터 프레임이 노드 장치 N2에는 도달하지 않았다고 가정한다. 그러면, 당연히 노드 장치 N3이 노드 장치 N2로부터 ACK 프레임을 수신하는 일도 없기 때문에, 노드 장치 N3은 단계 S837에서 「송신 실패」라고 판단하여, 단계 S838을 실행한다. 즉, 단계 S101에서 노드 장치 N1이 송신한 데이터 프레임은 GD인 노드 장치 N7에 도달하기 전에, 네트워크(1) 내에서 소멸해 버린다.
더구나, 노드 장치 N2에서는, 「단계 S102에서 송신이 성공한 후, 어떤 인접 노드 장치로부터도 동일한 데이터 프레임은 수신되고 있지 않다」라는 상태이다. 따라서, 노드 장치 N2에는, 「GD로서 노드 장치 N7이 지정되어 있을 때, 노드 장치 N2가 LD로서 노드 장치 N3을 선택하는 것은 부적절하다」라고 인식되지 않는다. 즉, 도 6의 예와 같이, 노드 장치 N2가 「GD로서 노드 장치 N7이 지정되어 있을 때, 노드 장치 N2는 LD로서 노드 장치 N6을 선택하는 것이 적절하다」고 학습할 수는 없다.
그 결과, GD로서 노드 장치 N7이 지정되어 있는 새로운 별도의 데이터 프레임을 노드 장치 N2가 수신한 경우(또는 그와 같은 데이터 프레임을 노드 장치 N2가 GS가 되어 송신하는 경우), 노드 장치 N2는 LD로서 노드 장치 N3을 선택한다.
만일, 그 시점에서도 아직 노드 장치 N2와 N3 사이의 링크가 장해로부터 복구되지 않으면(예컨대, 열악한 전파 상황이 계속되면), 노드 장치 N2로부터 송신된 데이터 프레임이 노드 장치 N3에는 도달하지 않는다. 따라서, 노드 장치 N2는 ACK 프레임을 수신할 수 없어, 도 22의 단계 S826에서 「송신 실패」라고 판단한다.
그 결과, 노드 장치 N2는 단계 S828에서, GD인 노드 장치 N7에 대응하는 가중치 테이블(104-h2-N2)(이 참조 부호는 도 6의 설명과 마찬가지)에 있어서 노드 장치 N2에 대응하는 가중치를 크게 한다. 그리고, 노드 장치 N2는 계속되는 단계 S829에서, LD로서 노드 장치 N6을 재선택한다.
이와 같이, 데이터 프레임이 네트워크(1) 내의 노드 장치 N3에 있어서 단계 S838에서 파기되면, 파기된 데이터 프레임에 관한 OLS인 다른 노드 장치 N2에 있어서의 가중치 테이블(104-h2-N2)의 학습이 지연되는 경우가 있다.
그러나, 상기한 예시로부터 분명한 바와 같이, 노드 장치 N2에 있어서의 학습은 단순히 조금 지연될 뿐이다. 노드 장치 N2는 앞의 데이터 프레임과 마찬가지로 노드 장치 N7을 GD로 하는 다음 데이터 프레임을 수신한 후, 그 수신을 계기로 하는 일련의 처리에 의해, 적절한 가중치를 학습할 수 있다. 즉, 복수의 데이터 프레임이 잇달아 유통되는 네트워크(1) 전체의 동작에서 보면, OLS에의 백트랙을 위한 데이터 프레임의 송신 실패에 의해 국소적으로 가중치 학습이 지연되는 노드 장치가 있더라도, 학습 지연은 곧 만회할 수 있다.
여기서, 도 23의 흐름도의 설명으로 되돌아간다. 단계 S839는 OLS에의 데이터 프레임의 송신에 성공한 경우에 실행된다.
단계 S839에서 데이터 프레임 처리부(110)는 가중치 테이블(104)에 있어서, 단계 S830에서 송신한 데이터 프레임의 GD와 LD의 조합에 대응하는 가중치를 작게 한다. 바꿔 말하면, 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 GD에 대응하는 가중치 테이블(104-i)에 있어서, 송신한 데이터 프레임의 LD(즉, 단계 S808 또는 S810에서 기억한 OLS)에 대응하는 가중치를 갱신한다.
단계 S839의 상세한 내용은 단계 S827과 마찬가지기 때문에 자세한 설명은 생략하지만, 데이터 프레임 처리부(110)는, 예컨대 식 (6)을 사용하여 가중치를 갱신하더라도 좋다. 데이터 프레임 처리부(110)는 또한, 가중치 테이블(104-i)에서 가중치를 갱신한 엔트리에 있어서, 최종 갱신 시각에 현재 시각을 설정한다. 그리고, 데이터 프레임 수신 처리는 종료된다.
이어서, 도 24를 참조하여, 도 21의 단계 S812a의 가중치 테이블 조정 처리의 상세한 내용을 설명한다. 한편, 도 24의 가중치 테이블 조정 처리는 후술하는 도 27의 단계 S1108a에서도 호출된다. 도 24의 설명에 있어서 「히트된 가중치 테이블(104-i)」이란, 도 21의 단계 S811의 검색 또는 도 27의 단계 S1107의 검색에서 히트된 테이블을 의미한다.
단계 S851에서 데이터 프레임 처리부(110)는 인접 노드 관리 테이블(103)(도 9 참조)의 1번째 엔트리에 주목한다. 한편, 이하의 도 24의 설명에 있어서, 데이터 프레임 처리부(110)가 주목하는 인접 노드 관리 테이블(103)의 엔트리를 「주목 엔트리」라고 한다.
이어서, 단계 S852에서 데이터 프레임 처리부(110)는 히트된 가중치 테이블(104-i)에 주목 엔트리의 노드 ID의 값을 LD로서 포함하는 엔트리가 있는지 여부를 판단한다. 히트된 가중치 테이블(104-i)에, 주목 엔트리의 노드 ID의 값을 LD로서 포함하는 엔트리가 있으면, 처리는 단계 S855로 이행한다. 반대로, 히트된 가중치 테이블(104-i)에, 주목 엔트리의 노드 ID의 값을 LD로서 포함하는 엔트리가 없으면, 처리는 단계 S853으로 이행한다.
단계 S853에서 데이터 프레임 처리부(110)는 히트된 가중치 테이블(104-i)에 신규 엔트리를 추가한다.
계속해서 단계 S854에서, 데이터 프레임 처리부(110)는 단계 S853에서 가중치 테이블(104-i)에 추가한 신규 엔트리에 값을 설정한다. 즉, 데이터 프레임 처리부(110)는 신규 엔트리에 있어서, 인접 노드 관리 테이블(103)의 주목 엔트리의 노드 ID의 값을 LD 필드에, 초기 가중치를 가중치 필드에, 현재 시각을 최종 갱신 시각 필드에, 각각 설정한다.
한편, 단계 S854에서의 초기 가중치는 도 15의 단계 S308에서의 초기 가중치와는 다르다. 구체적으로는, 단계 S854에서의 초기 가중치는 히트된 가중치 테이블(104-i)의 가중치 필드에 있어서, 1 미만의 가중치 중 최대치이다.
예컨대, 히트된 가중치 테이블(104-i)의 가중치 필드에 4개의 엔트리가 존재하고, 각각의 가중치 필드의 값이 0.4, 0.7, 1 및 0.5라면, 단계 S854에서의 초기 가중치는 0.7이다. 또, 히트된 가중치 테이블(104-i)의 가중치 필드의 값이 전체 엔트리에서 1인 경우는 단계 S854에서의 초기 가중치는 1 미만의 임의의 값이며, 예컨대 도 15의 단계 S308에서의 초기 가중치와 마찬가지로 0.5이어도 좋다.
이상과 같은 초기 가중치를 단계 S854에서 이용함으로써, 가중치 테이블(104-i)의 기존 엔트리에 반영되어 있는 학습 결과가 우선적으로 고려된다. 그 결과, 경로가 필요 이상으로 변동되는 일이 없어지고, 바꿔 말하면, 경로가 안정된다.
예컨대, 4개의 엔트리의 가중치 필드의 값이 각각 0.4, 0.7, 1 및 0.5인 상기 한 예에 있어서, 단계 S854에서 초기 가중치로서 도 15의 단계 S308과 마찬가지로 0.5가 사용된다고 한다. 그러면, 가중치의 학습이 이루어지지 않은 인접 노드 장치(즉, 단계 S853에서 추가된 신규 엔트리에 LD로서 노드 ID가 기록되어 있는 인접 노드 장치)가 가중치가 0.7인 인접 노드 장치보다도 우선적으로 LD로서 선택되어 버린다. 즉, 지금까지의 학습의 축적으로서의 가중치 0.7이 무시되어 버린다.
그래서, 제1 실시형태에서는, 가중치의 학습이 이루어지지 않은 인접 노드 장치가 가중치의 학습이 이루어진 인접 노드 장치보다도 우선적으로 LD로서 선택되는 것을 막아, 지금까지의 학습 결과를 우선적으로 고려하기 위해서, 상기한 바와 같이 정의되는 초기 가중치가 이용된다.
단계 S855에서 데이터 프레임 처리부(110)는 인접 노드 관리 테이블(103)에 아직 주목하지 않은 엔트리가 남아 있는지 여부를 판단한다. 데이터 프레임 처리부(110)가 인접 노드 관리 테이블(103)의 모든 엔트리에 다 주목했다면, 도 24의 처리는 종료된다. 한편, 아직 데이터 프레임 처리부(110)가 주목하지 않은 엔트리가 인접 노드 관리 테이블(103)에 남아 있으면, 처리는 단계 S856으로 이행한다.
그리고, 단계 S856에서 데이터 프레임 처리부(110)는 인접 노드 관리 테이블(103)의 아직 주목하지 않은 엔트리 중, 다음 엔트리에 주목한다. 그리고, 처리는 단계 S852로 되돌아간다.
한편, 도 24의 처리의 의의는 다음과 같다.
가중치 테이블(104-i)의 각 엔트리의 에이징 처리의 부작용으로서, 도 24의 처리 직전에는 다음과 같은 상황의 가능성도 있다. 즉, 인접 노드 관리 테이블(103)에 등록되어 있는 어느 인접 노드 장치의 노드 ID를 LD로서 갖는 엔트리가 가중치 테이블(104-i)에 존재하지 않을 가능성이 있다.
여기서, 노드 장치(100)의 인접 노드 장치는 데이터 프레임을 송신할 때에 데이터 프레임 처리부(110)가 선택하는 LD의 잠재적인 후보이다. 따라서, 히트된 가중치 테이블(104-i)의 LD 필드에 있어서 전체 인접 노드 장치가 망라되게 하는 것이 노드 장치(100)의 적절한 동작을 위해서는 바람직하다.
이상의 도 24의 가중치 테이블 조정 처리에 따르면, 에이징 처리의 부작용으로서 생길 가능성이 있는 상기와 같은 상황이 해소된다. 즉, 인접 노드 관리 테이블(103)에 등록되어 있는 모든 노드 ID가 히트된 가중치 테이블(104-i)에 LD로서 등록된 것이 보증된다.
이상, 도 20~도 24를 참조하여, 도 14의 단계 S205에서의 데이터 프레임 수신 처리에 관해서 자세히 설명했다. 계속해서, 데이터 프레임 수신 처리의 단계 S826 및 S837에 있어서의 송신 성공 여부 통지에 관련된 처리에 관해서, 도 25와 도 26을 참조하여 설명한다.
도 25는 도 14의 단계 S206에서의 ACK 프레임 수신 처리의 흐름도이다. 도 25의 처리는 프레임 분기 처리부(106)로부터 ACK 프레임이 ACK 처리부(107)에 출력되면 시작된다.
단계 S901에서 ACK 처리부(107)는 프레임 분기 처리부(106)로부터 수신된 ACK 프레임의 LD의 값이 자노드 ID와 같은지 여부를 판단한다. ACK 프레임의 LD의 값이 자노드 ID와 같으면, 처리는 단계 S902로 이행하고, ACK 프레임의 LD의 값이 자노드 ID와 다르면, 도 25의 처리는 종료된다. ACK 처리부(107)도, 예컨대 플래시 메모리(205) 등에 미리 저장된 자노드 ID를 참조할 수 있다.
예컨대, 도 6의 단계 S105에서 노드 장치 N4가 송신한 데이터 프레임에 대한 ACK 프레임을, 도 31에 단계 S105a로서 나타내는 바와 같이 노드 장치 N5가 송신하면, 무관계한 노드 장치 N3도 ACK 프레임을 수신한다. 왜냐하면, 노드 장치 N3은 노드 장치 N5에 인접해 있기 때문이다.
그러나, 노드 장치 N3의 ACK 처리부(107-N3)는 단계 S901의 판단 결과, 즉시 도 25의 처리를 종료하기 때문에, 노드 장치 N3은 노드 장치 N3과 무관계한 ACK 프레임에 의한 부작용을 받는 일은 없다.
단계 S902에서 ACK 처리부(107)는 ACK 프레임의 GS와 FID의 값으로부터 ACK 프레임에 대응하는 송신이 끝난 데이터 프레임을 특정한다.
예컨대, 도 6의 단계 S102에서 노드 장치 N2가 노드 장치 N3에 송신하는 도 7의 데이터 프레임(303)에 대하여, 노드 장치 N3은 도 7의 ACK 프레임(322)을 노드 장치 N2에 회신한다. 여기서, ACK 프레임(322)의 수신을 계기로 노드 장치 N2의 ACK 처리부(107-N2)가 도 25의 처리를 하는 경우에 관해서 자세히 설명하면, 다음과 같다.
ACK 처리부(107-N2)는 단계 S902에서, ACK 프레임(322)의 GS와 FID의 값(즉, N1과 Fa)을 취득한다. 또한, 버퍼부(109-N2)는 도 8과 같은 형식이므로, 버퍼부(109-N2)에는, 노드 장치 N2로부터 송신된 데이터 프레임(303)이 저장된다. 따라서, ACK 처리부(107-N2)는 추출된 GS와 FID의 값(즉, N1과 Fa)을 키로 하여 버퍼부(109-N2)의 엔트리를 검색하여, 데이터 프레임(303)을 포함하는 엔트리를 특정한다.
계속해서, 단계 S903에서 ACK 처리부(107)는 단계 S902에서 특정된 송신이 끝난 데이터 프레임을 버퍼부(109)로부터 삭제한다. 즉, 단계 S902의 검색에서 발견된 엔트리를 ACK 처리부(107)는 버퍼부(109)로부터 삭제한다.
또한, 단계 S904에서 ACK 처리부(107)는 단계 S902에서 특정된 송신이 끝난 데이터 프레임에 관해서, 데이터 프레임 처리부(110)에 「송신 성공」을 통지한다. 그리고, 도 25의 처리는 종료한다.
예컨대, 데이터 프레임 처리부(110)는 도 4의 MPU(201)가 프로그램을 실행함으로써 실현되어도 좋다. 그 경우, MPU(201)를 데이터 프레임 처리부(110)로서 기능시키는 스레드는 데이터 프레임의 송신 후, ACK 프레임을 수신할 때까지 슬립해 있어도 좋다. 단계 S904에 있어서의 「송신 성공」의 통지는 슬립해 있는 스레드를 일으키는 처리이다.
한편, 단계 S904의 통지는 단계 S902에서 특정된 데이터 프레임의 GS와 FID의 값의 통지를 동반한다. 예컨대, 상기한 예에서, ACK 처리부(107-N2)는 데이터 프레임(303)을 식별하기 위한 GS와 FID의 값(즉, N1과 Fa)도 데이터 프레임 처리부(110)에 통지한다.
도 26은 ACK 프레임이 타임아웃 시각까지 수신되지 않는 경우의 처리를 도시하는 흐름도이다. 도 26의 처리는, 예컨대 도 4의 타이머 IC(203)가 정해진 간격으로 발생시키는 인터럽트 신호를 계기로 하여 정기적으로 이루어진다.
단계 S1001에서 ACK 처리부(107)는 버퍼부(109)(도 8을 참조)의 1번째 엔트리에 주목한다. 이하, 도 26에 관한 설명에서는, ACK 처리부(107)가 주목하는 버퍼부(109)의 엔트리를 「주목 엔트리」라고 한다.
이어서 단계 S1002에서 ACK 처리부(107)는 현재 시각과 주목 엔트리의 타임아웃 시각 필드의 값을 비교한다. 그리고, 현재 시각이 타임아웃 시각 이후라면, 처리는 단계 S1003으로 이행한다. 한편, 현재 시각이 아직 타임아웃 시각에 도달하지 않으면, 처리는 단계 S1005로 이행한다.
단계 S1003에서 ACK 처리부(107)는 버퍼부(109)의 주목 엔트리에 저장되어 있는 데이터 프레임에 관해서, 「송신 실패」를 데이터 프레임 처리부(110)에 통지한다. 단계 S1003의 통지는 도 25의 단계 S904의 통지와 마찬가지로, 구체적으로는, 예컨대 슬립해 있는 스레드를 일으키는 처리일 수도 있다.
또한, 단계 S904의 통지와 마찬가지로, 단계 S1003의 통지도 데이터 프레임의 GS와 FID의 값의 통지를 동반한다. 구체적으로는, ACK 처리부(107)는 주목 엔트리에 저장되어 있는 데이터 프레임의 GS와 FID의 값을 읽어내고, 읽어낸 GS와 FID의 값에 따라 데이터 프레임을 특정하여, 특정된 데이터 프레임의 「송신 실패」를 데이터 프레임 처리부(110)에 통지한다.
한편, 송신 실패인 경우, 데이터 프레임 처리부(110)가 지금까지 LD로서 시도하지 않은 인접 노드 장치를 새로운 LD로서 선택하여 데이터 프레임의 재송신을 시도하는 경우가 있다. 따라서, 단계 S1003의 시점에서는, 주목 엔트리는 버퍼부(109)로부터 삭제되지 않는다.
계속해서 단계 S1004에서 ACK 처리부(107)는 주목 엔트리의 타임아웃 시각에, 식 (5)의 시각 Ttimeout을 설정한다. 그리고, 처리는 단계 S1005로 이행한다.
단계 S1005에서는, 아직 주목하지 않은 엔트리가 버퍼부(109)에 남아 있는지 여부를 ACK 처리부(107)가 판단한다. ACK 처리부(107)가 버퍼부(109)의 모든 엔트리에 다 주목했으면, 도 26의 처리는 종료된다. 한편, 아직 ACK 처리부(107)가 주목하지 않은 엔트리가 버퍼부(109)에 남아 있으면, 처리는 단계 S1006으로 이행한다.
단계 S1006에서 ACK 처리부(107)는 버퍼부(109) 중에 아직 주목하지 않은 다음 엔트리에 주목한다. 그리고, 처리는 단계 S1002로 되돌아간다.
그런데, 도 20~도 23을 참조하여 설명한 데이터 프레임 수신 처리는 상기한 바와 같이, 노드 장치(100)가 GS가 되지 않는 타입의 노드 장치인 경우의 예이다. 이하에서는, 도 27~도 29를 참조하여, GS가 될 수 있는 타입의 노드 장치 특유의 처리에 관해서 설명한다.
도 27과 도 28은 노드 장치(100)가 GS가 되어 데이터 프레임을 송신하는 경우의 송신 처리의 흐름도이다. 도 27의 처리는 상위층 처리부(111)로부터 데이터 프레임 처리부(110)로의 요구를 계기로 하여 시작된다.
단계 S1101에서 데이터 프레임 처리부(110)는 상위층 처리부(111)로부터, 상위층 처리부(111)에서의 상위층의 프로토콜의 처리 결과로서, 데이터 프레임의 GD의 값과 페이로드를 취득한다.
예컨대, 「상위층의 프로토콜」이 이더넷 프로토콜일 수도 있다. 그 경우, 상위층 처리부(111)는 제1 실시형태에서 정의되는 데이터 프레임의 페이로드로서, 이더넷 프레임을 데이터 프레임 처리부(110)에 출력한다. 또한, 상위층 처리부(111)는 제1 실시형태에서의 데이터 프레임의 GD에 설정하는 값을 데이터 프레임 처리부(110)에 통지한다.
그리고, 데이터 프레임 처리부(110)는 상위층 처리부(111)로부터 취득된 페이로드를 포함하는 새로운 데이터 프레임을 작성하여, 작성된 데이터 프레임의 GD에 상위층 처리부(111)로부터 취득한 값을 설정한다. 예컨대, 도 6의 예에서는, 노드 장치 N1의 데이터 프레임 처리부(110-N1)는 상위층 처리부(111-N1)로부터 GD의 값으로서 N7을 취득하여, 데이터 프레임의 GD에 N7로 설정한다.
계속해서, 단계 S1102에서 데이터 프레임 처리부(110)는 단계 S1101에서 취득한 페이로드의 길이를 구하여, 작성된 데이터 프레임의 길이 필드에 설정한다. 예컨대, 도 6의 예에서는, 도 7의 데이터 프레임(302와 303)에 예시하는 바와 같이, 페이로드의 길이는 Pa이므로, 노드 장치 N1의 데이터 프레임 처리부(110-N1)는 작성된 데이터 프레임의 길이 필드에 Pa로 설정한다.
그리고, 단계 S1103에서 데이터 프레임 처리부(110)는 작성된 데이터 프레임의 GS와 LS에 자노드 ID를 설정한다. 예컨대, 도 6의 예에서는, 노드 장치 N1의 데이터 프레임 처리부(110-N1)는 작성된 데이터 프레임의 GS와 LS에 각각 N1로 설정한다.
그리고, 단계 S1104에서 데이터 프레임 처리부(110)는 FID 생성부(113)에 새로운 FID의 생성을 요구한다. 그러면 FID 생성부(113)가 새로운 FID를 생성하여 데이터 프레임 처리부(110)에 출력하기 때문에, 데이터 프레임 처리부(110)는 생성된 FID를 작성된 데이터 프레임의 FID 필드에 설정한다.
더욱이, 단계 S1105에서 데이터 프레임 처리부(110)는 「데이터 프레임」을 나타내는 정해진 값 D(도 7을 참조)를, 작성된 데이터 프레임의 타입 필드에 설정한다. 한편, 이상의 단계 S1102~S1105의 실행 순서는 무순서이다.
이상과 같이 하여, 송신하는 데이터 프레임을 다 작성하면, 단계 S1106에서 데이터 프레임 처리부(110)는 작성된 데이터 프레임을 버퍼부(109)에 저장한다. 즉, 데이터 프레임 처리부(110)는 버퍼부(109) 내에 새로운 엔트리의 영역을 확보하고, 확보한 영역에, 작성된 데이터 프레임을 저장한다. 한편, 도 8에 도시하는 바와 같이 버퍼부(109)에는 타임아웃 시각 필드가 있지만, 이 시점에서는 타임아웃 시각은 설정되지 않는다.
계속해서 단계 S1107에서 데이터 프레임 처리부(110)는 단계 S1101에서 상위층 처리부(111)로부터 지정된 GD의 값을 이용하여 가중치 테이블(104)을 검색한다.
그리고, 단계 S1108에서 데이터 프레임 처리부(110)는 지정된 GD의 값에 대응하는 가중치 테이블이 단계 S1107의 검색 결과로서 히트되었는지 여부를 판단한다. 지정된 GD의 값에 대응하는 가중치 테이블이 히트된 경우, 처리는 단계 S1108a로 이행하고, 지정된 GD의 값에 대응하는 가중치 테이블이 존재하지 않는 경우, 처리는 단계 S1009로 이행한다.
단계 S1108a에서 데이터 프레임 처리부(110)는 도 24의 가중치 테이블 조정 처리를 하여, 에이징 처리의 부작용을 중화한다. 그리고, 처리는 단계 S1110으로 이행한다.
단계 S1109에서 데이터 프레임 처리부(110)는 단계 S1101에서 지정된 GD의 값에 대응하는 신규 가중치 테이블을 가중치 테이블(104) 중에 추가한다. 구체적으로는, 도 21의 단계 S813~S816과 유사한 처리를 데이터 프레임 처리부(110)는 단계 S1109에서 수행한다.
즉, 데이터 프레임 처리부(110)는 단계 S1109에서, 상위층 처리부(111)로부터 지정된 GD의 값에 대응하는 신규 가중치 테이블을 추가하여, 신규 가중치 테이블에 있어서, 상위층 처리부(111)로부터 지정된 GD의 값을 GD로서 설정한다. 더욱이, 데이터 프레임 처리부(110)는 인접 노드 관리 테이블(103)과 동수의 신규 엔트리를 신규 가중치 테이블 내에 작성한다. 그리고, 데이터 프레임 처리부(110)는 작성된 각 엔트리에, 각각 인접 노드 관리 테이블(103)의 각 엔트리의 노드 ID와 초기 가중치와 현재 시각을 설정한다.
한편, 이하에서는 설명의 편의상, 단계 S1101에서 지정된 GD의 값에 대응하는 가중치 테이블을 「104-i」이라는 참조 부호로 참조한다. 즉, 가중치 테이블(104-i)은 단계 S1107의 검색에서 히트된 테이블 또는 단계 S1109에서 추가된 테이블이다.
이상과 같이 하여, 가중치 테이블(104-i)이 히트되었다고 단계 S1108에서 판단된 후, 또는 단계 S1109에서 가중치 테이블(104-i)이 작성된 후, 처리는 단계 S1110으로 이행한다.
그리고, 단계 S1110에서 데이터 프레임 처리부(110)는 상위층 처리부(111)로부터 지정된 GD의 값에 대응하는 가중치 테이블(104-i)에 있어서, 최소의 가중치와 대응시켜져 있는 LD의 값을 취득한다. 한편, 도 11에 예시하는 바와 같이, 가중치 테이블(104-i)에 있어서 복수의 엔트리가 동일한 최소의 가중치를 갖는 경우도 있을 수 있다. 그 경우, 데이터 프레임 처리부(110)는 최소의 가중치와 대응시켜져 있는 복수의 LD의 값 중 임의의 하나를 단계 S1110에서 선택하여 취득한다. 데이터 프레임 처리부(110)는 취득된 LD의 값 및 대응하는 가중치를, 예컨대 도 4의 DRAM(204) 등의 기억 영역에 기억한다.
계속해서, 처리는 도 28의 단계 S1111로 이행하여, 단계 S1111에서 데이터 프레임 처리부(110)는 하기의 2개의 조건 (L1)과 (L2) 중 어느 것이 성립하는지 여부를 판단한다.
(L1) 단계 S1110에서 취득한 LD의 값에 대응하는 가중치가 가중치의 최대치(제1 실시형태에서는, 구체적으로는 1.0)이다.
(L2) 가중치 테이블(104-i)에 등록되어 있는 모든 LD에의 송신이 모두 실패했다.
조건 (L1) 또는 (L2)가 성립하는 경우, 이제는 LD로서 선택 가능한 인접 노드 장치는 남아 있지 않기 때문에, 처리는 단계 S1112로 이행한다.
한편, 조건 (L1)과 (L2) 중 어느 것도 성립하지 않는 경우, 아직 LD로서 선택 가능한 인접 노드 장치가 남아 있다. 바꿔 말하면, 데이터 프레임 수신 처리의 단계 S818에 관해서 설명한 (G1)~(G3) 중 어디에도 해당하지 않는 인접 노드 장치가 적어도 하나는 존재한다. 그리고, LD로서 선택 가능한 인접 노드 장치의 노드 ID가 단계 S1110(또는 후술하는 단계 S1125)에서 취득된다. 그래서, 단계 S1111에서 조건 (L1)과 (L2) 중 어느 것도 성립하지 않는다고 판단되면, 처리는 단계 S1114로 이행한다.
조건 (L1) 또는 (L2)가 성립하는 경우, 단계 S1112에서 데이터 프레임 처리부(110)는 데이터 프레임을 파기한다. 즉, 데이터 프레임 처리부(110)는 단계 S1106에서 새롭게 작성하여 데이터 프레임을 저장한 엔트리를 버퍼부(109)로부터 삭제한다.
그리고, 계속되는 단계 S1113에서 데이터 프레임 처리부(110)는 상위층 처리부(111)에 「송신 실패」를 통지한다. 즉, 데이터 프레임 처리부(110)는, 어떤 인접 노드 장치에도 데이터 프레임을 성공적으로 송신할 수는 없었음을 상위층 처리부(111)에 통지한다. 그리고 도 27~도 28의 처리가 종료된다.
한편, 단계 S1111에 있어서, 조건 (L1)과 (L2) 중 어느 것도 성립하지 않는다고 판단되면, 취득된 LD의 값으로 식별되는 인접 노드 장치에의 데이터 프레임의 전송을 시도하는 처리가 단계 S1114~S1125에서 이루어진다.
단계 S1114에서, 데이터 프레임 처리부(110)는 단계 S1106에서 버퍼부(109)에 저장한 데이터 프레임의 LD에, 단계 S1110 또는 후술하는 단계 S1125에서 취득한 LD의 값을 설정한다. 그리고, 데이터 프레임 처리부(110)는 LD의 값을 설정한 데이터 프레임의 송신을 송신부(102)에 의뢰한다. 그러면, 송신부(102)가 데이터 프레임을 송신한다.
이어서 단계 S1115에서, 데이터 프레임 처리부(110)는 단계 S1106에서 데이터 프레임을 저장한 버퍼부(109) 내의 엔트리의 타임아웃 시각에, 식 (5)의 시각 Ttimeout을 설정한다.
그리고, 단계 S1116에서 데이터 프레임 처리부(110)는 자노드 ID와, 단계 S1104에서 FID 생성부(113)가 생성한 FID를 사용하여 FID 관리 테이블(105)을 검색한다.
이어서 단계 S1117에서 데이터 프레임 처리부(110)는 단계 S1116의 FID 관리 테이블(105)의 검색에 있어서 엔트리가 히트되었는지 여부를 판단한다. 한편, 단계 S1117이 1번째로 실행되는 경우에는 「엔트리가 히트되지 않았다」고 판단되고, 단계 S1117이 2번째 이후에 실행될 때는 「엔트리가 히트되었다」고 판단된다.
단계 S1116의 검색에서 엔트리가 히트되면, 처리는 단계 S1118로 이행한다. 한편, 단계 S1116의 검색에서 엔트리가 히트되지 않으면, 처리는 단계 S1119로 이행한다.
단계 S1118에서 데이터 프레임 처리부(110)는 단계 S1116의 검색에서 히트된 엔트리를 갱신한다. 구체적으로는, 데이터 프레임 처리부(110)는 단계 S1116의 검색에서 히트된 엔트리에 있어서, LD 필드에는 단계 S1114에서 송신한 데이터 프레임의 LD의 값을 설정하고, 최종 갱신 시각 필드에는 현재 시각을 설정한다. 그리고, 처리는 단계 S1121로 이행한다.
또한, 단계 S1119에서 데이터 프레임 처리부(110)는 FID 관리 테이블(105)에 신규 엔트리를 추가한다.
그리고, 다음 단계 S1120에서 데이터 프레임 처리부(110)는 신규 엔트리에 값을 설정한다. 구체적으로, 데이터 프레임 처리부(110)는 신규 엔트리에 있어서, FID와 GS와 LD의 각 필드에는, 각각 단계 S1114에서 송신한 데이터 프레임의 값을 카피한다. 또한, 데이터 프레임 처리부(110)는 신규 엔트리에 있어서, 최종 갱신 시각 필드에는 현재 시각을 설정하고, OLS 필드에는 자노드 ID를 카피한다.
예컨대, 도 12에 도시한, 노드 장치 N1의 FID 관리 테이블(105-N1)의 엔트리 E1은 노드 장치 N1의 데이터 프레임 처리부(110-N1)가 이상의 처리에 의해 작성한 것이다.
단계 S1121에서 데이터 프레임 처리부(110)는 단계 S1114에서의 송신 성공 여부의 통지를 대기한다. 단계 S1121의 상세한 내용은 도 22의 단계 S825와 마찬가지다. 데이터 프레임 처리부(110)가 단계 S1121에서의 대기 후, ACK 처리부(107)로부터 「송신 성공」 또는 「송신 실패」를 통지받으면, 처리는 단계 S1122로 이행한다.
단계 S1122에서 데이터 프레임 처리부(110)는 ACK 처리부(107)로부터 받은 통지에 기초하여, 단계 S1114의 송신이 성공했는지 여부를 판단한다. 송신이 성공한 경우, 처리는 단계 S1123으로 이행하고, 송신이 실패한 경우, 처리는 단계 S1124로 이행한다.
송신이 성공한 경우, 단계 S1123에서 데이터 프레임 처리부(110)는 가중치 테이블(104)에 있어서, 단계 S1114에서 송신한 데이터 프레임의 GD와 LD의 조합에 대응하는 가중치를 작게 한다.
즉, 데이터 프레임 처리부(110)는 상위층 처리부(111)로부터 지정된 GD의 값에 대응하는 가중치 테이블(104-i)에 있어서, 송신한 데이터 프레임의 LD에 대응하는 가중치를, 예컨대 식 (6)을 사용하여 갱신한다. 데이터 프레임 처리부(110)는 또한, 가중치 테이블(104-i)의, 가중치를 갱신한 엔트리에 있어서, 최종 갱신 시각에 현재 시각을 설정한다. 그리고, 도 27~도 28의 처리는 종료된다.
반대로, 송신이 실패한 경우, 단계 S1124에서 데이터 프레임 처리부(110)는 가중치 테이블(104)에 있어서, 단계 S1114에서 송신한 데이터 프레임의 GD와 LD의 조합에 대응하는 가중치를 크게 한다.
즉, 데이터 프레임 처리부(110)는 상위층 처리부(111)로부터 지정된 GD의 값에 대응하는 가중치 테이블(104-i)에 있어서, 송신한 데이터 프레임의 LD에 대응하는 가중치를 예컨대 식 (7)을 사용하여 갱신한다.
한편, 데이터 프레임 처리부(110)는 단계 S1124에서 또한, 송신한 데이터 프레임의 LD의 값을, 예컨대 도 4의 DRAM(204) 등의 작업 영역에 「송신에 실패한 LD」로서 기억한다. 도 22의 단계 S828과 마찬가지로, 「송신에 실패한 LD」의 기억을 위해서는, 선형 리스트나 배열 등의 데이터 구조가 이용될 수도 있다.
또한, 데이터 프레임 처리부(110)는 단계 S1124에서 또한, 가중치 테이블(104-i)의, 가중치를 갱신한 엔트리에 있어서, 최종 갱신 시각에 현재 시각을 설정한다. 그리고, 처리는 단계 S1125로 이행한다.
단계 S1125에서 데이터 프레임 처리부(110)는 지금까지의 LD로서 시도되지 않은 다른 선택 가능한 인접 노드 장치를 찾는다. 구체적으로는, 데이터 프레임 처리부(110)는 상위층 처리부(111)로부터 지정된 GD의 값에 대응하는 가중치 테이블(104-i)에 있어서, 송신에 실패한 LD 이외의 LD 중에, 최소의 가중치와 대응시켜져 있는 LD의 값을 취득한다. 여기서, 송신에 실패한 LD는 단계 S1124에서, 예컨대 도 4의 DRAM(204) 등의 작업 영역에, 예컨대 선형 리스트나 배열의 형태로 기억된다.
즉, 데이터 프레임 처리부(110)는 가중치 테이블(104-i)에 있어서, 과거에 단계 S1110 또는 S1125에서 취득되지 않은 LD의 값 중에서, 최소의 가중치와 대응시켜져 있는 것을 취득한다. 데이터 프레임 처리부(110)는 취득된 LD의 값 및 대응하는 가중치를, 예컨대 도 4의 DRAM(204) 등의 기억 영역에 기억한다. 그리고, 처리는 단계 S1111로 되돌아간다.
그런데, 도 29는 GS가 될 수 있는 노드 장치(100)가 데이터 프레임 수신 처리의 일부로서 도 23의 처리 대신에 실행하는 처리의 흐름도이다.
노드 장치(100)가 GS가 될 수 있는 타입의 장치인 경우, 데이터 프레임 수신 처리에 있어서의 단계 S801~S829는 노드 장치(100)가 중계 전용인 경우와 마찬가지로, 도 20~도 22에 도시한 대로이다. 그러나, 노드 장치(100)가 GS가 될 수 있는 타입의 장치인 경우는, 도 22의 단계 S818에서 데이터 프레임 처리부(110)가 「조건 (F1)과 (F2) 중 어느 것이 성립한다」고 판단하면, 처리는 도 29의 단계 S830a로 이행한다.
단계 S830a에서 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 GS의 값이 자노드 ID인지 여부를 판단한다. 수신된 데이터 프레임의 GS의 값이 자노드 ID와 다르면, 처리는 단계 S830b로 이행하고, 수신된 데이터 프레임의 GS의 값이 자노드 ID라면, 처리는 단계 S830c로 이행한다.
단계 S830b에서 데이터 프레임 처리부(110)는 다음과 같이 하여 새로운 데이터 프레임을 작성하여 송신부(102)에 출력하고, 작성된 데이터 프레임을 송신부(102)가 송신한다.
구체적으로는, 데이터 프레임 처리부(110)는 단계 S808 또는 S810에서 기억한 OLS의 값을 새로운 데이터 프레임의 LD로 지정하고, 자노드 ID를 새로운 데이터 프레임의 LS로 지정한다. 또한, 데이터 프레임 처리부(110)는 수신된 데이터 프레임으로부터 GD, GS, FID, 타입, 길이의 각 필드의 값과 페이로드를 새로운 데이터 프레임에 카피한다. 데이터 프레임의 송신 후, 처리는 단계 S831a로 이행한다.
또한, 단계 S830c에서는, 데이터 프레임 처리부(110)는 상위층 처리부(111)에 「송신 실패」를 통지한다. 통지함에 있어서, 데이터 프레임 처리부(110)는, 예컨대 수신한 데이터 프레임으로부터 페이로드를 추출하여, 페이로드 또는 페이로드의 일부를 상p num="0613">단계 S830b에서 데이터 프레임 처리부(110)는 다음과 같이 하여 새로운 데이터 프레임을 작성하여 송신부(102)에 출력하고, 작성된 데이터 프레임을 송신부(102)가 송신한다.
구체적으로는, 데이터 프레임 처리부(110)는 단계 S808 또는 S810에서 기억한 OLS의 값을 새로운 데이터 프레임의 LD로 지정하고, 자노드 ID를 새로운 데이터 프레임의 LS로 지정한다. 또한, 데이터 프레임 처리부(110)는 수신된 데이터 프레임으로부터 GD, GS, FID, 타입, 길이의 각 필드의 값과 페이로드를 새로운 데이터 프레임에 카피한다. 데이터 프레임의 송신 후, 처리는 단계 S831a로 이행한다.
또한, 단계 S830c에서는, 데이터 프레임 처리부(110)는 상위층 처리부(111)에 「송신 실패」를 통지한다. 통지함에 있어서, 데이터 프레임 처리부(110)는, 예컨대 수신한 데이터 프레임으로부터 페이로드를 추출하여, 페이로드 또는 페이로드의 일부를 상위층 처리부(111)에 출력하여도 좋다. 그러면, 상위층 처리부(111)는 어떤 데이터의 송신에 실패한 것인지를 데이터 프레임 처리부(110)로부터 수신한 페이로드의 내용에 기초하여 인식할 수 있다. 송신 실패 통지 후, 처리는 단계 S838a로 이행한다.
그런데, 단계 S831a에서는, 데이터 프레임 처리부(110)가 수신된 데이터 프레임의 FID와 GS의 값을 검색 키로서 이용하여 FID 관리 테이블(105)을 검색한다. 한편, 이하의 단계 S831a~S839a는 각각 도 23의 단계 S831~S839와 유사한 단계이다.
다음 단계 S832a에서 데이터 프레임 처리부(110)는 단계 S831a의 검색 결과, 엔트리가 히트되었는지 여부를 판단한다. 엔트리가 히트되면 처리는 단계 S833a로 이행하고, 엔트리가 히트되지 않으면 처리는 단계 S834a로 이행한다.
또, 단계 S807에서 「엔트리가 히트되었다」고 판단되는 경우에, 단계 S831a의 검색 결과 발견되는 엔트리는 단계 S806의 검색 결과 발견된 엔트리이다. 또한, 단계 S807에서 「엔트리가 히트되지 않았다」고 판정되고, 또 단계 S823에서 신규 엔트리가 작성된 경우는 단계 S831a의 검색 결과, 단계 S823에서 작성된 신규 엔트리가 발견된다.
단계 S832a에서 「엔트리가 히트되지 않았다」고 판단되는 것은 (M1)과 (M2)의 경우이다.
(M1) 단계 S807에서 「엔트리가 히트되지 않았다」고 판단되었다.
(M2) 1번째로 단계 S818이 실행된 직후에, 단계 S830a로 처리가 이행했다.
단계 S833a에서 데이터 프레임 처리부(110)는 단계 S831a의 검색 결과 히트된 엔트리를 갱신한다. 구체적으로는, 데이터 프레임 처리부(110)는 히트된 엔트리에 있어서, LD에는 히트된 엔트리 자신의 OLS의 값을 카피하고, 최종 갱신 시각에는 현재 시각을 설정한다. 그리고, 처리는 단계 S836a로 이행한다.
한편, 단계 S834a에서는, 데이터 프레임 처리부(110)는 FID 관리 테이블(105)에 신규 엔트리를 추가한다.
그리고, 다음 단계 S835a에서 데이터 프레임 처리부(110)는 단계 S834a에서 추가한 신규 엔트리에 값을 설정한다. 구체적으로는, 데이터 프레임 처리부(110)는 신규 엔트리에 있어서, FID와 GS에는 수신된 데이터 프레임의 값을 각각 카피하고, 최종 갱신 시각에는 현재 시각을 설정하고, OLS와 LD에는 수신된 데이터 프레임의 LS의 값을 카피한다. 그리고, 처리는 단계 S836a로 이행한다.
단계 S836a에서 데이터 프레임 처리부(110)는 단계 S830b에서 송신한 데이터 프레임에 관한 송신 성공 여부의 통지를 대기한다. 그리고, 「송신 성공」 또는 「송신 실패」의 통지를 데이터 프레임 처리부(110)가 ACK 처리부(107)로부터 받으면, 처리는 단계 S837a로 이행한다.
단계 S837a에서 데이터 프레임 처리부(110)는 단계 S830b에서의 데이터 프레임 송신이 성공했는지 여부를 판단한다. 송신이 실패한 경우, 처리는 단계 S838a로 이행하고, 송신이 성공한 경우, 처리는 단계 S839a로 이행한다.
단계 S838a가 실행되는 것은 (N1)과 (N2)의 경우이다.
(N1) 노드 장치(100) 자신이 GS가 되어 송신한 데이터 프레임이 백트랙에 의해 노드 장치(100)로 되돌아가 수신된 것이며, 또한, 노드 장치(100)의 인접 노드 장치는 전부 (N1-1) 또는 (N1-2)이다.
(N1-1) 최대치의 가중치와 대응시켜져 있다.
(N1-2) LD로서 지정하여 데이터 프레임을 송신하면, 송신에 실패한다.
(N2) 수신한 데이터 프레임의 GS는 노드 장치(100) 이외의 다른 노드 장치이며, 또 OLS 이외의 모든 인접 노드 장치가 (N2-1) 또는 (N2-2)이고, 또 OLS로의 데이터 프레임의 송신은 실패했다.
(N2-1) 최대치의 가중치와 대응시켜져 있다.
(N2-2) LD로서 지정하여 데이터 프레임을 송신하면, 송신에 실패한다.
이 경우, 데이터 프레임 처리부(110)는 단계 S838a에서, 수신한 데이터 프레임을 파기한다. 즉, 데이터 프레임 처리부(110)는 단계 S801에서 찾아낸 엔트리를 버퍼부(109)로부터 삭제한다. 그리고, 데이터 프레임 수신 처리는 종료된다.
한편, 단계 S839a는 노드 장치(100)가 아닌 별도의 노드 장치가 GS인 데이터 프레임에 관해서, 노드 장치(100)로부터 노드 장치(100)의 OLS로의 송신이 성공한 경우에 실행된다. 단계 S839a에서 데이터 프레임 처리부(110)는 가중치 테이블(104)에 있어서, 단계 S830b에서 송신한 데이터 프레임의 GD와 LD의 조합에 대응하는 가중치를 작게 한다. 바꿔 말하면, 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 GD에 대응하는 가중치 테이블(104-i)에 있어서, 송신한 데이터 프레임의 LD(즉, 단계 S808 또는 S810에서 기억한 OLS)에 대응하는 가중치를 갱신한다.
예컨대, 단계 S829나 S839와 마찬가지로, 데이터 프레임 처리부(110)는 식 (6)을 사용하여 가중치를 갱신하여도 좋다. 데이터 프레임 처리부(110)는 또한, 가중치 테이블(104-i)의, 가중치를 갱신한 엔트리에 있어서, 최종 갱신 시각에 현재 시각을 설정한다. 그리고, 데이터 프레임 수신 처리는 종료된다.
계속해서, 이상의 상세한 설명을 근거로 하여, 재차 도 6의 예에 관해서 설명한다.
도 30은 경로를 탐색하기 위한 탐색 공간을 나타내는 탐색 트리의 형식으로, 도 6에 있어서의 경로 선택을 설명하는 도면이다. 인공 지능 분야에서는, 탐색 공간은 종종 탐색 트리의 형식으로 표현된다. 도 30은 제1 실시형태에 있어서의 데이터 프레임의 전송을, 네트워크 내에서 동적으로 이루어지는 경로 탐색이라는 관점에서 보아, 탐색 공간을 탐색 트리(400)로서 표현한 도면이다. 한편, 탐색 트리(400)는 노드 장치 내에 작성되는 데이터 구조가 아니며, 네트워크 토폴로지 그 자체도 아니다.
탐색 트리(400)에 포함되는 각 탐색 노드에는, 네트워크(1) 내의 노드 장치의 노드 ID의 라벨이 붙여질 수 있다. 한편, 도 30에서는, 각 탐색 노드를, 원, 정방형, 육각형의 3종류의 도형으로 나타내고 있는데, 원, 정방형, 육각형의 의미 차이에 대해서는 후술한다.
또한, 도 6의 예에서는, 데이터 프레임의 GS와 GD는 각각 노드 장치 N1과 N7이기 때문에, 탐색 트리(400)의 루트 노드는 N1이라는 라벨이 붙여진 탐색 노드(401)이다. 그리고, 경로 탐색의 목표는 탐색 트리(400)에 있어서 N7이라는 라벨이 붙어진 탐색 노드(409)를 발견하는 것이다.
여기서, 도 6의 네트워크(1)에 있어서 노드 장치 Ni와 Nj가 인접해 있으면(1≤i, j≤7), 노드 장치 Ni에 있어서 인접 노드 장치 Nj는 잠재적인 LD의 후보이며, 노드 장치 Nj에 있어서도 인접 노드 장치 Ni는 잠재적인 LD의 후보이다. 따라서, 탐색 트리(400) 내에서, Ni라는 라벨이 붙여진 탐색 노드는 Nj라는 라벨이 붙여진 탐색 노드를 자식 노드로서 갖는다.
따라서, 탐색 트리(400)에서는, Ni라는 라벨이 붙여진 제1 탐색 노드가 Nj라는 라벨이 붙여진 제2 탐색 노드를 자식 노드로서 갖고, 제2 탐색 노드가 Ni라는 라벨이 붙여진 제3 탐색 노드를 자식 노드로서 갖는다. 이하 마찬가지이므로, 탐색 트리(400)는 잠재적으로는 무한한 탐색 노드를 갖는다.
잠재적으로는 무한하게 큰 탐색 트리(400)의 탐색에서는, 탐색 공간의 가자치기(pruning)가 이루어지면서, 깊이 우선 탐색이 이루어진다. 「탐색 공간의 가지치기」란, 탐색 효율을 높이기 위해서 탐색 트리의 하나 이상의 가지를 무시하는 기법이며, 탐색 알고리즘의 연구 분야에서는, 응용 분야에 따라서 여러 가지 가지치기 수법이 제안되고 있다.
제1 실시형태의 노드 장치(100)의 자율 분산 협조 결과로서의 가지치기에는 2 종류가 있다. 이하, 편의적으로 「제1종의 가지치기」와 「제2종의 가지치기」라고 부른다.
제1종의 가지치기는 부모 노드와 동일한 라벨을 갖는 자식 노드의 가지치기이다. 예컨대, 상기한 제1~제3 탐색 노드의 예에서는, 제2 탐색 노드의 자식 노드인 제3 탐색 노드의 라벨은 제2 탐색 노드의 부모 노드인 제1 탐색 노드의 라벨과 같다. 그래서, 제2 탐색 노드로부터 앞의 탐색에서는, 제3 탐색 노드가 가지치기된다. 제1종의 가지치기에 의해서 가지치기되는 탐색 노드는, 도 30에 있어서 정방형으로 표시된다.
제2종의 가지치기는 선조 노드와 동일한 라벨을 갖는 자식 노드의 가지치기이다. 제2종의 가지치기는 제1 실시형태의 FID 관리 테이블(105)에 의해서 가능하게 된다. 제2종의 가지치기에 의해서 가지치기되는 탐색 노드는 도 30에 있어서 육각형으로 표시된다.
한편, 도 30에 있어서 원은 가지치기하지 않고서 탐색된 탐색 노드를 나타낸다.
이하, 구체적으로 도 6의 예와 탐색 트리(400)의 관계에 관해서 설명한다.
상기한 바와 같이, 탐색 트리(400)의 루트 노드인 탐색 노드(401)의 라벨은 데이터 프레임의 GS인 노드 장치 N1의 노드 ID·N1이다. 그리고, 네트워크(1)에 있어서 노드 장치 N1에는 노드 장치 N2만이 인접해 있기 때문에, 탐색 노드(401)는 하나의 탐색 노드(402)만을 자식 노드로서 갖고, 탐색 노드(402)의 라벨은 N2이다.
또한, 노드 장치 N1에는 노드 장치 N2만이 인접해 있기 때문에, 도 6의 단계 S101과 같이, 데이터 프레임이 노드 장치 N1로부터 노드 장치 N2로 송신된다. 단계 S101의 송신은 도 30에서는, 탐색 노드(401)로부터 탐색 노드(402)로 탐색이 진행하는 것에 대응한다.
그리고, 네트워크(1)에 있어서 노드 장치 N2에는, 노드 장치 N1과 N3과 N6이 인접해 있다. 따라서, 탐색 노드(402)는 3개의 탐색 노드(403과 404와 405)를 자식 노드로서 갖고, 탐색 노드(403과 404와 405) 각각의 라벨은 N3과 N6과 N1이다.
도 6에 있어서 노드 장치 N2가 최초로 노드 장치 N3을 LD로서 선택하여 단계 S102에서 노드 장치 N3에 데이터 프레임을 송신하는 것은, 도 30에서는 탐색 노드(402)에서 탐색 노드(403)로 탐색이 진행하는 것에 대응한다.
그리고, 네트워크(1)에 있어서 노드 장치 N3에는 노드 장치 N2와 N4와 N5가 인접해 있다. 따라서, 탐색 노드(403)는 3개의 탐색 노드(406, 407 및 408)를 자식 노드로서 갖고, 탐색 노드(406, 407 및 408) 각각의 라벨은 N4와 N2와 N5이다.
도 6에 있어서 노드 장치 N3이 최초로 노드 장치 N4를 LD로서 선택하여, 단계 S103에서 노드 장치 N4에 데이터 프레임을 송신하는 것은, 도 30에서는 탐색 노드(403)에서 탐색 노드(406)로 탐색이 진행하는 것에 대응한다.
그리고, 네트워크(1)에 있어서 노드 장치 N4에는, 노드 장치 N7과 N5와 N3이 인접해 있다. 따라서, 탐색 노드(406)는 3개의 탐색 노드(411, 412, 및 413)를 자식 노드로서 갖고, 탐색 노드(411, 412 및 413) 각각의 라벨은 N7과 N5와 N3이다.
도 6에 있어서 노드 장치 N4가 최초로 노드 장치 N7을 LD로서 선택하여, 단계 S104에서 노드 장치 N7에 데이터 프레임을 송신하는 것은, 도 30에서는 탐색 노드(406)에서 탐색 노드(411)로 탐색이 진행하는 것에 대응한다.
그런데, 도 6에 도시하는 바와 같이, 단계 S104에서는 노드 장치 N4와 N7 사이의 링크 장해에 의해 송신이 실패한다. 즉, 탐색 트리(400)에서는, 탐색 노드(411)에서 탐색이 실패하여 백트랙이 생긴다. 한편, 탐색 노드(411)에서 탐색 노드(406)로의, 탐색 트리(400) 상에서의 백트랙은 실제의 네트워크(1) 상에서는 ACK 프레임이 수신되지 않고서 노드 장치 N4가 타임아웃되는 현상이다.
도 6에서는, 단계 S104의 송신 실패 후, 노드 장치 N4는 이어서 노드 장치 N5를 LD로서 선택하여 단계 S105에서 노드 장치 N5에 데이터 프레임을 송신한다. 이 단계 S105에서의 송신은 도 30에서는 탐색 노드(406)에서 탐색 노드(412)로 탐색이 진행하는 것에 대응한다.
그리고, 네트워크(1)에 있어서 노드 장치 N5에는 노드 장치 N3과 N4가 인접해 있기 때문에, 탐색 노드(412)는 2개의 탐색 노드(414와 415)를 자식 노드로서 갖고, 탐색 노드(414와 415) 각각의 라벨은 N3과 N4이다.
도 6에 있어서 노드 장치 N5가 최초로 노드 장치 N3을 LD로서 선택하여 단계 S106에서 노드 장치 N3에 데이터 프레임을 송신하는 것은, 도 30에서는 탐색 노드(412)에서 탐색 노드(414)로 탐색이 진행하는 것에 대응한다.
한편, 탐색 트리(400)에 있어서, 탐색 노드(414)는 선조 노드인 탐색 노드(403)와 동일한 라벨을 갖는다. 그러나, 탐색 노드(403과 414) 사이에는, 2개의 탐색 노드(406과 412)가 끼여 있기 때문에, 이 시점에서는 탐색 노드(414)는 가지치기되지 않는다.
그리고, 네트워크(1)에 있어서 노드 장치 N3에는 노드 장치 N2와 N4와 N5가 인접해 있기 때문에, 탐색 노드(414)는 3개의 탐색 노드(416, 417 및 418)를 자식 노드로서 갖고, 탐색 노드(416, 417 및 418) 각각의 라벨은 N2와 N4와 N5이다.
그런데, 단계 S106에서 데이터 프레임을 수신한 시점에서, 노드 장치 N3의 FID 관리 테이블(105-N3)에는, 도 12와 같이 엔트리 E3이 이미 존재하고 있다. 이것은 다음 (O1)과 (O2)를 의미한다.
(O1) 탐색 트리(400)에 있어서, 탐색 노드(414)로부터 본 선조 노드로서, 탐색 노드(414) 자신과 동일한 라벨 N3을 갖는 탐색 노드(403)가 존재한다.
(O2) 따라서, 탐색 노드(414)의 자식 노드인 탐색 노드(416, 417 및 418)는 가지치기 대상이다.
그리고, 가지치기는 다음과 같이 하여 실현된다.
라벨 N3을 갖는 탐색 노드(414)의 선조 노드에 라벨 N4를 갖는 탐색 노드(406)가 있는 것은 노드 장치 N3의 FID 관리 테이블(105-N3)의 엔트리 E3에 있어서 단계 S106의 시점에서 LD의 값이 N4인 것에 대응한다(도 12 참조). 그리고, 단계 S106에서 데이터 프레임을 수신하면, 노드 장치 N3은 단계 S103에서 LD로서 선택한 노드 장치 N4에 대응하는 가중치를 도 11에 도시하는 바와 같이 최대치로 설정한다.
바꿔 말하면, 단계 S106에서의 데이터 프레임의 수신을 계기로 하여, 노드 장치 N3은 노드 장치 N4를 잠재적인 LD의 후보에서 제외시킨다. 그리고, 잠재적인 LD의 후보로부터의 제외는 탐색 트리(400)에 있어서의 가지치기이므로, 라벨 N4를 갖는 탐색 노드(417)는 가지치기된다.
또한, 탐색 노드(414)의 선조 노드에 라벨 N2를 갖는 탐색 노드(402)가 있는 것은, 노드 장치 N3의 FID 관리 테이블(105-N3)의 엔트리 E3에 있어서, OLS의 값이 N2인 것에 대응한다(도 12 참조).
그리고, 단계 S106에서 데이터 프레임을 수신한 시점에서는, OLS 이외에 잠재적으로 LD로서 선택 가능한 노드 장치 N5가 존재하기 때문에, 노드 장치 N3은 OLS인 노드 장치 N2를 LD로서 선택하지 않는다. 즉, 라벨 N2를 갖는 탐색 노드(416)는 가지치기된다.
또한, 단계 S106의 수신을 계기로, 노드 장치 N3은 LD로서 노드 장치 N5를 선택한다. 여기서, 탐색 트리(400)에 있어서 탐색 노드(414)의 자식 노드인 탐색 노드(418)는 탐색 노드(414)의 부모 노드인 탐색 노드(412)와 동일한 라벨 N5를 갖는 데에 주목하면, 탐색 노드(418)는 제1종의 가지치기 대상이다.
실제로, 단계 S107에서의 노드 장치 N3으로부터 노드 장치 N5로의 데이터 프레임의 송신은 도 30에 도시하는 바와 같이, 탐색 트리(400) 상에서의 탐색 노드(414)로부터 부모 노드인 탐색 노드(412)로의 백트랙으로서 나타낼 수 있다. 바꿔 말하면, 탐색 노드(414)의 자식 노드이며, 부모 노드의 탐색 노드(412)와 동일한 라벨 N5를 갖는 탐색 노드(418)는 가지치기된다.
다음 단계 S108에서는, 도 6에 도시하는 바와 같이, 노드 장치 N5는 OLS인 노드 장치 N4로 데이터 프레임을 백트랙시킨다. 이 단계 S108의 동작은 도 30에서는, 탐색 트리(400)에 있어서 라벨 N5를 갖는 탐색 노드(412)에서 라벨 N4를 갖는 탐색 노드(406)로의 백트랙으로서 표현된다. 바꿔 말하면, 탐색 노드(412)의 자식 노드이며, 탐색 노드(412)의 부모 노드의 탐색 노드(406)와 동일한 라벨 N4를 갖는 탐색 노드(415)는 가지치기된다.
그리고, 다음 단계 S109에서도, 도 6에 도시하는 바와 같이, 노드 장치 N4가 OLS인 노드 장치 N3으로 데이터 프레임을 백트랙시킨다. 이 단계 S109의 동작도 도 30에서는, 탐색 트리(400)에 있어서 라벨 N4를 갖는 탐색 노드(406)로부터 라벨 N3을 갖는 탐색 노드(403)로의 백트랙으로서 표현된다. 바꿔 말하면, 탐색 노드(406)의 자식 노드이며, 탐색 노드(406)의 부모 노드의 탐색 노드(403)와 동일한 라벨 N3을 갖는 탐색 노드(413)는 가지치기된다.
이 단계에서, 라벨 N3을 갖는 탐색 노드(403)의 자식 노드 중 미탐색인 것은 라벨 N2를 갖는 탐색 노드(407)와, 라벨 N5를 갖는 탐색 노드(408)이다.
그러나, 노드 장치 N3은 단계 S107에서 노드 장치 N5에 데이터 프레임의 송신을 끝내고, 단계 S109에서의 데이터 프레임의 수신을 계기로 하여, 도 11에 도시하는 바와 같이, 노드 장치 N5에 대응하는 가중치는 최대치로 설정된다. 따라서, 노드 장치 N5는 LD의 후보에서 제외되고, 라벨 N5를 갖는 탐색 노드(408)는 가지치기된다.
결국, 단계 S110에서는, 도 6에 도시하는 바와 같이, 노드 장치 N3은 OLS인 노드 장치 N2로 데이터 프레임을 백트랙시킨다. 이 단계 S110의 동작은 도 30에서는, 탐색 트리(400)에 있어서 라벨 N3을 갖는 탐색 노드(403)로부터 라벨 N2를 갖는 탐색 노드(402)로의 백트랙으로서 표현된다. 바꿔 말하면, 탐색 노드(403)의 자식 노드이며, 탐색 노드(403)의 부모 노드의 탐색 노드(402)와 같은 라벨 N2를 갖는 탐색 노드(407)는 가지치기된다.
계속해서, 단계 S111에서, 노드 장치 N2는 LD로서 새롭게 노드 장치 N6을 선택하여, 노드 장치 N6에 데이터 프레임을 송신한다. 단계 S111의 송신은 도 30에서는, 라벨 N2를 갖는 탐색 노드(402)로부터 라벨 N6을 갖는 탐색 노드(404)로 탐색이 진행하는 것에 대응한다.
그리고, 네트워크(1)에 있어서 노드 장치 N6에는 노드 장치 N7과 N2가 인접해 있기 때문에, 탐색 노드(404)는 2개의 탐색 노드(409와 410)를 자식 노드로서 갖고, 탐색 노드(409와 410) 각각의 라벨은 N7과 N2이다.
도 6에 있어서 노드 장치 N6은 OLS인 노드 장치 N2가 아니라 우선 노드 장치 N7을 LD로서 선택하여 데이터 프레임을 단계 S112에서 송신한다. 즉, 라벨 N2를 갖는 탐색 노드(410)는 가지치기된다. 그리고, 단계 S112의 송신에 의해, GD인 노드 장치 N7의 노드 ID·N7을 라벨로서 갖는 탐색 노드(409)로 탐색이 진행되어, 탐색이 종료된다. 한편, 단계 S112에서 탐색이 종료되기 때문에, 탐색 노드(402)의 자식 노드인 탐색 노드(405)는 탐색되지 않지만, 탐색 노드(405)는 제1종의 가지치기 대상이기도 하므로, 도 30에서는 편의적으로 정방형으로 표현해 둔다.
한편, 탐색 트리(400)에 있어서, 루트 노드인 탐색 노드(401)로부터, 이상과 같이 하여 탐색에 의해 발견된 리프 노드인 탐색 노드(409)에 이르는, 경로 상의 각 탐색 노드의 라벨을 순차 나열하여 튜플로 나타내면, 〈N1, N2, N6, N7〉이 된다. 그리고, 이 튜플은 도 6의 네트워크(1)에 있어서 학습된 경로 〈N1, N2, N6, N7〉이다.
제1 실시형태에 따르면, 데이터 프레임이 전송되면서 동적으로 경로가 탐색되는데, 그 탐색순을 탐색 트리(400)로 나타내면, 도 30과 같이 깊이 우선 탐색순이다. 폭 우선 탐색이 아니라 깊이 우선 탐색이 이루어지는 것은 데이터 프레임이멀티캐스트되지 않고 항상 유니캐스트되는 것으로부터도 이해된다.
그리고, 이상의 설명으로부터 분명한 바와 같이, FID 관리 테이블(105)의 엔트리의 에이징 시간 Gf가 적절하게 설정되어 있으면, 네트워크(1) 내에서 GS로부터 GD로 이르는 경로가 발견될 때까지, 잠재적으로 가능한 경로가 깊이 우선 탐색에 의해 다 조사된다. 즉, 에이징 시간 Gf가 지나치게 짧지 않으면, GS에서 GD로 이르는 경로가 존재만 하면, 경로는 반드시 발견된다. 한편, 도 19에 관해서 설명한 「최악 케이스」란, 탐색 트리(400)의 깊이 우선 탐색순에서의 트래버스(traverse)에 있어서, GD의 노드 장치의 노드 ID를 라벨로서 갖는 탐색 노드가 가장 마지막으로 발견되는 경우를 말한다.
계속해서, 또 다른 관점에서 제1 실시형태에 관해서 설명한다.
도 31은 헬로 프레임의 송수신에 의한 인접 노드의 인식과 도 6의 경로 선택을 도시하는 타이밍 차트이다.
도 1의 네트워크(1)에 있어서, 각 노드 장치 N1~N7은 독립적으로 각각 도 16의 헬로 프레임 송신 처리를 한다. 어떤 노드 장치가 먼저 헬로 프레임을 송신할지는 임의이지만, 도 31의 예에서는, 우선 단계 S1201에서 노드 장치 N2가 도 16의 단계 S403을 실행하여, 헬로 프레임을 송신한다. 그러면, 헬로 프레임은 노드 장치 N2에 인접해 있는 노드 장치 N1, N3 및 N6에서 각각 수신된다. 그리고, 노드 장치 N1, N3 및 N6은 각각 도 14의 단계 S203으로부터 도 15의 헬로 프레임 수신 처리를 호출해서 실행하고, 노드 장치 N2를 인접 노드 장치로서 인식한다.
또한, 도 31의 예에서는, 계속해서 단계 S1202에서, 노드 장치 N4가 도 16의 단계 S403을 실행하여, 헬로 프레임을 송신한다. 그러면, 헬로 프레임은 노드 장치 N4에 인접해 있는 노드 장치 N3, N5 및 N7에서 각각 수신된다. 그리고, 노드 장치 N3, N5 및 N7은 각각 도 14의 단계 S203으로부터 도 15의 헬로 프레임 수신 처리를 호출해서 실행하고, 노드 장치 N4를 인접 노드 장치로서 인식한다.
더욱이, 단계 S1203에서는, 노드 장치 N3이 도 16의 단계 S403을 실행하여, 도 7의 헬로 프레임(312)을 송신한다. 그러면, 헬로 프레임(312)은 노드 장치 N3에 인접해 있는 노드 장치 N2, N4 및 N5에서 각각 수신된다. 그리고, 노드 장치 N2, N4 및 N5는 각각 도 14의 단계 S203으로부터 도 15의 헬로 프레임 수신 처리를 호출해서 실행하고, 노드 장치 N3을 인접 노드 장치로서 인식한다.
또한, 단계 S1204에서는, 노드 장치 N7이 도 16의 단계 S403을 실행하여, 헬로 프레임을 송신한다. 한편, 단계 S1204의 시점에서는, 노드 장치 N4와 N7 사이의 링크에는 장해가 아직 생기지 않은 것으로 한다. 따라서, 헬로 프레임은 노드 장치 N7에 인접해 있는 노드 장치 N4와 N6에서 각각 수신된다. 그리고, 노드 장치 N4와 N6은 각각 도 14의 단계 S203으로부터 도 15의 헬로 프레임 수신 처리를 호출해서 실행하고, 노드 장치 N7을 인접 노드 장치로서 인식한다.
또한, 단계 S1205에서는, 노드 장치 N1이 도 16의 단계 S403을 실행하여, 헬로 프레임을 송신한다. 그러면, 헬로 프레임은 노드 장치 N1에 인접해 있는 노드 장치 N2에서 수신된다. 그리고, 노드 장치 N2는 도 14의 단계 S203으로부터 도 15의 헬로 프레임 수신 처리를 호출해서 실행하고, 노드 장치 N1을 인접 노드 장치로서 인식한다.
더욱이, 단계 S1206에서는, 노드 장치 N6이 도 16의 단계 S403을 실행하여, 헬로 프레임을 송신한다. 그러면, 헬로 프레임은 노드 장치 N6에 인접해 있는 노드 장치 N2와 N7에서 각각 수신된다. 그리고, 노드 장치 N2와 N7은 각각 도 14의 단계 S203으로부터 도 15의 헬로 프레임 수신 처리를 호출해서 실행하고, 노드 장치 N6을 인접 노드 장치로서 인식한다.
그리고, 단계 S1207에서는, 노드 장치 N5가 도 16의 단계 S403을 실행하여, 헬로 프레임을 송신한다. 그러면, 헬로 프레임은 노드 장치 N5에 인접해 있는 노드 장치 N3과 N4에서 각각 수신된다. 그리고, 노드 장치 N3과 N4는 각각 도 14의 단계 S203으로부터 도 15의 헬로 프레임 수신 처리를 호출해서 실행하고, 노드 장치 N5를 인접 노드 장치로서 인식한다.
이상의 단계 S1201~S1207에 의해, 도 1 및 도 6에 도시하는 네트워크(1) 내의 노드 장치 N1~N7은 각각 인접 노드 장치를 인식하여, 인접 노드 관리 테이블(103-N1~103-N7)을 갱신한다. 또한, 도 15에 도시하는 바와 같이, 노드 장치 N1~N7은 헬로 프레임의 수신을 계기로 하여, 경우에 따라서는 가중치 테이블(104-N1~104-N7)을 갱신하는 경우도 있다.
그 후, 단계 S1208에서 노드 장치 N4와 N7 사이의 링크에 장해가 발생한다.
또한, 장해 발생과는 관계없이, 단계 S101에서 노드 장치 N1이 노드 장치 N7을 GD로서 지정하는 데이터 프레임을, 노드 장치 N2를 LD로서 지정하여 송신한다. 즉, 단계 S101에서 노드 장치 N1은 도 27~도 28의 처리를 한다.
그러면, 데이터 프레임을 수신한 노드 장치 N2는 도 14의 단계 S205로부터 도 20~도 23의 처리를 호출하여 실행한다. 도 20의 단계 S803에서 노드 장치 N2가 ACK 프레임을 송신하는 것이 도 31에서는 단계 S101a로서 표현되어 있다.
한편, 노드 장치 N1은 도 28의 단계 S1121에서 ACK 프레임의 수신을 대기한다. 그리고, 노드 장치 N1은 단계 S101a에서 송신되는 ACK 프레임을 수신하면, 도 14의 단계 S206으로부터 도 25의 처리를 호출해서 실행하고, 그 결과, 단계 S1121의 대기를 끝내고, 단계 S1122와 S1123을 실행하여, 도 28의 처리를 끝낸다.
또한, 단계 S101a에 나타내는 바와 같이 도 20의 단계 S803에서 ACK 프레임을 송신한 노드 장치 N2는 단계 S804 이후의 처리를 속행하고, 도 22의 단계 S819에서, LD로서 노드 장치 N3을 지정하여 데이터 프레임을 송신한다. 단계 S819에서의 송신이 도 31의 단계 S102에 상당한다. 한편, 도 7에는, 단계 S102에서 송신되는 데이터 프레임(303)이 예시되어 있다.
그러면, 데이터 프레임을 수신한 노드 장치 N3은 도 14의 단계 S205로부터 도 20~도 23의 처리를 호출하여 실행한다. 도 20의 단계 S803에서 노드 장치 N3이 ACK 프레임을 송신하는 것이 도 31에서는 단계 S102a로서 표현되어 있다. 한편, 도 7에는, 단계 S102a에서 송신되는 ACK 프레임(322)이 예시되어 있다.
한편, 노드 장치 N2는 도 22의 단계 S825에서 ACK 프레임의 수신을 대기한다. 그리고, 노드 장치 N2는 단계 S102a에서 송신되는 ACK 프레임을 수신하면, 도 14의 단계 S206으로부터 도 25의 처리를 호출하여 실행하며, 그 결과, 단계 S825의 대기를 끝내고, 단계 S826과 S827을 실행하여, 도 22의 처리를 끝낸다.
또한, 단계 S102a에 나타내는 바와 같이 도 20의 단계 S803에서 ACK 프레임을 송신한 노드 장치 N3은 단계 S804 이후의 처리를 속행하여, 도 22의 단계 S819에서, LD로서 노드 장치 N4를 지정하여 데이터 프레임을 송신한다. 단계 S819에서의 송신이 도 31의 단계 S103에 상당한다. 한편, 도 7에는 단계 S103에서 송신되는 데이터 프레임(304)이 예시되어 있다.
그러면, 데이터 프레임을 수신한 노드 장치 N4는 도 14의 단계 S205로부터 도 20~도 23의 처리를 호출하여 실행한다. 도 20의 단계 S803에서 노드 장치 N4가 ACK 프레임을 송신하는 것이 도 31에서는 단계 S103a로서 표현되어 있다.
한편, 노드 장치 N3은 도 22의 단계 S825에서 ACK 프레임의 수신을 대기한다. 그리고, 노드 장치 N3은 단계 S103a에서 송신되는 ACK 프레임을 수신하면, 도 14의 단계 S206으로부터 도 25의 처리를 호출하여 실행하며, 그 결과, 단계 S825의 대기를 끝내고, 단계 S826과 S827을 실행하여, 도 22의 처리를 끝낸다.
또한, 단계 S103a에 나타내는 바와 같이 도 20의 단계 S803에서 ACK 프레임을 송신한 노드 장치 N4는 단계 S804 이후의 처리를 속행하여, 도 22의 단계 S819에서, LD로서 노드 장치 N7을 지정하여 데이터 프레임을 송신한다. 단계 S819에서의 송신이 도 31의 단계 S104에 상당한다.
그러나, 단계 S1208에서 노드 장치 N4와 N7 사이의 링크에는 장해가 발생하여, 데이터 프레임은 노드 장치 N7에 도달하지 않는다. 그 때문에, 도 31에서는 단계 S104의 화살표는 도중에 파선으로 되어 있다.
노드 장치 N4는 도 22의 단계 S825에서 ACK 프레임의 수신을 대기한다. 그러나, 노드 장치 N7로부터 ACK 프레임이 수신되지 않기 때문에, 노드 장치 N4는 정기적으로 실행하는 도 26의 처리의 단계 S1003에 있어서, 노드 장치 N7에의 데이터 프레임의 송신이 실패했다고 인식한다.
그 결과, 노드 장치 N4는 단계 S825의 대기를 끝내고, 단계 S826, S828, S829, S818의 처리를 순차 실행한다. 그리고, 노드 장치 N4는 계속되는 단계 S819에 있어서, LD로서 노드 장치 N5를 지정하여 데이터 프레임을 송신한다. 단계 S819에서의 송신이 도 31의 단계 S105에 상당한다.
그러면, 데이터 프레임을 수신한 노드 장치 N5는 도 14의 단계 S205로부터 도 20~도 23의 처리를 호출하여 실행한다. 도 20의 단계 S803에서 노드 장치 N5가 ACK 프레임을 송신하는 것이 도 31에서는 단계 S105a로서 표현되어 있다.
한편, 노드 장치 N4는 도 22의 단계 S825에서 ACK 프레임의 수신을 대기한다. 그리고, 노드 장치 N4는 단계 S105a에서 송신되는 ACK 프레임을 수신하면, 도 14의 단계 S206으로부터 도 25의 처리를 호출하여 실행하며, 그 결과, 단계 S825의 대기를 끝내고, 단계 S826과 S827을 실행하여, 도 22의 처리를 끝낸다.
또한, 단계 S105a에 나타내는 바와 같이 도 20의 단계 S803에서 ACK 프레임을 송신한 노드 장치 N5는 단계 S804 이후의 처리를 속행하여, 도 22의 단계 S819에서, LD로서 노드 장치 N3을 지정하여 데이터 프레임을 송신한다. 단계 S819에서의 송신이 도 31의 단계 S106에 상당한다.
그러면, 데이터 프레임을 수신한 노드 장치 N3은 도 14의 단계 S205로부터 도 20~도 23의 처리를 호출하여 실행한다. 도 20의 단계 S803에서 노드 장치 N3이 ACK 프레임을 송신하는 것이 도 31에서는 단계 S106a로서 표현되어 있다.
한편, 노드 장치 N5는 도 22의 단계 S825에서 ACK 프레임의 수신을 대기한다. 그리고, 노드 장치 N5는 단계 S106a에서 송신되는 ACK 프레임을 수신하면, 도 14의 단계 S206으로부터 도 25의 처리를 호출하여 실행하고, 그 결과, 단계 S825의 대기를 끝내고, 단계 S826과 S827을 실행하여, 도 22의 처리를 끝낸다.
또한, 단계 S106a에 나타내는 바와 같이 도 20의 단계 S803에서 ACK 프레임을 송신한 노드 장치 N3은 단계 S804 이후의 처리를 속행하여, 도 22의 단계 S819에서, LD로서 노드 장치 N5를 지정하여 데이터 프레임을 송신한다. 단계 S819에서의 송신이 도 31의 단계 S107에 상당한다.
그러면, 데이터 프레임을 수신한 노드 장치 N5는 도 14의 단계 S205로부터 도 20~도 23의 처리를 호출하여 실행한다. 도 20의 단계 S803에서 노드 장치 N5가 ACK 프레임을 송신하는 것이 도 31에서는 단계 S107a로서 표현되어 있다.
한편, 노드 장치 N3은 도 22의 단계 S825에서 ACK 프레임의 수신을 대기한다. 그리고, 노드 장치 N3은 단계 S107a에서 송신되는 ACK 프레임을 수신하면, 도 14의 단계 S206으로부터 도 25의 처리를 호출하여 실행하며, 그 결과, 단계 S825의 대기를 끝내고, 단계 S826과 S827을 실행하여, 도 22의 처리를 끝낸다.
또한, 단계 S107a에 나타내는 바와 같이 도 20의 단계 S803에서 ACK 프레임을 송신한 노드 장치 N5는 단계 S804 이후의 처리를 속행한다. 구체적으로는, 처리가 도 22의 단계 S818에서 도 23의 단계 S830으로 진행하여, 노드 장치 N5는 단계 S830에서, OLS인 노드 장치 N4를 LD로서 지정하여 데이터 프레임을 송신한다. 단계 S830에서의 송신이 도 31의 단계 S108에 상당한다.
그러면, 데이터 프레임을 수신한 노드 장치 N4는 도 14의 단계 S205로부터 도 20~도 23의 처리를 호출하여 실행한다. 도 20의 단계 S803에서 노드 장치 N4가 ACK 프레임을 송신하는 것이 도 31에서는 단계 S108a로서 표현되어 있다.
한편, 노드 장치 N5는 도 23의 단계 S836에서 ACK 프레임의 수신을 대기한다. 그리고, 노드 장치 N5는 단계 S108a에서 송신되는 ACK 프레임을 수신하면, 도 14의 단계 S206으로부터 도 25의 처리를 호출하여 실행하며, 그 결과, 단계 S836의 대기를 끝내고, 단계 S837과 S839를 실행하여, 도 23의 처리를 끝낸다.
또한, 단계 S108a에 나타내는 바와 같이 도 20의 단계 S803에서 ACK 프레임을 송신한 노드 장치 N4는 단계 S804 이후의 처리를 속행한다. 구체적으로는, 처리가 도 22의 단계 S818에서 도 23의 단계 S830으로 진행하여, 노드 장치 N4는 단계 S830에서, OLS인 노드 장치 N3을 LD로서 지정하여 데이터 프레임을 송신한다. 단계 S830에서의 송신이 도 31의 단계 S109에 상당한다.
그러면, 데이터 프레임을 수신한 노드 장치 N3은 도 14의 단계 S205로부터 도 20~도 23의 처리를 호출하여 실행한다. 도 20의 단계 S803에서 노드 장치 N3이 ACK 프레임을 송신하는 것이 도 31에서는 단계 S109a로서 표현되어 있다.
한편, 노드 장치 N4는 도 23의 단계 S836에서 ACK 프레임의 수신을 대기한다. 그리고, 노드 장치 N4는 단계 S109a에서 송신되는 ACK 프레임을 수신하면, 도 14의 단계 S206으로부터 도 25의 처리를 호출하여 실행하며, 그 결과, 단계 S836의 대기를 끝내고, 단계 S837과 S839를 실행하여, 도 23의 처리를 끝낸다.
또한, 단계 S109a에 나타내는 바와 같이 도 20의 단계 S803에서 ACK 프레임을 송신한 노드 장치 N3은 단계 S804 이후의 처리를 속행한다. 구체적으로는, 처리가 도 22의 단계 S818로부터 도 23의 단계 S830로 진행하여, 노드 장치 N3은 단계 S830에서, OLS인 노드 장치 N2를 LD로서 지정하여 데이터 프레임을 송신한다. 단계 S830에서의 송신이 도 31의 단계 S110에 상당한다.
그러면, 데이터 프레임을 수신한 노드 장치 N2는 도 14의 단계 S205로부터 도 20~도 23의 처리를 호출하여 실행한다. 도 20의 단계 S803에서 노드 장치 N2가 ACK 프레임을 송신하는 것이 도 31에서는 단계 S110a로서 표현되어 있다.
한편, 노드 장치 N3은 도 23의 단계 S836에서 ACK 프레임의 수신을 대기한다. 그리고, 노드 장치 N3은 단계 S110a에서 송신되는 ACK 프레임을 수신하면, 도 14의 단계 S206으로부터 도 25의 처리를 호출하여 실행하며, 그 결과, 단계 S836의 대기를 끝내고, 단계 S837과 S839를 실행하여, 도 23의 처리를 끝낸다.
또한, 단계 S110a에 나타내는 바와 같이 도 20의 단계 S803에서 ACK 프레임을 송신한 노드 장치 N2는 단계 S804 이후의 처리를 속행하여, 도 22의 단계 S819에서, LD로서 노드 장치 N6을 지정하여 데이터 프레임을 송신한다. 단계 S819에서의 송신이 도 31의 단계 S111에 상당한다.
그러면, 데이터 프레임을 수신한 노드 장치 N6은 도 14의 단계 S205로부터 도 20~도 23의 처리를 호출하여 실행한다. 도 20의 단계 S803에서 노드 장치 N6이 ACK 프레임을 송신하는 것이 도 31에서는 단계 S111a로서 표현되어 있다.
한편, 노드 장치 N2는 도 22의 단계 S825에서 ACK 프레임의 수신을 대기한다. 그리고, 노드 장치 N2는 단계 S111a에서 송신되는 ACK 프레임을 수신하면, 도 14의 단계 S206으로부터 도 25의 처리를 호출하여 실행하며, 그 결과, 단계 S825의 대기를 끝내고, 단계 S826과 S827을 실행하여, 도 22의 처리를 끝낸다.
또한, 단계 S111a에 나타내는 바와 같이 도 20의 단계 S803에서 ACK 프레임을 송신한 노드 장치 N6은 단계 S804 이후의 처리를 속행하여, 도 22의 단계 S819에서, LD로서 노드 장치 N7을 지정하여 데이터 프레임을 송신한다. 단계 S819에서의 송신이 도 31의 단계 S112에 상당한다.
그러면, 데이터 프레임을 수신한 노드 장치 N7은 도 14의 단계 S205로부터 도 20~도 23의 처리를 호출하여 실행한다. 도 20의 단계 S803에서 노드 장치 N7이 ACK 프레임을 송신하는 것이 도 31에서는 단계 S112a로서 표현되어 있다.
이상 설명한 일련의 처리에 의해, 네트워크(1) 전체에서는, 가령 단계 S1208에서 장해가 발생하더라도, 노드 장치 N1~N7의 자율 분산 협조의 결과로서, 동적으로 경로 〈N1, N2, N6, N7〉이 선택되어 학습된다. 즉, 이상의 일련의 처리에 의해 노드 장치 N1~N6에서는 가중치 테이블(104-N1~104-N6)이 갱신된다.
따라서, 단계 S112a 후에는, 학습의 결과로서, 노드 장치 N7을 GD로서 지정하는 데이터 프레임은 도 6과 같이 네트워크(1) 내에서 시행착오적으로 백트랙되면서 전송되는 대신에, 처음부터 효율적으로 전송된다. 구체적인 예를 몇 가지 들면, 아래와 같다.
(P1) 노드 장치 N1이 GS가 되고, 노드 장치 N7을 GD로서 지정하는 데이터 프레임을 인접해 있는 노드 장치 N2에 송신하면, 노드 장치 N2는 학습된 가중치 테이블(104-N2)에 기초하여, 처음부터 LD로서 노드 장치 N6을 선택한다. 그리고, 데이터 프레임은 노드 장치 N6에서 GD인 노드 장치 N7로 송신된다.
(P2) 마찬가지로, 노드 장치 N2가 GS가 되고, 노드 장치 N7을 GD로서 지정하는 데이터 프레임을 송신할 때도, 노드 장치 N2는 학습된 가중치 테이블(104-N2)에 기초하여, 처음부터 LD로서 노드 장치 N6을 선택한다. 그리고, 데이터 프레임은 노드 장치 N6에서 GD인 노드 장치 N7로 송신된다.
(P3) 노드 장치 N5가 GS가 되고, 노드 장치 N7을 GD로서 지정하는 데이터 프레임을 송신할 때, 노드 장치 N5는 학습된 가중치 테이블(104-N5)에 기초하여, 백트랙이 생긴 노드 장치 N3이 아니라, 노드 장치 N4를 최초로 LD로서 선택한다. 이하 같은 식으로 하여, 노드 장치 N4는 LD로서 노드 장치 N3을 선택하고, 노드 장치 N3은 LD로서 노드 장치 N2를 선택하고, 노드 장치 N2는 LD로서 노드 장치 N6을 선택하고, 노드 장치 N6은 LD로서 노드 장치 N7을 선택한다.
(P4) 노드 장치 N3이 GS가 되고, 노드 장치 N7을 GD로서 지정하는 데이터 프레임을 송신할 때, 노드 장치 N3은 학습된 가중치 테이블(104-N3)에 기초하여, 노드 장치 N2를 LD로서 선택한다. 따라서, 데이터 프레임은 처음부터 효율적으로 경로 〈N3, N2, N6, N7〉를 따라서 전송된다.
이상과 같이 제1 실시형태에 따르면, 도 6과 같이 백트랙에 의해서 네트워크(1) 내에서 시행착오적으로 또 동적으로 경로가 선택되면, 백트랙의 과정에서 경유한 각 노드 장치에 있어서, 가중치 테이블(104)의 가중치라는 형태로, 적절한 경로가 학습된다. 따라서, GD로서 마찬가지로 노드 장치 N7이 지정된 데이터 프레임이 금후 송신되는 경우에는, 상기 (P1)~(P4)의 예와 같이, 학습 결과에 따라서, 경로 선택이 효율화된다.
계속해서, 유선 네트워크에 적용되는 제2 실시형태에 관해서 설명한다. 제1 실시형태에서는, 도 3의 수신부(101)와 송신부(102)가 도 4의 무선 모듈(206)에 의해 실현되고, 도 1의 네트워크(1)가 무선 네트워크인 경우를 예로 하여 설명했다. 그러나, 제2 실시형태에서는, 예컨대 도 1이나 도 2의 네트워크(1이나 2)가 유선 링크로 접속된 유선 애드혹 네트워크라도 좋다. 이하, 구체적인 예에 관해서 도 32를 참조하여 설명한다.
도 32는 제2 실시형태가 적용되는 유선 네트워크의 예를 도시하는 도면이다. 도 32의 네트워크(4)는 복수의 노드 장치(100a~100i)를 포함하며, 유선 애드혹 네트워크의 일례이다. 우선, 노드 장치(100a)의 구성의 개략을 설명한다.
한편, 노드 장치(100a~100i)의 구성은 서로 같다. 서로 같은 구성요소에는 「211a-1」, 「211a-2」, 「211b-1」등과 같이, 첨자를 제외하고 동일한 참조 부호를 할당하고, 자세한 설명을 생략하는 경우가 있다.
노드 장치(100a~100i)는 무선 모듈(206)에 의해 실현되는 도 3의 수신부(101) 및 송신부(102) 대신에, 유선 통신을 위한 물리 포트(이하, 단순히 「포트」라고 함)와 PHY 칩에 의해 실현되는 도시되지 않는 수신부 및 송신부를 갖는다. 도 32의 예에서는, 노드 장치(100a)는 4개의 포트(211a-1~211a-4)를 구비하지만, 포트의 수는 실시형태에 따라서 임의이다.
한편, 포트(211a-1~211a-4)는 제2 실시형태에 따른 프레임의 통신을 하기 위한 포트이다. 즉, 도 7에 도시하는 제1 실시형태와 같은 데이터 프레임이 포트(211a-1~211a-4)를 통해 송수신된다. 바꿔 말하면, 포트(211a-1~211a-4)는 노드 장치(100a)가 인접 노드 장치와 유선 접속하기 위한 포트이다.
이하에서는 설명의 편의상, 하나의 포트에 대응하여 하나의 PHY 칩이 있는 것으로 가정하지만, 물리적으로는 하나의 PHY 칩이 4개의 포트의 입출력 처리를 하는 것도 가능하다.
또한, 제2 실시형태에서는 ACK 프레임과 헬로 프레임이 사용되지 않는다. 따라서, 노드 장치(100a)는 도 3의 ACK 처리부(107)와 헬로 프레임 생성부(112)를 포함하지 않는다. 또한, 자세하게는 후술하지만, 제2 실시형태에서는, 프레임 분기 처리부(106)와 링크 관리부(108)와 데이터 프레임 처리부(110)의 동작의 일부가 제1 실시형태와는 다르다. 그리고, 도 9에 도시하는 제1 실시형태의 인접 노드 관리 테이블(103) 대신에, 도 33에 도시하는 인접 노드 관리 테이블(103a)이 사용된다.
그런데, 제1 실시형태에서는, 외부 네트워크와의 접속을 위해 노드 장치(100)가 도 4의 PHY 칩(202)을 구비하는 경우를 예시했다. 제2 실시형태의 노드 장치(100a)도 마찬가지로, 외부 네트워크와의 접속을 위해, 범용 LAN 포트(212a)를 구비한다.
범용 LAN 포트(212a)는, 예컨대 이더넷 규격에 의거한 유선 접속용의 물리 포트이며, 도시되지 않는 PHY 칩과 접속된다. 도 32에서는 범용 LAN 포트(212a~212i)를 빗금으로 표시하여, 포트(211a-1~211i-4)와 구별하고 있다. 한편, 본 실시형태에서의 범용 LAN 포트(212a~212i)는 유선 LAN 포트이지만, 실시형태에 따라서는 무선 LAN 인터페이스를 대신 이용할 수도 있다.
그리고, 상기와 같은 구성을 갖는 각 노드 장치(100a~100i)는 네트워크(4)에 있어서, 케이블(예컨대, 구리 케이블 등의 금속선 케이블, 또는 광 파이버 케이블)에 의해, 물리적으로는 메쉬형(바꿔 말하면 격자형)으로 접속된다.
물론, 네트워크에 있어서의 물리적인 접속 토폴로지는 실시형태에 따라서 임의이며, 반드시 메쉬형이 아니라도 좋다.
도 32에 도시하는 메쉬형의 물리적인 토폴로지는, 구체적으로는 다음 (Q1)~(Q12)와 같은 케이블 배선에 의해 실현된다.
(Q1) 노드 장치(100a와 100d)는 포트(211a-1과 211d-1) 사이의 링크(515)에 의해 접속된다.
(Q2) 노드 장치(100a와 100b)는 포트(211a-4와 211b-1) 사이의 링크(516)에 의해 접속된다.
(Q3) 노드 장치(100b와 100e)는 포트(211b-2와 211e-2) 사이의 링크(517)에 의해 접속된다.
(Q4) 노드 장치(100b와 100c)는 포트(211b-4와 211c-1) 사이의 링크(518)에 의해 접속된다.
(Q5) 노드 장치(100c와 100f)는 포트(211c-3과 211f-3) 사이의 링크(519)에 의해 접속된다.
(Q6) 노드 장치(100d와 100g)는 포트(211d-2와 211g-2) 사이의 링크(521)에 의해 접속된다.
(Q7) 노드 장치(100d와 100e)는 포트(211d-4와 211e-1) 사이의 링크(522)에 의해 접속된다.
(Q8) 노드 장치(100e와 100h)는 포트(211e-3과 211h-3) 사이의 링크(523)에 의해 접속된다.
(Q9) 노드 장치(100e와 100f)는 포트(211e-4와 211f-1) 사이의 링크(524)에 의해 접속된다.
(Q10) 노드 장치(100f와 100i)는 포트(211f-4와 211i-4) 사이의 링크(525)에 의해 접속된다.
(Q11) 노드 장치(100g와 100h)는 포트(211g-4와 211h-1) 사이의 링크(526)에 의해 접속된다.
(Q12) 노드 장치(100h와 100i)는 포트(211h-4와 211i-1) 사이의 링크(527)에 의해 접속된다.
물론, 실시형태에 따라서, 도 32에 예시한 것 이외 조합의 포트 사이를 케이블로 접속함으로써 도 32와 등가의 메쉬 토폴로지를 실현하는 것도 가능하다.
그런데, 도 32의 예에서는, 네트워크(4)는 고립된 네트워크가 아니라, LAN이나 WAN(Wide Area Network) 등의 외부 네트워크와도 접속된다.
예컨대, 도 32의 예에서는, 네트워크(4)는 다음과 같이 하여 외부 네트워크와 접속된다. 즉, 링크(511)를 통해 PC(Personal Computer)(501)와 접속된 L2SW(Layer 2 Switch)(502)가 노드 장치(100a와 100b) 각각의 범용 LAN 포트(212a와 212b)에, 각각 링크(512와 513)를 통해 접속된다. 또한, PC(503, 505, 506)가 노드 장치(100c, 100g, 100h) 각각의 범용 LAN 포트(212c, 212g, 212h)에, 각각 링크(514, 528, 529)를 통해 접속된다.
한편, L2SW(502)는 도시되지 않는 라우터나 도시되지 않는 다른 PC와 또 접속될 수도 있다. 또한, PC(503, 505 및 506)도 도시되지 않는 다른 외부 네트워크에 접속될 수도 있다.
또한, 설명의 편의상, 도 32에는 9개의 노드 장치(100a~100i)를 포함하는 네트워크(4)를 예시했지만, 실시형태에 따라서는, 예컨대 수천개~수십만개 정도의 다수의 노드 장치를 유선 애드혹 네트워크가 포함하여도 좋다.
예컨대, 도처에 배치된 다수의 센서로부터 여러 가지 정보를 수집하기 위한 네트워크인 센서 네트워크에, 본 실시형태의 유선 애드혹 네트워크가 적용되어도 좋다. 그 경우, 다수의 센서에 대응하여, 유선 애드혹 네트워크는 수천개~수십만개 정도의 다수의 노드 장치를 포함하더라도 좋다. 센서 네트워크에서는, 예컨대 화상 센서, 온도 센서, 습도 센서, 압력 센서, 가속도 센서 등, 임의 종류의 센서가 이용된다.
도 32도 본 실시형태에 의한 유선 애드혹 네트워크의, 센서 네트워크에의 적용예의 하나를 나타낸다. 즉, 도 32에 있어서 노드 장치(100e와 100i) 각각의 범용 LAN 포트(212e와 212i)에는, LAN 인터페이스를 구비한 센서(504와 507)가 각각 링크(520과 530)를 통해 접속된다. 센서(504와 507)는 감지한 결과를 나타내는 데이터를 LAN 인터페이스를 통해 이더넷 프레임으로서 출력한다. 이들 센서(504와 507)의 종류는 임의이다.
도 32에 도시하는 바와 같은 본 실시형태에 의한 유선 애드혹 네트워크를 이용하면, 무선 통신에서는 통신 곤란한 환경에서도 유선 통신이면 통신 가능한 경우가 많기 때문에, 가혹한 환경에서도 센서 네트워크를 구축하는 것이 가능하게 된다.
예컨대, 밭이나 벼랑 등의 흙 속, 논이나 하천이나 바다 등의 물 속, 건물의 벽이나 기둥 등의 구조물 속 등에, 센서와, 범용 LAN 포트를 통해 그 센서에 접속된 노드 장치가 매립되어도 좋다. 그와 같은 경우라도, 노드 장치는 유선 접속을 통해 다른 노드 장치와 확실하게 통신하는 것이 가능하다. 따라서, 본 실시형태에 의한 유선 애드혹 네트워크를 이용하면, 흙 속, 물 속, 구조물 속 등, 무선 통신이 곤란한 환경에서도, 센서 네트워크를 구축하는 것이 가능하다.
계속해서, 도 32와 같은 네트워크(4)에서의 각 노드 장치(100a~100i)의 구성과 동작에 관해서, 제1 실시형태에 관한 도 7~도 29를 순차 참조하면서, 제1 실시형태와의 차이를 설명한다.
우선 도 7을 참조하면, 제2 실시형태에서는 헬로 프레임과 ACK 프레임이 이용되지 않는다. 그 이유는 유선 링크는 무선 링크와 비교하여 현저히 통신 품질이 좋기 때문이다. 즉, 물리 포트 사이를 1대1로 접속하는 유선 통신에서는, 전송 매체 상의 반송파 신호가 검출되기만 하면, 통신은 사실상 100% 성공한다.
예컨대, 노드 장치(100a)는 헬로 프레임의 수신을 계기로 하여 인접 노드 장치를 인식할 필요는 없고, 단순히 포트(211a-1~211a-4)를 감시하여, 반송파 신호가 검출되는지 여부를 조사하면 된다. 반송파 신호가 검출되면, 인접 노드 장치가 존재한다.
또한, 예컨대, 케이블의 절단 등에 의해 포트(211a-4)가 링크 다운 상태가 아닌 한, 노드 장치(100a)가 포트(211a-4)로부터 링크(516)를 통해 인접해 있는 노드 장치(100b)에 데이터 프레임을 송신하면, 송신 성공이 보증된다. 따라서 ACK 프레임도 불필요하다.
이어서, 도 8을 참조하면, 제2 실시형태에서는 ACK 프레임이 사용되지 않기 때문에, 버퍼부(109)에 있어서 타임아웃 시각 필드는 불필요하다.
또한, 제2 실시형태에서는, 도 9와 같은 형식의 인접 노드 관리 테이블(103) 대신에, 도 33과 같은 인접 노드 관리 테이블(103a)이 사용된다. 도 33은 제2 실시형태에 있어서의 인접 노드 관리 테이블(103a)의 예를 도시하는 도면이다.
한편, 이하에서는 노드 장치(100a)에 있어서, 4개의 포트(211a-1~211a-4)를 각각 식별하는 포트 ID가 각 포트(211a-1~211a-4)에 미리 할당되는 것으로 한다.
도 33을 도 9와 비교하면, 도 33에서는 포트 ID 필드가 추가되는 점만이 다르다. 예컨대, 도 1의 네트워크(1)가 유선 네트워크인 경우, 노드 장치 N2의 인접 노드 관리 테이블(103a-N2)은 도 9와 마찬가지로 노드 장치 N2에 인접해 있는 3개의 노드 장치 N1, N3 및 N6에 각각 대응하는 3개의 엔트리를 갖는다. 그리고, 각 엔트리에 있어서, 포트 ID 필드의 값 Q2 ,i(i=1,3,6)은 「노드 장치 N2에 있어서 포트 ID로서 Q2 ,i가 할당된 포트에는 노드 장치 Ni가 접속된다」라는 것을 나타낸다.
예컨대, 노드 장치 N2는 어떤 포트 ID·Q2 ,i가 할당된 포트에서 수신한 데이터 프레임으로부터 LS의 값 Ni를 취득하고, 취득된 값 Ni와 포트 ID·Q2 ,i를 대응시켜, 도 33과 같은 인접 노드 관리 테이블(103a)을 작성한다.
이어서, 도 10과 도 11을 참조하면, 제2 실시형태에서도 가중치 테이블(104)의 형식은 제1 실시형태와 마찬가지다. 그러나, 제2 실시형태에서는 가중치가 「0」과 「1」의 2치이다.
제1 실시형태에서는, 무선 링크의 품질도 고려하여, 보다 적절한 인접 노드 장치를 LD로서 선택하기 위해서, ACK 프레임이 수신되는지 여부에 따라서 식 (6) 또는 식 (7)에 의해 가중치가 조금씩 조정된다. 그러나, 포트 사이가 1대1로 접속되는 유선 링크의 상태는 이하의 (R1)과 (R2) 중 양자택일이다.
(R1) 반송파 신호가 검출되기 때문에, 사실상 100% 통신이 성공한다고 보증된다.
(R2) 반송파 신호가 검출되지 않는 링크 다운 상태이기 때문에, 통신이 실패하는 것이 분명하다.
그 때문에, 제2 실시형태에서는, 가중치가 2치라도 좋다. 가중치의 조작에 관한 상세한 내용은 후술한다.
이어서 도 12와 도 13을 참조하면, 제2 실시형태에서도 FID 관리 테이블(105)의 형식은 제1 실시형태와 마찬가지다.
이어서 도 14를 참조하면, 제2 실시형태에서는 수신된 프레임의 타입에 의한 단계 S202에서의 분기가 없고, 따라서 단계 S203과 S206도 존재하지 않는다.
단, 제2 실시형태에서는 단계 S203으로부터 호출되는 도 15의 처리 대신에, 링크 관리부(108)가 정기적으로 각 포트의 상태를 감시한다. 그리고, 링크 관리부(108)는 반송파 신호가 검출된 포트의 포트 ID를 갖는 엔트리가 도 33의 인접 노드 관리 테이블(103a)에 존재하는지 여부를 조사한다.
엔트리가 존재하면, 링크 관리부(108)는 발견된 엔트리의 최종 갱신 시각 필드의 값을 현재 시각에 갱신한다. 엔트리가 발견되지 않으면, 링크 관리부(108)는 신규 엔트리를 작성하여, 반송파 신호가 검출된 포트의 포트 ID와 현재 시각을 신규 엔트리에 등록한다. 이 단계에서는 노드 ID 필드는 비어 있다.
또한, 제2 실시형태에서는, 도 14의 단계 S201에서 데이터 프레임이 수신되었을 때, 프레임 분기 처리부(106)는 단계 S204의 처리와 함께, 또 다음 처리를 한다. 즉, 프레임 분기 처리부(106)는 데이터 프레임의 LS의 값과, 데이터 프레임을 수신한 포트의 포트 ID를 링크 관리부(108)에 통지한다.
그러면, 링크 관리부(108)는 도 33의 인접 노드 관리 테이블(103a)을 검색하여, 이하의 (S1)~(S4)의 조작을 한다.
(S1) 노드 ID 필드의 값이 데이터 프레임의 LS의 값에 일치하고, 또한 포트 ID 필드의 값이 데이터 프레임을 수신한 포트의 포트 ID에 일치하는 엔트리가 있는 경우.
링크 관리부(108)는 그 엔트리의 최종 갱신 시각으로서 현재 시각을 설정한다.
(S2) 노드 ID 필드가 비어 있고, 또한 포트 ID 필드의 값이 데이터 프레임을 수신한 포트의 포트 ID에 일치하는 엔트리가 있는 경우.
링크 관리부(108)는 그 엔트리에 있어서, 노드 ID로서 데이터 프레임의 LS의 값을 설정하고, 최종 갱신 시각으로서 현재 시각을 설정한다. 또한, 도 15에 있어서의 「수신된 헬로 프레임의 LS의 값」 대신에, 수신한 데이터 프레임의 LS의 값을 이용하여, 링크 관리부(108)는 도 15의 단계 S305~S308의 처리를 한다.
(S3) 포트 ID 필드의 값이 데이터 프레임을 수신한 포트의 포트 ID에 일치하는 엔트리가 없는 경우.
링크 관리부(108)는 인접 노드 관리 테이블(103a)에 신규 엔트리를 작성하고, 신규 엔트리에, 데이터 프레임의 LS의 값과, 데이터 프레임을 수신한 포트의 포트 ID와, 현재 시각을 설정한다. 또한, 도 15에서의 「수신된 헬로 프레임의 LS의 값」 대신에, 수신된 데이터 프레임의 LS의 값을 이용하여, 링크 관리부(108)는 도 15의 단계 S305~S308의 처리를 한다.
(S4) 노드 ID 필드의 값이 데이터 프레임의 LS의 값에 일치하지만, 포트 ID 필드의 값은, 데이터 프레임을 수신한 포트의 포트 ID에 일치하지 않는 엔트리가 있는 경우.
링크 관리부(108)는 그 엔트리를 삭제한다. 즉, 링크 관리부(108)는 케이블의 접속 전환을 인접 노드 관리 테이블(103a)에 반영시킨다.
계속해서, 도 16을 참조하여 제1 실시형태와의 차이를 설명하면, 제2 실시형태에서는 헬로 프레임은 사용되지 않기 때문에, 도 16의 처리도 이루어지지 않는다.
또한, 도 17~도 19의 각종 에이징 처리는 제2 실시형태에서도 제1 실시형태와 마찬가지다.
제2 실시형태에 있어서, 도 20~도 23의 데이터 프레임 수신 처리는 다음과 같이 변형된다.
도 20에 있어서, 단계 S803은 생략된다. 또한, 도 21의 단계 S816에서는, 초기 가중치로서 송신 가능함을 나타내는 「0」이 사용된다.
또한, 제2 실시형태에서는 ACK 프레임이 존재하지 않기 때문에, 당연히 타임아웃을 계기로 한 LD의 재선택도 이루어지지 않는다. 그리고, 제2 실시형태에서는 가중치가 2치이다. 따라서, 도 22의 단계 S818은 다음과 같이 변형된다. 즉, 데이터 프레임 처리부(110)는 취득된 LD의 값에 대응하는 가중치가 1인지 여부를 판단하여, 그 가중치가 1이라면 처리는 도 23의 단계 S830으로 이행하고, 그 가중치가 0이면 처리는 단계 S819로 이행한다.
그리고, 단계 S819에서, 데이터 프레임 처리부(110)는 제1 실시형태와 같은 식으로 하여 새로운 데이터 프레임을 작성하여 송신부(102)에 출력한다. 그러면, 제2 실시형태의 송신부(102)는 인접 노드 관리 테이블(103a)을 참조하여, LD로서 지정된 인접 노드 장치에 대응하는 포트 ID를 특정한다. 그리고, 송신부(102)는 데이터 프레임 처리부(110)로부터 수신된 새로운 데이터 프레임을 특정 포트 ID가 할당된 포트에 출력한다.
그 후, 제2 실시형태에서는 단계 S820이 생략된다. 단계 S821~S824는 제1 실시형태와 마찬가지다.
또한, 제2 실시형태에서는 ACK 프레임이 없기 때문에, 단계 S825와 S826은 생략된다. 그리고, 데이터 프레임 처리부(110)는 단계 S819에서 송신부(102)에 송신을 다 의뢰한 시점에서, 「송신 성공」이라고 인식하여, 수신된 데이터 프레임을 버퍼부(109)로부터 삭제한다.
따라서, 단계 S822 또는 S824 직후에, 데이터 프레임 처리부(110)는 단계 S827을 실행하게 된다. 다만, 제2 실시형태에서는, 단계 S827에서, 데이터 프레임 처리부(110)가 가중치를 갱신하지 않는다. 왜냐하면 제2 실시형태에서의 가중치는 0과 1의 2치이며, 가중치는 0 그대로도 좋기 때문이다.
또한, 단계 S819에서 데이터 프레임 처리부(110)가 이미 「송신 성공」이라고 인식하기 때문에, 단계 S828과 S829는 제2 실시형태에서는 존재하지 않는다.
그리고, 도 23에서는, 단계 S830에서의 송신이 단계 S819와 같은 식으로 변형된다. 또한, 단계 S836 및 S837은 단계 S825 및 S826과 마찬가지로 생략된다. 단계 S838은 단계 S828과 마찬가지로 생략된다. 그리고, 단계 S839에서는, 단계 S827과 마찬가지로, 가중치의 갱신이 생략되고, 최종 갱신 시각만이 갱신된다.
그리고, 제2 실시형태에서는 ACK 프레임이 존재하지 않기 때문에, 도 25와 26의 처리도 존재하지 않는다.
또한, 도 27~도 28의 데이터 프레임 송신 처리는 제2 실시형태에서는 다음과 같이 변형된다.
도 27의 단계 S1101~S1110은 제1 실시형태와 마찬가지다. 그러나, 도 28의 단계 S1111은 단계 S818과 같은 식으로 변형된다. 즉, 데이터 프레임 처리부(110)는 단계 S1111에 있어서, 취득한 LD의 값에 대응하는 가중치가 1인지 여부를 판단하여, 그 가중치가 1이면 처리는 단계 S1112로 이행하고, 그 가중치가 0이라면 처리는 단계 S1114로 이행한다.
또한, 단계 S1114에서의 송신은 단계 S819와 같은 식으로 변형되어, 수신한 데이터 프레임은 새로운 데이터 프레임의 송신 후 곧바로 버퍼부(109)로부터 삭제된다. 따라서 단계 S1115는 생략된다.
단계 S1116~S1120은 제1 실시형태와 마찬가지지만, 단계 S1121, S1122, S1124 및 S1125는 제2 실시형태에는 존재하지 않는다. 또한, 단계 S1123은 단계 S827과 같은 식으로 변형된다. 즉, 데이터 프레임 처리부(110)는 단계 S1123에서 가중치를 갱신하지 않고, 최종 갱신 시각만 갱신한다.
또한, 도 29의 처리는 도 23의 처리와 마찬가지로, 제2 실시형태에서 변형된다.
계속해서, 제3 실시형태에 관해서 설명한다. 제3 실시형태는 제1 및 제2 실시형태를 합한 실시형태이며, 유선 접속과 무선 접속이 혼재하는 네트워크에 적용되는 실시형태이다.
구체적으로는, 제3 실시형태에서는 하기 3 종류의 노드 장치가 네트워크 내에 혼재해 있다.
(T1) 제1 실시형태의 노드 장치(100)와 같이 무선 링크를 통해 인접 노드 장치와 통신하는 무선 타입의 노드 장치.
(T2) 제2 실시형태의 노드 장치(100a~100h)와 같이 유선 링크를 통해 인접 노드 장치와 통신하는 유선 타입의 노드 장치.
(T3) 제1 실시형태의 노드 장치(100)와 같이 무선 모듈(206)에 의해 실현되는 수신부(101) 및 송신부(102)를 가지고, 또한, 제2 실시형태의 노드 장치(100a~100h)와 같이 유선 접속용의 포트와 PHY 칩을 구비하는 혼합 타입의 노드 장치. 즉, 무선 링크를 통해 인접 노드 장치와 통신할 수도 있고, 또한 유선 링크를 통해 인접 노드 장치와 통신할 수도 있는 혼합 타입의 노드 장치.
한편, 혼합 타입의 노드 장치에서는, 예컨대 도 33과 같은 인접 노드 관리 테이블이 사용되더라도 좋다. 그 경우, 포트 ID 필드에는, 유선 링크를 통한 인접 노드 장치에 대해서는 포트 ID의 값이 저장되고, 무선 링크를 통한 인접 노드 장치에 대해서는 포트 ID로서는 이용되지 않는 특정한 값이 저장되더라도 좋다. 혼합 타입의 노드 장치는 무선 링크를 통한 프레임의 송수신에 대해서는 제1 실시형태의 노드 장치(100)와 같은 식으로 동작하고, 유선 링크를 통한 데이터 프레임의 송수신에 대해서는 제2 실시형태의 노드 장치(100a~100h)와 같은 식으로 동작한다.
이어서, 제4 실시형태에 관해서 설명한다. 제4 실시형태는 ACK 프레임을 이용하지 않도록 무선 네트워크에 관한 제1 실시형태를 변형한 실시형태이다.
여기서, 우선 먼저 무선 네트워크에 있어서 ACK 프레임을 이용하지 않는 것의 의미에 관해서 설명한다.
일반적으로, ACK 프레임을 이용함으로써, 데이터 프레임이 인접 노드 장치에 성공적으로 도달했다고 하는 도달 보증을 얻을 수 있다. 그러나, 데이터 프레임에 대하여 ACK 프레임을 회신함으로써, 레이턴시의 증대, 실질적인 작업 처리량의 저하와 같은 영향이 출현하기 때문에, 네트워크 시스템 전체적으로 성능이 저하되는 경우도 있다.
또한, 도 22에 도시하는 바와 같이, ACK 프레임이 수신되지 않는 것이 원인으로 노드 장치(100)가 차례차례 다른 인접 노드 장치를 LD로서 선택하는 경우가 있다. 그러면, 경로가 차례차례 전환되어, 결과적으로 동일한 GS로부터 동일한 GD로 어드레스되어 보내진 복수의 데이터 프레임 사이에서, 순서가 유지되지 않을 가능성이 있다. 즉, 복수의 데이터 프레임이 GS로부터 송신된 순서와 이들 복수의 데이터 프레임이 GD에 도달하는 순서가 다를 지도 모른다.
한편, 무선 네트워크에 있어서 ACK 프레임을 없애면, 데이터 프레임이 인접 노드 장치에 도달한다고 하는 보증은 되지 않게 되는데, 반대로 GD에의 도달 순서는 유지된다.
즉, 도달 보증과 순서 보증은 트레이드오프의 관계에 있다. 따라서, 네트워크의 용도, 혹은 데이터 프레임의 페이로드에 어느 프로토콜의 PDU가 포함되는가라는 요소를 고려하여, 무선 네트워크에 있어서 ACK 프레임을 이용하는지 여부가 결정되더라도 좋다.
예컨대, 데이터 프레임의 페이로드가 이더넷 프레임이고, 이더넷 프레임의 페이로드가 IP 데이타그램이며, IP 데이타그램의 페이로드가 TCP(Transmission Control Protocol) 세그멘트라고 하는 경우가 있을 수 있다. 이 경우, TCP는 TCP 세그멘트가 드롭하는 것을 전제로 설계되기 때문에, ACK 프레임에 의한 도달 보증은 없어도 좋다. 즉, 도달하지 않는 데이터 프레임이 있었다고 해도, 상위층의 프로토콜인 TCP에 의해, 재송신 제어가 이루어지기 때문에, 문제는 생기지 않는다. 반대로, TCP에서는 순서 보증이 필요하다.
따라서, ACK 프레임을 이용하지 않는 제4 실시형태는, 예컨대 상기한 바와 같이 TCP 세그멘트가 도 7의 데이터 프레임(301)의 페이로드 안에 포함되는 경우 등에 적합하다.
구체적으로는, 제4 실시형태는 ACK 프레임이 존재하지 않는다고 하는 점에서 제2 실시형태와 마찬가지다. 단, 제4 실시형태에서는, 인접 노드 장치는 제1 실시형태와 마찬가지로 헬로 프레임을 이용하여 관리된다.
따라서, 제4 실시형태에서는, 도 14에서 단계 S206이 생략되지만, 도 15~도 19의 처리는 제1 실시형태와 마찬가지다. 또한, 도 20에서는 제2 실시형태와 마찬가지로 단계 S803이 생략되지만, 계속되는 도 21의 처리는 제1 실시형태와 마찬가지다.
도 22에 있어서, 단계 S818은 제2 실시형태와 같은 식으로 변형되고, 단계 S819는 제1 실시형태와 같은 식이다. 단, 제4 실시형태에서 데이터 프레임 처리부(110)는 단계 S819에서 송신부(102)에 송신을 다 의뢰한 시점에서, 「송신 성공」이라고 인식하여, 수신한 데이터 프레임을 버퍼부(109)로부터 삭제한다. 따라서, 단계 S820은 제2 실시형태와 마찬가지로 생략된다.
단계 S821~S824는 제1 실시형태와 마찬가지다. 그리고, 단계 S825와 S826은 제2 실시형태와 마찬가지로 생략된다. 따라서, 단계 S822 또는 S824 직후에, 데이터 프레임 처리부(110)는 단계 S827을 실행하게 되어, 단계 S828과 S829는 존재하지 않는다. 따라서, 가중치가 식 (7)에 의해 갱신되는 일은 없다.
한편, 단계 S827은 제1 실시형태와 같은 식이라도 좋고, 제2 실시형태와 같은 식으로 가중치의 갱신이 생략된 단계라도 좋다.
그리고, 도 23에서는, 단계 S830에서의 송신이 단계 S819와 같은 식으로 변형된다. 또한, 단계 S836 및 S837은 단계 S825 및 S826과 마찬가지로 생략되고, 단계 S838은 단계 S828과 마찬가지로 생략된다. 단계 S839는 제1 실시형태와 같은 식이라도 좋고, 제2 실시형태와 같은 식으로 가중치의 갱신이 생략된 단계라도 좋다.
제4 실시형태에서는 ACK 프레임이 존재하지 않기 때문에, 도 25와 도 26의 처리도 존재하지 않는다.
또한, 도 27~도 28의 데이터 프레임 송신 처리는 제4 실시형태에서는 다음과 같이 변형된다.
도 27의 단계 S1101~S1110은 제1 실시형태와 같은 식이지만, 도 28의 단계 S1111은 단계 S818과 같은 식으로 변형된다. 즉, 데이터 프레임 처리부(110)는 단계 S1111에 있어서, 취득한 LD의 값에 대응하는 가중치가 1인지 여부를 판단하여, 그 가중치가 1이라면 처리는 단계 S1112로 이행하고, 해당 가중치가 0이라면 처리는 단계 S1114로 이행한다.
또한, 단계 S1114에서의 송신은 단계 S819와 같은 식으로 변형되고, 수신된 데이터 프레임은 새로운 데이터 프레임의 송신 후 곧바로 버퍼부(109)로부터 삭제된다. 따라서 단계 S1115는 생략된다.
단계 S1116~S1120은 제1 실시형태와 같은 식이지만, 단계 S1121, S1122, S1124 및 S1125는 제4 실시형태에는 존재하지 않는다. 따라서, 가중치가 식 (7)에 의해 갱신되는 일은 없다.
또한, 단계 S1123은 제1 실시형태와 같은 식이라도 좋고, 제2 실시형태와 같은 식으로 가중치의 갱신이 생략된 단계라도 좋다.
또한, 도 29의 처리는 도 23의 처리와 마찬가지로, 제4 실시형태에 있어서 변형된다.
계속해서, 제5 실시형태에 관해서 설명한다. 제5 실시형태는 제1 실시형태와 제4 실시형태를 절충한 실시형태이며, ACK 프레임의 빈도가 조정되는 실시형태이다.
즉, 제5 실시형태에서는, ACK 프레임을 요구하는 제1종의 데이터 프레임과, ACK 프레임을 요구하지 않는 제2종의 데이터 프레임이 이용된다. 제1종과 제2종의 데이터 프레임은 도 7에 도시하는 타입 필드의 값에 의해 구별된다.
예컨대, 제1종의 데이터 프레임의 타입 필드에는, 도 7의 데이터 프레임(303)과 마찬가지로, 정해진 상수 D가 지정되고, 제2종의 데이터 프레임의 타입 필드에는 다른 상수 C가 지정된다. 구체적으로는, 타입 필드가 2 비트일 때, 예컨대 D=(00)2 또 C=(01)2일 수 있다.
그런데, ACK 프레임을 이용하는 목적의 하나는 제4 실시형태에 관해서 설명한 대로 도달 보증이지만, 다른 목적은 링크 품질의 장점을 파악하기 위해서이다.
일반적으로, 노드 장치 Ni와 Nj 사이의 무선 링크 Li ,j의 통신 품질이 매우 나쁘면, 노드 장치 Ni에서 노드 장치 Nj로(혹은 노드 장치 Nj에서 노드 장치 Ni로)의 무선 링크 Li ,j를 통한 통신은 거의 불가능하다. 헬로 프레임과 같이 극히 짧은 프레임에서조차도, 매우 통신 품질이 나쁜 무선 링크 Li ,j를 통해 노드 장치 Ni에서 노드 장치 Nj로(혹은 노드 장치 Nj에서 노드 장치 Ni로) 도달하기는 어렵다.
한편, 노드 장치 Ni와 Nj 사이의 무선 링크 Li ,j의 통신 품질이 매우 좋으면, 데이터 프레임과 같이 긴 프레임이라도 무선 링크 Li ,j를 통해 노드 장치 Ni에서 노드 장치 Nj로(혹은 노드 장치 Nj에서 노드 장치 Ni로) 성공적으로 도달한다.
그러나, 노드 장치 Ni와 Nj 사이의 무선 링크 Li ,j의 통신 품질이 중간 정도라면, 「극히 짧은 프레임에 대해서는 무선 링크 Li ,j를 통한 송신이 성공하지만, 긴 프레임에 대해서는 무선 링크 Li ,j를 통한 송신이 실패한다」는 경우도 있을 수 있다. 도 22의 단계 S826 등에서 송신 실패라고 판단되는 경우 중에는, 일시적으로 링크에 장해가 발생한 경우뿐만 아니라, 상기한 바와 같이, 무선 링크의 통신 품질이 헬로 프레임의 송신에는 충분하지만 데이터 프레임의 송신에는 불충분한 경우도 포함된다.
여기서 도 22의 단계 S827과 S828에 주목하면, ACK 프레임이 수신되는지 여부에 따라서, 가중치가 점감 또는 점증한다. 따라서, 학습된 결과의 가중치에는 ACK 프레임이 수신되는 비율이 반영되어 있고, 즉 통신 품질의 장점이 반영되어 있다. 결국, 통신 품질이 좋은 링크를 통해 인접해 있는 노드 장치에 대응하는 가중치일수록 값이 작고, 따라서, LD로서 보다 우선적으로 선택된다.
그런데, 이와 같이 ACK 프레임은 도달 보증 이외에 링크 품질의 장점을 파악하기 위해서도 쓸 수 있지만, 제4 실시형태에 관해서 설명한 대로, 네트워크 시스템 전체의 성능 저하를 초래하는 경우도 있다. 그래서, 제5 실시형태에서는 상기한 바와 같이 제1종과 제2종의 데이터 프레임이 사용된다.
예컨대, 노드 장치(100)는 기본적으로는 성능 향상을 위해 제2종의 데이터 프레임을 이용하고, 때때로 링크 품질의 장점을 파악하기 위해서 불시 검사와 같은 식으로 제1종의 데이터 프레임을 이용하더라도 좋다. 혹은, 상위층의 프로토콜 등에 따라서, GS로서 데이터 프레임을 송신하는 노드 장치(100)가 제1종과 제2종 중 어느 쪽이 적절한지를 판단하여, 데이터 프레임의 타입 필드에 값을 설정하더라도 좋다.
제5 실시형태에는, 예컨대 이하의 (U1)~(U4)와 같은 여러 가지 변형이 있을 수 있다.
(U1) GS로서 데이터 프레임을 송신하는 노드 장치(100)에 있어서, 데이터 프레임 처리부(110)는 마지막으로 데이터 프레임을 송신한 시각 Tlast을 기억한다. 그리고, 데이터 프레임을 송신할 때에, 현재 시각 Tnow과 최종 송신 시각 Tlast의 차가 정해진 간격 Iack 이상인 경우에만, 데이터 프레임 처리부(110)는 제1종을 나타내는 정해진 값 D를 데이터 프레임의 타입 필드에 설정한다. 그 밖의 경우, 데이터 프레임 처리부(110)는 제2종을 나타내는 정해진 값 E를 데이터 프레임의 타입 필드에 설정한다. 예컨대, 간격 Iack은 10초 등의 비교적 긴 시간이어도 된다.
(U2) GS로서 데이터 프레임을 송신하는 노드 장치(100)에 있어서, 데이터 프레임 처리부(110)는 GD마다 혹은 선택한 LD마다 시각 Tlast을 기억하도록 하여, 상기 (U1)과 같은 식으로 동작하더라도 좋다.
(U3) GS로서 데이터 프레임을 송신하는 노드 장치(100)에 있어서, 데이터 프레임 처리부(110)는 송신한 데이터 프레임의 수 C를 카운트한다. 즉, 데이터 프레임을 송신할 때에, 데이터 프레임 처리부(110)는 C를 인크리멘트한다. 카운트 값 C가 정해진 값 Cack과 같은 경우에만, 데이터 프레임 처리부(110)는 제1종을 나타내는 정해진 값 D를 데이터 프레임의 타입 필드에 설정하고, C를 제로로 리셋한다. 그 밖의 경우, 데이터 프레임 처리부(110)는 제2종을 나타내는 정해진 값 E를 데이터 프레임의 타입 필드에 설정한다. 예컨대, 정해진 값 Cack은 수천과 같은 비교적 큰 수라도 좋다.
(U4) GS로서 데이터 프레임을 송신하는 노드 장치(100)에 있어서, 데이터 프레임 처리부(110)는 GD마다 혹은 선택한 LD마다 송신된 데이터 프레임의 수 C를 카운트하도록 하여, 상기 (U3)과 같은 식으로 동작하더라도 좋다.
한편, 인접 노드 장치로부터 수신한 데이터 프레임을 전송하는 노드 장치(100)에 있어서, 데이터 프레임 처리부(110)는 수신된 데이터 프레임에 지정된 타입의 값을 그대로, 송신하는 데이터 프레임의 타입 필드에 카피한다.
혹은, 선택한 LD에 대응시켜진 가중치에 따라서, 데이터 프레임 처리부(110)는 타입 필드의 값을 재기록하더라도 좋다. 예컨대, 선택한 LD에 대응시켜진 가중치가 정해진 임계치 이상인 경우, 링크 품질이 나쁘다고 추측된다. 그래서, 데이터 프레임 처리부(110)는 수신된 데이터 프레임에 있어서의 타입 필드의 값에 관계 없이, 송신하는 데이터 프레임의 타입 필드에, 제2종을 나타내는 정해진 값 E를 설정하더라도 좋다.
또는, 타입 필드가 3 비트 이상으로 표현되고, 데이터 프레임에 이하의 (V1)~(V4)와 같은 복수의 서브타입이 있어도 좋다.
(V1) ACK 프레임을 요구하고, 중계 시의 타입 필드 값의 재기록이 허용되지 않는 데이터 프레임.
(V2) ACK 프레임을 요구하고, 중계 시의 타입 필드 값의 재기록이 허용되는 데이터 프레임.
(V3) ACK 프레임을 요구하지 않고, 중계 시의 타입 필드 값의 재기록이 허용되지 않는 데이터 프레임.
(V4) ACK 프레임을 요구하지 않고, 중계 시의 타입 필드 값의 재기록이 허용되는 데이터 프레임.
이상, 제1~제5 실시형태에 관해서 상세히 설명했지만, 이들 실시형태의 이점의 이해를 돕기 위해서, 계속해서 제1 및 제2 비교예에 관해서 설명한다. 한편, 이하에서는 설명의 편의상, 「수신한 데이터 프레임의 GS와 FID의 값이 과거에 송신한 데이터 프레임의 GS와 FID의 값과 같은 것인지 여부」라는 판정(즉, 도 21의 단계 S807)을 「루프 판정」이라고 부른다.
도 34와 도 35는 루프 판정이 있지만 백트랙 동작이 없는 제1 비교예에 관해서 설명하는 도면이다. 도 34와 도 35에는, 도 6과 마찬가지로, 도 1의 네트워크(1)에서의 데이터 프레임의 전송 상태가 도시되어 있다.
제1 비교예의 노드 장치는 제1 실시형태와 같은 FID 관리 테이블을 가지며, 루프 판정을 행한다. 즉, 도 21의 단계 S809와 마찬가지로, 제1 비교예의 노드 장치도, 과거에 송신한 데이터 프레임이 수신된 경우, 송신할 때에 선택한 LD에 대응하는 가중치를 최대치로 설정한다.
그러나, 제1 비교예의 노드 장치는 백트랙 동작을 하지 않는다. 즉, 제1 비교예의 노드 장치에서는, FID 관리 테이블의 OLS 필드는 OLS에 대응하는 노드 장치를 LD의 후보에서 제외시키기 위해서 참조될(도 21의 단계 S817과 도 22의 단계 S829를 참조할) 뿐이다. 그리고, 제1 비교예에서는, 도 23의 단계 S830~S839의 처리 대신에, 단순히 단계 S838과 같은 식으로, 수신한 데이터 프레임을 파기하는 처리만이 이루어진다.
따라서, 도 1의 노드 장치 N1~N7이 모두 제1 비교예의 노드 장치인 경우에, 노드 장치 N1이 GD로서 노드 장치 N7을 지정하고, 노드 장치 N4와 N7 사이의 링크에 장해가 발생하면, 데이터 프레임은 도 34 또는 도 35와 같이 전송된다.
도 34에 있어서, 단계 S106까지는 도 6의 제1 실시형태와 같은 식이기 때문에, 설명을 생략한다.
제1 실시형태와 마찬가지로, 단계 S106에서 데이터 프레임을 수신한 노드 장치 N3은 단계 S103에서 LD로서 선택한 노드 장치 N4에 대응하는 가중치를 1로 설정한다. 그리고, 새롭게 노드 장치 N5를 LD로서 선택하고, 단계 S107에서 데이터 프레임을 송신한다.
그러면, 단계 S107에서 데이터 프레임을 수신한 노드 장치 N5는 FID 관리 테이블에 기초하여, 단계 S106에서 송신한 것과 동일한 데이터 프레임이 수신되었다고 인식한다. 그리고, 노드 장치 N5는 단계 S106에서 LD로서 선택한 노드 장치 N3의 가중치를 최대치로 설정한다.
여기서, 노드 장치 N5에는, OLS인 노드 장치 N4와, 가중치가 최대치로 설정된 노드 장치 N3밖에 인접해 있지 않다. 따라서, 노드 장치 N5는 LD로서 선택 가능한 인접 노드 장치가 없다고 판단하여, 단계 S107에서 수신한 데이터 프레임을 파기한다. 이렇게 해서 데이터 프레임은 GD인 노드 장치 N7에 도달하지 않고, 네트워크(1)로부터 소멸해 버린다.
그리고, 노드 장치 N3에서는, 「단계 S107의 송신 후, 어떤 인접 노드 장치로부터도 동일한 데이터 프레임이 돌아오지 않는다」라는 상황이다. 따라서, 노드 장치 N3은 「GD로서 노드 장치 N7이 지정된 데이터 프레임을 송신할 때에 LD로서 노드 장치 N5를 선택하는 것은 적절하다」고 잘못된 학습을 해 버린다. 마찬가지로, 노드 장치 N2도 「GD로서 노드 장치 N7이 지정된 데이터 프레임을 송신할 때에 LD로서 노드 장치 N3을 선택하는 것은 적절하다」고 잘못된 학습을 해 버린다.
즉, 제1 실시형태의 도 6의 예에서는, 단계 S109나 S110의 백트랙 동작에 의해서 잘못된 학습 결과가 고쳐지지만, 제1 비교예에서는, 잘못된 학습 결과가 고쳐지지 않는다.
그러면, 도 34의 데이터 프레임의 전송 후, 재차 노드 장치 N1이 GD로서 노드 장치 N7을 지정하고, 노드 장치 N4와 N7 사이의 링크가 장해로부터 복구되지 않는다고 하면, 다음은 도 35와 같이 데이터 프레임이 전송된다.
도 35의 단계 S101과 S102는 도 6과 같은 식이기 때문에 설명을 생략한다. 단계 S102에서 데이터 프레임을 수신한 노드 장치 N3은 도 34에서의 학습 결과에 기초해서, 단계 S103b에서 LD로서 노드 장치 N5를 선택하여, 데이터 프레임을 전송한다.
그러면, 도 34의 단계 S107의 수신에 의해, 「GD로서 노드 장치 N7이 지정된 경우, LD로서 노드 장치 N3은 선택 불능이다」라고 학습한 노드 장치 N5는 다른 인접 노드 장치 N4를 LD로서 선택한다. 그리고, 노드 장치 N5는 노드 장치 N4를 LD로서 지정하여, 단계 S104b에서 데이터 프레임을 송신한다.
이 시점의 노드 장치 N4에 있어서, GD인 노드 장치 N7에 대응하는 가중치 테이블에서는, 도 34의 단계 S104에서 송신 실패라고 판정되어 값이 증가한 노드 장치 N7의 가중치보다, 노드 장치 N3의 가중치가 작은 것으로 한다. 그러면, 노드 장치 N4는 노드 장치 N3을 LD로서 선택하여, 단계 S105b에서 데이터 프레임을 송신한다.
그러면, 노드 장치 N3은 단계 S103b에서 송신한 것과 동일한 데이터 프레임이 수신되었다고 인식하여, 노드 장치 N5의 가중치를 최대치로 설정한다. 그리고, 노드 장치 N3은 아직 LD로서 선택하지 않은 인접 노드 장치 N4를 새롭게 LD로서 선택하여, 단계 S106b에서 데이터 프레임을 송신한다.
그러면, 데이터 프레임을 수신한 노드 장치 N4는 단계 S105b에서 송신한 것과 동일한 데이터 프레임이 수신되었다고 인식하여, 노드 장치 N3의 가중치를 최대치로 설정한다. 그 결과, 노드 장치 N4는 LD로서 선택 가능한 인접 노드 장치가 남아 있지 않다고 판단하여, 단계 S106b에서 수신한 데이터 프레임을 파기한다. 이렇게 해서 데이터 프레임은 GD인 노드 장치 N7에 도달하지 않고, 네트워크(1)에서 소멸해 버린다.
그러나, 노드 장치 N2에서는, 「단계 S102의 송신 후, 어느 인접 노드 장치로부터도 동일한 데이터 프레임이 돌아오지 않는다」고 하는 상황이다. 따라서, 노드 장치 N2는 「GD로서 노드 장치 N7이 지정된 데이터 프레임을 송신할 때에 LD로서 노드 장치 N3을 선택하는 것은 적절하다」고 잘못된 학습을 해 버린다.
따라서, 그 후에도 노드 장치 N2는 GD로서 노드 장치 N7이 지정된 데이터 프레임을 송신할 때에 LD로서 노드 장치 N3을 계속해서 선택한다. 그 때문에, 노드 장치 N4와 N7 사이의 링크가 장해로부터 복구되지 않는 한, 데이터 프레임은 네트워크 내에서 소멸해 버린다.
이상과 같이, 노드 장치가 루프 판정을 했다고 해도, 백트랙 동작을 하지 않으면, GS의 노드 장치는 데이터 프레임이 네트워크 내에서 파기되어 소멸되는 것을 인식하지 않고서, 데이터 프레임을 계속해서 송신한다. 그 결과, 계속 보내져오는 데이터 프레임은 네트워크의 어딘가에서 계속해서 폐기된다. 따라서, 제1 비교예는 바람직하지 못하다.
도 36은 의사적(擬似的) 백트랙 동작은 하지만 루프 판정을 하지 않는 제2 비교예에 관해서 설명하는 도면이다.
제2 비교예의 노드 장치는 FID 관리 테이블(105)을 갖지 않고, 루프 판정도 하지 않는다. 또한, 제2 비교예의 노드 장치는 의사적 백트랙 동작을 한다.
즉, 제2 비교예의 노드 장치는 GD로서 자노드 장치 이외의 것이 지정된 데이터 프레임을 수신하면, 데이터 프레임의 LS 이외의 인접 노드 장치 중, 최대치가 아닌 가중치와 대응시켜져 있는 것을 LD로서 선택하여, 데이터 프레임을 송신한다. 그리고, 제2 비교예의 노드 장치는 송신이 성공할 때까지 순차 선택 가능한 인접 노드를 선택해 간다.
그 결과, 가중치가 최대치인 인접 노드 및 수신한 데이터 프레임의 LS 이외에, 모든 인접 노드 장치를 LD로서 시도하더라도 송신이 성공하지 않은 경우에, 제2 비교예의 노드 장치는 수신된 데이터 프레임의 LS로 데이터 프레임을 반송한다. 이 반송이 제2 비교예에서의 의사적 백트랙 동작이다.
도 36에 있어서, 단계 S101~S106은 제1 실시형태의 도 6과 같은 식이므로, 설명을 생략한다.
제2 비교예의 노드 장치는 FID 관리 테이블(105)을 갖지 않고, 루프 판정을 하지 않는다. 따라서, 노드 장치 N3은 단계 S106에서 데이터 프레임을 수신하면, 단계 S103과 같은 식으로 하여 재차 노드 장치 N4를 LD로서 선택하여, 단계 S107b에서 데이터 프레임을 송신한다.
그러면, 역시 FID 관리 테이블(105)을 갖지 않는 노드 장치 N4는 단계 S107b에서 데이터 프레임을 수신하면, 단계 S105와 같은 식으로 하여 재차 노드 장치 N5를 LD로서 선택하여, 단계 S108b에서 데이터 프레임을 송신한다.
이하 같은 식으로 하여, 루프 판정이 이루어지지 않는 제2 비교예에서는, 폐로(閉路) 〈N3, N4, N5〉 안에서 데이터 프레임이 영원히 계속해서 전송된다고 하는 무한 루프에 빠져 버린다. 따라서, 제2 비교예도 바람직하지 못하다.
이에 대하여, 제1~제5 실시형태의 노드 장치는 루프 판정과 백트랙 동작을 함께 하기 때문에, 애드혹 네트워크에 적합한 장치이다.
한편, 상기에서 설명한 각 실시형태는 서로 모순되지 않는 한, 적절하게 조합하는 것이 가능하다. 예컨대, 제3 실시형태와 제5 실시형태를 조합시킨 실시형태(즉, 유선 접속과 무선 접속이 혼재하는 네트워크에 있어서, ACK 프레임의 빈도 조정이 이루어지는 실시형태) 등이 가능하다.
또한, 본 발명은 상기한 실시형태에 한정되는 것이 아니라, 여러 가지로 변형 가능하다. 이하에 그 예를 몇 가지 설명한다.
변형의 제1 관점은 데이터 구조이다. 도 8~도 13은 테이블 형식으로 나타내고 있지만, 실시형태에 따라서 각종 데이터의 형식은 임의이며, 테이블, 유한 FIFO(First In First Out), 선형 리스트 등 임의의 데이터 구조를 이용할 수 있다.
예컨대, FID 관리 테이블(105)은 유한 FIFO로 실현되어도 된다. 이 경우, 엔트리는 오래된 것부터 순차 유한 FIFO에서 퇴출된다. 따라서, 도 19에 도시하는 FID 관리 테이블(105)의 에이징 처리는 불필요하다. 따라서, FID 관리 테이블(105)의 최종 갱신 시각 필드도 불필요하다.
구체적으로는, 도 22의 단계 S822, 도 23의 단계 S833, 도 28의 단계 S1118 및 도 29의 단계 S833a에서, 기존의 엔트리를 갱신하는 대신에, 신규 엔트리 작성과, 작성된 신규 엔트리에서의 값 설정이 이루어져도 된다.
예컨대, 단계 S822는 이하의 (W1)~(W3)의 처리로 대체된다.
(W1) 데이터 프레임 처리부(110)는 FID 관리 테이블(105)에 신규 엔트리를 작성한다.
(W2) 데이터 프레임 처리부(110)는 수신된 데이터 프레임의 GS 및 FID와 같은 값을 GS 및 FID로서 갖는 기존의 엔트리로부터, FID, GS, OLS의 각 필드의 값을 신규 엔트리에 카피한다.
(W3) 데이터 프레임 처리부(110)는 송신된 데이터 프레임의 LD의 값을 신규 엔트리의 LD로서 설정한다.
한편, 도 21의 단계 S806, 도 23의 단계 S831, 도 28의 단계 S1116 및 도 29의 단계 S831a에서는, 유한 FIFO의 가장 새로운 엔트리에서부터 오래된 엔트리로 향하는 순으로 각 엔트리가 순차 조사된다.
변형의 제2 관점은 가중치의 표현이다. 가중치를 나타내는 수치의 범위는 실시형태에 따라 임의이다. 예컨대, 상기한 예와 같이 0부터 1의 범위의 값으로 가중치를 나타내는 대신에, 0부터 255 범위의 정수에 의해 가중치를 나타내더라도 좋다. 또한, 상기 각 실시형태에서는, 우선도가 높을수록 가중치는 작지만, 실시형태에 따라서는 반대로 우선도가 높을수록 가중치가 클 수도 있다. 그 경우, 가중치를 변경하는 각 단계의 동작이 적절하게 변경된다.
변형의 제3 관점은 폴링(polling) 처리와 인터럽트 처리의 치환이다. 예컨대, 타이머 IC(203)는 데이터 프레임의 송신 후 ACK 프레임이 회신되지 않을 때에 타임아웃하기 위한 인터럽트 신호를 출력할 수도 있다. 즉, 도 26과 같이 ACK 처리부(107)가 버퍼부(109)의 각 엔트리의 최종 갱신 시각의 값을 폴링에 의해 조사하는 대신에, 버퍼부(109)의 각 엔트리의 최종 갱신 시각이 되면 타이머 IC(203)가 인터럽트 신호를 발생시키는 식의 실시형태도 가능하다.
변형의 제4 관점은 인접 노드 장치의 관리에 관한 것이다.
다른 노드 장치가 헬로 프레임을 송신하는 간격을 이미 알고 있는 경우, 링크 관리부(108)는 현재 인접 노드 장치로서 인식하고 있는 노드 장치로부터 다음에 헬로 프레임을 수신하는 시각을 예측할 수 있다. 예컨대, 네트워크 내의 모든 노드 장치에 있어서 헬로 프레임의 송신 간격 ΔThello가 같은 경우에는, 다른 노드 장치가 헬로 프레임을 송신하는 간격이 이미 알려져 있다.
또한, 도 7의 헬로 프레임(311) 대신에, 헬로 프레임의 송신 간격을 나타내는 필드를 더 갖는 다른 형식의 헬로 프레임이 사용되더라도 좋다. 그 경우, 링크 관리부(108)는 수신이 끝난 헬로 프레임으로부터, 인접 노드 장치로부터 이어서 헬로 프레임을 수신하는 시각을 예측할 수 있다.
이와 같이, 다른 노드 장치가 헬로 프레임을 송신하는 간격이 이미 알려진 경우는, 예컨대 인접 노드 관리 테이블(103)(도 9 참조)에 있어서, 최종 갱신 시각 필드가 생략되고, 대신에 다음과 같은 필드가 추가될 수도 있다.
(X1) 헬로 프레임의 수신에 연속해서 실패한 횟수를 기록하기 위한 연속 실패 횟수 필드
(X2) 이어서 헬로 프레임이 수신된다고 예측되는 시각을 기록하기 위한 예측 시각 필드
그리고, 링크 관리부(108)는 도 15의 단계 S302와 S304에서, 현재 시각을 최종 갱신 시각으로서 설정하는 대신에, 연속 실패 횟수의 값을 0으로 클리어하여, 헬로 프레임의 이미 알려진 송신 간격을 현재 시각에 더한 시각을 예측 시각으로서 설정할 수도 있다. 또한, 도 17의 단계 S502 대신에, 다음과 같은 처리가 이루어질 수도 있다.
즉, 주목 엔트리의 예측 시각 필드의 값이 현재 시각보다도 이른 시각을 나타내는 경우, 링크 관리부(108)는 주목 엔트리의 연속 실패 횟수의 값을 인크리멘트하여, 예측 시각 필드의 값을 헬로 프레임의 이미 알려진 송신 간격만큼 뒤로 변이시킨다. 그리고, 주목 엔트리의 연속 실패 횟수의 값이 정해진 횟수(예컨대 3회) 이상이라면, 처리는 단계 S503으로 이행하고, 주목 엔트리의 연속 실패 횟수의 값이 정해진 횟수 미만이라면, 처리는 단계 S505로 이행한다.
또한, 인접 노드 장치의 관리라는 제4 관점에서, 상기 각 실시형태는 다음과 같이 변형되더라도 좋다.
즉, 데이터 프레임을 수신할 때에도, 수신한 데이터 프레임의 LS의 값에 기초하여, 헬로 프레임 수신 처리와 같은 식으로 하여, 필요에 따라서 링크 관리부(108)가 인접 노드 관리 테이블(103)과 가중치 테이블(104)을 갱신할 수도 있다. 마찬가지로, ACK 프레임을 수신할 때에도, 수신한 ACK 프레임의 LS의 값에 기초하여, 헬로 프레임 수신 처리와 같은 식으로 하여, 필요에 따라서 링크 관리부(108)가 인접 노드 관리 테이블(103)과 가중치 테이블(104)을 갱신할 수도 있다.
변형의 제5 관점은 LD를 선택할 때의 기준이다. 즉, 상기한 각 실시형태에서는, 데이터 프레임을 송신할 때에 가중치에 기초하여 LD가 선택되지만, LD의 선택에 있어서, 또한 링크 품질이 고려되더라도 좋다. 예컨대, 노드 장치(100)는 수신 전파 강도 등에 기초하여 무선 링크의 링크 품질을 계측할 수도 있다. 그리고, 데이터 프레임 처리부(110)는 가중치와 링크 품질의 함수로서 나타내어지는 평가치에 기초하여 LD를 선택할 수도 있다.
변형의 제6 관점은 ACK 프레임이 수신되지 않을 때의 처리에 관한 것이다.
예컨대, 도 22의 단계 S829에서는, 한번 단계 S826에서 「송신 실패」라고 판단된 인접 노드 장치가 LD의 후보에서 제외된다. 그러나, 한번 단계 S826에서 「송신 실패」라고 판단된 인접 노드 장치라도 후보에서 제외시키지 않고, 단계 S829에서 선택 가능하게 하는 실시형태도 가능하다.
그 경우, 단계 S818은 다음과 같이 변형된다. 즉, 데이터 프레임 처리부(110)는 취득된 LD의 값에 대응하는 가중치가 최대치인지 여부를 판단한다. 그리고, 그 가중치가 최대치일 때, 처리는 도 23의 단계 S830으로 이행하고, 그 가중치가 최대치 미만일 때, 처리는 단계 S819로 이행한다.
마찬가지로, 도 28의 단계 S1125도, 한 번 단계 S1122에서 「송신 실패」라고 판단된 인접 노드 장치를 LD의 후보에서 제외시키지 않도록 변형할 수 있다. 그리고, 단계 S1111은 취득된 LD의 값에 대응하는 가중치가 최대치인지 여부를 데이터 프레임 처리부(110)가 판단하도록 변형된다.
단계 S819와 S819가 상기한 바와 같이 변형되면, 예컨대 도 2의 노드 장치 N111이 GD로서 노드 장치 N101을 지정하는 데이터 프레임을 노드 장치 N116으로부터 수신했을 때, 다음과 같이 노드 장치 N111이 동작한다.
상기 데이터 프레임을 수신할 때에, 노드 장치 N111이 갖는 노드 장치 N101에 대응하는 가중치 테이블에 있어서, 인접 노드 장치 N105, N109, N115 각각의 가중치가 0.1, 0.6, 0.7인 것으로 한다. 그러면, 우선 LD로서 인접 노드 장치 N105가 선택된다.
만일, 노드 장치 N105로부터 ACK 프레임이 돌아오지 않는다고 하면, 노드 장치 N105의 가중치는 0.2로 갱신된다. 그리고, 제1 실시형태에서는, 송신에 실패한 노드 장치 N105는 LD의 후보에서 제외되고, 다음에 인접 노드 장치 N109가 LD로서 선택되는데, 이 변형예에서는 0.2<0.6<0.7이기 때문에, 재차 노드 장치 N105가 LD로서 선택된다.
그리고, 다시금 노드 장치 N105로부터는 ACK 프레임이 돌아오지 않는다고 하면, 노드 장치 N105의 가중치는 0.3으로 갱신되고, 0.3<0.6<0.7이기 때문에, 재차 노드 장치 N105가 LD로서 선택된다. 노드 장치 N111과 N105 사이의 링크의 상태가 개선되지 않는 한, 이하 같은 식으로 하여 반복해서 노드 장치 N105가 LD로서 선택되어서는 송신이 실패한다. 그리고, 노드 장치 N105의 가중치가 0.6(또는 0.7)으로 된 단계에서, 비로소 가중치 0.6과 대응시켜진 노드 장치 N109가 LD로서 선택된다.
이상 예시한 것과 같이, 한 번 「송신 실패」라고 판단된 인접 노드 장치를 LD의 후보에서 제외시키지 않는 것도 가능하다. 이 변형예는 「링크에 일시적으로 장해가 발생하더라도, 곧바로 링크가 장해로부터 복구된다」와 같은 경우에 적합하다. 예컨대, 단계 S818~S829의 반복 루프의 실행 중에 링크가 장해로부터 복구되면, 노드 장치(100)는 「LD로서 적합」이라고 지금까지의 학습 결과로부터 알고 있는 인접 노드 장치를, 순간적인 장해의 영향을 받지 않고서 LD로서 선택할 수 있다.
다만, 장해로부터의 복구가 항상 순간적이라고는 할 수 없다. 그래서, 제1 실시형태에서는, 경로의 수속에 걸리는 시간을 단축하기 위해서, 한 번 「송신 실패」라고 판단된 인접 노드 장치는 LD의 후보에서 제외된다. 즉, 한 번 「송신 실패」라고 판단된 인접 노드 장치를 LD의 후보에서 제외시킴으로써, 어떤 하나의 데이터 프레임에 관해서 노드 장치(100)가 LD를 최종적으로 결정하는 데 걸리는 시간이 단축된다. 그 결과, 네트워크 전체로서도, 데이터 프레임이 GS에서 송신되고 나서 GD에 도착하기까지의 레이턴시가 단축된다.
또한, 상기한 제6 관점으로부터의 변형예로서, 도 22의 단계 S828에 있어서 식 (7) 대신에 하기의 식 (8)을 이용하여 데이터 프레임 처리부(110)가 가중치를 갱신하는 변형예도 가능하다.
Wrevised=Wmax (8)
식 (8)에 의한 가중치의 갱신은 장해가 생긴 링크를 통해 노드 장치(100)에 인접해 있는 노드 장치를, 가중치가 갱신되는 그 엔트리가 에이징 처리에 의해 소거될 때까지, LD의 후보로부터 계속해서 제외시키는 것을 의미한다.
더욱이, 상기한 제6 관점에서는 다음과 같은 변형도 가능하다.
즉, 제1 실시형태에서는, 도 26에 도시하는 바와 같이, 한 번 데이터 프레임의 송신을 시도하더라도 ACK 프레임이 정해진 ACK 프레임 대기 시간 Twait 중에 수신되지 않으면, 송신 실패라고 간주된다. 그러나, 정해진 횟수(예컨대, 3회) 데이터 프레임의 송신을 시도하더라도 ACK 프레임이 회신되지 않을 때에 비로소 「송신 실패」라고 간주하는 실시형태도 가능하다.
예컨대, 송신이 끝난 데이터 프레임을 송신 횟수와 대응시켜 저장하는 송신 버퍼를 송신부(102)가 구비할 수도 있다. 송신부(102)는 최초로 데이터 프레임 처리부(110)로부터 데이터 프레임의 송신을 의뢰받았을 때, 송신 횟수로서 1을 설정하고, 데이터 프레임 처리부(110)로부터 출력된 데이터 프레임을 송신 버퍼에 저장한다. 그리고, ACK 처리부(107)는 도 26의 단계 S1003을 처리하는 대신에, 다음과 같이 동작하더라도 좋다.
즉, ACK 처리부(107)는 버퍼부(109)의 주목 엔트리에 저장되어 있는 데이터 프레임에 대응하는, 송신 버퍼에 있는 송신이 끝난 데이터 프레임을 GS 필드와 FID 필드의 값에 기초하여 특정한다.
그리고, ACK 처리부(107)가 특정한 송신이 끝난 데이터 프레임에 대응시켜져 있는 송신 횟수의 값이 정해진 횟수에 도달하면, ACK 처리부(107)는 단계 S1003을 처리하고, 처리는 계속해서 단계 S1004로 이행한다.
한편, ACK 처리부(107)가 특정한 송신이 끝난 데이터 프레임에 대응시켜져 있는 송신 횟수의 값이 정해진 횟수 미만이라면, 단계 S1003의 처리는 이루어지지 않고, 대신에 ACK 처리부(107)는 송신 횟수의 값을 인크리멘트한다. 그리고, 처리는 단계 S1004로 이행한다.
한편, 상기한 여러 가지 실시형태와 그 변형예에 관해서 정리하면, 다음과 같다.
노드 장치는 복수의 인접 노드 장치 중 임의의 하나로부터 프레임을 수신하는 수신 수단으로서, 예컨대 도 3의 수신부(101), 도 4의 무선 모듈(206), 도 21의 포트(211a-1~211a-4)와 거기에 접속된 PHY 칩 등을 구비한다.
또한, 도 3의 FID 관리 테이블(105)은 도 4의 DRAM(204) 네트워크나 플래시 메모리(205)에 의해 실현되어, 도 12나 도 13과 같은 정보를 저장한다. 이 FID 관리 테이블(105)은 이하의 (Y1)~(Y3)의 각 정보를 대응시켜 기억하는 기억 수단의 일례이다.
(Y1) 송신 대상 프레임을 식별하는 프레임 식별 정보
(Y2) 복수의 인접 노드 장치 중에서, 송신 대상 프레임의 송신처인 송신처 인접 노드 장치를 식별하는 송신처 인접 노드 식별 정보
(Y3) 송신 대상 프레임을 최초로 송신한 인접 노드 장치를 식별하는 기원 노드 식별 정보
한편, 상기 (Y1)의 송신 대상 프레임의 예는 도 22의 단계 S819, 도 23의 단계 S830, 도 28의 단계 S1114, 도 29의 단계 S830b 등에서 송신되는 데이터 프레임이다. 그리고, 프레임 식별 정보의 예는, GS 필드의 값과 FID 필드의 값의 조합이다.
또한, 상기 (Y2)의 송신처 인접 노드 식별 정보의 구체적인 예는 FID 관리 테이블(105)의 LD 필드에 저장되는 인접 노드 장치의 노드 ID이다.
그리고, 상기 (Y3)의 기원 노드 식별 정보의 구체적인 예는 FID 관리 테이블(105)의 OLS 필드에 저장되는 노드 ID이다.
상기한 바와 같이, 노드 장치(100)가 데이터 프레임을 중계하는 경우에는, 노드 장치(100)가 최초로 그 데이터 프레임을 수신했을 때의 그 데이터 프레임의 LS 필드의 값이 FID 관리 테이블(105)의 OLS 필드에 저장된다. 즉, 송신 대상 프레임을 최초로 송신한 인접 노드 장치의 노드 ID가 OLS 필드에 저장된다.
한편, 확장된 OLS의 정의에 따라, 노드 장치(100) 자신이 GS가 되는 경우는 FID 관리 테이블(105)의 OLS 필드에는 자노드 ID가 저장된다. 즉, 노드 장치(100) 자신이 송신 대상 프레임을 생성한 경우, OLS 필드에는 노드 장치(100) 자신의 식별 정보인 자노드 ID가 저장된다. 바꿔 말하면, OLS 필드에 저장되는 노드 ID는 노드 장치(100) 자신을 중심으로 한 홉 수 1 이하의 범위에 있어서, 노드 장치(100)가 송신 대상 프레임의 기원으로서 인식하고 있는 노드 장치의 노드 ID이다.
또한, 도 3의 가중치 테이블(104)은 도 4의 DRAM(204)이나 플래시 메모리(205)에 의해 실현되어, 도 10이나 도 11과 같은 정보를 저장한다. 이 가중치 테이블(104)은 데이터 프레임의 최종 수신처인 GD에 대응시켜 복수의 인접 노드 장치 각각에의 송신 가능성을 나타내는 송신 가능성 정보를 기억하는 기억 수단의 일례이다.
한편, 송신 가능성 정보는 상기 실시형태에서는, 구체적으로는 LD 필드의 노드 ID와 가중치의 조합을 각각 포함하는, 하나 또는 복수의 엔트리로 나타내어져 있다. 그리고, 송신 가능성은, 예컨대 「가중치가 1이면 송신 불능이고, 가중치가 1 미만이면 송신 가능이다」는 것과 같이 나타내어진다.
또한, 도 3의 데이터 프레임 처리부(110)는, 예컨대 도 4의 MPU(201)와 DRAM(204)에 의해 실현되어, 송신 가능성 정보를 갱신하는 갱신 수단의 일례이다. 수신부(101) 등의 수신 수단이 수신한 수신 프레임을 식별하는 수신 프레임 식별 정보가 FID 관리 테이블(105) 등의 기억 수단에 (Y1)의 프레임 식별 정보로서 기억되는 경우, 갱신 수단으로서의 데이터 프레임 처리부(110)는 송신 가능성 정보를 갱신한다.
구체적으로는, 이 경우에 갱신되는 송신 가능성 정보는 수신 프레임에 지정된 최종 수신처(즉, GD)인 수신 프레임 수신처에 대응시켜져, 가중치 테이블(104) 등의 기억 수단에 기억되는 송신 가능성 정보이다. 송신 가능성 정보는 FID 관리 테이블(105) 등의 기억 수단에, 수신 프레임 식별 정보와 대응시켜져 기억되는, (Y2)의 송신처 인접 노드 식별 정보에 의해 식별되는 제1 인접 노드 장치에의 송신 가능성이 「송신 불능」을 나타내도록 갱신된다.
구체적으로는, 예컨대 「FID 관리 테이블(105)의 LD 필드와 동일한 값을 LD 필드에 갖는, 가중치 테이블(104-i)의 엔트리에 있어서, 가중치를 1로 설정한다」고 하는 동작이 갱신 수단으로서의 데이터 프레임 처리부(110)에 의해 이루어진다.
또한, 데이터 프레임 처리부(110)와 송신부(102)는 협동하여, 복수의 인접 노드 장치 중에서, 송신 가능한 제2 인접 노드 장치를 선택하여, 제2 인접 노드 장치에 수신 프레임을 송신하는 송신 수단으로서 기능한다. 송신 수단의 일부로서의 데이터 프레임 처리부(110)는 수신 프레임 수신처에 대응시켜져 가중치 테이블(104) 등의 기억 수단에 기억되는 송신 가능성 정보에 기초하여, 제2 인접 노드 장치를 선택한다.
여기서, FID 관리 테이블(105) 등의 기억 수단에 있어서, 수신 프레임 식별 정보에 대응시켜진 (Y3)의 기원 노드 식별 정보로서 제3 인접 노드 장치가 기억되는 것으로 한다.
그러면, 수신 프레임 식별 정보가 FID 관리 테이블(105) 등의 기억 수단에 (Y1)의 프레임 식별 정보로서 기억되는 경우, 송신 수단으로서의 데이터 프레임 처리부(110)는 제3 인접 노드 장치를 송신 가능성 정보에 상관없이 송신 불능이라고 간주한다.
즉, 데이터 프레임 처리부(110)는 「OLS인 인접 노드 장치는 가중치에 상관없이 송신 불능이다」라고 간주하여, OLS인 인접 노드 장치를 LD의 후보에서 제외시킨다. 그리고, 송신 수단으로서의 데이터 프레임 처리부(110)는 제3 인접 노드 장치와는 다른, 송신 가능한 제2 인접 노드 장치를 선택한다.
또한, 데이터 프레임 처리부(110)와 송신부(102)는 협동하여 백트랙 수단으로서도 기능한다. 백트랙 수단으로서의 데이터 프레임 처리부(110)와 송신부(102)는 가중치 테이블(104) 등의 기억 수단의 송신 가능성 정보에 있어서, 복수의 인접 노드 장치 중에 송신 가능한 것이 없고, 또한 수신 프레임 식별 정보가 FID 관리 테이블(105) 등의 기억 수단에 (Y1)의 프레임 식별 정보로서 기억되는 경우에, 제3 인접 노드 장치에 수신 프레임을 송신한다.
한편, 여기서 「복수의 인접 노드 장치 중에 송신 가능한 것이 없다」란, 「가중치가 1인 등, 송신 가능성 정보에 의해 송신 불능이라고 표시되는 인접 노드 장치나, 상기한 바와 같이 송신 가능성 정보에 상관없이 송신 불능이라고 간주되는 제3 인접 노드 장치밖에 없다」고 하는 의미이다. 즉, 백트랙 수단으로서의 데이터 프레임 처리부(110)와 송신부(102)는 제3 인접 노드 장치 이외의 (0개, 1개 또는 복수의) 인접 노드 장치 중에 송신 가능한 것이 없는 경우에, 제3 인접 노드 장치에 수신 프레임을 송신한다.
또한, 노드 장치는 신규 프레임을 생성하는 생성 수단을 구비하여도 좋다. 생성 수단의 몇 가지 예는 하기 (Z1)~(Z4)와 같다.
(Z1) 도 3의 상위층 처리부(111)
(Z2) 도 32에 있어서 범용 LAN 포트(212e)를 통해 센서(504)에 접속되는 노드 장치(100e)가 구비하는, 도시되지 않는 MAC 칩과 MPU
(Z3) 도 32에 있어서 범용 LAN 포트(212g)를 통해 PC(505)와 접속되는 노드 장치(100g)가 구비하는, 도시되지 않는 MAC 칩과 MPU
(Z4) 도 32에 있어서 범용 LAN 포트(212a)를 통해 L2SW(502)와 접속되는 노드 장치(100a)가 구비하는, 도시되지 않는 MAC 칩과 MPU
한편, 상기한 여러 가지 실시형태와 그 변형예에 따르면, 데이터 전송 페이즈와는 독립된 사전의 경로 생성 페이즈가 별도 존재하는 것이 아니라, 데이터 전송 페이즈에서 동적으로 경로 생성이 이루어진다. 그 이점을 설명하면, 다음과 같다.
일반적으로, 데이터 전송 페이즈와는 독립된 사전의 경로 생성 페이즈를 갖는 통신 프로토콜에서는, 제어용의 짧은 PDU를 이용하여 경로가 생성된다. 그러나 무선 링크의 통신 품질에는 「제어용의 짧은 PDU의 통신에는 충분하지만, 데이터 전송용의 긴 PDU의 통신에는 불충분」하다고 하는 중간적인 레벨도 있을 수 있다. 그 이유의 하나는 PDU의 길이에 따라 통신 가능한 거리가 다르기 때문이다.
그 때문에, 경로 생성 페이즈에서는 유효하다고 생각된 경로가 데이터 전송 페이즈가 되어 비로소 현실적으로는 사용 불능이라고 판명될지도 모른다. 또한, 전파 상황은 항상 변할 수 있으며, 유선 네트워크에서도 노드 장치의 증설 혹은 철거 또는 케이블의 접속 전환 등은 항상 일어날 수 있다.
그러나, 상기한 여러 가지 실시형태와 그 변형예에 따르면, 데이터 전송 페이즈에서, 데이터 프레임을 송신하면서, 데이터 프레임의 송신이 가능한 경로가 동적으로 생성되어 간다. 따라서, 「현실적인 데이터 프레임의 전송에는 사용 불능인 경로가 데이터 전송 페이즈와는 독립된 경로 생성 페이즈로 만들어져 버린다」고 하는 낭비는 생기지 않는다.
또한, 상기한 여러 가지 실시형태와 그 변형예에 따르면, 데이터 전송 페이즈에 있어서의 네트워크 환경의 동적인 변화에도 동적으로 따르면서 경로가 선택된다. 그리고, 상기한 설명으로부터 분명한 바와 같이, 사람 손에 의한 설정 없이, 각 노드 장치의 자율 분산 협조의 결과로서, 동적으로 페이즈에서는 유효하다고 생각된 경로가 데이터 전송 페이즈가 되어 비로소 현실적으로는 사용 불능이라고 판명될지도 모른다. 또한, 전파 상황은 항상 변할 수 있으며, 유선 네트워크에서도 노드 장치의 증설 혹은 철거 또는 케이블의 접속 전환 등은 항상 일어날 수 있다.
그러나, 상기한 여러 가지 실시형태와 그 변형예에 따르면, 데이터 전송 페이즈에서, 데이터 프레임을 송신하면서, 데이터 프레임의 송신이 가능한 경로가 동적으로 생성되어 간다. 따라서, 「현실적인 데이터 프레임의 전송에는 사용 불능인 경로가 데이터 전송 페이즈와는 독립된 경로 생성 페이즈로 만들어져 버린다」고 하는 낭비는 생기지 않는다.
또한, 상기한 여러 가지 실시형태와 그 변형예에 따르면, 데이터 전송 페이즈에 있어서의 네트워크 환경의 동적인 변화에도 동적으로 따르면서 경로가 선택된다. 그리고, 상기한 설명으로부터 분명한 바와 같이, 사람 손에 의한 설정 없이, 각 노드 장치의 자율 분산 협조의 결과로서, 동적으로 적절한 경로가 찾아내어진다.
더욱이, 도 6의 예로부터도 분명한 바와 같이, 상기한 여러 가지 실시형태와 그 변형예에 따르면, 가령 백트랙이 생기더라도, 반드시 GS까지 영향이 미치는 것은 아니다. 즉, 국소적으로 발생하는 변화에 따라서, 한정된 국소적인 범위 안에서만 경로가 수정된다. 따라서, 「국소적인 변화가 네트워크 전체에 포지티브하게 피드백되어, 그 결과 네트워크 전체가 과부하 상태에 빠진다」고 하는 사태는 일어나지 않는다.

Claims (8)

  1. 복수의 인접 노드 장치 중 임의의 하나로부터 프레임을 수신하는 수신 수단과,
    송신 대상 프레임을 식별하는 프레임 식별 정보와, 상기 복수의 인접 노드 장치 중에서 상기 송신 대상 프레임의 송신처인 송신처 인접 노드 장치를 식별하는 송신처 인접 노드 식별 정보와, 그 송신 대상 프레임을 최초로 송신한 인접 노드 장치를 식별하는 기원(起源) 노드 식별 정보를 대응시켜 기억하는 제1 기억 수단과,
    프레임의 최종 수신처에 대응시켜, 상기 복수의 인접 노드 장치 각각으로의 송신 가능성을 나타내는 송신 가능성 정보를 기억하는 제2 기억 수단과,
    상기 수신 수단이 수신한 수신 프레임을 식별하는 수신 프레임 식별 정보가 상기 제1 기억 수단에 상기 프레임 식별 정보로서 기억되어 있는 경우에, 상기 수신 프레임에 지정된 최종 수신처인 수신 프레임 수신처에 대응시켜져 상기 제2 기억 수단에 기억되어 있는 상기 송신 가능성 정보를, 상기 제1 기억 수단에 상기 수신 프레임 식별 정보와 대응시켜져 기억되는 상기 송신처 인접 노드 식별 정보에 의해 식별되는 제1 인접 노드 장치로의 상기 송신 가능성이 송신 불능을 나타내도록 갱신하는 갱신 수단과,
    상기 수신 프레임 수신처에 대응시켜져 상기 제2 기억 수단에 기억되어 있는 상기 송신 가능성 정보에 기초해서, 상기 복수의 인접 노드 장치 중에서, 송신 가능한 제2 인접 노드 장치를 선택하여, 상기 제2 인접 노드 장치에 상기 수신 프레임을 송신하는 송신 수단과,
    상기 제2 기억 수단의 송신 가능성 정보에 있어서, 상기 복수의 인접 노드 장치 중에 송신 가능한 것이 없고, 또 상기 수신 프레임 식별 정보가 상기 제1 기억 수단에 상기 프레임 식별 정보로서 기억되어 있는 경우에, 상기 제1 기억 수단에서 상기 수신 프레임 식별 정보에 대응시켜진 상기 기원 노드 식별 정보로서 기억되는 제3 인접 노드 장치에 상기 수신 프레임을 송신하는 백트랙 수단
    을 구비하는 것을 특징으로 하는 노드 장치.
  2. 제1항에 있어서, 상기 수신 수단이 상기 수신 프레임을 수신했을 때, 상기 수신 프레임을 기억하는 버퍼 수단을 더 구비하고,
    상기 송신 수단과 상기 백트랙 수단은 상기 수신 프레임의 송신에 성공했다고 인식하면, 상기 버퍼 수단으로부터 상기 수신 프레임을 삭제하는 것을 특징으로 하는 노드 장치.
  3. 제1항에 있어서, 상기 수신 프레임 식별 정보가 상기 제1 기억 수단에 상기 프레임 식별 정보로서 기억되어 있는 경우, 상기 송신 수단은 상기 제3 인접 노드 장치를 상기 송신 가능성 정보에 상관없이 송신 불능이라고 간주하여, 상기 제3 인접 노드 장치와는 다른, 송신 가능한 상기 제2 인접 노드 장치를 선택하고, 상기 백트랙 수단은 상기 제3 인접 노드 장치를 제외한 상기 복수의 인접 노드 장치 중에 송신 가능한 것이 없는 경우에, 상기 제3 인접 노드 장치에 상기 수신 프레임을 송신하는 것을 특징으로 하는 노드 장치.
  4. 제1항에 있어서, 상기 수신 프레임 식별 정보가 이미 상기 제1 기억 수단에서 상기 프레임 식별 정보로서 기억되어 있는 경우, 상기 송신 수단은 프레임 식별 정보로서 상기 수신 프레임 식별 정보와, 송신처 인접 노드 식별 정보로서 그 송신 수단이 그 수신 프레임을 송신한 송신처인 인접 노드 장치의 식별 정보와, 기원 노드 식별 정보로서 이미 상기 제1 기억 수단에 기억되어 있는 상기 프레임 식별 정보에 대응하는 상기 기원 노드 식별 정보를, 상기 제1 기억 수단에 서로 대응시켜 기억시키고,
    상기 수신 프레임 식별 정보가 상기 제1 기억 수단에 기억되어 있지 않은 경우, 상기 송신 수단은 프레임 식별 정보로서 상기 수신 프레임 식별 정보와, 송신처 인접 노드 식별 정보로서 그 송신 수단이 그 수신 프레임을 송신한 송신처인 인접 노드 장치의 식별 정보와, 기원 노드 식별 정보로서 상기 수신 프레임의 송신원인 인접 노드 장치의 식별 정보를, 상기 제1 기억 수단에 서로 대응시켜 기억시키는 것을 특징으로 하는 노드 장치.
  5. 제1항에 있어서, 신규 프레임을 생성하는 생성 수단을 더 구비하고,
    상기 송신 수단은,
    상기 신규 프레임의 최종 수신처에 대응시켜져 상기 제2 기억 수단에 기억되어 있는 상기 송신 가능성 정보에 기초해서, 상기 복수의 인접 노드 장치 중에서, 송신 가능한 인접 노드 장치를 선택하여, 이 선택된 인접 노드 장치에 상기 신규 프레임을 송신하고,
    프레임 식별 정보로서 상기 신규 프레임을 식별하는 신규 프레임 식별 정보와, 송신처 인접 노드 식별 정보로서 상기 선택된 인접 노드 장치의 식별 정보와, 기원 노드 식별 정보로서 상기 신규 프레임을 생성한 상기 노드 장치 자신을 식별하는 자(自)노드 식별 정보를, 상기 제1 기억 수단에 서로 대응시켜 기억시키는 것을 특징으로 하는 노드 장치.
  6. 제5항에 있어서, 상기 백트랙 수단은, 상기 복수의 인접 노드 장치 중에 송신 가능한 것이 없고, 또 상기 제1 기억 수단에 기억되어 있는 상기 프레임 식별 정보가 상기 수신 프레임 식별 정보와 같으며, 또, 상기 기원 노드 식별 정보가 자노드 식별 정보인 경우에, 상기 수신 프레임을 파기하는 것을 특징으로 하는 노드 장치.
  7. 노드 장치가 구비하는 컴퓨터로 하여금 복수의 인접 노드 장치 중 임의의 하나에 프레임을 송신하게 하는 송신 프로그램을 기억한 컴퓨터 판독 가능한 기억 매체에 있어서,
    상기 송신 프로그램이 상기 컴퓨터로 하여금,
    복수의 인접 노드 장치 중 임의의 하나로부터 상기 노드 장치가 수신한 수신 프레임으로부터, 상기 수신 프레임을 식별하는 수신 프레임 식별 정보를 추출하는 추출 단계와,
    송신 대상 프레임을 식별하는 프레임 식별 정보와, 상기 복수의 인접 노드 장치 중에서 상기 송신 대상 프레임의 송신처인 송신처 인접 노드 장치를 식별하는 송신처 인접 노드 식별 정보와, 그 송신 대상 프레임을 최초로 송신한 상기 인접 노드 장치를 식별하는 기원 노드 식별 정보를 대응시켜 기억하는 제1 기억 수단에, 추출한 상기 수신 프레임 식별 정보가 상기 프레임 식별 정보로서 기억되어 있는지 여부를 판단하는 판단 단계와,
    상기 수신 프레임 식별 정보가 상기 프레임 식별 정보로서 기억되어 있다고 판단한 경우에, 프레임의 최종 수신처에 대응시켜 상기 복수의 인접 노드 장치 각각에의 송신 가능성을 나타내는 송신 가능성 정보를 기억하는 제2 기억 수단에서, 상기 수신 프레임에 지정된 최종 수신처인 수신 프레임 수신처에 대응시켜져 기억되어 있는 상기 송신 가능성 정보를, 상기 제1 기억 수단에 상기 수신 프레임 식별 정보와 대응시켜져 기억되어 있는 상기 송신처 인접 노드 식별 정보에 의해 식별되는 제1 인접 노드 장치에의 상기 송신 가능성이 송신 불능임을 나타내도록 갱신하는 갱신 단계와,
    상기 수신 프레임 수신처에 대응시켜져 상기 제2 기억 수단에 기억되어 있는 상기 송신 가능성 정보에 기초해서, 상기 복수의 인접 노드 장치 중에서, 송신 가능한 제2 인접 노드 장치를 선택하여, 상기 제2 인접 노드 장치에 상기 수신 프레임을 송신하는 송신 단계와,
    상기 제2 기억 수단의 송신 가능성 정보에 있어서, 상기 복수의 인접 노드 장치 중에 송신 가능한 것이 없고, 또 상기 수신 프레임 식별 정보가 상기 제1 기억 수단에 상기 프레임 식별 정보로서 기억되어 있는 경우에, 상기 제1 기억 수단에서 상기 수신 프레임 식별 정보에 대응시켜진 상기 기원 노드 식별 정보로서 기억되는 제3 인접 노드 장치에 상기 수신 프레임을 송신하는 백트랙 단계
    를 실행시키는 것을 특징으로 하는 송신 프로그램을 기억한 컴퓨터 판독 가능한 기억 매체.
  8. 노드 장치가 복수의 인접 노드 장치 중 임의의 하나에 프레임을 송신하는 프레임 송신 방법에 있어서, 상기 노드 장치가,
    상기 복수의 인접 노드 장치 중 임의의 하나로부터 상기 노드 장치가 수신한 수신 프레임으로부터, 상기 수신 프레임을 식별하는 수신 프레임 식별 정보를 추출하는 추출 단계와,
    송신 대상 프레임을 식별하는 프레임 식별 정보와, 상기 복수의 인접 노드 장치 중에서 상기 송신 대상 프레임의 송신처인 송신처 인접 노드 장치를 식별하는 송신처 인접 노드 식별 정보와, 그 송신 대상 프레임을 최초로 송신한 상기 인접 노드 장치를 식별하는 기원 노드 식별 정보를 대응시켜 기억하는 제1 기억 수단에, 추출한 상기 수신 프레임 식별 정보가 상기 프레임 식별 정보로서 기억되어 있는지 여부를 판단하는 판단 단계와,
    상기 수신 프레임 식별 정보가 상기 프레임 식별 정보로서 기억되어 있다고 판단한 경우에, 프레임의 최종 수신처에 대응시켜 상기 복수의 인접 노드 장치 각각으로의 송신 가능성을 나타내는 송신 가능성 정보를 기억하는 제2 기억 수단에서, 상기 수신 프레임에 지정된 최종 수신처인 수신 프레임 수신처에 대응시켜져 기억되어 있는 상기 송신 가능성 정보를, 상기 제1 기억 수단에 상기 수신 프레임 식별 정보와 대응시켜져 기억되어 있는 상기 송신처 인접 노드 식별 정보에 의해 식별되는 제1 인접 노드 장치에의 상기 송신 가능성이 송신 불능임을 나타내도록 갱신하는 갱신 단계와,
    상기 수신 프레임 수신처에 대응시켜져 상기 제2 기억 수단에 기억되어 있는 상기 송신 가능성 정보에 기초해서, 상기 복수의 인접 노드 장치 중에서, 송신 가능한 제2 인접 노드 장치를 선택하여, 상기 제2 인접 노드 장치에 상기 수신 프레임을 송신하는 송신 단계와,
    상기 제2 기억 수단의 송신 가능성 정보에 있어서, 상기 복수의 인접 노드 장치 중에 송신 가능한 것이 없고, 또 상기 수신 프레임 식별 정보가 상기 제1 기억 수단에 상기 프레임 식별 정보로서 기억되어 있는 경우에, 상기 제1 기억 수단에서 상기 수신 프레임 식별 정보에 대응시켜진 상기 기원 노드 식별 정보로서 기억되는 제3 인접 노드 장치에 상기 수신 프레임을 송신하는 백트랙 단계
    를 포함하는 것을 특징으로 하는 프레임 송신 방법.
KR1020117030491A 2009-07-27 2009-07-27 노드 장치, 기억 매체 및 프레임 송신 방법 KR101301885B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/003537 WO2011013165A1 (ja) 2009-07-27 2009-07-27 ノード装置、記憶媒体およびフレーム送信方法

Publications (2)

Publication Number Publication Date
KR20120109995A true KR20120109995A (ko) 2012-10-09
KR101301885B1 KR101301885B1 (ko) 2013-08-29

Family

ID=43528848

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117030491A KR101301885B1 (ko) 2009-07-27 2009-07-27 노드 장치, 기억 매체 및 프레임 송신 방법

Country Status (6)

Country Link
US (1) US8929375B2 (ko)
EP (2) EP2464060B1 (ko)
JP (1) JP4820464B2 (ko)
KR (1) KR101301885B1 (ko)
CN (1) CN102415057B (ko)
WO (1) WO2011013165A1 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2432164B1 (en) * 2009-05-11 2017-03-29 Fujitsu Limited Node device and communication method
JP5347846B2 (ja) * 2009-08-31 2013-11-20 富士通株式会社 ノード関連情報を収集するシステム、ノード装置、およびフレーム処理方法
JP5477462B2 (ja) * 2010-03-31 2014-04-23 富士通株式会社 ノード装置およびデータ送信方法
JP5754206B2 (ja) 2011-03-29 2015-07-29 富士通株式会社 アドホックネットワークにおける時刻同期方法および装置
WO2013042209A1 (ja) * 2011-09-20 2013-03-28 富士通株式会社 データ転送方法およびそれを用いるノード装置
JP5692404B2 (ja) * 2011-11-01 2015-04-01 富士通株式会社 送信制御方法および送信制御装置
WO2013088498A1 (ja) 2011-12-12 2013-06-20 富士通株式会社 送信制御方法、ノードおよび送信制御プログラム
JP5812111B2 (ja) 2011-12-19 2015-11-11 富士通株式会社 送信制御方法およびノード
WO2013099026A1 (ja) 2011-12-28 2013-07-04 富士通株式会社 ノード装置および時刻同期方法
WO2013133211A1 (ja) 2012-03-09 2013-09-12 三菱電機株式会社 データ通信装置、データ通信システム及びデータ通信方法
US8792360B2 (en) 2012-04-30 2014-07-29 Fujitsu Limited Duplicate packet suppression
US9712559B2 (en) * 2012-05-31 2017-07-18 Red Hat, Inc. Identifying frames
CN104685832B (zh) 2012-10-31 2019-06-14 富士通株式会社 通信控制方法、网络系统以及通信装置
US9674193B1 (en) 2013-07-30 2017-06-06 Juniper Networks, Inc. Aggregation and disbursement of licenses in distributed networks
US9495378B2 (en) * 2013-08-27 2016-11-15 Purdue Research Foundation Tracing message transmissions between communications network devices
TWI524792B (zh) * 2013-09-27 2016-03-01 財團法人資訊工業策進會 用於車載隨意網路系統的傳輸控制方法以及通訊裝置
JP6264856B2 (ja) 2013-11-18 2018-01-24 富士通株式会社 ノード装置、制御プログラム、無線通信システム、及びデータ通信方法
JP6303426B2 (ja) 2013-11-18 2018-04-04 富士通株式会社 ノード装置、通信システム、通信方法および通信プログラム
WO2015139026A2 (en) 2014-03-14 2015-09-17 Go Tenna Inc. System and method for digital communication between computing devices
US9641616B2 (en) * 2014-07-10 2017-05-02 Kabushiki Kaisha Toshiba Self-steering point-to-point storage protocol
US20160149685A1 (en) * 2014-11-21 2016-05-26 Samsung Electronics Co., Ltd. Method and apparatus for wireless communication
JP6459558B2 (ja) 2015-01-27 2019-01-30 富士通株式会社 無線通信装置、無線通信方法、および無線通信プログラム
CN106330747B (zh) 2015-06-30 2019-09-13 富士通株式会社 转发目的地选择方法以及通信装置
WO2018174797A1 (en) * 2017-03-24 2018-09-27 Telefonaktiebolaget Lm Ericsson (Publ) Selective backward routing in communication networks
CN116436927A (zh) 2017-06-30 2023-07-14 区块链控股有限公司 用于区块链网络中的高效传播的概率中继
US11082324B2 (en) 2018-07-27 2021-08-03 goTenna Inc. Vine: zero-control routing using data packet inspection for wireless mesh networks
EP3925243B1 (en) * 2019-02-12 2023-08-16 KOC Universitesi A method of qos-constrained semi-persistent scheduling of machine type communications in cellular networks
US11606829B2 (en) * 2019-06-18 2023-03-14 Kyndryl, Inc. Facilitation of data transmission in low connectivity areas
CN110572790B (zh) * 2019-08-19 2022-04-08 湖南九层台环境科技有限公司 一种农村快递小笼读取系统
CN110661550B (zh) * 2019-09-27 2021-08-31 青岛联众芯云科技有限公司 一种hplc通信链路中转发报文的方法、装置、存储介质和电子设备

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04173842A (ja) 1990-11-07 1992-06-22 Nippon Zeon Co Ltd シロキサン複合ラテックスポリマー皮膜の製造方法
US6885937B1 (en) * 1998-12-10 2005-04-26 Tele Atlas North America, Inc. Shortcut generator
JP4076701B2 (ja) 2000-04-14 2008-04-16 富士通株式会社 ノード装置
JP3575435B2 (ja) 2001-03-09 2004-10-13 日本電気株式会社 電話システム及び電話接続監視方法
US7082531B1 (en) * 2001-11-30 2006-07-25 Cisco Technology, Inc. Method and apparatus for determining enforcement security devices in a network topology
JP2003273964A (ja) 2002-03-15 2003-09-26 Ntt Docomo Inc 通信システム、通信制御方法及びルータ
JP5037120B2 (ja) * 2003-06-05 2012-09-26 メッシュネットワークス インコーポレイテッド アドホック無線通信ネットワークにおける最適なルーティング
US8018953B1 (en) * 2003-08-20 2011-09-13 Cisco Technology, Inc. Adaptive, deterministic ant routing approach for updating network routing information
JP2005198201A (ja) 2004-01-09 2005-07-21 Ntt Docomo Inc ネットワークトポロジー構成方法及びノード
JP4173842B2 (ja) 2004-07-02 2008-10-29 富士通株式会社 位置検出装置、送受信方法および送受信プログラム
JP2006033275A (ja) 2004-07-14 2006-02-02 Fujitsu Ltd ループフレーム検知装置およびループフレーム検知方法
FR2878674A1 (fr) * 2004-12-01 2006-06-02 France Telecom Procede et systeme d'adaptation dynamique de metrique de qualite de service dans un reseau ad hoc
CN1297551C (zh) * 2005-03-11 2007-01-31 河南省科学院化学研究所 一种生产液体甲基四氢苯酐的方法
JP2006340165A (ja) 2005-06-03 2006-12-14 Hitachi Communication Technologies Ltd 通信経路切替制御システム及びルータ装置
US9043487B2 (en) * 2006-04-18 2015-05-26 Cisco Technology, Inc. Dynamically configuring and verifying routing information of broadcast networks using link state protocols in a computer network
US8111613B2 (en) * 2006-10-31 2012-02-07 British Telecommunications Public Limited Company In-layer ethernet p-cycle protection scheme
US7583589B2 (en) * 2007-03-15 2009-09-01 Cisco Technology, Inc. Computing repair path information
JP4720794B2 (ja) * 2007-06-05 2011-07-13 パナソニック電工株式会社 マルチホップ通信ネットワークにおける隣接ノード確認方法、マルチホップ通信ネットワークのノード
US7940776B2 (en) * 2007-06-13 2011-05-10 Cisco Technology, Inc. Fast re-routing in distance vector routing protocol networks
US8077602B2 (en) * 2008-02-01 2011-12-13 International Business Machines Corporation Performing dynamic request routing based on broadcast queue depths
US8315158B2 (en) * 2008-05-01 2012-11-20 Siemens Aktiengesellschaft Methods and apparatus for decentralized rapid recovery for Ethernet rings

Also Published As

Publication number Publication date
KR101301885B1 (ko) 2013-08-29
EP2464060A4 (en) 2014-11-05
EP3054633A1 (en) 2016-08-10
CN102415057B (zh) 2014-12-31
JPWO2011013165A1 (ja) 2013-01-07
CN102415057A (zh) 2012-04-11
US20120106552A1 (en) 2012-05-03
EP3054633B1 (en) 2017-10-25
EP2464060B1 (en) 2016-05-04
US8929375B2 (en) 2015-01-06
EP2464060A1 (en) 2012-06-13
JP4820464B2 (ja) 2011-11-24
WO2011013165A1 (ja) 2011-02-03

Similar Documents

Publication Publication Date Title
KR101301885B1 (ko) 노드 장치, 기억 매체 및 프레임 송신 방법
JP5408337B2 (ja) ノード装置および迂回経路調査方法
KR101463363B1 (ko) 네트워크에서 메시지 및 연산 오버헤드의 감소
JP2008278148A (ja) 通信端末、通信経路制御方法、及びプログラム
KR101555315B1 (ko) 저전력 사물 인터넷 네트워크 관리를 위한 네트워크 관리 데이터 전파 방법 및 저전력 사물 인터넷 노드 장치
CN108024200B (zh) 针对间歇性连接的无人机自组织网络的自适应方法及系统
Nancharaiah et al. Hybrid optimization using ant colony optimization and cuckoo search in MANET routing
US9590891B2 (en) Node apparatus, recording medium that has stored control program therein, and method of operating node apparatus
JP5500246B2 (ja) データ通信装置および方法
Yoo et al. A modified AOMDV routing protocol for maritime inter-ship communication
JP2011097458A (ja) 経路制御方法、ノードおよび通信システム
JP5477462B2 (ja) ノード装置およびデータ送信方法
Sui The research of the route protocols in opportunistic network
KR102148981B1 (ko) 인지 무선 애드혹 네트워크에서의 라우팅 오버헤드 감소를 위한 무선 접속 방법
JP4862674B2 (ja) 無線通信装置および無線通信システム
JP2008278432A (ja) 通信ルート構築方法、及び通信端末装置
JP4687292B2 (ja) 通信装置及びネットワーク内で不要な無線リンクの切断方法
JP4385926B2 (ja) 無線通信システム
Bennis et al. Enhanced AntNet protocol for wireless multimedia sensor networks
Dhanush et al. Delay and hop sensitive routing protocol for vehicular ad hoc networks
Venkatraman et al. Reliability improvement of Real-Time data in MANET-A proposal
ITTO20070661A1 (it) Instradamento di una comunicazione in una rete di telecomunicazioni wireless
Kien Vu et al. On-Demand Routing Algorithm with Mobility Prediction in the Mobile Ad-hoc Networks
BHAGYASREE et al. Hop Greedy Routing Method for Vehicular Area Adhoc Networks
JP2009005183A (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
FPAY Annual fee payment

Payment date: 20160727

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180730

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 7