Watched Prefix Insertion Protocol » History » Revision 2
Revision 1 (Weiqi Shi, 07/24/2014 01:04 AM) → Revision 2/21 (Weiqi Shi, 07/24/2014 01:11 AM)
Watched Prefix Insertion Protocol ================================= Watched Prefix is a new protocol for repo insertion. By using this protocol, repo keep sending interests to request the data with same prefix. When a data packet is received, repo will update selectors (exclude selector in most cases) to exclude the received data and request new one. Repo will stop watching the prefix until a command interest in tell it to stop, the total amount of sent interests reaches a specific number or time out. ## Basic operations ### Keep requesting and inserting data with same prefix Command verb: **watch** The name semantics follows the format of the repo command. The <command verb> is defined as ``watch``. For example, for ``<repo prefix>`` as ``/ucla/cs/repo``, the following is an example: /ucla/cs/repo/watch/<RepoCommandParameter>/<timestamp>/<random-value>/<SignatureInfo>/<SignatureValue> ### Watch status check Command verb: **watch check** During the watched prefix progress, requester could send watch status check command to check the status of the progress. This status check command is also signed interest. The semantics of watch status check command is shown as follows: <command verb> equals to ``watchCheck``. For example: /ucla/cs/repo/watchCheck/<RepoCommandParameter>/<timestamp>/<random-value>/<SignatureInfo>/<SignatureValue> ## Formats ### RepoCommandParameter The following components are used in watch-prefix command * ``Name`` * ``Interest timeout`` * ``Max number of Interest`` * ``Watching timeout`` * ``Status`` * ``Selectors`` * ``ProcessId`` Name is the prefix that will be watched. Interest timeout is the maximum latency between interest sent and data received. If the time duration is larger than interest timeout, the same interest will be resent. If data is received within the Interest timeout, the selectors of the interest will be updated and sent to request new data. Max number of Interest is the maximum of total interests that can be sent. The process will stop if the total number of interests reaches this limit. Watching timeout is the time duration of this process. Repo will keep watching the prefix until it times out. Status is used to show whether repo is watching a prefix or not. ProcessId shows the id number of this command interest, a random number generated by repo. Selectors are used to exclude the received data and request new data. For watchCheck command interest, only ProcessId is needed. ### RepoCommandResponse This watch status data object could be the response data object of both watch command and watchCheck command. It will follow the format of repo command response. Response has three part: ProcessId, indicates an ID of process; InsertNumber, indicates how many data packets under the watched prefix has been inserted into repo; StatusCode, indicates the status of the process. StatusCode Definition: ``StatusCode`` | Description -------------- | ---------------------------------------------- ``100`` | The command is OK. Start to watch the prefix ``101`` | Watched Prefix Insertion is stop. ``300`` | This watched prefix Insertion is in progress ``401`` | This watch command or watchCheck command is invalidated ``402`` | BlockId present. BlockId is not supported in this protocol ``403`` | Malformed Command ``404`` | No such this process is in progress repo,