Files
min-dev-java/docs/Management.md
T
2021-03-18 11:22:49 +08:00

172 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MIR Management
MIR管理通信协议允许用户、工具和控制平面程序检索,监视和更改MIR的状态。
## 1. MIR管理协议
### 1.1 基本机制
MIR通信管理协议使用管理通信包(Interest-Data exchange)来进行通信,管理通信包的顶层TLV的TYPE值为1。
- **Status Dataset** (状态数据集)
> https://redmine.named-data.net/projects/nfd/wiki/StatusDataset
状态数据集定义了一个实体集合的状态信息如何作为管理数据包(Management Data)进行编码、分片和发布。这个机制搭配兴趣包数据包交换(Interest-Data exchange)的通信方式可以很方便的对MIR中的各种状态信息进行检索。
- **Notification Stream**(通知流)
MIR管理通信协议要求实现一个基于事件订阅的通知机制,一旦MIR的相关状态发生改变,可以通过该机制通知对应的管理模块。这个机制可以很有效的对MIR的状态进行监视。
- **Control Command**(控制命令)
控制命令定义了一系列可以更改MIR状态的命令的请求和回复格式,*以及如何对这些命令进行签名和认证*。这个机制对于更改MIR的状态很有用。
### 1.2 模块
- **LogicFace Management**(逻辑接口管理模块)
- 创建和销毁逻辑接口控制命令;
- 一个数据集(dataset)用于发布 LogicFace 状态和计数器;
- 一个通知流(Notification Stream),用于通知逻辑接口的创建和销毁事件
- **FIB Management**(转发表管理模块)
- 插入、更新和删除FIB条目的控制命令;
- 一个数据集(dataset)用于发布FIB表的条目信息;
### 1.3 管理请求包的基本格式
```
CommandInterest = 1 TLV-LENGTH
{ InterestIdentifier } => 标识区
{ Signature } => 签名区
```
- **用于本地管理**
```
/localhost/mir/<模块名称>/<命令>/<参数>/[版本号]/[分片号]
```
- 模块名称:每个管理模块会有一个唯一的模块名称,例如:`fib-mgmt`
- 命令:表示要在对应模块执行的动作,例如:`add`、`list`
- 参数:由一个 `ControlParameters` TLV 编码而成,其中包含一系列子 TLV,每个子TLV表示一个请求的参数字段(Field),例如:
```
ControlParameters = CONTROL-PARAMETERS-TYPE TLV-LENGTH
[LocalFaceUri]
[RemoteFaceUri]
```
- 版本号:数据集在每次版本更迭时,会将发布的数据状态的版本号加1,可以凭借版本号获取最新的状态信息
- 分片号:数据集通常无法用一个Data包装下,需要进行分片发布,分片号指定要拉取的数据分片
- **用于单跳接入**(用于使用TCP LogicFace等接入MIR的场景)
```
/localhop/mir/<模块名称>/<命令>/<参数>/[版本号]/[分片号]
```
### 1.4 管理回复包的基本格式
```
CommandData = 1 TLV-LENGTH
{ DataIdentifier } => 标识区
{ Signature } => 签名区
{ => 只读区
<Payload>
}
```
回复数据放在管理回复包的 `Payload` 部分,格式为json格式,如果数据较多,需要分片进行传输
## 2. LogicFace Management
> 模块名称:`minlf-mgmt`
### 2.1 控制命令
- **`list`**
> list 命令用于显示逻辑接口的详细信息
```
mirc lf list [remote <LFURI>] [local <LFURI>] [scheme <SCHEME>]
```
- **`add`**
> add 命令用于添加一个逻辑接口
```
mirc lf add remote <LFURI> [[persistency] <PERSISTENCY>] [local <LFURI>] [mtu <MTU>]
```
- **`del`**
> del 命令用于删除一个逻辑接口
```
mirc lf del <LFID|LFURI>
```
- **`show`**
> show 命令用于展示指定ID的逻辑接口的信息
```
mirc lf show <LFID>
```
### 2.2 OPTIONS
- **LFID**
LfId 表示逻辑接口在MIR中的唯一数字标识
- **LFURI**
LfUri 表示本地或者远端的逻辑接口的地址,示例如下:
- `tcp://192.168.1.2:13899`
- `udp://192.168.1.3:13899`
- `ether://[08:00:27:01:01:01]`
- `dev://eth0`
- `unix:///var/run/mir.sock`
- **SCHEME**
Scheme 表示本地或者远端的接口地址所使用的Uri方案,示例如下:
- udp
- tcp
- unix
- dev
- **PERSISTENCY**
Persistency 参数指定了逻辑接口的持久性,取值可以为 `persistent` (持久的)和 `permanent`(永久的)
- `persistent`:拥有 `persistent` 持久性的逻辑接口,在通信过程中发生套接字错误时,会自动关闭并销毁该逻辑接口;
- `permanent`:拥有 `permanent` 持久性的逻辑接口,在通信过程中如果发生套接字错误是,逻辑接口不会直接销毁,会一直保留,并尝试重新建立套接字连接。
- **MTU**
Mtu 参数指定了逻辑接口的最大传输单元的大小。
## 3. FIB Management
> 模块名称:`fib-mgmt`
### 3.1 控制命令
- **`list`**
> list 命令用于展示 FIB 表的信息
`mirc fib list `
- **`add`**
- **`del`**