Skip to content

GitLab

  • Menu
项目 Groups 代码片段
    • 正在加载...
  • 帮助
    • 帮助
    • 支持
    • 社区论坛
    • 提交反馈
  • 登录/注册
  • P p4-learning
  • Project information
    • Project information
    • 动态
    • 标记
    • 成员
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • 议题 0
    • 议题 0
    • 列表
    • 看板
    • 服务台
    • 里程碑
  • 合并请求 0
    • 合并请求 0
  • CI/CD
    • CI/CD
    • 流水线
    • 作业
    • 计划
  • Deployments
    • Deployments
    • 环境
    • 发布
  • Monitor
    • Monitor
    • 事件
  • 软件包与镜像库
    • 软件包与镜像库
    • 软件包注册表
    • Infrastructure Registry
  • 分析
    • 分析
    • CI/CD
    • 仓库
    • Value stream
  • Wiki
    • Wiki
  • 代码片段
    • 代码片段
  • 动态
  • 分支图
  • 创建新议题
  • 作业
  • 提交
  • 议题看板
收起侧边栏
  • p4git
  • p4-learning
  • Wiki
  • Control Plane

Control Plane · 变更

页面历史
Updated Control Plane (markdown) 编辑于 7月 26, 2021 作者: Jurij Nota's avatar Jurij Nota
Hide whitespace changes
Inline Side-by-side
Showing with 27 addition and 3 deletion
+27 -3
  • Control-Plane.md Control-Plane.md +27 -3
  • 未找到文件。
Control-Plane.md
查看页面@ 3366c4d4
## Controlling the switch
The [BMv2 repository](https://github.com/p4lang/behavioral-model) implements two different versions of the *Simple Switch* that have different control plane interfaces.
| Target | Control Plane |
|:--------------------------------------------------------------------------------------------------------|:----------------------|
| [`simple_switch`](https://github.com/p4lang/behavioral-model/tree/main/targets/simple_switch) | `Thrift` |
| [`simple_switch_grpc`](https://github.com/p4lang/behavioral-model/tree/main/targets/simple_switch_grpc) | `P4Runtime`, `Thrift` |
The following table shows different methods to configure the *Simple Switch* that will be covered in more detail in the subsequent paragraphs. Notice that the APIs (i.e. `SimpleSwitchThriftAPI` and `SimpleSwitchP4RuntimeAPI`) are provided by [*P4-Utils*](https://github.com/nsg-ethz/p4-utils), whereas the client (i.e. `simple_switch_CLI`) it is directly implemented by BMv2.
| Control Plane | Methods |
|:--------------|:--------------------------------------------|
| `Thrift` | [`SimpleSwitchThriftAPI`](#thrift-api), [`simple_switch_CLI`](#simple-switch-client)|
| `P4Runtime` | [`SimpleSwitchP4RuntimeAPI`](https://github.com/nsg-ethz/p4-utils/blob/junota/p4utils/utils/sswitch_p4runtime_API.py)|
## *Simple Switch* Client
We can use the `simple_switch_CLI` to configure the switch and populate match-action tables.
### Running the client
To get the switch client simply run:
......@@ -12,6 +30,7 @@ simple_switch_CLI --thrift-port <port>
The client connect to the *Thrift* server running in each switch process. `9090` is the default port number but of course if you are running several devices on your machine, you will need to provide a different port for each. One client instance can only connect to one switch device.
### Filling tables
The most used commands to modify table contents are the following.
......@@ -42,7 +61,6 @@ table table_name {
}
```
```
table_set_default table_name drop
table_add table_name action_name 1 => 5
......@@ -75,6 +93,12 @@ To set default client configuration files you need to define your switches like:
You can find all the documentation about `p4app.json` in the [*P4-Utils* documentation](https://github.com/nsg-ethz/p4-utils#topology-description).
## *P4-Utils* Control Plane APIs
## *Thrift* API
You can find a wrapper of the *Simple Switch* Client as one of the features of *P4-Utils*. It is called [`SimpleSwitchThriftAPI`](https://github.com/nsg-ethz/p4-utils/blob/junota/p4utils/utils/sswitch_thrift_API.py) and basically allows the user to perform the same opertations but, instead of using text sent to the client, one can use the power of a scripting language such as Python. You can read more about this API [here](https://github.com/nsg-ethz/p4-utils#control-plane-api).
## *P4Runtime* API
The P4 language consortium has recently defined [*P4Runtime*](https://p4.org/p4-spec/p4runtime/v1.3.0/P4Runtime-Spec.html), a control plane specification for controlling the data plane elements of a device defined or described by a P4 program. This new protocol aims at being the standard for P4 devices so that even control plane programs can be target-independent.
You can find a wrapper of the Control Plane CLI as one of the features of *P4-Utils*. It basically allows you to do the same but instead of using text sent to the CLI you can use the power of a scripting language such as python. You can read more about this API [here](https://github.com/nsg-ethz/p4-utils#control-plane-api).
\ No newline at end of file
In response to this need, in the last update of *P4-Utils* a P4Runtime API was introduced. It is called [`SimpleSwitchP4RuntimeAPI`](https://github.com/nsg-ethz/p4-utils/blob/junota/p4utils/utils/sswitch_p4runtime_API.py) and was designed to provide methods similar, in functioning and naming, to those of `SimpleSwitchThriftAPI` so that migrating from one to another is easier. Indeed, the only difference among the APIs is the protocol and it is as transparent as possible for the user.
克隆仓库

P4-Learning Documentation

  • BMv2 Simple Switch
  • Control Plane
  • Debugging and Troubleshooting

沪ICP备19002739号