當我閱讀Beacon的一些源代碼時,我對OPAction_OUTPUT
感到困惑。 spec1.3表示OpenFlow Action OUTPUT是做什麼的?
必需操作:輸出。輸出操作會將數據包轉發到指定的OpenFlow端口(參見4.1) 。 OpenFlow交換機必須支持 轉發到物理端口,交換機定義的邏輯端口和 必需的保留端口(見4.5)。
但在兩點迷惑:
第一,
The Output action forwards a *packet*
,但是這個包是什麼意思?這是否意味着包含輸出操作的OpenFlowpacket-out
?或者包含在OpenFlowpacket-out
的數據字段中的數據包。二,下一步是什麼?當OpenFlow交換機收到包含
OUTPUT
操作的數據包時會做什麼?
讓我舉一個例子:當OFcontroller有一個包中,控制器做(L2交換機):
if dst in self.mac_to_port[dpid]:
out_port = self.mac_to_port[dpid][dst]
else:
out_port = ofproto.OFPP_FLOOD
actions = [datapath.ofproto_parser.OFPActionOutput(out_port)]
out = datapath.ofproto_parser.OFPPacketOut(
datapath=datapath, buffer_id=msg.buffer_id, in_port=msg.in_port,
actions=actions)
datapath.send_msg(out) // send out the PacketOut containing output action
所以,問題是:
- 什麼在此封包輸出中由動作
OUTPUT
輸出。 - OFSwitch在其端口收到此封包時會做什麼?
謝謝!
你應該標記你的答案是正確的。 :) –