KR101208230B1 - 노드 장치, 노드 장치의 실행 방법 및 프로그램을 기억한 컴퓨터 판독가능한 기억 매체 - Google Patents
노드 장치, 노드 장치의 실행 방법 및 프로그램을 기억한 컴퓨터 판독가능한 기억 매체 Download PDFInfo
- Publication number
- KR101208230B1 KR101208230B1 KR1020117026238A KR20117026238A KR101208230B1 KR 101208230 B1 KR101208230 B1 KR 101208230B1 KR 1020117026238 A KR1020117026238 A KR 1020117026238A KR 20117026238 A KR20117026238 A KR 20117026238A KR 101208230 B1 KR101208230 B1 KR 101208230B1
- Authority
- KR
- South Korea
- Prior art keywords
- frame
- port
- node
- node device
- information
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/18—Loop-free operations
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
제1 노드 장치는, 제1 포트로부터 제1 프레임을 송신하고, 제1 포트를 판별하는 정보와 제1 프레임을 식별하는 제1 식별 정보를 대응시켜 루프 검출 정보로서 저장하고, 제2 노드 장치로부터 제2 프레임을 수신한다. 제2 프레임을 식별하는 제2 식별 정보가 제1 식별 정보와 일치하는 경우, 제1 노드 장치는, 제2 프레임의 수신처 노드 장치에 대응되어 저장되어 있는 포트 상태 정보를 갱신하고, 제1 포트로부터의 송신은 불가한 것으로 한다. 그리고, 갱신 후의 정보에 의거하여, 제1 노드 장치는, 송신 가능한 제2 포트를 선택하여 제2 프레임을 송신한다.
Description
본 발명은, 복수 개의 노드 장치를 포함하는 네트워크에서의 통신에 관한 것이다.
네트워크에서의 통신에 관해서는, 장애 발생시의 제어, 내장애성을 위한 리던던시화, 경로 제어 등, 다양한 관점에서 다양한 기술이 개발되어 있다.
예컨대, 네트워크 비용의 삭감을 도모하고, 신속하게 고장 판정을 수행하기 위한 다음과 같은 통신 시스템이 개시되어 있다. 즉, 송신측 라우터(A)가, 사용자 패킷을 포함하는 패킷을, 미리 수신측 라우터(B)와의 사이에서 규정한 고장 판정 시간보다 짧은 시간 간격으로 연속적으로 라우터(B)에 송신한다. 라우터(B)는, 고장 판정 시간에서 만료되는 타이머를 구비한다.
라우터(A, B) 사이의 네트워크가 정상이라면, 라우터(B)는 타이머의 만료 전에 패킷을 수신하게 된다. 이를 이용하여, 라우터(B)는, 타이머의 만료 전에 패킷을 수신하면, 「네트워크는 정상」이라고 판단하고, 타이머를 리셋한다. 또한, 라우터(B)는, 패킷을 수신하기 전에 타이머가 만료되면, 「네트워크는 정상이 아님」이라고 판단할 수 있기 때문에, 「고장이 발생했다」고 판정한다. 이와 같이 사용자 패킷을 포함하는 패킷의 송수신에 타이머의 판정을 적용함으로써, 네트워크 2중화를 회피하고 비용 삭감을 도모하면서, 네트워크의 고장 판정을 신속하게 수행할 수 있다.
또한, 「종래의 인터넷 전화 시스템으로는, 무음 압축으로 인해 음성 패킷의 수신이 없는 것인지, 인터넷 내에서 이상이 발생했기 때문에 음성 패킷을 수신할 수 없는 것인지의 구별을 할 수 없다」라고 하는 과제를 해결하기 위한, 다음과 같은 전화 시스템도 개시되어 있다.
즉, 전화기와 전화기 사이에서 통화 상태가 확립되면, 발호측(發呼側) 미디어 게이트웨이는, 감시 패킷을 주기적으로 착호측(着呼側) 미디어 게이트웨이에 인터넷 경유로 송신한다. 착호측 미디어 게이트웨이는, 감시 패킷을 수신하면, 인터넷 경유로 응답 패킷을 발호측 미디어 게이트웨이로 송신한다. 2개의 미디어 게이트웨이는, 수신할 응답 패킷, 감시 패킷이 주기적으로 입력되지 않는 횟수가, 정해진 임계값에 도달했을 때, 콜 에이전트에 패킷 비수신 통지를 행한다. 콜 에이전트는, 패킷 비수신 통지를 받았을 때에는, 2개의 미디어 게이트웨이를 제어하여 절단 처리를 수행하도록 한다.
또한, 「라우터측에서 통신 경로가 전환되었다고 해도, 라우터 이외의 다른 장치에서는 상기 통신 경로의 전환을 인식할 수 없다」라고 하는 과제를 해결하기 위한, 다음과 같은 통신 경로 전환 제어 시스템도 개시되어 있다.
통신 경로 전환 제어 시스템은, 제1 PBX(Private Branch eXchange)를 수용 접속하는 제1 IPGW(Internet Protocol GateWay)와, 네트워크 및 제1 IPGW 사이의 통신 인터페이스를 담당하는 제1 라우터를 갖는다. 그리고, 제1 라우터는, 네트워크 내의 복수 개의 통신 경로 중, 현재 사용중인 통신 경로에서의 회선 장애를 검출하면, 복수 개의 통신 경로로부터 회선 장애를 우회하는 통신 경로를 탐색하고, 그 탐색된 통신 경로로 전환 접속한다. 제1 라우터는, 탐색된 통신 경로에 전환 접속하면, 이 전환 접속된 통신 경로와 관련된 경로 전환 정보를 제1 IPGW에 통지하는 전환 정보 통지부를 구비한다. 또한, 제1 IPGW는, 전환 정보 통지부로부터의 경로 전환 정보를 검출하면, 이 경로 전환 정보에 의거하여, 제1 PBX를 회선 제어하는 회선 제어부를 구비하고 있다.
그런데, 최근에는 애드혹(Ad hoc) 네트워크가 주목 받고 있다. 애드혹 무선 통신 네트워크에서의 최적의 라우팅에 관해서도, 노드에서의 최적의 루트를 계산하기 위한, 다음과 같은 시스템 및 방법이 개시된 바 있다.
즉, 상기 시스템 및 방법에서 사용되는 루트 매트릭은, 신중하게 선택되었다면, 네트워크에 대한 안정성을 가져오며, 또한 자기 회복 및 부하 밸런스와 같은 기능을 가져올 수 있다. 루트 매트릭은, 홉(hop)의 수, 데이터 레이트, 링크 품질 및 장치의 종류와 같은 많은 인자에 의거한 스칼라 수로서 계산된다. 각 인자는, 헬로 메시지, 또는 필요에 따라 다른 라우팅 메시지를 평가함으로써 결정할 수 있다.
또한, 무선 애드혹 네트워크뿐만 아니라, 유선 애드혹 네트워크도 연구되어 있으며, 센서 네트워크에의 응용이 시도되어 있다.
예컨대, 「S-wire」라고 불리는 유선식의 센서 네트워크에서는, 각 노드 장치가 유선으로 복수 개의 노드 장치에 접속되어 있고, 유선에 의해 데이터 통신 및 전원의 공급이 수행된다. 유선식의 이점으로서, 센서를 토중(土中), 수중이나 구조물 등에 매립하는 것이 가능한 점이나, 절단 등의 검출이 가능한 점을 들 수 있다.
비 특허 문헌 1 : 이와오 다다시게, 야마다 겐지, 노무라 고지, 호소카와 다케시 저 「다용도용 유선 센서 네트워크: S-wire」 잡지 FUJITSU, 2006년 5월호(VOL. 57, NO. 3), 285~290 페이지
전술한 내용에 예시한 바와 같이, 복수 개의 노드 장치를 포함하는 네트워크에서의 통신에 관해서는, 장애 발생시의 제어, 내장애성을 위한 리던던시화, 경로 제어 등의 다양한 관점에서 기술 개발이 수행되어 있다. 그러나, 복수 개의 노드 장치를 포함하는 네트워크 시스템에서는, 노드 장치 사이에서, 경로와 관련되는 정보의 교환을 수행함으로써 분산 협조를 구현하는 것이 일반적으로 수행되어 있어, 개개의 노드 장치의 자기 완결성을 높일 수 있는 여지가 있다.
따라서 본 발명은, 복수 개의 노드 장치를 포함하는 네트워크에 있어서, 개개의 노드 장치가, 자기 완결적으로 얻을 수 있는 정보에 의거하여 동작함으로써, 네트워크 전체적으로는 적절한 분산 협조가 구현되는 기술을 제공하는 것을 목적으로 한다.
본 발명의 일 실시형태에 따르면, 유선 접속된 제1 노드 장치와 제2 노드 장치를 포함하는 복수 개의 노드 장치를 포함하는 네트워크 중의, 상기 제1 노드 장치가 제공된다.
상기 제1 노드 장치는, 복수 개의 포트와, 루프 검출 정보를 저장하는 루프 검출 정보 저장 수단과, 라우팅 정보를 저장하는 라우팅 정보 저장 수단과, 수신 수단과, 라우팅 정보 갱신 수단과, 송신 수단을 구비한다.
상기 복수 개의 포트 각각은, 상기 복수 개의 노드 장치 중 상기 제1 노드 장치 이외의 다른 노드 장치와 상기 제1 노드 장치를 유선 접속하기 위한 포트이다.
또한, 상기 루프 검출 정보는, 상기 제1 노드 장치가 제1 프레임을 송신했을 때의 송신처 포트인 제1 포트를 상기 복수 개의 포트 중에서 판별하는 송신처 포트 판별 정보와, 상기 제1 프레임을 일의적으로 식별하기 위한 제1 식별 정보를 대응시키고 있다.
그리고, 상기 라우팅 정보는, 상기 복수 개의 노드 장치 각각에 대해, 상기 복수 개의 포트 각각으로부터의 프레임 송신 가능 여부를 나타내는 정보인 상태 정보를 대응시키고 있다.
상기 수신 수단은, 상기 제2 노드 장치로부터, 제2 프레임을 일의적으로 식별하기 위한 제2 식별 정보를 포함하는 상기 제2 프레임을 수신한다.
그리고, 상기 라우팅 정보 갱신 수단은, 상기 제2 식별 정보가 상기 제1 식별 정보와 일치하는 경우에는, 상기 복수 개의 노드 장치 중 어느 하나로서 상기 제2 프레임의 수신처인 수신처 노드 장치에, 상기 라우팅 정보에 의해 대응지어져 있는 상기 상태 정보를, 상기 제1 포트로부터의 프레임 송신이 불가하다는 것을 나타내도록 갱신한다.
또한, 상기 송신 수단은, 상기 라우팅 정보에 의해 상기 수신처 노드 장치에 대응지어져 있는 상기 상태 정보에 의거하여, 상기 제2 프레임을 송신하는 것이 가능한 제2 포트를 상기 복수 개의 포트 중에서 선택한다. 그리고, 상기 송신 수단은, 상기 제2 포트로부터 상기 제2 프레임을 송신한다.
본 발명의 다른 양태에 따르면, 상기 제1 노드 장치에 의해 실행되는 통신 방법이 제공된다.
제1 프레임이 네트워크 내를 루프하여 제2 프레임으로서 다시 제1 노드 장치에서 수신되면, 제2 식별 정보가 제1 식별 정보와 일치하므로, 라우팅 정보 갱신 수단에 의한 갱신이 수행된다. 그 결과, 제1 노드 장치는, 루프가 발생하는 경로 상의 포트를 피해, 제2 프레임을 송신할 수 있다.
또한, 제1 노드 장치가 이용하는 루프 검출 정보와 라우팅 정보는, 제1 노드 장치 자신이 자기 완결적으로 얻을 수 있는 정보이다. 즉, 제1 노드 장치는, 제1 및 제2 프레임과는 별도로, 추가로 경로에 관한 정보 등을 다른 노드 장치와의 사이에서 교환할 필요 없이, 루프 검출 정보와 라우팅 정보를 얻을 수 있다.
따라서, 제1 노드 장치와 동일한 노드 장치를 복수 개 구비하는 네트워크에 있어서는, 개개의 노드 장치가 자기 완결적으로 얻을 수 있는 정보에 의거하여 동작함으로써, 네트워크 전체적으로는, 프레임의 중계가, 루프하지 않는 적절한 경로를 경유하여 수행된다.
도 1은 노드 장치의 개요를 설명하는 구성도이다.
도 2a는 본 실시형태의 노드 장치가 적용되는 네트워크의 예를 도시한 도면이다.
도 2b는 장애 발생시의 대체 경로 탐색을 설명하는 개념도이다.
도 3은 프레임의 형식을 설명하는 도면이다.
도 4는 브로드캐스트 프레임의 폭주가 방지되는 것을 설명하는 도면이다.
도 5는 노드 장치의 하드웨어 구성도이다.
도 6은 노드 장치의 기능 구성도이다.
도 7은 포즈 상태 테이블의 예를 도시한 도면이다.
도 8은 포트 링크 상태 테이블의 예를 도시한 도면이다.
도 9는 MAC 테이블의 예를 도시한 도면이다.
도 10은 포즈 상태 관리 데이터의 예를 도시한 도면이다.
도 11a는 라우팅 처리를 설명하는 제1 흐름도이다.
도 11b는 라우팅 처리를 설명하는 제2 흐름도이다.
도 11c는 라우팅 처리를 설명하는 제3 흐름도이다.
도 11d는 라우팅 처리를 설명하는 제4 흐름도이다.
도 12는 라우팅 테이블의 에이징을 설명하는 흐름도이다.
도 13은 라우팅 테이블의 엔트리의 타이머의 설정에 대해 설명하는 흐름도이다.
도 14는 루프 검출 테이블의 에이징을 설명하는 흐름도이다.
도 15는 루프 검출 테이블의 엔트리의 타이머의 설정에 대해 설명하는 흐름도이다.
도 16은 포즈 상태 해제 처리의 흐름도이다.
도 17은 노드 장치가 상기 노드 장치 자신에 대해 수행하는 포즈 제어 처리에 대해 설명하는 흐름도이다.
도 18은 포즈 시작 처리의 흐름도이다.
도 19는 포즈 해제 처리의 흐름도이다.
도 20은 포트 감시 처리의 흐름도이다.
도 2a는 본 실시형태의 노드 장치가 적용되는 네트워크의 예를 도시한 도면이다.
도 2b는 장애 발생시의 대체 경로 탐색을 설명하는 개념도이다.
도 3은 프레임의 형식을 설명하는 도면이다.
도 4는 브로드캐스트 프레임의 폭주가 방지되는 것을 설명하는 도면이다.
도 5는 노드 장치의 하드웨어 구성도이다.
도 6은 노드 장치의 기능 구성도이다.
도 7은 포즈 상태 테이블의 예를 도시한 도면이다.
도 8은 포트 링크 상태 테이블의 예를 도시한 도면이다.
도 9는 MAC 테이블의 예를 도시한 도면이다.
도 10은 포즈 상태 관리 데이터의 예를 도시한 도면이다.
도 11a는 라우팅 처리를 설명하는 제1 흐름도이다.
도 11b는 라우팅 처리를 설명하는 제2 흐름도이다.
도 11c는 라우팅 처리를 설명하는 제3 흐름도이다.
도 11d는 라우팅 처리를 설명하는 제4 흐름도이다.
도 12는 라우팅 테이블의 에이징을 설명하는 흐름도이다.
도 13은 라우팅 테이블의 엔트리의 타이머의 설정에 대해 설명하는 흐름도이다.
도 14는 루프 검출 테이블의 에이징을 설명하는 흐름도이다.
도 15는 루프 검출 테이블의 엔트리의 타이머의 설정에 대해 설명하는 흐름도이다.
도 16은 포즈 상태 해제 처리의 흐름도이다.
도 17은 노드 장치가 상기 노드 장치 자신에 대해 수행하는 포즈 제어 처리에 대해 설명하는 흐름도이다.
도 18은 포즈 시작 처리의 흐름도이다.
도 19는 포즈 해제 처리의 흐름도이다.
도 20은 포트 감시 처리의 흐름도이다.
이하, 실시형태에 대해, 도면을 참조하면서 상세하게 설명한다. 설명의 순서는 다음과 같다.
먼저, 몇 가지 용어의 정의를 하고 나서, 본 실시형태의 노드 장치의 구성의 개요에 대해 도 1을 참조하여 설명한다. 다음으로, 도 1과 같은 컴포넌트를 갖는 복수 개의 노드 장치를 포함하는 네트워크에서의, 분산 협조 동작의 개요를, 도 2a, 도 2b 및 도 4를 참조하여 설명한다. 아울러, 도 3을 참조하여, 프레임 형식의 예에 대해서도 설명한다.
그 후, 노드 장치의 상세한 구성에 대해 도 5와 도 6을 참조하여 설명한다. 또한, 노드 장치가 이용하는 데이터 중, 도 1에서는 생략되어 있는 데이터의 구체적인 예에 대해, 도 7 내지 도 10을 참조하여 설명한다.
그리고, 도 11a 내지 도 20의 각 흐름도를 참조하여, 개개의 노드 장치의 동작의 세부사항을 설명한다. 개개의 노드 장치의 동작의 설명에 있어서는, 적당히 도 2a 또는 도 4를 참조하여, 개개의 노드 장치의 동작과, 네트워크 전체에서 구현되는 분산 협조 동작과의 관련에 대해서도 설명한다. 그 후, 본 실시형태의 노드 장치에 대해 개괄하고, 나아가, 본 실시형태의 이점에 대해 몇 가지의 기술과 대비하면서 설명한다. 마지막으로, 본 실시형태의 변형예에 대해서도 설명한다.
여기서, 본 실시형태에서의 용어에 대해 몇 가지 정의하기로 한다.
본 실시형태에서는, 복수 개의 노드 장치가 네트워크 내에 포함된다. 이하에서는, 제1 노드 장치와 제2 노드 장치가 케이블에 의해 직접 접속되어 있는 경우, 제1 및 제2 노드 장치가 「인접해 있다」라고 한다. 또한, 제1 노드 장치의 입장에서 제2 노드 장치를 「인접 노드 장치」라고 할 수가 있다. 마찬가지로, 제2 노드 장치의 입장에서는, 제1 노드 장치가 「인접 노드 장치」이다.
또한, 본 실시형태에서는, 다양한 프레임이 처리된다. 프레임은, 이하와 같이 몇 가지의 관점에서 분류된다.
프레임은, 도 3에 도시한 「애드혹 헤더」를 포함하는지 여부에 의해 분류할 수 있다. 이하에서는, 애드혹 헤더를 포함하는 프레임을 「애드혹 프레임」이라고 한다. 다른 한편, 애드혹 헤더를 포함하지 않는 프레임의 예는, 예컨대, 주지의 이더넷(등록 상표)에서 이용되는 이더넷 프레임이다.
또한, 애드혹 프레임은, 애드혹 헤더 뒤에 이어지는 이더넷 프레임을 포함하는 통상 프레임과, 애드혹 헤더 뒤에 그 밖의 특정한 형식의 제어 데이터를 포함하는 제어 프레임으로 더 분류될 수도 있다. 제어 프레임에는 복수 개의 종류가 있을 수도 있는데, 제어 프레임의 일례는, 후술하는 「포즈 프레임」이다.
또한, 프레임은, 네트워크 내에 브로드캐스트되는 브로드캐스트 프레임과, 유니캐스트되는 유니캐스트 프레임으로 분류될 수도 있다. 또한, 상세한 것은 후술하는데, 포즈 프레임은, 예외적으로, 인접 노드 장치에 한정하여 브로드캐스트된다.
이하의 설명에 있어서는, 필요에 따라, 전술한 내용과 같은 관점에서의 프레임의 분류를 명시한다. 또한, 문맥으로부터 분류가 명백하거나, 또는 분류와 무관계된 개소에서는, 간단화를 위해 단순히 「프레임」이라고 진술하는 경우도 있다.
도 1은 노드 장치의 개요를 설명하는 구성도이다.
도 1에 도시한 노드 장치(100)는, 인접 노드 장치(도 1에는 도시되지 않음)와 유선 접속하기 위한 복수 개의 포트(101-1~101-x)(1<x)와, 프레임의 라우팅을 수행하는 라우팅 엔진(102)을 갖는다.
도 1의 포트(101-1~101-x)는, 본 실시형태에 따른 유선 애드혹 네트워크용 포트이다. 또한, 후술하는 도 5에서는, 일반적인 이더넷의 사양에 따른 범용 LAN(Local Area Network) 포트와 구별하여, 도 1의 포트(101-1~101-x)를 「유선 애드혹 네트워크 포트」라고 표기하고 있다. 이후, 단순히 「포트」라고 칭하는 경우에는, 본 실시형태에 따른 유선 애드혹 네트워크용 포트라는 의미이다.
또한, 노드 장치(100)는, 라우팅 테이블(103), 브로드캐스트 관리 테이블(104), 및 루프 검출 테이블(105)의 각 테이블을 구비하며, 라우팅 엔진(102)은 이들 테이블을 참조하여 라우팅을 수행한다. 또한, 라우팅 엔진(102)은, 이들 테이블의 갱신도 수행한다.
도 1에 도시한 바와 같이, 본 실시형태의 라우팅 테이블(103)은, 「수신처」와, 포트(101-1~101-x) 각각의 상태를 나타내는 x개의 「포트 상태」를 대응시켜 기억하는 테이블이다.
도 1에는, n개의 엔트리를 포함하는 라우팅 테이블(103)이 예시되어 있다. 도 11c와 함께 후술하는 바와 같이, 각 엔트리는, 노드 장치(100)가 수신한 프레임에 의거하여, 라우팅 테이블(103)에 추가된 것이다. 또한, 도 12 및 도 13과 함께 후술하는 바와 같이, 각 엔트리는, 정해진 시간 액세스되지 않는 경우에는 라우팅 테이블(103)에서 삭제된다.
라우팅 테이블(103)에 있어서, 예컨대 i번째(1≤i≤n)의 엔트리에서는, 수신처(GDi)에, 포트(101-1~101-x) 각각의 상태(RP1i~RPxi)가 대응지어져 있다.
여기서, 수신처(GDi)는, 노드 장치(100)와 동일한 복수 개의 노드 장치를 포함하는 유선 애드혹 네트워크에 있어서, 프레임의 수신처가 될 노드 장치를 식별하는 식별 정보이다. 본 실시형태에서는, 각 노드 장치에, 유선 애드혹 네트워크 내에서 일의적인 3바이트의 ID(IDentification)가 미리 할당되어 있으며, 이하에서는, 노드 장치에 할당된 ID를 「노드 ID」라고 한다. 수신처(GDi)는, 구체적으로는 노드 ID이다.
노드 장치(100)가, 수신처(GDi)에의 프레임을 포트(101-1~101-x) 중 어느 하나에서 수신하고, 수신된 프레임을 중계하고자 할 때, 라우팅 엔진(102)은, 라우팅 테이블(103)을 참조한다. 그리고, 라우팅 엔진(102)은, 라우팅 테이블(103)에 있어서 수신처(GDi)에 대응지어진 상태(RP1i~RPxi)에 의거하여, 수신된 프레임을 송신(즉, 출력)하는 포트를 선택한다.
라우팅 테이블(103)의 i번째의 엔트리에 있어서, j번째(1≤j≤x)의 포트(101-j)의 상태(RPji)는, 「U」(Used), 「E」(Empty), 「L」(Loop), 「P」(Pause) 및 「D」(Down)이라는 5개의 상태 중 어느 하나이다.
「U」는 사용 상태를 나타낸다. 구체적으로는, 수신처(GDi)라는 노드 ID로 식별되는 다른 노드 장치에 프레임을 중계하기 위한, 노드 장치(100) 내에서의 송신처 포트로서, 포트(101-j)가 실제로 사용되고 있는 경우, 상태(RPji)는 「U」이다. 즉, 「U」 상태는, 「송신 가능」을 나타내는 상태의 예이다.
「E」는 미사용 상태를 나타낸다. 구체적으로는, 수신처(GDi)라는 노드 ID로 식별되는 다른 노드 장치에 프레임을 중계하기 위한, 노드 장치(100) 내에서의 송신처 포트로서, 포트(101-j)가 사용된 적이 없는 경우, 상태(RPji)는 「E」이다. 즉, 「E」 상태는, 「송신 가능」을 나타내는 상태의 예이다.
「L」은 루프 상태를 나타낸다. 구체적으로는, 다음 2개의 조건이 모두 성립되면, 상태(RPji)는 「L」로 갱신된다.
ㆍ수신처(GDi)라는 노드 ID로 식별되는 다른 노드 장치에 프레임을 중계하기 위한, 노드 장치(100) 내에서의 송신처 포트로서, 이전에 포트(101-j)가 사용된 적이 있다.
ㆍ수신처(GDi)라는 노드 ID로 식별되는 다른 노드 장치로 포트(101-j)로부터 송신한 프레임이, 네트워크 내에서 루프하여 노드 장치(100) 자신에게 되돌아 왔다(즉, 노드 장치(100)에서 다시 수신되었다).
또한, 상태(RPji)가 「L」인 경우, 상태(RPji)는, 「수신처(GDi)에의 프레임을 포트(101-j)로부터 송신하면 루프해 버리므로, 수신처(GDi)에의 프레임은 포트(101-j)로부터 송신해서는 안된다」는 것을 의미하고 있다. 즉 「L」 상태는, 「송신 불가」를 나타내는 상태의 예이다.
「P」는 포즈 상태를 나타낸다. 구체적으로는, 포트(101-j)로부터(즉, 포트(101-j)를 통해 접속된 도시하지 않은 인접 노드 장치로부터), 「포즈 요구」를 받은 경우, 상태(RPji)는 「P」가 된다. 또한, 「포즈 요구」란, 프레임의 집중 등으로 인해 처리 부하가 높아진 노드 장치가, 인접 노드 장치에 대해, 자(自) 노드 장치로의 프레임의 송신을 일정 기간 「중지」(pause)하도록 요구하는 요구이다. 포즈 요구에 대한 세부사항은 도 16 내지 도 19와 함께 후술하는데, 개요를 설명하면 다음과 같다.
예컨대, 도 1의 노드 장치(100)에는, 포트(101-j)를 통해, 도시하지 않은 제2 노드 장치가 접속되어 있다고 하자. 또한, 이하에서는, 처리 부하가 정해진 기준을 초과한 상태를 「비지 상태」라고 한다.
제2 노드 장치는, 비지 상태에 빠지면, 복수 개의 인접 노드 장치 각각에 포즈 요구를 송신한다. 포즈 요구는, 구체적으로는, 상기 일정 기간의 길이를 지정하는 값을 포함하는, 「포즈 프레임」이라는 특정한 형식의 애드혹 프레임에 의해 표시된다.
따라서, 도 1의 노드 장치(100)는, 포트(101-j)에서 포즈 프레임을 수신하고, 「제2 노드 장치는 현재 비지 상태」라고 인식한다. 즉, 노드 장치(100)는, 「포즈 프레임으로 지정되어 있는 상기 일정 기간 동안에는, 비록 포트(101-j)에 프레임을 송신한다고 해도, 제2 노드 장치는 과부하 때문에 프레임을 완전히 처리할 수 없으므로, 포트(101-j)에 프레임을 송신해서는 안된다」라고 인식한다.
그리고, 노드 장치(100)의 라우팅 엔진(102)은, 상기 인식에 의거하여, 라우팅 테이블(103)에 있어서 포트(101-j)에 대응하는 상태(RPji)를 「P」로 설정한다. 이상으로부터 명백한 바와 같이, 「P」 상태는 「송신 불가」를 나타내는 상태의 예이다.
「D」는 링크 다운 상태를 나타낸다. 예컨대, 포트(101-j)에 접속된 케이블이 물리적으로 절단되어 있는 경우 등, 케이블을 통해 전송되는 신호를 포트(101-j)에 있어서 전기적으로 검출할 수 없는 경우, 상태(RPji)는 「D」가 된다. 「D」 상태도, 「송신 불가」를 나타내는 상태의 예이다.
또한, 「P」 상태와 「D」 상태는, 프레임의 수신처와는 독립된 개념이다. 그러나, 본 실시형태에서는, 라우팅 테이블(103)에 있어서, 어느 하나의 포트(예컨대, 포트(101-j))의 상태(RPj1~RPjn) 중 일부가 「P」가 되고, 일부가 「P」 이외가 될 수도 있다. 마찬가지로, 본 실시형태에서는, 어느 하나의 포트(예컨대, 포트(101-j))의 상태(RPj1~RPjn) 중 일부가 「D」가 되고, 일부가 「D」 이외가 될 수도 있다. 왜냐하면, 후술하는 바와 같이 본 실시형태에서는, 라우팅 테이블(103)의 엔트리의 갱신은, 프레임 수신을 계기로 수행되므로, 각 엔트리의 갱신 타이밍에 시차가 있기 대문이다.
계속해서, 도 1에 도시한 다른 테이블에 대해서도 설명한다.
브로드캐스트 관리 테이블(104)은, 「MAC-SA(Media Access Contol Source Address)」와 「시각」을 대응시켜 기억하는 테이블이다. 도 1에는, a개의 엔트리를 포함하는 브로드캐스트 관리 테이블(104)이 예시되어 있다.
도 11b와 함께 후술하는 바와 같이, 각 엔트리는, 노드 장치(100)가 수신한 브로드캐스트 프레임에 의거하여, 브로드캐스트 관리 테이블(104)에 추가된 것이다. 또한, 도시는 생략했지만, 후술하는 바와 같이, 각 엔트리는, 정해진 시간 액세스되지 않는 경우에는, 브로드캐스트 관리 테이블(104)에서 삭제된다.
브로드캐스트 관리 테이블(104)에 있어서, 예컨대 i번째(1≤i≤a)의 엔트리에서는, MAC 어드레스(MACSAi)와 시각(Ti)가 대응지어져 있다. 여기서, MAC 어드레스(MACSAi)는, 노드 장치(100)가 수신한 브로드캐스트 프레임의 송신원 노드 장치의 MAC 어드레스이다. 또한, 시각(Ti)은, 상기 브로드캐스트 프레임을 라우팅 엔진(102)이 처리한 시각이다.
노드 장치(100)가, 브로드캐스트 프레임을 포트(101-1~101-x) 중 어느 하나에서 수신했을 때, 라우팅 엔진(102)은 브로드캐스트 관리 테이블(104)을 참조한다. 그리고, 라우팅 엔진(102)은, 수신한 브로드캐스트 프레임을 파기하여 폭주를 방지할 것인지, 또는, 수신한 브로드캐스트 프레임을 중계할 것인지(즉, 상기 브로드캐스트 프레임을 수신한 포트와 다른 포트로 송신할 것인지)를 결정한다. 또한, 상세한 것은 후술하는 바와 같이, 실시형태에 따라서는, 루프 검출 테이블(105)만으로 브로드캐스트 프레임의 폭주를 방지할 수 있다.
루프 검출 테이블(105)은, 「송신원」과 「FID(Frame IDentification)」의 쌍에, 「수신 포트 번호」와 포트(101-1~101-x) 각각의 상태를 나타내는 x개의 「포트 상태」를 대응시켜 기억하는 테이블이다.
도 1에는, m개의 엔트리를 포함하는 루프 검출 테이블(105)이 예시되어 있다. 도 11b 및 도 11c와 함께 후술하는 바와 같이, 각 엔트리는, 노드 장치(100)가 수신한 프레임에 의거하여, 루프 검출 테이블(105)에 추가된다. 또한, 도 14 및 도 15와 함께 후술하는 바와 같이, 각 엔트리는, 정해진 시간이 경과하면 루프 검출 테이블(105)에서 삭제된다.
루프 검출 테이블(105)에 있어서, 예컨대 i번째(1≤i≤m)의 엔트리에서는, 송신원(GSi)과 FIDi의 쌍에, 수신 포트 번호(RCVPNi)와, 포트(101-1~101-x) 각각의 상태(LP1i~LPxi)가 대응지어져 있다.
여기서, 송신원(GSi)은, 노드 장치(100)와 동일한 복수 개의 노드 장치를 포함하는 유선 애드혹 네트워크에 있어서, 프레임의 송신원인 노드 장치를 식별하는 식별 정보이며, 구체적으로는 노드 ID이다. 또한, FIDi는, 송신원 노드 장치(즉 노드 ID가 GSi인 노드 장치)가, 송신할 프레임에 할당한, 프레임을 일의적으로 식별하는 식별 정보이다. FIDi는, 예컨대 시퀀스 번호일 수도 있다.
노드 장치(100)가, 포트(101-1~101-x) 중 어느 하나에서 프레임을 수신하고, 수신된 프레임을 중계하고자 할 때, 라우팅 엔진(102)은, 라우팅 테이블(103)뿐만 아니라 루프 검출 테이블(105)도 참조한다. 그리고, 라우팅 엔진(102)은, 루프 검출 테이블(105)에도 의거하여, 수신한 프레임을 송신할 포트를 선택한다.
루프 검출 테이블(105)의 i번째의 엔트리에서의 수신 포트 번호(RCVPNi)는, i번째의 엔트리에 대응하는 프레임이 노드 장치(100)에 있어서 수신되었을 때, 상기 프레임을 수신한 포트를 나타낸다. 구체적으로는, 송신원 노드 장치(즉 GSi라는 노드 ID로 식별되는 노드 장치)에 있어서 FIDi라는 FID가 할당된 프레임이, 노드 장치(100)의 포트(101-r)(1≤r≤x)에서 수신된 경우, 수신 포트 번호(RCVPNi)는 r이다.
루프 검출 테이블(105)의 i번째의 엔트리에 있어서, j번째(1≤j≤x)의 포트(101-j)의 상태(LPji)는, 「U」, 「E」, 또는 「L」이라는 3가지의 상태 중 어느 하나이다.
「U」는, 라우팅 테이블(103)에 대해 설명한 것과 동일하게 사용 상태를 나타낸다. 루프 검출 테이블(105)에 있어서, 구체적으로는, 다음 2개의 조건이 성립될 때 상태(LPji)는 「U」이다.
ㆍ송신원(GSi)이라는 노드 ID로 식별되는 송신원 노드 장치에 있어서 FIDi라는 FID가 할당된 프레임을, 이전에 노드 장치(100)가 중계한 적이 있다.
ㆍ그 중계 시에, 노드 장치(100) 내에서의 송신처 포트로서 포트(101-j)가 사용되었다.
「E」는, 라우팅 테이블(103)에 관해 설명한 것과 동일하게 미사용 상태를 나타내며, 루프 검출 테이블(105)에 있어서는, 구체적으로는, 다음과 같은 의미이다. 즉, 송신원(GSi)이라는 노드 ID로 식별되는 송신원 노드 장치에 있어서 FIDi라는 FID가 할당된 프레임을 이전에 노드 장치(100)가 중계했을 때의, 송신처 포트가 포트(101-j)가 아니면, 상태(LPji)는 「E」이다.
「L」은, 라우팅 테이블(103)에 관해 설명한 것과 동일하게 루프 상태를 나타낸다. 루프 검출 테이블(105)에 있어서, 구체적으로는, 다음 2개의 조건이 성립할 때 상태(LPji)가 「L」이 된다.
ㆍ송신원(GSi)이라는 노드 ID로 식별되는 송신원 노드 장치에 있어서 FIDi라는 FID가 할당된 프레임을, 포트(101-j)를 송신처 포트로 하여 노드 장치(100)가 중계한 적이 있다.
ㆍ중계 후에 상기 프레임이 다시 노드 장치(100)에서 재수신되었다.
또한, 라우팅 테이블(103)에 있어서는, 「U」 상태와 「E」 상태는 「송신 가능한」 즉, 「송신처 포트로서 선택 가능하다」라는 의미에서는 공통적이다. 그러나, 루프 검출 테이블(105)에서는, 「U」 상태와 「E」 상태는 다음과 같이 엄격하게 구별된다. 즉, 루프 검출 테이블(105)에서의 「U」 상태는, 만일 향후 루프가 검출될 수가 있으면, 「송신 불가」를 의미하는 「L」 상태로 천이시킬 대상을 나타내고 있다. 그에 반해, 루프 검출 테이블(105)에서의 「E」 상태는, 만일 향후 루프가 검출될 수가 있다고 하더라도, 상기 루프의 검출 시점에서는 여전히 송신처 포트로서 선택 가능한 것을 나타낸다.
계속해서, 도 1과 동일한 컴포넌트를 갖는 복수 개의 노드 장치를 포함하는 네트워크에서의, 분산 협조 동작의 개요에 대해, 프레임 형식의 예와 함께, 도 2a 내지 도 4를 참조하면서 설명한다.
도 2a는 본 실시형태의 노드 장치가 적용되는 네트워크의 예를 도시한 도면이다.
도 2a의 유선 애드혹 네트워크(200)는, 복수 개의 노드 장치(100a~100i)를 포함한다. 유선 애드혹 네트워크(200)에 있어서 노드 장치(100a~100i)는, 케이블(예컨대, 구리 케이블 등의 금속선 케이블, 또는 광 파이버 케이블)에 의해, 물리적으로는 메시형(바꾸어 말하면 격자형)으로 접속되어 있다.
물론, 유선 애드혹 네트워크에서의 물리적인 접속 토폴로지는, 실시형태에 따라서 임의적이며, 반드시 메시형이 아닐 수도 있다.
또한, 노드 장치(100a~100i) 각각은, 도 1과 동일한 컴포넌트를 갖는다. 또한, 도 1에서는, 노드 장치(100)가 x개의 포트(101-1~101-x)를 가지고 있는데, 도 2a에는, 구체적으로 x=4인 예를 나타냈다.
예컨대, 노드 장치(100a)는, 4개의 포트(101a-1~101a-4)를 갖는다. 다른 노드 장치(100b~100i)에 대해서도 마찬가지이다. 또한, 서로 동일한 컴포넌트에는, 「101-1」, 「101A-1」, 「101B-1」 등과 같이, 「a」나 「b」 등의 첨자를 제외하고 동일한 참조 부호를 할당하고, 상세한 설명을 생략할 수 있다.
도 2a에 도시한 메시형의 물리적인 토폴로지는, 구체적으로, 다음과 같은 케이블 배선에 의해 구현되어 있다.
ㆍ노드 장치(100a와 100d)는, 포트(101a-1와 101d-1) 사이의 링크(215)에 의해 접속되어 있다.
ㆍ노드 장치(100a와 100b)는, 포트(101a-4와 101b-1) 사이의 링크(216)에 의해 접속되어 있다.
ㆍ노드 장치(100b와 100e)는, 포트(101b-2와 101e-2) 사이의 링크(217)에 의해 접속되어 있다.
ㆍ노드 장치(100b와 100c)는, 포트(101b-4와 101c-1) 사이의 링크(218)에 의해 접속되어 있다.
ㆍ노드 장치(100c와 100f)는, 포트(101c-3과 101f-3) 사이의 링크(219)에 의해 접속되어 있다.
ㆍ노드 장치(100d와 100g)는, 포트(101d-2와 101g-2) 사이의 링크(221)에 의해 접속되어 있다.
ㆍ노드 장치(100d와 100e)는, 포트(101d-4와 101e-1) 사이의 링크(222)에 의해 접속되어 있다.
ㆍ노드 장치(100e와 100h)는, 포트(101e-3과 101h-3) 사이의 링크(223)에 의해 접속되어 있다.
ㆍ노드 장치(100e와 100f)는, 포트(101e-4와 101f-1) 사이의 링크(224)에 의해 접속되어 있다.
ㆍ노드 장치(100f와 100i)는, 포트(101f-4와 101i-4) 사이의 링크(225)에 의해 접속되어 있다.
ㆍ노드 장치(100g와 100h)는, 포트(101g-4와 101h-1)의 사이의 링크(226)에 의해 접속되어 있다.
ㆍ노드 장치(100h와 100i)는, 포트(101h-4와 101i-1) 사이의 링크(227)에 의해 접속되어 있다.
물론, 실시형태에 따라, 도 2a에 예시한 이외의 조합의 포트 사이를 케이블로 접속함으로써 도 2a와 등가인 메시 토폴로지를 구현하는 것도 가능하다.
그런데, 도 2a의 예에서는, 유선 애드혹 네트워크(200)는 고립된 네트워크가 아니라, LAN이나 WAN(Wide Area Network) 등의 다른 네트워크(이하, 「외부 네트워크」라고 함)와도 접속된다.
구체적으로는, 본 실시형태의 노드 장치(100a~100i)는, 도 1에 도시한 컴포넌트뿐만 아니라, 유선 애드혹 네트워크(200)와 외부 네트워크와의 접속 인터페이스로서, 각각 범용 LAN 포트(106a~106i)를 더 갖는다. 도 2a에서는, 범용 LAN 포트(106a~106i)를 사선으로 도시하여, 유선 애드혹 네트워크 포트(101a-1~101i-4)와 구별했다. 또한, 본 실시형태에서의 범용 LAN 포트(106a~106i)는 유선 LAN 포트인데, 실시형태에 따라서는 무선 LAN 인터페이스를 대신해서 사용할 수도 있다.
예컨대, 도 2a의 예에서는, 유선 애드혹 네트워크(200)는 다음과 같이 하여 외부 네트워크와 접속된다. 즉, 링크(211)를 통해 PC(Personal Computer)(201)와 접속된 L2SW(Layer 2 Switch)(202)가, 노드 장치(100a와 100b) 각각의 범용 LAN 포트(106a와 106b)에, 각각 링크(212와 213)를 통해 접속되어 있다. 또한, PC(203, 205, 206)가, 노드 장치(100c, 100g, 100h) 각각의 범용 LAN 포트(106c, 106g, 106h)에, 각각 링크(214, 228, 229)를 통해 접속되어 있다.
또한, L2SW(202)는, 도시하지 않은 라우터나, 도시하지 않은 다른 PC와 추가로 접속되어 있을 수도 있다. 또한, PC(203, 205 및 206)도, 도시하지 않은 다른 외부 네트워크에 접속되어 있을 수도 있다.
또한, 설명의 편의 상, 도 2a에는 9개의 노드 장치(100a~100i)를 포함하는 유선 애드혹 네트워크(200)를 예시했지만, 실시형태에 따라서는, 예컨대 수 천 개 내지 수 십만 개의 다수 개의 노드 장치를 유선 애드혹 네트워크가 포함하고 있을 수도 있다.
예컨대, 도처에 배치된 다수 개의 센서로부터 다양한 정보를 수집하기 위한 네트워크인 센서 네트워크에, 본 실시형태의 유선 애드혹 네트워크가 적용될 수도 있다. 그 경우, 다수 개의 센서에 대응하여, 유선 애드혹 네트워크는, 수 천 개 내지 수 십만 개 정도의, 다수 개의 노드 장치를 포함할 수도 있다. 센서 네트워크에서는, 예컨대, 화상 센서, 온도 센서, 습도 센서, 압력 센서, 가속도 센서 등, 임의의 종류의 센서가 이용된다.
도 2a도, 본 실시형태에 따른 유선 애드혹 네트워크의, 센서 네트워크에의 적용예의 하나를 도시하고 있다. 즉, 도 2a에 있어서 노드 장치(100e와 100i) 각각의 범용 LAN 포트(106e와 106i)에는, LAN 인터페이스를 구비한 센서(204와 207)가, 각각 링크(220과 230)를 통해 접속되어 있다. 센서(204와 207)는, 감지한 결과를 나타내는 데이터를, LAN 인터페이스를 통해 이더넷 프레임으로서 출력한다. 이들 센서(204와 207)의 종류는 임의적이다.
도 2a에 도시한 바와 같은 본 실시형태에 따른 유선 애드혹 네트워크를 이용하면, 무선 통신에서는 통신 곤란한 환경이라도 유선 통신이라면 통신 가능한 경우가 많기 때문에, 가혹한 환경에 있어서도 센서 네트워크를 구축하는 것이 가능해진다.
예컨대, 밭이나 벼랑 등의 토중, 논이나 하천이나 바다 등의 수중, 건물의 벽이나 기둥 등의 구조물 중 등에, 센서와, 범용 LAN 포트를 통해 상기 센서에 접속된 노드 장치가 매립될 수도 있다. 그러한 경우라 하더라도, 노드 장치는 유선 접속에 의해 다른 노드 장치와 확실하게 통신하는 것이 가능하다. 따라서, 본 실시형태에 따른 유선 애드혹 네트워크를 이용하면, 토중, 수중, 구조물 중 등의, 무선통신이 곤란한 환경에 있어서도, 센서 네트워크를 구축하는 것이 가능하다.
이상, 도 2a에서의 네트워크 구성을 설명했으므로, 계속해서, 도 2a의 유선 애드혹 네트워크(200)에서의 분산 협조 동작의 개요를 설명한다. 또한, 개개의 노드 장치(100a~100i)의 동작의 세부사항은 도 11a 내지 도 20의 흐름도와 함께 후술하기로 한다.
이하에서는, PC(203)가 프레임을 PC(205)로 송신하는 경우를 예로 들어, 장애 발생시의, 유선 애드혹 네트워크(200)에서의 프레임 중계 경로의 전환에 대해 설명한다.
PC(203)가 링크(214)를 통해 이더넷 프레임을 송신하면, 노드 장치(100c)는, 이더넷 프레임을 수신하고, 수신된 이더넷 프레임에 애드혹 헤더를 부가한다.
그리고, 각 노드 장치가 도 11a 내지 도 20의 흐름도를 따라서 동작함으로써 구현되는 자율적 분산 협조에 의해, 애드혹 프레임은, 유선 애드혹 네트워크(200)에 있어서, 노드 장치(100c)로부터 노드 장치(100g)로 중계되어 간다. 그리고, 노드 장치(100g)가 애드혹 프레임으로부터 애드혹 헤더를 제거한다. 그 결과 얻어진 이더넷 프레임은, 노드 장치(100g)로부터 링크(228)를 통해 PC(205)로 출력된다.
도 2a에 도시한 각 링크가 정상인 경우, 노드 장치(100c)로부터 노드 장치(100g)로의 중계 경로로서, 예컨대, 링크(218, 216, 215 및 221)를 포함하는 경로가 선택되어 있다고 하자. 상기 경로는, 하기와 같은 분산 협조에 의해 선택된다.
PC(203)로부터 프레임을 수신한 노드 장치(100c)는, 프레임의 송신처 포트로서, 링크(218)를 통해 노드 장치(100b)와 접속된 포트(101c-1)를 선택한다. 그러면, 노드 장치(100c)로부터 프레임을 수신한 노드 장치(100b)가, 프레임의 송신처 포트로서, 링크(216)를 통해 노드 장치(100a)와 접속된 포트(101b-1)를 선택한다.
그리고, 노드 장치(100b)로부터 프레임을 수신한 노드 장치(100a)가, 프레임의 송신처 포트로서, 링크(215)를 통해 노드 장치(100d)와 접속된 포트(101a-1)를 선택한다. 계속해서, 노드 장치(100a)로부터 프레임을 수신한 노드 장치(100d)가, 프레임의 송신처 포트로서, 링크(221)를 통해 노드 장치(100g)와 접속된 포트(101d-2)를 선택한다.
그런데, 어느 때에 링크(215)에 물리적인 장애가 발생했다고 하자. 링크(215)의 장애 발생 후에, PC(203)가 다시 PC(205)로 프레임을 송신하고자 하면, 유선 애드혹 네트워크(200) 내에서의 중계 경로는, 이하와 같은 분산 협조 제어에 의해 전환된다.
노드 장치(100c)는, 프레임의 송신처 포트로서 정상시와 동일하게 포트(101c-1)를 선택하고, 노드 장치(100b)도, 프레임의 송신처 포트로서 정상시와 동일하게 포트(101b-1)를 선택한다. 그러면, 노드 장치(100a)가 프레임을 수신한다.
그러나, 도 2a에 도시한 바와 같이, 노드 장치(100a)는, 유선 애드혹 네트워크(200) 내에 있어서 노드 장치(100b 및 100d)라는 2개의 노드 장치에만 접속되어 있고, 노드 장치(100d)와의 사이의 링크(215)에는 장애가 발생해 있다. 따라서, 노드 장치(100a)는, 링크(216)를 통해 노드 장치(100b)로부터 수신한 프레임을, 정상적인 링크를 통해, 노드 장치(100b) 이외의 유선 애드혹 네트워크(200) 내의 노드 장치로 송신할 수 없다.
따라서, 노드 장치(100a)는, 노드 장치(100a) 자신으로부터 프레임을 전송할 수 없음을 통지하기 위해, 링크(216)를 통해 프레임을 노드 장치(100b)로 반송한다. 그러면, 노드 장치(100b)는, 노드 장치(100b) 자신이 송신한 프레임을 수신한다.
따라서, 노드 장치(100b)는, 라우팅 테이블(103)에 있어서 노드 장치(100g)에 대응지어진 포트 상태 정보에서는 포트(101b-1)는 「L」 상태(즉, 루프 상태)인 것을 인식한다. 즉 노드 장치(100b)는, 「유선 애드혹 네트워크(200) 내에서의 최종적인 수신처가 노드 장치(100g)인 프레임을 중계할 때에는, 노드 장치(100a)와 접속된 포트(101b-1)로 프레임을 송신해서는 안된다」라고 인식한다.
상기 인식에 따라, 노드 장치(100b)는, 프레임의 송신처 포트로서 이용 가능한, 포트(101b-1) 이외의 정상적인 포트를 탐색한다. 이 경우, 정상적인 링크(217)를 통해 노드 장치(100e)와 접속된 포트(101b-2)가 발견된다.
따라서, 노드 장치(100b)는, 노드 장치(100a)로부터 되돌아온 프레임을, 이번에는 포트(101b-2)로 송신한다.
그러면, 노드 장치(100e)가 프레임을 수신한다. 도 2a의 예에서는, 노드 장치(100e)에 접속되어 있는 각 링크는 정상이다. 따라서, 노드 장치(100e)는, 예컨대, 링크(223)를 통해 노드 장치(100h)와 접속되어 있는 포트(101e-3)를, 프레임의 송신처 포트로서 선택할 수 있다.
이 선택의 결과, 프레임은, 포트(101e-3)로부터 송신되고, 링크(223)를 통해 노드 장치(100h)에서 수신된다. 그러면, 노드 장치(100h)는, 정상적인 링크(226)를 통해 노드 장치(100g)와 접속된 포트(101h-1)를 선택하고, 포트(101h-1)로부터 프레임을 송신한다.
그 결과, 노드 장치(100g)는 프레임을 수신할 수 있다. 이와 같이, 지금까지 사용되던 경로 상의 링크(215)에 장애가 발생한 경우라 하더라도, 유선 애드혹 네트워크(200) 내의 각 노드 장치의 분산 협조에 의해, 자동적으로 경로의 전환이 수행된다.
또한, 도 1에 도시한 바와 같이 라우팅 테이블(103)은 수신처마다 엔트리를 가지고 있으므로, 프레임의 수신처에 따라서는 노드 장치(100b)가 포트(101b-1)를 송신처 포트로서 선택하는 경우도 있다. 즉, 전술한 바와 같이 노드 장치(100b)에 있어서, 노드 장치(100g)에 대응하여 포트(101b-1)가 「L」 상태로 인식된 경우라 하더라도, 노드 장치(100b)는, 노드 장치(100a)를 수신처로 하는 프레임을 포트(101b-1)로부터 송신할 수 있다. 이와 같이 본 실시형태에 따르면, 어느 포트로부터의 프레임의 송신이 가능한지 여부는, 프레임의 수신처에 의존하여 관리된다.
계속해서, 도 2b를 참조하여, 이상 설명한 경로의 전환을 다른 관점에서 설명한다.
도 2b는 장애 발생시의 대체 경로 탐색을 설명하는 개념도이다. 도 2b에는, 상기 예에 있어서 유선 애드혹 네트워크(200) 내에서의 송신원인 노드 장치(100c)를 루트 노드로 하고, 유선 애드혹 네트워크(200) 내에서의 송신처인 노드 장치(100g)를 리프 노드로 하는 탐색 트리(300)가 도시되어 있다.
탐색 트리(300)에 있어서의, 어느 한 노드를 편의적으로 「제1 노드」라고 하기로 하고, 제1 노드에 해당하는 유선 애드혹 네트워크(200) 내의 노드 장치를 「제1 노드 장치」라고 하기로 한다. 또한, 제1 노드 장치의 라우팅 테이블(103)에 있어서, 수신처인 노드 장치(100g)에 대응하는 엔트리에서, 다른 노드 장치(편의적으로 「제2 노드 장치」라고 함)의 상태가 「U」 상태 또는 「E」 상태라고 하자. 이 때, 탐색 트리(300)에 있어서, 제1 노드는 제2 노드 장치에 대응하는 자식 노드를 갖는다.
도 2a에 관해 설명한, 링크(215)의 장애 발생 전의 중계 경로는, 유선 애드혹 네트워크(200)에서의 분산 협조의 결과로서, 도 2b의 탐색 경로(301)에 대응하여 발견된 경로이다. 탐색 경로(301)는, 탐색 트리(300)에서의 루트 노드인 노드 장치(100c)로부터, 노드 장치(100b, 100a 및 100d)를 경유하여, 탐색 트리(300)에서의 리프 노드인 노드 장치(100g)에 이르는 경로이다.
또한, 도 2a에 관해 설명한, 링크(215)에 장애가 발생했을 때의 경로의 전환(즉, 대체 경로 탐색)은, 도 2b의 탐색 경로(302)에 대응한다. 탐색 경로(302)는 도 2b에 도시한 바와 같이 백 트랙(303)을 포함한다.
즉, 「도 2a에 대해 설명한 경로의 전환은, 유선 애드혹 네트워크(200) 전체적으로, 탐색 트리(300)에서의 백 트랙(303)을 포함하는 깊이 우선 탐색이 수행되는 것에 해당한다」고 간주할 수 있다. 백 트랙(303)을 포함하는 탐색 경로(302)가, 리프 노드인 노드 장치(100g)에 이르면, 탐색은 성공하여, 유선 애드혹 네트워크(200)에서의 프레임의 중계 경로가 확립된다.
탐색 트리(300)에 있어서 노드 장치(100a)에서 백 트랙(303)이 발생하고 있는 것은, 도 2a의 설명에 있어서 노드 장치(100a)가 프레임을 노드 장치(100b)로 반송하는 것에 대응한다. 그리고, 탐색 트리(300)의 탐색 경로(302)에 의해 최종적으로 발견된, 탐색 트리(300)에서의 루트 노드로부터 리프 노드로의 경로가, 유선 애드혹 네트워크(200)에서의 노드 장치(100c)로부터 노드 장치(100g)로의 새로운 프레임 중계 경로에 해당한다. 즉, 도 2b에 도시한 바와 같이, 노드 장치(100c, 100b, 100e, 100h, 100g)를 지나는 경로가, 새로운 프레임 중계 경로로서 발견된다.
이상의 설명으로부터 이해되는 바와 같이, 송신원의 노드 장치(100c)로부터 송신처의 노드 장치(100g)까지의 경로가 유선 애드혹 네트워크(200) 내에 하나라도 존재하는 한, 반드시, 깊이 우선 탐색의 결과로서, 경로가 발견된다.
계속해서, 도 2a에서의 유선 애드혹 네트워크(200)의 내측과 외측에서의 프레임의 형식의 차이에 대해, 도 3을 참조하여 설명한다. 도 3은, 프레임의 형식을 설명하는 도면이다. 또한, 본 실시형태에 따른 「애드혹 프레임」은, 유선 애드혹 네트워크 내의 노드 장치 사이에서 송수신되는 프레임이다.
도 3에 도시한 바와 같이, 애드혹 프레임(400)은, 일반적인 이더넷 프레임(420) 앞에, 본 실시형태에서 정의되는 특정한 형식의 헤더인 「애드혹 헤더」가 부가된 형식의 프레임이다. 바꾸어 말하면, 애드혹 헤더(410)는, 외부 네트워크인 이더넷과, 본 실시형태의 유선 애드혹 네트워크와의 인터페이스로서 작용하는 정보이다.
본 실시형태의 애드혹 헤더(410)는, 도 3에 도시한 바와 같이 14 바이트이며, GD(411), GS(412), 타입(413), FID(414), TTL(415), 길이(416), FCS(417)의 각 필드를 포함한다. 또한, 상세한 것은 후술하는데, 애드혹 헤더(410)는, 유선 애드혹 네트워크 내의 노드 장치에 의해 부여된다. 또한, 이하에서는 표기의 간단화를 위해, 예컨대 「GD 필드」를 단순히 「GD」와 같이 표기할 수 있다.
3 바이트의 GD(Global Destination)(411)에는, 유선 애드혹 네트워크 내에서의 프레임의 송신원의 노드 장치를, 유선 애드혹 네트워크 내에서 일의적으로 식별하기 위한 식별 정보(예컨대, 노드 ID)가 지정된다. 또한, 3 바이트의 GS(Global Source)(412)에는, 유선 애드혹 네트워크 내에서의 프레임의 송신처의 노드 장치를, 유선 애드혹 네트워크 내에서 일의적으로 식별하기 위한 식별 정보(예컨대, 노드 ID)가 지정된다.
예컨대, 도 2a의 예에서, PC(203)로부터 PC(205)로의 프레임이 유선 애드혹 네트워크(200)를 경유하여 송신되는 경우, 유선 애드혹 네트워크(200) 내에서의 송신원의 노드 장치는, PC(203)와 접속된 노드 장치(100c)이다. 그리고, 유선 애드혹 네트워크(200) 내에서의 송신처의 노드 장치는, PC(205)와 접속된 노드 장치(100g)이다.
따라서, 이 경우, 유선 애드혹 네트워크(200) 내에서 송신되는 애드혹 프레임(400)에서는, 노드 장치(100c)의 노드 ID가 GD(411)에 지정되어 있다. 또한, GS(412)에는, 노드 장치(100g)의 노드 ID가 지정되어 있다.
GD(411) 및 GS(412)에 지정되는 값은, 전술한 바와 같이, 예컨대, 미리 각 노드 장치에 할당된 노드 ID이며, 노드 ID는 식별 번호일 수도 있다. 또한, 유선 애드혹 네트워크 내의 각 노드 장치가 동일 벤더의 제품이라면, 노드 장치의 MAC 어드레스의 하위 3 바이트를, GD(411) 및 GS(412)용의 식별 정보로서 이용할 수도 있다. 왜냐하면, MAC 어드레스의 상위 3 바이트는 OUI(Organizationally Unique Identifier)이고, 하위 3 바이트는 벤더 내에서 일의적이기 때문이다.
또한, 「GD」 및 「GS」라는 명칭에서의 「글로벌」이라고 하는 말의 함의(含意)를, 도 2a의 예에 입각하여 설명하면, 다음과 같다.
유선 애드혹 네트워크(200) 내를 노드 장치(100c)로부터 노드 장치(100g)로 애드혹 프레임(400)이 송신될 때, 노드 장치(100c)로부터의 직접적인 송신처는, 노드 장치(100c)에 인접하는 노드 장치(예컨대, 노드 장치(100b))이다. 따라서, 직접적인 송신처인 노드 장치(100b)와, 최종적인 송신처인 노드 장치(100g)를 명시적으로 구별하는 경우에는, 유선 애드혹 네트워크(200) 내에서의 최종적인 송신처인 노드 장치(100g)를 「글로벌한 송신처」라고 한다. 그리고, 노드 장치(100c)와 직접 케이블로 접속된, 노드 장치(100c)에 인접하는 노드 장치(100b)를 「로컬한 송신처」라고 한다.
따라서, 노드 장치(100b)에게는, 노드 장치(100c)가, 글로벌인 송신원이기도 하고, 또한 로컬한 송신원이기도 하다. 또한, 노드 장치(100g)에게는, 노드 장치(100c)가, 글로벌한 송신원이기는 하지만, (직접 노드 장치(100g와 100c)가 접속되어 있는 것은 아니므로) 로컬한 송신원은 아니다. 또한, 도 2a로부터도 명백한 바와 같이, 유선 애드혹 네트워크에 있어서, 로컬한 송신처는 프레임의 송신처의 포트와 일대일로 대응하며, 로컬한 송신원은 프레임을 수신한 포트와 일대일로 대응한다.
여기서 도 3의 설명으로 돌아가면, 4 비트의 타입(413)에는, 애드혹 프레임(400)의 타입(종별)을 식별하는 값이 지정된다. 예컨대, 실시형태에 따라, 하기에 예시한 바와 같은 몇 가지의 타입을 식별하는 값이, 타입(413)에 지정된다.
ㆍ통상 프레임(애드혹 헤더(410)에 이어서, 이더넷 프레임(420)을 포함하는 애드혹 프레임(400)의 일종)
ㆍ포즈 프레임(애드혹 헤더(410)에 이어서, 이더넷 프레임(420)이 아닌 정해진 형식의 데이터를 포함하는 애드혹 프레임의 일종)
ㆍ그 밖의 몇 가지 종류의 제어 프레임(애드혹 헤더(410)에 이어서, 이더넷 프레임(420)이 아닌 정해진 형식의 데이터를 포함하는 애드혹 프레임의 일종)
ㆍ노드 장치가 범용 LAN 포트를 통해 수취한 브로드캐스트 프레임(애드혹 헤더(410)에 이어서, 이더넷 프레임(420)을 포함하는 애드혹 프레임(400)의 일종)
ㆍ노드 장치 자신에 기인하는 브로드캐스트 프레임(애드혹 헤더(410)에 이어서, 이더넷 프레임(420)을 포함하는 애드혹 프레임(400)의 일종)
또한, 12 비트의 FID(Frame Identification)(414)에는, GS(412)의 값으로 식별되는 송신원의 노드 장치가 애드혹 프레임(400)에 할당한 식별 정보가 지정된다. FID(414)에 지정되는 값은, 예컨대, 노드 장치가 도시하지 않은 내장 카운터 회로를 이용하여 생성하는 시퀀스 번호일 수도 있다.
또한, 2 바이트의 TTL(Time To Live)(415)에는, 애드혹 프레임(400)의 유효 기간이, 유선 애드혹 네트워크 내에서의 홉 수에 의해 지정된다. 애드혹 프레임(400)이 유선 애드혹 네트워크 내에서 홉할 때마다, TTL(415)의 값은, 노드 장치에 의해 카운트 다운된다.
TTL(415)의 초기값(즉, GS(412)의 값으로 식별되는 송신원의 노드 장치에 의해 할당되는 값)은, 본 실시형태에서는, 2 바이트 모든 비트가 「1」이 되는 값(즉 65535)이다. 이와 같이 큰 값이 TTL(415)의 초기값으로서 설정되기 때문에, 본 실시형태는, 수 십만의 노드 장치를 포함하는 유선 애드혹 네트워크에도 바람직하게 적용할 수 있다. 물론, 실시형태에 따라, TTL(415)의 초기값은 임의적이다.
2 바이트의 길이(416)에는, 애드혹 헤더(410) 이외의 부분의 길이(예컨대, 도 3에 예시한 애드혹 프레임(400)의 경우에는 이더넷 프레임(420)의 길이)를 바이트 단위로 카운트한 값이 지정된다.
또한, 2 바이트의 FCS(Frame Check Sequence)(417)는, 애드혹 헤더(410)의, GD(411)로부터 길이(416)까지의 각 필드로부터 얻어지는, CRC(Cyclic Redundancy Check) 코드 등의, 오류 검출 부호가 지정된다.
이더넷 프레임(420)은, 이하의 각 필드를 포함한다.
ㆍ6 바이트의 MAC-DA(Media Access Control Destination Address)(421)
ㆍ6 바이트의 MAC-SA(Media Access Control Source Address)(422)
ㆍ2 바이트의 타입/길이(423)
ㆍ46 내지 1500 바이트의 가변 길이의 L3(Layer 3) 패킷(424)
ㆍ4 바이트의 FCS(425)
이더넷 프레임(420)의 형식은 주지되어 있으므로 상세한 설명은 생략하지만, 예컨대, 도 2a의 예에서, 유선 애드혹 네트워크(200)를 경유하여 PC(203)로부터 PC(205)로 프레임이 송신되는 경우의 구체적인 예를 설명하면, 다음과 같다.
즉, PC(203)에서는, PC(205)의 MAC 어드레스를 MAC-DA(421)에 지정하고, PC(203) 자신의 MAC 어드레스를 MAC-SA(422)에 지정한 이더넷 프레임(420)을 생성하고, 링크(214)를 통해 노드 장치(100c)로 송신한다. 그러면, 노드 장치(100c)가, 전술한 내용에서 설명한 바와 같은 애드혹 헤더(410)를 이더넷 프레임(420) 앞에 부여하여 애드혹 프레임(400)을 작성한다.
애드혹 프레임(400)은, 유선 애드혹 네트워크(200) 내에서 노드 장치(100g)로 송신되고, 노드 장치(100g)는, 애드혹 헤더(410)를 제외한 이더넷 프레임(420)을, 링크(228)를 통해 PC(205)로 출력한다.
또한, 애드혹 헤더(410)에서의 타입(413)에, 포즈 프레임이나 그 밖의 제어 프레임을 나타내는 값이 지정되어 있는 경우, 애드혹 프레임은, 애드혹 헤더(410) 뒤에, 이더넷 프레임(420) 이외의 정해진 형식의 페이로드를 포함한다.
계속해서, 도 4를 참조하여, 브로드캐스트 프레임이 송신되었을 때의, 본 실시형태의 유선 애드혹 네트워크 전체의 행동에 대해 설명한다. 도 4는 브로드캐스트 프레임의 폭주가 방지되는 것을 설명하는 도면이다.
도 4의 유선 애드혹 네트워크(250)는, 각각 도 1의 노드 장치(100)와 동일한 각 컴포넌트를 갖는 복수 개의 노드 장치(100p~100t)를 포함한다. 유선 애드혹 네트워크(250) 내의 노드 장치 사이는, 다음과 같이 물리적으로 접속되어 있다.
ㆍ노드 장치(100p)는 노드 장치(100q)와 접속되어 있다.
ㆍ노드 장치(100q)는, 상기 노드 장치(100p) 이외에, 부가적으로 노드 장치(100r 및 100s)와도 접속되어 있다.
ㆍ노드 장치(100r)는, 상기 노드 장치(100q) 이외에, 부가적으로 노드 장치(100s 및 100t)와도 접속되어 있다.
ㆍ노드 장치(100s)는, 상기 노드 장치(100q와 100r) 이외에, 부가적으로 노드 장치(100t)와도 접속되어 있다.
ㆍ노드 장치(100t)는, 전술한 바와 같이, 노드 장치(100r 및 100s)와 접속되어 있다.
예컨대 이상과 같은 물리적 토폴로지의 유선 애드혹 네트워크(250)에 있어서, 노드 장치(100p)로부터 브로드캐스트 프레임이 송신되었다고 하자. 또한, 「브로드캐스트 프레임」이란, MAC-DA(421)에 브로드캐스트 어드레스(즉 총 비트의 값이 1인 어드레스)가 지정되어 있는, 이더넷 프레임 또는 애드혹 프레임이다.
예컨대, 노드 장치(100p)는, 도 4에는 도시하지 않은 외부 기기(PC 또는 센서 등)와 범용 LAN 포트를 통해 접속되어 있다. 그리고, 상기 외부 기기가, MAC-DA(421)에 브로드캐스트 어드레스를 지정한 이더넷 프레임(420)을, 노드 장치(100p)로 송신한다.
그러면, 노드 장치(100p)는, 애드혹 헤더(410)를 이더넷 프레임(420) 앞에 부여하여 애드혹 프레임(400)을 작성한다. 여기서 작성되는 애드혹 프레임(400)은, 브로드캐스트 프레임이다. 노드 장치(100p)는, 작성된 애드혹 프레임(400)을, 유선 애드혹 네트워크(250) 내에 브로드캐스트하기 위해, 단계 S101에서 노드 장치(100q)로 송신한다.
그러면, 노드 장치(100q)는, 단계 S102에서 브로드캐스트 프레임을 노드 장치(100r)로 송신함과 아울러, 단계 S103에서 브로드캐스트 프레임을 노드 장치(100s)로 송신한다.
또한, 브로드캐스트 프레임을 노드 장치(100q)로부터 수신한 노드 장치(100r)는, 단계 S104에서 브로드캐스트 프레임을 노드 장치(100s)로 송신한다. 그러나, 노드 장치(100s)는, 이미 단계 S103에서 노드 장치(100q)로부터 브로드캐스트 프레임을 수신하였으므로, 단계 S104에서 노드 장치(100r)로부터 수신한 브로드캐스트 프레임을 파기한다.
구체적으로는, 노드 장치(100s)는, 단계 S103에서 수신한 브로드캐스트 프레임의 MAC-SA(422)의 값을, 단계 S103의 수신 처리를 수행한 시각과 대응시켜, 도 1의 브로드캐스트 관리 테이블(104)에 기억하고 있다. 또한, 단계 S103과 S104는 거의 동시에 실행된다.
따라서, 노드 장치(100s)는, 단계 S104에서 브로드캐스트 프레임을 수신하면, 수신한 브로드캐스트 프레임의 MAC-SA(422)의 값을 키로 하여 브로드캐스트 관리 테이블(104)을 검색하고, 대응지어진 시각을 얻는다. 그리고, 단계 S104를 실행하고 있는 현재의 시각과, 얻어진 시각과의 차이가 정해진 시간보다 짧은 경우, 노드 장치(100s)는, 단계 S104에서 수신한 브로드캐스트 프레임을 파기한다.
또한, 노드 장치(100s)는, 단계 S105로서 도시한 바와 같이, 단계 S103에서 노드 장치(100q)로부터 수신한 브로드캐스트 프레임을, 노드 장치(100r)로 송신한다. 그러나, 노드 장치(100r)는, 단계 S102에서 노드 장치(100q)로부터 브로드캐스트 프레임을 수신 완료하였으며, 단계 S104에서 브로드캐스트 프레임을 송신 완료했다. 따라서, 노드 장치(100r)는, 노드 장치(100s)로부터 단계 S105에서 수신한 브로드캐스트 프레임은 파기한다. 노드 장치(100r)에 의한 파기는, 구체적으로는 다음과 같이 구현된다.
노드 장치(100r)는, 단계 S104에서 이미, 브로드캐스트 프레임을 노드 장치(100s)로 송신하였다. 따라서, 노드 장치(100r)는, 브로드캐스트 프레임의 GS(412)의 값과 FID(414)의 값을 포함하는 엔트리를 도 1의 루프 검출 테이블(105)에 갖는다.
단계 S105에 있어서 노드 장치(100r)는, 노드 장치(100s)로부터 수신한 브로드캐스트 프레임의 GS(412)의 값과 FID(414)의 값을 검색 키로 하여 루프 검출 테이블(105)을 검색한다. 그러면, 노드 장치(100r)는, 검색 키에 일치하는 엔트리가 존재하는 것을 확인한다. 즉 노드 장치(100r)는, 「단계 S104에서 노드 장치(100r) 자신이 송신한 브로드캐스트 프레임이, 유선 애드혹 네트워크(250) 내에서 루프하여, 노드 장치(100r) 자신에게 되돌아 왔다」고 인식한다. 이 인식의 결과, 단계 S105에서는 노드 장치(100r)가, 노드 장치(100s)로부터 수신한 브로드캐스트 프레임을 파기한다.
또한, 실시형태에 따라서는, 단계 S104의 수신보다 단계 S105의 송신이 먼저 수행되는 경우도 있을 수 있는데, 그 경우 노드 장치(100s)는, 루프 검출 테이블(105)에 의거하여 브로드캐스트 프레임을 파기한다.
또한, 노드 장치(100r)는, 단계 S106로서 도시한 바와 같이, 단계 S102에서 노드 장치(100q)로부터 수신한 브로드캐스트 프레임을, 노드 장치(100t)로도 송신한다.
그리고, 노드 장치(100s)는, 단계 S107로서 도시한 바와 같이, 단계 S103에서 노드 장치(100q)로부터 수신한 브로드캐스트 프레임을, 노드 장치(100t)로도 송신한다. 그러나, 노드 장치(100t)는 단계 S106에서 이미 브로드캐스트 프레임을 수신하였다. 따라서, 단계 S104에서의 노드 장치(100s)와 동일하게, 노드 장치(100t)는 단계 S107에 있어서, 브로드캐스트 관리 테이블(104)을 참조하여, 노드 장치(100s)로부터 수신한 브로드캐스트 프레임을 파기한다.
또한, 노드 장치(100t)는, 단계 S108로서 도시한 바와 같이, 단계 S106에서 노드 장치(100r)로부터 수신한 브로드캐스트 프레임을, 노드 장치(100s)로 송신한다. 그러나, 노드 장치(100s)는, 단계 S105 및 S107에서 브로드캐스트 프레임을 송신 완료했다. 따라서, 단계 S105에서의 노드 장치(100r)와 동일하게, 노드 장치(100s)는 단계 S108에 있어서, 루프 검출 테이블(105)을 참조하여, 노드 장치(100t)로부터 수신한 브로드캐스트 프레임을 파기한다.
실시형태에 따라서는, 단계 S107의 송신보다 단계 S108의 수신 쪽이 먼저 수행될 지도 모른다. 그러나, 그 경우에도, 노드 장치(100s)는 단계 S105에서 이미 브로드캐스트 프레임을 송신하였으므로, 루프 검출 테이블(105)에 의거하여 적절하게 노드 장치(100t)로부터의 브로드캐스트 프레임을 파기할 수 있다.
이상과 같이 하여 본 실시형태에 따르면, 개개의 노드 장치가 적당히 브로드캐스트 관리 테이블(104) 또는 루프 검출 테이블(105)을 참조하여, 수신한 브로드캐스트 프레임을 파기하는지 여부를 판단한다. 그리고, 개개의 노드 장치는, 브로드캐스트 프레임을 파기하지 않는 경우에만, 인접 노드 장치로 브로드캐스트 프레임을 송신한다.
그 결과, 브로드캐스트 프레임은, 유선 애드혹 네트워크(250) 내의 모든 노드 장치에 도달한다. 게다가, 브로드캐스트 프레임이 무한하게 유선 애드혹 네트워크(250) 내를 계속 루프하는 사태(즉, 브로드캐스트 프레임의 폭주)는 방지된다. 폭주의 방지는, 유선 애드혹 네트워크(250) 내의 각 노드 장치에 의한 분산 협조의 결과이다.
이상, 도 1의 각 컴포넌트를 갖는 노드 장치를 복수 개 포함하는 유선 애드혹 네트워크에서의 분산 협조의 개요에 대해, 도 2a 내지 도 4를 참조하여 설명했다. 이하에서는, 전술한 바와 같은 분산 협조를 구현하기 위한, 개개의 노드 장치의 구체적인 구성 및 동작을 상세하게 설명한다.
도 5는 노드 장치의 하드웨어 구성도이다. 도 5는 도 1의 노드 장치(100)를 구현하는 구체적인 하드웨어 구성예를 도시하고 있다.
도 5의 노드 장치(100)는, 도 5에는 도시하지 않은 인접 노드 장치와 유선 접속하기 위한 복수 개의 유선 애드혹 네트워크 포트(101-1~101-x)(도 1에서는 단순히 「포트」라고 표기하였음)를 구비한다. 또한, 도 5의 노드 장치(100)는, 도 5에는 도시하지 않은 외부 기기(예컨대 PC, L2SW, 센서 등)와 유선 접속하기 위한, 도 2a에 예시한 범용 LAN 포트(106a~106i)와 동일한, 범용 LAN 포트(106)를 구비한다.
나아가, 도 5의 노드 장치(100)는, 유선 애드혹 네트워크 포트(101-1~101-x) 각각에 접속된, 복수 개의 PHY(PHYsical layer) 칩(111-1~111-x)을 구비한다. 또한, 노드 장치(100)는, 범용 LAN 포트(106)와 접속된 L2SW(Layer 2 Switch)부(112)를 구비한다.
또한, 노드 장치(100)는, 도 1의 라우팅 엔진(102)을 구현하는 FPGA(Field Programmable Gate Array)(113)를 구비하며, 부가적으로 MPU(MicroProcessing Unit)(114)와 각종 기억 장치도 구비하고 있다.
구체적으로는, 노드 장치(100)는, FPGA(113)로부터 액세스 가능한, CAM(Content Addressable Memory)(115)과, SRAM(Static Random Access Memory)(116)과, SDRAM(Synchronous Dynamic Random Access Memory)(117)을 구비한다. 또한, 본 실시형태에서는, CAM(115)의 검색 결과로서 얻어지는 어드레스는, SRAM(116)의 어드레스이다. 또한, 도 1의 라우팅 테이블(103), 브로드캐스트 관리 테이블(104) 및 루프 검출 테이블(105)은, 본 실시형태에서는, CAM(115)과 SRAM(116)에 의해 구현된다.
또한, 노드 장치(100)는, MPU(114)로부터 액세스 가능한, DDR(Double Data Rate)2 SDRAM(118)과 플래시 메모리(119)를 구비한다. 불휘발성 메모리의 일종인 플래시 메모리(119)에는, 예컨대, 노드 장치(100) 자신의 노드 ID, 노드 장치(100) 자신의 MAC 어드레스, MPU(114)가 실행하는 펌웨어 프로그램 등이 기억되어 있다. DDR2 SDRAM(118)은, MPU(114)가 펌웨어 프로그램을 실행할 때의 작업 영역으로서 사용된다.
또한, 노드 장치(100)는, L2SW부(112)와 접속된 PHY 칩(120)을 더 구비하고 있다.
그리고, PHY 칩(111-1~111-x) 각각은, 물리층과 MAC 서브층 사이의 인터페이스인 MII(Media Independent Interface)(121-1~121-x)에 의해, 각각 FPGA(113)와 접속되어 있다. 또한, L2SW부(112)와 FPGA(113) 사이도, MII(122)에 의해 접속되어 있다.
FPGA(113)와 MPU(114) 사이는, PCI(Peripheral Component Interconnect) 버스(123)로 접속됨과 아울러, MII(124)에 의해서도 접속되어 있다. L2SW부(112)에 접속된 PHY 칩(120)은, MII(125)에 의해 MPU(114)에 접속되어 있다.
본 실시형태에서는, MII(124)에 의해 FPGA(113)와 접속되는 MPU(114)의 내부 접속 포트(114a)와, MII(125)에 의해 PHY 칩(120)과 접속되는 MPU(114)의 내부 접속 포트(114b)에는, 각각 MAC 어드레스가 할당되어 있다.
또한, 노드 장치(100) 내에서의 프레임의 전송 경로는, 이하와 같이 다양하다.
(1) 유선 애드혹 네트워크 포트(101-i)(1≤i≤x)에서 수신된 프레임이, PHY 칩(111-i)과 MII(121-i)를 통해 FPGA(113)로 입력된다. 그리고, 프레임은, FPGA(113)로부터 MII(121-j)(1≤j≤x)를 통해 PHY 칩(111-j)으로 출력되고, 유선 애드혹 네트워크 포트(101-j)로부터 송신된다.
(2) 유선 애드혹 네트워크 포트(101-i)(1≤i≤x)에서 수신된 프레임이, PHY 칩(111-i)과 MII(121-i)를 통해 FPGA(113)로 입력된다. 그리고, 프레임은, MII(122)를 통해 L2SW부(112)로 출력되고, 범용 LAN 포트(106)로부터 송신된다.
(3) 유선 애드혹 네트워크 포트(101-i)(1≤i≤x)에서 수신된 프레임이, PHY 칩(111-i)과 MII(121-i)를 통해 FPGA(113)로 입력된다. 그리고, 프레임은, MII(124)를 통해 MPU(114)로 출력되고, MPU(114)에서 처리된다.
(4) 범용 LAN 포트(106)에서 수신된 프레임이, L2SW부(112)와 MII(122)를 통해 FPGA(113)로 입력된다. 그리고, 프레임은, FPGA(113)로부터 MII(121-j)(1≤j≤x)를 통해 PHY 칩(111-j)으로 출력되고, 유선 애드혹 네트워크 포트(101-j)로부터 송신된다.
(5) 범용 LAN 포트(106)에서 수신된 프레임이, L2SW부(112)와 PHY 칩(120)과 MII(125)를 통해 MPU(114)로 입력되고, MPU(114)에서 처리된다.
(6) MPU(114)가 프레임을 생성하고, MII(124)를 통해 FPGA(113)로 출력한다. 그리고, 프레임은, FPGA(113)로부터 MII(121-j)(1≤j≤x)를 통해 PHY 칩(111-j)으로 출력되고, 유선 애드혹 네트워크 포트(101-j)로부터 송신된다.
(7) MPU(114)가 프레임을 생성하고, MII(125)를 통해 PHY 칩(120)으로 출력한다. 그리고, 프레임은, PHY 칩(120)으로부터 L2SW부(112)로 출력되고, 추가로 범용 LAN 포트(106)로부터 송신된다.
또한, L2SW부(112)는, 상기 (7)의 전송 경로로 수취한 프레임으로부터 MPU(114)의 내부 접속 포트(114b)의 MAC 어드레스를 학습할 수 있다. 따라서, L2SW부(112)는, 범용 LAN 포트(106)에서 수신된 프레임의 MAC-DA(421)의 값이 내부 접속 포트(114b)의 MAC 어드레스와 일치하면, 상기 (5)의 전송 경로에 의해 프레임을 PHY 칩(120)으로 출력한다. 다른 한편, L2SW부(112)는, 범용 LAN 포트(106)에서 수신된 프레임의 MAC-DA(421)의 값이 내부 접속 포트(114b)의 MAC 어드레스와 다르면, 상기 (4)의 전송 경로에 의해 프레임을 FPGA(113)로 출력한다.
계속해서, 도 5의 각종 하드웨어를 갖는 노드 장치(100)의 기능에 대해 설명한다.
도 6은 노드 장치의 기능 구성도이다. 또한, 도 6에는, 각 기능 블록과 도 5의 하드웨어와의 관련을 파선으로 도시했으며, 범용 LAN 포트(106)에 관한 부분은 생략했다.
도 6에 도시한 바와 같이, 노드 장치(100)는, 애드혹 프레임(400)을 수신하는 수신부(131)를 구비한다. 구체적으로는, 노드 장치(100)의 복수 개의 인접 노드 장치(도 6에는 도시되지 않음)로부터, 각각 애드혹 프레임(400)을 수신하는 복수 개의 수신 포트(132-1~132-x)를, 수신부(131)는 포함한다.
또한, i번째의 수신 포트(132-i)(1≤i≤x)는, 유선 애드혹 네트워크 포트(101-i)와 PHY 칩(111-i)에 의해 구현된다. 도 6에서는, 도시의 편의상, 유선 애드혹 네트워크 포트(101-1~101-x)를 통합하여 「포트(101)」로 표시했으며, PHY 칩(111-1~111-x)을 통합하여 「PHY 칩(111)」으로 표시했다.
또한, 노드 장치(100)는, 수신부(131)가 수신한 애드혹 프레임(400)을, 타입이나 수신처 등의 정보에 따라 분류하는 수신 프레임 제어부(133)를 구비한다.
또한, 노드 장치(100)는, 노드 장치(100) 자신을 수신처로 하는 애드혹 프레임(400)을 처리하는 상위층 처리부(134)를 구비한다. 또한 「상위층」이란, 애드혹 프레임(400)이 규정되는 MAC 서브층보다 상위의 층이라는 의미이다.
수신부(131)가 수신한 애드혹 프레임(400)의 GD(411)의 값이, 노드 장치(100) 자신의 노드 ID와 일치하는 경우, 수신 프레임 제어부(133)는 애드혹 프레임(400)을 상위층 처리부(134)로 출력한다. 그리고, 상위층 처리부(134)는, 애드혹 프레임(400)으로부터 이더넷 프레임(420)을 추출하여 처리한다. 상위층 처리부(134)는, MPU(114), DDR2 SDRAM(118) 및 플래시 메모리(119)에 의해 구현된다.
또한, 노드 장치(100)는, CAM(115)과 SRAM(116)에 의해 구현되는 테이블 저장부(135)를 구비한다. 테이블 저장부(135)에는, 도 1의 라우팅 테이블(103), 브로드캐스트 관리 테이블(104) 및 루프 검출 테이블(105)이 저장된다. 또한, 도 7 내지 도 9와 함께 후술하는 각 테이블도, 테이블 저장부(135)에 저장된다.
노드 장치(100)는, 테이블 저장부(135)에 저장되는 각종 테이블의 엔트리를 작성, 갱신, 삭제함으로써, 각종 테이블의 내용을 제어하는 테이블 제어부(136)를 더 구비한다. 테이블 제어부(136)는, 구체적으로는, CAM(115)의 검색 및 검색 결과로서 얻어진 SRAM(116)의 어드레스에의 액세스를 수행할 수 있다.
또한, 노드 장치(100)는, 포트 감시부(137), 포트 선택부(138), 타이머(139) 및 송신 프레임 제어부(140)를 더 구비하고 있다(또한, 이들 각 부의 기능은 후술한다).
테이블 제어부(136)는, 수신 프레임 제어부(133), 포트 감시부(137), 포트 선택부(138), 타이머(139) 및 송신 프레임 제어부(140)로부터 주어지는 제어 정보에 따라 각종 테이블의 내용을 제어한다. 구체적인 제어는, 도 11a 내지 도 20의 흐름도와 함께 후술한다.
수신 프레임 제어부(133), 테이블 제어부(136), 포트 감시부(137), 포트 선택부(138), 타이머(139) 및 송신 프레임 제어부(140)는, 본 실시형태에서는 FPGA(113)에 의해 구현된다.
노드 장치(100)는, 애드혹 프레임(400)을 송신하는 송신부(141)를 더 구비한다.
구체적으로는, 송신부(141)는, 애드혹 프레임(400)을 버퍼링하는 버퍼부(142)를 포함한다. 버퍼부(142)는, 예컨대 SDRAM(117)에 의해 구현될 수도 있다. 버퍼부(142)는, 각 송신 포트(143-1~143-x)에 대응하여 영역이 세그멘트화되어 있을 수도 있다.
또한, 실시형태에 따라서는, 수신부(131)가 수신용의 별도의 버퍼부를 더 가지고 있을 수도 있다.
또한, 노드 장치(100)의 인접 노드 장치(도 6에는 도시되지 않음)로, 각각 애드혹 프레임(400)을 송신하는 복수 개의 송신 포트(143-1~143-x)를, 송신부(141)가 포함한다. 송신 포트(143-1~143-x)는, 버퍼부(142)에 버퍼링된 애드혹 프레임(400)을 판독하여, 도 6에는 도시하지 않은 인접 노드 장치에, 그 판독된 애드혹 프레임(400)을 송신한다.
또한, i번째의 송신 포트(143-i)(1≤i≤x)는, 유선 애드혹 네트워크 포트(101-i)와 PHY 칩(111-i)에 의해 구현된다. 즉, 수신 포트(132-i)와 송신 포트(143-i)를 구현하는 하드웨어는 공통적이다.
여기서, 전술한 내용에서는 설명을 생략한, 포트 감시부(137), 포트 선택부(138), 타이머(139) 및 송신 프레임 제어부(140)의 기능에 대해 설명한다.
포트 감시부(137)는, 수신부(131)의 각 수신 포트(132-1~132-x), 송신부(141)의 버퍼부(142) 및 송신부(141)의 각 송신 포트(143-1~143-x) 각각의 상태를 감시한다.
예컨대, PHY 칩(111-i)은, 유선 애드혹 네트워크 포트(101-i)에 접속된 링크가 다운되어 있는지 여부를 검출하고, 검출 결과를 FPGA(113)(또는 FPGA(113)로부터 액세스 가능한 정해진 레지스터 등)로 출력할 수도 있다. FPGA(113)에 의해 구현되는 포트 감시부(137)는, PHY 칩(111-i)으로부터 출력된 검출 결과를 감시함으로써, 수신 포트(132-i) 및 송신 포트(143-i)가 링크 다운 상태인지 여부를 감시한다.
또한, 포트 감시부(137)는, 버퍼부(142)의 사용률을 감시함으로써, 노드 장치(100)에 프레임이 과도하게 집중되지 않았는지, 즉, 노드 장치(100)가 비지 상태에 빠지지 않았는지를 감시한다.
포트 선택부(138)는, 테이블 저장부(135)에 저장되어 있는 테이블을 참조하여, 수신 프레임 제어부(133)로부터 출력된 프레임의 송신처 포트를 선택한다. 그리고, 포트 선택부(138)는, 선택한 포트를 송신 프레임 제어부(140)에 지시함과 아울러, 프레임을 송신 프레임 제어부(140)로 출력한다.
또한, 포트 선택부(138)는, 테이블 제어부(136)로 하여금 CAM(115)를 검색하도록 하여 SRAM(116)의 어드레스를 얻을 수 있으며, 얻은 어드레스를 사용하여 직접 SRAM(116)에 액세스하여 데이터의 참조 또는 갱신을 수행할 수 있다.
타이머(139)는, 각종 테이블에서의 각 엔트리의 에이징에 이용되는 시각 정보를 테이블 제어부(136)에 통지한다.
송신 프레임 제어부(140)는, 프레임을 버퍼부(142)에 출력한다. 또한, 송신 프레임 제어부(140)는, 버퍼부(142)에 기억된 프레임을, 포트 선택부(138)가 선택한 송신 포트(송신 포트(143-1~143-x) 중 어느 하나)로부터 송신하기 위한 제어를 수행한다.
이상, 도 5과 도 6을 참조하여, 노드 장치(100)의 하드웨어 구성과 기능 블록 구성을 설명했으므로, 이어서, 도 1에는 도시하지 않은 그 밖의 데이터에 대해, 도 7 내지 도 10을 참조하여 설명한다.
도 7은 포즈 상태 테이블의 예를 도시한 도면이다. 도 7의 포즈 상태 테이블(151)은, 예컨대, 도 6의 테이블 저장부(135)에 저장된다. 포즈 상태 테이블(151)에 관한 상세한 처리는, 도 11a 및 도 16과 함께 후술한다.
포즈 상태 테이블(151)은, x개의 포트(101-1~101-x) 각각에 대응하는 x개의 엔트리를 갖는다. 예컨대, i번째(1≤i≤x)의 포트(101-i)에 대응하는 엔트리에서는, 이하의 3가지의 정보가 대응지어져 있다.
ㆍ포트(101-i)를 식별하는 식별 정보로서의, 포트(101-i)의 포트 번호(PNi)
ㆍ포트(101-i)를 통해 직접 접속되어 있는 인접 노드 장치로부터, 포즈 요구를 받았는지 여부를 나타내는 포즈 상태(PSi)
ㆍ카운터(Counti)
또한, 포트(101-i)를 통해 직접 접속되어 있는 인접 노드 장치로부터 포즈 요구를 받았고, 포즈 요구에서 지정된 기간이 아직 경과하지 않은 경우에는, 포즈 상태(PSi)의 값은 「P」(Pause)이다.
다른 한편, 포트(101-i)를 통해 직접 접속되어 있는 인접 노드 장치로부터 포즈 요구를 받지 않은 경우에는, 포즈 상태(PSi)의 값은 「N」(Normal)이다. 또한, 포즈 요구를 해제하는 통지를 받은 경우에도 포즈 상태(PSi)의 값은 「N」이 되고, 포즈 요구에서 지정된 기간이 경과한 후에도 포즈 상태(PSi)의 값은 「N」이 된다. 포즈 상태(PSi)는 바이너리이므로, 1 비트로 나타낼 수 있다.
또한, 카운터(Counti)는, 포트(101-i)를 통해 직접 접속되어 있는 인접 노드 장치로부터 포즈 요구를 받았을 때, 포즈 프레임에서 지정되어 있는 값으로 설정되고, 그 후 카운트 다운된다.
도 8는 포트 링크 상태 테이블의 예를 도시한 도면이다. 도 8의 포트 링크 상태 테이블(152)은, 예컨대, 도 6의 테이블 저장부(135)에 저장된다. 포트 링크 상태 테이블(152)에 관한 상세한 처리는, 도 20과 함께 후술한다.
포트 링크 상태 테이블(152)은, x개의 포트(101-1~101-x) 각각에 대응하는 x개의 엔트리를 갖는다. 예컨대, i번째(1≤i≤x)의 포트(101-i)에 대응하는 엔트리에서는, 포트(101-i)의 포트 번호(PNi)와, 포트(101-i)에 접속된 링크가 통신 가능한 상태인지 여부를 나타내는 링크 상태(Li)가 대응지어져 있다.
또한, 포트(101-i)에 접속된 링크가 통신 가능한 상태라면, 링크 상태(Li)의 값은 「C」(Connected)이고, 포트(101-i)에 접속된 링크가 다운되어 있어 통신 불가능한 상태라면, 링크 상태(Li)의 값은 「D」(Down)이다. 링크 상태(Li)는 바이너리이므로, 1비트로 나타낼 수 있다.
도 9는 MAC 테이블의 예를 도시한 도면이다. 도 9의 MAC 테이블(153)은, 예컨대, 도 6의 테이블 저장부(135)에 저장된다.
MAC 테이블(153)의 하나의 엔트리는, 유선 애드혹 네트워크 내의 하나의 노드 장치에 대응한다. 도 9에는, b 개의 엔트리를 갖는 MAC 테이블(153)이 예시되어 있다. 예컨대, MAC 테이블(153)의 i번째(1≤i≤b)의 엔트리에서는, 다음 2개의 정보가 대응지어져 있다.
ㆍ유선 애드혹 네트워크 내의 어느 노드 장치에 접속된 외부 기기(예컨대 PC나 센서 등)의 MAC 어드레스(MACi)
ㆍMAC 어드레스(MACi)를 갖는 상기 외부 기기가 접속되어 있는 상기 노드 장치에 할당되어 있는, 유선 애드혹 네트워크 내에서 일의적인 노드 ID인 NIDi
노드 장치(100)는, 애드혹 프레임(400)을 수신하면, MAC-SA(422)와 GS(412)의 쌍을 학습한다.
즉, 테이블 제어부(136)는, 수신한 애드혹 프레임(400)에서의 MAC-SA(422)와 GS(412)의 값에 합치하는 엔트리가 MAC 테이블(153)에 존재하는지 여부를 판단한다. 그리고, 만일 MAC-SA(422)와 GS(412)의 값에 합치하는 엔트리가 존재하지 않으면, 테이블 제어부(136)는, MAC-SA(422)의 값과 GS(412)의 값을 대응시키는 새로운 엔트리를 작성하여, MAC 테이블(153)에 추가한다.
또한, 노드 장치(100)는, 범용 LAN 포트(106)를 통해 접속된 제1 외부 기기로부터 이더넷 프레임(420)을 수신하면, MAC-DA(421)의 값을 검색 키로 하여 MAC 테이블(153)을 검색한다.
검색 결과 엔트리가 발견되면, 노드 장치(100)는, 발견된 엔트리에 포함되는 노드 ID의 값을 GD(411)에 설정한 애드혹 헤더(410)를 작성하여, 이더넷 프레임(420) 앞에 부가한다. 즉, MAC-DA(421)의 값으로 식별되는 제2 외부 기기와 접속된, 유선 애드혹 네트워크 내의 다른 노드 장치의 노드 ID를, 노드 장치(100)는 GD(411)에 설정한다.
예컨대, 도 2a의 예에 있어서, PC(203)로부터 PC(205)로 프레임이 송신될 때, 유선 애드혹 네트워크(200)에 있어서 송신 경로 상에 있는 노드 장치(100b)는, 다음과 같이 하여 MAC 테이블(153)의 학습을 수행한다.
상기 예에서는, 노드 장치(100b)가 노드 장치(100c)로부터 수신한 애드혹 프레임(400)에 있어서, MAC-SA(422)에는 PC(203)의 MAC 어드레스가 지정되어 있고, GS(412)에는 노드 장치(100c)의 노드 ID가 지정되어 있다. 따라서, 노드 장치(100b)는, PC(203)의 MAC 어드레스와 노드 장치(100c)의 노드 ID를 대응시키는 것을 학습하고, 필요에 따라 MAC 테이블(153)에의 엔트리 추가를 수행한다.
또한, 이 학습 후에, 예컨대 PC(201)로부터 L2SW(202)를 통해, PC(203)가 수신처인 새로운 이더넷 프레임(420)을 노드 장치(100b)가 수신했다고 하자. 그러면, 노드 장치(100b)는, 상기 새로운 이더넷 프레임(420)의 MAC-DA(421)의 값을 검색 키로 하여 MAC 테이블(153)을 검색한다.
즉, 노드 장치(100b)는, PC(203)의 MAC 어드레스를 검색 키로 하여 MAC 테이블(153)을 검색한다. 그 결과, 노드 장치(100b)는, PC(203)와 접속된 유선 애드혹 네트워크(200) 내의 노드 장치(100c)의 노드 ID를 얻는다. 따라서, 노드 장치(100b)는, 노드 장치(100c)의 노드 ID를 GD(411)에 지정한 애드혹 헤더(410)를 생성하여 상기 새로운 이더넷 프레임(420) 앞에 부여함으로써, 새로운 애드혹 프레임(400)을 생성한다. 그리고, 노드 장치(100b)는, 상기 새로운 애드혹 프레임(400)을 송신한다.
또한, 노드 장치(100c)는, PC(205)의 MAC 어드레스와 노드 장치(100g)의 노드 ID를 대응시키는 것을 학습하기 전에, PC(205)가 수신처인 이더넷 프레임(420)을 PC(203)로부터 수신한 경우, 예컨대 다음과 같이 동작할 수도 있다.
즉, 브로드캐스트를 나타내는 정해진 값을 GD(411)에 지정한 애드혹 헤더(410)를 갖는, 노드 ID 조회용의 애드혹 프레임을, 노드 장치(100c)는 유선 애드혹 네트워크(200) 내에 브로드캐스트할 수도 있다. 노드 ID 조회용의 애드혹 프레임의 페이로드에는, PC(205)의 MAC 어드레스가 포함된다.
또한, 도 4에 예시한 분산 협조 메커니즘을 위해, 노드 ID 조회용의 애드혹 프레임은, 유선 애드혹 네트워크(200) 내에서 폭주하지 않는다.
그리고, 유선 애드혹 네트워크(200) 내에 브로드캐스트된 프레임에 의해 조회를 받은 노드 장치(100g)는, 노드 장치(100c)에 회신한다. 즉, 노드 장치(100g)는, PC(205)의 MAC 어드레스와 노드 장치(100g)의 노드 ID를 대응시키는 것을 통지하기 위한, 특수한 제어용의 애드혹 프레임을 회신한다. 그 결과, 노드 장치(100c)는, 회신된 애드혹 프레임으로부터, PC(205)의 MAC 어드레스와 노드 장치(100g)의 노드 ID를 대응시키는 것을 학습하고, MAC 테이블(153)에 엔트리를 추가한다.
도 10은 포즈 상태 관리 데이터의 예를 도시한 도면이다. 도 10의 포즈 상태 관리 데이터(154)는, 도 6의 포트 감시부(137)에 의해 관리되며, 노드 장치(100) 자신으로부터 인접 노드 장치로의 포즈 요구 및 포즈 요구의 해제 통지의 제어에 이용된다. 포즈 상태 관리 데이터(154)에 관한 상세한 처리는, 도 17 내지 도 19과 함께 후술한다.
도 10에 도시한 바와 같이, 포즈 상태 관리 데이터(154)는, 포즈 상태(SS)와, 카운터(SCount)와, 포즈 시작 시각(Start Time)을 포함한다.
포즈 상태(SS)의 값은, 노드 장치(100) 자신이 비지 상태에 빠져 있을 때 「P」(Pause)이고, 노드 장치(100) 자신이 비지 상태가 아닐 때 「N」(Normal)이다. 예컨대, 포트 감시부(137)는, 버퍼부(142)의 사용률을 감시한다. 그리고, 버퍼부(142)의 사용률이 정해진 임계값을 초과했으면, 포트 감시부(137)는 「노드 장치(100) 자신이 비지 상태」라고 판정하고, 포즈 상태(SS)의 값을 「P」로 설정할 수도 있다.
카운터(SCount)에는, 노드 장치(100) 자신으로부터 다른 노드 장치로 포즈 요구를 송신할 때, 포즈 프레임에 지정하는 값이 설정된다. 즉, 카운터(SCount)에는, 인접 노드 장치에 대해 「프레임의 송신을 중지해 주었으면 한다」고 노드 장치(100) 자신이 요구하는 기간의 길이가 설정된다.
포트 감시부(137)는, 카운터(SCount)의 값을 임의로 설정할 수 있다. 실시형태에 따라, 포트 감시부(137)는, 미리 결정된 상수값을 카운터(SCount)에 설정할 수도 있고, 버퍼부(142)의 사용률에 따른 가변 파라미터의 값을 카운터(SCount)에 설정할 수도 있다.
포즈 시작 시각(Start Time)은, 노드 장치(100) 자신이 인접 노드 장치로 포즈 요구를 송신한 시각이 설정된다.
이상, 노드 장치(100)의 구성 및 각종 데이터 구조에 대해 설명했으므로, 이하에서는 노드 장치(100)의 동작의 구체적인 내용에 대해, 흐름도를 참조하면서 설명한다.
도 11a 내지 도 11d는, 라우팅 처리를 설명하는 흐름도이다. 도 11a 내지 도 11d의 흐름도에 무한의 반복 루프로서 표현되어 있는 바와 같이, 노드 장치(100)에 전원이 켜져 있는 동안, FPGA(113)는, 도 11a 내지 도 11d의 처리를 계속 실행한다.
노드 장치(100)에 전원이 켜지면, 단계 S201에서 초기화가 수행된다. 예컨대, MPU(114)는 플래시 메모리(119)로부터 노드 장치(100) 자신의 노드 ID를 판독하여, DDR2 SDRAM(118)에 기억함과 아울러 FPGA(113)로 출력할 수도 있다. 또한, 단계 S201에서 테이블 제어부(136)가 각종 테이블의 초기화를 수행할 수도 있다.
예컨대, 단계 S201의 시점에서는 아직 아무 것도 학습되지 않았으므로, 라우팅 테이블(103), 브로드캐스트 관리 테이블(104), 루프 검출 테이블(105) 및 MAC 테이블(153)은, 엔트리를 갖지 않는 상태로 초기화된다. 또한, 테이블 제어부(136)는, 포즈 상태 테이블(151)의 각 엔트리(1≤i≤x)에 있어서, 포즈 상태(PSi)를 「N」으로 설정하고, 카운터(Counti)를 0으로 설정할 수도 있다. 또한 테이블 제어부(136)는, 포트 링크 상태 테이블(152)의 각 엔트리(1≤i≤x)에 있어서, 링크 상태(Li)를 「C」로 설정할 수도 있다.
또한, 단계 S201에서는, 포트 감시부(137)가, 포즈 상태 관리 데이터(154)를 초기화할 수도 있다. 예컨대, 포트 감시부(137)는, 포즈 상태(SS)를 「N」으로 설정하고, 카운터(SCount)를 0으로 설정할 수도 있다.
계속해서, 단계 S202에서 노드 장치(100)는, 포트(101-1~101-x) 중 어느 하나에서 프레임이 수신되는 것을 대기한다.
단계 S202에 있어서, 예컨대, 포트(101-r)(1≤r≤x)에서 프레임이 수신되면, 도 6에 도시한 바와 같이 프레임은 수신 포트(132-r)로부터 수신 프레임 제어부(133)로 출력된다. 또한, 도 9에 관해 설명한 MAC 테이블(153)의 학습을 수행하도록, 수신 프레임 제어부(133)가 테이블 제어부(136)에 지시하고, 테이블 제어부(136)는 MAC 테이블(153)의 학습을 수행한다. 그리고 처리는 단계 S203으로 이행된다.
단계 S203에서 수신 프레임 제어부(133)는, 단계 S202에서 수신한 프레임이 포즈 프레임인지 여부를, 수신한 프레임의 타입(413)에 의거하여 판별한다. 단계 S202에서 수신한 프레임이 포즈 프레임인 경우, 처리는 단계 S204로 이행되고, 단계 S202에서 수신한 프레임이 포즈 프레임이 아닌 경우, 처리는 단계 S207로 이행된다.
단계 S204에서, 수신 프레임 제어부(133)는, 수신한 포즈 프레임에서 지정되어 있는 포즈 카운터의 값이 0인지 여부를 판단한다. 포즈 카운터의 값이 0이면 처리는 단계 S205로 이행되고, 포즈 카운터의 값이 0이 아니면 처리는 단계 S206으로 이행된다.
단계 S205는, 포즈 카운터의 값이 0인 경우, 즉 포즈 요구의 해제가 통지된 경우에 실행된다. 구체적으로는, 단계 S205에서 수신 프레임 제어부(133)는, 단계 S202에서 포즈 프레임을 수신한 포트에 대응하는 포즈 상태를 해제하고, 카운터를 클리어하도록, 테이블 제어부(136)에 지시한다. 그리고 테이블 제어부(136)는 지시에 따라 동작한다.
예컨대, 단계 S202에 있어서, 유선 애드혹 네트워크 포트(101-r)(1≤r≤x)에서 포즈 프레임이 수신된 경우, 단계 S206에서 테이블 제어부(136)는, 수신 프레임 제어부(133)의 지시에 따라 다음과 같이 동작한다.
즉, 테이블 제어부(136)는, 도 7의 포즈 상태 테이블(151)에 있어서, 유선 애드혹 네트워크 포트(101-r)의 포트 번호(PNr)에 대응지어진 포즈 상태(PSr)와 카운터(Countr)를, 각각 「N」과 0으로 설정한다. 그리고, 처리는 단계 S202로 복귀한다.
다른 한편, 단계 S206은, 포즈 카운터의 값이 0이 아닌 경우, 즉 새로운 포즈 요구 또는 포즈 연장 요구를 받았을 때 실행된다.
또한, 포즈 연장 요구란 포즈 요구의 1종류이다. 과거에 제1 포즈 요구를 낸 노드 장치가, 제1 포즈 요구를 나타내는 포즈 프레임에 지정한 기간의 경과 후에도 아직 비지 상태가 계속되고 있는 경우에, 제1 포즈 요구의 해제를 통지하는 대신 다시 제2 포즈 요구를 낼 수가 있다. 이 제2 포즈 요구가, 포즈 연장 요구이다.
구체적으로는, 단계 S206에서 수신 프레임 제어부(133)는, 단계 S202에서 포즈 프레임을 수신한 포트에 대응하는 포즈 상태를 「P」로 하여, 포즈 프레임에 따라 카운터를 설정하도록, 테이블 제어부(136)에 지시한다. 그리고 테이블 제어부(136)는 지시에 따라 동작한다.
예컨대, 단계 S202에 있어서, 유선 애드혹 네트워크 포트(101-r)(1≤r≤x)에서 포즈 프레임이 수신된 경우, 단계 S205에서 테이블 제어부(136)는, 수신 프레임 제어부(133)의 지시에 따라 다음과 같이 동작한다.
즉, 테이블 제어부(136)는, 도 7의 포즈 상태 테이블(151)에 있어서, 유선 애드혹 네트워크 포트(101-r)의 포트 번호(PNr)에 대응지어진 포즈 상태(PSr)를 「P」로 설정한다. 또한, 테이블 제어부(136)는, 도 7의 포즈 상태 테이블(151)에 있어서 포트 번호(PNr)에 대응지어진 카운터(Countr)를, 단계 S202에서 수신한 포즈 프레임에 지정되어 있는 값으로 설정한다. 그리고, 처리는 단계 S202로 복귀한다.
단계 S207은, 포즈 프레임 이외의 종류의 프레임이 단계 S202에서 수신되었을 때 실행된다. 단계 S207에서 수신 프레임 제어부(133)는, 단계 S202에서 수신한 프레임이 브로드캐스트 프레임인지 여부를 판단한다.
구체적으로는, MAC-DA(421)가 브로드캐스트 어드레스(즉, 전체 비트가 「1」인 어드레스)이면, 수신 프레임 제어부(133)는, 수신한 프레임이 브로드캐스트 프레임인 것으로 판단하고, 처리는 도 11b의 단계 S208로 이행된다. 다른 한편, MAC-DA(421)가 브로드캐스트 어드레스가 아니면, 처리는 도 11a의 단계 S216으로 이행된다.
도 11b에 도시한 단계 S208 내지 S215는, 단계 S202에서 브로드캐스트 프레임이 수신되었을 때의 처리이다.
단계 S208에서 수신 프레임 제어부(133)는, 단계 S202에서 수신한 프레임에 해당하는 엔트리가 루프 검출 테이블(105)에 있는지 여부를 판단한다. 즉, 수신 프레임 제어부(133)는, 테이블 제어부(136)를 통해, 단계 S202에서 수신한 프레임의 GS(412)의 값과 FID(414)의 값의 쌍을 검색 키로 하여 루프 검출 테이블(105)을 검색한다.
검색 결과, 송신원(GSi)이 GS(412)의 값과 일치함과 아울러 FIDi가 FID(414)의 값과 일치하는 엔트리가 발견되면(1≤i≤m), 처리는 단계 S209로 이행된다. 다른 한편, 검색 결과, 전술한 바와 같은 엔트리가 발견되지 않으면, 처리는 단계 S210으로 이행된다.
또한, 전술한 바와 같은 엔트리는, 존재한다고 해도 1개뿐이다.
단계 S209가 실행되는 것은, 이전 노드 장치(100)가 송신한 브로드캐스트 프레임이 다시 노드 장치(100)에 있어서 수신된 것이 명백한 경우이다. 따라서, 단계 S209에서 수신 프레임 제어부(133)는, 단계 S202에서 수신한 프레임을 폐기한다. 그리고, 처리는 단계 S202로 복귀한다. 도 4의 예에서의, 노드 장치(100r)의 단계 S105의 동작과, 노드 장치(100s)의 단계 S108의 동작은, 단계 S209에 해당한다.
또한, 단계 S210에서 수신 프레임 제어부(133)는, 테이블 제어부(136)를 통해 브로드캐스트 관리 테이블(104)을 검색한다. 검색에 의해, 수신 프레임 제어부(133)는, 단계 S202에서 수신한 프레임이, 브로드캐스트 관리 테이블(104)에 있는 동일 MAC 어드레스로부터의 정해진 시간(예컨대 10 ms) 이내의 브로드캐스트에 의해 다시 수신된 것인지 여부를 판단한다.
구체적으로는, 수신 프레임 제어부(133)는, 테이블 제어부(136)를 통해, 단계 S202에서 수신한 프레임의 MAC-SA(422)의 값을 검색 키로 하여, 브로드캐스트 관리 테이블(104)을 검색한다. 검색 결과, 현재 시각과의 차이가 정해진 시간(본 실시형태에서는 10 ms) 이내의 시각이 검색 키에 대응지어져 있는 엔트리가 발견되면, 처리는 단계 S211로 이행된다. 다른 한편, 검색 결과, 상기와 같은 엔트리가 발견되지 않으면, 처리는 단계 S212로 이행된다.
단계 S211이 실행되는 것은, 최근(본 실시형태에서는 10 ms라는 기간 내), 노드 장치(100)가 수신한 브로드캐스트 프레임이, 다시 노드 장치(100)에서 수신된 경우이다. 따라서, 단계 S211에서 수신 프레임 제어부(133)는, 단계 S202에서 수신한 프레임을 폐기한다. 그리고, 처리는 단계 S202로 복귀한다. 도 4의 예에서의, 노드 장치(100s)의 단계 S104의 동작과, 노드 장치(100t)의 단계 S107의 동작은, 단계 S211에 해당한다.
단계 S210의 검색 결과, 브로드캐스트 관리 테이블(104)에 엔트리가 발견되지 않는 경우, 수신 프레임 제어부(133)는 「과거에 수신한 것과 동일한 브로드캐스트 프레임이 단계 S202에서 다시 수신된 것이 아님」이라고 판단한다. 따라서, 단계 S212에서는 상위 전송 처리가 수행된다.
즉, 단계 S212에서 수신 프레임 제어부(133)는, 프레임을 상위층 처리부(134)에 출력하고, 상위층 처리부(134)가 프레임을 처리한다. 도 5에 입각하여 설명하면, 단계 S212에서는 FPGA(113)로부터 MPU(114)로 MII(124)를 통해 프레임이 출력되고, MPU(114)에서 프레임이 처리된다.
다음으로, 단계 S213에서 수신 프레임 제어부(133)는, 유선 애드혹 네트워크 내에의 브로드캐스트를 수행하도록 포트 선택부(138)에 지시하고, 포트 선택부(138)로 프레임을 출력한다. 그러면, 포트 선택부(138)는 단계 S213에서, 포트(101-1~101-x) 중, 다음 2개의 조건을 모두 만족시키는 모든 포트를 송신처 포트로서 선택한다.
ㆍ수신 포트(즉, 단계 S202에서 브로드캐스트 프레임을 수신한 포트)가 아니다.
ㆍ도 7의 포즈 상태 테이블(151)의 포즈 상태가 「P」가 아니다(즉 포즈 상태가 「N」이다).
또한, 실시형태에 따라서, 포트 선택부(138)는, 「도 8의 포트 링크 상태 테이블(152)에서 링크 상태가 『C』이다」라는 조건으로 송신처 포트를 더 압축할 수도 있다.
포트 선택부(138)는, 포트(101-1~101-x) 중에서 선택한 포트(바꾸어 말하면, 송신 포트(143-1~143-x) 중에서 선택한 송신 포트)를 송신 프레임 제어부(140)에 지시하고, 프레임을 송신 프레임 제어부(140)로 출력한다. 또한, 선택된 포트의 수는, 0, 1 또는 복수 개이다.
송신 프레임 제어부(140)는, 수취한 프레임의 TTL(415)의 값을 1 감소시켜 FCS(417)를 재계산함으로써 새로운 애드혹 헤더(410)를 생성하고, 새로운 애드혹 헤더(410)를 포함하는 애드혹 프레임(400)을 버퍼부(142)로 출력한다. 그리고, 송신 프레임 제어부(140)는, 버퍼부(142)에 버퍼링된 애드혹 프레임(400)을, 송신 포트(143-1~143-x) 중에서 선택된 송신 포트로부터, 송신하기 위한 제어를 수행한다.
이상과 같이 하여 단계 S213에서, 송신 포트(143-1~143-x) 중에서 선택된 송신 포트로부터 프레임의 송신이 수행된다. 그러면, 처리는 단계 S214로 이행된다.
단계 S214에서 수신 프레임 제어부(133)는, 테이블 제어부(136)를 통해, 단계 S202에서 수신한 브로드캐스트 프레임에 대응하는 엔트리를 브로드캐스트 관리 테이블(104)에 등록한다. 즉, 단계 S214에서는, 단계 S202에서 수신한 브로드캐스트 프레임의 MAC-SA(422)의 값과, 타이머(139)로부터 얻어지는 현재 시각(즉 타임 스탬프)을 대응시킨 엔트리가, 브로드캐스트 관리 테이블(104)에 추가된다.
그리고, 단계 S215에서는, 포트 선택부(138)가, 단계 S213에서의 선택 결과에 따라, 테이블 제어부(136)를 통해 루프 검출 테이블(105)에 새로운 엔트리를 등록한다.
단계 S215에서 등록되는 새로운 엔트리는 다음과 같은 것이다. 예컨대, 단계 S202에 있어서 포트(101-r)(1≤r≤x)에서 애드혹 프레임(400)이 수신되었다고 하자. 이 경우, 수신된 애드혹 프레임(400)의 GS(412)의 값과 FID(414)의 값의 쌍에, 포트(101-r)의 포트 번호 및 포트(101-1~101x) 각각의 상태를 대응시키는 신규 엔트리가, 단계 S215에서 루프 검출 테이블(105)에 추가된다. 또한, 상기 신규 엔트리가 루프 검출 테이블(105)의 (m+1)번째의 엔트리라고 하면, 상기 신규 엔트리에서의 포트(101-i)(1≤i≤x)의 상태(LPi (m+1))는, 다음과 같이 설정된다.
ㆍ포트(101-i)가, 단계 S213에서 송신처 포트로서 선택된 경우에는, 상태(LPi (m+1))의 값은 「U」이다.
ㆍ그 이외의 경우에는, 상태(LPi (m+1))의 값은 「E」이다.
또한, 실시형태에 따라서는, 단계 S212 내지 S215의 처리 순서를 바꿀 수도 있고, 단계 S212 내지 S215가 병렬로 실행될 수도 있다.
여기서, 단계 S210과 S211의 처리의 의의를 보다 명백하게 하기 위해, 도 2a를 참조하여 또 다른 구체적인 예를 설명한다.
예컨대, 도 2a의 PC(206)는, L3 패킷(424)으로서 ARP(Address Resolution Protocol) 패킷을 포함하는 이더넷 프레임(420)을 브로드캐스트하는 경우가 있다. 이 때, 이더넷 프레임(420)의 MAC-DA(421)에는, 브로드캐스트 어드레스가 지정되어 있다.
브로드캐스트 프레임인 이더넷 프레임(420)은, 링크(229)를 통해 송신원의 PC(206)와 접속된 노드 장치(100h)에 있어서 애드혹 헤더(410)가 부여되고, 애드혹 프레임(400)이 된다. 여기서, 애드혹 헤더(410)의 GS(412)에는, 노드 장치(100h)의 노드 ID가 지정되어 있고, FID(414)에는, 노드 장치(100h)가 생성한 제1 FID가 지정되어 있다.
그리고, 브로드캐스트 프레임인 애드혹 프레임(400)이, 노드 장치(100h)로부터 유선 애드혹 네트워크(200)로 브로드캐스트된다. 구체적으로는, 노드 장치(100h)는, 포트(101h-1, 101h-3 및 101h-4) 각각으로부터, 애드혹 프레임(400)을 송신한다(즉, 브로드캐스트한다).
그 후, 애드혹 프레임(400)은, 예컨대, 링크(223)와 링크(217)를 통해 노드 장치(100b)에 도달하고, 또한 노드 장치(100b)로부터 링크(216)를 통해 노드 장치(100a)에 도달할 지도 모른다.
그 경우, 노드 장치(100b)는, 단계 S212를 실행한다. 그 결과로서, 노드 장치(100b)는, 수신한 애드혹 프레임(400)으로부터 애드혹 헤더(410)를 제외한 이더넷 프레임(420)을, 범용 LAN 포트(106b)에 접속된 L2SW(202)로 송신한다.
그러면, 노드 장치(100b)로부터 브로드캐스트 프레임인 이더넷 프레임(420)을 수신한 L2SW(202)는, 수신한 이더넷 프레임(420)을 브로드캐스트한다. 즉, L2SW(202)는, 이더넷 프레임(420)을, 링크(211)를 통해 PC(201)로 송신함과 아울러, 링크(212)를 통해 노드 장치(100a)로도 송신한다.
그런데, 전술한 바와 같이, 노드 장치(100a)는, 유선 애드혹 네트워크(200) 내의 브로드캐스트의 결과로서, 애드혹 프레임(400)을 링크(216)를 통해 포트(101a-4)에서 수신하고 있다. 또한, 노드 장치(100a)에 있어서 애드혹 프레임(400)은, 링크(215)를 통해 노드 장치(100d)로부터 더 수신될 가능성도 있다.
노드 장치(100a)가, 유선 애드혹 네트워크(200) 내의 노드 장치(100b와 100d)의 양쪽 모두로부터 중복하여 브로드캐스트 프레임인 애드혹 프레임(400)을 수신한 경우에는, 나중에 수신된 쪽의 프레임이 단계 S209에서 파기된다. 단계 S209의 파기는, 루프 검출 테이블(105)에 의해 가능해지며, 단계 S209에 의해 유선 애드혹 네트워크(200) 내에서의 브로드캐스트 프레임의 폭주는 방지된다.
그런데, 만일 브로드캐스트 관리 테이블(104)이 존재하지 않으면, 일단 유선 애드혹 네트워크(200)의 외부의 L2SW(202)를 경유한 브로드캐스트 프레임이 다시 유선 애드혹 네트워크(200) 내로 되돌아와서 폭주할 가능성이 있다. 따라서, 본 실시형태에서는, 노드 장치(100)가 브로드캐스트 관리 테이블(104)을 구비하고 있다.
만일 브로드캐스트 관리 테이블(104)이 존재하지 않으면, 유선 애드혹 네트워크(200) 내의 브로드캐스트에 의해 노드 장치(100b 또는 100d)로부터 애드혹 프레임(400)을 수신한 노드 장치(100a)는, 애드혹 헤더(410)를 제외하고 이더넷 프레임(420)을 L2SW(202)로 송신한다. 그러면, L2SW(202)는, 브로드캐스트 프레임인 이더넷 프레임(420)을, PC(201)와 노드 장치(100b)의 양쪽 모두에 송신한다.
여기서, 노드 장치(100b)에 있어서 L2SW(202)로부터 수신되는 이더넷 프레임(420)은 애드혹 헤더(410)를 갖지 않는다. 따라서, 노드 장치(100b)는, 노드 장치(100b) 자신이 과거에 L2SW(202)로 송신한 브로드캐스트 프레임과 동일한 이더넷 프레임(420)이 다시 수신되었다는 것을, 루프 검출 테이블(105)을 사용하여 인식할 수는 없다.
다른 한편으로, 만일 노드 장치(100b)가 L2SW(202)로부터 수신한 브로드캐스트 프레임을 유선 애드혹 네트워크(200) 내에 브로드캐스트하면, 동일한 이더넷 프레임(420)이 다시 브로드캐스트되어 버린다. 게다가, L2SW(202)와 노드 장치(100b)와 노드 장치(100a) 사이에서, 동일한 브로드캐스트 프레임이 계속 루프될 가능성도 있다. 왜냐하면, 일단 유선 애드혹 네트워크(200)의 외부에 나오고 나서 유선 애드혹 네트워크(200) 내로 되돌아온 브로드캐스트 프레임에는, 유선 애드혹 네트워크(200) 내로 되돌아올 때마다 새로운 FID가 할당되기 때문이다.
따라서, 폭주를 방지하기 위해서, 노드 장치(100b)는, 루프 검출 테이블(105) 이외의 정보를 이용하여, 애드혹 헤더(410)를 갖지 않는 이더넷 프레임(420)끼리의 동일성을 판정해야 한다.
본 실시형태에서는, 브로드캐스트 관리 테이블(104)을 사용함으로써 노드 장치(100)는, 애드혹 헤더(410)를 갖지 않는 이더넷 프레임(420)끼리의 동일성을, MAC-SA(422)의 값과 시각의 조합에 의해 판단할 수 있다. 즉, 브로드캐스트 관리 테이블(104)은, 일단 유선 애드혹 네트워크(200)의 외부를 경유한 브로드캐스트 프레임이 다시 유선 애드혹 네트워크(200) 내로 되돌아온 경우에도 폭주를 방지하는 것을 가능하게 하는 메커니즘의 일례이다.
또한, 전술한 내용에 예시한 「10 ms」라는 값은, 실시형태에 따라 적당히 변경될 수 있다. 예컨대 예비 실험을 수행함으로써 적당한 값을 결정할 수도 있다. 적당한 값은, 브로드캐스트 프레임이 송신되는 빈도나, 프레임이 유선 애드혹 네트워크(200)의 외부의 기기(L2SW(202) 등)를 경유하여 다시 유선 애드혹 네트워크(200) 내로 되돌아갈 때까지 소요되는 시간 등에 따라 다르다.
여기서 도 11a의 설명으로 돌아가, 브로드캐스트 프레임 이외의 프레임이 단계 S202에서 수신된 경우에 수행되는 단계 S216의 처리에 대해 설명한다.
단계 S216에서 수신 프레임 제어부(133)는, 단계 S202에서 수신한 프레임이, 노드 장치(100) 자신이 수신처인지 여부를 판단한다. 즉, 수신 프레임 제어부(133)는, 플래시 메모리(119)로부터 단계 S201에서 미리 판독된 노드 장치(100) 자신의 노드 ID와, 단계 S202에서 수신한 애드혹 프레임(400)의 GD(411)의 값이 일치하는지 여부를 판단한다.
노드 장치(100) 자신의 노드 ID와 GD(411)의 값이 일치하면, 단계 S202에서 수신한 프레임은 노드 장치(100) 자신이 수신처이므로 처리는 단계 S217로 이행된다. 반대로, 노드 장치(100) 자신의 노드 ID와 GD(411)의 값이 일치하지 않으면, 단계 S202에서 수신한 프레임은 노드 장치(100) 자신이 수신처가 아니므로, 프레임을 다른 노드 장치에 중계하기 위해 처리는 도 11c의 단계 S218로 이행된다.
단계 S217에서는 상위 전송 처리가 수행된다. 즉, 단계 S217에서 수신 프레임 제어부(133)는, 프레임을 상위층 처리부(134)로 출력하고, 상위층 처리부(134)가 프레임을 처리한다. 도 5에 입각하여 설명하면, 단계 S217에서는 FPGA(113)로부터 MPU(114)로 프레임이 출력되고, MPU(114)에서 프레임이 처리된다. 단계 S217에서 상위층 처리부(134)는, 수취한 프레임의 페이로드에 L3 패킷(424)으로서 포함되는 데이터를 처리하거나, 수취한 프레임에 의거한 적당한 컨트롤을 실행한다. 그리고 처리는 단계 S202로 복귀한다.
그런데, 「단계 S202에서 수신한 프레임은 노드 장치(100) 자신이 수신처가 아님」이라고 단계 S216에서 판단된 경우, 처리는 도 11c의 단계 S218로 이행된다.
단계 S218에서 수신 프레임 제어부(133)는, 단계 S202에서 수신한 프레임에 해당하는 엔트리가 루프 검출 테이블(105)에 있는지 여부를 판단한다. 즉, 수신 프레임 제어부(133)는, 테이블 제어부(136)를 통해, 단계 S202에서 수신한 프레임의 GS(412)의 값과 FID(414)의 값의 쌍을 검색 키로 하여 루프 검출 테이블(105)을 검색한다.
검색 결과, 송신원(GSi)이 GS(412)의 값과 일치함과 아울러 FIDi가 FID(414)의 값과 일치하는 엔트리가 발견되면(1≤i≤m), 처리는 도 11d의 단계 S219로 이행된다. 다른 한편, 검색 결과, 상기와 같은 엔트리가 발견되지 않으면, 처리는 도 11c의 단계 S230으로 이행된다.
또한, 상기와 같은 엔트리는, 존재한다고 해도 1개뿐이다.
도 11d에 도시한 단계 S219 내지 S229는, 과거에 노드 장치(100) 자신이 송신한 유니캐스트 프레임이 유선 애드혹 네트워크 내를 루프하여 노드 장치(100)로 되돌아오고, 단계 S202에서 포트(101-r)에 있어서 수신된 경우의 처리이다. 예컨대, 도 2b에 있어서, 탐색 경로(302)에서의 백 트랙(303) 이후의, 노드 장치(100a)로부터 프레임을 수신한 노드 장치(100b)에서의 처리가, 도 11d에 대응한다.
단계 S219에서는, 포트 선택부(138)가, 단계 S202에서 프레임을 수신한 포트를 수신 포트로서 인식한다.
예컨대, 단계 S218에서 엔트리가 발견되면, 수신 프레임 제어부(133)는, 테이블 제어부(136)로부터 통지된 SRAM(116)의 어드레스를, 발견된 엔트리의 어드레스로서, 포트 선택부(138)에 통지할 수도 있다. 그리고, 수신 프레임 제어부(133)는, 포트 선택부(138)에, 루프 검출시의 포트 선택을 수행하도록 지시할 수도 있다. 그 결과로서 포트 선택부(138)가, 단계 S219 이하의 처리를 실행할 수도 있다.
예컨대, 단계 S202에서 프레임이 포트(101-r)(1≤r≤x)에 있어서 수신되고, 단계 S218에서는 루프 검출 테이블(105)의 i번째의 엔트리가 검색 결과로서 히트되고, 루프 검출 테이블(105)은 도 1에 도시한 형식이라고 하자. 이 경우, 단계 S219에서 포트 선택부(138)는, i번째의 엔트리에서의 포트번호(RCVPNi)를, 포트(101-r)의 번호로 갱신한다.
이어서, 단계 S220에서는, 포트 선택부(138)가, 단계 S218에서 검출된 루프 검출 테이블(105)의 엔트리에 있어서 「U」 상태의 포트 상태를 「L」 상태로 변경한다.
예컨대, 검색 결과, 단계 S218에서는 루프 검출 테이블(105)의 i번째의 엔트리가 히트되었다고 하자. 여기서, 단계 S220은, 유니캐스트된 프레임에 관해 실행되는 단계이므로, i번째의 엔트리에서의 포트 상태(LP1i~LPxi) 중, 값이 「U」인 것은, 하나밖에 없다. 이하, 설명의 편의상, 포트(101-t)(1≤t≤x)의 포트 상태(LPti)의 값이 「U」라고 하자.
즉, GS(412)에 송신원(GSi)이 설정되고, FID(414)에 FIDi와 동일한 값이 설정된 애드혹 프레임(400)을, 포트(101-t)로부터 노드 장치(100)가 이전에 송신한 적이 있었던 경우, 단계 S220에 있어서 포트 상태(LPti)의 값은 「U」이다. 그리고, 이 경우, 단계 S220에 있어서, 포트 상태(LPti)의 값은 「U」에서 「L」로 갱신된다.
나아가, 단계 S221에서 포트 선택부(138)는, 테이블 제어부(136)를 통해, 단계 S202에서 수신한 프레임의 GD(411)의 값에 대응하는 라우팅 테이블(103)의 엔트리를 검색한다. 또한, 본 실시형태에서는, 라우팅 테이블(103)의 에이징 기간(즉 각 엔트리의 유효 기간) 쪽이, 루프 검출 테이블(105)의 에이징 기간보다 길다. 따라서, 단계 S221에서는 검색 결과, 반드시 하나의 엔트리가 히트된다고 보증된다. 따라서, 단계 S221에 의해 포트 선택부(138)는, 히트된 엔트리에 대응하는 SRAM(116)의 어드레스를 테이블 제어부(136)로부터 얻을 수 있고, 이후, 히트된 엔트리에 직접 액세스할 수 있다.
라우팅 테이블(103)의 에이징 기간은, 예컨대 225초라는 비교적 긴 시간이면 된다. 그에 반해, 루프 검출 테이블(105)의 에이징 기간은, 예컨대 1초 미만의 비교적 짧은 시간으로 하는 것이 바람직하다. 그 이유는, 라우팅 테이블(103)의 하나의 엔트리는 유선 애드혹 네트워크 내의 하나의 노드 장치에 대응하는 데 반해, 루프 검출 테이블(105)의 하나의 엔트리는 하나의 애드혹 프레임(400)에 대응하기 때문이다.
즉, 루프 검출 테이블(105)에는, 라우팅 테이블(103)보다 훨씬 빈번하게 엔트리가 추가된다고 예측된다. 따라서, 루프 검출 테이블(105)의 엔트리 수의 과도한 증가로 인한 오버플로를 방지하기 위해, 루프 검출 테이블(105)의 에이징 기간은 비교적 짧은 시간으로 설정된다.
또한, 루프 검출 테이블(105)의 에이징 기간의 길이로서 적절한 값은, 예컨대 예비 실험을 수행하거나 하여, 유선 애드혹 네트워크 내에서의 루프에 소요되는 시간을 고려하여 정하는 것이 바람직하다.
이하에서는 설명의 편의상, 단계 S221에서 라우팅 테이블(103)의 j번째의 엔트리가 히트되었다고 가정한다. 즉, 단계 S202에서 수신한 애드혹 프레임(400)의 GD(411)의 값이, 라우팅 테이블(103)에서의 수신처(GDj)의 값과 일치했다고 하자.
그러면, 단계 S222에서 포트 선택부(138)는, 현재의 포트 링크 상태와 포즈 상태를, 라우팅 테이블(103)의, 단계 S221에서 검출한 엔트리에 반영한다. 즉, 단계 S222에서는, 각 포트(101-k)(1≤k≤x)에 대해, 이하의 조작이 수행된다.
ㆍ포트(101-k)에 대응하는 도 7의 포즈 상태 테이블(151)의 포즈 상태(PSk)의 값이 「P」인 경우, 라우팅 테이블(103)에서 히트된 j번째의 엔트리에 있어서, 포트(101-k)의 상태(RPkj)의 값이 「P」로 갱신된다. 또는, 라우팅 테이블(103)의 j번째의 엔트리에서 포트(101-k)의 상태(RPkj)의 현재의 값이 「P」이고, 또한 포즈 상태 테이블(151)의 포즈 상태(PSk)의 값이 「N」인 경우에는, 상태(RPkj)의 값이 「E」로 갱신된다.
ㆍ포트(101-k)에 대응하는 도 8의 포트 링크 상태 테이블(152)의 링크 상태(Lk)의 값이 「D」인 경우, 라우팅 테이블(103)에서 히트된 j번째의 엔트리에 있어서, 포트(101-k)의 상태(RPkj)의 값이 「D」로 갱신된다. 또는, 라우팅 테이블(103)의 j번째의 엔트리에서 포트(101-k)의 상태(RPkj)의 현재의 값이 「D」이고, 또한 포트 링크 상태 테이블(152)의 링크 상태(Lk)의 값이 「C」인 경우에는, 상태(RPkj)의 값이 「E」로 갱신된다.
또한, 본 실시형태에서는, 포즈 상태 테이블(151)의 내용을 반영하는 조작 후에 포트 링크 상태 테이블(152)의 내용을 반영하는 조작이 수행된다. 따라서, 포즈 상태(PSk)보다 링크 상태(Lk) 쪽이 우선적으로 라우팅 테이블(103)에 반영된다. 또한, 상기 설명으로부터 이해되는 바와 같이, 포즈 상태 테이블(151)과 포트 링크 상태 테이블(152)은 라우팅 테이블(103)에 대한 일종의 마스크 데이터로서 이용되고 있다.
또한, 단계 S223에서 포트 선택부(138)는, 라우팅 테이블(103)의, 단계 S221에서 검출한 엔트리에 있어서, 주목하고 있는 포트(101-t)를 「L」 상태로 설정한다. 즉, 단계 S220에서 루프 검출 테이블(105)에 있어서 「U」 상태에서 「L」 상태로 변경된 포트(101-t)에 관해, 단계 S223에서는, 라우팅 테이블(103)에 있어서도 상태가 「L」로 설정된다. 구체적으로는, 라우팅 테이블(103)의 j번째의 엔트리에 있어서, 포트(101-t)의 상태(RPtj)의 값이 「L」로 갱신된다.
이상의 단계 S220 내지 S223에 의해, 유선 애드혹 네트워크 내를 루프하여 되돌아 온 프레임을 노드 장치(100)가 수신한 경우, 되돌아 온 프레임과 수신처가 동일한 프레임은, 이후, 현재까지의 송신처 포트로부터는 송신되지 않게 된다. 즉, 노드 장치(100)는 루프가 발생하는 포트를 학습하고, 이후, 루프가 발생하는 포트로의 송신을 대기하게 된다. 그 결과, 유선 애드혹 네트워크 전체적으로, 불필요한 트래픽이 줄어든다.
이어서, 단계 S224에 있어서 포트 선택부(138)는, 라우팅 테이블(103)의 j번째의 엔트리 내를 검색하여, 「E」 상태의 포트를 탐색한다. 즉, 포트 선택부(138)는, 수신처(GDj)가 지정된 애드혹 프레임(400)을 중계할 때의 송신처 포트로서 아직 시도된 적이 없는 포트이면서, 또한 현재 사용 가능한 (즉, 「P」 상태도 「D」 상태도 아닌) 포트를 탐색한다.
그리고, 단계 S225에서 포트 선택부(138)는, 단계 S224의 검색 결과, 「E」 상태의 포트가 발견되었는지 여부를 판단하고, 발견되지 않은 경우에는 처리가 단계 S226으로 이행되고, 발견된 경우에는 처리가 단계 S227로 이행된다.
단계 S226에서 포트 선택부(138)는, 단계 S219로 수신 포트로서 인식한 포트(101-r)를, 송신처 포트로서 선택한다. 그리고 처리는 단계 S229로 이행된다.
단계 S226이 실행되는 것은, 단계 S202에 있어서 포트(101-r)에서 수신한 프레임을 중계하려고 해도, 중계를 위해 송신하는 것이 가능한 포트가 발견되지 않는 경우이다. 여기서 「송신하는 것이 가능한 포트」란, 구체적으로는, 루프 상태도 링크 다운 상태도 아니고, 인접 노드 장치로부터 포즈 요구를 받지도 않은 포트를 말한다.
즉, 노드 장치(100)는 단계 S202에서 수신한 프레임을, 수신 포트와 접속된 인접 노드 장치 이외의 다른 인접 노드 장치로 전송할 수 없을 때, 단계 S226이 실행된다. 따라서, 노드 장치(100)는, 수신한 프레임을 반송하기 위해, 단계 S202에서 프레임을 수신한 포트(101-r)를 송신처 포트로 한다.
반송에 의해, 노드 장치(100)는, 포트(101-r)와 접속된 인접 노드 장치에 대해, 「노드 장치(100)에서 중계 경로가 막다른 골목으로 되어 있다」라는 것을 알릴 수 있다. 그 결과, 반송된 프레임을 수신한 인접 노드 장치는, 루프 검출 테이블(105)에 의해, 「수신처(GDj)가 수신처인 프레임을 노드 장치(100)와 접속된 포트로 송신하여도 루프되어 버린다」라고 인식할 수 있다.
예컨대, 도 2b의 예에서, 백 트랙(303)에 의해 노드 장치(100a)로부터 반송된 프레임을 수신함으로써 루프를 검출한 노드 장치(100b)에 있어서, 노드 장치(100e)와의 사이의 링크(217)가 링크 다운 상태였다고 하자. 그러면, 탐색 경로(302)와는 달리, 또한 노드 장치(100b)에서도 백 트랙이 발생한다. 즉, 노드 장치(100b)는, 단계 S226에서, 노드 장치(100c)와 접속된 포트(101b-4)를 송신처 포트로서 선택한다.
그 결과, 노드 장치(100c)는, 노드 장치(100b)로부터 반송된 프레임을 수신한다. 따라서, 노드 장치(100c)는, 「노드 장치(100g)의 노드 ID가 GD(411)에 설정된 애드혹 프레임(400)의 송신처 포트로서, 노드 장치(100b)와 접속된 포트(101c-1)는, 부적절하다」고 인식한다. 즉, 노드 장치(100c)의 라우팅 테이블(103)에 있어서, 노드 장치(100g)의 노드 ID에 대응지어진 포트(101c-1)의 상태는, 「L」로 설정된다.
그리고, 노드 장치(100c)는, 포트(101c-1)와 다른 포트(101c-3)를 단계 S225에서 선택한다. 이와 같이, 탐색 트리(300)에 있어서 백 트랙이 복수 회 반복됨으로써 새로운 중계 경로가 발견되는 경우도 있다(또한, 도 2b의 탐색 경로(302)에서서는 한 번 백 트랙한 것만으로 새로운 중계 경로가 발견되었다).
여기서, 단계 S225로 돌아가 설명을 계속하기로 한다.
단계 S224에서 「E」 상태의 포트가 발견된 경우, 단계 S225에 계속되는 단계 S227에서는, 포트 선택부(138)가, 단계 S224에서 발견된 「E」 상태의 포트 중 임의의 하나(예컨대, 최초로 발견된 포트)를 송신처 포트로서 선택한다. 그리고, 포트 선택부(138)는, 라우팅 테이블(103)의 j번째의 엔트리에 있어서, 송신처 포트로서 선택한 상기 포트의 상태를 「U」로 설정한다.
예컨대, 단계 S227에서 포트(101-g)(1≤g≤x)가 선택되었다고 하면, 단계 S221에서 히트한 라우팅 테이블(103)의 j번째의 엔트리에 있어서, 포트(101-g)의 상태(RPgj)의 값이, 「U」로 설정된다.
그리고, 단계 S228에서는, 포트 선택부(138)가 또한, 루프 검출 테이블(105)에서도 상기 포트를 「U」 상태로 설정한다. 즉, 단계 S218에서 발견된 루프 검출 테이블(105)의 i번째의 엔트리에 있어서, 송신처 포트로서 단계 S227에서 선택된 포트(101-g)의 상태(LPgi)의 값이, 「U」로 설정된다. 그리고 처리는 단계 S229로 이행된다.
단계 S229에서는, 단계 S226 또는 S227에서 송신처 포트로서 선택된 포트로 프레임이 송신된다.
즉, 단계 S229에 있어서, 포트 선택부(138)는 송신처 포트로서 선택한 포트를 송신 프레임 제어부(140)에 지시하고, 프레임을 송신 프레임 제어부(140)로 출력한다. 그리고, 송신 프레임 제어부(140)는, 수취한 프레임의 TTL(415)을 1 감소시켜 FCS(417)를 재계산함으로써 새로운 애드혹 헤더(410)를 생성하고, 새로운 애드혹 헤더(410)를 포함하는 애드혹 프레임(400)을 버퍼부(142)에 출력한다. 또한, 송신 프레임 제어부(140)는, 버퍼부(142)에 버퍼링된 애드혹 프레임(400)을, 포트 선택부(138)에 의해 선택된 송신 포트(143-g)(바꾸어 말하면 포트(101-g))로부터 송신하기 위한 제어를 수행한다.
이와 같이 해서 단계 S229에서 포트(101-g)로부터의 프레임의 송신이 수행되며, 그 후, 처리는 단계 S202로 되돌아간다.
이상과 같이, 루프가 발생했을 때에는, 단계 S227 내지 S229에 의해 다른 새로운 중계 경로가 시도되거나, 또는 단계 S226과 S229에 의해 백 트랙이 발생한다. 또한, 단계 S227 내지 S229에 의한 새로운 중계 경로로의 전환은, 노드 장치(100) 내의 FPGA(113)에 의해 수 μs로 수행된다.
또한, 백 트랙이 발생했다고 해도, 예컨대 도 2b의 탐색 경로(302)와 같이, 백 트랙에 의해 탐색 트리(300)를 거슬러 올라가는 횟수가 적으면, 유선 애드혹 네트워크 전체적으로 보아도, 매우 짧은 시간에 중계 경로의 전환이 완료된다. 이와 같이, 본 실시형태에 따르면, 장애 발생 또는 그 밖의 이유로 루프가 발생한 경우에, 매우 고속으로 프레임의 중계 경로의 전환이 구현된다.
여기서 도 11c의 설명으로 돌아가, 단계 S218의 검색에서 엔트리가 발견되지 않은 경우의 단계 S230 내지 S239의 처리에 대해 설명한다.
단계 S230에서 포트 선택부(138)는, 테이블 제어부(136)를 통해, 단계 S202에서 수신한 프레임의 GD(411)의 값으로 라우팅 테이블(103)를 검색한다.
그리고, 단계 S230의 검색 결과, GD(411)의 값을 각 포트의 상태와 대응시킨 엔트리가 라우팅 테이블(103) 내에 발견되었는지 여부를, 단계 S231에서 포트 선택부(138)가 판단한다. 상기 엔트리가 발견되지 않은 경우, 처리는 단계 S232로 이행되고, 상기 엔트리가 발견된 경우, 처리는 단계 S233으로 이행된다. 또한, 상기 엔트리는, 발견된다고 해도 하나밖에 존재하지 않는다.
단계 S232에서 포트 선택부(138)는, 테이블 제어부(136)를 통해 라우팅 테이블(103)에 신규 엔트리를 등록한다. 상기 신규 엔트리에 있어서, 수신처의 값은, 단계 S202에서 수신한 프레임의 GD(411)의 값으로 설정되고, 각 포트(101-1~101-x)의 상태는 모두 「E」 상태로 설정된다. 그리고 처리는 단계 S233으로 이행된다.
도 11c에 관한 이하의 설명에서는, 단계 S230의 검색 결과 발견된 하나의 엔트리 또는 단계 S232에서 신규로 등록된 엔트리를 「주목(注目) 엔트리」라고 하고, 주목 엔트리는 라우팅 테이블(103)의 f번째의 엔트리라고 한다.
또한, 도 1의 예에 입각하여 설명하면, 단계 S230에서 주목 엔트리가 발견된 경우에는 1≤f≤n이고, 단계 S232에서 주목 엔트리가 등록된 경우에는 f=n+1이다. 또한, 단계 S230 또는 S232의 결과로서, 포트 선택부(138)는, 주목 엔트리의 SRAM(116) 상의 어드레스를 테이블 제어부(136)로부터 얻고 있으므로, 이후, 주목 엔트리에 직접 액세스할 수 있다.
단계 S233에서 포트 선택부(138)는, 현재의 포트 링크 상태와 포즈 상태를 라우팅 테이블(103)의 주목 엔트리에 반영한다. 즉, 단계 S233에서는, 각 포트(101-k)(1≤k≤x)에 대해, 단계 S222와 유사한 이하의 조작이 수행된다.
ㆍ포트(101-k)에 대응하는 도 7의 포즈 상태 테이블(151)의 포즈 상태(PSk)의 값이 「P」인 경우, 라우팅 테이블(103)의 f번째의 엔트리에 있어서, 포트(101-k)의 상태(RPkf)의 값이 「P」로 갱신된다. 또는, 라우팅 테이블(103)의 f번째의 엔트리에서 포트(101-k)의 상태(RPkf)의 현재의 값이 「P」이고, 또한 포즈 상태 테이블(151)의 포즈 상태(PSk)의 값이 「N」인 경우에는, 상태(RPkf)의 값이 「E」로 갱신된다.
ㆍ포트(101-k)에 대응하는 도 8의 포트 링크 상태 테이블(152)의 링크 상태(Lk)의 값이 「D」인 경우, 라우팅 테이블(103)의 f번째의 엔트리에 있어서, 포트(101-k)의 상태(RPkf)의 값이 「D」로 갱신된다. 또는, 라우팅 테이블(103)의 f번째의 엔트리에서 포트(101-k)의 상태(RPkf)의 현재의 값이 「D」이고, 또한 포트 링크 상태 테이블(152)의 링크 상태(Lk)의 값이 「C」인 경우에는, 상태(RPkf)의 값이 「E」로 갱신된다.
또한 단계 S234에서 포트 선택부(138)는, 라우팅 테이블(103)의 주목 엔트리를 참조한다. 그리고 포트 선택부(138)는, 단계 S202에서 프레임을 수신한 포트(101-r)(1≤r≤x) 이외이고, 또한 상태가 「L」, 「P」, 「D」 상태 이외인 포트 중 하나를, 송신처 포트로서 선택한다. 또한, 상태가 「L」, 「P」, 「D」 상태 이외란, 바꾸어 말하면 「E」 상태 또는 「U」 상태라는 것이다.
본 실시형태에서는, 포트 선택부(138)는, 단계 S234에 있어서 「U」 상태의 포트를 「E」 상태의 포트보다 우선적으로 선택한다. 왜냐하면, 「U」 상태의 포트는, 과거에 송신처 포트로서 사용한 실적이 있어, 루프가 발생하지 않는 것이 단계 S218에서 확인되었으므로, 신뢰성이 확립되었기 때문이다.
또한, 단계 S234가 실행되는 것은, 단계 S202에서 수신한 프레임이 유니캐스트 프레임인 경우이다. 따라서, 「U」 상태의 포트는, 주목 엔트리 중에 존재한다고 해도, 1개밖에 존재하지 않는다.
또한, 포트 선택부(138)가 단계 S234에서 「E」 상태의 포트를 선택하는 경우로서, 주목 엔트리 중에 「E」 상태의 포트가 복수 개 있는 경우에는, 포트 선택부(138)는, 예컨대, 최초에 발견한 「E」 상태의 포트를 선택할 수도 있다.
단, 「포트(101-r) 이외이고, 게다가 주목 엔트리에 있어서 상태가 『E』 또는 『U』로 설정되어 있다」라는 조건을 만족하는 포트가, 존재하지 않을 가능성도 있다.
따라서, 단계 S235에서 포트 선택부(138)는, 단계 S234에서 선택된 송신처 포트가 있는지 여부를 판단한다. 단계 S234에서 선택된 송신처 포트가 있는 경우에는, 처리는 단계 S236으로 이행되고, 단계 S234에서 송신처 포트가 발견되지 않은 경우에는, 처리는 단계 S238로 이행된다.
단계 S236에서 포트 선택부(138)는, 라우팅 테이블(103)의 주목 엔트리에서의 송신처 포트의 상태를 「U」 상태로 갱신한다. 예컨대, 단계 S234에서 포트(101-e)(1≤e≤x)가 송신처 포트로서 선택된 경우, 단계 S236에서는, 상태(RPef)의 값이 「U」로 설정된다.
그리고, 단계 S237에서 포트 선택부(138)는, 테이블 제어부(136)를 통해, 루프 검출 테이블(105)에 신규 엔트리를 추가 등록한다. 상기 신규 엔트리가 예컨대 (m+1)번째의 엔트리라고 하면, 상기 신규 엔트리의 각 필드의 내용은 다음과 같다.
ㆍ송신원(GSm +1)은, 단계 S202에서 수신한 프레임의 GS(412)의 값으로 설정된다.
ㆍFIDm +1은, 단계 S202에서 수신한 프레임의 FID(414)의 값으로 설정된다.
ㆍ수신 포트 번호(RCVPNm +1)는, 단계 S202에서 프레임을 수신한 포트(101-r)의 번호(즉 r)로 설정된다.
ㆍ포트(101-e)에 대응하는 상태(LPe (m+1))는 「U」로 설정되고, 그 이외의 포트에 대응하는 상태는 모두 「E」로 설정된다.
단계 S237에서 상기와 같은 신규 엔트리가 루프 검출 테이블(105)에 추가되면, 처리는 단계 S239로 이행된다.
다른 한편으로, 단계 S234에서 송신처 포트를 얻지 못한 경우, 단계 S238에서 포트 선택부(138)는, 단계 S202에서 프레임을 수신한 포트(101-r)를 송신처 포트로서 선택한다. 즉, 단계 S238는 도 11d의 단계 S226과 동일한 단계이다. 「단계 S202에 있어서 포트(101-r)에서 수신한 프레임을 중계하려고 해도, 중계를 위해 송신하는 것이 가능한 포트가 발견되지 않는다」라고 통지하기 때문에, 단계 S238에서는 포트(101-r)가 프레임을 반송하기 위한 포트로서 선택된다. 그리고 처리는 단계 S239로 이행된다.
단계 S239에서는, 단계 S234 또는 S238에서 송신처 포트로서 선택된 포트로 프레임이 송신된다. 단계 S239의 처리는 도 11d의 단계 S229와 동일하므로 상세한 설명은 생략한다. 프레임의 송신 후, 처리는 단계 S202로 되돌아간다.
또한, 도 11a 내지 도 11d에서는 설명이 간단화를 위해 도시를 생략했지만, 노드 장치(100)는, 라우팅 처리에 있어서 TTL(415)의 값에 의거하여 프레임을 파기하는 경우도 있다. 즉, 단계 S202에서 수신된 프레임의 TTL(415)의 값이 1일 때, 예컨대 다음과 같이 처리가 수행된다.
ㆍ도 11b의 단계 S213에서는, 송신 프레임 제어부(140)가 프레임을 파기하고, 단계 S214와 S215가 생략되어, 처리는 단계 S202로 되돌아간다.
ㆍ도 11d의 단계 S225 내지 S229가 생략된다.
ㆍ도 11c의 단계 S230 내지 S239가 생략된다.
또한, 도 11a 내지 도 11d에는, 도 5의 유선 애드혹 네트워크 포트(101-1~101-x) 중 어느 하나에서 수신되는 프레임에 관한 처리를 도시했으나, 노드 장치(100)는, 범용 LAN 포트(106)에서 수신되는 프레임에 관한 처리도 수행한다. 또한, 노드 장치(100)는, 노드 장치(100) 자신의 MPU(114)가 생성하는 프레임에 관한 처리도 수행한다.
즉, 이더넷 프레임(420)이 범용 LAN 포트(106)에서 수신된 경우에는, MAC-DA(421)에 따라 MPU(114) 또는 FPGA(113)로 이더넷 프레임(420)이 출력된다. 그리고, 노드 장치(100) 자신을 수신처로 하는 이더넷 프레임(420)은 MPU(114)에서 처리된다.
반대로, 다른 노드 장치를 수신처로 하는 이더넷 프레임(420)은, FPGA(113)에 있어서 애드혹 헤더(410)가 부여되고, 유선 애드혹 네트워크 포트(101-1~101-x) 중 어느 하나로부터 송신된다. 그 때, 도 11c의 단계 S237과 마찬가지로 루프 검출 테이블(105)에의 엔트리의 추가도 수행된다. 또한, 범용 LAN 포트(106)에서 브로드캐스트 프레임을 수신한 경우에는, FPGA(113)는, 외부 기기로부터의 브로드캐스트를 나타내는 특정한 값을 애드혹 헤더(410)의 타입(413)에 설정할 수도 있다.
또한, MPU(114)가 이더넷 프레임(420)을 생성한 경우에는, 이더넷 프레임(420)에 대해서는, MAC-DA(421)에 따라, 이하 중 어느 하나의 처리가 수행된다.
ㆍ내부 접속 포트(114b), PHY 칩(120), L2SW부(112)를 통해, 범용 LAN 포트(106)로부터 이더넷 프레임(420)이 송신된다.
ㆍ이더넷 프레임(420)이 FPGA(113)로 출력되고, 애드혹 헤더(410)가 부여되어, 유선 애드혹 네트워크 포트(101-1~101-x) 중 어느 하나로부터 송신된다. 그 때, 도 11c의 단계 S237과 동일하게 루프 검출 테이블(105)에의 엔트리의 추가도 수행된다. 또한, MPU(114)가 브로드캐스트 프레임을 생성한 경우에는, FPGA(113)는, MPU(114)로부터의 브로드캐스트를 나타내는 특정한 값을 애드혹 헤더(410)의 타입(413)에 설정할 수도 있다.
계속해서, 도 11a 내지 도 11d의 처리와 독립적으로 수행되는 각종 처리에 대해, 도 12 내지 도 20을 참조하여 설명한다.
도 12는 라우팅 테이블의 에이징을 설명하는 흐름도이다. 도 12의 처리는, 라우팅 테이블(103)의 각 엔트리에 대해, 예컨대 미리 결정된 간격으로 정기적으로 실행된다. 이하, 도 12의 설명에 있어서는, 라우팅 테이블(103) 내의 어느 한 엔트리를 편의적으로 「주목 엔트리」라고 한다. 그리고, 주목 엔트리에 관해 도 12의 처리가 수행되는 경우에 대해 설명한다.
단계 S301에서 테이블 제어부(136)는, 현재의 노드 장치(100) 내부의 타이머(139)의 값에서, 주목 엔트리의 타이머 값를 뺀 차분을 계산한다.
또한, 본 실시형태에서는, 라우팅 테이블(103)의 각 엔트리에 대응하는 타이머가 실장되어 있다. 예컨대, FPGA(113) 상에, 각 엔트리에 대응하는 하드웨어 타이머가 실장되어 있을 수도 있다. 실시형태에 따라서는, 대신, 라우팅 테이블(103)의 각 엔트리가, 엔트리 작성 시각을 나타내는 필드를 가지고 있을 수도 있다. 그 경우, 단계 S301에서는, 현재의 노드 장치(100) 내부의 타이머(139)의 값에서, 주목 엔트리의 엔트리 작성 시각을 나타내는 필드의 값을 뺀 차분이 계산된다.
다음, 단계 S302에서 테이블 제어부(136)는, 단계 S301에서 얻어진 계산 결과가, 미리 결정된 라우팅 테이블(103)의 에이징 시간 이상인지 여부를 판단한다. 단계 S301에서 얻어진 차분이 상기 에이징 시간 미만이면, 도 12의 처리는 종료한다.
다른 한편, 단계 S301에서 얻어진 차분이 상기 에이징 시간 이상이면, 단계 S303에서 테이블 제어부(136)는 라우팅 테이블(103)로부터 주목 엔트리를 소거하고, 도 12의 처리를 종료한다.
도 13은 라우팅 테이블의 엔트리의 타이머의 설정에 대해 설명하는 흐름도이다. 도 13의 처리는 다음과 같은 경우에 수행된다.
ㆍ라우팅 테이블(103) 내의 어느 한 엔트리의 내용을 갱신하는 액세스가 있었던 경우(예컨대, 도 11c의 단계 S233, S236, 도 11d의 단계 S222, S223, S227), 액세스된 엔트리에 관해 도 13의 처리가 수행된다.
ㆍ라우팅 테이블(103)에 신규 엔트리가 추가되는 경우(예컨대, 도 11c의 단계 S232), 상기 신규 엔트리에 관해 도 13의 처리가 수행된다.
ㆍ라우팅 테이블(103)이 검색되고, 검색 결과 히트한 엔트리가 발견된 경우(예컨대 도 11c의 단계 S230, 도 11d의 단계 S221), 히트한 엔트리에 관해 도 13의 처리가 수행된다.
이하에서는 편의상, 상기 3가지의 경우를 통합하여, 도 13의 처리가 수행되는 대상의 엔트리를 「주목 엔트리」라고 한다.
단계 S401에서 테이블 제어부(136)는, 주목 엔트리의 타이머(예컨대 도 12에 관해 예시한 하드웨어 타이머)에, 현재의 노드 장치(100)의 내부의 타이머(139)의 값을 설정한다. 그리고 도 13의 처리는 종료한다. 또한, 엔트리 작성 시각을 나타내는 필드를 라우팅 테이블(103)이 갖는 실시형태에 있어서는, 엔트리 작성 시각을 나타내는 필드에, 단계 S401에서 현재의 타이머(139)의 값이 설정된다.
이상의 도 12와 도 13의 처리에 의해, 라우팅 테이블(103)의 각 엔트리의 에이징이 구현된다. 또한, 도시는 생략했지만, 브로드캐스트 관리 테이블(104)에 관해서도, 도 12 및 도 13과 동일한 처리에 의해, 테이블 제어부(136)와 타이머(139)가 협동하여 에이징 처리를 수행한다.
도 14는 루프 검출 테이블의 에이징을 설명하는 흐름도이다. 도 14의 처리는, 루프 검출 테이블(105)의 각 엔트리에 대해, 예컨대 미리 결정된 간격으로 정기적으로 실행된다. 이하, 도 14의 설명에 있어서는, 루프 검출 테이블(105) 내의 어느 한 엔트리를 편의적으로 「주목 엔트리」라고 한다. 그리고, 주목 엔트리에 관해 도 14의 처리가 수행되는 경우에 대해 설명한다.
단계 S501에서 테이블 제어부(136)는, 현재의 노드 장치(100) 내부의 타이머(139)의 값에서, 주목 엔트리의 타이머 값를 뺀 차분을 계산한다. 본 실시형태에서는, 라우팅 테이블(103)과 동일하게 루프 검출 테이블(105)에 관해서도, 각 엔트리에 대응하는 타이머가 실장되어 있다. 물론, 실시형태에 따라서는, 루프 검출 테이블(105)의 각 엔트리가, 엔트리 작성 시각을 나타내는 필드를 가지고 있을 수도 있다.
계속해서, 단계 S502에서 테이블 제어부(136)는, 단계 S501에서 얻어진 계산 결과가, 미리 결정된 루프 검출 테이블(105)의 에이징 시간 이상인지 여부를 판단한다. 단계 S501에서 얻어진 차분이 상기 에이징 시간 미만이면, 도 14의 처리는 종료한다.
다른 한편, 단계 S501에서 얻어진 차분이 상기 에이징 시간 이상이면, 단계 S503에서 테이블 제어부(136)는 루프 검출 테이블(105)로부터 주목 엔트리를 소거하고, 도 14의 처리를 종료한다.
도 15는 루프 검출 테이블의 엔트리의 타이머의 설정에 대해 설명하는 흐름도이다. 루프 검출 테이블(105)의 각 엔트리는, 라우팅 테이블(103)과 달리, 액세스의 유무와 관계없이, 작성되고 나서 정해진 시간이 경과하면 소거된다. 따라서, 도 15의 처리는, 도 11b의 단계 S215 또는 도 11c의 단계 S237에서 신규 엔트리가 루프 검출 테이블(105)에 추가될 때, 상기 신규 엔트리에 관해 실행된다. 바꾸어 말하면, 도 15의 처리는, 프레임의 송신 처리를 계기로, 프레임의 송신과 함께(보다 상세하게는, 도 11b의 단계 S213에서 프레임이 송신된 직후, 또는 도 11c의 단계 S239에서 프레임이 송신되기 직전에) 실행된다.
구체적으로는, 단계 S601에서 테이블 제어부(136)는, 루프 검출 테이블(105)에 추가되는 신규 엔트리의 타이머(예컨대, 하드웨어 타이머)에, 현재의 노드 장치(100)의 내부의 타이머(139)의 값을 설정한다. 그리고 도 15의 처리는 종료한다. 또한, 엔트리 작성 시각을 나타내는 필드를 루프 검출 테이블(105)이 갖는 실시형태에 있어서는, 엔트리 작성 시각을 나타내는 필드에, 단계 S601에서 현재의 타이머(139)의 값이 설정된다.
이상의 도 14와 도 15의 처리에 의해, 루프 검출 테이블(105)의 각 엔트리의 에이징이 구현된다.
도 16은 포즈 상태 해제 처리의 흐름도이다. 도 16의 처리는, 도 11a의 단계 S206에서 설정된 「P」 상태를 해제하기 위한 처리이다. 또한, 도 16의 처리는, 예컨대 미리 결정된 간격으로 정기적으로, 각 포트에 대해 실행된다. 이하, 도 16의 설명에 있어서는 어느 한 포트(101-i)(1≤i≤x)를 「주목 포트」라고 하고, 주목 포트(101-i)에 대해 도 16의 처리가 수행되는 경우에 대해 설명한다.
단계 S701에서 테이블 제어부(136)는, 도 7의 포즈 상태 테이블(151)을 참조하여, 주목 포트(101-i)에 대응하는 포즈 상태(PSi)의 값이 「P」인지 여부를 판정한다. 주목 포트(101-i)에 대응하는 포즈 상태(PSi)의 값이「P」가 아니라 「N」이면, 도 16의 처리는 종료한다.
다른 한편, 주목 포트(101-i)에 대응하는 포즈 상태(PSi)의 값이 「P」이면, 단계 S702에서 테이블 제어부(136)는, 포즈 상태 테이블(151)의 주목 포트(101-i)에 대응하는 엔트리에 있어서, 카운터(Counti)를 카운트 다운한다.
계속해서, 단계 S703에서 테이블 제어부(136)는, 단계 S702의 카운트 다운 결과, 카운터(Counti)의 값이 0가 되었는지 여부를 판정한다. 카운터(Counti)의 값이 0으로 되어 있지 않으면, 도 16의 처리는 종료한다.
다른 한편, 카운터(Counti)의 값이 0으로 되어 있으면, 단계 S704에서 테이블 제어부(136)는, 포즈 상태 테이블(151)의 주목 포트(101-i)에 대응하는 엔트리에 있어서 「P」 상태를 해제한다. 즉, 테이블 제어부(136)는, 주목 포트(101-i)에 대응하는 엔트리의 포즈 상태(PSi)에 「N」을 설정한다. 그리고, 도 16의 처리는 종료한다.
단계 S704에 의해 포즈 상태가 해제된 후, 포즈 상태 테이블(151)의 내용은, 도 11c의 단계 S233 또는 도 11d의 단계 S222에 있어서 라우팅 테이블(103)에 반영된다.
또한, 포즈 상태 테이블(151)은, 도 7에 예시한 바와 같이 「카운터」 필드를 가지고 있을 수도 있고, 대신 하드웨어 타이머에 의해 포즈 상태 테이블(151)의 각 엔트리의 카운트 다운이 구현될 수도 있다.
또한, 포즈 상태 테이블(151)은, 「카운터」 필드 대신, 「P」 상태로부터의 복귀 예정 시각을 나타내는 「복귀 예정 시각」 필드를 가지고 있을 수도 있다. 그리고, 도 11a의 단계 S206에서는, 포즈 프레임에서 지정된 시간을 단계 S206의 실행 시각에 더한 시각이, 테이블 제어부(136)에 의해 계산되어, 「복귀 예정 시각」 필드에 기록될 수도 있다. 그리고, 도 16의 처리는, 단계 S703의 판단을 수행하는 대신, 타이머(139)의 현재 시각이 복귀 예정 시각 필드의 값보다 나중의 시각일 때 단계 S704가 실행되도록, 변형될 수도 있다.
도 17은 노드 장치가 상기 노드 장치 자신에 대해 수행하는 포즈 제어 처리에 대해 설명하는 흐름도이다. 예컨대, 도 17의 처리는, 미리 결정된 간격으로 정기적으로 실행될 수도 있다.
단계 S801에서 포트 감시부(137)는, 도 10의 포즈 상태 관리 데이터(154)의 포즈 상태(SS)의 값을 참조하여, 자(自) 노드 장치(100)가 포즈 상태인지 여부를 판단한다. 포즈 상태(SS)의 값이 「P」일 때, 처리는 단계 S804로 이행되고, 포즈 상태(SS)의 값이 「N」일 때, 처리는 단계 S802로 이행된다.
단계 S802에서 포트 감시부(137)는, 노드 장치(100) 자신이 비지 상태인지 여부를 판단한다. 예컨대, 버퍼부(142)의 사용률이 정해진 임계값을 초과하였으면, 포트 감시부(137)는 노드 장치(100) 자신이 비지 상태라고 판단하고, 처리는 단계 S803으로 이행된다. 반대로, 버퍼부(142)의 사용률이 상기 임계값 이하이면, 포트 감시부(137)는 노드 장치(100) 자신은 비지 상태가 아니라고 판단하고, 도 17의 처리를 종료한다.
단계 S803에서는, 포즈 시작을 위한 포즈 프레임 송신 처리가 수행된다. 구체적인 내용은 도 18과 함께 후술하는데, 단계 S803의 처리는, 인접 노드 장치에 포즈 요구를 내기 위한 처리이다. 단계 S803의 실행 후, 도 17의 처리는 종료한다.
그런데, 단계 S801에서 포즈 상태(SS)의 값이 「P」였을 때, 단계 S804에서 포트 감시부(137)는, 노드 장치(100) 자신이 비지 상태인지 여부를, 단계 S802와 동일한 방법으로 판단한다. 「노드 장치(100) 자신이 비지 상태이다」라고 포트 감시부(137)가 판단하면, 처리는 단계 S806으로 이행된다. 반대로, 「노드 장치(100) 자신은 비지 상태가 아니다」라고 포트 감시부(137)가 판단하면, 처리는 단계 S805로 이행된다.
단계 S805에서는, 포즈 해제를 위한 포즈 프레임 송신 처리가 수행된다. 구체적인 내용은 도 19와 함께 후술하는데, 단계 S805의 처리는, 인접 노드 장치에 대해 과거에 낸 포즈 요구를 해제하기 위한 통지를, 인접 노드 장치에 내기 위한 처리이다. 단계 S805의 실행 후, 도 17의 처리는 종료한다.
단계 S806에서 포트 감시부(137)는, 현재의 타이머(139)의 값과 포즈 상태 관리 데이터(154)의 포즈 시작 시각(Start Time)과의 차분을, 포즈 상태 관리 데이터(154)의 카운터(SCount)와 비교한다.
그리고 단계 S807에서 포트 감시부(137)는, 상기 차분이 이미 포즈 상태 관리 데이터(154)의 카운터(SCount)의 값에 도달했는지 여부를 판단한다.
상기 차분이 이미 카운터(SCount)의 값에 도달했으면, 과거의 포즈 요구에 있어서 노드 장치(100)가 인접 노드 장치에 요구한 시간이 이미 경과했음에도 불구하고, 아직 노드 장치(100) 자신이 비지 상태로부터 복귀하지 않았다는 것이다. 따라서, 이 때 처리는 단계 S808로 이행된다.
반대로, 상기 차분이 카운터(SCount)의 값보다 작으면, 과거의 포즈 요구에 있어서 노드 장치(100)가 인접 노드 장치에 요구한 시간이 아직 경과하지 않았다는 것이므로, 도 17의 처리는 종료한다.
단계 S808에서는, 포즈 시작을 위한 포즈 프레임 송신 처리가 수행된다. 구체적인 내용은 도 18과 함께 후술하는데, 단계 S808의 처리는, 인접 노드 장치에 포즈 연장 요구를 내기 위한 처리이다. 단계 S808의 실행 후, 도 17의 처리는 종료한다.
도 18은 포즈 시작 처리의 흐름도이다. 도 18의 처리는, 도 17의 단계 S803 또는 S808로부터 호출된다.
단계 S901에서 포트 감시부(137)는, 현재의 타이머(139)의 값(즉 단계 S901가 실행되는 시점에서의 현재 시각)을, 도 10의 포즈 상태 관리 데이터(154)의 포즈 시작 시각(Start Time)으로 설정한다.
그리고, 포트 감시부(137)는, 단계 S902에서 포즈 프레임을 생성한다. 전술한 바와 같이, 포즈 프레임은, 애드혹 헤더(410)를 갖는 애드혹 프레임의 1종류로서, 애드혹 헤더(410) 뒤에는, 이더넷 프레임(420) 대신, 적어도 포즈 카운터를 포함하는 하나 이상의 필드를 갖는다.
본 실시형태에서, 예컨대, 포트 감시부(137)는, 애드혹 헤더(410)에 있어서, 브로드캐스트를 나타내는 특수한 값을 GD(411)에 설정하고, 노드 장치(100) 자신의 노드 ID를 GS(412)에 설정하고, 포즈 프레임을 나타내는 값을 타입(413)에 설정한다. 또한, 포트 감시부(137)는, 새로 생성한 FID를 FID(414)에 설정하고, 정해진 값을 TTL(415)에 설정한다. 포즈 프레임은 인접 노드 장치가 수신처이므로, TTL(415)에 설정되는 값은 1일 수도 있다.
또한, 본 실시형태에서는 포즈 프레임의 형식은, 애드혹 헤더(410) 뒤에 고정 길이의 데이터가 계속되는 형식이므로, 길이(416)에는, 그 미리 결정된 고정 길이의 값이 설정된다. 그리고, 포트 감시부(137)는, GD(411)로부터 길이(416)의 값에 따라, FCS(417)를 계산한다.
또한, 포트 감시부(137)는, 단계 S903에 있어서, 노드 장치(100) 자신의 비지 상황에 의해 포즈 카운터값을 결정한다. 예컨대, 포트 감시부(137)는, 버퍼부(142)의 사용률에 따라 포즈 카운터값을 결정할 수도 있다.
또한, 여기서 「포즈 카운터값」이란, 인접 노드 장치에 대해 프레임의 송신을 중지하도록 노드 장치(100)가 요구하는 기간의 길이를 나타내는 값이다. 바꾸어 말하면, 「포즈 카운터값」이란, 노드 장치(100)의 인접 노드 장치가, 노드 장치(100)와 접속된 포트의 포즈 상태(즉, 「P」 상태)를 지속하는 시간의 길이를 나타내는 값이다. 실시형태에 따라서는, 포트 감시부(137)는, 노드 장치(100) 자신의 비지 상황에 의존하지 않는, 미리 결정된 상수값을 포즈 카운터값으로서 이용할 수도 있다.
그리고, 포트 감시부(137)는, 단계 S903에 있어서 또한, 전술한 바와 같이 결정한 포즈 카운터값을, 포즈 상태 관리 데이터(154)의 카운터(SCount)에 설정한다.
또한, 단계 S904에서 포트 감시부(137)는, 포즈 프레임의 포즈 카운터에, 단계 S903에서 결정한 포즈 카운터값을 설정한다.
마지막으로 단계 S905에서 포트 감시부(137)는, 포즈 프레임을 송신하는 것이 가능한 포트를 포트 선택부(138)로 하여금 선택하도록 하고, 포즈 프레임을 송신 프레임 제어부(140)에 출력한다. 또한, 포트 선택부(138)는 선택 결과를 송신 프레임 제어부(140)에 통지한다. 그 결과, 송신 프레임 제어부(140)는, 포트 선택부(138)에 의해 선택된 포트 각각으로부터, 포즈 프레임을 송신한다.
또한, 본 실시형태에 있어서 포트 선택부(138)는, 구체적으로, 도 8의 포트 링크 상태 테이블(152)을 참조하여, 접속 상태(즉, 「C」 상태)의 포트를, 「포즈 프레임을 송신하는 것이 가능한 포트」로서 선택한다. 실시형태에 따라서는, 포트 선택부(138)는, 도 8의 포트 링크 상태 테이블(152)에 있어서 「C」 상태이고, 또한 도 7의 포즈 상태 테이블(151)에 있어서 포즈 상태가 아닌 정상적인 상태(즉, 「N」상태)인 포트를 선택할 수도 있다.
또한, 도 6에 도시한 바와 같이, 본 실시형태에서는 포트 감시부(137)가 FPGA(113)에 의해 구현되므로, 도 18의 단계 S902에 있어서, 포즈 프레임은 FPGA(113)에 의해 생성된다. 따라서, MPU(114)가 소프트웨어에 따라 포즈 프레임을 생성하는 경우에 비해, 본 실시형태에서는, 보다 짧은 시간에 포즈 프레임의 생성이 가능하다.
포즈 프레임의 생성에 소요되는 시간의 단축은, 노드 장치(100)가 비지 상태에 빠지고 나서, 인접 노드 장치에 있어서 노드 장치(100)와 접속되어 있는 포트의 상태가 「P」로 설정되어 프레임의 중계 경로가 전환될 때까지의 시간의 단축으로 이어진다. 즉, 본 실시형태에 따르면, 포즈 프레임을 FPGA(113)가 생성함으로써, 유선 애드혹 네트워크 전체에서의 중계 경로의 전환에 소요되는 시간이 단축된다.
노드 장치(100)가 비지 상태에 빠져 포즈 요구를 내는 것도, 유선 애드혹 네트워크 전체적으로 보면, 광의의 문제점을 발생시키는 것이다. 그러나, 전술한 바와 같이, 본 실시형태에 따르면 신속하게 대체 경로로의 전환이 수행된다. 따라서, 본 실시형태의 유선 애드혹 네트워크는, 문제점 발생 시에서의 중계 경로의 신속한 전환이 요망되는 미션 크리티컬(mission critical)한 시스템에도 적합하게 적용할 수 있는, 폴트 톨러런트(fault tolerant)한 네트워크이다.
도 19는 포즈 해제 처리의 흐름도이다. 도 19의 처리는 도 17의 단계 S805로부터 호출된다.
단계 S1001에서 포트 감시부(137)는, 도 10의 포즈 상태 관리 데이터(154)의 포즈 시작 시각(Start Time)을 클리어한다. 예컨대, 포트 감시부(137)는, 시각으로서 무효한 특수한 값을 포즈 시작 시각(Start Time)으로 설정함으로써, 포즈 시작 시각(Start Time)을 클리어할 수도 있다.
그리고, 단계 S1002에서 포트 감시부(137)는, 도 18의 단계 S902와 동일한 방법으로 포즈 프레임을 생성한다.
계속해서, 단계 S1003에서 포트 감시부(137)는, 포즈 상태 관리 데이터(154)의 카운터(SCount)를 클리어한다. 예컨대, 포트 감시부(137)는, 카운터(SCount)에 0을 설정함으로써, 카운터(SCount)를 클리어할 수도 있다.
또한, 단계 S1004에서는, 포트 감시부(137)는, 포즈 프레임의 포즈 카운터에 0을 설정한다. 포즈 카운터에 0이 설정된 포즈 프레임은, 포즈 상태를 해제하도록 통지하기 위한 것이다.
그리고, 단계 S1005에서는, 도 18의 단계 S905와 동일한 처리가 수행된다.
즉, 포트 감시부(137)는, 포즈 프레임을 송신하는 것이 가능한 포트를 포트 선택부(138)로 하여금 선택하도록 하고, 포즈 프레임을 송신 프레임 제어부(140)로 출력한다. 또한, 포트 선택부(138)는 선택 결과로서, 예컨대, 「C」 상태의 포트를 송신 프레임 제어부(140)에 통지한다. 혹은, 포트 선택부(138)는, 「C」 상태이면서 「N」 상태인 포트를 선택할 수도 있다.
그 결과, 송신 프레임 제어부(140)는, 포트 선택부(138)에 의해 선택된 포트 각각으로부터, 포즈 프레임을 송신한다.
도 20은 포트 감시 처리의 흐름도이다. 포트 감시 처리는, 포트(101-1~101-x) 각각에 대해 수행된다. 이하, 포트(101-i)(1≤i≤x)에 대해 포트 감시 처리가 수행되는 경우를 예로 들어 설명한다.
단계 S1101에서 포트 감시부(137)는, 포트(101-i)가 접속 상태인지 여부를 판단한다. 예컨대, 포트(101-i)에 접속된 케이블이 통신 가능한 상태인지 아니면 링크 다운 상태인지를 나타내는 PHY 칩(111-i)의 출력에 의거하여, 포트 감시부(137)는 단계 S1101의 판단을 수행한다.
포트(101-i)에 접속된 케이블이 통신 가능한 상태이고, 포트(101-i)가 케이블을 통해 인접 노드 장치와 유효하게 접속된 상태이면, 처리는 단계 S1102로 이행된다. 다른 한편, 포트(101-i)에 접속된 케이블이 링크 다운 상태이면, 처리는 단계 S1103으로 이행된다.
단계 S1102에서 포트 감시부(137)는, 테이블 제어부(136)를 통해, 도 8의 포트 링크 상태 테이블(152)에 있어서, 포트(101-i)의 링크 상태(Li)를, 「C」 상태로 설정한다. 그리고, 처리는 단계 S1101로 되돌아간다.
또한, 단계 S1103에서 포트 감시부(137)는, 테이블 제어부(136)를 통해, 도 8의 포트 링크 상태 테이블(152)에 있어서, 포트(101-i)의 링크 상태(Li)를, 「D」 상태로 설정한다. 그리고, 처리는 단계 S1101로 되돌아간다.
이상과 같이 하여, 도 20의 포트 감시 처리는, 정해진 주기로 반복 실행된다.
그런데, 이상과 같이 도 1 내지 도 20을 참조하여 설명한 본 실시형태에 대해 개괄하면, 다음과 같다.
상기 실시형태의 노드 장치(100)는, 유선 접속된 제1 노드 장치와 제2 노드 장치를 포함하는 복수 개의 노드 장치를 포함하는 네트워크 내의, 제1 노드 장치로서 이용된다. 상기 네트워크의 구체적인 예는, 도 2a의 유선 애드혹 네트워크(200)이다.
도 1이나 도 5에 도시한 바와 같이, 제1 노드 장치는, 복수 개의 포트(101-1~101-x)를 갖는다. 각 포트는, 복수 개의 노드 장치 중 제1 노드 장치 이외의 다른 노드 장치와 제1 노드 장치를 유선 접속하기 위한 포트이다.
또한, 제1 노드 장치인 노드 장치(100)는, 루프 검출 정보를 저장하는 루프 검출 정보 저장 수단의 구체적인 예로서, 루프 검출 테이블(105)을 갖는다. 이하, 설명의 편의상, i번째(1≤i≤m)의 엔트리에 대응하는, 노드 장치(100)가 과거에 송신한 프레임을 「제1 프레임」이라고 하기로 한다.
포트 상태(LP1i~LPxi)는, 노드 장치(100)가 제1 프레임을 송신했을 때의 송신처 포트인 제1 포트를 복수 개의 포트 중에서 판별하는 송신처 포트 판별 정보의 일례이다. 즉, 포트(101-1~101-x) 각각의 상태(LP1i~LPxi)는, 전체적으로, 「『U』 상태의 포트는 어느 포트인지」를 판별하는 정보로서, i번째의 엔트리에 있어서 「U」 상태의 포트란, 구체적으로는 상기 제1 포트이다.
또한, 송신원(GSi와 FIDi)의 쌍은, 제1 프레임을 일의적으로 식별하기 위한 제1 식별 정보의 예이다. 이와 같이, 루프 검출 테이블(105)의 i번째의 엔트리의 데이터는, 송신처 포트 판별 정보와 제1 식별 정보를 대응시키는 루프 검출 정보의 일례이다.
본 실시형태에서의 제1 식별 정보는, 노드 장치 식별 정보(구체적으로는 노드 ID)인 송신원(GSi)과, 송신원 노드 장치가 송신원이 되어 송신하는 복수 개의 프레임 각각을 일의적으로 식별하는 프레임 식별 정보의 일례인 FID인 FIDi와의 쌍이다. 그러나, 루프 검출 테이블(105)은, 루프한 프레임을 검출하기 위한 것이므로, 프레임을 일의적으로 식별할 수 있는 임의의 식별 정보가 노드 ID와 FID의 쌍 대신 이용할 수 있음이 명백하다.
또한, 라우팅 테이블(103)은, 라우팅 정보를 저장하는 라우팅 정보 저장 수단의 일례이다. 라우팅 정보는, 복수 개의 노드 장치 각각에 대해, 제1 노드 장치인 노드 장치(100)의 복수 개의 포트(101-1~101-x) 각각으로부터의 프레임 송신 가능 여부를 나타내는 정보인 상태 정보를 대응시키고 있다.
예컨대, 라우팅 테이블(103)의 j번째(1≤j≤n)의 엔트리에 주목하면, 복수 개의 노드 장치 중, 수신처(GDj)라는 노드 ID에 의해 식별되는 어느 한 노드 장치에, 상태 정보의 구체적인 예로서의 상태(RP1j~RPxj)가 대응지어져 있다. 여기서, 상태(RP1j~RPxj)는, 포트(101-1~101-x) 각각으로부터의 프레임 송신 가능 여부를 나타낸다. 보다 구체적으로는, 「U」 상태와 「E」 상태는 「송신 가능」을 나타내고, 「L」 상태와 「D」 상태와 「P」 상태는 「송신 불가」를 나타낸다.
또한, 상기 제1 노드 장치로서의 노드 장치(100)는, 인접 노드 장치인 상기 제2 노드 장치로부터 제2 프레임을 수신하는 수신 수단으로서 기능하는 도 6의 수신부(131)를 갖는다. 또한, 제2 프레임을 일의적으로 식별하기 위한 제2 식별 정보의 구체적인 예는, 제2 프레임에 포함되는, GS(412)와 FID(414)의 값의 쌍이다.
또한, 노드 장치(100)가 갖는 라우팅 엔진(102)은, 이하의 처리를 수행하는 라우팅 정보 갱신 수단으로도 기능한다. 바꾸어 말하면, 테이블 제어부(136)와 포트 선택부(138)로서의 FPGA(113)는, 라우팅 정보 갱신 수단의 구체적인 예이다.
라우팅 정보 갱신 수단으로서의 FPGA(113)는, 제2 식별 정보가 제1 식별 정보와 일치하는 경우(구체적으로는 루프 검출 테이블(105)에서 엔트리가 히트하는 경우)에는, 상태 정보의 갱신을 수행한다.
즉, 제2 프레임의 수신처인 수신처 노드 장치에, 라우팅 정보에 의해 대응지어져 있는 상태 정보가, 「제1 포트로부터의 프레임 송신이 불가」하다고 나타내도록 갱신된다. 본 실시형태에서는, 구체적으로는, 도 11d의 단계 S223에서, 수신처 노드 장치에 대응하는 라우팅 테이블(103)의 엔트리에 있어서, 제1 포트에 대응하는 상태가 「L」로 갱신됨으로써, 「제1 포트로부터의 프레임 송신이 불가」하다고 표시된다.
그리고, 노드 장치(100)는, 송신 수단으로서 기능하는 포트 선택부(138), 송신 프레임 제어부(140) 및 송신부(141)를 구비한다. 송신 수단으로서 기능하는 이들 각 부는, 라우팅 정보에 의해 수신처 노드 장치에 대응지어져 있는 상태 정보에 의거하여, 제2 프레임을 송신하는 것이 가능한 제2 포트를 선택하고, 제2 포트로부터 제2 프레임을 송신하는 처리를 수행한다. 본 실시형태에서는, 제2 포트는 다음과 같이 선택되고 있다.
ㆍ제2 식별 정보가 제1 식별 정보와 일치하지 않은 경우(즉, 루프가 검출되지 않은 경우)에는, 라우팅 테이블(103)에 있어서 수신처 노드 장치에 대응하는 엔트리에서, 「U」 상태 또는 「E」 상태의 포트가 제2 포트로서 선택된다. 또한, 본 실시형태와 같이, 네트워크 전체에서의 경로의 집속의 신속함을 고려하여, 단계 S234에 있어서 「U」 상태의 포트가 우선적으로 선택될 수도 있다.
ㆍ반대로, 제2 식별 정보가 제1 식별 정보와 일치한 경우(즉 루프가 검출된 경우)에는, 라우팅 테이블(103)에 있어서 히트한, 수신처 노드 장치에 대응하는 엔트리에서, 「E」 상태의 포트가 제2 포트로서 선택된다.
또한, 노드 장치(100)가 구비하는 포트 감시부(137)는, 복수 개의 포트에 대해 링크 다운 상태인지 여부를 감시하는 링크 다운 감시 수단으로서 기능함과 아울러, 제1 노드 장치의 부하를 감시하는 부하 감시 수단으로도 기능한다. 부하는, 예컨대 버퍼부(142)의 사용률에 의해 계측된다.
수신 수단으로서의 수신부(131)가 제2 프레임을 수신하면, 라우팅 정보 갱신 수단으로서의 포트 선택부(138)는, 다음과 같이 상태 정보를 갱신한다. 즉, 포트 선택부(138)는, 라우팅 정보에 의해 수신처 노드 장치에 대응지어져 있는 상태 정보를, 「링크 다운 상태라고 판정된 포트로부터의 프레임 송신이 불가하다」고 나타내도록 갱신한다. 본 실시형태에서는, 단계 S222와 S233에 도시한 바와 같이, 「D」 상태에 의해, 「프레임 송신이 불가하다」고 표시된다.
또한, 포트 감시부(137)에 의해 감시되는 부하가 미리 결정된 기준을 초과한 경우, 단계 S803에 도시한 바와 같이, 제1 포즈 프레임이 포트 감시부(137)에 의해 생성되어 송신 수단으로서의 송신 프레임 제어부(140) 및 송신부(141)에 의해 인접 노드 장치로 송신된다.
또한, 수신 수단으로서의 수신부(131)가 제2 포즈 프레임을 인접 노드 장치 중 어느 하나로부터 수신한 후에, 상기 제2 노드 장치(즉, 인접 노드 장치 중 하나)로부터 상기 제2 프레임을 수신하는 경우도 있다.
그 경우, 라우팅 정보 갱신 수단으로서의 포트 선택부(138)는, 단계 S222와 S233에 예시한 바와 같이, 상태 정보를 갱신한다. 즉, 포트 선택부(138)는, 라우팅 정보에 의해 수신처 노드 장치에 대응지어져 있는 상태 정보를, 「제2 포즈 프레임의 송신원인 포즈 요구 노드 장치와 접속되어 있는 제3 포트로부터의 프레임 송신이 불가하다」고 나타내도록 갱신한다. 본 실시형태에서는, 구체적으로는 「P」 상태에 의해, 「프레임 송신이 불가하다」고 표시된다.
또한, 송신 수단으로서의 포트 선택부(138)에 의해, 라우팅 정보에 의해 수신처 노드 장치에 대응지어져 있는 상태 정보에 의거하여, 「제2 프레임을 송신하는 것이 가능한 포트가 존재하지 않는다」고 판단되는 경우도 있다. 그 경우, 송신 수단으로서의 포트 선택부(138), 송신 프레임 제어부(140) 및 송신부(141)에 의해, 제2 프레임은 제2 노드 장치로 반송된다.
또한, 브로드캐스트 관리 테이블(104)은, 브로드캐스트 관리 정보 저장 수단의 구체적인 예이다. 브로드캐스트 관리 테이블(104)은, 제1 브로드캐스트 프레임의 송신원을 식별하는 제1 브로드캐스트 송신원 정보인 MAC 어드레스와 대응시켜, 제1 브로드캐스트 프레임의 처리 시각을 나타내는 시각 정보를 저장하고 있다.
또한, 수신 수단으로서의 수신부(131)가 제2 브로드캐스트 프레임을 수신했을 때, 하기 2개의 조건이 성립하면, 단계 S211과 같이 제2 브로드캐스트 프레임은 파기된다.
ㆍ제2 브로드캐스트 프레임의 송신원을 식별하는 제2 브로드캐스트 송신원 정보가 제1 브로드캐스트 송신원 정보와 같다.
ㆍ상기 시각 정보와 현재 시각의 차가 정해진 시간 이하이다.
또한, 본 실시형태에서는 수신 프레임 제어부(133)가 단계 S211의 파기를 실행하는데, 수신한 프레임을 중계를 위해 노드 장치(100) 자신으로부터 송신할 것인지 여부의 판단과 관련된다는 의미에서는, 단계 S211은 송신 처리의 전처리이다. 즉, 수신 프레임 제어부(133)는, 송신 수단 내에 있어서 전처리를 담당하는 일부로서도 기능하고 있다.
그런데, 본 실시형태에서는, 도 11a 내지 도 11d의 처리에 있어서, 각 분기 단계는, 검색 결과가 히트인지 미스 히트인지, 또는 정해진 필드에 정해진 값이 설정되어 있는지 여부라는 단순한 판단이다. 단계 S210도, 에이징 시간이 상기 「정해진 시간」과 동일한 10 ms라면, 검색 결과가 히트인지 미스 히트인지라는 단순한 판단에 귀착된다. 따라서, 스위칭 소자(바꾸어 말하면, 논리 연산 회로, 보다 구체적으로는 FPGA(113))에 의해 도 11a 내지 도 11d에서의 분기를 구현할 수 있다.
또한, 송신 수단으로서의 포트 선택부(138)가 제2 포트를 선택하는 처리는, 각종 정보의 이력과 무관하므로, 조합 논리 회로에 의해 구현할 수 있고, 구체적으로는 프로그래머블 로직 디바이스의 일례인 FPGA(113)에 의해 구현할 수 있다. 또한, 일반적으로, FPGA의 동작은, 제1 비트 패턴을 입력으로 하고 제2 비트 패턴을 출력으로 하는 룩업 테이블에 의해 프로그램화될 수 있다. 따라서, 상기 송신 수단으로서의 FPGA(113)는, 다음과 같은 비트 패턴을 입출력으로 하는 룩업 테이블에 의해 프로그램화될 수 있다.
ㆍ제1 비트 패턴은, 복수 개의 포트 각각이, 정해진 하나 이상의 송신 가능 상태 및 정해진 하나 이상의 송신 불가 상태를 포함하는 정해진 개수의 상태 중 어느 것인지를 나타낸다. 예컨대, 루프가 검출되지 않는 경우의 처리 로직에서는, 「송신 가능 상태」란 라우팅 테이블(103)에서의 「E」 상태와 「U」 상태를 포함하고, 「송신 불가 상태」란 라우팅 테이블(103)에서의 「L」 상태와 「D」 상태와 「P」상태를 포함한다.
ㆍ제2 비트 패턴은, 복수 개의 포트 각각을 식별하는 포트 식별 정보를 나타낸다.
마찬가지로, 루프가 검출된 경우의 처리 로직에 대해서는, 라우팅 테이블(103)에 있어서 송신 가능 상태(「E」 상태)인지 송신 불가 상태(「L」, 「U」, 「P」 또는 「D」 상태)인지를 각 포트에 대해 나타내는 비트 패턴을 입력으로 하면 된다.
그런데, 도 1 내지 도 20을 참조하여 설명한 본 실시형태에는 다양한 장점이 있으므로, 이하에 설명한다.
본 실시형태의 제1 장점은, 장애 발생시의 경로 전환의 소요 시간이 짧다는 것이다. 또한, 광의의 네트워크 장애에는, 링크의 물리적인 단선뿐만 아니라, 어느 노드 장치가 비지 상태에 빠져 실질적으로 프레임을 수신할 수 없게 되는 것도 포함한다.
장애 발생시의 경로 전환의 본 실시형태에서의 소요 시간의 짧음은, 본 실시형태와 다른 기술과 비교함으로써 보다 명백해지므로, 이하, 몇 가지의 기술과 본 실시형태를 비교한다.
네트워크를 구성할 때에는, 통신 노드 장치의 고장이나 링크의 단선이라는 장애가 발생했을 때에도 네트워크 시스템 전체가 다운되지 않도록, 회선 등이 리던던시화될 수 있다. 예컨대, OSI(Open Systems Interconnection)의 레이어 2(즉, 데이터 링크층)에서 동작하는, 루프를 방지하기 위한 프로토콜인 STP(Spanning Tree Protocol)는 리던던시화된 네트워크에 적용된다. 또한, 레이어 3(즉, 네트워크층)에서 동작하는 라우팅 프로토콜인 OSPF(Open Shortest Path First)도, 리던던시화된 네트워크에 적용된다. 또한, 비특허문헌 1의 S-wire도, 메시형으로 리던던시화된 네트워크에 적용될 수 있다.
STP, OSPF 및 S-wire는, 네트워크에서의 경로를 선택하는 기능 및 장애가 발생했을 때 경로를 재계산하여 복구시키는 기능을 구현한다. 이하, 본 실시형태의 이점의 이해를 쉽게 하기 위해, 비교 대상인 STP, OSPF 및 S-wire에 대해, 약간 상세하게 설명한다.
레이어 2의 프레임 스위칭을 사용한 리던던시화 구성에서는, 네트워크 회선이 루프(즉, 원환(圓環)) 형태로 구성된다.
여기서, 만일, STP에 의한 프레임의 루프 방지가 수행되지 않는다고 가정하자. 그러면, 스위치 장치가 물리적으로는 루프 형태로 접속된 구성의 네트워크에 있어서는, 브로드캐스트 프레임을 비롯하여, 모든 통신 데이터가, 네트워크 상을 영원히 순환할 우려가 있다. 왜냐하면, 레이어 2의 프레임의 헤더에는, TTL 필드가 없기 때문이다.
그 결과, 프레임이 영원히 계속 루프하여, 각 스위치 장치 내의 CPU(Central Processing Unit)의 부하 상승을 초래하고, 최악의 경우에는 CPU가 폭주해 버릴 위험성이 있다. 프레임이 계속 루프함으로써, 네트워크의 대역폭이 낭비되고, 그 결과, 네트워크 다운이 야기될 위험성도 있다.
STP에 따르면, 전술한 바와 같이 위험한 프레임의 순환을 방지하기 위해, 주어진 우선 순위를 바탕으로, 브릿지 사이에서 BPDU(Bridge Protocol Data Unit)이라 불리는 제어 정보가 교환된다. 그 결과로서 각 브릿지는, 프레임을 블로킹하는 포트와 프레임을 포워드하는 포트를 결정한다.
각 브릿지는, 적당히, 어느 한 포트를 블로킹 상태로 하여, 블로킹 상태의 포트에서 수신한 프레임을 파기한다. 그 결과, 물리적으로는 케이블에 의해 루프 형태로 접속된 네트워크라 하더라도, 프레임이 루프 안을 언제까지나 계속 순회하는 사태는 방지된다.
또한, OSPF에서는, 현재의 네트워크 토폴로지를 알기 위해, 각 라우터가, 모든 라우터로부터 정보를 수집한다. 수집된 정보는, 각 라우터 내의 데이터베이스에 보관된다. 각 라우터는, 데이터베이스를 참조하여, SPF(Shortest Path First) 알고리즘을 사용하여 SPF 트리를 작성하고, SPF 트리로부터 라우팅 테이블을 작성한다. SPF 트리의 작성 후에 라우팅 테이블이 작성되기 때문에, OSPF에 따르면, 라우팅 루프가 잘 발생하지 않는다.
또한, S-wire에 의한 경로 작성 알고리즘(이하, 「S-wire 알고리즘」이라고 함)에서는, 각 노드 장치가 가중치를 포트마다 관리하는 테이블을 갖는다. 가중치는, 프레임 전송의 목표(goal)가 되는 게이트웨이까지 데이터가 경유하는 노드 장치 수(바꾸어 말하면, 홉수)에 의거한다. 프레임 전송시, 각 노드 장치는, 가중치에 따라 송신처 포트를 결정한다.
그리고, 노드 장치의 고장 또는 단선 등의 어떠한 이유로 통신이 실패한 경우에, 노드 장치는, 실패한 상기 통신을 위해 프레임을 송출한 포트에 대응하는 가중치를 갱신하고, 다른 포트로부터 프레임을 재전송한다. 그 결과, 네트워크 전체적으로는, 각 노드 장치의 분산 협조에 의한 경로의 발견 및 학습이 구현된다.
여기서, 장애 발생시의 경로 전환의 소요 시간에 대해 비교 및 고찰하면, 본 실시형태는, STP, OSPF, S-wire의 어느 것과 비교해도 우위에 있다.
STP에 따르면, 브릿지는, 장애시의 우회 경로 형성(즉, 경로 전환) 시, 「Disabled」 상태, 「Blocking」 상태, 「Listening」 상태, 「Learning」 상태 및 「Forwarding」 상태라는 5개의 상태를 천이한다. 디폴트의 타이머 설정에 따르면, 「Blocking」 상태의 최대 경과 시간은 20초이고, 「Listening」 상태와 「Learning」상태에 따른 전송 지연은 15초씩이다. 따라서, 디폴트의 타이머 설정에서는, 최대 50(=20+15+15)초간의 통신 끊김이 발생한다.
또한, 상세한 설명은 생략하지만, STP를 개량한 RSTP(Rapid Spanning Tree Protocol)에 있어서도, 경로 전환에 1초 정도가 필요하다.
또한, OSPF에 따르면, 라우터가 내부에 유지하고 있는 라우팅 테이블의 재계산에 시간이 소요되기 때문에, 장애 발생부터 복구까지 수 십 초라는 시간이 필요해질 수 있다. 그 이유는, OSPF에서는, 최단 패스를 구하는 계산을 위해 복잡한 알고리즘(즉, 다이크스트라(Dijkstra)법)이 사용되므로, 라우터의 CPU나 메모리 자원이 상당히 소비되기 때문이다.
S-wire 알고리즘에 있어서도, 가중치의 계산에 어느 정도의 시간이 소요되기 때문에, 장애시의 경로 전환에는 1초 정도 소요된다.
미션 크리티컬한 환경에 있어서는, 장애시의 경로 전환 시간을 가능하면 짧게 할 것이 요구되며, 네트워크의 용도에 따라서는, 1초 조차도 길 수가 있다. 그러나, STP에서의 패스 코스트(path cost) 계산, OSPF에서의 다이크스트라법에 의한 계산, S-wire 알고리즘에서의 가중치 계산 같은 산술 계산에는, 분명히, 어느 정도의 시간이 필요하다.
다른 한편으로, 본 실시형태에서는, 전술한 바와 같이, 라우팅 테이블(103)이나 루프 검출 테이블(105)의 갱신에는 산술 계산이 불필요하다. 왜냐하면, 라우팅 테이블(103)이나 루프 검출 테이블(105)에서 관리되는 것은, 가중치나 거리 등의 수치 데이터가 아니라, 이산적으로 나타내지는 상태이기 때문이다.
또한, 수치 데이터를 사용하지 않고 상태에 따라 포트를 관리해도 실용상 충분한 퍼포먼스를 얻을 수 있는 이유는, 본 실시형태에서는 인접 노드끼리가 유선 접속되어 있고, 통신 품질이 안정되어 있기 때문이다. 즉, 통신 품질의 변동이 심한 무선 통신에 있어서는, 통신 품질의 변화에 따라 적절한 경로를 선택하는 것이 바람직하므로, 일반적으로는 통신 품질의 변화를 반영하는 산술 연산이 수행되는데, 본 실시형태에서는 통신 품질의 변화를 고려할 필요가 없다.
전술한 바와 같이 본 실시형태에서는, 라우팅 테이블(103)이나 루프 검출 테이블(105)의 갱신에는 산술 계산이 불필요하다. 따라서, 온/오프의 스위칭을 수행하는 논리 연산 회로(구체적으로는 예컨대 FPGA(113))에 의해 용이하게 라우팅 엔진(102)을 구현할 수 있다. 따라서, 라우팅 엔진(102)은, MPU(114)에 의한 소프트웨어 제어로 구현되는 경우와 비교하여, 본 실시형태에서는, 보다 고속으로 동작한다.
따라서, 본 실시형태에 따르면, 장애 발생시에서의 경로 전환에 필요한 시간은, 「어느 하나의 노드 장치(100) 내에서 라우팅 테이블(103)이 갱신되는 데 소요되는 시간」이라는 의미에서는, 수 μs에 불과하다.
물론, 유선 애드혹 네트워크 전체적으로 경로가 전환될 때까지는, 도 2b에 예시한 바와 같은 백 트랙이 발생하는 경우도 있으며, 그 경우, 노드 장치 사이에서의 프레임의 반송에 소요되는 시간도 제로가 아니다. 그러나, 그래도 대부분의 경우에는, 1초보다 훨씬 짧은 시간에, 유선 애드혹 네트워크 전체적으로 경로가 전환된다. 즉, 백 트랙의 횟수가 이상하게 많지 않은 한, 유선 애드혹 네트워크 전체적으로 보아도, 1초보다 훨씬 짧은 시간에 경로가 전환된다.
본 실시형태에 따르면, 각 노드 장치(100)는, 루프 검출 테이블(105)을 이용함으로써, 전혀 산술 연산을 수행하지 않고, 게다가 자기 완결적으로 루프를 검출하고, 루프가 발생하는 경로에 대응하는 송신처 포트를 학습할 수 있다. 또한 여기서 「자기 완결적」이라고 하는 것은, 다른 노드 장치와의 사이에서 네트워크 토폴로지에 관한 정보를 교환하지 않는 것을 가리키고 있다.
이와 같이, 각 노드 장치(100)는 자기 완결적으로 동작하고 있음에도 불구하고, 도 11d의 단계 S226 또는 도 11c의 단계 S238에 의해, 유선 애드혹 네트워크 전체적으로는, 도 2b와 같은, 분산 협조에 의한 깊이 우선 탐색이 구현된다. 그리고, 깊이 우선 탐색의 결과로서 새로운 경로가 발견되고, 그 새로운 경로로 전환될 때까지의 시간이, 본 실시형태에서는, 전술한 바와 같이 1초보다 훨씬 짧다.
이와 같이 장애 발생시에도 짧은 시간에 경로가 전환되기 때문에, 본 실시형태에 따른 유선 애드혹 네트워크는, 미션 크리티컬한 네트워크 시스템에도 적합하게 적용할 수 있다. 예컨대, 1초 동안에 수 회 내지 수 십 회 정도의 빈도로 데이터를 출력하는 센서를 이용한 센서 네트워크에 본 실시형태를 적용하는 경우, 1초보다 훨씬 짧은 시간에 경로의 전환이 완료되기 때문에, 장애 발생시의 데이터 소실의 개연성은 낮다.
또한, 본 실시형태의 이점은 그 외에도 있다. 구체적으로는, 본 실시형태에 따르면, 네트워크 관리자가 유선 애드혹 네트워크의 토폴로지를 사전에 설계하거나, 노드 장치(100)에 파라미터 등을 설정하거나 할 필요가 없다는 점이다.
설계나 설정에 소요되는 노력은, 네트워크에 포함되는 노드 장치의 수가 증가함에 따라 심각해진다. 따라서, 예컨대 센서 네트워크 등의, 네트워크 내에 다수 개의 노드 장치가 포함되는 응용 분야에서는, 「설계나 설정을 하지 않고 곧바로 사용할 수 있다」고 하는 특징은, 매우 바람직한 특징이다.
예컨대, STP나 RSTP는, 사전의 설정을 필요로 하지 않고 동작 가능하도록 설계된 프로토콜이기는 하지만, 실용상은, 사전의 네트워크 설계가 필요한 경우가 많다. 구체적으로는, 네트워크 내의 적절한 위치에 있는 적절한 성능의 2개의 노드 장치가, 각각 루트 브릿지와, 루트 브릿지의 백업의 브릿지가 되도록 해 두는 설계가, 실용상은 요구된다. 그 이유는, 어느 정도 네트워크의 규모가 커지면, 장애시에 경로를 재형성하기까지의 집속 시간이 길어져, 모든 노드 장치가 동일한 정보를 공유할 때까지 데이터의 전송은 재개되지 않기 때문에, 결과적으로 네트워크가 다운될 수가 있기 때문이다.
또한, OSPF에서는, 하나의 네트워크를 복수 개의 영역으로 분할하고, 각 영역 내와 영역간의 라우팅으로 나누는 네트워크 설계가 필요하며, 또한 그 네트워크 설계에 따라 라우터를 설정하는 작업이 필요하다.
이러한 네트워크 설계가 필요한 이유의 하나는, 네트워크의 규모가 커짐에 따라, 장애나 네트워크 토폴로지 변경의 발생 확률이 높아져, 빈번하게 SPF 트리의 재계산이 필요해지기 때문이다. 또한, 다른 하나의 이유는, 라우터의 증가와 함께, 데이터베이스를 구축하기 위해 라우터끼리가 교환하는 LSA(Link-State Advertisement)의 수가 증가하기 때문이다.
따라서, OSPF를 이용하는 경우에는, 네트워크를 복수 개의 영역으로 분할하여 멀티 영역을 갖는 네트워크를 구축함으로써, LSA가 미치는 범위를 분할하고, 네트워크의 변화를 영역 내로 억제하여, 퍼포먼스를 향상시키는 것이 널리 수행되고 있다.
다른 한편으로, 본 실시형태에 따르면, 각 테이블은, 공간의 초기 상태로부터 노드 장치(100)에 의해 자동적으로 학습된다. 즉, 사전에 각 테이블에 파라미터를 설정할 필요가 없다.
또한, 도 11a 내지 도 20에 도시한 각종 처리는, 「어느 노드 장치끼리가 접속되어 있는지」 또는 「어느 포트끼리가 접속되어 있는지」와 관계없이 구현 가능한 처리이다. 즉, 본 실시형태에 따르면, 임의의 방법으로 복수 개의 노드 장치를 유선 접속하는 것만으로, 유선 애드혹 네트워크가 구축되고, 분산 협조에 의해 적당히 경로가 선택되어 프레임이 중계되게 된다.
그리고, 전술한 바와 같이 본 실시형태에 따르면, 새로운 경로가 선택될 때까지의 컨버전스(집속)에, 1초보다 훨씬 짧은 시간(예컨대, 수 μs)밖에 소요되지 않는다. 바꾸어 말하면, 본 실시형태에서는, 실용상 문제가 없는 범위로 집속 시간을 억제하기 위해 사전에 네트워크 설계를 수행할 필요성이 없는 것이다. 이와 같이, 본 실시형태에 따르면, 번잡한 설계 및 설정 작업을 수행하지 않고도, 적절한 퍼포먼스와 리던던시화가 구현된다.
또한 본 실시형태에는, 네트워크 자원을 충분히 이용하는 것이 가능하다는 이점도 있다. 이 이점은, STP 및 RSTP와 비교하면 보다 잘 이해된다.
STP 및 RSTP에서는, 물리적으로는 루프 형태로 접속된 네트워크 상을 프레임이 무한하게 루프하는 일이 없도록, 평상시에는, 리던던시화된 링크에 접속된 포트가 블로킹 상태로 설정된다(즉, 블로킹 포트로서 설정된다). 바꾸어 말하면, 평상시에 이용되는 경로 이외에, 평상시에는 이용되지 않고 장애 발생시에만 이용되는 예비의 경로가 존재한다. 따라서, 평상시에는, 네트워크 자원(즉 예비의 경로)이 휴면하고 있다.
그에 반해, 본 실시형태에서는, 유선 애드혹 네트워크 내의 링크는, 평상시용과 장애 발생시용으로 구별되어 있는 것은 아니므로, 네트워크 자원을 휴면시키지 않고, 충분하게 이용하는 것이 가능하다.
또한, 본 발명은 상기 실시형태로 한정되지 않으며, 다양하게 변형할 수 있다. 이하에 그 예를 몇 가지 설명한다.
상기 실시형태에서는, 라우팅 엔진(102)이 FPGA(113)에 의해 구현되지만, ASIC(Application Specific Integrated Circuit)에 의해 라우팅 엔진(102)이 구현될 수도 있다. 또는, MPU(114)가 펌웨어 프로그램을 실행함으로써 라우팅 엔진(102)이 구현될 수도 있다. 펌웨어 프로그램은, 컴퓨터 판독 가능한 임의의 기억 매체에 저장되어 제공될 수도 있다.
상기 실시형태에서는, 각종 데이터 예를 테이블 형식으로 개시했으나, 테이블 형식은, CAM(115)이라는 하드웨어를 이용한 고속의 검색이 구현 가능한, 바람직한 데이터 형식의 일례로서 예시한 것이다. 실시형태에 따라서는, 테이블 형식 이외의 형식으로 각종 데이터를 노드 장치(100)가 유지하고 있을 수도 있다.
또한, 도 6의 테이블 저장부(135)는, 전술한 바와 같이 CAM(115)과 SRAM(116)의 조합에 의해 구현될 수도 있으나, CAM(115)에 의해서만, 또는 SRAM(116)에 의해서만 구현될 수도 있다. 테이블 저장부(135)는, 그 밖의 임의의 1종류 이상의 기억 장치의 조합에 의해서도 구현 가능하다.
또한, 도 3의 애드혹 프레임(400)의 형식은 일례이다. 애드혹 헤더(410)에서의 필드의 순서나 각 필드의 길이는 실시형태에 따라서 임의적이다. 또한, 타입(413)의 구체적인 값, 노드 장치(100)가 FID(414)의 값을 생성하는 방법, TTL(415)의 초기값, FCS(417)의 산출 알고리즘 등도, 실시형태에 따라 임의로 정할 수 있다.
또한, 도 2a에 있어서, 예컨대 센서(204)는, 노드 장치(100e)의 외부에 도시되어 있다. 그러나, 실시형태에 따라서는, 센서를 노드 장치가 내장할 수도 있다. 예컨대, 도 5의 각 하드웨어 이외에, 노드 장치가 내장 센서를 더 가질 수도 있다.
그리고, 도 5의 범용 LAN 포트(106) 대신 내장 센서가, 이더넷 프레임 형식의 데이터(즉, 내장 센서가 감지한 결과의 데이터)를, L2SW부(112)로 출력할 수도 있다. 또한, 내장 센서는, 감지한 결과의 데이터를 MPU(114)로 출력하고, 내장 센서가 감지한 결과의 데이터를 포함하는 이더넷 프레임(420)을 MPU(114)가 생성하여 FPGA(113)로 출력할 수도 있다.
또한, 도 2a에서는, 센서(204)가 범용 LAN 포트(106e)를 통해 노드 장치(100e)에 접속되어 있지만, 센서(204)와 노드 장치(100e)와의 접속 인터페이스는, 범용 LAN 포트(106e) 이외의 임의의 인터페이스일 수도 있다.
또한, 상기 실시형태에서는, 유선 애드혹 네트워크와 외부 네트워크와의 친화성을 고려하여, 브로드캐스트 관리 테이블(104)을 이용한 브로드캐스트 프레임의 동일성의 판정이 수행된다. 그러나, 외부 네트워크와 접속되지 않고 고립되어 운용되는 유선 애드혹 네트워크에 있어서, 각 노드 장치는, 브로드캐스트 관리 테이블(104)을 구비하지 않을 수도 있으며, 도 11b의 단계 S210, S211, S214는 생략할 수 있다.
Claims (9)
- 유선 접속된 제1 노드 장치와 제2 노드 장치를 포함하는 복수 개의 노드 장치를 포함하는 네트워크 내의, 상기 제1 노드 장치에 있어서,
각각이, 상기 복수 개의 노드 장치 중 상기 제1 노드 장치 이외의 다른 노드 장치와 상기 제1 노드 장치를 유선 접속하기 위한 포트인, 복수 개의 포트와,
상기 제1 노드 장치가 제1 프레임을 송신했을 때의 송신처 포트인 제1 포트를 상기 복수 개의 포트 중에서 판별하는 송신처 포트 판별 정보와, 상기 제1 프레임을 일의적으로 식별하기 위한 제1 식별 정보를 대응시킨, 루프 검출 정보를 저장하는 루프 검출 정보 저장 수단과,
상기 복수 개의 노드 장치 각각에 대해, 상기 복수 개의 포트 각각으로부터의 프레임 송신 가능 여부를 나타내는 정보인 상태 정보를 대응시킨, 라우팅 정보를 저장하는 라우팅 정보 저장 수단과,
상기 제2 노드 장치로부터, 제2 프레임을 일의적으로 식별하기 위한 제2 식별 정보를 포함하는 상기 제2 프레임을 수신하는 수신 수단과,
상기 제2 식별 정보가 상기 제1 식별 정보와 일치하는 경우에는, 상기 복수 개의 노드 장치 중 어느 하나로서 상기 제2 프레임의 수신처인 수신처 노드 장치에, 상기 라우팅 정보에 의해 대응지어져 있는 상기 상태 정보를, 상기 제1 포트로부터의 프레임 송신이 불가하다고 나타내도록 갱신하는 라우팅 정보 갱신 수단과,
상기 라우팅 정보에 의해 상기 수신처 노드 장치에 대응지어져 있는 상기 상태 정보에 의거하여, 상기 제2 프레임을 송신하는 것이 가능한 제2 포트를 상기 복수 개의 포트 중에서 선택하고, 상기 제2 포트로부터 상기 제2 프레임을 송신하는 송신 수단을 구비하는 것을 특징으로 하는 제1 노드 장치. - 제1항에 있어서, 상기 복수 개의 포트에 대해 링크 다운 상태인지 여부를 감시하는 링크 다운 감시 수단을 더 구비하고,
상기 제2 프레임을 상기 수신 수단이 수신하면, 상기 라우팅 정보 갱신 수단은, 상기 라우팅 정보에 의해 상기 수신처 노드 장치에 대응지어져 있는 상기 상태 정보를, 상기 링크 다운 감시 수단에 의해 링크 다운 상태로 판정된 포트로부터의 프레임 송신이 불가하다고 나타내도록 갱신하는 것을 특징으로 하는 제1 노드 장치. - 제1항 또는 제2항에 있어서, 상기 제1 노드 장치의 부하를 감시하는 부하 감시 수단을 더 구비하며,
상기 부하가 미리 결정된 기준을 초과한 경우, 상기 복수 개의 노드 장치 중에서 상기 제1 노드 장치에 유선 접속되어 있는 하나 이상의 인접 노드 장치에 대해 상기 제1 노드 장치로의 프레임 송신을 중지하도록 요구하는 제1 포즈 프레임을 상기 부하 감시 수단이 생성하고, 상기 송신 수단이 상기 제1 포즈 프레임을 상기 하나 이상의 인접 노드 장치로 송신하고,
상기 수신 수단이, 프레임 송신을 중지하도록 요구하기 위한 제2 포즈 프레임을 상기 하나 이상의 인접 노드 장치 중 어느 하나로부터 수신한 후에, 상기 제2 노드 장치로부터 상기 제2 프레임을 수신한 경우, 상기 라우팅 정보 갱신 수단은, 상기 라우팅 정보에 의해 상기 수신처 노드 장치에 대응지어져 있는 상기 상태 정보를, 상기 복수 개의 포트 중 상기 제2 포즈 프레임의 송신원인 포즈 요구 노드 장치와 접속되어 있는 제3 포트로부터의 프레임 송신이 불가하다고 나타내도록 갱신하는 것을 특징으로 하는 제1 노드 장치. - 제1항 또는 제2항에 있어서, 상기 송신 수단은, 상기 라우팅 정보에 의해 상기 수신처 노드 장치에 대응지어져 있는 상기 상태 정보에 의거하여, 상기 제2 프레임을 송신하는 것이 가능한 포트가 상기 복수 개의 포트 중에 존재하지 않는다고 판단되면, 상기 제2 프레임을 상기 제2 노드 장치로 반송하는 것을 특징으로 하는 제1 노드 장치.
- 제1항 또는 제2항에 있어서, 상기 수신 수단이 수신한 제1 브로드캐스트 프레임의 송신원을 식별하는 제1 브로드캐스트 송신원 정보와 대응시켜, 상기 제1 브로드캐스트 프레임의 처리 시각을 나타내는 시각 정보를 저장하는 브로드캐스트 관리 정보 저장 수단을 더 구비하며,
상기 수신 수단이 제2 브로드캐스트 프레임을 수신했을 때, 상기 제2 브로드캐스트 프레임의 송신원을 식별하는 제2 브로드캐스트 송신원 정보가 상기 제1 브로드캐스트 송신원 정보와 같고, 또한, 상기 시각 정보와 현재 시각의 차가 정해진 시간 이하이면, 상기 송신 수단은, 상기 제2 브로드캐스트 프레임을 파기하는 것을 특징으로 하는 제1 노드 장치. - 제1항 또는 제2항에 있어서, 상기 제1 식별 정보는,
상기 복수 개의 노드 장치 중 어느 하나로서 상기 제1 프레임의 송신원인 제1 송신원 노드 장치를, 상기 복수 개의 노드 장치 중에서 일의적으로 식별하는 제1 노드 장치 식별 정보와,
상기 제1 송신원 노드 장치가 송신원이 되어 송신하는 복수 개의 프레임 각각을 일의적으로 식별하는 제1 프레임 식별 정보를 포함하고,
상기 제2 식별 정보는,
상기 복수 개의 노드 장치 중 어느 하나로서 상기 제2 프레임의 송신원인 제2 송신원 노드 장치를, 상기 복수 개의 노드 장치 중에서 일의적으로 식별하는 제2 노드 장치 식별 정보와,
상기 제2 송신원 노드 장치가 송신원이 되어 송신하는 복수 개의 프레임 각각을 일의적으로 식별하는 제2 프레임 식별 정보를 포함하는 것을 특징으로 하는 제1 노드 장치. - 제1항 또는 제2항에 있어서, 상기 상태 정보는, 상기 복수 개의 포트 각각에, 송신 가능한 것을 나타내는 정해진 하나 이상의 송신 가능 상태 중 어느 하나, 또는 송신 불가인 것을 나타내는 정해진 하나 이상의 송신 불가 상태 중 어느 하나를 대응시키는 정보이고,
상기 복수 개의 포트 각각이, 상기 정해진 하나 이상의 송신 가능 상태 및 상기 정해진 하나 이상의 송신 불가 상태를 포함하는 정해진 개수의 상태 중 어느 것인지를 나타내는 제1 비트 패턴을 입력으로 하고, 상기 복수 개의 포트 각각을 식별하는 포트 식별 정보를 나타내는 제2 비트 패턴을 출력으로 하는 룩업 테이블에 의해 정의되는 프로그래머블 로직 디바이스를, 상기 송신 수단이 구비하고 있고,
상기 프로그래머블 로직 디바이스에 의해, 상기 송신 수단은, 상기 상태 정보로부터 상기 제2 포트를 결정하는 것을 특징으로 하는 제1 노드 장치. - 유선 접속된 제1 노드 장치와 제2 노드 장치를 포함하는 복수 개의 노드 장치를 포함하는 네트워크 내의, 상기 제1 노드 장치를 실행하는 방법으로서,
상기 복수 개의 노드 장치 중 상기 제1 노드 장치 이외의 다른 노드 장치와 상기 제1 노드 장치를 유선 접속하기 위한, 상기 제1 노드 장치가 구비하는 복수 개의 포트 중 제1 포트로부터, 제1 프레임을 송신하고,
상기 제1 포트를 상기 복수 개의 포트 중에서 판별하는 송신처 포트 판별 정보와, 상기 제1 프레임을 일의적으로 식별하기 위한 제1 식별 정보를 대응시켜, 루프 검출 정보로서 저장하고,
상기 제2 노드 장치로부터, 제2 프레임을 일의적으로 식별하기 위한 제2 식별 정보를 포함하는 상기 제2 프레임을 수신하고,
상기 제2 식별 정보가 상기 제1 식별 정보와 일치하는 경우에는,
상기 복수 개의 노드 장치 각각에 대해, 상기 복수 개의 포트 각각으로부터의 프레임 송신 가능 여부를 나타내는 정보인 상태 정보를 대응시킨, 라우팅 정보를 참조하고,
상기 복수 개의 노드 장치 중 어느 하나로서 상기 제2 프레임의 수신처인 수신처 노드 장치에, 상기 라우팅 정보에 의해 대응지어져 있는 상기 상태 정보를, 상기 제1 포트로부터의 프레임 송신이 불가하다고 나타내도록 갱신하고,
상기 라우팅 정보에 의해 상기 수신처 노드 장치에 대응지어져 있는 상기 상태 정보에 의거하여, 상기 제2 프레임을 송신하는 것이 가능한 제2 포트를 상기 복수 개의 포트 중에서 선택하고,
상기 제2 포트로부터 상기 제2 프레임을 송신하는 것을 특징으로 하는 제1 노드 장치의 실행 방법. - 유선 접속된 제1 노드 장치와 제2 노드 장치를 포함하는 복수 개의 노드 장치를 포함하는 네트워크 내의, 상기 제1 노드 장치를 제어하는 컴퓨터로 하여금,
상기 복수 개의 노드 장치 중 상기 제1 노드 장치 이외의 다른 노드 장치와 상기 제1 노드 장치를 유선 접속하기 위한, 상기 제1 노드 장치가 구비하는 복수 개의 포트 중 제1 포트로부터, 제1 프레임을 송신하고,
상기 제1 포트를 상기 복수 개의 포트 중에서 판별하는 송신처 포트 판별 정보와, 상기 제1 프레임을 일의적으로 식별하기 위한 제1 식별 정보를 대응시켜, 루프 검출 정보로서 기억 장치에 저장하고,
상기 제2 노드 장치로부터, 제2 프레임을 일의적으로 식별하기 위한 제2 식별 정보를 포함하는 상기 제2 프레임을 수신하고,
상기 제2 식별 정보가 상기 제1 식별 정보와 일치하는 경우에는,
상기 복수 개의 노드 장치 각각에 대해, 상기 복수 개의 포트 각각으로부터의 프레임 송신 가능 여부를 나타내는 정보인 상태 정보를 대응시킨, 상기 기억 장치에 저장된 라우팅 정보를 참조하고,
상기 복수 개의 노드 장치 중 어느 하나로서 상기 제2 프레임의 수신처인 수신처 노드 장치에, 상기 라우팅 정보에 의해 대응지어져 있는 상기 상태 정보를, 상기 제1 포트로부터의 프레임 송신이 불가하다고 나타내도록 갱신하고,
상기 라우팅 정보에 의해 상기 수신처 노드 장치에 대응지어져 있는 상기 상태 정보에 의거하여, 상기 제2 프레임을 송신하는 것이 가능한 제2 포트를 상기 복수 개의 포트 중에서 선택하고,
상기 제2 포트로부터 상기 제2 프레임을 송신하는 것을 포함하는 처리를 실행하도록 하는 것을 특징으로 하는 프로그램을 기억한 컴퓨터 판독가능한 기억 매체.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2009/002055 WO2010131288A1 (ja) | 2009-05-11 | 2009-05-11 | ノード装置および通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120040129A KR20120040129A (ko) | 2012-04-26 |
KR101208230B1 true KR101208230B1 (ko) | 2012-12-05 |
Family
ID=43084686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117026238A KR101208230B1 (ko) | 2009-05-11 | 2009-05-11 | 노드 장치, 노드 장치의 실행 방법 및 프로그램을 기억한 컴퓨터 판독가능한 기억 매체 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8672566B2 (ko) |
EP (1) | EP2432164B1 (ko) |
JP (1) | JP5299508B2 (ko) |
KR (1) | KR101208230B1 (ko) |
CN (1) | CN102415054B (ko) |
RU (1) | RU2502203C2 (ko) |
WO (1) | WO2010131288A1 (ko) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9124524B2 (en) * | 2011-06-29 | 2015-09-01 | Broadcom Corporation | System and method for priority based flow control between nodes |
WO2013008860A1 (ja) * | 2011-07-12 | 2013-01-17 | 古河電気工業株式会社 | 通信装置及び通信システム |
WO2013042207A1 (ja) * | 2011-09-20 | 2013-03-28 | 富士通株式会社 | ノード装置および通信方法 |
US8862772B2 (en) * | 2012-10-09 | 2014-10-14 | Cisco Technology, Inc. | System and method for implementing a multilevel data center fabric in a network environment |
US8593948B1 (en) * | 2012-12-04 | 2013-11-26 | Hitachi, Ltd. | Network device and method of controlling network device |
US9369372B1 (en) * | 2013-03-13 | 2016-06-14 | Altera Corporation | Methods for network forwarding database flushing |
US9172646B2 (en) * | 2013-03-15 | 2015-10-27 | International Business Machines Corporation | Dynamic reconfiguration of network devices for outage prediction |
JP6098322B2 (ja) | 2013-04-17 | 2017-03-22 | 富士通株式会社 | パケット転送方法、ノード装置およびプログラム |
US9448548B2 (en) * | 2013-06-14 | 2016-09-20 | Honeywell International Inc. | Synchronizing and displaying fault tolerant Ethernet (FTE) status |
JP6149597B2 (ja) * | 2013-08-14 | 2017-06-21 | 富士通株式会社 | ノード装置、データ中継方法、及び、プログラム |
US20160254980A1 (en) * | 2013-11-25 | 2016-09-01 | Mitsubishi Electric Corporation | Relay device and communication network |
US9413849B2 (en) * | 2013-12-05 | 2016-08-09 | International Business Machines Corporation | Distributing an executable job load file to compute nodes in a parallel computer |
GB2524749B (en) * | 2014-03-31 | 2018-12-19 | Metaswitch Networks Ltd | Spanning tree protocol |
US10268605B1 (en) * | 2014-04-30 | 2019-04-23 | Altera Corporation | Hybrid architecture for signal processing and signal processing accelerator |
TWI530126B (zh) * | 2014-06-04 | 2016-04-11 | 動聯國際股份有限公司 | 位基型網路系統 |
CN105282036A (zh) * | 2014-06-18 | 2016-01-27 | 深圳市中兴微电子技术有限公司 | 一种路由节点、路由交换方法及系统 |
CN105634944B (zh) * | 2014-11-26 | 2018-11-09 | 华为技术有限公司 | 路由环路确定方法及设备 |
RU2599937C1 (ru) * | 2015-03-26 | 2016-10-20 | Общество с ограниченной ответственностью "Научно-производственное предприятие "Цифровые решения" | Способ предотвращения сбоев в локальной компьютерной сети, вызванных возникновением неправильно настроенных узлов |
KR101650900B1 (ko) * | 2015-08-28 | 2016-08-24 | 성균관대학교산학협력단 | 트리 구조 무선 센서 네트워크의 백트래킹 스위칭 장치 및 방법 |
DE112015007035T5 (de) * | 2015-11-26 | 2018-07-19 | Mitsubishi Electric Corporation | Weiterleitungsvorrichtung und kommunikationsnetz |
US10588168B2 (en) * | 2017-05-15 | 2020-03-10 | Apple Inc. | Peer-to-peer transmission pause indication |
US11341123B2 (en) | 2017-06-30 | 2022-05-24 | Nchain Licensing Ag | Probabilistic relay for efficient propagation in a blockchain network |
US20190059041A1 (en) * | 2017-08-17 | 2019-02-21 | Hype Labs Inc. | Systems and methods for wireless communication network loop detection |
CN107528730B (zh) * | 2017-08-28 | 2021-08-27 | 北京格是菁华信息技术有限公司 | 多重冗余方法、多重冗余服务器以及系统 |
CA2982147A1 (en) | 2017-10-12 | 2019-04-12 | Rockport Networks Inc. | Direct interconnect gateway |
RU182177U1 (ru) * | 2018-04-25 | 2018-08-06 | Общество с ограниченной ответственностью "КЬЮТЭК" | Управляемый коммутатор |
JP7010804B2 (ja) * | 2018-11-22 | 2022-01-26 | 株式会社東芝 | 中継装置、ネットワークシステム、中継方法およびプログラム |
SE1950056A1 (en) * | 2019-01-17 | 2020-07-18 | Telia Co Ab | Methods and apparatuses for switching frames in a network topology |
US11647259B2 (en) * | 2020-06-17 | 2023-05-09 | Yieldmo, Inc. | Method for serving interactive digital advertising content within a streaming platform |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004503122A (ja) | 2000-02-08 | 2004-01-29 | ニシャン システムズ, インコーポレイテッド | 異なるネットワークデバイス間でのデータ転送をipネットワークを介して行なう方法および装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11191782A (ja) * | 1997-12-25 | 1999-07-13 | Hitachi Cable Ltd | ブリッジ装置 |
JP3575435B2 (ja) | 2001-03-09 | 2004-10-13 | 日本電気株式会社 | 電話システム及び電話接続監視方法 |
JP2003273964A (ja) | 2002-03-15 | 2003-09-26 | Ntt Docomo Inc | 通信システム、通信制御方法及びルータ |
JP2004320248A (ja) * | 2003-04-14 | 2004-11-11 | Fujitsu Ltd | 通信装置,輻輳回避方法および伝送システム |
JP5037120B2 (ja) | 2003-06-05 | 2012-09-26 | メッシュネットワークス インコーポレイテッド | アドホック無線通信ネットワークにおける最適なルーティング |
US6925064B2 (en) | 2003-09-11 | 2005-08-02 | Motorola, Inc. | Method and apparatus for discovering neighbors within a piconet communication system |
JP2006340165A (ja) | 2005-06-03 | 2006-12-14 | Hitachi Communication Technologies Ltd | 通信経路切替制御システム及びルータ装置 |
WO2007029337A1 (ja) * | 2005-09-09 | 2007-03-15 | Fujitsu Limited | データ損失を低減するアドホック系ネットワーク装置 |
JP4938687B2 (ja) * | 2005-12-09 | 2012-05-23 | パナソニック株式会社 | ネットワークシステムおよび中継装置 |
WO2007108054A1 (ja) * | 2006-03-16 | 2007-09-27 | Fujitsu Limited | 通信ノード及び通信経路選択方法 |
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 |
US7583589B2 (en) * | 2007-03-15 | 2009-09-01 | Cisco Technology, Inc. | Computing repair path information |
US7940776B2 (en) * | 2007-06-13 | 2011-05-10 | Cisco Technology, Inc. | Fast re-routing in distance vector routing protocol networks |
JP2009033557A (ja) * | 2007-07-27 | 2009-02-12 | Fujitsu Telecom Networks Ltd | ネットワークアクセスシステムおよびネットワークアクセス方法 |
US7787480B1 (en) * | 2009-03-04 | 2010-08-31 | Juniper Networks, Inc. | Routing frames in a trill network using service VLAN identifiers |
EP3054633B1 (en) * | 2009-07-27 | 2017-10-25 | Fujitsu Limited | Node apparatus, storage medium, and frame transmitting frame |
JP5408337B2 (ja) * | 2010-03-31 | 2014-02-05 | 富士通株式会社 | ノード装置および迂回経路調査方法 |
-
2009
- 2009-05-11 RU RU2011149464/08A patent/RU2502203C2/ru not_active IP Right Cessation
- 2009-05-11 WO PCT/JP2009/002055 patent/WO2010131288A1/ja active Application Filing
- 2009-05-11 CN CN200980159059.2A patent/CN102415054B/zh active Active
- 2009-05-11 EP EP09844564.6A patent/EP2432164B1/en active Active
- 2009-05-11 JP JP2011513122A patent/JP5299508B2/ja active Active
- 2009-05-11 KR KR1020117026238A patent/KR101208230B1/ko not_active IP Right Cessation
-
2011
- 2011-11-03 US US13/288,462 patent/US8672566B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004503122A (ja) | 2000-02-08 | 2004-01-29 | ニシャン システムズ, インコーポレイテッド | 異なるネットワークデバイス間でのデータ転送をipネットワークを介して行なう方法および装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2432164B1 (en) | 2017-03-29 |
US20120051252A1 (en) | 2012-03-01 |
KR20120040129A (ko) | 2012-04-26 |
WO2010131288A1 (ja) | 2010-11-18 |
RU2502203C2 (ru) | 2013-12-20 |
RU2011149464A (ru) | 2013-06-20 |
EP2432164A1 (en) | 2012-03-21 |
EP2432164A4 (en) | 2014-11-19 |
JP5299508B2 (ja) | 2013-09-25 |
US8672566B2 (en) | 2014-03-18 |
CN102415054A (zh) | 2012-04-11 |
JPWO2010131288A1 (ja) | 2012-11-01 |
CN102415054B (zh) | 2015-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101208230B1 (ko) | 노드 장치, 노드 장치의 실행 방법 및 프로그램을 기억한 컴퓨터 판독가능한 기억 매체 | |
JP6576006B2 (ja) | 分離した制御デバイスおよび転送デバイスを備えるネットワークでの制御デバイス検出 | |
CN101065677B (zh) | 被配置用于根据规定路由协议输出指定了所连接的活动路径的检测到的属性变化的更新消息的路由器 | |
US8578054B2 (en) | Computing disjoint paths for reactive routing mesh networks | |
CN102084689B (zh) | 选择性先验反应式路由 | |
JP5464266B2 (ja) | 通信システムおよびネットワーク管理方法 | |
KR20150056159A (ko) | SDN(Software-defined networking)에서 네트워크 장애 해소를 위한 컨트롤러 및 스위치의 동작 방법과, 이를 위한 컨트롤러 및 스위치 | |
EP2915294A1 (en) | Multiple path availability between walkable clusters | |
CN104378297A (zh) | 一种报文转发方法及设备 | |
CN105340230A (zh) | 虚拟机架拓扑管理 | |
US20140204728A1 (en) | Node equipment and method for communication | |
JP2021526331A (ja) | ネットワークトポロジ生成方法および装置 | |
Sharma et al. | Ant colony based node disjoint local repair in multipath routing in MANET network | |
JP2004159146A (ja) | 通信ネットワーク及びパケット転送装置 | |
CN106464447A (zh) | 误码信息传递方法和网络设备及通信系统 | |
JP2005159670A (ja) | 経路制御システムおよび方法 | |
JP2013198077A (ja) | ネットワーク及びブリッジ | |
JP4507083B2 (ja) | 分散型ネットワークの情報集約方式 | |
US20040170130A1 (en) | Spontaneous topology discovery in a multi-node computer system | |
US9450835B2 (en) | Method for turning off routers in a communications network and router implementing this method | |
Wang et al. | Ant colony optimization and ad-hoc on-demand multipath distance vector (AOMDV) based routing protocol | |
JP2011171804A (ja) | ネットワークシステム及び経路検索方法 | |
Chauhan et al. | A virtual grid-based dynamic routes adjustment (VGDRA) scheme for wireless sensor networks based on sink mobility | |
CN103475588A (zh) | Oam报文的发送处理方法和装置、接收处理方法和装置 | |
Kalakar et al. | Performance Analysis of Black Hole Attack in MANET using OPNET |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20151030 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20161028 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20171027 Year of fee payment: 6 |
|
LAPS | Lapse due to unpaid annual fee |