Back to list
스카이와이어 - 스카이코인 메쉬넷(Meshnet) 프로젝트

- 소개
- 라우팅 : 개요
- 보상 : 지불 프로토콜
- 소스 라우팅 : 링크 계층 암호화
- IPv4 게이트웨이 : 기존 ISP 우회
- 스카이와이어 데몬 서비스 구조
- 다중 홈 라우팅 및 링크 집계
- 메쉬 라우팅 : 저장 및 전송
- 저장 및 전송 : 용량 활용
- 저장 및 전송 : 예
- 저장 및 전송 : 대역폭 대기 작업
- 저장 및 전송 : 용량 활용, 품질 및 서비스
- 소스 라우팅 : 다중 경로 모바일 연결
- 소스 라우팅 : 보호 노드
- 소스 라우팅 : BGP의 제한
- 가상 경로 : 스카이와이어 네트워크 토폴로지 규모
- 소스 라우팅 : 가상 경로, SONET 토폴로지
- 소스 라우팅 : 비대칭 연결
- 소스 라우팅 : 경로 검색
소개
스카이와이어의 목표 :
- 브로드밴드의 경쟁력을 높입니다. 현재 IPS 서비스를 대체합니다. last mile을 활용합니다.
- 커뮤니티가 사용자가 운영하는 인프라를 위한 ISP를 구축할 수 있습니다.
스카이와이어는 새로운 다크넷 프로토콜입니다.
- 낮은 대기율(TCP / IP만큼 빠르며 이론적으로는 기본 네트워크에서 더 빠름)
- 고성능(비디오, 파일 공유 및 고성능을 요구하는 응용 프로그램에 최적화)
- 개인정보보호 정책
- Wifi 지원(메쉬넷)
- Clearnet 지원 (Darknet / Overlay)
스카이와이어(Skywire)는 네트워크 배포에 대한 인센티브 및 불편한 문제를 해결합니다.
- 사용자는 네트워크 자원을 제공하고 스카이코인을받습니다.
- 사용자는 네트워크 자원을 사용하기 위해 동전을 소비합니다.
스카이와이어는 누구나 접근 가능합니다.
- 누구나 스카이와이어 노드에 연결할 수 있습니다.e
- 전역 개방형 액세스 메쉬넷(Meshnet)을 만드는 것이 목표입니다.
스카이와이어는 개인정보를 보호합니다.
- 노드를 통과하는 트래픽을 IP주소로 추적할 수 없습니다.
- 노드 전송 트래픽은 이전 및 다음 홉(hop)만 볼 수 있습니다.
- 제3자가 개별 패킷을 스트림 또는 사용자에 연결할 수 없습니다.
- 타사 및 전송 노드는 트래픽 내용을 읽을 수 없습니다.
라우팅 : 개요
스카이와이어 매쉬넷(Skywire meshnet)은 소스-라우트 저장- 전달(source-routed store-and-forward) 프로토콜을 사용합니다.
오버레이 네트워크(overlay network)의 핵심은 일련의 노드들에 있습니다.
- 각 노드는 공개 키 해시로 식별됩니다.
- 각 노드는 메시지를 수신 및 전송합니다.
- 노드는 트래픽 전송을 위해 코인을받습니다.
노드 ‘A’와 ‘C’ 사이의 통신을 위해서는 노드 ‘B’를 거쳐야 합니다.:
- 노드 ‘A’가 노드 ‘B’에 연결하고 경로를 설정합니다.
- 노드 ‘A’가 노드 ‘C’로 경로를 확장합니다.
- 트래픽은 경로를 거쳐 ‘A’는 ‘C’에 도착하게 됩니다.
경로 A -> B -> C -> D:
- 노드는 경로의 이전 홉(hop)과 다음 홉(hop)만 알고 있습니다.
- ‘C’는 메시지가 ‘B’를 거쳐서 ‘D’에 전달됨을 알 수 있습니다. 그러나 ‘C’는 ‘A’가 누구인지 알 수 없습니다.
- ‘B’는 ‘A’가 그 경로은 원점인 것을 추측할 수 없습니다.
- ‘C’는 ‘D’가 그 메시지의 최종 목적지인 것을 추측할 수 없습니다.
- ‘B’와 ‘C’는 메시지의 내용을 읽을 수 없습니다.(종점(end-to-end) 암호화)
- 특정 메시지의 전송에 참여하지 않는 제3자는 메시지 내용에 대한 정보를 얻을 수 없습니다.(링크 계층 암호화) *동일한 목적지에 대한 여러 경로의 여러 메시지가 번들로 제공되어, 제3자가 트래픽 분석을 수행 할 수 없습니다.
가장 간단히 구현할 수 있는 경로는 128 비트 프리픽스입니다. 각 노드는 프리픽스를 읽고, 패킷을 전송할 다음 노드를 결정하기 위해 테이블에서 조회를 수행합니다.
소스는 라우팅을 완벽하게 제어합니다.
- 각 노드는 자신의 필요에 맞게 라우팅 프로토콜을 독립적으로 업그레이드 할 수 있습니다.
- 소스는 VOIP 또는 게임의 서비스를 위해 대기 시간이 짧은 네트워크 경로를 위한 네트워크 경로를 최적화 할 수 있습니다.
- 소스는 비디오 및 파일 공유 응용 프로그램의 처리를 위해 네트워크 경로를 최적화 할 수 있습니다.
- 소스는 중복성, 대기 시간 및 처리량 감소를 위해 여러 경로를 묶을 수 있습니다.
일부 응용 프로그램은 다음을 위해 응용 프로그램 계층에 여러 개의 다중 경로를 제공합니다.:
- 개인 정보 보호(gatekeeper 노드, tor 타입 게이트웨이/anon 서비스)
- 처리량
- 대기 시간 감소
- 여분(redundancy)
이것은 스카이코인 오버레이 네트워크의 핵심입니다. 그것은 매우 간단하지만 매우 강력합니다. 기술 및 구현 세부 사항은 나중에 논의 될 것입니다.
스카이와이어는 패킷에 경로ID를 붙이는 간단한 프리픽스(prefixes)를 사용합니다.
- 라우팅은 매우 간단한 테이블 조회방식입니다.
- 패킷 당 오버 헤드는 일정하며 경로가 긴 경우에도 증가하지 않습니다.
설명:
- 목적지는 출발지의 신원을 알지 못한다. 식별자는 라우팅 레이어가 아니라 애플리케이션 레이어입니다. 신원은 공개키를 통해 확인되어야 합니다.
- 중개자 공격은 불가능합니다. 소스는 그들의 공개키를 통해 목적지를 확인할 수 있습니다.
- IPv4로부터 프라이버시가 크게 향상되어 패킷을 처리하는 모든 사람이 패킷의 목적지, 소스 및 내용을 볼 수 있습니다.
- ISP가 hot potato 라우팅을 사용하기 때문에 성능이 IPv4 / BGP보다 우수합니다.
- 종단 간 암호화는 패킷 인젝션 공격 및 스푸핑을 제거합니다. 스푸핑 트래픽은 연결 터널의 양쪽 끝에 개인키가 필요합니다.
- 암호화가 빠릅니다. 목표는 FPGA 하드웨어에서 10Gb/s, ARM에서 200Mb/s 입니다.
보상 : 지불 프로토콜

이것은 스카이코인의 “채굴"과 동등하며 그들의 첫 번째 코인을 몇 명의 사용자가 얻을지 결정합니다.
전송에 대한 지불은 소스 노드의 ID를 나타내지 않아야 합니다. 스카이코인은 더 나은 프로토콜이 개발될 때까지 제3자를 통해 비공개 에스크로 지불을 사용합니다.
경로 상 각 노드와 원 노드는 트래픽을 기록합니다. 그들은 대역폭 지불을 주기적으로 계산합니다.
원 노드는 제 3의 공간 및 에스크로에서 동전을 보관하고 있습니다. 익명 계정은 서드파티(제3자)와 함께 생성됩니다. 각 노드는 원 노드의 정보를 참조하지 않고 서드파티를 통해 원 노드 및 지불능력에 대해 확인할 수 있습니다. 서드파티에서 각 원본 계정은 여러 개의 연결되지 않은 익명 계정으로 표시됩니다. 각 중계 노드는 여러 개의 연결되지 않은 익명 계정으로 표시됩니다.
소규모 거래는 블럭체인 트랜젝션 외부에서 내부거래로 처리될 것입니다. 오프-블록 체인 트랜잭션은 잔고가 최소값(현재 1 스카이코인)을 넘는 경우, 이전에 사용되지 않은 새로 생성된 주소로 출금할 수 있습니다. 이것은 블록체인의 팽창을 감소시키며 마이크로트랜잭션을 블록체인 외부에서 수행할 수 있도록 합니다.
소스 라우팅 : 링크 계층 암호화
이것은 홉과 기본 종단(end-to-end) 암호화 간의 기본 링크 계층 암호화입니다. 일반적인 응용 프로그램은 링크 계층 암호화, 종단 간 암호화 및 적절한 응용 프로그램 계층 암호화를 사용합니다.
노드 간 암호화는 빠르게 수행됩니다. FPGA 실행은 10Gb/s 회선 속도를 지원해야 합니다. ARM 프로세서는 250Mb/s를 지원할 수 있어야 합니다.
현재 가장 적합한 후보는 ECC secp256k1 임시 키 교환방식을 사용하는 ChaCha20입니다.
ChaCha20은 단순한 산술 연산만을 사용하며, 임베디드 장치의 경우 AES보다 빠르고, AES보다 시차공격(timing channel attacks) 방어가 더 강력합니다.
최신 CPU는 초당 6000 secp256k1 ECDH 작업을 수행 할 수 있습니다. 세션 키 순환은 초당 한 번 또는 노드 간의 라운드 트립 대기 시간의 두 배가 되어야 합니다. 각 방향의 통신을 위해 별도의 키가 있어야 합니다.
이전 세션 키는 ECDH를 통해 전달받은 비밀데이터에 축적되어야 합니다.
공개키 암호화(ECC)를 통해 설정된 세션키는, 보다 빠른 비대칭 암호화 알고리즘(AES, ChaCha20)을 사용하여 통신을 암호화 하기 위해 사용됩니다. 이것은 노드 간의 통신을 위한 기본 계층 암호화 기법입니다.
프로토콜 예제 : 노드 ‘A’ 와 ‘B’
- 노드
A가 암호화 된 데이터를 노드B에 보내기 위한 세션키를 생성하려고합니다. - 노드
B는 개인키P와 함께 공개키P를 가지고 있습니다.P는 ECC sep256k1 경로의 한 지점입니다.P는 256 비트 정수입니다.P는 기준점 b이며, 경로 추가 작업 시 생성됩니다. - 노드
A는 개인키q와 임시 공개키Q를 생성합니다. (NodeA는 무작위로 20바이트 정수를 생성합니다. 이 키는 개인키q입니다. 노드A는 기준점을q지점으로 높이고, 개인키Q를 생성하는데, 이것은 경로의 한 지점입니다.) - 노드
A를P*q로 전송합니다.(구간P의 포인트,B의 공개키,q의 파워를 높여줍니다.) - 노드
A는 노드B로P를 전송합니다. - 노드
B는P를 수신받아P*q를 계산하고, 노드A는p*Q를 계산할 수 있습니다. 그리고 그 계산값은 동일합니다. 이것은 해시 처리된 세션키를 생성하기 위해 공유된 비밀입니다. P = b*q, 따라서P*q'와 '(b*p)*q는 같습니다.A는q,Q와P를 알고 있으며,B는p,P와Q를 알고 있습니다. 따라서A와B는 그들의 비밀방식을 사용하여P*q와Q*p를 계산할 수 있습니다. 그러나 제3자는A의 개인키q나B의 개인키p를 알 수 없는데, 제3자는 “비밀방식"을 계산할 수 없으며 또한 비밀방식으로 암호화 된 그 어떤 정보도 읽을 수 없기 때문입니다.- 노드
B는 세션 키 업데이트의 수신을 확인합니다. 노드A는B로부터 확인 받은 즉시, 새로운 세션 키로부터 전송을 시작합니다. - 노드
A는 노드B로 세션 키를 사용한 ChaCha20라는 비대칭 암호화 키로 암호화하여 메시지를 전송합니다.
가능한 개선 사항 :
- 잦은 세션 키 업데이트. 몇 초 또는 몇 분마다 ECDH 키 교환.
- 새로운 세션 키를 생성하기 위해 새로운 ECDH 암호화를 이전 세션키로 해시해야 합니다.
- nonce를 패킷에 추가하고 secret을 nonce에 해시하여 각 메시지의 키를 생성합니다. 같은 키는 결코 재 사용되지 않습니다. 알려진 평문 공격의 영향을 줄입니다.
- 메시지에서 알려진 평문을 제거합니다.
- 패드 메시지를 16 또는 32 바이트의 배수로 설정합니다.
IPv4 게이트웨이 : 기존 ISP 우회
많은 사람들이 단 하나의 ISP를 사용하고 있습니다. 이것은 스카이와이어가 어떻게 시장 경쟁력을 높일 수 있는지 간단하게 설명할 수 있습니다.
일부 응용 프로그램은 스카이와이어 주소 공간에서 원활하게 실행할 수 있습니다. 비트토렌트(Bittorrent), 파일 동기화 및 통신 애플리케이션과 같은 일부 애플리케이션은 스카이와이어 인프라 구조를 강력하게 활용하며 원활하게 실행될 수 있도록 개선될 것입니다.
Netflix, Facebook, Twitter와 같은 기존 응용 프로그램은 스카이와이어 오버레이 네트워크를 IPv4 및 IPv6 네트워크와 연결하는 네트워크 게이트웨이가 필요합니다.
사용자는 지역 센터의 서버에서 실행 중인 스카이와이어 게이트웨이를 선택합니다. 사용자의 IPv4 트래픽은 게이트웨이를 통해 이동합니다.(VPN과 유사) 사용자 IP는 게이트웨이 서버의 IP로 나타납니다. 서버는 Netflix 전송속도 제한율이 없는 제공 업체를 통해 다중 고속 인터넷 백본을 위한 기가비트 연결을 설정합니다. 사용자는 스카이와이어 IPv4 게이트웨이를 제공하는 업체들 중에서 다양한 선택을 할 수 있습니다. 게이트웨이 제공업체에게 사용량 기준으로 스카이코인이 지급될 것입니다.
사용자 개인의 스카이와이어 노드는 가능한 모든 경로를 통해 게이트웨이에 연결됩니다. 스카이와이어 노드는 라우터에서 지역 센터의 게이트웨이로 IPv4 트래픽을 전송합니다. 게이트웨이 노드의 IP 주소는 사용자에게 표시되는 IP 주소입니다.
예제 1
사용자는 10 Mb/s 케이블 모뎀을 사용합니다. 그들은 Skywire 라우터를 설치합니다. 라우터는 컴퓨터, 스카이와이어 Wifi 노드 및 케이블 모델에 연결됩니다. 라우터는 스카이와이어의 IPv4 터널로 구성됩니다. 그들은 개인용 컴퓨터를 라우터에 연결합니다.
스카이와이어 wifi 노드는 10Mb/s 케이블 모뎀에 연결된 wifi를 통해 이웃 스카이와이어 노드에 연결됩니다. 이웃 역시 200Mb/s 5GHz Wi-Fi와 점-대-점 안테나가 있으며, 이것은 근처에 위치한 스카이와이어 무선랜 노드 사업장과 연결되어 있습니다.
사용자의 Skywire 라우터는 clearnet 연결을 통해 노드를 먼저 검색하고 경로를 설정하는 작업을 반복합니다.
- 사용자의 케이블 모뎀
- Wifi -> 이웃의 케이블 모뎀
- Wifi -> 5 GHz 점 대 점 -> 100/30 Mb/s 비지니스/필드 소멸
사용자는 IPv4 터널에 연결하여 모든 경로에서 대역폭에 접속 및 집계 할 수 있습니다. 총 대역폭과 신뢰성이 일정 수준에 도달한 커뮤니티에서, 사용자는 더 이상 연결을 위한 케이블 모뎀을 필요로 하지 않습니다.
예제 2
근처에 100/30 Mb/s fiber drop과 SLA를 가진 사업장이 있다. 사업장은 인터넷 사용을 위해 정해진 요금을 지불합니다. 사용하지 않는 대역폭은 모두 손실됩니다. 사업장은 스카이와이어 라우터를 연결합니다. 라우터에는 3 개의 포트가 있습니다. 첫 번째 포트는 WAN 연결이고, 두 번째 포트는 내부 네트워크이며, 세 번째 포트는 옥상에 있는 스카이와이어 Wi-Fi 노드로 연결됩니다. 라우터는 내부 네트워크의 트래픽을 버퍼링하고 우선 순위를 지정하며 사용되지 않는 용량을 스카이와이어 트래픽에 할당합니다. 운영자는 전송을 위해 쓰이는 fiber drop 비용에 대한 보조금으로써 스카이코인을 받는다.
스카이와이어 데몬 서비스 구조
- 각 스카이코인 노드에는 Secpk256k1 공개키가 있습니다.
- 각 Skycoin 노드에는 식별을 위한 스카이코인 주소가 있습니다. 주소는 노드의 공용키 해시입니다. 이 공개 키 해시는 네트워크의 IP 주소와 동일합니다.
- 각 스카이코인 노드들은 피어가 연결된 연결 풀이 있습니다. 이것들은 TCP, UDP clearnet 연결, 직접적인 이더넷 및 Wifi 피어(메쉬넷 작업)를 통한 물리적 연결을 통해 피어가 될 수 있습니다. 연결은 물리적 연결 또는 clearnet 연결을 통해 전송되는 “가상 연결"일 수도 있으며 나중에 다시 설명됩니다.
- 피어와 연결된 각 연결 인스턴스에는 “채널"이 있습니다. 채널은 TCP의 “포트"와 유사한 16 비트 정수입니다.
- 주고 받은 모든 메시지에는 32 비트 길이의 접두사와 16 비트 채널이 있습니다.
- 채널 0은 스카이와이어 데몬 간의 통신을 위해 예약되어, 데몬에서 실행되는 서비스에 대한 메타 정보와 네트워크 작동에 필요한 기타 데이터를 노출합니다.
- 스카이와이어 데몬은 채널에 “서비스"를 노출시킬 수 있습니다. 서비스는 채널에서 수신된 데이터 메시지를 처리하고 원격 피어 및 서비스로 보내지는 데이터 메시지를 전송하는 프로세스입니다.
서비스 예 : 블록 체인 동기화
이 예제는 Golang 구현을 나타내지만, 데몬 구조는 특정 언어에 제한적이지 않습니다.
당신은 두 개의 서로 다른 개인 블록체인을 공개키 A 및 B와 동기화 하려고 합니다. 당신은 우선 두 개의 “블록체인 동기화 서비스” 인스턴스를 시작하고, 각각의 공개 키를 구성하여 스카이코인 데몬과 연동시킵니다 이 서비스는 당신의 로컬 데몬(각각의 개별적인 채널)에서 실행됩니다.
Peer 찾기
블록 체인 동기화 데몬은 공개키를 해시처리 DHT(분산된 해시 테이블) 조회를 수행하여 블록체인을 동기화하는 다른 피어를 찾습니다. 일단 피어가 발견되면 피어는 PEX(피어 교환)를 통해 다른 피어에게 접근할 수 있습니다.
메시지 송/수신
레지스터 등록 서비스는 송/수신 가능한 메시지 목록을 생성할 수 있습니다. 메시지는 Golang 구조입니다. 메시지 구조체 데이터는 생성되고 전송됩니다. 데이터가 도착하고 .Handle () 메서드가 해당 메시지 구조체에 호출됩니다.
다중 홈 라우팅 및 링크 집계
만약 당신이 2Mb/s 케이블 모뎀을 가지고 있고 이웃이 2Mb/s 케이블 모뎀을 가지고 있으며 각각 스카이와이어 노드를 실행하고 있다면, 당신의 스카이와이어 노드를 이웃의 노드에 연결할 수 있으며, 쌍방 연결에 대한 대역폭을 집계할 수 있습니다. 이제 패킷은 케이블 모뎀을 통해 경로를 설정하고 케이블 모뎀을 통해 라우팅 할 수 있습니다. 케이블 모뎀은 초크 포인트입니다. 4 Mb/s 연결을 얻으려면, 트래픽이 두 모뎀을 통해 병렬 경로로 전달되어야 합니다.
비트 토렌트(Bittorrent)와 같은 응용 프로그램은 사용 가능한 모든 연결에서 대역폭을 집계 할 수 있는데, 기본적으로 지역 루트를 통해 많은 수의 연결(커넥션)을 생성하기 때문입니다.
메쉬 라우팅 : 저장 및 전송
메쉬를 통해 통신하는 네트워크의 가장자리에 있는 노드의 경우 몇 가지 문제가 있습니다.
8홉 네트워크는 Wifi를 거쳐가며 각 홉에서 패킷의 50 %가 탈락되고, 256 패킷 중 1패킷만 통과하게됩니다. 패킷 탈락은 Wifi에서는 정상이지만, 일반적인 TCP는 패킷 탈락을 혼잡으로 처리하고 연결 속도를 다시 조절합니다.
네트워크 종단에서 스카이와이어는 저장과 전송을 사용하여 경로를 이동할 것입니다. 이것은 스카이와이어 노드에 메모리 요구사항을 부과하지만 네트워크 성능을 크게 향상시킵니다.
경로 A->B->C
- 각 경로에는 버퍼가 있습니다.
- 각 노드는 수신/확인 될 때까지 메시지를 계속 보냅니다.
- 만약 버퍼가
B->C에서 보낸 메시지로 꽉 차 있다면,A이 이것을 알게되고, 전송 된 데이터가 위치할 공간이 확보될 때까지 전송을 중단시킵니다.
따라서 링크 계층의 노드 간에는 두 가지 확인 응답이 있습니다. 하나의 확인 응답은 전송된 데이터 세그먼트가 수신되었다는 확인 응답입니다. 또 다른 하나는 버퍼의 데이터가 경로 상의 다음 노드로 송신되고 수신 확인되었음을 확인하는 것입니다.
저장 및 전송 : 용량 활용
기존의 IP 네트워크에서는 네트워크 링크가 용량에 따라 활용되어 효율성이 떨어졌습니다. 80 % 용량으로 실행되는 네트워크는 단기간에 소모되는 데이터로 인해 라우터의 용량이 초과되어 네트워크 패킷이 삭제되는 위험에 노출됩니다.
TCP는 어떠한 이유로 인해서 탈락된 패킷을 지연으로 인지하여 속도를 줄입니다. 탈락된 패킷은 TCP에서 재전송을 요구하고 응용 프로그램이 패킷 스트림의 나머지를 처리하기 전에 타임아웃 및 재전송된 패킷은 대기시간을 갖습니다.
저장 및 전송 작업 중, 라우트 버퍼가 채워지면 아무 일도 일어나지 않습니다. 버퍼가 채워질 때, 들어오는 노드는 버퍼의 여유공간이 생길 때 까지 데이터 전송을 중지합니다.
이러한 저장 및 전송 작업은 실용적인 Wi-Fi 메쉬 네트워크를 위해 특히 중요합니다. 2.4GHz 대역에는 겹치지 않는 채널이 세 개뿐입니다. 패킷 손실은 Wi-Fi 네트워크의 대역폭 포화시점과 비교하여 매우 빠르게 증가합니다. Wi-Fi 패킷 손실은 피할 수 없으며 혼잡이나 용량 제한을 확실하게 나타내지 않습니다.
저장 및 전송 기능을 사용하면 Wifi 노드를 최대 용량으로 실행하여 TCP 혼잡 제어를 트리거하지 않고 사용 가능한 모든 대역폭을 효율적으로 활용할 수 있습니다.
실제 네트워크는 다음을 필요로합니다.:
- Radio가 정의된 소프트웨어
- MIMO
- 빔 형성
- 지향성 안테나
- 전송 시간, 방송 파워 및 공동 주파수 사용을 위한 시간조정
- 801.11af 사용가능한 주파수
저장 및 전송 : 예
각 경로의 각 노드는 다음을 추적합니다.:
- 경로를 통해 수신된 노드의 버퍼 크기
- 예상 버퍼 크기 (확인 및 확인되지 않은 데이터 세그먼트)
- 확인된 버퍼 크기
- 확인되지 않은 각 전송된 메시지의 오프셋, 크기 및 순서
- 확인받지 못한 외부 데이터그램 순환 버퍼
링크 계층의 데이터 세그먼트에는 동일한 노드로 주소 지정된 여러 경로의 연결 메시지가 포함될 수 있습니다. 이는 트래픽 분석을 방해하며 더 높은 MTU를 지원하는 네트워크에서 더 큰 데이터그램을 허용하여 성능을 향상시킵니다.
각각의 전송 된 메시지에는 두 개의 응답(ack)이 있습니다. 첫 번째 응답은 데이터그램이 경로 상의 다음 노드에 수신되었다는 것입니다. 이것은 데이터 그램에 대한 응답이며, 여러 개의 메시지가 포함될 수 있고, 각 메시지는 서로 다른 경로로 전송됩니다. 이 응답을 받은 후에 노드는 더 이상 데이터그램을 유지할 필요가 없습니다. 만약 데이터그램이 확인되지 않았다면, 다시 보내야합니다.
두 번째 응답은 경로에 들어오는 버퍼에 있는 나머지 잔여 바이트에 대한 업데이트입니다. 만약 버퍼에있는 여유 공간이 충분히 크다면, 해당 경로에 대한 추가 메시지를 전송할 수 있습니다.
또 다른 가능한 접근법은, 경로 대신에 송신자 당 버퍼를 유지하고, 수신자는 정체된 경로로 송신자에게 블록 메시지를 보냅니다. 이것은 송신자가 필요로 하는 경로 해시 조회수를 줄일 수 있으며, 테스트가 필요할 수도 있습니다.
정상 작동의 예
경로: A->B->C
- B는 경로를 위해 1024KB 버퍼를 가짐
- A가 512KB를 B로 전송
- B는 512KB를 A로 보낸 것을 확인
- < A는 응답을 수신(그리고 처음 512KB를 삭제한 다음, 더 이상 저장할 필요가 없음) >
- B가 512KB를 C로 전송
- C가 512KB의 수신 확인
- C가 A에게 512KB가 전달된 사실을 확인
혼잡이있는 예
경로: A->B->C
- B는 경로에 대해 1024 버퍼를 가짐
- A가 512KB를 B로 전송
- A가 B에 256KB를 전송
- A가 B에 256KB를 전송
- < A는 보류 중이므로 전송 중지, B에서 버퍼를 채우기에는 충분함 >
- B는 A가 받은 512KB와 512KB를 확인
- B가 256KB를 C로 전송
- C가 B의 256KB의 수신 확인
- B는 B가 256KB를 A로 전달한 것을 확인
- < A가 최대 256KB의 KB를 더 보낼 수 있음 >
데이터는 Wifi 및 직접 이더넷 연결을 위해 전송된 순서로 수신된 것으로 가정합니다.
패킷 손실의 예
경로: A->B->C
- B는 경로에 대해 1024 버퍼를 가짐
- A가 512KB를 B로 전송
- A가 B에 256KB를 전송
- B가 256KB 응답
- A는 512KB를받지 못했다고 추측
- A가 512KB를 재전송
- B가 512KB를 응답
- < B는 이제 C로 스트림을 계속 보낼 수 있습니다. >
저장 및 전송 : 대역폭 대기 작업
저장 및 전송 시 왕복 지연 시간과 전송 속도를 곱한 것과 같은 전송노드에 대한 스토리지 요구사항이 전송 노드에 부과됩니다. 1GB의 RAM은 1Gb/s 전송 속도에서 8000ms 라운드 트립 대기 시간으로 충분합니다.
저장 및 전송은 기본값으로 설정되어 있지만, 다른 값을 선택할 수 있습니다.
저장 및 전송 : 용량 활용, 품질 및 서비스
비디오, 오디오 및 파일 다운로드가 버퍼링됩니다. 대기시간은 중요하지 않지만 초 단위의 절대평균 처리량이 중요합니다. 웹 사이트 요청, 비디오 게임 및 VoIP와 같은 트래픽은 실시간으로 가능한 빨리 전달되어야 합니다.
“실시간"과 “대용량"의 두 가지 서비스 수준을 통해 VOIP, 웹 사이트 및 비디오 게임 트래픽을 먼저 전송할 수 있으므로 이러한 트래픽의 대기 시간이 단축됩니다. 실시간 트래픽 버퍼가 비어있는 경우 비디오, 음악 및 파일 공유와 같은 대기 시간에 민감하지 않은 트래픽은 링크를 통해서만 전송됩니다.
우리는 또한 용량의 100 % 가량 링크를 활용하면서 실시간 트래픽에 대한 대기 시간을 줄일 수 있습니다. 따라서 우리는 경로에 대해 두 가지 서비스 수준을 지원할 것을 제안합니다.
소스 라우팅 : 다중 경로 모바일 연결
노드 간의 연결이 안정적이며, 대기 시간이 짧고 대역폭이 높은 경우 대부분의 응용 프로그램은 단일 경로로 충분합니다. 비트토렌트(Bitorrent)와 같은 일부 응용 프로그램은 많은 수의 연결을 생성하고, 기본적으로 사용 가능한 모든 경로에서 대역폭을 사용할 수 있습니다.
노드 간의 링크가 느리거나, 신뢰할 수 없거나, 연결성이 변하면, 신뢰성과 성능을 위해서 다중 중복 경로를 통해 트래픽을 다중화해야합니다.
휴대 전화에서 실행중인 스카이와이어 노드가 운전 중인 자동차에 있다면 접근 할 수 있는 네트워크가 변경됩니다. 네트워크 노드가 범위에 들어가고 다른 네트워크 노드가 범위를 벗어날 것입니다. 노드는 물리적 연결이 생성되고 소멸되는 경우에도 응용 프로그램 계층에서 지속적으로 연결되어야합니다.
하나의 접근법은 경로의 종단점으로 네트워크 백본에서 신뢰할 수있는 노드 집합을 선택하고 여러 개의 단기 경로 집합을 통해 이러한 노드를 통해 트래픽을 프록싱하는 것입니다. 소스 라우팅 : 다중 경로 신뢰성
링크가 신뢰할 수 없거나 대기 시간이 매우 가변적인 경우, 여러 경로에서 응용 프로그램 데이터를 인코딩하여 경로의 데이터를 수신하면 데이터를 복구할 수 있습니다. 여기에 적용 할 수있는 분수 코딩 및 기타 인코딩 방법이 있습니다.
소스 라우팅 : 보호 노드
개인정보보호를 위해 사용자가 자신의 스카이와이어 노드 주소(공개키 해시)와 IP 주소 간의 연결율을 저하시키려는 경우, 주소로 향하는 트래픽에 대한 전송 지점으로 알려져 있는 고정된 노드 집합을 대상으로 지정하거나, 자신의 주소에서 경로 상의 노드를 수정하는 것을 필요로 합니다.
소스 라우팅 : BGP의 제한
현재 독점적으로 사용되고 있는 라우팅 프로토콜인 Border 게이트웨이 프로토콜은 패킷의 상태를 유지하지 않음으로써 라우팅 문제를 처리합니다. 대신 BGP를 사용하면 각 네트워크가 패킷의 소스와 대상을 확인하여, 패킷을 전달할 네트워크 인터페이스를 결정하는 각 라우터의 일련의 임시 규칙을 만들 수 있습니다. 라우터는 서로 간의 연결 정보를 통해 메시지를 보내고, 다른 라우팅 알고리즘은 네트워크 도메인 내에서 라우팅 하기 위해 사용됩니다.
BGP는 일련의 독립적인 자율 네트워크를 인터페이스하도록 설계되었습니다. BGP에는 동일한 가정이 있는데, 자율 도메인 내의 라우팅은 도메인 내에서 동질 라우팅을 통해 중앙에서 관리되고 높은 신뢰성을 제공한다고 가정합니다. 메쉬 네트워크 및 커뮤니티 ISP는 다른 기종 장치 및 라우팅과 임시로 연결됩니다.
메쉬(mesh) 네트워크, Ad-hoc 구성 및 고밀도로 상호 연결된 네트워크에서 중복 멀티 홈 라우팅 경로를 통한 연결은 계층적 가정 하의 BGP를 완벽히 배제합니다.
BGP에는 차세대 프로토콜이 다루어야 할 몇 가지 문제가 있습니다.:
- BGP는 자체 구성이 아닙니다. BGP 기반 네트워크를 구성 및 운영하기 위해서는 광범위한 기술과 전문 지식을 필요로 합니다.
- BGP 시스템은 종종 손상된 경로를 라우팅하기 위해 수동 구성이 필요하며 잘못된 구성에 대해 복원력이 없습니다.
- BGP는 ad-hoc 경로 필터링 규칙을 수동으로 생성해야하며, 다중 홈 연결을 사용하기 위해서는 네트워크의 복잡성이 증가합니다.
- BGP 네트워크에는 고도로 집중된 계획이 필요합니다.
- NSA는 목표 트래픽을 차단점으로 라우팅하기 위해 BGP의 결함을 악용했습니다.
- BGP의 가정은 특히 ad-hoc, mesh 및 mobile 네트워크의 경우 점점 더 어려워지고 있습니다.
- BGP의 계층적, 단일 경로 가정은 멀티 호밍 및 기타 차세대 네트워킹 요구사항 구현을 매우 어렵게 만듭니다.
- 라우트 플래핑과 같이 네트워크 링크가 신뢰할 수 없는 경우 BGP는 심각한 문제를 겪습니다.
- 상호 연결된 서브 네트워크가 급증함에 따라 BGP 라우팅 테이블 크기가 급격히 증가합니다.
- 멀티 호밍은 BGP 라우팅 테이블 크기에서 엄청난 손실을 일으킵니다.
- BGP는로드 밸런싱 및 멀티홈 라우팅에 어려움이 있습니다. BGP는 실제 네트워크에서 위치 간 병렬 연결을 이용할 수 있는 기능을 제한합니다.
- BGP는 신속하게 네트워크 트래픽을 다른 네트워크로 덤프하는 ISP( “Hot Potato Routing”)에 인센티브를 제공하여 성능을 저하시키고 대기 시간을 증가시킵니다.
BGP에 대한 대안은 없습니다. BGP는 설계 제약 내에서 최상의 솔루션입니다.
BGP의 후속 조치는 다음과 같습니다.:
- 비계층 적이어야 함
- 자체 구성(제로-구성)
- 네트워크 간 밀집된 ad-hoc, 임시 연결이 정상적으로 작동
가상 경로 : 스카이와이어 네트워크 토폴로지 규모
스카이와이어 라우팅 구현은 노드를 통과하는 각 경로에 대한 정보를 유지 관리하는 것을 필요로 합니다. 개별 노드는 수십만 개의 개별 경로를 처리 할 수 없으며 다른 메커니즘을 통해 확장성을 달성합니다.
스카이와이어는 효율적으로 확장하는 동시에 멀티호밍 및 비계층적 네트워크 토폴로지를 기본적으로 지원하는 비계층적, 자체 구성 라우팅을 테스트하고 있습니다.
스카이와이어는 가상 경로를 사용하여 네트워크가 확장됨에 따라 네트워크 규모를 최소화합니다. 가상 경로를 사용하면 단일 경로의 오버 헤드로 고대역폭 백본 연결을 통해 수천 개의 연결을 번들로 묶을 수 있습니다.
“가상 경로"는 기존 경로 위에 터널을 만듭니다.:
A -> B -> C -> D
가상 경로는 A -> D로 나타납니다. B와 C는 고 대역폭 장거리 연결일 수 있습니다. B와 C는 단 하나의 경로의 오버 헤드를 발생시키는 반면, A와 D는 A-> D 터널에서 경로를 유지/관리하는 오버 헤드를 초래합니다.
가상 경로에는 A에서 D까지의 수백 개의 묶음 경로가 포함될 수 있지만, B와 C는 단일 경로의 오버 헤드만 발생될 수 있습니다. 가상 경로는 성능, 처리량 및 중복성을 위해 원본 및 대상 간에 여러 중복 네트워크 경로를 추가로 묶을 수 있습니다.
가상 경로를 사용하면 네트워크 용량을 대략 계층적으로 클러스터링 할 수 있습니다. 각 계층의 노드는 일정한 팬 및 오버 헤드가 있습니다.
네트워크 종단 간의 노드가 집계 노드에 공급됩니다. 종단 집합 노드는 고 대역폭 내부 도메인 전송계층에 연결되고 네트워크간에 인터페이스하는 게이트웨이 노드로 공급됩니다. 게이트웨이 노드는 높은 대역폭과 장거리 전송에 공급됩니다.
가상 경로는 기존 도메인 간 라우팅 관계를 나타내는 것으로, 기본적으로 다음을 지원합니다.:
- 비계층적 라우팅(데이터 센터)
- 다중 호밍
- 서로 다른 계층 구조의 도메인 간 밀집된 네트워크 상호 연결
- 각 네트워크 도메인 내의 다중 경로 라우팅
가상 경로는 동등한 삼중 구조를 따릅니다. 만약 경로 A -> B의 비용이 C (A -> B)이면
C(A->B->C) >= C(A->B) + C(B->C)
낮은 대기 시간, 낮은 비용 및 낮은 홉 경로에 대한 출발점 환경 설정은 경제적인 인센티브를 창출하여 효율적인 네트워크 토폴로지를 만듭니다. 네트워크는 비계층적이며 스스로 구성됩니다. 생성된 가상 경로는 자연스럽게 흘러가는 트래픽 흐름을 반영하는 경로 요약본을 생성합니다.
BGP에서 네트워크는 가능한 한 빨리 트래픽을 소멸하려고합니다.(hot potato 라우팅). 스카이와이어에서, 네트워크는 전송을 제공하기 위해 경쟁합니다. (코인 인센티브를 받기 위해서) 스카이와이어 고객은 낮은 가격, 낮은 홉 수, 짧은 대기시간을 선호할 것입니다. 출발지와 목적지 간 직접 연결된 장거리 용량을 가진 네트워크는 대기 시간이 짧고 홉 수 (hop count)가 낮으므로 우선 순위를 받습니다.
효율성을 위해, 네트워크 계층의 각 레벨에서 대역폭 용량 및 fan-in(각 가상 경로가 번들링되는 경로 수)은 일정해야하며, 이는 네트워크 수의 일정한 네트워크 크기 및 로그 라우팅 테이블의 증가를 달성하기 위해서이기도 합니다.
소스 라우팅 : 가상 경로, SONET 토폴로지
다중 입력, 다중 출력 가상 경로는 물리적으로 SONET 링으로 구현될 수 있으며, SONET 토폴로지가 통과하는 각 도시에 스카이와이어 노드가 있습니다. 스카이와이어 노드는 스카이와이어 네트워크와 SONET 토폴로지 간의 게이트웨이 라우터 역할을 합니다.
노드는 효율성을 위해 동일한 소스의 여러 메시지를 동일한 대상에 연결하는 대형 데이터그램을 대기열에 넣을 수 있습니다.
메시지는 한 도시의 로컬 센터에서 SONET 링의 스카이와이어 노드로 들어갑니다. 메시지 도착지 또는 경로가 읽히고 메시지가 SONET 세그먼트를 통한 전송을 위해 인코딩됩니다. 메시지는 SONET 세그먼트의 대상 스카이와이어 노드에 도달하고 경로에서 계속됩니다.
따라서 다중 입력, 다중 출력 가상 경로는 전송 비용이있는 스카이와이어 노드의 목록으로, SONET 링 또는 완전히 연결된 토폴로지를 설명합니다. 목록의 모든 노드는 목록의 다른 노드로 이동합니다.
소스 라우팅 : 비대칭 연결
차세대 wifi 시스템은 위상 배열 MIMO의 4x4 및 8x8 안테나를 사용합니다. 이러한 시스템은 고도로 집중된 지향성 빔을 투사 할 수 있습니다. 이 시스템은 수신기에서 전력 및 신호 강도를 크게 증가 시키지만, 복귀 신호에 대해 대칭적으로 안테나 이득을 향상시키지는 않습니다.
유사하게, 지향성 안테나를 통해 고출력, 증폭된 와이파이 신호가 15 마일 떨어진 지점에서 수신 될 수 있지만, 사이트에서의 신호 수신은 송신 시 전력이 증폭될 수 있을 만큼 쉽게 증폭 될 수 없습니다.
우리는 노드가 메시지를 수신 할 수 있지만 노드가 직접 통신 할 수없는 상황에 대해서는 비대칭 경로를 제안합니다. 비대칭 경로에서 확인 메시지는 경로를 통해 네트워크를 통해 릴레이되므로 단방향 통신 채널을 통해 비대칭 연결을 최대한 활용할 수 있습니다.
이것에 대해서는 점점 더 관련성이 높아지는 상황입니다.
- 지향성 안테나를 통해 증폭된 Wi-Fi를 사용하는 지역에 SONET 배치
- 동일한 전력 레벨로 방송되는 고도 지향성 안테나와 무지향성 안테나 간의 도시 간 연결성
- 802.11af 시스템의 고정적인 공급
- 비선형 LiFi 전파는 200 Mb/s 이상을 전송할 수 있지만 비대칭성이 높음
- RONJA 유형 Li-Fi 시스템은 이론적인 용량 한계가 10Gb/s이며, 비대칭 연결에 비용/설정 이점이 있음
비대칭 연결과 경로를 활용하여 노드 간 직접 데이터 전송을 단방향으로만 가능하도록 하는 것은 몇 가지 이점이 있는데, 특히 농촌 개발 및 차세대 기술의 고용량 통합 비용 절감을 할 수 있다는 것입니다.
소스 라우팅 : 경로 검색
커뮤니티 ISP를 위한 IPv4 게이트웨이 및 메쉬넷(meshnets)은 단지 clearnet 연결경로에 대한 첫번째 검색만을 필요로 합니다. 최고로 신뢰성있는 경로는 매우 작은 폭을 가지고 있습니다. 따라서 우리는 이 경우에 대한 라우팅 해결방법에 대해 고려합니다. 그 다음 일반 라우팅에 대해 살펴볼 것입니다.