控制器
通过控制器下发规则
拓扑

{
"program": "ip_forward.p4",
"switch": "simple_switch",
"compiler": "p4c",
"options": "--target bmv2 --arch v1model --std p4-16",
"switch_cli": "simple_switch_CLI",
"cli": true,
"pcap_dump": true,
"enable_log": true,
"topo_module": {
"file_path": "",
"module_name": "p4utils.mininetlib.apptopo",
"object_name": "AppTopoStrategies"
},
"controller_module": null,
"topodb_module": {
"file_path": "",
"module_name": "p4utils.utils.topology",
"object_name": "Topology"
},
"mininet_module": {
"file_path": "",
"module_name": "p4utils.mininetlib.p4net",
"object_name": "P4Mininet"
},
"topology": {
"assignment_strategy": "mixed",
"auto_arp_tables": "true",
"auto_gw_arp": "true",
"links": [["h1", "s1"], ["s1", "s2"], ["s1", "s3"], ["s2", "s4"], ["s4", "s5"], ["s3", "s5"], ["s5", "h2"]],
"hosts": {
"h1": {
},
"h2": {
}
},
"switches": {
"s1": {
},
"s2": {
},
"s3": {
},
"s4": {
},
"s5": {
}
}
}
}
p4文件
#include <core.p4>
#include <v1model.p4>
typedef bit<48> macAddr_t;
typedef bit<9> egressSpec_t;
header arp_t {
bit<16> htype;
bit<16> ptype;
bit<8> hlen;
bit<8> plen;
bit<16> opcode;
bit<48> hwSrcAddr;
bit

本文档展示了一个使用P4编程语言定义的数据包处理逻辑,以及一个Python控制器来配置路由策略。P4程序定义了解析和生成ARP、Ethernet和IPv4头的解析器和脱水器,并包含一个ingress控制平面,用于根据IPv4地址进行路由决策。控制器部分则展示了如何连接到交换机,设置默认行为,并实现路由逻辑,通过最短路径为每个主机分配下一跳和端口。
最低0.47元/天 解锁文章
466

被折叠的 条评论
为什么被折叠?



