ovs流表高級特性(一)


表 1. 流表常用字段

對於 add−flow,add−flows 和 mod−flows 這三個命令,還需要指定要執行的動作:actions=[target][,target...]

一個流規則中可能有多個動作,按照指定的先后順序執行。

 

 

 

常見的操作有:

    • output:port: 輸出數據包到指定的端口。port 是指端口的 OpenFlow 端口編號
    • mod_vlan_vid: 修改數據包中的 VLAN tag
    • strip_vlan: 移除數據包中的 VLAN tag
    • mod_dl_src/ mod_dl_dest: 修改源或者目標的 MAC 地址信息
    • mod_nw_src/mod_nw_dst: 修改源或者目標的 IPv4 地址信息
    • resubmit:port: 替換流表的 in_port 字段,並重新進行匹配
    • load:value−>dst[start..end]: 寫數據到指定的字段

 

ip

Same as dl_type=0x0800.

icmp

Same as dl_type=0x0800,nw_proto=1.

tcp

Same as dl_type=0x0800,nw_proto=6.

udp

Same as dl_type=0x0800,nw_proto=17.

arp

Same as dl_type=0x0806.

rarp

Same as dl_type=0x8035.

 

 1、添加一條flow:屏蔽 STP 協議的廣播數據包

[root@kunpeng82 devuser]# ovs-ofctl add-flow vswitch1 "table=0, dl_dst=01:80:c2:00:00:00/ff:ff:ff:ff:ff:f0, actions=drop"
[root@kunpeng82 devuser]# ovs-appctl ofproto/trace br0 in_port=1,dl_dst=01:80:c2:00:00:05
br0: unknown bridge
ovs-appctl: ovs-vswitchd: server returned an error
[root@kunpeng82 devuser]# ovs-appctl ofproto/trace vswitch1 in_port=1,dl_dst=01:80:c2:00:00:05
Flow: in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=01:80:c2:00:00:05,dl_type=0x0000

bridge("vswitch1")
------------------
 0. dl_dst=01:80:c2:00:00:00/ff:ff:ff:ff:ff:f0, priority 32768
    drop

Final flow: unchanged
Megaflow: recirc_id=0,eth,in_port=1,dl_dst=01:80:c2:00:00:00/ff:ff:ff:ff:ff:f0,dl_type=0x0000
Datapath actions: drop
[root@kunpeng82 devuser]# ovs-appctl ofproto/trace vswitch1 in_port=1,dl_dst=01:80:c2:00:00:15
Flow: in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=01:80:c2:00:00:15,dl_type=0x0000

bridge("vswitch1")
------------------
 0. priority 0
    NORMAL
     >>>> received packet on unknown port 1 <<<<
     >> no input bundle, dropping

Final flow: unchanged
Megaflow: recirc_id=0,eth,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=00:00:00:00:00:00,dl_dst=01:80:c2:00:00:15,dl_type=0x0000
Datapath actions: drop

 

2、再添加一條flow:

ovs-ofctl add-flow  vswitch1 "table=0, priority=0, actions=resubmit(,1)"

添加之后talbe不存在actions=normal的flow:cookie=0x0, duration=177867.865s, table=0, n_packets=153445, n_bytes=16182100, priority=0 actions=NORMAL

[root@kunpeng82 devuser]# ovs-ofctl dump-flows vswitch1
cookie=0x0, duration=1424.340s, table=0, n_packets=0, n_bytes=0, dl_dst=01:80:c2:00:00:00/ff:ff:ff:ff:ff:f0 actions=drop
cookie=0x0, duration=552.220s, table=0, n_packets=6, n_bytes=420, priority=0 actions=resubmit(,1)

 
[root@kunpeng82 devuser]# ovs-appctl ofproto/trace vswitch1 in_port=1,dl_dst=01:80:c2:00:00:15
Flow: in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=01:80:c2:00:00:15,dl_type=0x0000

bridge("vswitch1")
------------------
 0. priority 0
    resubmit(,1)
 1. No match.
    drop

Final flow: unchanged
Megaflow: recirc_id=0,eth,in_port=1,dl_dst=01:80:c2:00:00:10/ff:ff:ff:ff:ff:f0,dl_type=0x0000
Datapath actions: drop
[root@kunpeng82 devuser]# 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM