Я создал правило для добавления к открытому vswitch, когда он подключается к контроллеру. Правило позволяет h1 обмениваться данными с h2, которые находятся на одном коммутаторе. Приведенное ниже правило добавляется, когда появляется соединение с контроллером.
event.connection.send(
of.ofp_flow_mod(action=of.ofp_action_output(port=1), priority=45,
match=of.ofp_match(dl_type=0x800, nw_dst="10.0.0.7")))
По какой-то причине поток не будет работать, но если я изменю его, чтобы он соответствовал использованию портов вместо IP, он будет работать. Поскольку существует несколько коммутаторов, я не могу просто сопоставить только порты.
сначала я подумал, что, возможно, ICMP не был IPV4, но я подтвердил, что он использует Tcpdump.
sudo tcpdump -e -r tcpdump.pcap dst 192.168.0.103
reading from file tcpdump.pcap, link-type EN10MB (Ethernet)
14:24:30.940749 00:a0:98:ae:2c:fe (oui Unknown) > 00:1d:ec:0e:0b:fa (oui Unknown), ethertype IPv4 (0x0800), length 98: 192.168.0.112 > 192.168.0.103: ICMP echo request, id 1962, seq 1, length 64
сеть состоит из магистрального коммутатора, подключенного к 2 листовым коммутаторам и 2 хостам на листовой коммутатор.
Любая помощь будет принята с благодарностью.
def _handle_ConnectionUp(self, event):
#dpid = event.connection.dpid
# printing the dpid
# log.info("Switch with DPID of %s has come up.",dpid_to_str(event.dpid))
print("Switch with DPID of %s has come up." % (dpid_to_str(event.dpid)))
# printing the dpid in hex
# log.info("Switch with DPID in HEX format of %s has come up." % (hex(event.dpid)))
print("Switch with DPID in HEX format of %s has come up." % (hex(event.dpid)))
if event.dpid == 0x1:
event.connection.send(
of.ofp_flow_mod(action=of.ofp_action_output(port=2), priority=45,
match=of.ofp_match(in_port = 1)))
event.connection.send(
of.ofp_flow_mod(action=of.ofp_action_output(port=1), priority=45,
match=of.ofp_match(dl_type=0x800, nw_dst="10.0.0.1")))
arp
на h1, узнает ли он аппаратный адрес h2? - person pchaigno   schedule 22.12.2017