KR20190126928A - Ngso 위성 네트워크들을 위한 시공간적 소프트웨어 정의 네트워킹 - Google Patents

Ngso 위성 네트워크들을 위한 시공간적 소프트웨어 정의 네트워킹 Download PDF

Info

Publication number
KR20190126928A
KR20190126928A KR1020197031660A KR20197031660A KR20190126928A KR 20190126928 A KR20190126928 A KR 20190126928A KR 1020197031660 A KR1020197031660 A KR 1020197031660A KR 20197031660 A KR20197031660 A KR 20197031660A KR 20190126928 A KR20190126928 A KR 20190126928A
Authority
KR
South Korea
Prior art keywords
network
node
nodes
client data
flows
Prior art date
Application number
KR1020197031660A
Other languages
English (en)
Other versions
KR102261930B1 (ko
Inventor
브라이언 바리트
Original Assignee
룬 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/497,738 external-priority patent/US10581523B2/en
Priority claimed from US15/954,922 external-priority patent/US10374695B2/en
Application filed by 룬 엘엘씨 filed Critical 룬 엘엘씨
Priority to KR1020217016816A priority Critical patent/KR102482168B1/ko
Priority claimed from PCT/US2018/029385 external-priority patent/WO2018200690A1/en
Publication of KR20190126928A publication Critical patent/KR20190126928A/ko
Application granted granted Critical
Publication of KR102261930B1 publication Critical patent/KR102261930B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B7/00Radio transmission systems, i.e. using radiation field
    • H04B7/14Relay systems
    • H04B7/15Active relay systems
    • H04B7/185Space-based or airborne stations; Stations for satellite systems
    • H04B7/1853Satellite systems for providing telephony service to a mobile station, i.e. mobile satellite service
    • H04B7/18558Arrangements for managing communications, i.e. for setting up, maintaining or releasing a call between stations
    • H04B7/1856Arrangements for managing communications, i.e. for setting up, maintaining or releasing a call between stations for call routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B7/00Radio transmission systems, i.e. using radiation field
    • H04B7/14Relay systems
    • H04B7/15Active relay systems
    • H04B7/185Space-based or airborne stations; Stations for satellite systems
    • H04B7/1851Systems using a satellite or space-based relay
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/76Routing in software-defined topologies, e.g. routing between virtual machines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/02Communication route or path selection, e.g. power-based or shortest path routing
    • H04W40/04Communication route or path selection, e.g. power-based or shortest path routing based on wireless node resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/02Communication route or path selection, e.g. power-based or shortest path routing
    • H04W40/18Communication route or path selection, e.g. power-based or shortest path routing based on predicted events
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/02Communication route or path selection, e.g. power-based or shortest path routing
    • H04W40/20Communication route or path selection, e.g. power-based or shortest path routing based on geographic position or location
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/02Communication route or path selection, e.g. power-based or shortest path routing
    • H04W40/22Communication route or path selection, e.g. power-based or shortest path routing using selective relaying for reaching a BTS [Base Transceiver Station] or an access point
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Astronomy & Astrophysics (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Radio Relay Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

이 개시내용은 네트워크 제어기를 포함하는 시스템을 제공한다. 네트워크 제어기는 네트워크의 노드들로부터 정보를 수신하도록 구성되며, 여기서 노드들은 다른 노드에 대해 움직이고 있는 하나의 노드를 포함한다. 네트워크 제어기는 상기 정보에 기초하여 네트워크에서 가용 노드들 및 가능한 링크들을 나타내는 테이블을 생성하고, 상기 테이블에 기초하여 네트워크의 토폴로지를 결정하도록 또한 구성된다. 덧붙여, 네트워크 제어기는 클라이언트 디바이스로부터 클라이언트 데이터 정보를 수신하고, 클라이언트 데이터 정보에 기초하여 토폴로지에 대한 흐름들을 결정하도록 구성된다. 각각의 흐름은 네트워크를 통한 라우팅 경로에 대한 하나 이상의 요건들을 포함한다. 네트워크 제어기는 상기 흐름들에 기초하여 토폴로지에 대한 네트워크 구성을 생성하고, 네트워크의 노드들에게 네트워크 구성을 구현하고 클라이언트 데이터를 송신하기 위한 명령어들을 전송하도록 구성된다.

Description

NGSO 위성 네트워크들을 위한 시공간적 소프트웨어 정의 네트워킹
관련 출원들에 대한 교차참조
본 출원은 "NGSO 위성 네트워크들을 위한 시공간적 소프트웨어 정의 네트워킹(Temporospatial Software-Defined Networking For NGSO Satellite Networks)"이란 명칭으로 2017년 4월 26일자로 출원된 미국 특허 출원 제15/497,738호의 계속출원이고 2017년 5월 26일자로 출원된 미국 임시 출원 제62/511,377호의 출원일을 우선권 주장하는 2018년 4월 17일자로 출원된 미국 특허 출원 제15/954,922호의 계속출원이며, 그것들의 개시내용들은 참조로 본 명세서에 모두 포함된다.
정보는 지향성 점 대 점 네트워크들, 이를테면 항공우주 및 다른 모바일 네트워크들을 통해 송신될 수 있다. 이러한 네트워크들에서, 각각의 노드 쌍의 트랜시버들을 서로를 향해 겨냥하게 함으로써 노드 쌍들 사이에 링크들이 형성될 수 있다. 일부 구현예들에서, 노드들은 비정지 위성 궤도(non-geostationary satellite orbit)(NGSO) 위성들 또는 지구에 대해 움직이고 있는 다른 고고도 플랫폼들(high-altitude platforms)(HAP들)을 포함할 수 있다.
본 개시내용의 양태들은 시스템을 제공한다. 그 시스템은 네트워크의 복수의 노드들로부터 정보를 수신하도록 구성되는 네트워크 제어기를 포함한다. 복수의 노드들은 제2 노드에 대해 움직이고 있는 제1 노드를 포함한다. 네트워크 제어기는 수신된 정보에 기초하여 네트워크에서 가용 노드들 및 가능한 링크들을 나타내는 테이블을 생성하며, 생성된 테이블에 기초하여 주어진 시점에 대한 네트워크의 토폴로지를 결정하며, 하나 이상의 클라이언트 디바이스들로부터 클라이언트 데이터 정보를 수신하고, 클라이언트 데이터 정보에 기초하여 결정된 토폴로지에 대한 복수의 흐름들을 결정하도록 또한 구성된다. 복수의 흐름들 중 각각의 흐름은 네트워크를 통한 라우팅 경로에 대한 하나 이상의 요건들을 포함한다. 네트워크 제어기는 결정된 복수의 흐름들에 기초하여 결정된 토폴로지에 대한 네트워크 구성을 생성하고 주어진 시점에 네트워크의 복수의 노드들에 생성된 네트워크 구성을 구현하고 클라이언트 데이터를 송신하기 위한 명령어들을 전송하도록 추가로 구성된다.
하나의 예시적인 구현예에서, 시스템은 복수의 노드들을 또한 포함한다. 다른 실시예에서, 복수의 노드들은 하나 이상의 지상국들과 하나 이상의 고고도 플랫폼들을 포함한다. 복수의 노드들은 자유공간 광통신(free-space optical communication)을 수행하도록 부가적으로 또는 대안적으로 구성된다. 추가의 실시예에서, 테이블은 예측된 로케이션 또는 예측된 링크 메트릭에 기초하여 주어진 노드 또는 링크가 이용가능한 것으로 예측되는 미래 시간들을 포함하는 스케줄링된 시간들 또는 시간 프레임들을 포함한다.
부가적으로 또는 대안적으로, 클라이언트 데이터 정보는 이력적 클라이언트 데이터 추이들을 포함하고, 네트워크 제어기는 이력적 클라이언트 데이터 추이들에 기초하여 클라이언트 데이터 정보를 예측함으로써 결정된 토폴로지에 대한 복수의 흐름들을 결정하도록 구성된다. 다른 구현예에서, 네트워크 구성은 하나 이상의 라우팅 경로들을 포함한다. 각각의 라우팅 경로는 복수의 흐름들 중 하나의 흐름의 하나 이상의 요건들을 충족시킨다. 이 예에서, 네트워크의 복수의 노드들에 전송된 명령어들은 복수의 노드들로 하여금 하나 이상의 라우팅 경로들에 기초하여 하나 이상의 트랜시버를 조종(steer)하게 한다. 또한 이 예에서, 네트워크의 복수의 노드들에 전송된 명령어들은 대안적으로는 복수의 노드들 중 적어도 하나의 노드로 하여금 하나 이상의 라우팅 경로들에 따라 라우팅 테이블을 업데이트하게 한다.
네트워크 제어기는 일련의 네트워크 구성들 및 일련의 네트워크 구성들에 대한 스케줄을 생성하도록 대안적으로 또한 구성된다. 다른 실시예들에서, 네트워크 제어기는, 제2 시점에 대한 네트워크의 제2 토폴로지에 기초하여 네트워크에서의 노드 쌍들 - 노드 쌍들에서의 노드들 중 각각의 노드는 네트워크 외부의 하나 이상의 클라이언트 디바이스들과 통신할 수 있음 - 사이의 제2 복수의 흐름들을 결정하며, 하나 이상의 클라이언트 디바이스들 중 제1 클라이언트 디바이스에 메시지 - 메시지는 제2 복수의 흐름들과 제2 클라이언트 데이터 정보에 대한 요청을 포함함 - 를 전송하며, 제1 클라이언트 디바이스로부터 제2 클라이언트 데이터 정보를 포함하는 응답을 수신하고, 제2 복수의 흐름들 및 제2 클라이언트 데이터 정보에 기초하여 제2 네트워크 구성을 생성하도록 임의적으로 또한 구성된다. 추가의 실시예에서, 네트워크 제어기 클라이언트 데이터 정보 및 주어진 시점에서의 네트워크의 결정된 토폴로지를 사용하여 클라이언트 데이터를 송신하기 위한 시간이 주어진 시점이라고 결정하도록 또한 구성된다.
본 개시내용의 다른 양태들은 방법을 제공한다. 그 방법은, 네트워크를 위한 네트워크 제어기에 의해, 네트워크의 복수의 노드들로부터 정보를 수신하는 단계를 포함한다. 복수의 노드들은 제2 노드에 대해 움직이고 있는 제1 노드를 포함한다. 그 방법은, 네트워크 제어기에 의해, 수신된 정보에 기초하여 네트워크에서 가용 노드들 및 가능한 링크들을 나타내는 테이블을 생성하는 단계, 네트워크 제어기에 의해, 생성된 테이블에 기초하여 주어진 시점에 대한 네트워크의 토폴로지를 결정하는 단계, 네트워크 제어기에 의해, 하나 이상의 클라이언트 디바이스들로부터 클라이언트 데이터 정보를 수신하는 단계, 및 네트워크 제어기에 의해, 클라이언트 데이터 정보에 기초하여 결정된 토폴로지에 대한 복수의 흐름들을 결정하는 단계를 또한 포함한다. 복수의 흐름들 중 각각의 흐름은 네트워크를 통한 라우팅 경로에 대한 하나 이상의 요건들을 포함한다. 더욱이, 그 방법은 네트워크 제어기에 의해, 결정된 복수의 흐름들에 기초하여 결정된 토폴로지에 대한 네트워크 구성을 생성하는 단계와, 네트워크 제어기에 의해, 네트워크의 복수의 노드들에게 주어진 시점에 생성된 네트워크 구성을 구현하고 클라이언트 데이터를 송신하기 위한 명령어들을 전송하는 단계를 포함한다.
하나의 예시적인 실시예에서, 테이블은 예측된 로케이션 또는 예측된 링크 메트릭에 기초하여 주어진 노드 또는 링크가 이용가능한 것으로 예측되는 미래 시간들을 포함하는 스케줄링된 시간들 또는 시간 프레임들을 포함한다. 다른 실시예에서, 클라이언트 데이터 정보는 이력적 클라이언트 데이터 추이들을 포함하고, 그 방법은, 네트워크 제어기에 의해, 이력적 클라이언트 데이터 추이들에 기초하여 클라이언트 데이터 정보를 예측함으로써 결정된 토폴로지에 대한 복수의 흐름들을 결정하는 단계를 또한 포함한다.
부가적으로 또는 대안적으로, 네트워크 구성은 하나 이상의 라우팅 경로들을 포함한다. 각각의 라우팅 경로, 이 예에서, 복수의 흐름들 중 하나의 흐름의 하나 이상의 요건들을 충족시킨다. 또한 이 예에서, 네트워크의 복수의 노드들에 전송된 명령어들은 임의적으로 복수의 노드들로 하여금 하나 이상의 라우팅 경로들에 기초하여 하나 이상의 트랜시버를 조종하게 한다. 네트워크의 복수의 노드들에 전송된 명령어들은 대안적 또는 추가적으로 복수의 노드들 중 적어도 하나의 노드로 하여금 하나 이상의 라우팅 경로들에 따라 라우팅 테이블을 업데이트하게 한다. 덧붙여서, 네트워크 제어기는 임의적으로 일련의 네트워크 구성들 및 일련의 네트워크 구성들에 대한 스케줄을 생성하도록 또한 구성된다. 추가의 실시예에서, 복수의 노드들은 자유공간 광통신을 수행하도록 구성된다.
도 1은 본 개시내용의 양태들에 따른 예시적인 지향성 점 대 점 네트워크(100)의 그림 도면이다.
도 2는 본 개시내용의 양태들에 따른 도 1에 도시된 네트워크(100)의 부분(200)의 기능도이다.
도 3은 본 개시내용의 양태들에 따른 네트워크 제어기(300)의 기능도이다.
도 4a는 본 개시내용의 양태들에 따른 예시적인 테이블(400A)이다.
도 4b 및 도 4c는 본 개시내용의 양태들에 따른 다른 예시적인 테이블(400B)을 도시한다.
도 5는 본 개시내용의 양태들에 따른 방법의 흐름도(500)이다.
도 6은 본 개시내용의 양태들에 따른 도 1에 도시된 네트워크(100)의 토폴로지(600)의 기능도이다.
도 7은 본 개시내용의 양태들에 따른 도 1에 도시된 네트워크(100)의 다른 토폴로지(700)의 기능도이다.
도 8은 본 개시내용의 양태들에 따른 도 6에 도시된 토폴로지(600)로 구현될 수 있는 라우팅 경로(800)의 기능도이다.
도 9는 본 개시내용의 양태들에 따른 방법의 흐름도(900)이다.
도 10은 본 개시내용의 양태들에 따른 도 1에 도시된 네트워크(100)의 토폴로지(1000)의 기능도이다.
도 11은 본 개시내용의 양태들에 따른 도 1에 도시된 네트워크(100)의 다른 토폴로지(1100)의 기능도이다.
도 12a는 본 개시내용의 양태들에 따른 도 10에 도시된 토폴로지(1000)로 구현될 수 있는 라우팅 경로의 제1 부분(1200A)의 기능도이다.
도 12b는 본 개시내용의 양태들에 따른 도 11에 도시된 토폴로지(1100)로 구현될 수 있는 라우팅 경로의 제2 부분(800B)의 기능도이다.
개요
이 기술은 항공우주 통신 네트워크에서 사용하기 위해 구성되는 시공간적 소프트웨어 정의 네트워킹(Temporospatial Software-Defined Networking)(TS-SDN) 운영 체제에 관한 것이다. 특히, TS-SDN 운영 체제는 비정지 위성 궤도(NGSO) 위성들 또는 다른 고고도 플랫폼들(HAP들)을 노드들로서 포함하는 항공우주 통신 네트워크들에서 사용될 수 있다. TS-SDN 운영 체제는 네트워크 계층 및 스위칭 기능을 제어, 모니터링, 및 재구성하는 서비스들 및 애플리케이션들을 스케줄링하고 구현할 수 있다.
동작 시, TS-SDN 제어기가, 예를 들어, 항공우주 네트워크를 통해, 자유공간 광통신(FSOC)을 위해 구성된 NGSO 위성들과 같은 가용 노드들과, 가용 라우트들, 또는 흐름들의 리스트를 주기적으로 업데이트할 수도 있다. 그 리스트는 가용 노드들 및 가용 흐름들의 스케줄을 포함할 수 있다. 노드들 및 흐름들의 가용성은 가동 노드들의 궤도의 적어도 예측에 기초할 수 있다. 주어진 지역에서부터 모든 다른 가용 지역들로의 항공우주 네트워크를 통한 가용 흐름들은 주어진 지역에서의 소프트웨어 정의 네트워킹(SDN) 가능 라우터로부터 공시될 수 있다. TS-SDN 제어기는 FSOC 단말들의 태스킹을 자동으로 스케줄링하고 스케줄을 FSOC 단말들에 송신하여 그 스케줄에 따라 항공우주 네트워크에 변화들을 동기화시킬 수 있다.
예시적인 시스템들
도 1은 예시적인 지향성 점 대 점 네트워크(100)의 블록도이다. 네트워크(100)는 다양한 육상 및 공중 기반 디바이스들 상에 장착된 노드들로 구성되는 지향성 점 대 점 컴퓨터 네트워크이며, 그것들 중 일부는 시간 경과에 따라 네트워크(100)에서 다른 노드들에 대하여 위치를 변경할 수 있다. 예를 들어, 네트워크(100)는 두 개의 육상 기반 데이터센터들(105a 및 105b)(일반적으로 데이터센터들(105)이라 지칭됨)의 각각에 연관된 노드들, 두 개의 지상국들(107a 및 107b)(일반적으로 지상국들(107)이라 지칭됨)의 각각에 연관된 노드들, 및 네 개의 공수(airborne) 고고도 플랫폼들(HAP들)(110a~110d)(일반적으로 HAP들(110)이라 지칭됨)의 각각에 연관된 노드들을 포함한다. 도시된 바와 같이, HAP(110a)는 소형 비행선(blimp)이며, HAP(110b)는 비행기이며, HAP(110c)는 기구(balloon)이고, HAP(110d)는 위성이다. 일부 실시예들에서, 네트워크(100)에서의 노드들은 FSOC를 수행하도록 장비되어, 네트워크(100)를 FSOC 네트워크로 만들 수 있다. 부가적으로 또는 대안적으로, 네트워크(100)에서의 노드들은 무선 주파수 신호들 또는 자유 공간을 통해 이동할 수 있는 다른 통신 신호를 통해 통신하도록 장비될 수 있다. 노드들의 쌍 사이에서 도시된 화살표들은 그 노드들 사이의 가능한 통신 링크들(120, 122, 130~137)을 나타낸다. 도 1에 도시된 바와 같은 네트워크(100)는 예시적인 것일 뿐이고, 일부 구현예들에서 네트워크(100)는 추가적인 또는 상이한 노드들을 포함할 수 있다. 예를 들어, 일부 구현예들에서, 네트워크(100)는 기구들, 소형 비행선들, 비행기들, 무인 항공기들(unmanned aerial vehicles)(UAV들), 위성들, 또는 임의의 다른 형태의 고고도 플랫폼일 수 있는 추가적인 HAP들을 포함할 수 있다.
일부 구현예들에서, 네트워크(100)는 셀룰러 폰들, 랩톱 컴퓨터들, 데스크톱 컴퓨터들, 착용가능 디바이스들, 또는 태블릿 컴퓨터들과 같은 클라이언트 디바이스들에 대한 액세스 네트워크로서 역할을 할 수 있다. 네트워크(100)는 인터넷과 같은 더 큰 네트워크에 또한 접속할 수 있고, 더 큰 컴퓨터 네트워크 상에 저장되거나 또는 그러한 컴퓨터 네트워크를 통해 제공되는 자원들에 대한 액세스를 클라이언트 디바이스에 제공하도록 구성될 수 있다. 일부 구현예들에서, HAP들(110)은 셀룰러 또는 다른 모바일 네트워크, 이를테면 eNodeB 기지국들 또는 다른 무선 액세스 포인트들, 이를테면 와이맥스 또는 UMTS 액세스 포인트들에 연관된 무선 트랜시버들을 포함할 수 있다. 함께, HAP들(110)은 무선 액세스 네트워크의 전체 또는 부분을 형성할 수 있다. HAP들(110)은 데이터센터들(105)에, 예를 들어, 서드 파티들에 의해 동작되는 백본 네트워크 링크들 또는 트랜싯 네트워크들을 통해 접속될 수 있다. 데이터센터들(105)은 네트워크(100)의 컴포넌트들을 모니터링 또는 제어하는 시스템들 뿐만 아니라 원격 사용자들에 의해 액세스되는 애플리케이션들을 호스팅하는 서버들을 포함할 수 있다. HAP들(110)은 사용자들에게 무선 액세스를 제공할 수 있고, 사용자 요청들을 데이터센터들(105)에 라우팅하고 응답들을 백본 네트워크 링크들을 통해 사용자들에게 반환할 수 있다.
도 2에 도시된 바와 같이, 지상국들(107) 및 HAP들(110)과 같은 각각의 노드는 주어진 HAP(110)와 네트워크에서의 다른 노드 사이에 링크들(130~137)과 같은 하나 이상의 링크들을 생성하도록 구성되는 하나 이상의 트랜시버들을 포함할 수 있다. HAP(110a)를 참조하면, 네트워크(100)의 지상국들(107) 및 HAP들(110)과 같은 노드들의 각각은 하나 이상의 프로세서들(210), 메모리(212), 및 하나 이상의 트랜시버들(220)을 포함할 수 있다. 명료함과 단순화를 위해, 지상국(107a) 및 HAP들(110a, 110d)만이 도 2에 도시되어 있다. 그러나, 네트워크에서의 다른 지상국들 및 HAP들은 지상국(107) 또는 HAPS(110a, 110d)과 동일하거나 또는 유사한 구성을 가질 수 있다.
하나 이상의 프로세서들(210)은 상업적으로 입수가능한 CPU들과 같은 임의의 기존의 프로세서들일 수 있다. 대안적으로, 하나 이상의 프로세서들은 주문형 집적회로(application specific integrated circuit)(ASIC)와 같은 전용 디바이스 또는 필드 프로그램가능 게이트 어레이(field programmable gate array)(FPGA)와 같은 다른 하드웨어 기반 프로세서일 수 있다. 비록 도 2가 하나 이상의 프로세서들(210) 및 메모리(212)를 동일한 블록 내에 있는 것으로서 기능적으로 예시하지만, 하나 이상의 프로세서들(210) 및 메모리(212)는 동일한 물리적 하우징 내에 저장될 수 있거나 또는 저장되지 않을 수 있는 다수의 프로세서들 및 메모리들을 실제로 포함할 수 있다는 것이 이해될 것이다. 따라서, 프로세서 또는 컴퓨터에 대한 참조가 병렬로 동작할 수 있거나 또는 동작하지 않을 수 있는 프로세서들 또는 컴퓨터들 또는 메모리들의 수집에 대한 참조를 포함하는 것으로 이해될 것이다.
메모리(212)는 데이터(214)와, 하나 이상의 프로세서들(210)에 의해 실행될 수 있는 명령어들(216)을 포함하는 하나 이상의 프로세서들(210)에 의해 액세스 가능한 정보를 저장한다. 메모리는 하드 드라이브, 메모리 카드, ROM, RAM, DVD 또는 다른 광학적 디스크들, 뿐만 아니라 다른 쓰기 가능 및 판독 전용 메모리들과 같은 컴퓨터 판독가능 매체를 포함하는 프로세서에 의해 액세스 가능한 정보를 저장할 수 있는 임의의 유형일 수 있다. 시스템 및 방법은 전술한 바의 상이한 조합들을 포함할 수 있어, 데이터(214) 및 명령어들(216)의 상이한 부분들이 상이한 유형들의 매체들 상에 저장된다. HAP(110a)의 메모리(212)와 같은 각각의 노드의 메모리에서, 각각의 노드에서 수신된 신호들이 라우팅되거나, 또는 송신되는 방법을 나타내는 라우팅 테이블이 저장될 수 있다. 예를 들어, 메모리(212)에 저장된 라우팅 테이블은 지상국(107a)으로부터 수신된 신호가 HAP(110d)에 라우팅되어야 함을 나타낼 수 있다.
데이터(214)는 명령어들(216)에 따라 하나 이상의 프로세서들(210)에 의해 취출, 저장 또는 수정될 수 있다. 예를 들면, 비록 시스템 및 방법이 임의의 특정 데이터 구조에 의해 제한되지 않지만, 데이터(214)는 컴퓨터 레지스터들 안에, 관계형 데이터베이스 안에 복수의 상이한 필드들 및 레코드들을 갖는 테이블, XML 문서들 또는 플랫 파일들로서 저장될 수 있다. 데이터(214)는 비제한적으로 이진 값들 또는 유니코드와 같은 임의의 컴퓨터 판독가능 포맷으로 또한 포맷팅될 수 있다. 추가적인 예에 의해서만, 이미지 데이터는 압축 또는 무압축, 무손실(예컨대, BMP) 또는 손실(예컨대, JPEG), 및 비트맵 또는 벡터 기반(예컨대, SVG)인 포맷들, 뿐만 아니라 그래픽을 그리기 위한 컴퓨터 명령어들에 따라 저장되는 화소들의 격자들로 구성되는 비트맵들로서 저장될 수 있다. 데이터(214)는 관련 정보, 이를테면 숫자들, 설명적 텍스트, 사유(proprietary) 코드들, (다른 네트워크 로케이션들을 포함하는) 동일한 메모리 또는 상이한 메모리들의 다른 영역들에 저장된 데이터에 대한 참조들 또는 관련 데이터를 계산하기 위해 함수에 의해 사용되는 정보를 식별하는데 충분한 임의의 정보를 포함할 수 있다.
명령어들(216)은 하나 이상의 프로세서들(210)에 의해 직접적으로(이를테면 머신 코드) 또는 간접적으로(이를테면 스크립트들) 실행될 임의의 명령어 세트일 수 있다. 예를 들어, 명령어들(216)은 컴퓨터 판독가능 매체 상에 컴퓨터 코드로서 저장될 수 있다. 그와 관련하여, "명령어들" 및 "프로그램들"이란 용어들은 본 명세서에서 교환적으로 사용될 수 있다. 명령어들(216)은 하나 이상의 프로세서들(210)에 의해 직접 프로세싱을 위한 객체(object) 코드 포맷으로, 또는 요구 시 해석되거나 또는 미리 컴파일되는 독립적인 소스 코드 모듈들의 콜렉션들 또는 스크립트들을 포함하는 임의의 다른 컴퓨터 언어로 저장될 수 있다. 명령어들(216)의 함수들, 메소드들 및 루틴들은 아래에서 더 상세히 설명된다.
하나 이상의 트랜시버들(220)은 원하는 방향을 향하도록 위하여 제어되거나, 또는 조종될 수 있는 액추에이터들에 장착될 수 있다. HAP(110a)에 연관된 노드와 HAP(110d)에 연관된 노드와 같은 두 개의 노드들 사이의 링크들을 형성하기 위해, 각각의 노드들의 트랜시버들은 데이터가 노드들 사이에서 전송되고 수신될 수 있도록 서로의 방향을 향하도록 제어될 수 있다. 일부 구현예들에서, 각각의 트랜시버에 의해 송신되는 신호들의 전력은 네트워크(100)에서 링크들(130~137)의 형성을 용이하게 하기 위해 각각의 노드들의 하나 이상의 프로세서들에 의해 또한 제어될 수 있다(예를 들면, 도 1 참조). 예를 들어, 비교적 큰 거리에 의해 분리되는 노드들은 두 개의 노드들을 분리하는 거리 상에서 일어나는 신호 대 잡음 비에서의 감소를 보상하기 위해 더 높은 전력에서 동작하도록 구성될 수 있다. 서로 더 가까이 이격되는 노드들은 전력을 절약하기 위해서 상대적으로 더 낮은 전력에서 동작하도록 제어될 수 있다.
일부 구현예들에서, 네트워크(100)는 도 3에 묘사된 네트워크 제어기(300)와 같은 SDN 제어기에 의해 제어되는 SDN일 수 있다. 네트워크 제어기(300)는 네트워크 노드들 중 하나의 네트워크 노드에 또는 예를 들어, 데이터센터들(105) 중 하나의 데이터센터와 같은 분리 플랫폼에 위치될 수 있다. 네트워크(100)의 노드들은 조종 가능한 트랜시버들, 이를테면 하나 이상의 트랜시버들(220)을 사용하여 서로 통신하도록 구성될 수 있다. HAP들(110)이 서로에 대하여 그리고 데이터센터들(105) 및 지상국들(107)에 대하여 시간 경과에 따라 이동함에 따라, 도 1의 블록도에 도시된 링크들의 일부가 실현 불가능하게 될 수 있다. 예를 들어, 지상국(107a)과 HAP(110a) 사이의 링크(130)는 HAP(110a)의 경로가 지상국(107a)의 범위 밖에 있거나 또는 지구가 그것과 지상국(107a) 사이에 위치하는 위치에 HAP(110a)를 있게 할 때, 실현 가능하지 않을 수 있다. 따라서, HAP들(110)의 연속 움직임으로 인해, 네트워크(100)의 토폴로지는 접속을 유지하기 위해 그리고 결정된 네트워크 흐름들을 충족시키기 위해 규칙적(즉, 주기적) 또는 불규칙적 재구성을 요구할 수 있다.
도 3은 네트워크 제어기(300)의 블록도(300)이다. 네트워크 제어기(300)는 네트워크(100)의 토폴로지를 구성하기 위한 제어 메시지들을 네트워크(100)에 전송하도록, 라우팅 정보를 네트워크(100)의 노드들(107, 110)에 전달하도록, 그리고 클라이언트 데이터를 송신하기 위해 네트워크(100)의 토폴로지에 대한 변경들을 스케줄링하도록 구성될 수 있다. 도 3에 도시된 바와 같이, 네트워크 제어기(300)는 하나 이상의 프로세서들(310), 메모리(320), 및 통신 시스템(340)을 포함할 수 있다. 하나 이상의 프로세서들(310)은 위에서 설명된 하나 이상의 프로세서들(210)과 유사할 수 있다.
메모리(320)는 프로세서(310)에 의해 실행될 수 있는 명령어들(324)과 데이터(322)을 포함하는 하나 이상의 프로세서들(310)에 의해 액세스 가능한 정보를 저장할 수 있다. 메모리(320), 데이터(322), 및 명령어들(324)은 위에서 설명된 메모리(212), 데이터(214), 및 명령어들(216)과 유사하게 구성될 수 있다. 데이터(322)는 도 4a, 도 4b, 및 도 4c에서의 테이블들(400A 및 400B)과 같은 주어진 시간 또는 시간 프레임에 네트워크(100)에서의 가용 노드들 및 가능한 링크들의 모두를 나타내는 테이블을 포함할 수 있다. 테이블은 네트워크(100)에서의 모든 노드 및 링크를 위한 열과 시간 또는 시간 프레임을 위한 행을 가질 수 있다. 일부 경우들에서, 열들 및 행들은 뒤바뀔 수 있다. 테이블은, 각각의 노드 및 각각의 링크에 대해, 노드 또는 링크가 이용 가능한 스케줄링된 시간들 또는 시간 프레임들을 또한 저장할 수 있다. 대안적으로, 그래프 또는 다른 형태의 정보 조직이 사용될 수 있다. 명령어들(324)은 토폴로지 및 라우팅 관리자 모듈(326), 토폴로지 결정 모듈(328), 흐름 결정 모듈(330), 솔버 모듈(332), 비행 제어 모듈(334), 및 스케줄링 모듈(336)을 포함할 수 있다.
도 3으로 되돌아가면, 통신 시스템(340)은 네트워크(100)의 노드들(107, 110) 뿐만 아니라 하나 이상의 클라이언트 디바이스들(350)과 통신하도록 구성될 수 있다. 일부 실시예들에서, 통신 시스템(340)은 노드들(107, 110)의 각각에서 CDPI 에이전트와 통신하도록 구성되는 제어 대 데이터 평면 인터페이스(Control to Data-Plane Interface)(CDPI) 드라이버를 포함한다. 덧붙여서, 네트워크 제어기(300)의 통신 시스템(340)은 하나 이상의 SDN 애플리케이션들에 연관되는 각각의 클라이언트 디바이스(350)에서 NBI 드라이버와 통신하도록 구성되는 하나 이상의 북향 인터페이스(northbound interface)(NBI) 에이전트들을 포함할 수 있다. 통신 시스템(340)은 네트워크(100)에서의 노드들(107, 110) 및 하나 이상의 클라이언트 디바이스들(350)에 또는 그것들로부터 무선 주파수들, 광학적 주파수들, 광섬유, 케이블, 또는 다른 통신 수단을 통해 신호들을 송신하고 수신하도록 임의적으로 또는 대안적으로 구성될 수 있다.
각각의 클라이언트 디바이스(350)는 하나 이상의 프로세서들(210 및 310), 메모리들(212 및 320), 데이터(214 및 322), 및 명령어들(216 및 324)에 대하여 위에서 설명된 것들과 유사한 하나 이상의 프로세서들(360), 메모리(370), 데이터(372), 및 명령어들(374)을 갖는 개인용 컴퓨팅 디바이스들 또는 서버일 수 있다. 개인용 컴퓨팅 디바이스들은 중앙 프로세싱 유닛(CPU), 데이터 및 명령어들을 저장하는 메모리(예컨대, RAM 그리고 내부 하드 드라이브들), 전자 디스플레이(예컨대, 스크린을 갖는 모니터, 소형 LCD 터치 스크린, 프로젝터, 텔레비전, 또는 정보를 디스플레이하도록 동작 가능한 임의의 다른 전기 디바이스), 사용자 입력(예컨대, 마우스, 키보드, 터치 스크린 또는 마이크로폰), 카메라, 스피커들, 네트워크 인터페이스 디바이스, 및 이들 엘리먼트들을 서로 접속시키기 위해 사용되는 컴포넌트들의 모두와 같이 개인용 컴퓨터와 접속하는데 통상적으로 사용되는 컴포넌트들의 모두를 갖는 개인용 컴퓨터를 포함할 수 있다. 개인용 컴퓨팅 디바이스들은 PDA들, 셀룰러 폰들 등과 같은 모바일 디바이스들을 또한 포함할 수 있다. 사실상, 클라이언트 디바이스들(350)은 인간들과 범용 컴퓨터들을 포함하는 다른 컴퓨터들, 국부적 저장 능력이 없는 네트워크 컴퓨터들, 및 텔레비전들을 위한 셋톱 박스들에 그리고 그러한 기기들로부터 명령어들을 프로세싱하고 데이터를 송신할 수 있는 임의의 디바이스를 포함할 수 있다. 일부 실시예들에서, 클라이언트 디바이스들은 하나 이상의 SDN 애플리케이션들에 연관될 수 있고 하나 이상의 NBI 드라이버들을 가질 수 있다.
도 3의 명령어들의 모듈들(324)을 보면, 토폴로지 및 라우팅 관리자 모듈(326)은 하나 이상의 프로세서들(310)로 하여금 네트워크 제어기(300)와 네트워크(100) 사이를 인터페이싱하게 할 수 있다. 토폴로지 및 라우팅 관리자 모듈(326)을 사용하면, 하나 이상의 프로세서들(310)은 네트워크(100) 내의 노드들의 각각으로부터 정보를 수신할 수 있다. 예를 들어, 일부 구현예들에서, 토폴로지 및 라우팅 관리자 모듈(326)은 하나 이상의 프로세서들(310)로 하여금 각각의 노드의 현재 위치, 각각의 노드의 예측된 경로, 각각의 노드에 연관된 현재 링크들, 및 각각의 노드에 의해 저장된 라우팅 정보에 대응하는 네트워크(100)에서의 각각의 노드(107, 110)로부터 정보를 수신하게 할 수 있다. 각각의 노드로부터 수신된 정보는 날씨 상태, 난기류, 방사, 또는 노드들 사이의 FSOC에 영향을 미칠 수 있는 다른 조건들에 관한 다른 보고들을 또한 포함할 수 있다. 각각의 노드는 하나 이상의 프로세서들(310)에 노드들 사이의 예기치 않은 장애물들, 노드에서의 난기류, 또는 하나 이상의 트랜시버들의 기능상실(failure)로 인해 발생할 수 있는 임의의 실패한 링크들에 대응하는 정보를 또한 전송할 수 있다.
토폴로지 및 라우팅 관리자 모듈(326)은 하나 이상의 프로세서들(310)로 하여금 예측된 링크 메트릭들 및 조건들을 또한 수신하게 할 수 있다. 예를 들어, 예측된 링크 메트릭이 노드들(107, 110)로부터 수신된 정보에 기초하여 현재 또는 미래에 형성될 수 있는 가상적인 링크에 대한 네트워크 성능 메트릭의 예측된 값을 포함할 수 있다. 네트워크 성능 메트릭들은 대역폭 용량, 레이턴시, 또는 링크 수명 지속기간을 포함할 수 있고, 네트워크(100)에서의 예측된 노드들(107, 110)의 상대 운동 또는 궤도에 기초할 수 있다. 링크 수명 지속기간은 링크가 네트워크(100)에서 실현 가능한 기간을 나타낼 수 있다. 노드 로케이션들에서의 일기 예보들, 예측된 노드 로케이션들 또는 예측된 링크들은 하나 이상의 프로세서들(310)에 의해 노드들(107, 110)로부터 또는 임의적으로는 원격 시스템으로부터 또한 수신될 수 있다.
토폴로지 및 라우팅 관리자 모듈(326)을 사용하면, 하나 이상의 프로세서들(310)은 네트워크(100)로부터 수신된 정보를 메모리(320) 안에 저장할 수 있다. 예를 들면, 도 4a, 도 4b, 및 도 4c에 묘사된 테이블들(400A 및 400B)은 네트워크(100)에서의 가용 노드들 및 가능한 링크들의 모두를 나타내고, 테이블에서의 특정 노드 또는 링크에 관련 있는 정보로 업데이트되거나 또는 주석처리(annotation)될 수 있다. 테이블(400A 또는 400B)의 주석들은 네트워크(100)에서 각각의 노드의 가용성, 각각의 노드의 현재 및 미래 로케이션들, 현재 및 미래의 예상되는 날씨 상태, 뿐만 아니라 노드들 중 각각의 노드에서의 가용 스토리지의 현재 양과 네트워크 안의 노드들의 각각에서의 가용 스토리지의 미래의(추정된) 양을 표시할 수 있다. 덧붙여서, 테이블의 주석들은 특정 링크들의 현재 및 미래 가용성 뿐만 아니라 이러한 링크들에 대한 현재 및 미래의 예상된 대역폭을 표시할 수 있다. 실패한 링크들 및 예보된 조건들은 테이블(400A 또는 400B)에 또한 노트되고 저장될 수 있다.
토폴로지 결정 모듈(328)은 하나 이상의 프로세서들(310)로 하여금 네트워크(100)의 현재 또는 미래 토폴로지를 결정하게 할 수 있다. 네트워크(100)의 현재 토폴로지의 결정은 토폴로지 및 라우팅 관리자 모듈(326)을 사용하여 하나 이상의 프로세서들에 의해 수신되고 저장된 정보에 기초하여 이루어질 수 있다. 예를 들어, 토폴로지 결정 모듈(328)은 하나 이상의 프로세서들(310)로 하여금 현재 위치 각각의 노드(107, 110)에 관련한 정보, 각각의 쌍의 노드들 사이에 형성된 링크들(130~137), 및 네트워크(100) 내에 존재할 수 있는 임의의 실패한 링크들을 집성하게 할 수 있다. 하나 이상의 프로세서들(310)은 토폴로지 및 라우팅 관리자 모듈(326)의 사용을 통해 이 정보를 수신할 수 있거나, 또는 메모리(320)로부터 이 정보를 취출할 수 있다.
추가적인 정보는 네트워크(100)의 현재 토폴로지를 결정하기 위해 토폴로지 결정 모듈(328)을 사용하여 하나 이상의 프로세서들(310)에 의해 또한 사용될 수 있다. 토폴로지 및 라우팅 관리자 모듈(326)을 사용하여 하나 이상의 프로세서들(310)에 의해 수신된 예측된 링크 메트릭들은 현재 토폴로지에서 가용 링크들의 대역폭, 서비스 품질, 및 다른 특성들을 결정하는데 또한 사용될 수 있다. 일부 구현예들에서, 토폴로지 결정 모듈(328)을 사용하여, 하나 이상의 프로세서들(310)은 특정 시간에 또는 특정 시간 프레임에 걸쳐 현재 시간에 또는 현재 시간 근처에서 HAP들(110)과 같은 공수 네트워크 노드들의 비행 경로들에 대응하는 비행 제어 모듈(334)의 사용을 통해 정보를 또한 수신할 수 있고, 현재 토폴로지의 결정은 수신된 비행 정보에 또한 기초하여 이루어질 수 있다.
네트워크(100)의 미래 토폴로지를 결정하기 위해, 하나 이상의 프로세서들(310)은 토폴로지 결정 모듈(328)을 사용하여 미래 시간에 관련된 로케이션 정보, 예측된 링크 조건들, 비행 정보, 및/또는 일기 예보들을 집성할 수 있다. 하나 이상의 프로세서들(310)은 미래 시간에서의 가용 노드들 및 링크들에 관한 테이블(400A 또는 400B)에 또는 메모리(320) 안의 다른 곳에 저장된 정보, 로케이션 정보, 예측된 링크 조건들, 비행 정보, 및/또는 일기 예보들에 액세스할 수 있다. 미래 시간에 대한 정보는 노드들이 있는 것으로 예측될 곳과 노드들 및 링크들의 어떤 가용성이 미래 시간에 있는 것으로 예측될 것인지를 결정하기 위해 하나 이상의 프로세서들(310)에 의해 사용될 수 있다.
토폴로지 결정 모듈(328)은 이를테면 네트워크(100)에서의 가용 노드들 및 가능한 링크들의 모두와 각각의 노드 또는 링크에 연관된 스케줄링된 시간들 또는 시간 프레임들을 나타내는 테이블(400A 또는 400B)을 업데이트함으로써 하나 이상의 프로세서들(310)로 하여금 현재 또는 미래 토폴로지 또는 다른 토폴로지 정보를 메모리(320)에 저장하게 할 수 있다.
흐름 결정 모듈(330)은 하나 이상의 프로세서들(310)로 하여금 주어진 시간 또는 시간 프레임에 네트워크(100)에서 결정되는 흐름들의 모두를 결정하게 할 수 있다. 주어진 흐름이 네트워크(100)를 통해 라우팅 경로에 대한 하나 이상의 요건들일 수 있다. 예를 들어, 각각의 흐름은 시작 스테이션, 끝 스테이션, 시간 프레임, 최소 대역폭, 또는 송신을 위한 다른 요건을 포함할 수 있다. 하나 이상의 프로세서들(310)은 토폴로지 결정 모듈(328)를 사용하여 결정된 토폴로지 정보 및/또는 하나 이상의 클라이언트 디바이스들(350)의 클라이언트 데이터의 특성들에 관한 정보에 기초하여 흐름들을 결정할 수 있다. 클라이언트 데이터 정보는 하나 이상의 클라이언트 디바이스들(350) 또는 원격 시스템으로부터 아래에서 설명되는 바와 같이 스케줄링 모듈(336)을 사용하여 하나 이상의 프로세서들(310)에 의해 수신될 수 있다. 클라이언트 데이터 정보는 클라이언트 데이터에 대한 소스들 및 목적지들, 송신될 클라이언트 데이터의 양, 및/또는 클라이언트 데이터의 송신을 위한 타이밍을 포함할 수 있다.
흐름의 최소 대역폭은 가용 시스템 리소스들 및 링크 능력들이 주어지면 하나 이상의 프로세서들(310)에 의해 사전설정 또는 미리 결정될 수 있거나 또는 대안적으로, 클라이언트 데이터에 포함된 요건들에 기초하여 결정될 수 있다. 더 큰 대역폭들은 데이터의 더 큰 양들을 전송하는 흐름들을 위해 설정될 수 있다. 하나 이상의 프로세서들(310)은 요청된 시간에 클라이언트 데이터의 양을 송신할 수 있는 네트워크를 통해 시작 스테이션과 목적지 스테이션 사이의 흐름을 결정할 수 있다. 일부 실시예들에서, 하나 이상의 프로세서들(310)은 각각의 결정된 흐름에 대한 서비스의 클래스 또는 서비스 품질과 같은 결정된 흐름들에 관련된 다른 정보를 또한 결정할 수 있다. 다른 정보는 클라이언트 디바이스로부터 수신된 요건들에 기초할 수 있다.
일부 구현예들에서, 흐름 결정 모듈(330)은 하나 이상의 프로세서들(310)로 하여금 네트워크(100)에서의 각각의 노드 쌍 사이에 요구된 대역폭의 총량을 결정하기 위해 하나 이상의 클라이언트 디바이스들(350)로부터 클라이언트 데이터를 집성하게 할 수 있다. 집성된 클라이언트 데이터는, 예를 들어, 메모리(320)에 저장될 수 있다. 더욱이, 클라이언트 데이터는 입상(granular) 레벨로 집성될 수 있다. 예를 들어, 노드들의 각각의 쌍에 대한 네트워크 데이터는 서비스의 클래스, 서비스 품질, 또는 임의의 다른 관련 네트워크 트래픽 판별기에 의해 집성될 수 있다. 흐름들은 임의의 관련 있는 네트워크 트래픽 판별기에 추가로 기초하여 결정될 수 있다.
다른 경우들에서, 이력적 클라이언트 데이터 추이들은 미래의 시점의 클라이언트 데이터량들, 소스들, 및 목적지들을 예측하는데 사용될 수 있다. 흐름 결정 모듈(330)은 하나 이상의 프로세서들(310)로 하여금 미래의 시점에 클라이언트 디바이스에 직접적으로 접속 가능한 모든 노드 사이에서 복수의 가용 흐름들을 결정하게 할 수 있다. 직접적으로 접속 가능한 노드들, 이를테면 지상국들(107)은 네트워크(100)의 사용 없이 클라이언트 디바이스와 통신할 수 있을 수 있다. 각각의 노드 쌍 사이의 예측된 클라이언트 데이터량들은 각각의 노드 쌍 사이의 대역폭 요건들을 결정하는데 사용될 수 있다.
대안적으로, 클라이언트 데이터 정보의 부재 시, 하나 이상의 프로세서들(310)은 현재 또는 미래 시간에 클라이언트 디바이스에 직접적으로 접속 가능한 모든 노드 사이의 복수의 가용 흐름들을 결정할 수 있다. 복수의 가용 흐름들의 결정은 현재 또는 미래 토폴로지에 기초할 수 있다. 덧붙여서, 그 결정은 최소 시스템 요건들에 기초할 수 있다.
흐름 결정 모듈(330)은 하나 이상의 프로세서들(310)로 하여금 메모리(320)에 결정된 흐름들을 저장하게 할 수 있다. 일부 예들에서, 하나 이상의 프로세서들(310)은 흐름들로 테이블에 주석처리할 수 있다.
솔버 모듈(332)은 하나 이상의 프로세서들(310)로 하여금 메모리에 저장된 테이블에 기초하여 네트워크 구성을 생성하게 할 수 있다. 네트워크 구성은 모든 결정된 네트워크 흐름들을 충족시킬 수 있는 실현 가능한 네트워크 토폴로지를 나타낼 수 있고 실현 가능한 네트워크 토폴로지에서 사용 중일 노드들 및 링크들의 리스트와 노드들 및 링크들이 사용 중일 때의 스케줄을 포함할 수 있다. 네트워크 구성들의 스케줄은 모든 결정된 네트워크 흐름들을 충족시킬 수 있는 실현 가능한 일련의 네트워크 토폴로지들을 나타낼 수 있다. 실현 가능한 일련의 네트워크 토폴로지들은 노드들 및 링크들의 리스트와 노드들 및 링크들이 네트워크 구성들의 스케줄에서의 각각의 네트워크 구성을 위해 사용중일 스케줄을 포함할 수 있다. 일부 예들에서, 실현 가능한 일련의 네트워크 토폴로지들은 데이터가 가용 스토리지를 갖는 노드에 저장될 수 있는 네트워크 토폴로지와, 노드가 다른 노드와의 새로운 접속 또는 링크를 형성하고 데이터를 새로 확립된 링크를 통해 송신하는 다음의 네트워크 토폴로지를 포함한다.
네트워크 구성(들)은 테이블에서의 주어진 시점에 대한 토폴로지에 그리고 주어진 시점에서의 토폴로지의 네트워크 성능 메트릭들에 기초하여 하나 이상의 프로세서들(310)에 의해 생성될 수 있다. 예를 들어, 링크 대역폭, 링크 레이턴시, 흐름 대역폭, 흐름 우선순위, 링크 스위칭 시간(즉, 네트워크(100)에서 새로운 토폴로지를 구현하는데 요구된 시간), 링크 지속기간, 및/또는 토폴로지 지속기간과 같은 다양한 네트워크 성능 메트릭들이 주어진 시점에 토폴로지에 대한 가중된 제약조건들로서 모델링될 수 있다. 일부 실시예들에서, 하나 이상의 네트워크 성능 메트릭들은 메모리에 저장된 테이블에 포함되지 않을 수 있지만, 다른 모듈, 다른 노드, 또는 원격 시스템으로부터 수신될 수 있다.
하나 이상의 프로세서들(310)은 네트워크 구성에 의해 나타내어지는 토폴로지를 통해 결정된 흐름들에 대한 라우팅 경로들을 또한 컴퓨팅할 수 있다. 주어진 라우팅 경로가 결정된 흐름 요건들을 충족시키는 주어진 흐름을 구현하기 위한 하나의 길일 수 있고, 네트워크에서의 특정 노드들 및 링크들, 또는 일련의 노드들 사이의 홉(hop)들의 리스트를 포함할 수 있다. 일부 예들에서, 주어진 라우팅 경로는 네트워크를 통해 송신될 데이터의 양에 관한 결정된 흐름 요건을 충족시키는 가용 스토리지를 갖는 노드를 포함할 수 있다. 주어진 라우팅 경로를 따라가는 데이터는 다음의 홉으로 이동하기 전의 기간 동안 노드에 저장될 수 있다.
덧붙여서, 네트워크의 이전의 상태 및 이전의 네트워크 토폴로지에 대응하는 정보는 네트워크 구성 또는 네트워크 구성들의 스케줄을 결정하는데 또한 사용될 수 있다. 예를 들어, 하나 이상의 프로세서들(310)은 다수의 변화들을 만들기 위해 네트워크에 필요한 네트워크 구성 및 시간의 양을 구현하기 위해 네트워크에 필요한 이전의 네트워크 토폴로지로부터의 적어도 부분적으로는 변화들의 수에 기초하여 네트워크 구성을 생성할 수 있다. 하나 이상의 프로세서들(310)은 테이블(400A 또는 400B)과 같은 라우팅 테이블들의 정보를 이용하여 변경들 사이의 시간의 양과 네트워크 구성들의 스케줄에서의 네트워크 구성들의 네트워크 토폴로지들 사이의 다수의 변경들에 적어도 부분적으로 기초하여 네트워크 구성들의 스케줄을 다르게 생성할 수 있다. 예를 들어, 변경들은 새로운 방향을 향하도록 트랜시버를 조종하는 것 또는 노드의 메모리에 저장된 라우팅 테이블을 변경하는 것을 포함할 수 있다. 트랜시버를 조종하는 것은 노드의 메모리에 저장된 라우팅 테이블을 변경하는 것보다 더 많이 걸릴 수 있다. 생성된 네트워크 구성(들)은 변화들의 수가 임계 수 미만이며 그리고/또는 시간의 양이 시간의 임계 양 미만인 것을 요구할 수 있다.
네트워크 구성들의 스케줄에서의 후속 네트워크 구성들의 일부 쌍들의 경우, 더 이른 네트워크 구성과 나중의 네트워크 구성 사이의 차이는 단일 노드에서의 라우팅 변경과 같이 트랜시버들의 방향을 변경시키는 것을 수반하지 않을 수 있는 단일의 변경일 수 있다.
하나 이상의 프로세서들(310)이 솔버 모듈(332)를 사용하여 네트워크 구성 및 라우팅 경로들을 생성한 후, 하나 이상의 프로세서들(310)은 구현예 명령어들을 노드들로 전송하여 노드들로 하여금 (예컨대, 그것들의 각각의 트랜시버들을 조종하며, 그것들의 각각의 송신 전력 레벨들을 조정하며, 그것들의 송신 및 수신 주파수 대역들을 설정하는 등에 의해) 생성된 네트워크 구성(들)에 포함되는 링크들을 형성하게 하고 결정된 흐름들에 대한 컴퓨팅된 라우팅 경로들에 따라 각각의 노드에서 메모리에 저장된 라우팅 테이블들을 업데이트하게 함으로써 생성된 네트워크 구성(들)에 의해 나타내어진 토폴로지를 구현하도록 토폴로지 및 라우팅 관리자 모듈(326)에 따라 네트워크(100)의 노드들을 제어할 수 있다. 일부 포워딩 테이블들은 네트워크 구성들의 스케줄에 기초하여 변화들의 스케줄로 업데이트될 수 있고 다음의 홉 전에 노드에 데이터를 저장할 것을 또한 명령할 수 있다. 일부 실시예들에서, 위에서 어느 정도 논의된 바와 같이, 일련의 네트워크 구성들은 솔버 모듈(332)을 사용하여 생성될 수 있다. 일련의 네트워크 구성들에 대한 스케줄은 토폴로지 및 라우팅 관리자 모듈(326)의 사용을 통해 네트워크(100)의 노드들에 송신될 수 있는 솔버 모듈(332)을 사용하여 하나 이상의 프로세서들에 의해 또한 결정될 수 있다. 일련의 네트워크 구성들에서의 후속 네트워크 구성들의 일부 쌍들의 경우, 더 이른 네트워크 구성과 나중의 네트워크 구성 사이의 차이는 단일 노드에서의 라우팅 변경과 같이, 트랜시버들의 방향을 변경시키는 것을 수반하지 않을 수 있는 단일 변경일 수 있다. 각각의 노드에서의 라우팅 테이블들은 일련의 네트워크 구성들에 대한 스케줄에 기초하여 변경들의 스케줄로 또한 업데이트될 수 있다.
비행 제어 모듈(334)은 하나 이상의 프로세서들(310)로 하여금, 공수 노드들의 비행 경로들에 관하여, HAP들(110)와 같이, 공수 노드들에 대한 비행 명령들을 생성하게 할 수 있다. 예를 들어, 하나 이상의 프로세서들(310)은 결정된 네트워크 흐름들의 모두를 만족시킬 수 있는 네트워크 토폴로지를 나타내는 솔버 모듈(332)을 사용하여 네트워크 구성을 결정할 수 없을 수 있다. 하나 이상의 프로세서들은 솔버 모듈(332)을 사용하여 이 기능상실에 대한 이유는 네트워크(100)에서의 공수 네트워크 노드들 중 하나 이상의 공수 네트워크 노드들이 링크를 형성하는 것이 가능할 다른 네트워크 노드들로부터 꽤 멀리 이동하였다는 것으로 결정할 수 있다. 응답하여, 비행 제어 모듈(334)을 사용하여, 하나 이상의 프로세서(310)는 추가적인 링크들이 형성될 수 있도록 공수 노드들이 그것들의 비행 경로들을 바꾸는 것을 가능하게 하는 네트워크(100)의 공수 노드들에 대한 비행 명령들을 생성하고 송신할 수 있다. 예를 들어, 비행 명령들은 공수 노드들이 서로 더 가깝게 이동하게 하거나 또는 장애물들을 피하게 할 수 있다. 노드들이 비행 제어 모듈(334)을 사용하여 하나 이상의 프로세서들에 의해 생성된 비행 명령들에 따라 재위치된 후, 업데이트된 테이블은 네트워크 노드들의 새로운 로케이션들에 기초하여 토폴로지 및 라우팅 관리자 모듈(326) 또는 토폴로지 결정 모듈(328)을 사용하여 생성될 수 있다. 그 다음에, 업데이트된 테이블은 네트워크 구성을 결정하기 위해 솔버 모듈(332)을 사용하여 하나 이상의 프로세서들(310)에 의해 프로세싱될 수 있다.
스케줄링 모듈(336)은 네트워크 제어기(300)에서의 하나 이상의 프로세서들(310)로 하여금 하나 이상의 클라이언트 디바이스들(350)과 인터페이싱하게 할 수 있다. 스케줄링 모듈(336)을 사용하여, 하나 이상의 프로세서들(310)은, 예를 들어, 클라이언트 데이터에 대한 소스들 및 목적지들과 같은 클라이언트 디바이스(350)로부터 네트워크(100)를 통해 송신될 클라이언트 데이터 정보를 수신할 수 있다. 클라이언트 디바이스(350)로부터 수신된 다른 정보는 송신될 클라이언트 데이터의 양과 송신을 위한 타이밍과 같이, 클라이언트 수요에 관련된 데이터를 포함할 수 있다. 그 정보는 메모리(320)에 저장되며 그리고/또는 네트워크(100)를 통해 결정된 흐름들을 결정하기 위해 흐름 결정 모듈(330)에 따라 사용될 수 있다.
결정된 흐름들이 흐름 결정 모듈(330)을 사용하고 결정되고 네트워크 구성 또는 네트워크 구성들의 스케줄이 위에서 설명된 바와 같은 솔버 모듈(332)을 사용하여 생성된 후, 하나 이상의 프로세서들은 테이블 및 생성된 네트워크 구성 또는 스케줄에 기초하여 네트워크(100)를 통해 클라이언트 데이터를 송신하기 위한 라우팅 명령어들을 생성할 수 있다. 이들 라우팅 명령어들은 클라이언트 데이터의 소스 로케이션, 클라이언트 데이터의 목적지 로케이션, 및 클라이언트 데이터의 송신에 대한 타이밍을 포함할 수 있다. 일부 실시예들에서, 라우팅 명령어들은 다음의 노드에 송신될 이전의 노드로부터의 데이터를 임시로 저장하기 위한 노드에 대한 저장 명령어들을 포함할 수 있다. 라우팅 명령어들은 클라이언트 데이터를 전송하는 클라이언트 디바이스(350)와 직접적으로 접속 가능한 네트워크의 노드에 저장될 수 있는 스케줄을 포함할 수 있다. 하나 이상의 프로세서들(310)은 그 다음에 클라이언트 디바이스(350)와 직접적으로 접속 가능한 노드에 라우팅 명령어들을 전송하여 그 노드로 하여금 스케줄에 따라 결정된 흐름을 통해 클라이언트 데이터를 수신하고 그러한 클라이언트 데이터의 송신을 개시하게 할 수 있다.
흐름들이 클라이언트 데이터 정보 없이 결정되는 일부 실시예들에서, 스케줄링 모듈(336)은, 하나 이상의 프로세서들(310)이 하나 이상의 클라이언트 디바이스들(350) 중의 클라이언트 디바이스에, 흐름 결정 모듈(330)을 사용하여 결정되는 결정된 흐름들 및 솔버 모듈(330)을 사용하여 생성된 네트워크 구성(들)에 기초하여 네트워크를 통해 흐름들의 가용성들을 나타내는 것에 관한 메시지를 전송하게 할 수 있다. 메시지는 흐름들이 이용 가능한 시간 또는 시간 프레임 및/또는 각각의 흐름에 연관된 데이터의 송신을 위한 가격을 또한 포함할 수 있다. 스케줄 모듈(336)을 사용하여, 하나 이상의 프로세서들(310)은 하나 이상의 클라이언트 디바이스들(350) 중 하나의 클라이언트 디바이스로부터 클라이언트 데이터를 송신하기 위해 결정된 흐름들 중 하나의 흐름을 사용하기 위한 요청을 포함하는 응답을 수신할 수 있다. 하나 이상의 프로세서들(310)은 그 다음에 결정된 흐름을 통해 클라이언트 데이터의 송신을 개시하기 위해 라우팅 명령어들을 하나 이상의 노드들에 전송할 수 있다.
예시적인 방법들
도 5에서, 흐름도(500)는 네트워크 제어기(300)의 하나 이상의 프로세서들(310)에 의해 수행될 수 있는 위에서 설명된 양태들의 일부에 따라 도시되어 있다. 도 5가 블록들을 특정 순서로 도시하지만, 그 순서는 가변될 수 있고 다수의 동작들이 동시에 수행될 수 있다. 또한, 동작들은 추가 또는 생략될 수 있다.
블록 502에서, 네트워크 제어기(300)의 하나 이상의 프로세서들(310)은 토폴로지 및 라우팅 관리자 모듈(326)을 사용하여 네트워크(100) 내의 노드들의 각각으로부터 정보를 수신할 수 있다. 정보는 노드들의 현재 또는 예측된 조건, 날씨, 또는 현재 시간 또는 미래 시간에서의 링크들에 관련될 수 있다. 예시적인 시나리오에서, 로케이션 A는 현재 시간에 HAP(110a)의 현재 위치로서 수신될 수 있고, 로케이션 C는 현재 시간에 HAP(110c)의 현재 위치로서 수신될 수 있다. HAP(110a 및 110c)로부터의 날씨 상태 보고는 현재 날씨 상태가 로케이션들(A 및 C)에서 맑음으로 표시할 수 있다. HAP(110a)는 HAP(110c)가 링크(133)에 대한 요청들에 응답하지 않았다는 표시를 하나 이상의 프로세서들(310)에 또한 전송할 수 있다. 덧붙여서, HAP(110a)는 현재 시간으로부터 한 시간 안에 로케이션 A에서부터 로케이션 B로 이동할 것으로 예측될 수 있다. 현재 시간으로부터 한 시간 안의 로케이션 B에 대한 일기 예보는 뇌우를 포함할 수 있다.
블록 504에서, 도 4a에 도시된 테이블(400A)과 같이, 네트워크(100)에서의 가용 노드들 및 가능한 링크들을 나타내는 테이블은 토폴로지 및 라우팅 관리자 모듈(326)를 사용하여 네트워크의 노드들로부터 수신된 정보에 기초하여 생성되거나 또는 업데이트될 수 있다. 위에서 언급된 바와 같이, 테이블은 메모리(320)에 저장될 수 있다. 예시적인 시나리오에서, HAP(110a)의 경우, 테이블은 날씨가 현재 맑은 로케이션 A에서 HAP(110a)가 이용 가능함과 날씨가 그 시간에 뇌우를 포함할 한 시간 안에 HAP(110a)가 로케이션 B에 있을 것으로 예측됨을 표시하도록 생성되거나 또는 업데이트될 수 있다. HAP(110c)의 경우, 테이블은 로케이션 C에 HAP(110c)가 현재 위치됨을 표시하도록 생성되거나 또는 업데이트될 수 있다. HAP(110a 및 110c) 사이의 링크(133)의 경우, 테이블은 링크(133)가 실패하였음을 표시하도록 생성되거나 또는 업데이트될 수 있다.
블록 506에서, 하나 이상의 프로세서들(310)은 토폴로지 결정 모듈(328)을 사용하여 테이블에 기초하여 네트워크의 현재 및/또는 미래 토폴로지를 결정할 수 있다. 예시적인 시나리오의 경우, 현재 토폴로지를 결정하기 위해, 하나 이상의 프로세서들(310)은 메모리(320) 안의 테이블에 액세스하고 그 테이블로부터 노드들 및 링크들이 현재 시간에 이용 가능한 각각의 노드 및 링크에 연관된 스케줄링된 시간들을 결정할 수 있다. HAP(110a 및 110c)에 관한 수신된 정보에 따라, 현재 토폴로지(600)는 도 6에 도시된 바와 같이 결정될 수 있다. 현재 토폴로지는 노드들(107, 110)을 포함하도록 결정될 수 있다. 구체적으로는, HAP(110a)는 로케이션 A에서 그리고 HAP(110c)는 로케이션 C에서 현재 토폴로지 안에 포함될 수 있는데 이들 로케이션들이 현재 시간에 대한 테이블에서의 각각의 HAP들에 연관된 로케이션들이기 때문이다. 현재 토폴로지(600)에서의 화살표들에 의해 도시된 바와 같이, 링크들(130~132 및 134~137)은 현재 토폴로지 안에 포함되며, 현재 시간에 대해 실패한 것으로 표시되는 HAP(110a 및 110c) 사이의 링크(133)는 포함되지 않는다(도 6에서 화살표들 없이 일점쇄선으로 도시됨). 다른 예에서, HAP(110c)가 로케이션 C에서 자신의 로케이션을 하나 이상의 프로세서들(310)에 보고하지 않지만 비행 제어 모듈(334)을 사용하여 이전에 보고된 비행 경로 또는 궤도를 보고하면, 하나 이상의 프로세서들(310)은 비행 경로 또는 궤도에 기초하여 HAP(110c)가 현재 로케이션 C에 있다고 결정하고 현재 토폴로지 안에 HAP(100c)를 포함시킬 수 있다. 현재 토폴로지에서의 각각의 가능한 링크(130~132 및 134~137)는 수신된 정보에 기초하여 결정되는 대역폭과 같은 링크 메트릭들이 또한 라벨표시될 수 있다. 현재 토폴로지(600)의 도면에서, 실선들은 링크들(130, 131, 134, 137)이 3 Mbps 또는 그 이상과 같은 더 높은 대역폭들일 수 있음을 표시하고, 파선들은 링크들(132, 135, 136)이 3 Mbps 미만과 같은 더 낮은 대역폭들일 수 있음을 표시한다.
게다가 예시적인 시나리오에서, 현재 시간 후 한 시간의 미래 시간 동안, 미래 토폴로지(700)는, 도 7에 도시된 바와 같이, 결정될 수 있다. 하나 이상의 프로세서들(310)은 테이블에서의 미래 시간에 대한 로케이션 정보에 기초하여 미래 시간에서의 HAP(110a)에 대한 로케이션을 로케이션 B인 것으로 결정할 수 있다. 덧붙여서, 위에서 설명된 바와 같이 일기 예보가 로케이션 B에 뇌우를 포함한다는 표시를 테이블이 포함하기 때문에, 미래 토폴로지는 로케이션 B에서 HAP(110a)를 포함하는 것으로 결정될 수 있지만, 적어도 FSOC에 대해 이용 불가능함을 표시한다. 도 7에 도시된 바와 같이, HAP(110a)의 일점쇄선형 윤곽선은 HAP(110a)가 미래 시간에 대해 미래 토폴로지에서 이용 불가능함을 표시하고, HAP(100a)를 갖는 이들 링크들이 또한 이용 불가능할 수 있음을 표시하기 위해 일점쇄선들로 링크들(130~133)을 또한 도시한다.
도 5로 되돌아가면, 블록 508에서, 네트워크(100)를 통해 송신될 클라이언트 데이터에 관련된 정보는 스케줄링 모듈(336)을 사용하여 하나 이상의 프로세서들(310)에 의해 수신될 수 있다. 클라이언트 데이터 정보는 네트워크 제어기(300)와 통신하는 클라이언트 디바이스들로부터 수신될 수 있다. 클라이언트 데이터 정보는 클라이언트 데이터의 데이터량, 소스 로케이션, 및 목적지 로케이션과, 요청된 송신 시간을 포함할 수 있다. 예를 들어, 예시적인 시나리오에서, 수신된 정보는 클라이언트 데이터의 양이 10Gb이며, 클라이언트 데이터에 대한 소스 로케이션이 지상국(107a)이며, 목적지 로케이션이 지상국(107b)이고, 요청된 송신 시간이 현재 시간임을 표시할 수 있다. 일부 경우들에서, 그 정보는 송신 요건들, 이를테면 대역폭, 서비스의 클래스, 서비스 품질, 등을 또한 포함한다. 일부 실시예들에서, 클라이언트 데이터에 관련된 정보는 네트워크 제어기(300)의 하나 이상의 프로세서들(310)에 의해 또는 원격 시스템에 의해 예측될 수 있다.
블록 510에서, 하나 이상의 프로세서들(310)은 흐름 결정 모듈(330)을 사용하여, 현재 또는 미래 토폴로지 및 클라이언트 데이터 정보를 사용하는 현재 또는 미래 시간에 대한 하나 이상의 흐름들을 결정할 수 있다. 현재 시간에 송신을 요청하는 클라이언트 데이터의 경우, 하나 이상의 흐름들은 현재 시간에 대해 결정될 수 있다. 현재 토폴로지는 메모리(320)에 저장된 테이블로부터 취출될 수 있다. 예시적인 시나리오에서의 하나 이상의 프로세서들(310)은 클라이언트 데이터에 대한 흐름이 지상국(107a)과 지상국(107b) 사이에 있을 수 있는 것으로 결정할 수 있는데, 왜냐하면 소스 로케이션이 지상국(107a)과 접속 가능하고 목적지 로케이션이 지상국(107b)과 접속 가능하고, 양 지상국들(107a 및 107b)이 현재 토폴로지에 따라 이용 가능하기 때문이다. 덧붙여서, 대역폭은 10Gb의 클라이언트 데이터에 대해 최소 3 Gbps인 것으로 결정될 수 있다. 한편, 5 Gb의 다른 클라이언트 데이터의 경우, 최소 대역폭 요건은 1 Gbps일 수 있다. 대안적으로, 최소 대역폭 요건은 클라이언트 디바이스에 의해 설정될 수 있다. 10Gb의 클라이언트 데이터에 대한 흐름을 위한 시간 프레임이, 클라이언트 데이터가 3 Gbps의 최소 레이트에서 송신될 시간을 가짐을 보장하기 위해, 5 초인 것으로 결정될 수 있다.
일부 구현예들에서, 하나 이상의 프로세서들(310)은 네트워크를 통한 송신을 위해 하나 이상의 클라이언트 디바이스들로부터 클라이언트 데이터를 집성할 수 있다. 예를 들어, 이전에 언급된 10Gb의 클라이언트 데이터는 지상국(107a)에서부터 지상국(107b)으로 또한 송신될 동일한 또는 상이한 클라이언트 디바이스로부터의 다른 10Gb의 클라이언트 데이터와 집성될 수 있다. 20Gb의 클라이언트 데이터의 총량에 기초하여, 하나 이상의 프로세서들(310)은 지상국들(107a 및 107b) 사이의 흐름이 4Gbps의 최소 대역폭을 요구한다고 결정할 수 있다.
블록 512에서, 하나 이상의 프로세서들(310)은 솔버 모듈(332)를 사용하여 결정된 흐름들 및 현재 또는 미래 토폴로지에 기초하여 현재 또는 미래 시간에 대한 네트워크 구성을 생성할 수 있다. 네트워크 구성은 구현예를 위한 하나 이상의 라우팅 경로들 및 시간 프레임을 포함할 수 있다. 예를 들어, 예시적인 시나리오의 경우, 현재 네트워크 구성은 지상국들(107a 및 107b) 사이의 흐름 및 현재 토폴로지에 기초하여 현재 시간에 대해 결정될 수 있다. 현재 네트워크 구성은 도 8에 도시된 바와 같은 라우팅 경로(800)를 포함할 수 있다. 라우팅 경로(800)(블록 화살표들로 도시됨)는 링크들(130, 131, 134, 및 137)을 사용하여 지상국(107a)에서부터, HAP들(110a, 110d, 110c)을 통해, 지상국(107b)으로 있을 수 있다. 라우팅 경로는 HAP들(110a 및 110c) 사이의 링크(133)를 포함하지 않는데 왜냐하면 현재 토폴로지가 이 링크(133)를 포함하지 않기 때문이다. 덧붙여서, 라우팅 경로는 HAP들(110a 및 110b) 사이의 링크(132) 또는 HAP들(110d 및 110b) 사이의 링크(135)를 포함하지 않을 수 있는데 왜냐하면 이들 링크들이 흐름에 대한 요건들을 충족시키지 않기 때문이다. 이 경우에, HAP들(110a 및 110b) 사이의 링크(132)와 HAP들(110d 및 110b) 사이의 링크(135)는 현재 토폴로지에서의 링크들(132 및 135)에 대한 링크 메트릭들에 따라 적어도 3 Gbps의 대역폭을 지원할 수 없는 것으로서 표시된다. 하나 이상의 프로세서들(310)은 현재 네트워크 구성을 구현하기 위한 시간 프레임이 지상국들(107a 및 107b) 사이의 흐름에 대해 결정된 시간 프레임에 기초하여 적어도 현재 시간부터 현재 시간 5초 후까지에 있는 것으로 추가로 결정할 수 있다.
도 5에서 추가로 도시된 바와 같이, 블록 514에서, 하나 이상의 프로세서들(310)은 토폴로지 및 라우팅 관리자 모듈(326) 및/또는 솔버 모듈(332)를 사용한 생성된 네트워크 구성 및 클라이언트 데이터의 송신의 구현예를 위한 구현예 명령어들을 네트워크(100)의 노드들(107, 110)에 전송할 수 있다. 예시적인 시나리오에서, 현재 네트워크 구성의 경우, 노드들(107, 110)에 대한 구현예 명령어들은 라우팅 경로(800)을 구현하기 위한 명령어들을 포함할 수 있다. 구현예 명령어들은 그러므로 링크(130)를 형성하기 위해 HAP(110a) 쪽을 지상국(107a)의 트랜시버가 향하도록 하기 위한 지상국(107a)에 대한 명령어들; 링크(130)를 형성하기 위해 지상국(107a) 쪽을 그리고 링크(131)를 형성하기 위해 HAP(110d) 쪽을 HAP(110a)의 트랜시버들이 향하도록 하기 위한 HAP(110a)에 대한 명령어들; 링크(131)를 형성하기 위해 HAP(110a) 쪽을 그리고 링크(134)를 형성하기 위해 HAP(110c) 쪽을 HAP(110d)의 트랜시버들이 향하도록 하기 위한 HAP(110d)에 대한 명령어들; 링크(134)를 형성하기 위해 HAP(110d) 쪽을 그리고 링크(137)를 형성하기 위해 지상국(107b) 쪽을 HAP(110c)의 트랜시버들이 향하도록 하기 위한 HAP(110c)에 대한 명령어들; 및 링크(137)를 형성하기 위해 HAP(110c) 쪽을 지상국(107b)의 트랜시버가 향하도록 하기 위한 지상국(107b)에 대한 명령어들을 포함할 수 있다. 일부 경우들에서, 하나 이상의 링크들이 이미 형성되어 있을 수 있으며, 그 경우 트랜시버들의 방향에 대한 변경이 필요하지 않다. 덧붙여서, 시작 스테이션인 지상국(107a)에 대한 구현예 명령어들은 라우팅 경로(800)를 통해 송신될 클라이언트 데이터의 수신 및 송신을 위한 라우팅 명령어들을 포함할 수 있다. 라우팅 명령어들은 클라이언트 데이터의 소스 로케이션, 클라이언트 데이터의 목적지 로케이션, 송신을 위한 타이밍, 및/또는 송신을 위한 레이트를 포함할 수 있다. 라우팅 명령어들이 지상국(107a)에서 수신될 때, 지상국(107a)은 라우팅 경로(800)를 따르는 현재 네트워크 구성을 통해 현재 시간에 클라이언트 데이터를 송신하도록 유발될 수 있다.
미래의 시점을 위해 생성된 네트워크 구성의 경우, 구현예 명령어들은, 미래의 시점에 클라이언트 데이터를 송신하기 전에 발생할 수 있는 각각의 노드에, 새로운 라우팅 경로들을 구현하기 위해 트랜시버들을 조종하는 것과 같은 네트워크(100)에서의 스케줄링된 변경들을 저장하는 것을 포함할 수 있다. 구현예 명령어들은 그러므로 미래 네트워크 구성에 따라 새로운 라우팅 경로들을 구현하기 위한 새로운 라우팅 경로들 및 시간 또는 시간 프레임으로 각각의 노드에서의 라우팅 테이블들을 업데이트하는 것을 포함한 수 있다. 시간 또는 시간 프레임에 도달될 때, 네트워크(100)의 노드들(107, 110)은 구현예 명령어들에 따라 미래 네트워크 구성을 자동으로 구현하도록 유발될 수 있다.
대안적으로, 네트워크 제어기(300)의 하나 이상의 프로세서들(310)은 스케줄링 모듈(336)을 사용하여 네트워크(100)에서의 복수의 가용 흐름들에 기초하여 하나 이상의 클라이언트 디바이스들(350)로부터 클라이언트 데이터 정보를 요청할 수 있다. 그렇게 하기 위해, 하나 이상의 프로세서들(310)은 현재 또는 미래 토폴로지에 기초하여 지상국들(107a, 107b)과 같이, 클라이언트 디바이스들에 직접적으로 접속 가능한 노드들 사이에서 복수의 가용 흐름들을 결정하는데 흐름 결정 모듈(330)을 사용할 수 있다. 복수의 가용 흐름들은 다르게는 클라이언트 데이터 정보를 수신하는 일 없이 결정될 수 있고 각각의 흐름에 대한 성능 메트릭들을 포함할 수 있다. 클라이언트 디바이스들에 직접적으로 접속 가능한 노드들 사이에서 복수의 가능한 흐름들을 결정한 후, 하나 이상의 프로세서들(310)은 스케줄링 모듈(336)을 사용하여 통신 시스템(340)을 경유하여 하나 이상의 클라이언트 디바이스들(350) 중 제1 클라이언트 디바이스에 메시지를 전송할 수 있다. 메시지들은 제1 클라이언트 디바이스에 직접적으로 접속 가능한 노드와 다른 클라이언트 디바이스들에 직접적으로 접속 가능한 모든 다른 노드들 사이에 있는 복수의 가용 흐름들로부터의 가용 흐름들의 리스트를 포함할 수 있다. 덧붙여서, 메시지는 네트워크(100)를 통해 송신을 위한 클라이언트 데이터 정보에 대한 요청을 포함할 수 있다. 클라이언트 데이터 정보를 포함하는 응답이 제1 클라이언트 디바이스로부터 수신될 수 있으며, 그 정보는 그 다음에 위에서 설명된 바와 같은 솔버 모듈(332)을 사용하여 네트워크 구성을 생성하고 구현하기 위해 하나 이상의 프로세서들(310)에 의해 사용될 수 있다.
다른 대체 실시예에서, 블록 508에서 수신된 클라이언트 데이터 정보는 송신을 위한 요청된 시간을 포함하지 않을 수 있거나 또는 송신을 위한 요청된 시간은 요청된 시간에 네트워크의 토폴로지에 기초하여 실현가능하지 않을 수 있다. 네트워크 제어기(300)의 하나 이상의 프로세서들(310)은 그 다음에 스케줄링 모듈(336)을 사용하여 클라이언트 데이터에 대한 송신을 위한 스케줄링된 시간을 결정할 수 있다. 스케줄링된 시간은 주어진 시간 또는 시간 프레임에 네트워크(100)에서의 가용 노드들 및 가능한 링크들의 모두를 나타내는 테이블에 기초하여 결정될 수 있다. 예를 들어, 클라이언트 데이터 정보는 현재 시간 한 시간 후인 미래 시간에 5Gb의 클라이언트 데이터를 송신하기 위한 요청을 포함할 수 있다. 클라이언트 데이터 정보에서의 소스 로케이션 및 목적지 로케이션에 기초하여, 시작 스테이션은 지상국(107a)인 것으로 결정될 수 있고 목적지 스테이션은 지상국(107b)인 것으로 결정될 수 있다. 그러나, 도 7에 도시된 미래 토폴로지(700)에 기초하여, HAP(110a)는 미래 시간에 이용 불가능하고 그러므로 링크(130)는 미래 시간에 또한 이용 불가능하다. 메모리(320)에 저장된 테이블을 사용하여, 하나 이상의 프로세서들(310)은 그 다음에 제2의 미래 시간을 식별할 수 있는데, 이 시간은 링크(130)가 이용 가능하게 되거나 또는 지상국(107a)과 다른 HAP, 이를테면 HAP들(110b~110d) 사이의 링크가 이용 가능하게 된 가장 이른 시간이다. 5Gb의 클라이언트 데이터의 송신은 그 다음에 제2의 미래 시간에 되는 것으로 스케줄링될 수 있다. 제2의 미래 시간에 대한 제2의 미래 네트워크 구성은 지상국들(107a 및 107b) 사이에 라우팅 경로를 포함하도록 생성될 수 있다. 대안적으로, 제2의 미래 네트워크 구성은 제2의 미래 네트워크 구성이 라우팅 경로 없이 생성되었다면 지상국들(107a 및 107b) 사이에 라우팅 경로를 포함하도록 업데이트될 수 있다.
도 9에서, 흐름도(900)는 네트워크 제어기(300)의 하나 이상의 프로세서들(310)에 의해 수행될 수 있는 위에서 설명된 양태들의 일부에 따라 도시되어 있다. 도 9가 블록들을 특정 순서로 도시하지만, 그 순서는 가변될 수 있고 다수의 동작들이 동시에 수행될 수 있다. 또한, 동작들은 추가 또는 생략될 수 있다.
블록 902에서, 네트워크 제어기(300)의 하나 이상의 프로세서들(310)은 토폴로지 및 라우팅 관리자 모듈(326)을 사용하여 네트워크(100) 내의 노드들의 각각으로부터 정보를 수신할 수 있다. 정보는 노드들의 현재 또는 예측된 조건, 날씨, 또는 현재 시간 또는 미래 시간에서의 링크들에 관련될 수 있다. 예시적인 시나리오에서, 로케이션 A는 현재 시간에 현재 위치 HAP(110a)로서 수신될 수 있으며, 로케이션 C는 현재 시간에 현재 위치 HAP(110c)로서 수신될 수 있고, 로케이션 D는 현재 위치 HAP(110d)로서 수신될 수 있다. HAP(110a 및 110c)로부터의 날씨 상태 보고는 현재 날씨 상태가 로케이션들(A 및 C)에서 맑음으로 표시할 수 있다. HAP(110d)는 현재 시간에 HAP(110d)에 10Gb의 가용 스토리지가 있다는 표시를 또한 전송할 수 있다. HAP들(110a 및 110d)은 HAP(110c)가 링크(133)에 대한 요청에 응답하지 않았다는 표시를 하나 이상의 프로세서들(310)에 각각이 전송할 수 있다. 덧붙여서, HAP(110a)는 현재 시간부터 한 시간 안에 로케이션 A에서부터 로케이션 B로 이동하는 것으로 예측될 수 있고, HAP(110d)는 현재 시간부터 한 시간 안에 로케이션 D에서부터 로케이션 E로 이동하는 것으로 예측될 수 있다. 현재 시간으로부터 한 시간 안의 로케이션 B에 대한 일기 예보는 뇌우를 포함할 수 있다.
블록 904에서, 도 4b 및 도 4c에 도시된 테이블(400B)과 같이, 네트워크(100)에서의 가용 노드들 및 가능한 링크들을 나타내는 테이블은 토폴로지 및 라우팅 관리자 모듈(326)을 사용하여 네트워크의 노드들로부터 수신된 정보에 기초하여 생성되거나 또는 업데이트될 수 있다. 위에서 언급된 바와 같이, 테이블은 메모리(320)에 저장될 수 있다. 예시적인 시나리오에서, HAP(110a)의 경우, 테이블은 날씨가 현재 맑은 로케이션 A에서 HAP(110a)가 이용 가능함과 날씨가 그 시간에 뇌우를 포함할 한 시간 안에 HAP(110a)가 로케이션 B에 있을 것으로 예측됨을 표시하도록 생성되거나 또는 업데이트될 수 있다. HAP(110c)의 경우, 테이블(400B)은 로케이션 C에 HAP(110c)가 현재 위치됨을 표시하도록 생성되거나 또는 업데이트될 수 있다. HAP(110d)의 경우, 테이블(400B)은 HAP(110d)가 로케이션 D에 현재 위치되고 현재 10Gb의 가용 스토리지를 가진다는 것과 HAP(110d)가 한 시간 안에 로케이션 E에 있는 것으로 예측되는 것을 표시하도록 생성되거나 또는 업데이트될 수 있다. HAP들(110a 및 110c) 사이의 링크(133)의 경우, 테이블은 링크(133)가 실패하였음을 표시하도록 생성되거나 또는 업데이트될 수 있다. HAP들(110b 및 110c) 사이의 링크(134)의 경우, 테이블은 링크(134)가 실패하였음을 표시하도록 생성되거나 또는 업데이트될 수 있다.
블록 906에서, 하나 이상의 프로세서들(310)은 토폴로지 결정 모듈(328)을 사용하여 테이블에 기초하여 네트워크의 현재 및/또는 미래 토폴로지를 결정할 수 있다. 예시적인 시나리오의 경우, 현재 토폴로지를 결정하기 위해, 하나 이상의 프로세서들(310)은 메모리(320) 안의 테이블에 액세스하고 그 테이블로부터 노드들 및 링크들이 현재 시간에 이용 가능한 각각의 노드 및 링크에 연관된 스케줄링된 시간들을 결정할 수 있다. HAP들(110a~110d)에 관한 수신된 정보에 따라, 현재 토폴로지(1000)가 도 10에 도시된 바와 같이 결정될 수 있다. 현재 토폴로지는 노드들(107, 110)을 포함하도록 결정될 수 있다. 구체적으로는, HAP(110a)는 로케이션 A에서, HAP(110c)는 로케이션 C에서, 그리고 HAP(110d)는 로케이션 D에서 현재 토폴로지에 포함될 수 있는데, 이들 로케이션들이 현재 시간에 대한 테이블에서의 각각의 HAP들에 연관된 로케이션들이기 때문이다. 현재 토폴로지(1000)에서의 화살표들에 의해 도시된 바와 같이, 현재 토폴로지 안에는 링크들(130~132 및 135~137)은 포함되며, 현재 시간에 대해 실패한 것으로서 표시되는 HAP(110a 및 110c) 사이의 링크(133) 및 HAP(110d 및 110c) 사이의 링크(134)(도 10에서 화살표들 없이 일점쇄선으로 도시됨)는 포함하지 않는다. 다른 예에서, HAP(110c)가 로케이션 C에서 자신의 로케이션을 하나 이상의 프로세서들(310)에 보고하지 않지만 비행 제어 모듈(334)을 사용하여 이전에 보고된 비행 경로 또는 궤도를 보고하면, 하나 이상의 프로세서들(310)은 비행 경로 또는 궤도에 기초하여 HAP(110c)가 현재 로케이션 C에 있다고 결정하고 현재 토폴로지 안에 HAP(100c)를 포함시킬 수 있다. 현재 토폴로지에서의 각각의 가능한 링크(130~132 및 135~137)는 수신된 정보에 기초하여 결정되는 대역폭과 같은 링크 메트릭들이 또한 라벨표시될 수 있다. 현재 토폴로지(1000)의 도면에서, 실선들은 링크들(130, 131, 134, 137)이 3 Mbps 또는 그 이상과 같은 더 높은 대역폭들일 수 있음을 표시하고, 파선들은 링크들(132, 135, 136)이 3 Mbps 미만과 같은 더 낮은 대역폭들일 수 있음을 표시한다.
게다가 예시적인 시나리오에서, 현재 시간 이후 한 시간의 미래 시간 동안, 미래 토폴로지(1100)는, 도 11에 도시된 바와 같이, 결정될 수 있다. 하나 이상의 프로세서들(310)은 테이블에서의 미래 시간에 대한 로케이션 정보에 기초하여 미래 시간에서의 HAP(110a)에 대한 로케이션을 로케이션 B인 것으로 그리고 미래 시간에서의 HAP(110d)에 대한 로케이션을 로케이션 D인 것으로 결정할 수 있다. 덧붙여서, 위에서 설명된 바와 같이 일기 예보가 로케이션 B에 뇌우를 포함한다는 표시를 테이블이 포함하기 때문에, 미래 토폴로지는 로케이션 B에서 HAP(110a)를 포함하는 것으로 결정될 수 있지만, 적어도 FSOC에 대해 이용 불가능함을 표시한다. 도 11에 도시된 바와 같이, HAP(110a)의 일점쇄선형 윤곽선은 HAP(110a)가 미래 시간에 대해 미래 토폴로지에서 이용 불가능함을 표시하고, HAP(100a)를 갖는 이들 링크들이 또한 이용 불가능할 수 있음을 표시하기 위해 일점쇄선들로 링크들(130~133)을 또한 도시한다. 도 11에서 추가로 도시된 바와 같이, HAP(110d 및 110c) 사이의 링크(134)는 로케이션 D에 있는 HAP(110d)에 적어도 부분적으로 기초하여 미래 시간에 확립될 수 있다.
도 9로 되돌아가면, 블록 908에서, 네트워크(100)를 통해 송신될 클라이언트 데이터에 관련된 정보는 스케줄링 모듈(336)을 사용하여 하나 이상의 프로세서들(310)에 의해 수신될 수 있다. 클라이언트 데이터 정보는 네트워크 제어기(300)와 통신하는 클라이언트 디바이스들로부터 수신될 수 있다. 클라이언트 데이터 정보는 클라이언트 데이터의 데이터량, 소스 로케이션, 및 목적지 로케이션과, 요청된 송신 시간을 포함할 수 있다. 예를 들어, 예시적인 시나리오에서, 수신된 정보는 클라이언트 데이터의 양이 10Gb이며, 클라이언트 데이터에 대한 소스 로케이션이 지상국(107a)이며, 목적지 로케이션이 지상국(107b)이고, 요청된 송신 시간이 현재 시간임을 표시할 수 있다. 일부 경우들에서, 그 정보는 송신 요건들, 이를테면 대역폭, 서비스의 클래스, 서비스 품질, 등을 또한 포함한다. 일부 실시예들에서, 클라이언트 데이터에 관련된 정보는 네트워크 제어기(300)의 하나 이상의 프로세서들(310)에 의해 또는 원격 시스템에 의해 예측될 수 있다.
블록 910에서, 하나 이상의 프로세서들(310)은 흐름 결정 모듈(330)을 사용하여, 현재 또는 미래 토폴로지 및 클라이언트 데이터 정보를 사용하는 현재 또는 미래 시간에 대한 하나 이상의 흐름들을 결정할 수 있다. 현재 시간에 송신을 요청하는 클라이언트 데이터의 경우, 하나 이상의 흐름들은 현재 시간에 대해 결정될 수 있다. 현재 토폴로지는 메모리(320)에 저장된 테이블로부터 취출될 수 있다. 예시적인 시나리오에서의 하나 이상의 프로세서들(310)은 클라이언트 데이터에 대한 흐름이 지상국(107a)과 지상국(107b) 사이에 있을 수 있는 것으로 결정할 수 있는데, 왜냐하면 소스 로케이션이 지상국(107a)과 접속 가능하고 목적지 로케이션이 지상국(107b)과 접속 가능하고, 양 지상국들(107a 및 107b)이 현재 토폴로지에 따라 이용 가능하기 때문이다. 덧붙여서, 대역폭은 10Gb의 클라이언트 데이터에 대해 최소 3 Gbps인 것으로 결정될 수 있다. 한편, 5 Gb의 다른 클라이언트 데이터의 경우, 최소 대역폭 요건은 1 Gbps일 수 있다. 대안적으로, 최소 대역폭 요건은 클라이언트 디바이스에 의해 설정될 수 있다. 10Gb의 클라이언트 데이터에 대한 흐름을 위한 시간 프레임이, 클라이언트 데이터가 3 Gbps의 최소 레이트에서 송신될 시간을 가짐을 보장하기 위해, 5 초인 것으로 결정될 수 있다.
일부 구현예들에서, 하나 이상의 프로세서들(310)은 네트워크를 통한 송신을 위해 하나 이상의 클라이언트 디바이스들로부터 클라이언트 데이터를 집성할 수 있다. 예를 들어, 이전에 언급된 10Gb의 클라이언트 데이터는 지상국(107a)에서부터 지상국(107b)으로 또한 송신될 동일한 또는 상이한 클라이언트 디바이스로부터의 다른 10Gb의 클라이언트 데이터와 집성될 수 있다. 20Gb의 클라이언트 데이터의 총량에 기초하여, 하나 이상의 프로세서들(310)은 지상국들(107a 및 107b) 사이의 흐름이 4Gbps의 최소 대역폭을 요구한다고 결정할 수 있다.
블록 912에서, 하나 이상의 프로세서들(310)은 솔버 모듈(332)을 사용하여, 결정된 흐름들과 현재 및 미래 토폴로지에 기초하여 현재 시간에 대한 현재 네트워크 구성 및 미래 시간에 대한 미래 네트워크 구성을 포함하는 네트워크 구성들의 스케줄을 생성할 수 있다. 네트워크 구성들의 스케줄은 현재 네트워크 구성과 미래 네트워크 구성에 걸쳐 있는 라우팅 경로를 포함하도록 결정될 수 있다. 이 유형의 라우팅 경로는 한 쌍의 노드들 사이의 라우트가 단일 토폴로지에 존재하지 않을 때 결정될 수 있다. 예를 들어, 도 10에 도시된 바와 같이, 3Gbps보다 더 큰 속력들을 요구하는 데이터에 대한 지상국들(107a 및 107b) 사이의 직접 라우팅 경로는 현재 시간 주어진 토폴로지(1000)에서 가능하지 않다. 링크들(133 및 134)은 이용 불가능하고, 링크들(132, 135, 및 136)은 3Gbps보다 큰 속력들을 지원할 수 없다. 또한 도 11에서, 3Gbps보다 더 큰 속력들을 요구하는 데이터에 대한 지상국들(107a 및 107b) 사이의 직접 라우팅 경로는 현재 시간 주어진 토폴로지(1100)에서 가능하지 않다. 링크들(130~133)은 FSOC에 대해 이용 불가능하다.
이 예시적인 시나리오에서, 하나 이상의 프로세서들(310)은 현재 네트워크 구성을 사용하여 데이터가 송신되고 저장되는 그리고 미래 네트워크 구성을 사용하여 데이터가 송신되는 노드를 포함하도록 네트워크 구성들의 스케줄의 라우팅 경로를 결정할 수 있다. 예를 들어, 현재 네트워크 구성 및 미래 네트워크 구성은 지상국들(107a 및 107b) 사이의 흐름, 현재 토폴로지(1000), 미래 토폴로지(1100), 및 노드(110d)에서의 가용 스토리지에 기초하여 결정될 수 있다. 현재 네트워크 구성은 도 12a에 도시된 바와 같은 라우팅 경로의 제1 부분 또는 일부(1200A)를 포함할 수 있고, 미래 네트워크 구성은 도 12b에 도시된 바와 같은 라우팅 경로의 제2 부분(1200B)을 포함할 수 있다. 라우팅 경로의 제1 부분(1200A)(블록 화살표들로 도시됨)은 링크들(130 및 131)을 사용하여 지상국(107a)으로부터 HAP(110a)를 통해 HAP(110d)으로의 두 개의 라우팅 부분들을 포함할 수 있다. 라우팅 경로의 제1 부분(1200A)은 10Gb인 클라이언트 디바이스로부터 수신된 클라이언트 데이터의 양을 저장하기 위해, 10Gb인 충분한 가용 스토리지가 있는 HAP(110d)에서 종료한다. 미래 시간에, HAP(110d)는 로케이션 D에 도달하고 링크(134)를 확립하고 목적지 지상국(107b)으로의 데이터 전달을 완성할 수 있다. 라우팅 경로의 제2 부분(1200B)(블록 화살표들로 도시됨)은 링크들(134 및 137)을 사용하여 HAP(110d)로부터 HAP(110c)를 통해 지상국(107b)으로 될 수 있다.
도 9에서 추가로 도시된 바와 같이, 블록 914에서, 하나 이상의 프로세서들(310)은 토폴로지 및 라우팅 관리자 모듈(326) 및/또는 솔버 모듈(332)를 사용한 생성된 네트워크 구성 및 클라이언트 데이터의 송신의 구현예를 위한 구현예 명령어들을 네트워크(100)의 노드들(107, 110)에 전송할 수 있다. 예시적인 시나리오에서, 현재 네트워크 구성의 경우, 노드들(107, 110)에 대한 구현예 명령어들은 제1 부분(1200A)의 라우팅 경로 부분들을 구현하기 위한 명령어들을 포함할 수 있다. 구현예 명령어들은 그러므로 링크(130)를 형성하기 위해 HAP(110a) 쪽을 지상국(107a)의 트랜시버가 향하도록 하기 위한 지상국(107a)에 대한 명령어들; 링크(130)를 형성하기 위해 지상국(107a) 쪽을 그리고 링크(131)를 형성하기 위해 HAP(110d) 쪽을 HAP(110a)의 트랜시버들이 향하도록 하기 위한 HAP(110a)에 대한 명령어들; 및 링크(131)를 형성하기 위해 HAP(110a) 쪽을 HAP(110d)의 트랜시버들이 향하도록 하기 위한 HAP(110d)에 대한 명령어들을 포함할 수 있다. 일부 실시예들에서, 구현예 명령어들은 미래 네트워크 구성을 위해 네트워크를 또한 준비할 수 있다. 이 경우, 구현예 명령어들은 HAP(110c)가 미래 시간에 있을 곳을 향해 트랜시버들이 향하도록 하기 위한 HAP(110d)에 대한 명령어들; HAP(110d)가 미래 시간에 있을 곳 쪽을 그리고 링크(137)를 형성하기 위해 지상국(107b) 쪽을 HAP(110c)의 트랜시버들이 향하도록 하기 위한 HAP(110c)에 대한 명령어들; 및 링크(137)를 형성하기 위해 HAP(110c) 쪽을 지상국(107b)의 트랜시버를 향하도록 하기 위한 지상국(107b)에 대한 명령어들을 포함할 수 있다. 일부 경우들에서, 하나 이상의 링크들이 이미 형성되어 있을 수 있으며, 그 경우 트랜시버들의 방향에 대한 변경이 필요하지 않다. 덧붙여서, 시작 스테이션인 지상국(107a)에 대한 구현예 명령어들은, 라우팅 경로(1200A~1200B)를 통해 송신될 클라이언트 데이터의 수신 및 송신을 위한 라우팅 명령어들을 포함할 수 있다. 라우팅 명령어들은 클라이언트 데이터의 소스 로케이션, 클라이언트 데이터의 목적지 로케이션, 송신을 위한 타이밍, 및/또는 송신을 위한 레이트를 포함할 수 있다. 라우팅 명령어들이 지상국(107a)에서 수신될 때, 지상국(107a)은 라우팅 경로(1200A~1200B)를 따르는 현재 네트워크 구성을 통해 현재 시간에 클라이언트 데이터를 송신하도록 유발될 수 있다.
미래의 시점을 위해 생성된 네트워크 구성의 경우, 구현예 명령어들은, 미래의 시점에 클라이언트 데이터를 송신하기 전에 발생할 수 있는 각각의 노드에, 새로운 라우팅 경로들을 구현하기 위해 트랜시버들을 조종하는 것과 같은 네트워크(100)에서의 스케줄링된 변경들을 저장하는 것을 포함할 수 있다. 구현예 명령어들은 그러므로 미래 네트워크 구성에 따라 새로운 라우팅 경로들을 구현하기 위한 새로운 라우팅 경로들 및 시간 또는 시간 프레임으로 각각의 노드에서의 포워딩 테이블들을 업데이트하는 것을 포함한 수 있다. 시간 또는 시간 프레임에 도달될 때, 네트워크(100)의 노드들(107, 110)은 구현예 명령어들에 따라 미래 네트워크 구성을 자동으로 구현하도록 유발될 수 있다.
대안적으로, 네트워크 제어기(300)의 하나 이상의 프로세서들(310)은 스케줄링 모듈(336)을 사용하여 네트워크(100)에서의 복수의 가용 흐름들에 기초하여 하나 이상의 클라이언트 디바이스들(350)로부터 클라이언트 데이터 정보를 요청할 수 있다. 그렇게 하기 위해, 하나 이상의 프로세서들(310)은 현재 또는 미래 토폴로지에 기초하여 지상국들(107a, 107b)과 같이, 클라이언트 디바이스들에 직접적으로 접속 가능한 노드들 사이에서 복수의 가용 흐름들을 결정하는데 흐름 결정 모듈(330)을 사용할 수 있다. 복수의 가용 흐름들은 다르게는 클라이언트 데이터 정보를 수신하는 일 없이 결정될 수 있고 각각의 흐름에 대한 성능 메트릭들을 포함할 수 있다. 클라이언트 디바이스들에 직접적으로 접속 가능한 노드들 사이에서 복수의 가능한 흐름들을 결정한 후, 하나 이상의 프로세서들(310)은 스케줄링 모듈(336)을 사용하여 통신 시스템(340)을 경유하여 하나 이상의 클라이언트 디바이스들(350) 중 제1 클라이언트 디바이스에 메시지를 전송할 수 있다. 메시지들은 제1 클라이언트 디바이스에 직접적으로 접속 가능한 노드와 다른 클라이언트 디바이스들에 직접적으로 접속 가능한 모든 다른 노드들 사이에 있는 복수의 가용 흐름들로부터의 가용 흐름들의 리스트를 포함할 수 있다. 덧붙여서, 메시지는 네트워크(100)를 통해 송신을 위한 클라이언트 데이터 정보에 대한 요청을 포함할 수 있다. 클라이언트 데이터 정보를 포함하는 응답이 제1 클라이언트 디바이스로부터 수신될 수 있으며, 그 정보는 그 다음에 위에서 설명된 바와 같은 솔버 모듈(332)을 사용하여 네트워크 구성을 생성하고 구현하기 위해 하나 이상의 프로세서들(310)에 의해 사용될 수 있다.
다른 대체 실시예에서, 블록 908에서 수신된 클라이언트 데이터 정보는 송신을 위한 요청된 시간을 포함하지 않을 수 있거나 또는 송신을 위한 요청된 시간은 요청된 시간에 네트워크의 토폴로지에 기초하여 실현가능하지 않을 수 있다. 네트워크 제어기(300)의 하나 이상의 프로세서들(310)은 그 다음에 스케줄링 모듈(336)을 사용하여 클라이언트 데이터에 대한 송신을 위한 스케줄링된 시간을 결정할 수 있다. 스케줄링된 시간은 주어진 시간 또는 시간 프레임에 네트워크(100)에서의 가용 노드들 및 가능한 링크들의 모두를 나타내는 테이블에 기초하여 결정될 수 있다. 예를 들어, 클라이언트 데이터 정보는 현재 시간 한 시간 후인 미래 시간에 5Gb의 클라이언트 데이터를 송신하기 위한 요청을 포함할 수 있다. 클라이언트 데이터 정보에서의 소스 로케이션 및 목적지 로케이션에 기초하여, 시작 스테이션은 지상국(107a)인 것으로 결정될 수 있고 목적지 스테이션은 지상국(107b)인 것으로 결정될 수 있다. 그러나, 도 11에 도시된 미래 토폴로지(1100)에 기초하여, HAP(110a)는 미래 시간에 이용 불가능하고 그러므로 링크(130)는 미래 시간에 또한 이용 불가능하다. 메모리(320)에 저장된 테이블을 사용하여, 하나 이상의 프로세서들(310)은 그 다음에 제2의 미래 시간을 식별할 수 있는데, 이 시간은 링크(130)가 이용 가능하게 되거나 또는 지상국(107a)과 다른 HAP, 이를테면 HAP들(110b~110d) 사이의 링크가 이용 가능하게 된 가장 이른 시간이다. 5Gb의 클라이언트 데이터의 송신은 그 다음에 제2의 미래 시간에 되는 것으로 스케줄링될 수 있다. 제2의 미래 시간에 대한 제2의 미래 네트워크 구성은 지상국들(107a 및 107b) 사이에 라우팅 경로를 포함하도록 생성될 수 있다. 대안적으로, 제2의 미래 네트워크 구성은 제2의 미래 네트워크 구성이 라우팅 경로 없이 생성되었다면 지상국들(107a 및 107b) 사이에 라우팅 경로를 포함하도록 업데이트될 수 있다.
위에서 설명된 특징들은 사용자들이 세상의 상이한 부분들에 데이터를 송신하기 위한 신뢰성 있는 방도를 제공할 수 있다. 설명된 특징들을 사용하여 생성된 통신 네트워크는 페이드(fade) 및 사고상태들에 더 강건한 네트워크 커버리지를 사용자에게 제공할 수 있다. 이 때문에, 통신 네트워크의 최종 사용자들은 데이터의 더 신뢰성 있는 송신을 제공할 수 있으므로 네트워크를 사용할 가능성이 더 높다. 덧붙여서, 노드들의 이동성 때문에 최종 사용자들은 그러므로 전세계 데이터센터들 및 다른 관심 포인트들에 대해 액세스가능성이 증가하였을 수 있다.
달리 언급되지 않는 한, 전술한 대안적 예들은 상호 배타적이지 않고, 고유 장점들을 성취하기 위해 다양한 조합들로 구현될 수 있다. 위에서 논의된 특징들의 이들 및 다른 변형들 및 조합들은 청구범위에 의해 정의된 본 발명의 주제로부터 벗어남 없이 이용될 수 있으므로, 실시예들의 앞서의 설명은 청구범위에 의해 정의된 본 발명의 주제의 제한에 의해서라기 보다는 예시에 의해 취해져야 한다. 덧붙여서, 본 명세서에서 설명되는 예들, 뿐만 아니라 "이를테면", "포함하는" 등과 같은 어구로 표현되는 절들의 제공은 청구범위의 주제를 특정 예들로 제한하는 것으로 해석되지 않아야 하며; 오히려, 그 예들은 많은 가능한 실시예들 중 하나의 실시예만을 예시하는 것으로 해석된다. 게다가, 상이한 도면들에서의 동일한 참조 번호들은 동일하거나 또는 유사한 엘리먼트들을 식별할 수 있다.

Claims (40)

  1. 시스템으로서,
    네트워크 제어기를 포함하며, 상기 네트워크 제어기는:
    네트워크의 복수의 노드들로부터 정보를 수신하며 - 상기 복수의 노드들은 제2 노드에 대해 움직이고 있는 제1 노드를 포함함 -;
    상기 수신된 정보에 기초하여 상기 네트워크에서 가용 노드들 및 가능한 링크들을 나타내는 테이블을 생성하며;
    상기 생성된 테이블에 기초하여 주어진 시점에 대한 네트워크의 토폴로지를 결정하며;
    하나 이상의 클라이언트 디바이스들로부터 클라이언트 데이터 정보를 수신하며;
    상기 클라이언트 데이터 정보에 기초하여 상기 결정된 토폴로지에 대한 복수의 흐름들을 결정하며 - 상기 복수의 흐름들 중 각각의 흐름은 상기 네트워크를 통한 라우팅 경로에 대한 하나 이상의 요건들을 포함함 -;
    상기 결정된 복수의 흐름들에 기초하여 상기 결정된 토폴로지에 대한 네트워크 구성을 생성하며;
    상기 주어진 시점에 상기 생성된 네트워크 구성을 구현하고 클라이언트 데이터를 송신하기 위한 명령어들을 상기 네트워크의 상기 복수의 노드들에 전송하도록
    구성되는, 시스템.
  2. 제1항에 있어서, 상기 복수의 노드들을 더 포함하는, 시스템.
  3. 제1항에 있어서, 상기 복수의 노드들은 하나 이상의 지상국들과 하나 이상의 고고도 플랫폼들을 포함하는, 시스템.
  4. 제1항에 있어서, 상기 복수의 노드들은 자유공간 광통신을 수행하도록 구성되는, 시스템.
  5. 제1항에 있어서, 상기 테이블은 예측된 로케이션 또는 예측된 링크 메트릭에 기초하여 주어진 노드 또는 링크가 이용 가능한 것으로 예측되는 미래 시간들을 포함하는 스케줄링된 시간들 또는 시간 프레임들을 포함하는, 시스템.
  6. 제1항에 있어서, 상기 클라이언트 데이터 정보는 이력적 클라이언트 데이터 추이들을 포함하고, 상기 네트워크 제어기는 상기 이력적 클라이언트 데이터 추이들에 기초하여 상기 클라이언트 데이터 정보를 예측함으로써 상기 결정된 토폴로지에 대한 상기 복수의 흐름들을 결정하도록 구성되는, 시스템.
  7. 제1항에 있어서, 상기 네트워크 구성은 하나 이상의 라우팅 경로들을 포함하며, 각각의 라우팅 경로는 상기 복수의 흐름들 중 하나의 흐름의 상기 하나 이상의 요건들을 충족시키는, 시스템.
  8. 제7항에 있어서, 상기 네트워크의 상기 복수의 노드들에 전송된 상기 명령어들은 상기 복수의 노드들로 하여금 상기 하나 이상의 라우팅 경로들에 기초하여 하나 이상의 트랜시버를 조종하게 하는, 시스템.
  9. 제7항에 있어서, 상기 네트워크의 상기 복수의 노드들에 전송된 상기 명령어들은 상기 복수의 노드들 중 적어도 하나의 노드로 하여금 상기 하나 이상의 라우팅 경로들에 따라 라우팅 테이블을 업데이트하게 하는, 시스템.
  10. 제1항에 있어서, 상기 네트워크 제어기는 일련의 네트워크 구성들 및 상기 일련의 네트워크 구성들에 대한 스케줄을 생성하도록 추가로 구성되는, 시스템.
  11. 제1항에 있어서, 상기 네트워크 제어기는,
    제2 시점에 대한 상기 네트워크의 제2 토폴로지에 기초하여 상기 네트워크에서의 노드 쌍들 사이의 제2 복수의 흐름들을 결정하며 - 상기 노드 쌍들에서의 상기 노드들 중 각각의 노드는 상기 네트워크 외부의 상기 하나 이상의 클라이언트 디바이스들과 통신할 수 있음 -;
    상기 하나 이상의 클라이언트 디바이스들 중 제1 클라이언트 디바이스에 메시지를 전송하며 - 상기 메시지는 상기 제2 복수의 흐름들과 제2 클라이언트 데이터 정보에 대한 요청을 포함함 -;
    상기 제1 클라이언트 디바이스로부터 상기 제2 클라이언트 데이터 정보를 포함하는 응답을 수신하며;
    상기 제2 복수의 흐름들 및 상기 제2 클라이언트 데이터 정보에 기초하여 제2 네트워크 구성을 생성하도록
    추가로 구성되는, 시스템.
  12. 제1항에 있어서, 상기 네트워크 제어기는 상기 클라이언트 데이터 정보 및 상기 주어진 시점에서의 상기 네트워크의 상기 결정된 토폴로지를 사용하여 클라이언트 데이터를 송신하기 위한 시간이 상기 주어진 시점이라고 결정하도록 추가로 구성되는, 시스템.
  13. 방법으로서,
    네트워크를 위한 네트워크 제어기에 의해, 상기 네트워크의 복수의 노드들로부터 정보를 수신하는 단계 - 상기 복수의 노드들은 제2 노드에 대해 움직이고 있는 제1 노드를 포함함 -;
    상기 네트워크 제어기에 의해, 상기 수신된 정보에 기초하여 상기 네트워크에서 가용 노드들 및 가능한 링크들을 나타내는 테이블을 생성하는 단계;
    상기 네트워크 제어기에 의해, 상기 생성된 테이블에 기초하여 주어진 시점에 대한 상기 네트워크의 토폴로지를 결정하는 단계;
    상기 네트워크 제어기에 의해, 하나 이상의 클라이언트 디바이스들로부터 클라이언트 데이터 정보를 수신하는 단계;
    상기 네트워크 제어기에 의해, 상기 클라이언트 데이터 정보에 기초하여 상기 결정된 토폴로지에 대한 복수의 흐름들을 결정하는 단계 - 상기 복수의 흐름들 중 각각의 흐름은 상기 네트워크를 통한 라우팅 경로에 대한 하나 이상의 요건들을 포함함 -;
    상기 네트워크 제어기에 의해, 상기 결정된 복수의 흐름들에 기초하여 상기 결정된 토폴로지에 대한 네트워크 구성을 생성하는 단계; 및
    상기 네트워크 제어기에 의해, 상기 주어진 시점에 상기 생성된 네트워크 구성을 구현하고 클라이언트 데이터를 송신하기 위한 명령어들을 상기 네트워크의 상기 복수의 노드들에 전송하는 단계
    를 포함하는, 방법.
  14. 제13항에 있어서, 상기 테이블은 예측된 로케이션 또는 예측된 링크 메트릭에 기초하여 주어진 노드 또는 링크가 이용가능한 것으로 예측되는 미래 시간들을 포함하는 스케줄링된 시간들 또는 시간 프레임들을 포함하는, 방법.
  15. 제13항에 있어서, 상기 클라이언트 데이터 정보는 이력적 클라이언트 데이터 추이들을 포함하고, 상기 방법은, 상기 이력적 클라이언트 데이터 추이들에 기초하여 상기 클라이언트 데이터 정보를 예측함으로써, 상기 네트워크 제어기에 의해, 상기 결정된 토폴로지에 대한 상기 복수의 흐름들을 결정하는 단계를 더 포함하는, 방법.
  16. 제13항에 있어서, 상기 네트워크 구성은 하나 이상의 라우팅 경로들을 포함하며, 각각의 라우팅 경로는 상기 복수의 흐름들 중 하나의 흐름의 상기 하나 이상의 요건들을 충족시키는, 방법.
  17. 제16항에 있어서, 상기 네트워크의 상기 복수의 노드들에 전송된 상기 명령어들은 상기 복수의 노드들로 하여금 상기 하나 이상의 라우팅 경로들에 기초하여 하나 이상의 트랜시버를 조종하게 하는, 방법.
  18. 제16항에 있어서, 상기 네트워크의 상기 복수의 노드들에 전송된 상기 명령어들은 상기 복수의 노드들 중 적어도 하나의 노드로 하여금 상기 하나 이상의 라우팅 경로들에 따라 라우팅 테이블을 업데이트하게 하는, 방법.
  19. 제16항에 있어서, 상기 네트워크 제어기는 일련의 네트워크 구성들 및 상기 일련의 네트워크 구성들에 대한 스케줄을 생성하도록 추가로 구성되는, 방법.
  20. 제13항에 있어서, 상기 복수의 노드들은 자유공간 광통신을 수행하도록 구성되는, 방법.
  21. 시스템으로서,
    네트워크 제어기를 포함하며, 상기 네트워크 제어기는:
    네트워크의 복수의 노드들로부터 정보를 수신하며 - 상기 복수의 노드들은 제2 노드에 대해 움직이고 있는 제1 노드를 포함함 -;
    상기 수신된 정보에 기초하여 일정 기간(a period of time)에 걸쳐 상기 네트워크에서 노드들, 각각의 노드에서의 가용 스토리지, 및 가능한 링크들을 나타내는 테이블을 생성하며;
    상기 생성된 테이블에 기초하여 상기 일정 기간에 걸친 상기 네트워크의 일련의 토폴로지들을 결정하며;
    하나 이상의 클라이언트 디바이스들로부터 클라이언트 데이터 정보를 수신하며 - 상기 클라이언트 데이터 정보는 데이터량을 포함함 -;
    적어도 상기 데이터량 및 상기 각각의 노드에서의 가용 스토리지에 기초하여 상기 결정된 일련의 토폴로지들에 대한 복수의 흐름들을 결정하며 - 상기 복수의 흐름들 중 각각의 흐름은 상기 네트워크를 통한 라우팅 경로에 대한 하나 이상의 요건들을 포함함 -;
    상기 결정된 복수의 흐름들에 기초하여 상기 결정된 일련의 토폴로지들에 대한 네트워크 구성들의 스케줄을 생성하며;
    상기 일정 기간에 걸쳐 상기 네트워크 구성들의 스케줄을 구현하고 클라이언트 데이터를 송신하기 위한 명령어들을 상기 네트워크의 상기 복수의 노드들에 전송하도록
    구성되는, 시스템.
  22. 제21항에 있어서, 상기 복수의 노드들을 더 포함하는, 시스템.
  23. 제21항에 있어서, 상기 복수의 노드들은 하나 이상의 지상국들과 하나 이상의 고고도 플랫폼들을 포함하는, 시스템.
  24. 제21항에 있어서, 상기 복수의 노드들은 자유공간 광통신을 수행하도록 구성되는, 시스템.
  25. 제21항에 있어서, 상기 네트워크 구성들의 스케줄은 제1 네트워크 구성, 상기 제1 네트워크 구성을 뒤따르도록 스케줄링되는 제2 네트워크 구성, 제1 노드와 제2 노드 사이의 제1 부분 및 상기 제2 노드와 제3 노드 사이의 제2 부분을 갖는 제1 라우팅 경로를 포함하고, 상기 제1 라우팅 경로의 상기 제1 부분은 상기 제1 네트워크 구성의 일부이고 상기 제1 라우팅 경로의 상기 제2 부분은 상기 제2 네트워크 구성의 일부인, 시스템.
  26. 제25항에 있어서, 상기 제2 노드는 상기 데이터량을 저장하기에 충분한 가용 스토리지를 가지고, 상기 제1 라우팅 경로의 상기 제2 부분은 상기 제2 노드에서 시작하고, 상기 제2 노드는 상기 라우팅 경로의 상기 제2 부분을 통해 상기 클라이언트 데이터를 송신하기 전에 상기 클라이언트 데이터를 저장하도록 구성되는, 시스템.
  27. 제26항에 있어서, 상기 제2 네트워크 구성은 상기 제2 노드와 상기 라우팅 경로의 상기 제2 부분에서의 다음의 홉 사이에 새로 확립된 링크를 포함하는, 시스템.
  28. 제27항에 있어서, 상기 제2 노드는 상기 라우팅 경로의 상기 제2 부분에서의 상기 다음의 홉에 대해 움직이고 있는, 시스템.
  29. 제25항에 있어서, 상기 네트워크 제어기는,
    상기 일련의 토폴로지들 중 각각의 토폴로지에서 상기 제1 노드와 상기 제3 노드 사이에 라우트들이 없다고 결정하며;
    상기 일련의 토폴로지들 중 각각의 토폴로지에서 상기 제1 노드와 상기 제3 노드 사이에 라우트들이 없다는 결정에 응답하여 상기 네트워크 구성들의 스케줄을 생성하도록
    추가로 구성되는, 시스템.
  30. 제21항에 있어서, 상기 네트워크 제어기는,
    상기 데이터량을 저장하기에 충분한 가용 스토리지를 갖는 주어진 노드를 식별하는 것; 및
    상기 주어진 노드가 상기 적어도 하나의 흐름에서 일정 기간 동안 상기 클라이언트 데이터를 저장하는데 사용되는 상기 주어진 노드를 포함하는 적어도 하나의 흐름을 결정하는 것
    에 의해 적어도 상기 데이터량 및 각각의 노드에서의 상기 가용 스토리지에 기초하여 상기 결정된 일련의 토폴로지들에 대한 복수의 흐름들을 결정하도록 구성되는, 시스템.
  31. 방법으로서,
    네트워크를 위한 네트워크 제어기에 의해, 상기 네트워크의 복수의 노드들로부터 정보를 수신하는 단계 - 상기 복수의 노드들은 제2 노드에 대해 움직이고 있는 제1 노드를 포함함 -;
    상기 네트워크 제어기에 의해, 상기 수신된 정보에 기초하여 일정 기간에 걸쳐 상기 네트워크에서 노드들, 각각의 노드의 스토리지 용량, 및 가능한 링크들을 나타내는 테이블을 생성하는 단계;
    상기 네트워크 제어기에 의해, 상기 생성된 테이블에 기초하여 상기 일정 기간에 걸친 상기 네트워크의 일련의 토폴로지들을 결정하는 단계;
    상기 네트워크 제어기에 의해, 하나 이상의 클라이언트 디바이스들로부터 클라이언트 데이터 정보를 수신하는 단계 - 상기 클라이언트 데이터 정보는 데이터량을 포함함 -;
    상기 네트워크 제어기에 의해, 적어도 상기 데이터량 및 각각의 노드의 상기 스토리지 용량에 기초하여 상기 결정된 일련의 토폴로지들에 대한 복수의 흐름들을 결정하는 단계 - 상기 복수의 흐름들 중 각각의 흐름은 상기 네트워크를 통한 라우팅 경로에 대한 하나 이상의 요건들을 포함함 -;
    상기 네트워크 제어기에 의해, 상기 결정된 복수의 흐름들에 기초하여 상기 결정된 일련의 토폴로지들에 대한 네트워크 구성들의 스케줄을 생성하는 단계; 및
    상기 네트워크 제어기에 의해, 상기 일정 기간에 걸쳐 상기 네트워크 구성들의 스케줄을 구현하고 클라이언트 데이터를 송신하기 위한 명령어들을 상기 네트워크의 상기 복수의 노드들에 전송하는 단계
    를 포함하는, 방법.
  32. 제31항에 있어서, 상기 네트워크 구성들의 스케줄은 제1 네트워크 구성, 상기 제1 네트워크 구성을 뒤따르도록 스케줄링되는 제2 네트워크 구성, 제1 노드와 제2 노드 사이의 제1 부분 및 상기 제2 노드와 제3 노드 사이의 제2 부분을 갖는 제1 라우팅 경로를 포함하고, 상기 제1 라우팅 경로의 상기 제1 부분은 상기 제1 네트워크 구성의 일부이고 상기 라우팅 경로의 상기 제2 부분은 상기 제2 네트워크 구성의 일부인, 방법.
  33. 제32항에 있어서, 상기 제2 노드는 상기 데이터량을 저장하기에 충분한 가용 스토리지를 가지고, 상기 제1 라우팅 경로의 상기 제2 부분은 상기 제2 노드에서 시작하고, 상기 제2 노드는 상기 라우팅 경로의 상기 제2 부분을 통해 상기 클라이언트 데이터를 송신하기 전에 상기 클라이언트 데이터를 저장하도록 구성되는, 방법.
  34. 제33항에 있어서, 상기 제2 네트워크 구성은 상기 제2 노드와 상기 라우팅 경로의 상기 제2 부분에서의 다음의 홉 사이에 새로 확립된 링크를 포함하는, 방법.
  35. 제34항에 있어서, 상기 제2 노드는 상기 라우팅 경로의 상기 제2 부분에서의 상기 다음의 홉에 대해 움직이고 있는, 방법.
  36. 제32항에 있어서,
    상기 네트워크 제어기에 의해, 상기 일련의 토폴로지들 중 각각의 토폴로지에서 상기 제1 노드와 상기 제3 노드 사이에 라우트들이 없다고 결정하는 단계; 및
    상기 네트워크 제어기에 의해, 상기 일련의 토폴로지들 중 각각의 토폴로지에서 상기 제1 노드와 상기 제3 노드 사이에 라우트들이 없다는 결정에 응답하여 상기 네트워크 구성들의 스케줄을 생성하는 단계
    를 더 포함하는, 방법.
  37. 제31항에 있어서, 적어도 상기 데이터량 및 각각의 노드에서의 상기 가용 스토리지에 기초하여 상기 결정된 일련의 토폴로지들에 대한 복수의 흐름들을 결정하는 단계는,
    상기 데이터량을 저장하기에 충분한 가용 스토리지를 갖는 주어진 노드를 식별하는 단계; 및
    상기 주어진 노드가 상기 적어도 하나의 흐름에서 일정 기간 동안 상기 클라이언트 데이터를 저장하는데 사용되는 상기 주어진 노드를 포함하는 적어도 하나의 흐름을 결정하는 단계
    를 포함하는, 방법.
  38. 프로그램의 컴퓨터 판독가능 명령어들이 저장되는 비일시적인 유형의 컴퓨터 판독가능 저장 매체로서, 상기 명령어들은, 네트워크를 위한 네트워크 제어기에 의해 실행될 때, 상기 네트워크 제어기로 하여금 방법을 수행하게 하고, 상기 방법은,
    상기 네트워크의 복수의 노드들로부터 정보를 수신하는 단계 - 상기 복수의 노드들은 제2 노드에 대해 움직이고 있는 제1 노드를 포함함 -;
    상기 수신된 정보에 기초하여 일정 기간에 걸쳐 상기 네트워크에서 노드들, 각각의 노드의 스토리지 용량, 및 가능한 링크들을 나타내는 테이블을 생성하는 단계;
    상기 생성된 테이블에 기초하여 상기 일정 기간에 걸친 상기 네트워크의 일련의 토폴로지들을 결정하는 단계;
    하나 이상의 클라이언트 디바이스들로부터 클라이언트 데이터 정보를 수신하는 단계 - 상기 클라이언트 데이터 정보는 데이터량을 포함함 -;
    적어도 상기 데이터량 및 각각의 노드의 상기 스토리지 용량에 기초하여 상기 결정된 일련의 토폴로지들에 대한 복수의 흐름들을 결정하는 단계 - 상기 복수의 흐름들 중 각각의 흐름은 상기 네트워크를 통한 라우팅 경로에 대한 하나 이상의 요건들을 포함함 -;
    상기 결정된 복수의 흐름들에 기초하여 상기 결정된 일련의 토폴로지들에 대한 네트워크 구성들의 스케줄을 생성하는 단계; 및
    상기 일정 기간에 걸쳐 상기 네트워크 구성들의 스케줄을 구현하고 클라이언트 데이터를 송신하기 위한 명령어들을 상기 네트워크의 상기 복수의 노드들에 전송하는 단계
    를 포함하는, 비일시적인 유형의 컴퓨터 판독가능 저장 매체.
  39. 제38항에 있어서, 상기 네트워크 구성들의 스케줄은 제1 네트워크 구성, 상기 제1 네트워크 구성을 뒤따르도록 스케줄링되는 제2 네트워크 구성, 제1 노드와 제2 노드 사이의 제1 부분 및 상기 제2 노드와 제3 노드 사이의 제2 부분을 갖는 제1 라우팅 경로를 포함하고, 상기 제1 라우팅 경로의 상기 제1 부분은 상기 제1 네트워크 구성의 일부이고 상기 라우팅 경로의 상기 제2 부분은 상기 제2 네트워크 구성의 일부인, 비일시적인 유형의 컴퓨터 판독가능 저장 매체.
  40. 제39항에 있어서, 상기 제2 노드는 상기 데이터량을 저장하기에 충분한 가용 스토리지를 가지고, 상기 제1 라우팅 경로의 상기 제2 부분은 상기 제2 노드에서 시작하고, 상기 제2 노드는 상기 제1 라우팅 경로의 상기 제2 부분을 통해 상기 클라이언트 데이터를 송신하기 전에 상기 클라이언트 데이터를 저장하도록 구성되는, 비일시적인 유형의 컴퓨터 판독가능 저장 매체.
KR1020197031660A 2017-04-26 2018-04-25 Ngso 위성 네트워크들을 위한 시공간적 소프트웨어 정의 네트워킹 KR102261930B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217016816A KR102482168B1 (ko) 2017-04-26 2018-04-25 Ngso 위성 네트워크들을 위한 시공간적 소프트웨어 정의 네트워킹

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US15/497,738 2017-04-26
US15/497,738 US10581523B2 (en) 2017-04-26 2017-04-26 Temporospatial software-defined networking for NGSO satellite networks
US201762511377P 2017-05-26 2017-05-26
US62/511,377 2017-05-26
US15/954,922 2018-04-17
US15/954,922 US10374695B2 (en) 2017-05-26 2018-04-17 Temporospatial software-defined networking for NGSO satellite networks
PCT/US2018/029385 WO2018200690A1 (en) 2017-04-26 2018-04-25 Temporospatial software-defined networking for ngso satellite networks

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217016816A Division KR102482168B1 (ko) 2017-04-26 2018-04-25 Ngso 위성 네트워크들을 위한 시공간적 소프트웨어 정의 네트워킹

Publications (2)

Publication Number Publication Date
KR20190126928A true KR20190126928A (ko) 2019-11-12
KR102261930B1 KR102261930B1 (ko) 2021-06-08

Family

ID=68342005

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197031660A KR102261930B1 (ko) 2017-04-26 2018-04-25 Ngso 위성 네트워크들을 위한 시공간적 소프트웨어 정의 네트워킹
KR1020217016816A KR102482168B1 (ko) 2017-04-26 2018-04-25 Ngso 위성 네트워크들을 위한 시공간적 소프트웨어 정의 네트워킹

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020217016816A KR102482168B1 (ko) 2017-04-26 2018-04-25 Ngso 위성 네트워크들을 위한 시공간적 소프트웨어 정의 네트워킹

Country Status (6)

Country Link
EP (1) EP3616370A4 (ko)
JP (3) JP2020518155A (ko)
KR (2) KR102261930B1 (ko)
AU (3) AU2018258169B2 (ko)
CA (1) CA3059957C (ko)
SG (1) SG11201909354XA (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240038330A (ko) 2022-09-16 2024-03-25 주식회사 엘지유플러스 저궤도 위성 네트워크 구성 방법 및 장치

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11757771B2 (en) 2020-05-25 2023-09-12 Airbus Defence And Space Sas Method for routing packets in a communication network having a variable and predictable topology
CN111953513B (zh) * 2020-07-02 2022-06-14 西安电子科技大学 面向Walker星座的星座拓扑构型表征方法、系统及应用
US11552849B2 (en) * 2020-12-30 2023-01-10 Aalyria Technologies, Inc. Hybrid software-defined networking and mobile ad-hoc networking routing in mesh networks

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160037434A1 (en) * 2014-08-03 2016-02-04 Hughes Network Systems, Llc Centralized ground-based route determination and traffic engineering for software defined satellite communications networks
EP2985926A1 (en) * 2014-08-12 2016-02-17 Airbus Operations GmbH Radio aircraft network with an operator station storing aircraft and ground-based stations locations and establishing a path between the aircraft and the ground stations based on the locations.

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590395A (en) * 1993-11-10 1996-12-31 Motorola, Inc. Satellite cellular network resource management method and apparatus
US5430729A (en) * 1994-04-04 1995-07-04 Motorola, Inc. Method and apparatus for adaptive directed route randomization and distribution in a richly connected communication network
JP2956837B2 (ja) * 1998-06-29 1999-10-04 株式会社日立製作所 衛星通信システム、端末局、センタ局
US7502382B1 (en) * 2004-09-30 2009-03-10 Itt Manufacturing Enterprises, Inc. Method and apparatus for multicast packet distribution in a satellite constellation network
US7599314B2 (en) * 2007-12-14 2009-10-06 Raptor Networks Technology, Inc. Surface-space managed network fabric
US9923787B2 (en) * 2012-04-27 2018-03-20 International Business Machines Corporation Network configuration predictive analytics engine
FI20135058L (fi) * 2013-01-21 2014-07-22 Tellabs Oy Menetelmä ja ohjausjärjestelmä ohjelmallisesti määriteltävän verkon kontrolloimiseksi
JP6275519B2 (ja) * 2014-03-20 2018-02-07 株式会社Kddi総合研究所 無線中継装置、無人航空機システム、プログラムおよび無線中継方法
US10404608B2 (en) * 2014-10-31 2019-09-03 Huawei Technologies Co., Ltd. Systems, devices, and methods for low-jitter communication over a packet-switched network
JP6517116B2 (ja) * 2015-09-03 2019-05-22 Kddi株式会社 Ponシステムおよび通信方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160037434A1 (en) * 2014-08-03 2016-02-04 Hughes Network Systems, Llc Centralized ground-based route determination and traffic engineering for software defined satellite communications networks
EP2985926A1 (en) * 2014-08-12 2016-02-17 Airbus Operations GmbH Radio aircraft network with an operator station storing aircraft and ground-based stations locations and establishing a path between the aircraft and the ground stations based on the locations.

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240038330A (ko) 2022-09-16 2024-03-25 주식회사 엘지유플러스 저궤도 위성 네트워크 구성 방법 및 장치
WO2024057295A3 (ko) * 2022-09-16 2024-05-10 주식회사 엘지유플러스 저궤도 위성 네트워크 구성 방법 및 장치

Also Published As

Publication number Publication date
JP2022003816A (ja) 2022-01-11
KR102482168B1 (ko) 2022-12-29
AU2018258169B2 (en) 2020-09-17
JP2023134502A (ja) 2023-09-27
AU2020289788A1 (en) 2021-01-21
EP3616370A1 (en) 2020-03-04
EP3616370A4 (en) 2021-01-20
AU2018258169A1 (en) 2019-10-31
CA3059957A1 (en) 2018-11-01
JP2020518155A (ja) 2020-06-18
AU2020289788B2 (en) 2021-12-09
AU2022201597A1 (en) 2022-04-07
JP7319495B2 (ja) 2023-08-02
AU2022201597B2 (en) 2023-02-16
KR102261930B1 (ko) 2021-06-08
KR20210068619A (ko) 2021-06-09
SG11201909354XA (en) 2019-11-28
CA3059957C (en) 2023-03-07

Similar Documents

Publication Publication Date Title
US10812185B2 (en) Temporospatial software-defined networking for NGSO satellite networks
US10958528B2 (en) Hybrid LEO/HAPS constellation for fixed broadband
US11212000B2 (en) Temporospatial software-defined networking for NGSO satellite networks
AU2020289788B2 (en) Temporospatial software-defined networking for NGSO satellite networks
WO2018200690A1 (en) Temporospatial software-defined networking for ngso satellite networks
US20230119905A1 (en) Hybrid software-defined networking and mobile ad-hoc networking routing in mesh networks

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant