各位大大,有沒有人可以幫我解決以下問題
修改目的:希望OVS SWITCH 可以依照TCP封包的source port number貼上不同的802.1q的VLAN ID
我的修改方法:在simple_switch_13.py中修改_packet_in_handler()
1.為了能解析tcp封包,我加入這幾行
pkt_tcp = pkt.get_protocol(tcp.tcp)
if pkt_tcp:
srcport = pkt_tcp.src_port
desport = pkt_tcp.des_port
2.對switch下entry (pushvlan)
field = parser.OFMatchField.make(ofproto.OXM_OF_VLAN_VID,Vid)
match = parser.OFPMatch(tcp_src = srcport, in_port = in_port, ip_proto = 6, eth_type = 0x0800)
actions =[ datapath.ofproto_parser.OFPActionPushVlan(0x8100), datapath.ofproto_parser.OFPActionSetField(Vid)]
self.add_flow(datapath,1,match,actions)
3.對switch下entry (popvlan)
actions = [datapath.ofproto_parser.OFPActionPopVlan(ETH_TYPE_8021Q),parser.OFPActionOutput(out_port)]
match = parser.OFPMatch(in_port=in_port, eth_dst=dst)
self.add_flow(datapath, 2, match, actions)
附件為我的程式碼
請各位大大幫我看看我要怎麼修改才能達到我的實驗目的
目前遇到的問題
1.AttributeError: 'module' object has no attribute 'OFPMatchField'
2.entry無法正確地下到ovs中