我使用openvswitch在流表中使用多個操作。當我想修改TCP ipv4_dst並將數據包複製到另一個輸出端口時,數據包的確認號碼會隨機更改。而且我不更改IP標頭中的其他字段。爲什麼會發生?我不想看到數字的變化。openvswitch在哪裏處理TCP seq和ack?
流表項: OFPST_FLOW回覆(OF1.3)(XID = 0×2): 餅乾=爲0x0,持續時間= 6.846s,表= 0,n_packets = 0,n_bytes = 0,優先級= 6,TCP ,nw_src = 10.0.0.2,nw_dst = 10.0.0.1 actions = output:1
cookie = 0x0,duration = 6.846s,table = 0,n_packets = 0,n_bytes = 0,priority = 7,tcp,nw_src = 10.0.0.1,nw_dst = 10.0.0.2 actions = output:2,set_field:10.0.0.3-> ip_dst,set_field:00:00:00:00:00:03-> eth_dst,輸出:3
cookie = 0x0,duration = 6.846s,table = 0,n_packets = 0,n_bytes = 0,priority = 8,tcp,nw_src = 10.0.0.3,nw_dst = 10.0.0.1 actions =輸出:1
餅乾=爲0x0,持續時間= 6.847s,表= 0,n_packets = 0,n_bytes = 0,優先= 0行動= CONTROLLER:65535
拓撲: 10.0.0.1 ------- -switch -------- 10.0.0.2 | | 10.0.0.3 enter image description here
只有[目標IP和校驗和應該改變](https://github.com/openvswitch/ovs/blob/457402dc2aaa2a73e5a3142962d4a091379170cc/datapath/actions.c#L415-L422)。你能顯示流量表的內容嗎? – pchaigno
我添加上面的流程表。我已經在一些不同的情況下進行了測試。我發現,當我輸出到端口2時,更改目標IP並輸出到端口3時,確認號碼將被更改。但是,當我輸出到端口2時,更改目標MAC地址並輸出到端口3,確認號碼將是正確的。我不知道爲什麼 – killua