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
  • Migrate to the new version

Migrate to the new version · 变更

页面历史
Updated Migrate to the new version (markdown) 编辑于 8月 02, 2021 作者: Jurij Nota's avatar Jurij Nota
Hide whitespace changes
Inline Side-by-side
Showing with 84 addition and 1 deletion
+84 -1
  • Migrate-to-the-new-version.md Migrate-to-the-new-version.md +84 -1
  • 未找到文件。
Migrate-to-the-new-version.md
查看页面@ 657a509c
......@@ -48,4 +48,87 @@ More options are available using the JSON network configuration file: check them
### Python Network Configuration
Beside having the JSON network configuration method, one can start and initialize the network using also the new Python `NetworkAPI`.
\ No newline at end of file
Beside having the JSON network configuration method, one can start and initialize the network using also the new Python `NetworkAPI`. Hereafter, we provide a simple example of how to use this new method and a comparison with the legacy JSON configuration file. If you need more information and instructions on how to exploit this functionality, please check out the documentation of *P4-Utils*.
```python
from p4utils.mininetlib.network_API import NetworkAPI
net = NetworkAPI()
# Network general options
net.setLogLevel('info')
net.enableCli()
# Network definition
net.addP4Switch('s1')
net.setP4CliInput('s1', 's1-commands.txt')
net.addP4Switch('s2')
net.setP4CliInput('s2', 's2-commands.txt')
net.addP4Switch('s3')
net.setP4CliInput('s3', 's3-commands.txt')
net.setP4SourceAll('program.p4')
net.addHost('h1')
net.addHost('h2')
net.addHost('h3')
net.addHost('h4')
net.addLink("h1", "s1", weight=5)
net.setBw('h1', 's1', 20)
net.setDelay('h1', 's1', 20)
net.setMaxQueueSize('h1', 's1', 100)
net.setLoss('h1', 's1', 0.01)
net.addLink("h2", "s2")
net.addLink("s1", "s2")
net.addLink("h3", "s3")
net.addLink("h4", "s3")
net.addLink("s1", "s3")
# Assignment strategy
net.mixed()
# Nodes general options
net.enablePcapDumpAll()
net.enableLogAll()
# Start the network
net.startNetwork()
```
The Python script shown above is equivalent to the following JSON network configuration file. Indeed, both snippets define the same network topology.
```json
{
"p4_src": "program.p4",
"cli": true,
"pcap_dump": true,
"enable_log": true,
"topology": {
"assignment_strategy": "mixed",
"links": [
["h1", "s1", {"delay":"20ms", "loss": 1, "bw": 20, "max_queue_size": 100, "weight":5}], ["h2", "s2"], ["s1", "s2"], ["h3", "s3"],["h4", "s3"], ["s1", "s3"]
],
"hosts": {
"h1": {
},
"h2": {
},
"h3": {
},
"h4": {
}
},
"switches": {
"s1": {
"cli_input": "s1-commands.txt"
},
"s2": {
"cli_input": "s2-commands.txt"
},
"s3": {
"cli_input": "s3-commands.txt"
}
}
}
}
```
克隆仓库

P4-Learning Documentation

  • Getting Started
  • Migrate to the new version
  • BMv2 Simple Switch
  • Control Plane
  • Debugging and Troubleshooting
  • Scapy
  • FAQ

沪ICP备19002739号