안녕, 다들, 주간 하소연 시간이다.

색인:

  1. 0.3.3 & current updates
  2. NativeBigInteger
  3. ???

1) 0.3.3

지난 금요일에 0.3.3 릴리스를 배포했고, 하루이틀 정도 꽤 우여곡절이 있었지만 지금은 그럭저럭 잘 돌아가는 것 같습니다. 0.3.2.3만큼 좋지는 않지만, 대체로 irc.duck.i2p 에서 2~7시간씩 머무를 수 있었습니다. 다만 많은 분들이 문제를 겪는 것을 보고 로거를 켜서 무슨 일이 일어나는지 자세히 모니터링했습니다. 요약하면, 필요 이상으로 대역폭을 사용하고 있었고 그로 인해 혼잡과 tunnel 실패(테스트 메시지 타임아웃 등)가 발생했습니다.

지난 며칠 동안 다시 시뮬레이터로 돌아가 네트워크에 일련의 하트비트를 흘려보내며 무엇을 개선할 수 있는지 확인했고, 그 결과를 바탕으로 곧 아주 많은 업데이트가 우리에게 다가올 예정입니다:

netDb update to operate more efficiently

기존 netDb 조회 메시지는 최대 10+KB에 달하며, 성공적인 응답은 빈번하지만 실패한 응답은 최대 30+KB까지 커질 수 있습니다(둘 다 전체 RouterInfo 구조를 포함했기 때문입니다). 새로운 netDb는 이러한 전체 RouterInfo 구조를 router의 해시로 대체하여, 10KB 및 30KB 메시지를 ~100바이트 메시지로 줄입니다.

throw out the SourceRouteBlock and SourceRouteReplyMessage

이러한 구조들은 오래된 아이디어의 잔재였지만 시스템의 익명성이나 보안에 아무런 가치를 더하지 않습니다. 그것들을 버리고 더 단순한 응답 데이터 포인트 세트를 채택함으로써, tunnel 관리 메시지의 크기를 대폭 줄였고 garlic encryption 시간도 절반으로 줄였습니다.

netDb를 더 효율적으로 동작시키기 위한 업데이트

tunnel 생성 과정에서 코드가 다소 ‘수다스러워서’, 불필요한 메시지는 제거되었습니다.

SourceRouteBlock과 SourceRouteReplyMessage를 폐기한다

garlic routing(갈릭 라우팅)을 위한 암호화 코드 중 일부는 우리가 사용하지 않는 몇 가지 garlic routing 기법에 기반해 고정 패딩을 사용하고 있었습니다(제가 지난 9월과 10월에 그것을 작성했을 때는 tunnels 대신 multi-hop garlic routing을 하게 될 것이라고 생각했습니다).

또한 각 홉별 tunnel ID를 추가하기 위해 tunnel 라우팅에 대대적인 업데이트를 적용할 수 있는지 확인하는 작업을 진행하고 있습니다.

로드맵에서 보시다시피, 이는 0.4.1 릴리스의 많은 부분을 포괄하지만, netDb 변경으로 하위 호환성을 잃게 되었으므로, 이왕이면 하위 호환되지 않는 변경들을 한꺼번에 처리하려 합니다.

아직 시뮬레이터에서 테스트를 진행 중이고, 홉별 tunnel ID 작업을 마무리할 수 있을지 지켜봐야 하지만, 하루이틀 내에 새 패치 릴리스를 내고 싶습니다. 하위 호환은 되지 않아서 업그레이드가 매끄럽지 않을 테지만, 그만한 가치는 있을 겁니다.

2) NativeBigInteger

Iakin은 Freenet 팀을 위해 NativeBigInteger 코드에 몇 가지 업데이트를 진행하면서, 우리가 사용하지 않는 부분을 최적화했을 뿐만 아니라 적절한 네이티브 라이브러리를 자동으로 선택하는 데 사용할 수 있는 CPU 감지 코드도 작성했습니다. 이는 기본 설치에 jbigi를 단일 라이브러리로 포함해 배포하고, 사용자에게 아무것도 묻지 않아도 올바른 것을 자동으로 선택하도록 할 수 있다는 뜻입니다. 또한 그는 우리가 소스 코드에 포함할 수 있도록 본인이 한 수정 사항과 새로운 CPU 감지 코드를 공개하기로 동의했습니다(만세, Iakin!). 이것이 언제 배포될지는 확실하지 않지만, 배포되면 알려 드리겠습니다. 기존 jbigi 라이브러리를 사용 중인 분들은 새 라이브러리가 필요할 가능성이 큽니다.

3) ???

음, 지난주에는 코드 작업에 머리를 파묻고 있어서 업데이트가 그다지 많지 않았습니다. 다른 논의할 사항 있으신가요? 있다면 오늘 밤 GMT 기준 오후 9시에 #i2p에서 열리는 회의에 들러 주세요.

=jr