NDN - Repo-Deletion-Protocol
Repo Deletion Protocol
Repo deletion protocol 은 Repo Command 를 사용합니다. 특정 prefix 내의 단일 콘텐츠 객체 또는 콘텐츠 객체 삭제는 모두 repo 사양 (specification) 에서 지원됩니다. Selector 는 여러 콘텐츠 객체를 선택하는데 사용됩니다. 이러한 selector 는 기존의 interest 패킷 selectors 와 다릅니다. 기존 interest selector 는 하나의 repo 데이터 패킷을 선택합니다. delete command Selectors 는 이 selector 에 적용되는 모든 데이터 패킷을 반환합니다. 세그먼트 데이터의 삭제도 지원됩니다.
1. Basic operations
1.1 Deletion command interest semantics
Command verb: delete
Deletion command interest 는 repo command 포멧을 따릅니다. 예:
/ucla/cs/repo/delete/<RepoCommandParameter>/<timestamp>/<random-value>/<SignatureInfo>/<SignatureValue>
2. Formats
2.1 Deletion Command RepoCommandParameter
deletion command 의 포멧 RepoCommandParameter 는 Repo Command 를 따릅니다. Name, Selector, StartBlockId, EndBlockId, ProcessId 는 RepoCommandParameter 를 생성하는 데 사용됩니다.
Name 은 repo가 삭제할 데이터의 name 또는 prefix 입니다.
Selector 는 데이터를 선택하는데 사용됩니다. ChildSelector 는 삭제 명령에서 지원되지 않습니다.
StartBlockId 및 EndBlockId 는 세그먼트 데이터를 삭제하는데 사용됩니다. StartBlockId 와 EndBlockId 사이의 세그먼트 ID 데이터는 repo 에 의해 삭제됩니다.
ProcessId 는 클라이언트가 삭제 프로세스를 나타내기 위해 생성한 난수입니다. Repo 는 ProcessId 를 삭제 프로세스와 일치시킵니다.
2.2 Deletion Command Selectors
Deletion command selector 는 repo command selectors 다음에 옵니다.
2.3 Deletion status check
deletion progress 동안 requester 는 deletion status check command 를 전송하여 deletion progress 상태를 확인할 수 있습니다. status check command 는 signed interest 입니다. deletion status check command 는 repo command 형식을 따릅니다. <command verb>
는 check 를 삭제하는 것과 같습니다. 예:
/ucla/cs/repo/delete/<RepoCommandParameter>/<timestamp>/<random-value>/<SignatureInfo>/<SignatureValue>
2.4 Deletion status check RepoCommandParameter
Name 및 ProcessId 는 특정 삭제 프로세스를 나타내는데 사용됩니다. Repo 는 Name 과 ProcessId 를 사용하여 특정 삭제 프로세스를 일치시킵니다. 일치하면 repo 가 삭제 진행 상황에 응답합니다. Name 또는 ProcessId 중 하나만 일치하면 실패합니다.
2.5 Deletion Check Command Selectors
Selectors 는 지원되지 않습니다. Repo 는 deletion status check command 를 처리 할 때 selectors 를 무시합니다.
2.6 Deletion status response
Deletion status 응답은 repo deletion command 및 repo deletion check command 의 응답으로 사용됩니다.
Name, StatusCode, Selector, StartBlockId, EndBlockId, ProcessId, DeleteNum 은 삭제 상태 응답에 사용됩니다. Name, ProcessId, Selector 는 delete 명령과 동일합니다. StatusCode 는 삭제 상태를 나타냅니다. DeleteNum 은 삭제 된 데이터 패킷 수를 나타냅니다.
Repo Deletion Command 에서 StartBlockId 가 나타나면 EndBlockId 가 Repo 가 보유한 가장 큰 세그먼트 ID 일 수 있습니다. EndBlockId 가 나타나면 StartBlockId 가 0 으로 설정됩니다.
StatusCode Definition:
StatusCode | Description |
---|---|
200 | 모든 데이터 삭제 |
300 | 삭제가 진행 중 |
401 | 삭제 또는 삭제 검사 무효화 |
402 | Selectors 또는 BlockId 없음 |
403 | Malformed Command |
404 | 삭제 작업 이상 |
3. Protocol process
- command authorize 시작; 승인이 실패하지 않으면 3 단계로 이동
- authorization failure 응답을 보내고 단계를 중단하고 삭제 프로세스 종료 (StatusCode : 401)
- 동일한 RepoCommandParameter 의 삭제 프로세스가 삭제 프로세스를 기다리는지 여부 확인
- Selector 와 StartBlockId 및 EndBlockId 중 하나가 표시되면 응답을 보내고 단계를 중단하고 삭제 프로세스 종료 (StatusCode: 402)
- Selector 가 있는 경우; 8 단계로 이동
- StartBlockId 또는 EndBlockId 가 나타나는지 확인; StartBlockId 가 EndBlockId 보다 크면 부정적 응답을 반환하고 삭제 프로세스를 종료; (StatusCode : 403) 또는 9 단계 이동
- StartBlockId, EndBlockId 및 Selector 가 모두 누락 된 경우 10 단계로 이동
- name 과 selector 를 준수하는 모든 데이터를 삭제하고 11 단계로 이동
- StartBlockId 와 EndBlockId 사이의 세그먼트 ID의 모든 데이터 패킷을 삭제; StartBlockId 가 없으면 StartBlockId 는 0 으로 설정; EndBlockId 가 누락 된 경우 EndBlockId 는 repo 가 보유하는 가장 큰 세그먼트 ID 로 설정; 11 단계로 이동
- name 과 같은 prefix 가 있는 모든 데이터를 삭제; 11 단계로 이동
- interest 가 만료되지 않으면 긍정적인 상태 코드의 상태 응답 반환; interest 기간이 만료된 경우 동일한 RepoCommandParameter 에 대한 interest 를 기다리고 상태 응답을 반환; 삭제 프로세스 종료 (StatusCode : 200)
클라이언트는 deletion command 를 설정합니다. lifetime 이 만료되면 클라이언트는 명령을 다시 표현합니다. (re-express)
구현은 삭제 진행에 대한 상태 통지를 발표 할 수 있습니다. 상태 확인 프로세스는 다음과 같습니다.
- delete status command authorize 시작
- authorization failure 응답을 보내고 단계를 중단 (StatusCode: 401)
- command 에 데이터 이름을 사용하여 삭제 진행 상황을 점검하기 시작; progress 상황이 발견되지 않으면 4 단계로 이동하거나 5 단계로 이동
- 응답 코드 404 (상태 코드: 404)
- 삭제 상태 확인 (상태 코드 : 300)
3.1 Protocol diagram:
Requester Repo
| |
| |
+---+ Delete command +---+
| | --------------------> | |
+---+ +---+
| |
| |
| |
+---+ Status interest +---+
| | --------------------> | |
+---+ | |
| | |
+---+ Status response | |
| | <==================== | |
+---+ +---+
| |
| |
| |
+---+ Confirm Deletion +---+
| | <==================== | |
+---+ Reject command +---+
| (with status code) |
| |