NDN - Repo-Tools
Tools
repo tools 는 command line 을 사용하여 repo 의 동작을 지시합니다.
1. ndnputfile
데이터를 repo 에 insert 하는데 사용됩니다.
$ ndnputfile <command> repo-prefix ndn-name filename
지금까지 지원되는 명령 목록은 다음과 같습니다:
$ ndnputfile -h
-u: unversioned: 버전 구성 요소를 추가하지 말 것
-s: single: 버전 또는 세그먼트 구성 요소를 추가하지 말 것, -u 내용 참조
-D: DigestSha256 signing method 사용
-i: Data 서명을 위한 ID 지정
-I: Command 서명에 사용되는 ID 지정
-x: FreshnessPeriod (milliseconds)
-l: 각 Command 의 InterestLifetime (milliseconds)
-w: 전체 프로세스에 대한 timeout (milliseconds; default unlimited)
-v: be verbose
다음은 이러한 명령을 하나씩 소개합니다.
1.1 ndnputfile command List
ndn-name 다음에 수동으로 버전 번호를 추가하려면 -u 를 사용하여 지정할 수 있습니다. 그렇지 않으면 ndnputfile 은 자동으로 현재 시간에 따라 버전 번호를 추가합니다. 예를들어
$ ndnputfile -u /example/repo/1 /example/data/1/%FD%00%00%01G%F0%C8%AD- test.txt
$ ndnputfile /example/repo/1 /example/data/1/ test.txt
두 경우 모두 real ndn-name 은 /example/data/1/%FD%00%00%01G%F0%C8%AD- 입니다.
정확히 하나의 데이터를 사용하여 파일을 저장하려면 -s 를 사용하여 지정할 수 있습니다. 그렇지 않으면 파일 내용이 여러 개의 세그먼트 데이터로 분리됩니다.
$ ndnputfile -s /example/repo/1 /example/data/1/ test.txt
이 방법으로 모든 콘텐츠는 하나의 데이터 패킷에 저장되며 세그먼트 번호는 추가되지 않습니다. 위 예에서 실제 NDN 이름은 /example/data/1/%FD%00%00%01G%F0%C8%AD- 입니다.
파일이 충분히 크고 하나의 데이터 패킷에 저장할 수 없는 경우 -s 를 지정하면 안됩니다. 이런 식으로, ndnputfile 은 자동으로 데이터 내용을 분리하고 세그먼트 번호를 사용하여 다른 세그먼트를 식별합니다.
$ ndnputfile /example/repo/1 /example/data/1/ test.jpg
이 경우 데이터는 세그먼트화되고 세그먼트 번호는 0부터 시작합니다. 실제 NDN 이름은 /example/data/1/%FD%00%00%01G%F0%C8%AD-/%00%00 입니다.
주의: 세그먼트 데이터를 insert 하기 위해 데이터가 충분히 크지 않을 경우 -s 는 하나의 세그먼트만 생성합니다. 실제 NDN 이름에는 세그먼트 번호 /%00%00 이 포함됩니다.
-D 를 지정하여 데이터 패킷 및 명령 관련 서명 방법으로 DigestSha256 을 선택할 수 있습니다.
$ ndnputfile -D /example/repo/1 /example/data/1/ test.txt
-I 및 -i 를 각각 사용하여 command interest 또는 데이터 서명을 위한 ID 를 지정할 수 있습니다.
$ ndnputfile -I /ndn/test/alice /example/repo/1 /example/data/1 test.txt
$ ndnputfile -i /ndn/test/bob /example/repo/1 /example/data/1 test.txt
-x 를 사용하여 데이터 freshness 시간을 설정할 수 있습니다. 시간은 밀리 초 단위로 측정됩니다. 예 :
$ ndnputfile -x 4000 /ndn/test/alice /example/repo/1 /example/data/1 test.txt
interest life-time 을 지정하려면 -l 을 사용하여 interest time out 값을 설정할 수 있습니다. 예:
$ ndnputfile -l 1000 /ndn/test/alice /example/repo/1 /example/data/1 test.txt
-w 를 사용하여 전체 insert 프로세스의 시간 초과를 설정할 수 있습니다. 시간이 만료되면 프로세스가 중지됩니다.
-v 를 지정하여 로그 정보를 인쇄 할 수 있습니다.
2. ndngetfile
데이터를 repo 에서 get 하는데 사용됩니다.
$ ndngetfile <command> ndn-name
지금까지 지원되는 명령 목록은 다음과 같습니다:
$ ndngetfile -h
-v: be verbose
-s: only get single data packet
-u: versioned: ndn-name 에는 버전 component.if -u 가 포함되어 있지 않습니다.이 명령은 prefix 의 가장 오른쪽에 있는 자식을 반환
-l: InterestLifetime (milliseconds)
-w: 전체 프로세스에 대한 timeout (milliseconds; default unlimited)
-o: stdout 대신 local file name 작성
다음은 이러한 명령을 하나씩 소개합니다.
2.1 ndngetfile command List
-s 가 지정되면 하나의 데이터만 get 합니다. 이 명령은 데이터가 ndnputfile -s 에 의해 insert 될 때만 사용해야 합니다. 그렇지 않으면 오류가 발생할 수 있습니다. 세그먼트 번호가 없는 단일 데이터만 이 명령으로 가져올 수 있습니다. 예:
$ ndngetfile -s /example/data/1
반환된 데이터는 예를들어 /example/data/1/%FD%00%00%01G%F0%C8%AD- 일 수 있습니다. /example/data/1/%FD%00%00%01G%F0%C8%AD-/%00%00 데이터는 가져 (fetch) 올 수 없습니다. -s 가 지정되지 않으면, ndngetfile 은 동일한 prefix 를 가진 모든 세그먼트 데이터를 가지고 (fetch) 오려고 시도합니다.
ndn-name 다음에 수동으로 버전 번호를 추가하려면 -u 를 지정하여 특정 버전의 데이터를 선택할 수 있습니다. 예 :
$ ndngetfile -u /example/data/1/%FD%00%00%01G%F0%C8%AD-
-u 를 지정하지 않으면 최신 버전 번호 (맨 오른쪽 자식) 가 있는 데이터가 반입됩니다.
-o 를 지정하여 로컬 파일에 쓰기를 선택할 수 있습니다. 그렇지 않으면, ndngetfile 은 stdout 을 사용합니다. 예 :
$ ndngetfile -o result.txt /example/data/1
내용은 result.txt 에 기록됩니다.
-w, -l, -v 명령은 ndnputfile 과 유사합니다.