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 과 유사합니다.