NDN - Watched-Prefix-Insertion-Protocol
Watched Prefix Insertion Protocol
Watched Prefix는 Repo insert 를 위한 새로운 프로토콜입니다. 이 프로토콜을 사용하여 repo 는 동일한 prefix 로 데이터를 요청하도록 interest 를 계속 전송합니다. 데이터 패킷이 수신되면 repo 는 수신된 데이터를 제외하고 새 데이터를 요청하도록 selector (대부분의 경우 exclude selector) 를 업데이트합니다. Repo 는 전송된 interest 의 총량이 특정 숫자 또는 timeout 에 도달하지 못하도록하는 interest 가 표시 될 때까지 prefix 시청을 중단합니다.
1. Basic operations
1.1 Start watched prefix insertion
Command verb: watch start
name 은 Repo Command 포멧을 따릅니다.
예를 들어, <repo prefix>
를 /ucla/cs/repo 로 지정하면 다음과 같습니다:
/ucla/cs/repo/watch/start/<RepoCommandParameter>/<timestamp>/<random-value>/<SignatureInfo>/<SignatureValue>
이 명령은 다음 parameter 를 사용합니다.
Name
(required)InterestLifetime
(optional)MaxInterestNum
(optional)WatchTimeout
(optional)Selectors
(optional)
parameter 에 대한 세부설명:
Name
: watched prefixInterestLifetime
: 전송 interest 와 수신 데이터 간의 최대 대기 시간; 지속시간이 interest 시간 초과보다 크면 동일한 interest 가 다시 전송; interest timeout 내에 데이터가 수신되면 interest selector 가 업데이트되어 새로운 데이터를 요청; 지정하지 않으면 기본값 (4000 밀리 초) 이 설정MaxInterestNum
: 전송할 수 있는 총 interest 의 최대 값; interest 의 총 수가이 한도에 도달하면 프로세스 중단; 지정하지 않으면 MaxInterestNum 은 0 으로 설정되고 무한대를 의미WatchTimeout
: 프로세스의 지속 시간; Repo 는 시간이 끝날 때까지 prefix 를 계속 watching; WatchTimeout 은 0 으로 설정되며 프로세스는 영원히 계속 실행Selectors
: 수신된 데이터를 제외하고 새 데이터를 요청하는 데 사용
1.2 Watch status check
Command verb: watch check
watched prefix 진행 도중 requester 는 진행 상태를 확인하기 위해 watch status check command 를 보낼 수 있습니다. watch check command 는 Repo Command 입니다. watch check command 의 의미는 다음과 같습니다:
/ucla/cs/repo/watch/check/<RepoCommandParameter>/<timestamp>/<random-value>/<SignatureInfo>/<SignatureValue>
이 command 는 다음 parameter 를 사용합니다:
Name
(required)
parameter 에 대한 자세한 설명:
Name
은 watched prefix 입니다.
1.3 Stop watched prefix insertion
Command verb: watch stop
watched prefix 진행중에 requester 는 watch stop prefix insert 를 중지하기 위해 watch stop command 를 보낼 수 있습니다. stop command 은 Repo Command 입니다.
/ucla/cs/repo/watch/stop/<RepoCommandParameter>/<timestamp>/<random-value>/<SignatureInfo>/<SignatureValue>
command 는 다음 parameter 를 사용합니다:
Name
(required)
parameter 에 대한 자세한 설명:
- Name: watched prefix
2. RepoCommandResponse
이 watch status 데이터 객체는 watch 명령과 watchCheck 명령의 응답 데이터 객체가 될 수 있습니다. repo command 응답 포멧을 따릅니다.
Response 는 두부분이 있습니다: InsertNumber 는 watched prefix 아래의 데이터 패킷이 Repo 에 몇 개 insert 되었는지 나타냅니다; StatusCode 는 프로세스 상태를 나타냅니다.
StatusCode 정의:
StatusCode | Description |
---|---|
100 | command 는 OK; watch the prefix 시작 |
101 | Watched Prefix insert 중지 |
300 | watched prefix Insert 진행중임 |
401 | watch 명령 또는 watchCheck 명령이 무효화 (invalidated) |
402 | BlockId 가 있음. BlockId 는 프로토콜에서 지원되지 않음 |
403 | Malformed Command |
404 | 프로세스가 진행되고 있지 않음 |
3. Protocol Process
3.1 Repo watch start command process:
- command 유효성 검사 (validate) 시작; 유효성이 확인되면 3 단계로 이동, 그렇지 않으면 2 단계로 이동
- validation failure response; 이 단계를 중단하면 프로세스가 종료. (StatusCode: 401)
- Check parameters; interest 추출 할 수 없는 경우 부정적 응답 (StatusCode: 403) 을 보내고 프로세스 중지
- BlockId 가 있으면 부정적 응답 (StatusCode: 402) 을 전송하고 프로세스 중지
- interest 를 구성하려면 interest command 의 parameter 를 사용; Rightmost Child Selector 설정
- interest 보내고 timer 시작; 전송된 interest + 1 (초기 값은 0)
- 데이터를 받은 경우 8 단계로 이동, 시간이 초과되면 17 단계로 이동
- 데이터의 유효성이 확인되면 9 단계로 이동, 그렇지 않으면 15 단계로 이동
- watched prefix insert 실행 중인지 확인; 그렇지 않으면 프로세스 종료
- process times out(exceed watch timeout) 되거나 전송된 interest 의 총 수가 제한에 도달하면 11 단계로 이동, 그렇지 않으면 12 단계로 이동
- 모든 variables (전송된 interest 수, watch timeout, interest lifetime) 를 지우고 (단계를 중단) 프로세스 종료
- 데이터를 repo 에 store
- Update selector 및 수신된 항목을 min 에서 제외하고 업데이트된 selector 를 사용하여 새로운 interest 를 생성
- 신규 interest 와 전송된 interest 수에 1 을 더한 다음 7 단계로 이동
- 9-11 단계를 반복하고 12 단계를 건너뜀
- selector 를 업데이트 하고 수신 된 데이터만 제외 (name 이 작은 다른 데이터가 충족 될 수 있으므로); 14 단계로 이동
- 9-11 단계를 반복하고 12 단계를 건너뜀
- interest 를 보내고 전송된 interest 수에 1 을 더한 다음 7 단계로 이동
3.2 Repo watch check command process:
- check command validate 시작; 유효성이 확인되면 3 단계로 이동하고, 그렇지 않으면 2 단계로 이동
- validation failure 를 나타내는 응답을 보내고 이 단계를 중단하면 프로세스 종료 (StatusCode: 401)
- Check parameter; interest 에서 추출 할 수 없거나 checked 할 name 이 없는 경우 부정적인 응답 (StatusCode: 403) 을 보냄
- 해당 프로세스가 존재하는지 확인; 그렇다면 5 단계로 이동, 그렇지 않은 경우 부정 응답을 보냄 (StatusCode: 404)
- processId 를 사용하여 응답을 찾고 응답을 되돌려 보냄
3.3 Repo watch stop command process:
- stop command validate 시작; 유효성이 확인되면 3 단계로 이동, 그렇지 않으면 2 단계로 이동
- validation failure 를 나타내는 응답을 보내고 이 단계를 중단하면 프로세스 종료 (StatusCode: 401)
- Check parameter; interest 추출 할 수 없는 경우 부정 응답을 보냄 (StatusCode: 403)
- 프로세스를 중지하고 부정적인 응답을 보냄 (StatusCode: 101)