I2P 성능 통계
저는 i2p를 테스트해 보았습니다.
동작은 하지만, 성능, 익명성, 신뢰성은 매우 의심스럽습니다…
TL;DR
간단히 말하면
- 프록시로 작동하는 방식을 측정하기 위해 3가지 유형의 배포를 테스트했습니다(매우 유사함)
- 은닉 서비스 배포 유형 3가지를 테스트했습니다(i2p+가 가장 좋았음)
- 플러드 참여는 i2p 네트워크 성능에 영향을 주지 않지만, 자원 소비는 증가합니다.
I2P는 느립니다. 한 번의 핑은 5~10초가 걸립니다. 좋은 연결이 있더라도 시간 초과가 발생할 수 있다는 보장은 없습니다.
간략히 설명하면
I2P는 IP 위에 있는 네트워크 프로토콜로, TCP와 UDP, IPv6과 IPv4 모두 사용합니다.
주요 아이디어는 TOR와 비슷합니다. 네트워크 패킷을 실시간으로 암호화하여 전달함으로써
- 패킷을 전달하는 노드는 내부에 무엇이 있는지 모릅니다.
- 패킷을 받는 노드는 원래의 발신자를 모릅니다.
I2P는 “클리어넷”(일반 인터넷)을 볼 수 있는 표준 방법이 없습니다. 외부 프록시(outproxies)가 있지만, 사실 TOR가 이 부분에서는 훨씬 더 잘 작동합니다. I2P가 가지고 있는 것은 “은닉 서비스"입니다. 이론적으로 이 서비스는 자신을 호출한 사람을 알지 못하고, 사용자는 각 서비스가 어떤 노드에 위치해 있는지도 모릅니다.
서비스는 일반 인터넷 프로그램이 될 수 있습니다. IRC 서버, 웹 서버(어떤 것이든 호스팅됨), REST API, XMPP 또는 이메일 서버 등이 있습니다.
그리고 거기에는 서비스가 많지 않습니다. 약 200개의 사이트? 아니면 300개?
목적, 방법, 도덕적 및 법적 측면
은닉 서비스를 호스팅하는 데 두 가지 동기를 볼 수 있습니다.
- 자신의 익명성과 프라이버시를 확보하려는 것
- “대형 형제”(Big Brother)의 직접적인 시선에서 벗어나려는 것 - 모든 사람들이 민주주의 국가에 살고 있는 것은 아니며, 일부 독재 정권은 자신들이 원하는 대상에 대해 억압과 억울함을 주는 경우가 있습니다. 하지만 이 버킷(“도망”)에 있는 것은 불법 활동이 될 수 있습니다. 이는 단지 동기일 뿐입니다.
도덕적 및 법적 측면은 복잡합니다. 저의 견해는 다음과 같습니다(법적 전문가는 아니므로 조언으로 삼지 마세요):
사람들은 [도덕적으로] 프라이버시를 가질 권리가 있습니다. [도덕적으로] “F.U. 당신의 일에 관심이 없습니다"라고 말할 권리가 있습니다. [도덕적으로] 프로그램이나 스마트폰이 자신의 위치를 공개하고, 위성 사진이 자신의 뒷마당을 찍고 구글 스트리트 뷰에 올리고, 정부가 이를 무시하고 사람들의 불만을 무시할 때, 그들이 불쾌감을 느끼는 것을 알고 있으면서도 [도덕적으로] 불쾌감을 느끼는 권리가 있습니다. 한편, 정부는 AFAIK [법적으로] 사람들의 프라이버시를 침해할 권리가 있고, 일부 조건이 있을 수 있습니다. 예를 들어, 호주 경찰은 당신의 스마트폰을 해제하도록 요구할 수 있으며, 이는 매우 큰 도덕적 함의를 가지고 있습니다. Monica Smith의 역사(https://www.monicasmit.com/)를 보면, 경찰이 그녀의 전화를 해제하도록 요구했고, 경찰은 자유를 지지하는 시위 참가자의 연락처를 얻고자 했습니다. (이것은 멜버른에서 있었던 코로나19 봉쇄의 시기였으며, 세계에서 가장 엄격한 봉쇄였습니다). 경찰은 물러났지만, Monica는 협조하지 않음으로써 감옥에 갇힐 위험을 감수했습니다.
익명성은 사람들의 삶의 또 다른 큰 측면입니다. 저의 견해는 감시와 익명성 해제가 너무 자주 도우미(Doxxing), 프라이버시 침해, 괴롭힘을 위해 사용되고 있다고 보는 것입니다. 누구든지 그것을 사용할 수 있도록 명확한 규칙과 절차가 있어야 한다고 생각합니다.
성능
좋습니다. 여기서 시작합니다.
저는 핑을 완료하는 데 얼마나 오래 걸리는지 측정했습니다. (HEAD {site}.i2p)
아래는 응답 지연 분포입니다.
이 분포 그래프는 예상되는 호출 지속 시간이 약 5초라고 보여줍니다.
저는 타임아웃을 90초로 설정했고, 보시다시피 일부 요청은 전혀 완료되지 않았습니다. 30초와 60초는 아마도 서비스 측이나 라우터 측의 타임아웃일 것입니다.
핵심 사이트는 잘 알려진 사이트인 http://idk.i2p/, http://zzz.i2p/, http://identiguy.i2p/, http://333.i2p/, http://i2pforum.i2p 및 유사한 사이트로, 총 25개입니다. 추가 그룹 - 다른 100개 이상의 사이트의 집합입니다.
저는 핵심 사이트의 소유자가 자신이 무엇을 하고 있는지 잘 알고 있다고 가정했고, 실제로 그들의 사이트 성능이 추가 그룹보다 더 좋았습니다. 하지만 차이는 크지 않습니다 - 단지 1초 정도 차이(약 5초 vs 약 6초 중앙값 호출 지속 시간). 그리고! 핵심 사이트는 그래프에서 보시다시피 가끔 타임아웃이 발생했습니다(요청 지속 시간 분포).
아래는 프록시 유형 사용 가능성 그래프입니다.
핵심 그룹 사이트에서 다양한 프록시를 사용한 핑 지속 시간을 측정했습니다. I2P+는 하나, I2Pd는 두 가지 다른 배포에서 매우 유사한 결과를 보였습니다.
이제 서비스 호스팅 적합성입니다.
여기서 두꺼운 붉은 선은 I2P+입니다.
익명성
온라인에 있는 라우터는 4000~10000개이며, 그들의 공개 IP 주소는 잘 보입니다. 따라서 여기서는 큰 익명성을 말할 수 없습니다.
자원 소비
저의 실험에서 I2Pd는 약 130MB RAM + 약 7% CPU를 사용했습니다.
I2P+는 약 350MB 이상의 RAM + 약 70% 이상의 CPU를 사용했습니다.
I2P+ 설정에서 저는 RAM 허용량을 약간 늘려 더 잘 작동할 것으로 기대했습니다. 그래서 여기에 이르렀습니다.
저의 실험에서 플러드 참여는 i2p 네트워크 성능에 영향을 주지 않았지만, CPU 부하를 약 +20% 증가시켰습니다.
따라서, I2Pd를 호스팅 계획 중이라면 1vCPU + 512MB가 충분할 것으로 생각합니다. 그리고 I2P+는 최소 2vCPU + 1GB가 필요합니다.
느낌
이것은 Fido, BBS, 그리고 오래된 시절의 느낌과 같습니다. 인터넷이 너무 작아서 거의 모두가 닉네임만으로 서로를 알아볼 수 있을 정도입니다.
느리고, 비어 있습니다.
하지만 이 느낌은 매우 아날로그적입니다.