# Mininet p4 2 [TOC] p4c compiler 官網 https://github.com/p4lang/p4c 有p4c compiler 詳細的說明  https://github.com/p4lang/behavioral-model target(simple_switch )  Compile p4c(program) and behavioral-model on The Raspberry pi Attention: Memory 可能不足 (rasberry pi 3 以前) ---  cli_input -> 同等於 cli 下 連接 Switch ``` simple_switch CLI --Thrift-port 9090 ``` cmd.txt ``` table_add mac_forward forward 00:00:0a:00:01:01 => 1 table_add mac_forward forward 00:00:0a:00:01:02 => 2 ``` topology.db (給controller 用的 p4run 完產生)  ### 分析 log file ``` [20:35:11.450] [bmv2] [D] [thread 5204] Adding interface s1-eth1 as port 1 Adding interface s1-eth2 as port 2 [20:35:11.483] [bmv2] [D] [thread 5204] Adding interface s1-eth2 as port 2 [20:35:11.506] [bmv2] [I] [thread 5204] Starting Thrift server on port 9090 ``` s1-eth1 -> port 1 s1-eth2 -> port 2 simple_switch_CLI --thrift-port 9090 (來連接) h1 ping h2 Receive and Parser ``` [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Processing packet received on port 1 [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Parser 'parser': start [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Parser 'parser' entering state 'start' [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Extracting header 'ethernet' [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Parser state 'start' has no switch, going to default next state [20:35:20.132] [bmv2] [T] [thread 5210] [4.0] [cxt 0] Bytes parsed: 14 [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Parser 'parser': end [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Pipeline 'ingress': start [20:35:20.132] [bmv2] [T] [thread 5210] [4.0] [cxt 0] Applying table 'MyIngress.mac_forward' [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Looking up key: * hdr.ethernet.dstAddr: 00000a000102 ``` Ingress ``` * hdr.ethernet.dstAddr: 00000a000102 [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Table 'MyIngress.mac_forward': hit with handle 1 [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Dumping entry 1 Match key: * hdr.ethernet.dstAddr: EXACT 00000a000102 Action entry: MyIngress.forward - 2, ``` dstMac Match 第二條Flow (hit with handle 1 ) ``` table_add mac_forward forward 00:00:0a:00:01:02 => 2 ``` Egress ``` [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Action entry is MyIngress.forward - 2, [20:35:20.132] [bmv2] [T] [thread 5210] [4.0] [cxt 0] Action MyIngress.forward [20:35:20.132] [bmv2] [T] [thread 5210] [4.0] [cxt 0] basic.p4(72) Primitive standard_metadata.egress_spec = port [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Pipeline 'ingress': end [20:35:20.132] [bmv2] [D] [thread 5210] [4.0] [cxt 0] Egress port is 2 [20:35:20.133] [bmv2] [D] [thread 5213] [4.0] [cxt 0] Pipeline 'egress': start [20:35:20.133] [bmv2] [D] [thread 5213] [4.0] [cxt 0] Pipeline 'egress': end [20:35:20.133] [bmv2] [D] [thread 5213] [4.0] [cxt 0] Deparser 'deparser': start [20:35:20.133] [bmv2] [D] [thread 5213] [4.0] [cxt 0] Deparsing header 'ethernet' [20:35:20.133] [bmv2] [D] [thread 5213] [4.0] [cxt 0] Deparser 'deparser': end [20:35:20.133] [bmv2] [D] [thread 5215] [4.0] [cxt 0] Transmitting packet of size 98 out of port 2 ``` ping reply (也是差不多的流程)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up