Beacon のソース コードを読んでいるときに、OPAction_OUTPUT
. spec1.3は言った
必要なアクション: 出力。Output アクションは、指定された OpenFlow ポートにパケットを転送します (4.1 を参照)。OpenFlow スイッチは、物理ポート、スイッチ定義の論理ポート、および必要な予約済みポートへの転送をサポートする必要があります (4.5 を参照)。
しかし、次の 2 つの点で混乱しています。
最初に
The Output action forwards a *packet*
、しかし、このパケットは何を意味するのでしょうか?packet-out
Output Action を含むOpenFlow ということですか?またはOpenFlowのData フィールドに含まれるパケットpacket-out
。第二に、次は何ですか?
OUTPUT
アクションを含むパケットアウトを取得した場合、OpenFlow スイッチは何をしますか?
例を挙げましょう: 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 がそのポートでこのパケットアウトを受信すると、OFSwitch は何をしますか?
ありがとう!