簡體   English   中英

POX - 安裝規則,該規則表示每當某個數據包與ofp_match匹配時發送虛擬數據包

[英]POX - Installing a rule which says to send a dummy packet whenever a certain packet matches an ofp_match

是否可以在交換機上安裝指示交換機執行以下操作的規則:

If packet_in is TCP:
    send ( dummy packet )
    send (packet_in)
    send ( dummy packet)
else:
    send (packet_in)

我很欣賞那是很差的偽代碼,但是它應該可以說明我正在嘗試做的事情比解釋它要好。

基本上,我試圖通過傳輸虛擬數據包來間隔項目的TCP數據包傳輸,而不必要求將每個TCP數據包都發送到控制器。 我希望交換機表現正常,但是當它接收到發往某個端口的TCP數據包時,我希望該交換機還從同一端口向外發送一個虛擬數據包(由我構造),該虛擬數據包前往相同的目的地。

我了解可能會有一些更好的方法來完成我要達到的目標-我願意提出建議!

謝謝

據我所知,答案是否定的是OpenFlow不支持這一概念,更不用說Pox了。 Pox可以告訴交換機生成一個數據包,但是沒有流表條目具有將其他數據包發送到此處的動作。

可能的實現方式如下:

  1. TCP協議和端口號上的匹配有兩個動作。 第一個動作發送數據包,動作號2將數據包發送到流表的一些備用表。

  2. 在此表中,有一個操作可以修改數據包以發送此虛擬數據包。 您無法制作特定的VLAN,但可以說將目標IP修改為一些廢話值或將某些廢話VLAN設置為一種sudo標記。

編輯:用戶要求我了解備用表的含義,因此我將嘗試查找一些pox命令來顯示我計划使用的過程。 首先,我建議為這個 Wiki提供許多基本的pox命令,它有點陳舊,在某些情況下是錯誤的,但總的來說它非常有用。

在陳述備用表時,我在談論的是啟用了openflow 1.3的概念,該概念表示所有流表不必是要處理的單個列表。 相反,所有數據包都可以轉到表0進行處理,然后如果動作聲明它可以將數據包發送到表5以進行擴展處理,或者根據找到的表0進行更有針對性的處理。 這允許執行更多操作,您可以將這個新概念視為表的表或2d數組,其中最終元素是流表條目。 對不起,這個詞表出現了很多,我希望他們為這個概念選擇一個不同的詞。

默認情況下,Pox不支持此概念,因為它使用OpenFlow1.0,但是有一個擴展使它可以啟用的,有關更多信息,請參見此處 一些重要的部分可以在下面找到。

# Turn on Nicira packet_ins
msg = nx.nx_packet_in_format()
event.connection.send(msg)
# Turn on ability to specify table in flow_mods
msg = nx.nx_flow_mod_table_id()
event.connection.send(msg)
msg = nx.nx_flow_mod()
msg.priority = 1 # Low priority
msg.actions.append(of.ofp_action_output(port = of.OFPP_CONTROLLER))
msg.actions.append(nx.nx_action_resubmit.resubmit_table(table = 1))
event.connection.send(msg)
msg = nx.nx_flow_mod()
msg.table_id = 1
msg.priority = 1 # Low priority
msg.actions.append(of.ofp_action_output(port = of.OFPP_FLOOD))
event.connection.send(msg)

在此示例中,啟用了多表支持,然后添加了一個流,該流將所有數據包發送到控制器和表1,從那里,表1的流顯示泛洪所有數據包。 希望這使您對它們如何工作有一個大致的了解。

如果您還不知道如何使用pox編輯數據包,可以將以下示例操作添加到操作列表以更改目標mac地址。

ofp_action_dl_addr.set_dst(EthAddr("01:02:03:04:05:06"))

對於VLAN,我之前建議的方法可以做到

msg.actions.append(of.ofp_action_vlan_vid(vlan_vid=1234))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM