P4_learning——controller

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

控制器

通过控制器下发规则

拓扑

在这里插入图片描述

{
   
   
  "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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值