我正在尝试从SDN OpenFlow交换机发送ARP请求以查找预定义主机的MAC地址(主机的IP地址已知:10.0.0.8/24)
我正在尝试为控制器使用虚拟IP和MAC地址 .
控制器的虚拟IP:10.1.2.3
控制器的虚拟MAC地址:00:12:34:56:78:90
我想要做的是,当控制器和交换机之间的连接 Build 时,在控制器中制作ARP请求,并通过交换机泛洪请求 .
# respond to switch connection up event
def _handle_ConnectionUp(self, event):
self.connection = event.connection
print("connecting to %s" %(self.connection))
# code to send ARP requests to servers
r = arp()
r.hwtype = r.HW_TYPE_ETHERNET
r.prototype = r.PROTO_TYPE_IP
r.hwlen = 6
r.protolen = r.protolen
r.opcode = r.REQUEST
r.hwdst = ETHER_BROADCAST
r.protodst = IPAddr("10.0.0.8")
r.hwsrc = EthAddr("00:12:34:56:78:90")
r.protosrc = IPAddr("10.1.2.3")
e = ethernet(type=ethernet.ARP_TYPE, src=EthAddr("00:12:34:56:78:90") , dst=ETHER_BROADCAST)
e.set_payload(r)
msg = of.ofp_packet_out()
msg.data = e.pack()
msg.actions.append(of.ofp_action_output(port = of.OFPP_FLOOD))
event.connection.send(msg)
但我看不到来自host-10.0.0.8的任何ARP回复 .
如果我对上述代码做错了,请告诉我 . 非常感谢你提前 .