yyang13 / ovs_nsh_patches

21 stars 16 forks source link

set mac address problem after "push_nsh" #6

Open SAM33 opened 7 years ago

SAM33 commented 7 years ago

After the "push_nsh" action had executed in flow table, the "set_field" action to ethernet header (i.e mod_dl_src) was no longer working.

I conducted experiment with "ovs-ofctl add-flow" command and monitored with Wireshark on OVS (monitor the network interface of port1 as follows)

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            node1(192.168.5.16)--[port2]--OVS--[port1]--node2(192.168.5.13)      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

---------------------------- Case1
The OVS did't set the mac address to "12:34:56:78:9a:bc" after it push a nsh_header

dump flows :
cookie=0x0, duration=7.552s, table=0, n_packets=2, n_bytes=148, priority=100,ip,in_port=2,nw_src=192.168.5.16,nw_dst=192.168.5.13 actions=push_nsh,load:0x1->NXM_NX_NSH_MDTYPE[],load:0x1->NXM_NX_NSH_NP[],load:0x4->NXM_NX_NSP[0..23],load:0xff->NXM_NX_NSI[],load:0x1->NXM_NX_NSH_C1[],load:0x2->NXM_NX_NSH_C2[],load:0x3->NXM_NX_NSH_C3[],load:0x4->NXM_NX_NSH_C4[],set_field:12:34:56:78:9a:bc->eth_dst,output:1

Wireshark result : Ethernet II, Src: le:3f:be:5f:a4:6a, Dst: 8a:75:a0:08:d8:ee

---------------------------- Case2
I continue to test with combing two flows to achieve the same utility as Case1
After the "set_field" action had executed int table[0], the OVS pushed NSH header to the packet in table[1]. I show the result as below.

dump flows :
cookie=0x0, duration=12.128s, table=0, n_packets=3, n_bytes=222, priority=100,ip,in_port=2,nw_src=192.168.5.16,nw_dst=192.168.5.13 actions=set_field:12:34:56:78:9a:bc->eth_dst,goto_table:1 cookie=0x0, duration=2.432s, table=1, n_packets=1, n_bytes=74, priority=100,ip,in_port=2,nw_src=192.168.5.16,nw_dst=192.168.5.13 actions=push_nsh,load:0x1->NXM_NX_NSH_MDTYPE[],load:0x1->NXM_NX_NSH_NP[],load:0x4->NXM_NX_NSP[0..23],load:0xff->NXM_NX_NSI[],load:0x1->NXM_NX_NSH_C1[],load:0x2->NXM_NX_NSH_C2[],load:0x3->NXM_NX_NSH_C3[],load:0x4->NXM_NX_NSH_C4[],output:1

Wireshark result : Ethernet II, Src: le:3f:be:5f:a4:6a, Dst: 12:34:56:78:9a:bc