def main(): bfs1 = [1, 2, 3] bfs2 = [1, 4] pol = if_(ARP, arp(), mac_learner()) # pol = mac_learner() return virtualize(virtualize(pol, merge(from_switches=[1, 4])), merge(from_switches=[1, 2, 3]))
def main(): bfs1 = [1,2,3] bfs2 = [1,4] pol = if_(ARP,arp(),mac_learner()) # pol = mac_learner() return virtualize( virtualize(pol, merge(from_switches=[1,4])), merge(from_switches=[1,2,3]))
def example_setup(num_clients=3, num_servers=3): ### EXAMPLE PARAMETERS # NETWORK BREAKDOWN ethernet = [2, 3, 4, 1000] ip_core = [5, 6, 7, 1002] gateway = [1001] # SUBNET ADDRESSING eth_prefix = '10.0.0.' ip_prefix = '10.0.1.' prefix_len = 24 eth_cidr = eth_prefix + '0/' + str(prefix_len) ip_cidr = ip_prefix + '0/' + str(prefix_len) # END HOST ADDRESSES public_ip = IP('10.0.1.100') fake_mac = MAC('BB:BB:BB:BB:BB:BB') eth_macs = { IP(eth_prefix+str(i+1)) : MAC('00:00:00:00:00:0'+str(i)) \ for i in range(1,1+num_clients) } ip_macs = { IP(ip_prefix+str(i+1)) : MAC('00:00:00:00:00:0'+str(i+num_clients)) \ for i in range(1,1+num_servers) } host_macs = dict(eth_macs.items() + ip_macs.items()) host_macs.update({IP(public_ip): fake_mac}) ### POLICIES FOR THIS EXAMPLE eth_pol = mac_learner() ip_pol = virtualize(mac_learner(), merge(name=5, from_switches=ip_core)) gw_pol = gateway_forwarder(eth_cidr, ip_cidr, host_macs) return ((switch_in(ethernet) >> eth_pol) + (switch_in(gateway) >> gw_pol) + (switch_in(ip_core) >> ip_pol))
def example_setup(num_clients=3, num_servers=3): ### EXAMPLE PARAMETERS # NETWORK BREAKDOWN ethernet = [2,3,4,1000] ip_core = [5,6,7,1002] gateway = [1001] # SUBNET ADDRESSING eth_prefix = '10.0.0.' ip_prefix = '10.0.1.' prefix_len = 24 eth_cidr = eth_prefix + '0/' + str(prefix_len) ip_cidr = ip_prefix + '0/' + str(prefix_len) # END HOST ADDRESSES public_ip = IP('10.0.1.100') fake_mac = MAC('BB:BB:BB:BB:BB:BB') eth_macs = { IP(eth_prefix+str(i+1)) : MAC('00:00:00:00:00:0'+str(i)) \ for i in range(1,1+num_clients) } ip_macs = { IP(ip_prefix+str(i+1)) : MAC('00:00:00:00:00:0'+str(i+num_clients)) \ for i in range(1,1+num_servers) } host_macs = dict(eth_macs.items() + ip_macs.items()) host_macs.update({IP(public_ip) : fake_mac}) ### POLICIES FOR THIS EXAMPLE eth_pol = mac_learner() ip_pol = virtualize(mac_learner(),merge(name=5,from_switches=ip_core)) gw_pol = gateway_forwarder(eth_cidr,ip_cidr,host_macs) return ((switch_in(ethernet) >> eth_pol) + (switch_in(gateway) >> gw_pol ) + (switch_in(ip_core) >> ip_pol ))
def example_setup(num_clients=3, num_servers=3): ### EXAMPLE PARAMETERS # NETWORK BREAKDOWN ethernet = [2,3,4,1000] ip_core = [5,6,7,1002] gateway = [1001] # SUBNET ADDRESSING eth_prefix = '10.0.0.' ip_prefix = '10.0.1.' prefix_len = 24 eth_cidr = eth_prefix + '0/' + str(prefix_len) ip_cidr = ip_prefix + '0/' + str(prefix_len) # END HOST ADDRESSES public_ip = IP('10.0.1.100') fake_mac = MAC('BB:BB:BB:BB:BB:BB') eth_macs = { IP(eth_prefix+str(i+1)) : MAC('00:00:00:00:00:0'+str(i)) \ for i in range(1,1+num_clients) } ip_macs = { IP(ip_prefix+str(i+1)) : MAC('00:00:00:00:00:0'+str(i+num_clients)) \ for i in range(1,1+num_servers) } host_macs = dict(eth_macs.items() + ip_macs.items()) host_macs.update({IP(public_ip) : fake_mac}) # PARAMETERS FOR FIREWALL/LOAD BALANCER R = [IP(ip_prefix + str(i)) for i in range(2, 2+num_servers)] H = {IP(eth_prefix + str(i)) : 0 for i in range(2,2+num_clients)} W = {(c,public_ip) for c in H.keys()} ### POLICIES FOR THIS EXAMPLE eth_pol = mac_learner() alb = lb(public_ip,R,H) >> fix_dstmac(ip_macs) afw = if_(ARP,passthrough,fw(W)) ip_pol = if_(match(srcip=eth_cidr), afw >> alb, alb >> afw) >> mac_learner() ip_pol = virtualize(ip_pol,merge(name=5,from_switches=ip_core)) gw_pol = gateway_forwarder(eth_cidr,ip_cidr,host_macs) return ((switch_in(ethernet) >> eth_pol) + (switch_in(gateway) >> gw_pol ) + (switch_in(ip_core) >> ip_pol ))
def example_setup(num_clients=3, num_servers=3): ### EXAMPLE PARAMETERS # NETWORK BREAKDOWN ethernet = [2, 3, 4, 1000] ip_core = [5, 6, 7, 1002] gateway = [1001] # SUBNET ADDRESSING eth_prefix = '10.0.0.' ip_prefix = '10.0.1.' prefix_len = 24 eth_cidr = eth_prefix + '0/' + str(prefix_len) ip_cidr = ip_prefix + '0/' + str(prefix_len) # END HOST ADDRESSES public_ip = IP('10.0.1.100') fake_mac = MAC('BB:BB:BB:BB:BB:BB') eth_macs = { IP(eth_prefix+str(i+1)) : MAC('00:00:00:00:00:0'+str(i)) \ for i in range(1,1+num_clients) } ip_macs = { IP(ip_prefix+str(i+1)) : MAC('00:00:00:00:00:0'+str(i+num_clients)) \ for i in range(1,1+num_servers) } host_macs = dict(eth_macs.items() + ip_macs.items()) host_macs.update({IP(public_ip): fake_mac}) # PARAMETERS FOR FIREWALL/LOAD BALANCER R = [IP(ip_prefix + str(i)) for i in range(2, 2 + num_servers)] H = {IP(eth_prefix + str(i)): 0 for i in range(2, 2 + num_clients)} W = {(c, public_ip) for c in H.keys()} ### POLICIES FOR THIS EXAMPLE eth_pol = mac_learner() alb = lb(public_ip, R, H) >> fix_dstmac(ip_macs) afw = if_(ARP, passthrough, fw(W)) ip_pol = if_(match(srcip=eth_cidr), afw >> alb, alb >> afw) >> mac_learner() ip_pol = virtualize(ip_pol, merge(name=5, from_switches=ip_core)) gw_pol = gateway_forwarder(eth_cidr, ip_cidr, host_macs) return ((switch_in(ethernet) >> eth_pol) + (switch_in(gateway) >> gw_pol) + (switch_in(ip_core) >> ip_pol))