Commit be13de7c authored by NILANJAN DAW's avatar NILANJAN DAW

Integrated netcache with hash router

-- Enabled caching at switch using netcache
-- Integrated cache with Key partition router
-- Tested partition routing and caching with 2 replicaset
-- Tested functionality of KV working even if server is down
parent f09261c0
......@@ -8,3 +8,5 @@ controller/hot.txt
generator/hot.txt
generator/kv.txt
generator/query.txt
log*
......@@ -13,7 +13,7 @@ path_query = "query.txt"
query_rate = 1000
len_key = 16
print NC_PORT
counter = 0
def counting():
last_counter = 0
......@@ -32,7 +32,7 @@ for line in f.readlines():
key_header = int(line[1])
key_body = line[2:]
op_field = struct.pack("B", 8)
op_field = struct.pack("B", 0)
key_field = struct.pack(">I", key_header)
for i in range(len(key_body)):
......
......@@ -2,13 +2,21 @@ import socket
import struct
import time
import thread
import argparse
from nc_config import *
NC_PORT = 8889
NC_PORT = 8888
parser = argparse.ArgumentParser(description='Mininet demo')
parser.add_argument('--server-ip', help='IP of server',
type=str, action="store", required=True)
parser.add_argument('--controller-ip', help='IP of controller',
type=str, action="store", required=True)
args = parser.parse_args()
CLIENT_IP = "10.0.0.1"
SERVER_IP = "10.0.0.2"
CONTROLLER_IP = "10.0.0.3"
SERVER_IP = args.server_ip
CONTROLLER_IP = args.controller_ip
path_hot = "hot.txt"
path_log = "controller_log.txt"
......@@ -18,52 +26,52 @@ len_val = 128
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((CONTROLLER_IP, NC_PORT))
## Initiate the switch
# op = NC_UPDATE_REQUEST
# op_field = struct.pack("B", op)
# f = open(path_hot, "r")
# for line in f.readlines():
# line = line.split()
# key_header = line[0]
# key_body = line[1:]
# Initiate the switch
op = NC_UPDATE_REQUEST
op_field = struct.pack("B", op)
f = open(path_hot, "r")
for line in f.readlines():
line = line.split()
key_header = line[0]
key_body = line[1:]
# key_header = int(key_header)
# for i in range(len(key_body)):
# key_body[i] = int(key_body[i], 16)
key_header = int(key_header)
for i in range(len(key_body)):
key_body[i] = int(key_body[i], 16)
# key_field = ""
# key_field += struct.pack(">I", key_header)
# for i in range(len(key_body)):
# key_field += struct.pack("B", key_body[i])
key_field = ""
key_field += struct.pack(">I", key_header)
for i in range(len(key_body)):
key_field += struct.pack("B", key_body[i])
# packet = op_field + key_field
# s.sendto(packet, (SERVER_IP, NC_PORT))
# time.sleep(0.001)
# f.close()
packet = op_field + key_field
s.sendto(packet, (SERVER_IP, NC_PORT))
time.sleep(0.001)
f.close()
## Listen hot report
#f = open(path_log, "w")
# Listen hot report
f = open(path_log, "w")
while True:
packet, addr = s.recvfrom(2048)
# print(packet, addr)
op_field = packet[0]
key_field = packet[1:len_key + 1]
# load_field = packet[len_key + 1:]
load_field = packet[len_key + 1:]
# op = struct.unpack("B", op_field)[0]
# if (op != NC_HOT_READ_REQUEST):
# continue
op = struct.unpack("B", op_field)[0]
if (op != NC_HOT_READ_REQUEST):
continue
key_header = struct.unpack(">I", key_field[:4])[0]
print(op_field, key_header)
# load = struct.unpack(">IIII", load_field)
load = struct.unpack(">IIII", load_field)
# counter = counter + 1
# print "\tHot Item:", key_header, load
counter = counter + 1
print "\tHot Item:", key_header, load
#f.write(str(key_header) + ' ')
#f.write(str(load) + ' ')
#f.write("\n")
#f.flush()
#f.close()
f.write(str(key_header) + ' ')
f.write(str(load) + ' ')
f.write("\n")
f.flush()
f.close()
......@@ -9,5 +9,201 @@ table_add ethernet_set_mac ethernet_set_mac_act 2 => aa:bb:cc:dd:ee:12 aa:bb:cc:
table_add ethernet_set_mac ethernet_set_mac_act 3 => aa:bb:cc:dd:ee:13 aa:bb:cc:dd:ee:03
table_set_default calculate_router_hash calculate_router_hash_act
table_add update_dst update_dst_act 0 => 10.0.0.3
table_add update_dst update_dst_act 1 => 10.0.0.2
\ No newline at end of file
table_set_default _resubmit _resubmit_act
table_add update_dst update_dst_act 0 => 10.0.0.2
table_set_default hh_load_1_count hh_load_1_count_act
table_set_default hh_load_2_count hh_load_2_count_act
table_set_default hh_load_3_count hh_load_3_count_act
table_set_default hh_load_4_count hh_load_4_count_act
table_set_default hh_bf_1 hh_bf_1_act
table_set_default hh_bf_2 hh_bf_2_act
table_set_default hh_bf_3 hh_bf_3_act
table_set_default clone_to_controller clone_to_controller_act
table_set_default report_hot report_hot_act
mirroring_add 1 1
mirroring_add 2 2
mirroring_add 3 3
table_set_default reply_read_hit_before reply_read_hit_before_act
table_set_default reply_read_hit_after reply_read_hit_after_act
table_set_default read_value_1_1 read_value_1_1_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_1 write_value_1_1_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_1_2 read_value_1_2_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_2 write_value_1_2_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_1_3 read_value_1_3_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_3 write_value_1_3_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_1_4 read_value_1_4_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_4 write_value_1_4_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_2_1 read_value_2_1_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_1 write_value_2_1_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_2_2 read_value_2_2_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_2 write_value_2_2_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_2_3 read_value_2_3_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_3 write_value_2_3_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_2_4 read_value_2_4_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_4 write_value_2_4_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_3_1 read_value_3_1_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_1 write_value_3_1_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_3_2 read_value_3_2_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_2 write_value_3_2_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_3_3 read_value_3_3_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_3 write_value_3_3_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_3_4 read_value_3_4_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_4 write_value_3_4_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_4_1 read_value_4_1_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_1 write_value_4_1_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_4_2 read_value_4_2_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_2 write_value_4_2_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_4_3 read_value_4_3_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_3 write_value_4_3_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_4_4 read_value_4_4_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_4 write_value_4_4_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_5_1 read_value_5_1_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_1 write_value_5_1_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_5_2 read_value_5_2_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_2 write_value_5_2_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_5_3 read_value_5_3_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_3 write_value_5_3_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_5_4 read_value_5_4_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_4 write_value_5_4_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_6_1 read_value_6_1_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_1 write_value_6_1_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_6_2 read_value_6_2_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_2 write_value_6_2_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_6_3 read_value_6_3_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_3 write_value_6_3_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_6_4 read_value_6_4_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_4 write_value_6_4_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_7_1 read_value_7_1_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_1 write_value_7_1_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_7_2 read_value_7_2_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_2 write_value_7_2_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_7_3 read_value_7_3_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_3 write_value_7_3_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_7_4 read_value_7_4_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_4 write_value_7_4_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_8_1 read_value_8_1_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_1 write_value_8_1_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_set_default read_value_8_2 read_value_8_2_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_2 write_value_8_2_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_set_default read_value_8_3 read_value_8_3_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_3 write_value_8_3_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_set_default read_value_8_4 read_value_8_4_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_4 write_value_8_4_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_add check_cache_exist check_cache_exist_act 79228162514264337593543950336 => 1
table_add check_cache_exist check_cache_exist_act 237684487542793012780631851008 => 3
table_add check_cache_exist check_cache_exist_act 396140812571321687967719751680 => 5
table_add check_cache_exist check_cache_exist_act 554597137599850363154807652352 => 7
table_add check_cache_exist check_cache_exist_act 713053462628379038341895553024 => 9
table_add check_cache_exist check_cache_exist_act 871509787656907713528983453696 => 11
table_add check_cache_exist check_cache_exist_act 1029966112685436388716071354368 => 13
table_add check_cache_exist check_cache_exist_act 1188422437713965063903159255040 => 15
table_add check_cache_exist check_cache_exist_act 1346878762742493739090247155712 => 17
table_add check_cache_exist check_cache_exist_act 1505335087771022414277335056384 => 19
table_add check_cache_exist check_cache_exist_act 1663791412799551089464422957056 => 21
table_add check_cache_exist check_cache_exist_act 1822247737828079764651510857728 => 23
table_add check_cache_exist check_cache_exist_act 1980704062856608439838598758400 => 25
table_add check_cache_exist check_cache_exist_act 2139160387885137115025686659072 => 27
table_add check_cache_exist check_cache_exist_act 2297616712913665790212774559744 => 29
table_add check_cache_exist check_cache_exist_act 2456073037942194465399862460416 => 31
table_add check_cache_exist check_cache_exist_act 2614529362970723140586950361088 => 33
table_add check_cache_exist check_cache_exist_act 2772985687999251815774038261760 => 35
table_add check_cache_exist check_cache_exist_act 2931442013027780490961126162432 => 37
table_add check_cache_exist check_cache_exist_act 3089898338056309166148214063104 => 39
table_add check_cache_exist check_cache_exist_act 3248354663084837841335301963776 => 41
table_add check_cache_exist check_cache_exist_act 3406810988113366516522389864448 => 43
table_add check_cache_exist check_cache_exist_act 3565267313141895191709477765120 => 45
table_add check_cache_exist check_cache_exist_act 3723723638170423866896565665792 => 47
table_add check_cache_exist check_cache_exist_act 3882179963198952542083653566464 => 49
table_add check_cache_exist check_cache_exist_act 4040636288227481217270741467136 => 51
table_add check_cache_exist check_cache_exist_act 4199092613256009892457829367808 => 53
table_add check_cache_exist check_cache_exist_act 4357548938284538567644917268480 => 55
table_add check_cache_exist check_cache_exist_act 4516005263313067242832005169152 => 57
table_add check_cache_exist check_cache_exist_act 4674461588341595918019093069824 => 59
table_add check_cache_exist check_cache_exist_act 4832917913370124593206180970496 => 61
table_add check_cache_exist check_cache_exist_act 4991374238398653268393268871168 => 63
table_add check_cache_exist check_cache_exist_act 5149830563427181943580356771840 => 65
table_add check_cache_exist check_cache_exist_act 5308286888455710618767444672512 => 67
table_add check_cache_exist check_cache_exist_act 5466743213484239293954532573184 => 69
table_add check_cache_exist check_cache_exist_act 5625199538512767969141620473856 => 71
table_add check_cache_exist check_cache_exist_act 5783655863541296644328708374528 => 73
table_add check_cache_exist check_cache_exist_act 5942112188569825319515796275200 => 75
table_add check_cache_exist check_cache_exist_act 6100568513598353994702884175872 => 77
table_add check_cache_exist check_cache_exist_act 6259024838626882669889972076544 => 79
table_add check_cache_exist check_cache_exist_act 6417481163655411345077059977216 => 81
table_add check_cache_exist check_cache_exist_act 6575937488683940020264147877888 => 83
table_add check_cache_exist check_cache_exist_act 6734393813712468695451235778560 => 85
table_add check_cache_exist check_cache_exist_act 6892850138740997370638323679232 => 87
table_add check_cache_exist check_cache_exist_act 7051306463769526045825411579904 => 89
table_add check_cache_exist check_cache_exist_act 7209762788798054721012499480576 => 91
table_add check_cache_exist check_cache_exist_act 7368219113826583396199587381248 => 93
table_add check_cache_exist check_cache_exist_act 7526675438855112071386675281920 => 95
table_add check_cache_exist check_cache_exist_act 7685131763883640746573763182592 => 97
table_add check_cache_exist check_cache_exist_act 7843588088912169421760851083264 => 99
\ No newline at end of file
table_set_default check_cache_valid check_cache_valid_act
table_set_default set_cache_valid set_cache_valid_act
table_add ipv4_route set_egress 10.0.0.1 => 1
table_add ipv4_route set_egress 10.0.0.2 => 2
table_add ipv4_route set_egress 10.0.0.3 => 2
table_add ipv4_route set_egress 10.0.0.4 => 3
table_add ipv4_route set_egress 10.0.0.5 => 3
table_add ethernet_set_mac ethernet_set_mac_act 1 => aa:bb:cc:dd:ee:11 aa:bb:cc:dd:ee:01
table_add ethernet_set_mac ethernet_set_mac_act 2 => aa:bb:cc:dd:ee:12 aa:bb:cc:dd:ee:14
table_add ethernet_set_mac ethernet_set_mac_act 3 => aa:bb:cc:dd:ee:13 aa:bb:cc:dd:ee:17
table_set_default calculate_router_hash calculate_router_hash_act
table_set_default _resubmit _resubmit_act
table_add update_dst update_dst_act 0 => 10.0.0.2
table_add update_dst update_dst_act 1 => 10.0.0.4
table_set_default hh_load_1_count hh_load_1_count_act
table_set_default hh_load_2_count hh_load_2_count_act
table_set_default hh_load_3_count hh_load_3_count_act
table_set_default hh_load_4_count hh_load_4_count_act
table_set_default hh_bf_1 hh_bf_1_act
table_set_default hh_bf_2 hh_bf_2_act
table_set_default hh_bf_3 hh_bf_3_act
table_set_default clone_to_controller clone_to_controller_act
table_set_default report_hot report_hot_act
mirroring_add 1 1
mirroring_add 2 2
mirroring_add 3 3
mirroring_add 4 4
mirroring_add 5 5
table_set_default reply_read_hit_before reply_read_hit_before_act
table_set_default reply_read_hit_after reply_read_hit_after_act
table_set_default read_value_1_1 read_value_1_1_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_1 write_value_1_1_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_1_2 read_value_1_2_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_2 write_value_1_2_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_1_3 read_value_1_3_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_3 write_value_1_3_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_1_4 read_value_1_4_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_4 write_value_1_4_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_2_1 read_value_2_1_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_1 write_value_2_1_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_2_2 read_value_2_2_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_2 write_value_2_2_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_2_3 read_value_2_3_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_3 write_value_2_3_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_2_4 read_value_2_4_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_4 write_value_2_4_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_3_1 read_value_3_1_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_1 write_value_3_1_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_3_2 read_value_3_2_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_2 write_value_3_2_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_3_3 read_value_3_3_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_3 write_value_3_3_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_3_4 read_value_3_4_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_4 write_value_3_4_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_4_1 read_value_4_1_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_1 write_value_4_1_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_4_2 read_value_4_2_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_2 write_value_4_2_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_4_3 read_value_4_3_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_3 write_value_4_3_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_4_4 read_value_4_4_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_4 write_value_4_4_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_5_1 read_value_5_1_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_1 write_value_5_1_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_5_2 read_value_5_2_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_2 write_value_5_2_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_5_3 read_value_5_3_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_3 write_value_5_3_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_5_4 read_value_5_4_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_4 write_value_5_4_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_6_1 read_value_6_1_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_1 write_value_6_1_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_6_2 read_value_6_2_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_2 write_value_6_2_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_6_3 read_value_6_3_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_3 write_value_6_3_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_6_4 read_value_6_4_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_4 write_value_6_4_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_7_1 read_value_7_1_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_1 write_value_7_1_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_7_2 read_value_7_2_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_2 write_value_7_2_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_7_3 read_value_7_3_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_3 write_value_7_3_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_7_4 read_value_7_4_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_4 write_value_7_4_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_8_1 read_value_8_1_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_1 write_value_8_1_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_set_default read_value_8_2 read_value_8_2_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_2 write_value_8_2_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_set_default read_value_8_3 read_value_8_3_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_3 write_value_8_3_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_set_default read_value_8_4 read_value_8_4_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_4 write_value_8_4_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_add check_cache_exist check_cache_exist_act 79228162514264337593543950336 => 1
table_add check_cache_exist check_cache_exist_act 237684487542793012780631851008 => 3
table_add check_cache_exist check_cache_exist_act 396140812571321687967719751680 => 5
table_add check_cache_exist check_cache_exist_act 554597137599850363154807652352 => 7
table_add check_cache_exist check_cache_exist_act 713053462628379038341895553024 => 9
table_add check_cache_exist check_cache_exist_act 871509787656907713528983453696 => 11
table_add check_cache_exist check_cache_exist_act 1029966112685436388716071354368 => 13
table_add check_cache_exist check_cache_exist_act 1188422437713965063903159255040 => 15
table_add check_cache_exist check_cache_exist_act 1346878762742493739090247155712 => 17
table_add check_cache_exist check_cache_exist_act 1505335087771022414277335056384 => 19
table_add check_cache_exist check_cache_exist_act 1663791412799551089464422957056 => 21
table_add check_cache_exist check_cache_exist_act 1822247737828079764651510857728 => 23
table_add check_cache_exist check_cache_exist_act 1980704062856608439838598758400 => 25
table_add check_cache_exist check_cache_exist_act 2139160387885137115025686659072 => 27
table_add check_cache_exist check_cache_exist_act 2297616712913665790212774559744 => 29
table_add check_cache_exist check_cache_exist_act 2456073037942194465399862460416 => 31
table_add check_cache_exist check_cache_exist_act 2614529362970723140586950361088 => 33
table_add check_cache_exist check_cache_exist_act 2772985687999251815774038261760 => 35
table_add check_cache_exist check_cache_exist_act 2931442013027780490961126162432 => 37
table_add check_cache_exist check_cache_exist_act 3089898338056309166148214063104 => 39
table_add check_cache_exist check_cache_exist_act 3248354663084837841335301963776 => 41
table_add check_cache_exist check_cache_exist_act 3406810988113366516522389864448 => 43
table_add check_cache_exist check_cache_exist_act 3565267313141895191709477765120 => 45
table_add check_cache_exist check_cache_exist_act 3723723638170423866896565665792 => 47
table_add check_cache_exist check_cache_exist_act 3882179963198952542083653566464 => 49
table_add check_cache_exist check_cache_exist_act 4040636288227481217270741467136 => 51
table_add check_cache_exist check_cache_exist_act 4199092613256009892457829367808 => 53
table_add check_cache_exist check_cache_exist_act 4357548938284538567644917268480 => 55
table_add check_cache_exist check_cache_exist_act 4516005263313067242832005169152 => 57
table_add check_cache_exist check_cache_exist_act 4674461588341595918019093069824 => 59
table_add check_cache_exist check_cache_exist_act 4832917913370124593206180970496 => 61
table_add check_cache_exist check_cache_exist_act 4991374238398653268393268871168 => 63
table_add check_cache_exist check_cache_exist_act 5149830563427181943580356771840 => 65
table_add check_cache_exist check_cache_exist_act 5308286888455710618767444672512 => 67
table_add check_cache_exist check_cache_exist_act 5466743213484239293954532573184 => 69
table_add check_cache_exist check_cache_exist_act 5625199538512767969141620473856 => 71
table_add check_cache_exist check_cache_exist_act 5783655863541296644328708374528 => 73
table_add check_cache_exist check_cache_exist_act 5942112188569825319515796275200 => 75
table_add check_cache_exist check_cache_exist_act 6100568513598353994702884175872 => 77
table_add check_cache_exist check_cache_exist_act 6259024838626882669889972076544 => 79
table_add check_cache_exist check_cache_exist_act 6417481163655411345077059977216 => 81
table_add check_cache_exist check_cache_exist_act 6575937488683940020264147877888 => 83
table_add check_cache_exist check_cache_exist_act 6734393813712468695451235778560 => 85
table_add check_cache_exist check_cache_exist_act 6892850138740997370638323679232 => 87
table_add check_cache_exist check_cache_exist_act 7051306463769526045825411579904 => 89
table_add check_cache_exist check_cache_exist_act 7209762788798054721012499480576 => 91
table_add check_cache_exist check_cache_exist_act 7368219113826583396199587381248 => 93
table_add check_cache_exist check_cache_exist_act 7526675438855112071386675281920 => 95
table_add check_cache_exist check_cache_exist_act 7685131763883640746573763182592 => 97
table_add check_cache_exist check_cache_exist_act 7843588088912169421760851083264 => 99
\ No newline at end of file
table_set_default check_cache_valid check_cache_valid_act
table_set_default set_cache_valid set_cache_valid_act
table_add ipv4_route set_egress 10.0.0.1 => 1
table_add ipv4_route set_egress 10.0.0.4 => 1
table_add ipv4_route set_egress 10.0.0.5 => 1
table_add ipv4_route set_egress 10.0.0.2 => 2
table_add ipv4_route set_egress 10.0.0.3 => 3
table_add ethernet_set_mac ethernet_set_mac_act 1 => aa:bb:cc:dd:ee:14 aa:bb:cc:dd:ee:12
table_add ethernet_set_mac ethernet_set_mac_act 2 => aa:bb:cc:dd:ee:15 aa:bb:cc:dd:ee:02
table_add ethernet_set_mac ethernet_set_mac_act 3 => aa:bb:cc:dd:ee:16 aa:bb:cc:dd:ee:03
table_set_default calculate_router_hash calculate_router_hash_act
table_set_default _resubmit _resubmit_act
table_add update_dst update_dst_act 0 => 10.0.0.2
table_set_default hh_load_1_count hh_load_1_count_act
table_set_default hh_load_2_count hh_load_2_count_act
table_set_default hh_load_3_count hh_load_3_count_act
table_set_default hh_load_4_count hh_load_4_count_act
table_set_default hh_bf_1 hh_bf_1_act
table_set_default hh_bf_2 hh_bf_2_act
table_set_default hh_bf_3 hh_bf_3_act
table_set_default clone_to_controller clone_to_controller_act
table_set_default report_hot report_hot_act
mirroring_add 1 1
mirroring_add 2 2
mirroring_add 3 3
table_set_default reply_read_hit_before reply_read_hit_before_act
table_set_default reply_read_hit_after reply_read_hit_after_act
table_set_default read_value_1_1 read_value_1_1_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_1 write_value_1_1_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_1_2 read_value_1_2_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_2 write_value_1_2_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_1_3 read_value_1_3_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_3 write_value_1_3_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_1_4 read_value_1_4_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_4 write_value_1_4_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_2_1 read_value_2_1_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_1 write_value_2_1_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_2_2 read_value_2_2_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_2 write_value_2_2_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_2_3 read_value_2_3_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_3 write_value_2_3_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_2_4 read_value_2_4_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_4 write_value_2_4_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_3_1 read_value_3_1_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_1 write_value_3_1_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_3_2 read_value_3_2_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_2 write_value_3_2_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_3_3 read_value_3_3_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_3 write_value_3_3_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_3_4 read_value_3_4_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_4 write_value_3_4_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_4_1 read_value_4_1_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_1 write_value_4_1_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_4_2 read_value_4_2_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_2 write_value_4_2_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_4_3 read_value_4_3_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_3 write_value_4_3_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_4_4 read_value_4_4_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_4 write_value_4_4_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_5_1 read_value_5_1_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_1 write_value_5_1_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_5_2 read_value_5_2_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_2 write_value_5_2_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_5_3 read_value_5_3_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_3 write_value_5_3_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_5_4 read_value_5_4_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_4 write_value_5_4_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_6_1 read_value_6_1_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_1 write_value_6_1_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_6_2 read_value_6_2_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_2 write_value_6_2_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_6_3 read_value_6_3_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_3 write_value_6_3_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_6_4 read_value_6_4_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_4 write_value_6_4_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_7_1 read_value_7_1_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_1 write_value_7_1_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_7_2 read_value_7_2_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_2 write_value_7_2_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_7_3 read_value_7_3_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_3 write_value_7_3_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_7_4 read_value_7_4_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_4 write_value_7_4_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_8_1 read_value_8_1_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_1 write_value_8_1_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_set_default read_value_8_2 read_value_8_2_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_2 write_value_8_2_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_set_default read_value_8_3 read_value_8_3_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_3 write_value_8_3_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_set_default read_value_8_4 read_value_8_4_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_4 write_value_8_4_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_add check_cache_exist check_cache_exist_act 79228162514264337593543950336 => 1
table_add check_cache_exist check_cache_exist_act 237684487542793012780631851008 => 3
table_add check_cache_exist check_cache_exist_act 396140812571321687967719751680 => 5
table_add check_cache_exist check_cache_exist_act 554597137599850363154807652352 => 7
table_add check_cache_exist check_cache_exist_act 713053462628379038341895553024 => 9
table_add check_cache_exist check_cache_exist_act 871509787656907713528983453696 => 11
table_add check_cache_exist check_cache_exist_act 1029966112685436388716071354368 => 13
table_add check_cache_exist check_cache_exist_act 1188422437713965063903159255040 => 15
table_add check_cache_exist check_cache_exist_act 1346878762742493739090247155712 => 17
table_add check_cache_exist check_cache_exist_act 1505335087771022414277335056384 => 19
table_add check_cache_exist check_cache_exist_act 1663791412799551089464422957056 => 21
table_add check_cache_exist check_cache_exist_act 1822247737828079764651510857728 => 23
table_add check_cache_exist check_cache_exist_act 1980704062856608439838598758400 => 25
table_add check_cache_exist check_cache_exist_act 2139160387885137115025686659072 => 27
table_add check_cache_exist check_cache_exist_act 2297616712913665790212774559744 => 29
table_add check_cache_exist check_cache_exist_act 2456073037942194465399862460416 => 31
table_add check_cache_exist check_cache_exist_act 2614529362970723140586950361088 => 33
table_add check_cache_exist check_cache_exist_act 2772985687999251815774038261760 => 35
table_add check_cache_exist check_cache_exist_act 2931442013027780490961126162432 => 37
table_add check_cache_exist check_cache_exist_act 3089898338056309166148214063104 => 39
table_add check_cache_exist check_cache_exist_act 3248354663084837841335301963776 => 41
table_add check_cache_exist check_cache_exist_act 3406810988113366516522389864448 => 43
table_add check_cache_exist check_cache_exist_act 3565267313141895191709477765120 => 45
table_add check_cache_exist check_cache_exist_act 3723723638170423866896565665792 => 47
table_add check_cache_exist check_cache_exist_act 3882179963198952542083653566464 => 49
table_add check_cache_exist check_cache_exist_act 4040636288227481217270741467136 => 51
table_add check_cache_exist check_cache_exist_act 4199092613256009892457829367808 => 53
table_add check_cache_exist check_cache_exist_act 4357548938284538567644917268480 => 55
table_add check_cache_exist check_cache_exist_act 4516005263313067242832005169152 => 57
table_add check_cache_exist check_cache_exist_act 4674461588341595918019093069824 => 59
table_add check_cache_exist check_cache_exist_act 4832917913370124593206180970496 => 61
table_add check_cache_exist check_cache_exist_act 4991374238398653268393268871168 => 63
table_add check_cache_exist check_cache_exist_act 5149830563427181943580356771840 => 65
table_add check_cache_exist check_cache_exist_act 5308286888455710618767444672512 => 67
table_add check_cache_exist check_cache_exist_act 5466743213484239293954532573184 => 69
table_add check_cache_exist check_cache_exist_act 5625199538512767969141620473856 => 71
table_add check_cache_exist check_cache_exist_act 5783655863541296644328708374528 => 73
table_add check_cache_exist check_cache_exist_act 5942112188569825319515796275200 => 75
table_add check_cache_exist check_cache_exist_act 6100568513598353994702884175872 => 77
table_add check_cache_exist check_cache_exist_act 6259024838626882669889972076544 => 79
table_add check_cache_exist check_cache_exist_act 6417481163655411345077059977216 => 81
table_add check_cache_exist check_cache_exist_act 6575937488683940020264147877888 => 83
table_add check_cache_exist check_cache_exist_act 6734393813712468695451235778560 => 85
table_add check_cache_exist check_cache_exist_act 6892850138740997370638323679232 => 87
table_add check_cache_exist check_cache_exist_act 7051306463769526045825411579904 => 89
table_add check_cache_exist check_cache_exist_act 7209762788798054721012499480576 => 91
table_add check_cache_exist check_cache_exist_act 7368219113826583396199587381248 => 93
table_add check_cache_exist check_cache_exist_act 7526675438855112071386675281920 => 95
table_add check_cache_exist check_cache_exist_act 7685131763883640746573763182592 => 97
table_add check_cache_exist check_cache_exist_act 7843588088912169421760851083264 => 99
\ No newline at end of file
table_set_default check_cache_valid check_cache_valid_act
table_set_default set_cache_valid set_cache_valid_act
table_add ipv4_route set_egress 10.0.0.1 => 1
table_add ipv4_route set_egress 10.0.0.2 => 1
table_add ipv4_route set_egress 10.0.0.3 => 1
table_add ipv4_route set_egress 10.0.0.4 => 2
table_add ipv4_route set_egress 10.0.0.5 => 3
table_add ethernet_set_mac ethernet_set_mac_act 1 => aa:bb:cc:dd:ee:17 aa:bb:cc:dd:ee:13
table_add ethernet_set_mac ethernet_set_mac_act 2 => aa:bb:cc:dd:ee:18 aa:bb:cc:dd:ee:04
table_add ethernet_set_mac ethernet_set_mac_act 3 => aa:bb:cc:dd:ee:19 aa:bb:cc:dd:ee:05
table_set_default calculate_router_hash calculate_router_hash_act
table_set_default _resubmit _resubmit_act
table_add update_dst update_dst_act 0 => 10.0.0.2
table_set_default hh_load_1_count hh_load_1_count_act
table_set_default hh_load_2_count hh_load_2_count_act
table_set_default hh_load_3_count hh_load_3_count_act
table_set_default hh_load_4_count hh_load_4_count_act
table_set_default hh_bf_1 hh_bf_1_act
table_set_default hh_bf_2 hh_bf_2_act
table_set_default hh_bf_3 hh_bf_3_act
table_set_default clone_to_controller clone_to_controller_act
table_set_default report_hot report_hot_act
mirroring_add 1 1
mirroring_add 2 2
mirroring_add 3 3
table_set_default reply_read_hit_before reply_read_hit_before_act
table_set_default reply_read_hit_after reply_read_hit_after_act
table_set_default read_value_1_1 read_value_1_1_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_1 write_value_1_1_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_1_2 read_value_1_2_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_2 write_value_1_2_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_1_3 read_value_1_3_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_3 write_value_1_3_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_1_4 read_value_1_4_act
table_set_default add_value_header_1 add_value_header_1_act
table_set_default write_value_1_4 write_value_1_4_act
table_set_default remove_value_header_1 remove_value_header_1_act
table_set_default read_value_2_1 read_value_2_1_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_1 write_value_2_1_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_2_2 read_value_2_2_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_2 write_value_2_2_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_2_3 read_value_2_3_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_3 write_value_2_3_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_2_4 read_value_2_4_act
table_set_default add_value_header_2 add_value_header_2_act
table_set_default write_value_2_4 write_value_2_4_act
table_set_default remove_value_header_2 remove_value_header_2_act
table_set_default read_value_3_1 read_value_3_1_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_1 write_value_3_1_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_3_2 read_value_3_2_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_2 write_value_3_2_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_3_3 read_value_3_3_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_3 write_value_3_3_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_3_4 read_value_3_4_act
table_set_default add_value_header_3 add_value_header_3_act
table_set_default write_value_3_4 write_value_3_4_act
table_set_default remove_value_header_3 remove_value_header_3_act
table_set_default read_value_4_1 read_value_4_1_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_1 write_value_4_1_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_4_2 read_value_4_2_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_2 write_value_4_2_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_4_3 read_value_4_3_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_3 write_value_4_3_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_4_4 read_value_4_4_act
table_set_default add_value_header_4 add_value_header_4_act
table_set_default write_value_4_4 write_value_4_4_act
table_set_default remove_value_header_4 remove_value_header_4_act
table_set_default read_value_5_1 read_value_5_1_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_1 write_value_5_1_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_5_2 read_value_5_2_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_2 write_value_5_2_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_5_3 read_value_5_3_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_3 write_value_5_3_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_5_4 read_value_5_4_act
table_set_default add_value_header_5 add_value_header_5_act
table_set_default write_value_5_4 write_value_5_4_act
table_set_default remove_value_header_5 remove_value_header_5_act
table_set_default read_value_6_1 read_value_6_1_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_1 write_value_6_1_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_6_2 read_value_6_2_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_2 write_value_6_2_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_6_3 read_value_6_3_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_3 write_value_6_3_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_6_4 read_value_6_4_act
table_set_default add_value_header_6 add_value_header_6_act
table_set_default write_value_6_4 write_value_6_4_act
table_set_default remove_value_header_6 remove_value_header_6_act
table_set_default read_value_7_1 read_value_7_1_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_1 write_value_7_1_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_7_2 read_value_7_2_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_2 write_value_7_2_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_7_3 read_value_7_3_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_3 write_value_7_3_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_7_4 read_value_7_4_act
table_set_default add_value_header_7 add_value_header_7_act
table_set_default write_value_7_4 write_value_7_4_act
table_set_default remove_value_header_7 remove_value_header_7_act
table_set_default read_value_8_1 read_value_8_1_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_1 write_value_8_1_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_set_default read_value_8_2 read_value_8_2_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_2 write_value_8_2_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_set_default read_value_8_3 read_value_8_3_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_3 write_value_8_3_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_set_default read_value_8_4 read_value_8_4_act
table_set_default add_value_header_8 add_value_header_8_act
table_set_default write_value_8_4 write_value_8_4_act
table_set_default remove_value_header_8 remove_value_header_8_act
table_add check_cache_exist check_cache_exist_act 79228162514264337593543950336 => 1
table_add check_cache_exist check_cache_exist_act 237684487542793012780631851008 => 3
table_add check_cache_exist check_cache_exist_act 396140812571321687967719751680 => 5
table_add check_cache_exist check_cache_exist_act 554597137599850363154807652352 => 7
table_add check_cache_exist check_cache_exist_act 713053462628379038341895553024 => 9
table_add check_cache_exist check_cache_exist_act 871509787656907713528983453696 => 11
table_add check_cache_exist check_cache_exist_act 1029966112685436388716071354368 => 13
table_add check_cache_exist check_cache_exist_act 1188422437713965063903159255040 => 15
table_add check_cache_exist check_cache_exist_act 1346878762742493739090247155712 => 17
table_add check_cache_exist check_cache_exist_act 1505335087771022414277335056384 => 19
table_add check_cache_exist check_cache_exist_act 1663791412799551089464422957056 => 21
table_add check_cache_exist check_cache_exist_act 1822247737828079764651510857728 => 23
table_add check_cache_exist check_cache_exist_act 1980704062856608439838598758400 => 25
table_add check_cache_exist check_cache_exist_act 2139160387885137115025686659072 => 27
table_add check_cache_exist check_cache_exist_act 2297616712913665790212774559744 => 29
table_add check_cache_exist check_cache_exist_act 2456073037942194465399862460416 => 31
table_add check_cache_exist check_cache_exist_act 2614529362970723140586950361088 => 33
table_add check_cache_exist check_cache_exist_act 2772985687999251815774038261760 => 35
table_add check_cache_exist check_cache_exist_act 2931442013027780490961126162432 => 37
table_add check_cache_exist check_cache_exist_act 3089898338056309166148214063104 => 39
table_add check_cache_exist check_cache_exist_act 3248354663084837841335301963776 => 41
table_add check_cache_exist check_cache_exist_act 3406810988113366516522389864448 => 43
table_add check_cache_exist check_cache_exist_act 3565267313141895191709477765120 => 45
table_add check_cache_exist check_cache_exist_act 3723723638170423866896565665792 => 47
table_add check_cache_exist check_cache_exist_act 3882179963198952542083653566464 => 49
table_add check_cache_exist check_cache_exist_act 4040636288227481217270741467136 => 51
table_add check_cache_exist check_cache_exist_act 4199092613256009892457829367808 => 53
table_add check_cache_exist check_cache_exist_act 4357548938284538567644917268480 => 55
table_add check_cache_exist check_cache_exist_act 4516005263313067242832005169152 => 57
table_add check_cache_exist check_cache_exist_act 4674461588341595918019093069824 => 59
table_add check_cache_exist check_cache_exist_act 4832917913370124593206180970496 => 61
table_add check_cache_exist check_cache_exist_act 4991374238398653268393268871168 => 63
table_add check_cache_exist check_cache_exist_act 5149830563427181943580356771840 => 65
table_add check_cache_exist check_cache_exist_act 5308286888455710618767444672512 => 67
table_add check_cache_exist check_cache_exist_act 5466743213484239293954532573184 => 69
table_add check_cache_exist check_cache_exist_act 5625199538512767969141620473856 => 71
table_add check_cache_exist check_cache_exist_act 5783655863541296644328708374528 => 73
table_add check_cache_exist check_cache_exist_act 5942112188569825319515796275200 => 75
table_add check_cache_exist check_cache_exist_act 6100568513598353994702884175872 => 77
table_add check_cache_exist check_cache_exist_act 6259024838626882669889972076544 => 79
table_add check_cache_exist check_cache_exist_act 6417481163655411345077059977216 => 81
table_add check_cache_exist check_cache_exist_act 6575937488683940020264147877888 => 83
table_add check_cache_exist check_cache_exist_act 6734393813712468695451235778560 => 85
table_add check_cache_exist check_cache_exist_act 6892850138740997370638323679232 => 87
table_add check_cache_exist check_cache_exist_act 7051306463769526045825411579904 => 89
table_add check_cache_exist check_cache_exist_act 7209762788798054721012499480576 => 91
table_add check_cache_exist check_cache_exist_act 7368219113826583396199587381248 => 93
table_add check_cache_exist check_cache_exist_act 7526675438855112071386675281920 => 95
table_add check_cache_exist check_cache_exist_act 7685131763883640746573763182592 => 97
table_add check_cache_exist check_cache_exist_act 7843588088912169421760851083264 => 99
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -107,15 +107,28 @@ def main():
h.setMAC("aa:bb:cc:dd:ee:0%d" % (n + 1))
for i in range(nb_hosts):
if (i != n):
print("setting", "10.0.0.%d" % (i + 1), "aa:bb:cc:dd:ee:0%d" % (i + 1))
h.setARP("10.0.0.%d" % (i + 1), "aa:bb:cc:dd:ee:0%d" % (i + 1))
net.get('s1').setMAC("aa:bb:cc:dd:ee:1%d" % (n + 1), "s1-eth%d" % (n + 1))
ctr = 1
for i in range(3):
for j in range(3):
# if (n + 1) == 1:
print("setting s%d" % (i + 1), "aa:bb:cc:dd:ee:1%d" % (ctr), "s%d-eth%d" % (i + 1, j + 1))
net.get('s%d' % (i + 1)).setMAC("aa:bb:cc:dd:ee:1%d" % (ctr), "s%d-eth%d" % (i + 1, j + 1))
# elif (n + 1) < 4:
# print("setting s2", "aa:bb:cc:dd:ee:1%d" % (n + 1), "s2-eth%d" % (n + 1))
# net.get('s2').setMAC("aa:bb:cc:dd:ee:1%d" % (n + 1), "s2-eth%d" % (n + 1))
# else:
# print("setting s3", "aa:bb:cc:dd:ee:1%d" % (n + 1), "s3-eth%d" % (n + 1 - 2))
# net.get('s3').setMAC("aa:bb:cc:dd:ee:1%d" % (n + 1), "s3-eth%d" % (n + 1 - 2))
ctr += 1
sleep(1)
for i in range(nb_switches):
#cmd = [args.cli, "--json", args.json, "--thrift-port", str(_THRIFT_BASE_PORT + i)]
cmd = [args.cli, args.json, str(_THRIFT_BASE_PORT + i)]
with open("c.txt", "r") as f:
with open("c%d.txt" % (i + 1), "r") as f:
print " ".join(cmd)
try:
output = subprocess.check_output(cmd, stdin = f)
......
switches 1
hosts 3
switches 3
hosts 5
h1 s1
h2 s1
h3 s1
s2 s1
s3 s1
h2 s2
h3 s2
h4 s3
h5 s3
header_type nc_cache_md_t {
fields {
cache_exist: 1;
cache_index: 14;
cache_valid: 1;
}
}
metadata nc_cache_md_t nc_cache_md;
action check_cache_exist_act(index) {
modify_field (nc_cache_md.cache_exist, 1);
modify_field (nc_cache_md.cache_index, index);
}
table check_cache_exist {
reads {
nc_hdr.key: exact;
}
actions {
check_cache_exist_act;
}
size: NUM_CACHE;
}
register cache_valid_reg {
width: 1;
instance_count: NUM_CACHE;
}
action check_cache_valid_act() {
register_read(nc_cache_md.cache_valid, cache_valid_reg, nc_cache_md.cache_index);
}
table check_cache_valid {
actions {
check_cache_valid_act;
}
//default_action: check_cache_valid_act;
}
action set_cache_valid_act() {
register_write(cache_valid_reg, nc_cache_md.cache_index, 1);
}
table set_cache_valid {
actions {
set_cache_valid_act;
}
//default_action: set_cache_valid_act;
}
control process_cache {
apply (check_cache_exist);
if (nc_cache_md.cache_exist == 1) {
if (nc_hdr.op == NC_READ_REQUEST) {
apply (check_cache_valid);
}
else if (nc_hdr.op == NC_UPDATE_REPLY) {
apply (set_cache_valid);
}
}
}
#define HH_LOAD_WIDTH 32
#define HH_LOAD_NUM 256
#define HH_LOAD_HASH_WIDTH 8
#define HH_THRESHOLD 128
#define HH_BF_NUM 512
#define HH_BF_HASH_WIDTH 9
header_type nc_load_md_t {
fields {
index_1: 16;
index_2: 16;
index_3: 16;
index_4: 16;
load_1: 32;
load_2: 32;
load_3: 32;
load_4: 32;
}
}
metadata nc_load_md_t nc_load_md;
field_list hh_hash_fields {
nc_hdr.key;
}
register hh_load_1_reg {
width: HH_LOAD_WIDTH;
instance_count: HH_LOAD_NUM;
}
field_list_calculation hh_load_1_hash {
input {
hh_hash_fields;
}
algorithm : crc32;
output_width : HH_LOAD_HASH_WIDTH;
}
action hh_load_1_count_act() {
modify_field_with_hash_based_offset(nc_load_md.index_1, 0, hh_load_1_hash, HH_LOAD_NUM);
register_read(nc_load_md.load_1, hh_load_1_reg, nc_load_md.index_1);
register_write(hh_load_1_reg, nc_load_md.index_1, nc_load_md.load_1 + 1);
}
table hh_load_1_count {
actions {
hh_load_1_count_act;
}
}
register hh_load_2_reg {
width: HH_LOAD_WIDTH;
instance_count: HH_LOAD_NUM;
}
field_list_calculation hh_load_2_hash {
input {
hh_hash_fields;
}
algorithm : csum16;
output_width : HH_LOAD_HASH_WIDTH;
}
action hh_load_2_count_act() {
modify_field_with_hash_based_offset(nc_load_md.index_2, 0, hh_load_2_hash, HH_LOAD_NUM);
register_read(nc_load_md.load_2, hh_load_2_reg, nc_load_md.index_2);
register_write(hh_load_2_reg, nc_load_md.index_2, nc_load_md.load_2 + 1);
}
table hh_load_2_count {
actions {
hh_load_2_count_act;
}
}
register hh_load_3_reg {
width: HH_LOAD_WIDTH;
instance_count: HH_LOAD_NUM;
}
field_list_calculation hh_load_3_hash {
input {
hh_hash_fields;
}
algorithm : crc16;
output_width : HH_LOAD_HASH_WIDTH;
}
action hh_load_3_count_act() {
modify_field_with_hash_based_offset(nc_load_md.index_3, 0, hh_load_3_hash, HH_LOAD_NUM);
register_read(nc_load_md.load_3, hh_load_3_reg, nc_load_md.index_3);
register_write(hh_load_3_reg, nc_load_md.index_3, nc_load_md.load_3 + 1);
}
table hh_load_3_count {
actions {
hh_load_3_count_act;
}
}
register hh_load_4_reg {
width: HH_LOAD_WIDTH;
instance_count: HH_LOAD_NUM;
}
field_list_calculation hh_load_4_hash {
input {
hh_hash_fields;
}
algorithm : crc32;
output_width : HH_LOAD_HASH_WIDTH;
}
action hh_load_4_count_act() {
modify_field_with_hash_based_offset(nc_load_md.index_4, 0, hh_load_4_hash, HH_LOAD_NUM);
register_read(nc_load_md.load_4, hh_load_4_reg, nc_load_md.index_4);
register_write(hh_load_4_reg, nc_load_md.index_4, nc_load_md.load_4 + 1);
}
table hh_load_4_count {
actions {
hh_load_4_count_act;
}
}
control count_min {
apply (hh_load_1_count);
apply (hh_load_2_count);
apply (hh_load_3_count);
apply (hh_load_4_count);
}
header_type hh_bf_md_t {
fields {
index_1: 16;
index_2: 16;
index_3: 16;
bf_1: 1;
bf_2: 1;
bf_3: 1;
}
}
metadata hh_bf_md_t hh_bf_md;
register hh_bf_1_reg {
width: 1;
instance_count: HH_BF_NUM;
}
field_list_calculation hh_bf_1_hash {
input {
hh_hash_fields;
}
algorithm : crc32;
output_width : HH_BF_HASH_WIDTH;
}
action hh_bf_1_act() {
modify_field_with_hash_based_offset(hh_bf_md.index_1, 0, hh_bf_1_hash, HH_BF_NUM);
register_read(hh_bf_md.bf_1, hh_bf_1_reg, hh_bf_md.index_1);
register_write(hh_bf_1_reg, hh_bf_md.index_1, 1);
}
table hh_bf_1 {
actions {
hh_bf_1_act;
}
}
register hh_bf_2_reg {
width: 1;
instance_count: HH_BF_NUM;
}
field_list_calculation hh_bf_2_hash {
input {
hh_hash_fields;
}
algorithm : csum16;
output_width : HH_BF_HASH_WIDTH;
}
action hh_bf_2_act() {
modify_field_with_hash_based_offset(hh_bf_md.index_2, 0, hh_bf_2_hash, HH_BF_NUM);
register_read(hh_bf_md.bf_2, hh_bf_2_reg, hh_bf_md.index_2);
register_write(hh_bf_2_reg, hh_bf_md.index_2, 1);
}
table hh_bf_2 {
actions {
hh_bf_2_act;
}
}
register hh_bf_3_reg {
width: 1;
instance_count: HH_BF_NUM;
}
field_list_calculation hh_bf_3_hash {
input {
hh_hash_fields;
}
algorithm : crc16;
output_width : HH_BF_HASH_WIDTH;
}
action hh_bf_3_act() {
modify_field_with_hash_based_offset(hh_bf_md.index_3, 0, hh_bf_3_hash, HH_BF_NUM);
register_read(hh_bf_md.bf_3, hh_bf_3_reg, hh_bf_md.index_3);
register_write(hh_bf_3_reg, hh_bf_md.index_3, 1);
}
table hh_bf_3 {
actions {
hh_bf_3_act;
}
}
control bloom_filter {
apply (hh_bf_1);
apply (hh_bf_2);
apply (hh_bf_3);
}
field_list mirror_list {
nc_load_md.load_1;
nc_load_md.load_2;
nc_load_md.load_3;
nc_load_md.load_4;
}
#define CONTROLLER_MIRROR_DSET 3
action clone_to_controller_act() {
clone_egress_pkt_to_egress(CONTROLLER_MIRROR_DSET, mirror_list);
}
table clone_to_controller {
actions {
clone_to_controller_act;
}
}
control report_hot_step_1 {
apply (clone_to_controller);
}
#define CONTROLLER_IP 0x0a000003
action report_hot_act() {
modify_field (nc_hdr.op, NC_HOT_READ_REQUEST);
add_header (nc_load);
add_to_field(ipv4.totalLen, 16);
add_to_field(udp.len, 16);
modify_field (nc_load.load_1, nc_load_md.load_1);
modify_field (nc_load.load_2, nc_load_md.load_2);
modify_field (nc_load.load_3, nc_load_md.load_3);
modify_field (nc_load.load_4, nc_load_md.load_4);
modify_field (ipv4.dstAddr, CONTROLLER_IP);
}
table report_hot {
actions {
report_hot_act;
}
}
control report_hot_step_2 {
apply (report_hot);
}
control heavy_hitter {
if (standard_metadata.instance_type == 0) {
count_min();
if (nc_load_md.load_1 > HH_THRESHOLD) {
if (nc_load_md.load_2 > HH_THRESHOLD) {
if (nc_load_md.load_3 > HH_THRESHOLD) {
if (nc_load_md.load_4 > HH_THRESHOLD) {
bloom_filter();
if (hh_bf_md.bf_1 == 0 or hh_bf_md.bf_2 == 0 or hh_bf_md.bf_3 == 0){
report_hot_step_1();
}
}
}
}
}
}
else {
report_hot_step_2();
}
}
......@@ -5,12 +5,55 @@
#include "ethernet.p4"
#include "ipv4.p4"
#include "mds.p4"
#include "cache.p4"
#include "heavy_hitter.p4"
#include "value.p4"
#define PKT_INSTANCE_TYPE_NORMAL 0
#define PKT_INSTANCE_TYPE_INGRESS_CLONE 1
#define PKT_INSTANCE_TYPE_EGRESS_CLONE 2
#define PKT_INSTANCE_TYPE_COALESCED 3
#define PKT_INSTANCE_TYPE_INGRESS_RECIRC 4
#define PKT_INSTANCE_TYPE_REPLICATION 5
#define PKT_INSTANCE_TYPE_RESUBMIT 6
header_type resubmit_meta_t {
fields {
resubmit_key: 8;
}
}
metadata resubmit_meta_t resubmit_meta;
field_list resubmit_metadata {
resubmit_meta.resubmit_key;
}
action _resubmit_act() {
resubmit(resubmit_metadata);
}
table _resubmit{
actions {
_resubmit_act;
}
}
control ingress {
routePacket();
if (udp.dstPort == MDS_PORT) {
routePacket();
} else if (standard_metadata.instance_type == PKT_INSTANCE_TYPE_NORMAL) {
apply(_resubmit);
} else {
process_cache();
process_value();
}
apply(ipv4_route);
}
control egress {
if (nc_hdr.op == NC_READ_REQUEST and nc_cache_md.cache_exist != 1) {
heavy_hitter();
}
apply(ethernet_set_mac);
}
\ No newline at end of file
#define NC_PORT 8888
#define SILLY_PORT 8089
#define MDS_PORT 8889
#define NUM_CACHE 128
#define CLUSTER_COUNT 2
#define NC_READ_REQUEST 0
#define NC_READ_REPLY 1
......
......@@ -52,12 +52,20 @@ header_type udp_t {
}
header udp_t udp;
header_type nc_hdr_t {
header_type router_hdr_t {
fields {
op: 8;
key: 32;
}
}
header router_hdr_t router_hdr;
header_type nc_hdr_t {
fields {
op: 8;
key: 128;
}
}
header nc_hdr_t nc_hdr;
header_type nc_load_t {
......
......@@ -30,20 +30,39 @@ parser parse_tcp {
parser parse_udp {
extract (udp);
return select (latest.dstPort) {
// NC_PORT: drop;
SILLY_PORT: parse_nc_hdr;
default: parse_nc_hdr;
NC_PORT: parse_nc_hdr;
MDS_PORT: parse_router_hdr;
default: ingress;
}
}
parser parse_router_hdr {
extract (router_hdr);
return ingress;
}
parser parse_nc_hdr {
extract (nc_hdr);
return select(latest.op) {
NC_READ_REQUEST: ingress;
NC_READ_REPLY: parse_value;
NC_HOT_READ_REQUEST: parse_nc_load;
NC_UPDATE_REQUEST: ingress;
NC_UPDATE_REPLY: parse_value;
default: ingress;
}
}
parser parse_nc_load {
extract (nc_load);
return ingress;
}
parser parse_value {
return parse_nc_value_1;
}
/*
The parsers for value headers are defined in value.p4
k = 1, 2, ..., 8
......
#define CLUSTER_COUNT 2
#define ROUTER_HASH_WIDTH 8
header_type router_t {
......@@ -11,6 +10,7 @@ metadata router_t router;
action update_dst_act(dstAddr) {
modify_field (ipv4.dstAddr, dstAddr);
modify_field (udp.dstPort, NC_PORT);
}
table update_dst {
......@@ -23,7 +23,7 @@ table update_dst {
}
field_list router_hash_fields {
nc_hdr.key;
router_hdr.key;
}
field_list_calculation router_hash {
......
#include "includes/defines.p4"
#include "includes/headers.p4"
#include "includes/parsers.p4"
#include "includes/checksum.p4"
#include "cache.p4"
#include "heavy_hitter.p4"
#include "value.p4"
#include "ipv4.p4"
#include "ethernet.p4"
control ingress {
process_cache();
process_value();
apply (ipv4_route);
}
control egress {
if (nc_hdr.op == NC_READ_REQUEST and nc_cache_md.cache_exist != 1) {
heavy_hitter();
}
apply (ethernet_set_mac);
}
#define HEADER_VALUE(i) \
header_type nc_value_##i##_t { \
fields { \
value_##i##_1: 32; \
value_##i##_2: 32; \
value_##i##_3: 32; \
value_##i##_4: 32; \
} \
} \
header nc_value_##i##_t nc_value_##i;
#define PARSER_VALUE(i, ip1) \
parser parse_nc_value_##i { \
extract (nc_value_##i); \
return parse_nc_value_##ip1; \
}
#define REGISTER_VALUE_SLICE(i, j) \
register value_##i##_##j##_reg { \
width: 32; \
instance_count: NUM_CACHE; \
}
#define REGISTER_VALUE(i) \
REGISTER_VALUE_SLICE(i, 1) \
REGISTER_VALUE_SLICE(i, 2) \
REGISTER_VALUE_SLICE(i, 3) \
REGISTER_VALUE_SLICE(i, 4)
#define ACTION_READ_VALUE_SLICE(i, j) \
action read_value_##i##_##j##_act() { \
register_read(nc_value_##i.value_##i##_##j, value_##i##_##j##_reg, nc_cache_md.cache_index); \
}
#define ACTION_READ_VALUE(i) \
ACTION_READ_VALUE_SLICE(i, 1) \
ACTION_READ_VALUE_SLICE(i, 2) \
ACTION_READ_VALUE_SLICE(i, 3) \
ACTION_READ_VALUE_SLICE(i, 4)
#define TABLE_READ_VALUE_SLICE(i, j) \
table read_value_##i##_##j { \
actions { \
read_value_##i##_##j##_act; \
} \
}
#define TABLE_READ_VALUE(i) \
TABLE_READ_VALUE_SLICE(i, 1) \
TABLE_READ_VALUE_SLICE(i, 2) \
TABLE_READ_VALUE_SLICE(i, 3) \
TABLE_READ_VALUE_SLICE(i, 4)
#define ACTION_ADD_VALUE_HEADER(i) \
action add_value_header_##i##_act() { \
add_to_field(ipv4.totalLen, 16);\
add_to_field(udp.len, 16);\
add_header(nc_value_##i); \
}
#define TABLE_ADD_VALUE_HEADER(i) \
table add_value_header_##i { \
actions { \
add_value_header_##i##_act; \
} \
}
#define ACTION_WRITE_VALUE_SLICE(i, j) \
action write_value_##i##_##j##_act() { \
register_write(value_##i##_##j##_reg, nc_cache_md.cache_index, nc_value_##i.value_##i##_##j); \
}
#define ACTION_WRITE_VALUE(i) \
ACTION_WRITE_VALUE_SLICE(i, 1) \
ACTION_WRITE_VALUE_SLICE(i, 2) \
ACTION_WRITE_VALUE_SLICE(i, 3) \
ACTION_WRITE_VALUE_SLICE(i, 4)
#define TABLE_WRITE_VALUE_SLICE(i, j) \
table write_value_##i##_##j { \
actions { \
write_value_##i##_##j##_act; \
} \
}
#define TABLE_WRITE_VALUE(i) \
TABLE_WRITE_VALUE_SLICE(i, 1) \
TABLE_WRITE_VALUE_SLICE(i, 2) \
TABLE_WRITE_VALUE_SLICE(i, 3) \
TABLE_WRITE_VALUE_SLICE(i, 4)
#define ACTION_REMOVE_VALUE_HEADER(i) \
action remove_value_header_##i##_act() { \
subtract_from_field(ipv4.totalLen, 16);\
subtract_from_field(udp.len, 16);\
remove_header(nc_value_##i); \
}
#define TABLE_REMOVE_VALUE_HEADER(i) \
table remove_value_header_##i { \
actions { \
remove_value_header_##i##_act; \
} \
}
#define CONTROL_PROCESS_VALUE(i) \
control process_value_##i { \
if (nc_hdr.op == NC_READ_REQUEST and nc_cache_md.cache_valid == 1) { \
apply (add_value_header_##i); \
apply (read_value_##i##_1); \
apply (read_value_##i##_2); \
apply (read_value_##i##_3); \
apply (read_value_##i##_4); \
} \
else if (nc_hdr.op == NC_UPDATE_REPLY and nc_cache_md.cache_exist == 1) { \
apply (write_value_##i##_1); \
apply (write_value_##i##_2); \
apply (write_value_##i##_3); \
apply (write_value_##i##_4); \
apply (remove_value_header_##i); \
} \
}
#define HANDLE_VALUE(i, ip1) \
HEADER_VALUE(i) \
PARSER_VALUE(i, ip1) \
REGISTER_VALUE(i) \
ACTION_READ_VALUE(i) \
TABLE_READ_VALUE(i) \
ACTION_ADD_VALUE_HEADER(i) \
TABLE_ADD_VALUE_HEADER(i) \
ACTION_WRITE_VALUE(i) \
TABLE_WRITE_VALUE(i) \
ACTION_REMOVE_VALUE_HEADER(i) \
TABLE_REMOVE_VALUE_HEADER(i) \
CONTROL_PROCESS_VALUE(i)
#define FINAL_PARSER(i) \
parser parse_nc_value_##i { \
return ingress; \
}
HANDLE_VALUE(1, 2)
HANDLE_VALUE(2, 3)
HANDLE_VALUE(3, 4)
HANDLE_VALUE(4, 5)
HANDLE_VALUE(5, 6)
HANDLE_VALUE(6, 7)
HANDLE_VALUE(7, 8)
HANDLE_VALUE(8, 9)
FINAL_PARSER(9)
header_type reply_read_hit_info_md_t {
fields {
ipv4_srcAddr: 32;
ipv4_dstAddr: 32;
}
}
metadata reply_read_hit_info_md_t reply_read_hit_info_md;
action reply_read_hit_before_act() {
modify_field (reply_read_hit_info_md.ipv4_srcAddr, ipv4.srcAddr);
modify_field (reply_read_hit_info_md.ipv4_dstAddr, ipv4.dstAddr);
}
table reply_read_hit_before {
actions {
reply_read_hit_before_act;
}
}
action reply_read_hit_after_act() {
modify_field (ipv4.srcAddr, reply_read_hit_info_md.ipv4_dstAddr);
modify_field (ipv4.dstAddr, reply_read_hit_info_md.ipv4_srcAddr);
modify_field (nc_hdr.op, NC_READ_REPLY);
}
table reply_read_hit_after {
actions {
reply_read_hit_after_act;
}
}
control process_value {
if (nc_hdr.op == NC_READ_REQUEST and nc_cache_md.cache_valid == 1) {
apply (reply_read_hit_before);
}
process_value_1();
process_value_2();
process_value_3();
process_value_4();
process_value_5();
process_value_6();
process_value_7();
process_value_8();
if (nc_hdr.op == NC_READ_REQUEST and nc_cache_md.cache_valid == 1) {
apply (reply_read_hit_after);
}
}
......@@ -2,13 +2,22 @@ import socket
import struct
import time
import thread
import argparse
from nc_config import *
NC_PORT = 8889
parser = argparse.ArgumentParser(description='Mininet demo')
parser.add_argument('--server-ip', help='IP of server',
type=str, action="store", required=True)
parser.add_argument('--controller-ip', help='IP of controller',
type=str, action="store", required=True)
args = parser.parse_args()
NC_PORT = 8888
CLIENT_IP = "10.0.0.1"
SERVER_IP = "10.0.0.2"
CONTROLLER_IP = "10.0.0.3"
SERVER_IP = args.server_ip
CONTROLLER_IP = args.controller_ip
path_kv = "kv.txt"
path_log = "server_log.txt"
......@@ -55,7 +64,7 @@ thread.start_new_thread(counting, ())
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((SERVER_IP, NC_PORT))
#f = open(path_log, "w")
f = open(path_log, "w")
while True:
packet, addr = s.recvfrom(2048)
op_field = packet[0]
......@@ -64,22 +73,23 @@ while True:
op = struct.unpack("B", op_field)[0]
key_header = struct.unpack(">I", key_field[:4])[0]
print(op, key_header)
# if (op == NC_READ_REQUEST or op == NC_HOT_READ_REQUEST):
# op = NC_READ_REPLY
# op_field = struct.pack("B", op)
# key_field, val_field = kv[key_header]
# packet = op_field + key_field + val_field
# s.sendto(packet, (CLIENT_IP, NC_PORT))
# counter = counter + 1
# elif (op == NC_UPDATE_REQUEST):
# op = NC_UPDATE_REPLY
# op_field = struct.pack("B", op)
# key_field, val_field = kv[key_header]
# packet = op_field + key_field + val_field
# s.sendto(packet, (CONTROLLER_IP, NC_PORT))
if (op == NC_READ_REQUEST or op == NC_HOT_READ_REQUEST):
# print("in")
op = NC_READ_REPLY
op_field = struct.pack("B", op)
key_field, val_field = kv[key_header]
packet = op_field + key_field + val_field
s.sendto(packet, (CLIENT_IP, NC_PORT))
counter = counter + 1
elif (op == NC_UPDATE_REQUEST):
op = NC_UPDATE_REPLY
op_field = struct.pack("B", op)
key_field, val_field = kv[key_header]
packet = op_field + key_field + val_field
s.sendto(packet, (CONTROLLER_IP, NC_PORT))
#f.write(str(op) + ' ')
#f.write(str(key_header) + '\n')
#f.flush()
#print counter
#f.close()
f.write(str(op) + ' ')
f.write(str(key_header) + '\n')
f.flush()
print counter
f.close()
1 2
1 276
1 131
1 10
1 50
1 356
1 24
1 106
1 334
1 122
1 494
1 2
1 115
1 2
1 106
1 48
1 2
1 791
1 10
1 178
1 2
1 926
1 178
1 2
1 2
1 964
1 8
1 10
1 626
1 10
1 202
1 484
1 2
1 276
1 2
1 2
1 24
1 268
1 659
1 24
1 736
1 8
1 8
1 106
1 712
1 226
1 706
1 324
1 8
1 137
1 772
1 16
1 18
1 24
1 184
1 8
1 10
1 799
1 405
1 2
1 90
1 486
1 860
1 90
1 699
1 32
1 88
1 48
1 18
1 18
1 177
1 340
1 2
1 901
1 82
1 32
1 113
1 675
1 8
1 18
1 80
1 374
1 138
1 2
1 2
1 2
1 975
1 863
1 2
1 2
1 104
1 415
1 113
1 24
1 26
1 738
1 746
1 42
1 90
1 153
1 602
1 2
1 2
1 943
1 485
1 406
1 2
1 536
1 2
1 146
1 161
1 460
1 8
1 2
1 10
1 689
1 2
1 2
1 782
1 2
1 293
1 423
1 675
1 34
1 32
1 34
1 200
1 900
1 2
1 42
1 428
1 163
1 8
1 2
1 227
1 2
1 50
1 2
1 24
1 185
1 351
1 2
1 2
1 414
1 2
1 34
1 10
1 120
1 50
1 88
1 797
1 176
1 2
1 8
1 34
1 10
1 284
1 342
1 24
1 477
1 16
1 651
1 887
1 58
1 2
1 836
1 2
1 2
1 2
1 80
1 115
1 513
1 107
1 169
1 48
1 241
1 437
1 2
1 2
1 2
1 186
1 689
1 294
1 122
1 40
1 807
1 50
1 24
1 121
1 26
1 2
1 193
1 2
1 137
1 2
1 105
1 683
1 278
1 105
1 2
1 16
1 310
1 350
1 295
1 8
1 477
1 26
1 260
1 122
1 460
1 48
1 357
1 48
1 123
1 48
1 414
1 714
1 66
1 96
1 112
1 2
1 2
1 16
1 24
1 2
1 26
1 642
1 2
1 8
1 8
1 42
1 2
1 350
1 242
1 34
1 2
1 285
1 24
1 2
1 8
1 348
1 713
1 154
1 555
1 18
1 74
1 2
1 2
1 147
1 8
1 48
1 8
1 2
1 2
1 829
1 774
1 2
1 2
1 437
1 26
1 2
1 414
1 261
1 2
1 227
1 2
1 74
1 2
1 82
1 179
1 153
1 58
1 610
1 2
1 16
1 2
1 10
1 48
1 2
1 610
1 32
1 2
1 736
1 18
1 50
1 225
1 2
1 335
1 455
1 562
1 160
1 10
1 194
1 115
1 269
1 66
1 2
1 10
1 96
1 389
1 335
1 311
1 2
1 2
1 48
1 250
1 2
1 341
1 139
1 16
1 32
1 170
1 194
1 16
1 224
1 163
1 130
1 162
1 219
1 8
1 32
1 24
1 263
1 113
1 545
1 24
1 8
1 16
1 894
1 224
1 658
1 2
1 176
1 2
1 16
1 56
1 2
1 161
1 404
1 104
1 34
1 153
1 608
1 18
1 2
1 964
1 2
1 10
1 8
1 34
1 64
1 112
1 2
1 2
1 2
1 286
1 121
1 295
1 18
1 2
1 233
1 2
1 2
1 114
1 10
1 217
1 171
1 2
1 737
1 112
1 745
1 2
1 2
1 2
1 107
1 16
1 484
1 324
1 2
1 949
1 96
1 2
1 470
1 234
1 2
1 18
1 104
1 186
1 602
1 42
1 226
1 225
1 460
1 335
1 26
1 152
1 706
1 536
1 2
1 2
1 2
1 243
1 16
1 2
1 8
1 186
1 129
1 2
1 633
1 2
1 16
1 619
1 90
1 163
1 131
1 2
1 34
1 58
1 2
1 200
1 728
1 807
1 462
1 58
1 80
1 991
1 18
1 178
1 225
1 8
1 80
1 356
1 579
1 8
1 130
1 2
1 66
1 641
1 122
1 2
1 747
1 308
1 262
1 431
1 26
1 178
1 8
1 18
1 2
1 510
1 98
1 169
1 356
1 2
1 437
1 251
1 16
1 32
1 2
1 2
1 861
1 64
1 154
1 523
1 672
1 2
1 2
1 2
1 139
1 171
1 2
1 261
1 40
1 147
1 2
1 446
1 171
1 66
1 2
1 10
1 162
1 2
1 32
1 98
1 145
1 34
1 18
1 447
1 707
1 194
1 32
1 399
1 2
1 48
1 56
1 2
1 179
1 24
1 807
1 24
1 303
1 200
1 2
1 146
1 32
1 8
1 886
1 42
1 999
1 940
1 16
1 2
1 145
1 8
1 96
1 18
1 2
1 88
1 529
1 122
1 796
1 131
1 104
1 2
1 88
1 317
1 216
1 699
1 438
1 16
1 789
1 104
1 42
1 114
1 933
1 42
1 279
1 10
1 373
1 18
1 2
1 2
1 665
1 10
1 2
1 90
1 2
1 332
1 32
1 2
1 10
1 155
1 2
1 32
1 529
1 2
1 884
1 2
1 2
1 224
1 32
1 42
1 26
1 616
1 397
1 924
1 2
1 208
1 131
1 437
1 34
1 2
1 50
1 528
1 32
1 10
1 105
1 240
1 561
1 26
1 310
1 2
1 26
1 160
1 154
1 2
1 486
1 170
1 626
1 2
1 2
1 664
1 989
1 178
1 798
1 8
1 892
1 2
1 249
1 96
1 40
1 278
1 10
1 422
1 2
1 412
1 26
1 619
1 251
1 160
1 18
1 8
1 10
1 746
1 10
1 309
1 316
1 10
1 123
1 991
1 56
1 327
1 8
1 16
1 10
1 241
1 781
1 40
1 2
1 80
1 16
1 16
1 389
1 115
1 477
1 531
1 2
1 310
1 16
1 349
1 218
1 2
1 2
1 814
1 2
1 798
1 2
1 80
1 2
1 658
1 698
1 40
1 96
1 10
1 453
1 34
1 16
1 420
1 471
1 136
1 201
1 390
1 268
1 64
1 114
1 16
1 168
1 122
1 380
1 893
1 2
1 66
1 775
1 104
1 374
1 595
1 868
1 2
1 2
1 219
1 2
1 82
1 943
1 2
1 609
1 2
1 130
1 444
1 311
1 185
1 90
1 2
1 10
1 2
1 2
1 478
1 2
1 2
1 2
1 64
1 16
1 114
1 8
1 66
1 26
1 2
1 8
1 8
1 2
1 301
1 250
1 2
1 950
1 760
1 276
1 2
1 508
1 210
1 2
1 366
1 10
1 388
1 862
1 10
1 2
1 2
1 413
1 131
1 2
1 80
1 2
1 2
1 447
1 351
1 350
1 404
1 2
1 285
1 2
1 806
1 16
1 10
1 88
1 10
1 471
1 522
1 240
1 268
1 350
1 2
1 332
1 2
1 145
1 365
1 2
1 8
1 56
1 234
1 2
1 2
1 753
1 2
1 2
1 137
1 219
1 301
1 878
1 16
1 2
1 10
1 227
1 650
1 8
1 10
1 420
1 18
1 24
1 34
1 10
1 530
1 493
1 447
1 80
1 138
1 121
1 8
1 34
1 8
1 561
1 2
1 2
1 2
1 42
1 121
1 2
1 278
1 523
1 203
1 2
1 8
1 536
1 2
1 251
1 430
1 325
1 2
1 799
1 42
1 2
1 113
1 16
1 2
1 698
1 208
1 16
1 2
1 356
1 160
1 90
1 2
1 26
1 209
1 689
1 24
1 34
1 364
1 18
1 2
1 2
1 2
1 973
1 177
1 414
1 80
1 106
1 26
1 88
1 2
1 64
1 357
1 48
1 115
1 10
1 8
1 326
1 941
1 452
1 26
1 2
1 2
1 139
1 634
1 2
1 122
1 8
1 2
1 829
1 66
1 210
1 10
1 2
1 194
1 18
1 195
1 58
1 24
1 2
1 32
1 332
1 562
1 2
1 295
1 112
1 365
1 225
1 343
1 2
1 248
1 2
1 194
1 308
1 2
1 845
1 980
1 24
1 8
1 10
1 10
1 294
1 193
1 648
1 261
1 234
1 10
1 26
1 365
1 421
1 115
1 18
1 160
1 2
1 18
1 2
1 177
1 2
1 365
1 485
1 185
1 2
1 2
1 2
1 8
1 10
1 40
1 42
1 16
1 66
1 56
1 8
1 437
1 24
1 530
1 2
1 415
1 996
1 16
1 178
1 2
1 10
1 287
1 113
1 863
1 2
1 107
1 88
1 303
1 153
1 895
1 18
1 863
1 270
1 136
1 2
1 154
1 261
1 494
1 624
1 195
1 26
1 8
1 2
1 16
1 689
1 616
1 453
1 698
1 32
1 739
1 503
1 2
1 10
1 10
1 139
1 34
1 2
1 2
1 161
1 2
1 26
1 232
1 375
1 18
1 2
1 32
1 736
1 2
1 138
1 925
1 2
1 2
1 2
1 26
1 528
1 139
1 10
1 2
1 8
1 2
1 349
1 2
1 2
1 113
1 877
1 80
1 145
1 155
1 2
1 943
1 10
1 569
1 2
1 2
1 40
1 42
1 531
1 508
1 421
1 34
1 2
1 308
1 2
1 192
1 2
1 285
1 453
1 579
1 640
1 2
1 16
1 34
1 335
1 64
1 649
1 26
1 365
1 130
1 18
1 2
1 2
1 2
1 58
1 2
1 262
1 681
1 398
1 2
1 40
1 32
1 2
1 32
1 2
1 24
1 2
1 383
1 512
1 234
1 2
1 24
1 26
1 2
1 261
1 2
1 66
1 815
1 16
1 2
1 286
1 657
1 10
1 18
1 128
1 88
1 2
1 625
1 2
1 478
1 176
1 50
1 744
1 688
1 477
1 2
1 2
1 74
1 2
1 656
1 120
1 10
1 98
1 26
1 511
1 657
1 317
1 18
1 113
1 10
1 122
1 2
1 2
1 10
1 2
1 420
1 775
1 131
1 193
1 477
1 2
1 2
1 2
1 2
1 139
1 415
1 2
1 2
1 184
1 2
1 18
1 2
1 58
1 405
1 8
1 2
1 2
1 601
1 249
1 178
1 2
1 350
1 168
1 24
1 2
1 316
1 74
1 430
1 356
1 26
1 208
1 262
1 72
1 16
1 8
1 632
1 24
1 32
1 16
1 90
1 909
1 10
1 365
1 34
1 2
1 438
1 522
1 666
1 268
1 40
1 42
1 2
1 34
1 508
1 388
1 96
1 10
1 343
1 927
1 8
1 242
1 40
1 74
1 261
1 2
1 219
1 106
1 50
1 632
1 2
1 2
1 2
1 40
1 98
1 40
1 317
1 397
1 2
1 894
1 138
1 72
1 381
1 316
1 989
1 66
1 64
1 893
1 138
1 436
1 2
1 2
1 122
1 82
1 24
1 309
1 649
1 2
1 152
1 2
1 502
1 233
1 248
1 2
1 104
1 233
1 2
1 391
1 823
1 2
1 10
1 26
1 219
1 42
1 791
1 2
1 2
1 137
1 510
1 2
1 96
1 233
1 578
1 357
1 106
1 8
1 104
1 2
1 171
1 2
1 366
1 2
1 8
1 8
1 447
1 24
1 2
1 2
1 200
1 121
1 269
1 80
1 333
1 82
1 699
1 8
1 894
1 146
1 673
1 2
1 545
1 178
1 2
1 277
1 50
1 26
1 121
1 508
1 2
1 823
1 260
1 2
1 34
1 8
1 40
1 160
1 153
1 18
1 389
1 8
1 2
1 160
1 2
1 510
1 42
1 208
1 895
1 277
1 155
1 374
1 66
1 10
1 235
1 2
1 619
1 877
1 160
1 243
1 2
1 348
1 2
1 494
1 697
1 8
1 64
1 2
1 120
1 10
1 990
1 16
1 399
1 2
1 8
1 437
1 98
1 342
1 2
1 935
1 302
1 16
1 24
1 2
1 2
1 26
1 136
1 8
1 58
1 16
1 413
1 2
1 514
1 24
1 144
1 383
1 2
1 991
1 2
1 16
1 2
1 10
1 50
1 704
1 260
1 16
1 64
1 981
1 251
1 155
1 16
1 406
1 2
1 122
1 192
1 2
1 373
1 8
1 224
1 374
1 522
1 404
1 721
1 544
1 18
1 2
1 813
1 453
1 34
1 325
1 2
1 657
1 2
1 674
1 940
1 34
1 8
1 2
1 2
1 56
1 502
1 105
1 10
1 10
1 163
1 10
1 2
1 8
1 2
1 48
1 2
1 104
1 511
1 66
1 32
1 193
1 309
1 32
1 2
1 8
1 34
1 18
1 2
1 391
1 2
1 8
1 2
1 26
1 104
1 16
1 10
1 122
1 302
1 515
1 310
1 2
1 56
1 16
1 24
1 74
1 2
1 18
1 82
1 706
1 852
1 104
1 2
1 146
1 16
1 997
1 2
1 853
1 216
1 2
1 155
1 200
1 2
1 50
1 2
1 24
1 2
1 2
1 616
1 624
1 10
1 260
1 106
1 349
1 56
1 887
1 10
1 8
1 829
1 390
1 2
1 821
1 186
1 608
1 218
1 2
1 8
1 538
1 58
1 324
1 104
1 2
1 316
1 10
1 2
1 224
1 106
1 40
1 720
1 2
1 8
1 8
1 155
1 461
1 404
1 114
1 2
1 625
1 232
1 871
1 168
1 576
1 131
1 201
1 241
1 136
1 16
1 66
1 8
1 446
1 10
1 2
1 2
1 262
1 2
1 154
1 26
1 2
1 16
1 24
1 10
1 161
1 295
1 16
1 88
1 8
1 168
1 2
1 863
1 210
1 618
1 2
1 106
1 153
1 319
1 153
1 2
1 193
1 202
1 823
1 531
1 10
1 2
1 538
1 10
1 2
1 48
1 64
1 123
1 8
1 74
1 8
1 16
1 342
1 145
1 626
1 137
1 2
1 8
1 396
1 820
1 2
1 367
1 96
1 18
1 2
1 311
1 26
1 2
1 390
1 2
1 34
1 523
1 18
1 234
1 262
1 155
1 2
1 16
1 234
1 302
1 980
1 18
1 10
1 195
1 2
1 243
1 2
1 942
1 381
1 64
1 98
1 2
1 24
1 295
1 568
1 128
1 268
1 847
1 168
1 16
1 123
1 2
1 696
1 958
1 276
1 2
1 232
1 251
1 74
1 40
1 780
1 8
1 375
1 34
1 2
1 2
1 16
1 650
1 10
1 2
1 10
1 147
1 2
1 2
1 2
1 343
1 160
1 16
1 303
1 454
1 42
1 704
1 18
1 88
1 82
1 2
1 2
1 656
1 202
1 486
1 333
1 168
1 428
1 2
1 8
1 319
1 744
1 26
1 2
1 341
1 58
1 40
1 8
1 40
1 40
1 10
1 18
1 64
1 397
1 521
1 319
1 88
1 153
1 927
1 470
1 2
1 2
1 16
1 242
1 48
1 194
1 2
1 948
1 335
1 391
1 34
1 42
1 413
1 241
1 863
1 248
1 2
1 80
1 2
1 335
1 294
1 80
1 2
1 115
1 744
1 162
1 364
1 88
1 10
1 8
1 2
1 74
1 10
1 420
1 232
1 723
1 404
1 2
1 32
1 2
1 201
1 170
1 388
1 106
1 130
1 24
1 224
1 398
1 675
1 195
1 2
1 8
1 82
1 2
1 520
1 42
1 113
1 2
1 2
1 293
1 56
1 10
1 2
1 10
1 2
1 34
1 18
1 16
1 10
1 2
1 2
1 788
1 219
1 2
1 365
1 58
1 88
1 577
1 2
1 10
1 991
1 42
1 509
1 8
1 268
1 528
1 105
1 42
1 365
1 515
1 861
1 32
1 72
1 10
1 642
1 177
1 2
1 104
1 854
1 88
1 2
1 2
1 209
1 26
1 10
1 276
1 2
1 185
1 429
1 66
1 10
1 902
1 2
1 2
1 2
1 847
1 782
1 136
1 153
1 680
1 546
1 10
1 413
1 179
1 327
1 162
1 26
1 251
1 934
1 584
1 2
1 10
1 428
1 66
1 407
1 2
1 104
1 24
1 8
1 951
1 177
1 58
1 470
1 138
1 940
1 8
1 10
1 104
1 26
1 32
1 830
1 248
1 494
1 332
1 48
1 120
1 26
1 200
1 64
1 40
1 569
1 48
1 617
1 10
1 18
1 16
1 334
1 209
1 82
1 40
1 879
1 357
1 2
1 8
1 18
1 287
1 50
1 279
1 8
1 390
1 130
1 18
1 469
1 2
1 24
1 104
1 16
1 8
1 830
1 34
1 58
1 16
1 34
1 24
1 56
1 317
1 234
1 10
1 138
1 2
1 74
1 10
1 2
1 292
1 956
1 24
1 2
1 2
1 723
1 2
1 502
1 146
1 381
1 2
1 225
1 105
1 2
1 814
1 18
1 2
1 277
1 10
1 227
1 364
1 603
1 2
1 2
1 478
1 531
1 168
1 287
1 860
1 2
1 88
1 50
1 600
1 2
1 412
1 277
1 439
1 10
1 32
1 807
1 48
1 813
1 10
1 2
1 10
1 351
1 436
1 18
1 232
1 16
1 2
1 470
1 58
1 641
1 145
1 302
1 42
1 546
1 249
1 2
1 446
1 225
1 32
1 706
1 8
1 813
1 2
1 8
1 807
1 58
1 210
1 147
1 359
1 66
1 284
1 780
1 202
1 128
1 2
1 8
1 656
1 232
1 123
1 444
1 10
1 333
1 318
1 319
1 2
1 122
1 56
1 40
1 2
1 8
1 136
1 72
1 895
1 104
1 885
1 332
1 287
1 2
1 138
1 26
1 2
1 50
1 672
1 2
1 812
1 155
1 2
1 343
1 261
1 195
1 224
1 88
1 2
1 348
1 42
1 18
1 2
1 139
1 114
1 294
1 366
1 16
1 2
1 2
1 714
1 104
1 122
1 2
1 511
1 262
1 2
1 773
1 278
1 129
1 501
1 2
1 48
1 592
1 187
1 436
1 16
1 2
1 42
1 120
1 763
1 300
1 509
1 226
1 74
1 383
1 161
1 276
1 90
1 2
1 501
1 364
1 699
1 98
1 64
1 8
1 8
1 420
1 58
1 431
1 815
1 192
1 2
1 240
1 24
1 42
1 32
1 10
1 871
1 155
1 138
1 106
1 2
1 529
1 2
1 114
1 578
1 2
1 115
1 10
1 90
1 139
1 2
1 2
1 926
1 241
1 192
1 144
1 10
1 2
1 2
1 956
1 194
1 171
1 2
1 357
1 26
1 50
1 2
1 168
1 2
1 2
1 310
1 2
1 120
1 153
1 8
1 8
1 139
1 80
1 138
1 308
1 739
1 208
1 217
1 16
1 18
1 325
1 26
1 16
1 2
1 584
1 602
1 2
1 8
1 943
1 2
1 2
1 16
1 746
1 203
1 224
1 2
1 18
1 487
1 98
1 723
1 123
1 885
1 2
1 66
1 2
1 746
1 487
1 690
1 398
1 8
1 2
1 16
1 178
1 16
1 276
1 476
1 194
1 965
1 139
1 2
1 2
1 106
1 2
1 324
1 24
1 160
1 2
1 10
1 2
1 428
1 161
1 271
1 96
1 26
1 2
1 58
1 240
1 295
1 26
1 234
1 48
1 2
1 219
1 48
1 279
1 528
1 34
1 2
1 798
1 390
1 26
1 8
1 925
1 2
1 58
1 42
1 2
1 26
1 2
1 2
1 155
1 334
1 2
1 211
1 16
1 195
1 8
1 10
1 8
1 2
1 16
1 203
1 16
1 469
1 48
1 2
1 780
1 837
1 26
1 720
1 2
1 617
1 10
1 760
1 18
1 208
1 18
1 26
1 160
1 958
1 16
1 123
1 617
1 941
1 2
1 80
1 2
1 2
1 162
1 2
1 152
1 241
1 2
1 104
1 90
1 2
1 18
1 10
1 2
1 208
1 300
1 633
1 788
1 176
1 461
1 852
1 50
1 74
1 104
1 178
1 423
1 186
1 2
1 2
1 121
1 16
1 131
1 32
1 16
1 2
1 2
1 396
1 2
1 16
1 2
1 48
1 269
1 137
1 32
1 2
1 10
1 64
1 139
1 2
1 2
1 74
1 32
1 586
1 18
1 152
1 469
1 34
1 2
1 511
1 48
1 233
1 2
1 2
1 531
1 415
1 2
1 760
1 218
1 24
1 529
1 2
1 26
1 192
1 32
1 2
1 731
1 619
1 398
1 10
1 8
1 113
1 185
1 301
1 2
1 318
1 187
1 438
1 235
1 16
1 477
1 2
1 163
1 619
1 162
1 192
1 967
1 146
1 113
1 2
1 2
1 8
1 311
1 8
1 66
1 8
1 122
1 8
1 8
1 2
1 428
1 522
1 114
1 619
1 310
1 18
1 105
1 8
1 96
1 478
1 64
1 807
1 8
1 161
1 248
1 16
1 178
1 16
1 248
1 2
1 32
1 545
1 783
1 10
1 48
1 796
1 32
1 714
1 16
1 40
1 720
1 2
1 980
1 178
1 211
1 113
1 916
1 42
1 26
1 40
1 120
1 278
1 8
1 121
1 82
1 147
1 82
1 292
1 2
1 844
1 276
1 2
1 146
1 2
1 303
1 82
1 287
1 42
1 8
1 34
1 40
1 18
1 40
1 50
1 209
1 2
1 241
1 388
1 270
1 980
1 26
1 367
1 16
1 18
1 2
1 884
1 114
1 200
1 10
1 251
1 26
1 10
1 2
1 160
1 168
1 334
1 2
1 115
1 129
1 16
1 2
1 309
1 10
1 429
1 788
1 8
1 115
1 407
1 2
1 2
1 502
1 2
1 179
1 66
1 82
1 107
1 123
1 161
1 2
1 24
1 831
1 277
1 356
1 208
1 202
1 56
1 187
1 58
1 2
9 1
1 404
9 3
9 5
9 7
9 9
9 11
9 13
9 15
1 2
9 17
9 19
9 21
9 23
1 2
9 25
9 27
9 29
9 31
9 33
9 35
1 964
9 37
1 2
9 39
9 41
9 43
9 45
9 47
9 49
9 51
9 53
9 55
1 10
9 57
1 311
9 59
9 61
9 63
9 65
9 67
9 69
9 71
9 73
1 260
9 75
9 77
9 79
9 81
9 83
1 664
9 85
1 8
9 87
9 89
9 91
9 93
9 95
9 97
1 2
9 99
1 650
1 722
1 399
1 2
1 555
1 114
1 186
1 405
1 16
1 2
1 343
1 162
1 617
1 552
1 179
1 2
1 667
1 2
1 138
1 632
1 185
1 537
1 72
1 26
1 2
1 162
1 414
1 161
1 600
1 113
1 178
1 24
1 373
1 8
1 155
1 374
1 26
1 2
1 42
1 232
1 300
1 58
1 8
1 129
1 106
1 8
1 2
1 32
1 846
1 707
1 168
1 643
1 302
1 8
1 218
1 10
1 10
1 136
1 656
1 185
1 447
1 536
1 42
1 934
1 316
1 2
1 326
1 10
1 88
1 211
1 594
1 2
1 192
1 568
1 680
1 2
1 706
1 468
1 113
1 600
1 115
1 8
1 2
1 26
1 26
1 536
1 876
1 430
1 2
1 105
1 8
1 40
1 24
1 18
1 2
1 366
1 153
1 587
1 82
1 235
1 300
1 48
1 2
1 42
1 2
1 66
1 10
1 24
1 42
1 2
1 2
1 26
1 50
1 26
1 893
1 844
1 561
1 16
1 487
1 367
1 56
1 547
1 594
1 48
1 406
1 64
1 8
1 909
1 144
1 285
1 650
1 210
1 388
1 56
1 398
1 16
1 2
1 210
1 8
1 16
1 326
1 260
1 753
1 324
1 50
1 2
1 40
1 308
1 2
1 806
1 107
1 2
1 2
1 2
1 129
1 2
1 136
1 186
1 40
1 462
1 373
1 40
1 104
1 997
1 74
1 72
1 104
1 2
1 683
1 900
1 18
1 2
1 643
1 147
1 348
1 96
1 276
1 495
1 40
1 18
1 471
1 2
1 48
1 153
1 2
1 121
1 270
1 105
1 570
1 74
1 176
1 2
1 2
1 348
1 508
1 2
1 42
1 561
1 8
1 342
1 349
1 2
1 739
1 219
1 673
1 18
1 88
1 137
1 72
1 8
1 8
1 2
1 82
1 2
1 10
1 648
1 2
1 2
1 893
1 161
1 40
1 64
1 405
1 358
1 887
1 154
1 520
1 18
1 656
1 414
1 34
1 279
1 24
1 104
1 468
1 32
1 8
1 10
1 412
1 26
1 202
1 106
1 138
1 8
1 358
1 577
1 139
1 48
1 397
1 2
1 18
1 16
1 10
1 8
1 146
1 26
1 421
1 155
1 171
1 2
1 325
1 8
1 2
1 310
1 48
1 26
1 24
1 18
1 2
1 16
1 107
1 10
1 10
1 34
1 26
1 219
1 8
1 380
1 48
1 935
1 284
1 169
1 327
1 88
1 619
1 2
1 576
1 681
1 10
1 348
1 178
1 285
1 160
1 667
1 381
1 24
1 122
1 8
1 744
1 16
1 436
1 242
1 146
1 34
1 2
1 18
1 10
1 2
1 2
1 18
1 2
1 318
1 154
1 406
1 471
1 2
1 422
1 2
1 24
1 2
1 2
1 444
1 2
1 284
1 2
1 753
1 514
1 90
1 812
1 18
1 10
1 294
1 966
1 263
1 10
1 340
1 137
1 2
1 138
1 10
1 870
1 511
1 342
1 113
1 2
1 152
1 8
1 32
1 24
1 42
1 56
1 2
1 186
1 16
1 26
1 438
1 2
1 664
1 64
1 107
1 2
1 74
1 634
1 98
1 2
1 2
1 200
1 10
1 675
1 2
1 10
1 2
1 10
1 154
1 358
1 348
1 211
1 16
1 26
1 8
1 8
1 276
1 162
1 82
1 16
1 202
1 271
1 26
1 2
1 177
1 301
1 34
1 2
1 226
1 185
1 2
1 2
1 48
1 32
1 58
1 18
1 26
1 463
1 16
1 2
1 66
1 123
1 484
1 90
1 168
1 601
1 98
1 911
1 8
1 619
1 58
1 224
1 40
1 98
1 380
1 177
1 2
1 2
1 120
1 295
1 642
1 935
1 586
1 74
1 50
1 2
1 310
1 407
1 80
1 308
1 10
1 104
1 8
1 2
1 10
1 634
1 115
1 218
1 722
1 349
1 26
1 643
1 919
1 2
1 8
1 66
1 16
1 209
1 2
1 415
1 2
1 560
1 868
1 8
1 2
1 2
1 772
1 74
1 665
1 2
1 147
1 2
1 16
1 18
1 8
1 26
1 2
1 2
1 462
1 2
1 107
1 26
1 106
1 341
1 137
1 122
1 2
1 201
1 421
1 184
1 74
1 186
1 58
1 160
1 276
1 900
1 728
1 115
1 665
1 587
1 105
1 210
1 10
1 2
1 26
1 18
1 737
1 58
1 241
1 56
1 34
1 16
1 16
1 471
1 2
1 2
1 34
1 948
1 8
1 42
1 145
1 168
1 26
1 807
1 10
1 2
1 2
1 50
1 2
1 8
1 177
1 2
1 2
1 8
1 154
1 8
1 203
1 2
1 967
1 210
1 226
1 242
1 2
1 34
1 302
1 171
1 10
1 746
1 650
1 185
1 8
1 10
1 8
1 8
1 8
1 406
1 18
1 40
1 2
1 2
1 40
1 316
1 326
1 10
1 24
1 8
1 351
1 2
1 714
1 224
1 317
1 754
1 32
1 88
1 982
1 855
1 2
1 492
1 2
1 2
1 112
1 8
1 32
1 104
1 139
1 8
1 609
1 160
1 2
1 8
1 438
1 113
1 2
1 144
1 723
1 26
1 56
1 324
1 105
1 16
1 169
1 2
1 18
1 40
1 10
1 123
1 42
1 2
1 10
1 8
1 461
1 789
1 2
1 375
1 539
1 26
1 2
1 261
1 570
1 2
1 2
1 2
1 8
1 752
1 8
1 2
1 80
1 161
1 260
1 422
1 137
1 88
1 139
1 2
1 10
1 287
1 2
1 547
1 66
1 513
1 226
1 16
1 10
1 10
1 16
1 18
1 16
1 169
1 184
1 161
1 2
1 2
1 218
1 383
1 479
1 789
1 218
1 96
1 16
1 2
1 32
1 2
1 2
1 233
1 340
1 40
1 712
1 309
1 8
1 10
1 500
1 2
1 24
1 170
1 34
1 10
1 209
1 16
1 981
1 479
1 342
1 105
1 2
1 893
1 233
1 58
1 2
1 2
1 2
1 2
1 233
1 316
1 26
1 178
1 58
1 2
1 40
1 2
1 243
1 310
1 918
1 618
1 356
1 8
1 285
1 120
1 861
1 232
1 8
1 208
1 2
1 34
1 2
1 8
1 8
1 123
1 294
1 80
1 2
1 334
1 627
1 624
1 486
1 648
1 16
1 202
1 16
1 18
1 16
1 495
1 705
1 2
1 8
1 209
1 2
1 389
1 8
1 476
1 2
1 18
1 635
1 2
1 26
1 2
1 18
1 2
1 8
1 2
1 568
1 88
1 200
1 592
1 66
1 2
1 160
1 26
1 333
1 16
1 26
1 452
1 2
1 697
1 123
1 66
1 8
1 10
1 129
1 18
1 121
1 10
1 161
1 106
1 208
1 56
1 18
1 2
1 2
1 2
1 484
1 10
1 2
1 2
1 2
1 375
1 2
1 210
1 334
1 122
1 2
1 34
1 169
1 178
1 184
1 958
1 139
1 195
1 16
1 2
1 34
1 24
1 2
1 74
1 48
1 74
1 484
1 2
1 26
1 2
1 48
1 2
1 2
1 24
1 495
1 144
1 495
1 389
1 8
1 24
1 555
1 301
1 24
1 2
1 10
1 138
1 243
1 894
1 2
1 520
1 2
1 2
1 536
1 683
1 2
1 201
1 26
1 2
1 18
1 2
1 10
1 2
1 10
1 494
1 998
1 2
1 10
1 2
1 2
1 2
1 200
1 2
1 510
1 123
1 838
1 2
1 2
1 8
1 16
1 187
1 122
1 2
1 2
1 58
1 2
1 327
1 2
1 34
1 131
1 8
1 712
1 8
1 187
1 8
1 10
1 2
1 235
1 279
1 836
1 569
1 2
1 10
1 145
1 10
1 294
1 217
1 178
1 2
1 2
1 147
1 333
1 712
1 287
1 8
1 114
1 2
1 2
1 2
1 227
1 162
1 453
1 569
1 2
1 42
1 2
1 177
1 8
1 128
1 2
1 675
1 2
1 414
1 130
1 587
1 2
1 208
1 74
1 72
1 476
1 18
1 187
1 162
1 397
1 2
1 24
1 529
1 520
1 2
1 2
1 8
1 2
1 2
1 293
1 50
1 64
1 2
1 8
1 2
1 2
1 2
1 26
1 16
1 232
1 32
1 8
1 585
1 268
1 24
1 42
1 40
1 24
1 2
1 187
1 40
1 420
1 106
1 24
1 2
1 2
1 56
1 2
1 8
1 316
1 248
1 675
1 226
1 66
1 105
1 195
1 932
1 469
1 762
1 10
1 538
1 169
1 152
1 107
1 601
1 8
1 2
1 838
1 2
1 40
1 918
1 120
1 2
1 2
1 601
1 56
1 908
1 128
1 40
1 608
1 128
1 682
1 965
1 2
1 2
1 42
1 444
1 66
1 437
1 10
1 8
1 664
1 2
1 357
1 959
1 8
1 381
1 82
1 901
1 10
1 2
1 854
1 2
1 80
1 2
1 2
1 2
1 171
1 2
1 728
1 139
1 965
1 887
1 997
1 2
1 2
1 887
1 2
1 537
1 24
1 18
1 58
1 2
1 885
1 152
1 2
1 2
1 340
1 139
1 292
1 373
1 40
1 335
1 2
1 2
1 2
1 122
1 2
1 739
1 847
1 224
1 487
1 106
1 178
1 2
1 26
1 295
1 2
1 8
1 136
1 82
1 26
1 8
1 584
1 201
1 2
1 48
1 32
1 862
1 26
1 837
1 211
1 349
1 240
1 153
1 58
1 902
1 665
1 2
1 935
1 2
1 2
1 98
1 2
1 121
1 8
1 420
1 106
1 42
1 120
1 2
1 578
1 484
1 115
1 2
1 391
1 2
1 2
1 2
1 268
1 16
1 2
1 528
1 18
1 146
1 455
1 2
1 155
1 56
1 8
1 8
1 90
1 16
1 617
1 58
1 8
1 10
1 40
1 137
1 251
1 2
1 439
1 233
1 2
1 2
1 2
1 72
1 88
1 528
1 10
1 285
1 2
1 16
1 18
1 211
1 169
1 235
1 2
1 2
1 16
1 184
1 998
1 50
1 592
1 169
1 2
1 34
1 40
1 66
1 293
1 26
1 26
1 2
1 106
1 277
1 484
1 2
1 161
1 728
1 683
1 485
1 544
1 649
1 50
1 113
1 797
1 24
1 192
1 611
1 420
1 547
1 2
1 2
1 187
1 2
1 24
1 66
1 138
1 8
1 178
1 656
1 106
1 2
1 64
1 216
1 82
1 104
1 98
1 24
1 16
1 471
1 269
1 2
1 130
1 8
1 88
1 502
1 2
1 8
1 2
1 421
1 2
1 18
1 98
1 235
1 357
1 217
1 918
1 2
1 232
1 72
1 80
1 64
1 879
1 358
1 2
1 178
1 807
1 74
1 2
1 997
1 18
1 40
1 2
1 18
1 487
1 24
1 107
1 56
1 90
1 8
1 26
1 18
1 2
1 242
1 2
1 2
1 16
1 2
1 627
1 2
1 634
1 2
1 16
1 712
1 10
1 326
1 894
1 664
1 74
1 2
1 760
1 2
1 112
1 271
1 8
1 286
1 130
1 2
1 48
1 2
1 479
1 300
1 918
1 563
1 105
1 104
1 823
1 80
1 720
1 357
1 351
1 2
1 200
1 2
1 8
1 177
1 200
1 8
1 34
1 673
1 520
1 10
1 2
1 160
1 884
1 508
1 154
1 50
1 24
1 120
1 129
1 10
1 48
1 200
1 10
1 42
1 104
1 996
1 18
1 713
1 476
1 96
1 34
1 2
1 194
1 430
1 10
1 104
1 170
1 147
1 728
1 10
1 169
1 553
1 852
1 562
1 2
1 916
1 48
1 2
1 120
1 34
1 96
1 812
1 2
1 177
1 2
1 2
1 145
1 34
1 122
1 131
1 2
1 139
1 739
1 144
1 2
1 2
1 406
1 8
1 570
1 10
1 484
1 641
1 476
1 2
1 659
1 96
1 746
1 18
1 107
1 18
1 429
1 871
1 2
1 508
1 200
1 2
1 579
1 2
1 176
1 8
1 234
1 2
1 2
1 287
1 804
1 8
1 192
1 42
1 2
1 8
1 106
1 423
1 587
1 838
1 270
1 772
1 24
1 2
1 26
1 171
1 8
1 2
1 268
1 32
1 2
1 609
1 8
1 48
1 271
1 300
1 2
1 131
1 366
1 66
1 147
1 317
1 74
1 656
1 34
1 2
1 26
1 185
1 10
1 271
1 696
1 2
1 50
1 2
1 268
1 2
1 2
1 80
1 2
1 16
1 209
1 154
1 514
1 194
1 579
1 48
1 2
1 40
1 2
1 2
1 32
1 2
1 2
1 2
1 8
1 263
1 2
1 2
1 2
1 455
1 16
1 18
1 2
1 365
1 2
1 446
1 8
1 453
1 128
1 18
1 10
1 340
1 161
1 203
1 162
1 2
1 2
1 74
1 2
1 2
1 398
1 2
1 592
1 80
1 286
1 40
1 120
1 478
1 16
1 2
1 16
1 128
1 476
1 261
1 58
1 48
1 8
1 235
1 227
1 16
1 343
1 18
1 18
1 284
1 26
1 2
1 603
1 10
1 106
1 454
1 2
1 42
1 50
1 10
1 382
1 422
1 2
1 48
1 56
1 493
1 10
1 217
1 713
1 2
1 2
1 64
1 2
1 195
1 2
1 56
1 80
1 10
1 2
1 478
1 2
1 42
1 2
1 8
1 554
1 2
1 318
1 8
1 270
1 925
1 2
1 48
1 32
1 90
1 24
1 364
1 286
1 178
1 10
1 200
1 823
1 634
1 42
1 2
1 74
1 40
1 263
1 66
1 2
1 48
1 26
1 892
1 2
1 211
1 8
1 50
1 160
1 774
1 24
1 8
1 8
1 845
1 208
1 248
1 477
1 2
1 585
1 8
1 128
1 32
1 34
1 161
1 8
1 8
1 293
1 2
1 2
1 40
1 2
1 18
1 90
1 2
1 822
1 2
1 774
1 16
1 48
1 555
1 643
1 34
1 16
1 625
1 619
1 48
1 50
1 2
1 2
1 292
1 106
1 56
1 260
1 310
1 40
1 468
1 42
1 2
1 397
1 120
1 64
1 112
1 2
1 2
1 2
1 260
1 510
1 56
1 50
1 2
1 805
1 2
1 18
1 2
1 643
1 90
1 56
1 130
1 153
1 248
1 18
1 32
1 56
1 8
1 2
1 2
1 10
1 2
1 10
1 2
1 202
1 248
1 2
1 268
1 916
1 343
1 146
1 10
1 404
1 243
1 34
1 34
1 10
1 8
1 8
1 731
1 16
1 351
1 309
1 2
1 2
1 16
1 421
1 2
1 836
1 168
1 2
1 242
1 138
1 413
1 2
1 218
1 455
1 90
1 2
1 32
1 2
1 2
1 439
1 72
1 147
1 568
1 82
1 42
1 176
1 18
1 584
1 8
1 2
1 2
1 8
1 96
1 317
1 404
1 2
1 382
1 587
1 879
1 50
1 487
1 104
1 106
1 96
1 66
1 56
1 2
1 405
1 8
1 2
1 48
1 74
1 74
1 105
1 58
1 24
1 24
1 26
1 105
1 10
1 2
1 277
1 8
1 66
1 144
1 26
1 171
1 194
1 34
1 547
1 138
1 50
1 316
1 10
1 2
1 201
1 521
1 311
1 317
1 147
1 2
1 643
1 2
1 42
1 2
1 163
1 209
1 10
1 414
1 169
1 16
1 74
1 114
1 130
1 184
1 2
1 168
1 2
1 2
1 26
1 26
1 372
1 2
1 32
1 8
1 278
1 72
1 805
1 24
1 16
1 744
1 895
1 2
1 672
1 8
1 611
1 8
1 16
1 269
1 603
1 26
1 2
1 333
1 16
1 64
1 2
1 24
1 2
1 121
1 18
1 2
1 105
1 16
1 941
1 2
1 2
1 2
1 98
1 2
1 179
1 187
1 365
1 26
1 2
1 26
1 501
1 2
1 399
1 428
1 316
1 58
1 2
1 50
1 26
1 8
1 2
1 2
1 593
1 413
1 2
1 486
1 2
1 18
1 2
1 40
1 854
1 2
1 415
1 233
1 122
1 790
1 66
1 910
1 2
1 139
1 64
1 713
1 26
1 227
1 641
1 249
1 438
1 2
1 72
1 64
1 154
1 284
1 268
1 2
1 303
1 2
1 80
1 271
1 154
1 8
1 584
1 611
1 66
1 195
1 8
1 131
1 10
1 208
1 332
1 415
1 731
1 98
1 341
1 2
1 171
1 2
1 2
1 130
1 2
1 486
1 10
1 10
1 251
1 26
1 807
1 271
1 115
1 309
1 145
1 902
1 2
1 611
1 2
1 168
1 2
1 2
1 319
1 500
1 286
1 430
1 163
1 2
1 96
1 484
1 2
1 2
1 24
1 2
1 120
1 2
1 168
1 10
1 42
1 2
1 863
1 18
1 195
1 2
1 106
1 2
1 26
1 145
1 2
1 34
1 16
1 789
1 271
1 138
1 32
1 2
1 2
1 113
1 64
1 2
1 80
1 24
1 980
1 285
1 2
1 138
1 162
1 682
1 2
1 24
1 285
1 74
1 24
1 2
1 232
1 16
1 120
1 2
1 10
1 8
1 74
1 106
1 185
1 56
1 2
1 948
1 26
1 335
1 722
1 40
1 80
1 2
1 18
1 218
1 201
1 707
1 146
1 154
1 286
1 2
1 436
1 145
1 139
1 26
1 115
1 50
1 584
1 235
1 2
1 96
1 982
1 664
1 10
1 64
1 327
1 546
1 48
1 137
1 233
1 42
1 10
1 64
1 664
1 169
1 964
1 241
1 2
1 251
1 2
1 122
1 737
1 16
1 509
1 120
1 318
1 262
1 177
1 2
1 10
1 855
1 16
1 2
1 610
1 14
1 132
1 873
1 4
1 4
1 62
1 14
1 483
1 257
1 607
1 613
1 204
1 702
1 14
1 94
1 212
1 124
1 4
1 4
1 134
1 196
1 119
1 702
1 108
1 84
1 14
1 207
1 451
1 472
1 6
1 6
1 132
1 4
1 4
1 418
1 22
1 28
1 304
1 677
1 4
1 134
1 408
1 46
1 44
1 606
1 4
1 567
1 205
1 101
1 6
1 188
1 30
1 551
1 36
1 68
1 727
1 273
1 22
1 322
1 102
1 12
1 110
1 133
1 166
1 68
1 572
1 4
1 78
1 1000
1 12
1 12
1 283
1 785
1 937
1 273
1 281
1 116
1 6
1 119
1 38
1 6
1 62
1 110
1 12
1 68
1 182
1 6
1 6
1 314
1 930
1 103
1 12
1 6
1 6
1 4
1 157
1 6
1 12
1 12
1 394
1 411
1 6
1 12
1 6
1 70
1 6
1 4
1 157
1 22
1 4
1 533
1 677
1 6
1 307
1 708
1 4
1 305
1 28
1 22
1 76
1 36
1 135
1 110
1 60
1 256
1 456
1 12
1 459
1 371
1 281
1 307
1 551
1 133
1 62
1 38
1 117
1 6
1 459
1 12
1 12
1 4
1 488
1 4
1 12
1 101
1 457
1 103
1 12
1 12
1 44
1 60
1 678
1 28
1 4
1 898
1 4
1 4
1 14
1 84
1 62
1 4
1 880
1 253
1 6
1 725
1 450
1 4
1 4
1 92
1 12
1 118
1 246
1 12
1 978
1 132
1 620
1 78
1 12
1 151
1 4
1 12
1 36
1 204
1 435
1 166
1 70
1 165
1 347
1 102
1 499
1 62
1 4
1 36
1 4
1 127
1 12
1 30
1 824
1 30
1 14
1 196
1 496
1 46
1 135
1 172
1 6
1 20
1 984
1 4
1 181
1 205
1 4
1 44
1 936
1 102
1 140
1 280
1 6
1 246
1 6
1 132
1 28
1 78
1 4
1 6
1 540
1 54
1 258
1 140
1 166
1 474
1 4
1 28
1 156
1 6
1 4
1 199
1 12
1 190
1 22
1 111
1 12
1 38
1 283
1 6
1 125
1 912
1 6
1 247
1 28
1 507
1 12
1 38
1 44
1 244
1 157
1 207
1 717
1 4
1 223
1 78
1 6
1 28
1 824
1 54
1 78
1 182
1 110
1 103
1 864
1 38
1 100
1 173
1 30
1 28
1 117
1 331
1 46
1 92
1 638
1 231
1 14
1 6
1 670
1 4
1 92
1 46
1 497
1 386
1 4
1 542
1 418
1 110
1 78
1 38
1 346
1 913
1 882
1 6
1 14
1 4
1 36
1 450
1 582
1 190
1 151
1 101
1 4
1 166
1 199
1 36
1 20
1 274
1 4
1 6
1 417
1 44
1 709
1 212
1 20
1 14
1 978
1 6
1 70
1 78
1 222
1 181
1 86
1 86
1 6
1 14
1 591
1 257
1 590
1 740
1 222
1 4
1 353
1 496
1 677
1 581
1 44
1 38
1 4
1 338
1 86
1 6
1 589
1 400
1 6
1 12
1 142
1 759
1 20
1 843
1 825
1 566
1 182
1 108
1 574
1 4
1 191
1 30
1 623
1 6
1 506
1 6
1 833
1 135
1 534
1 239
1 36
1 362
1 542
1 4
1 4
1 44
1 206
1 591
1 716
1 22
1 28
1 551
1 491
1 330
1 354
1 623
1 718
1 20
1 189
1 4
1 60
1 62
1 60
1 30
1 180
1 158
1 540
1 329
1 190
1 4
1 134
1 159
1 110
1 756
1 6
1 20
1 6
1 4
1 368
1 687
1 6
1 386
1 236
1 843
1 150
1 6
1 52
1 354
1 408
1 6
1 92
1 14
1 534
1 726
1 281
1 44
1 36
1 4
1 4
1 22
1 78
1 904
1 12
1 124
1 606
1 52
1 14
1 229
1 923
1 6
1 961
1 246
1 12
1 14
1 28
1 6
1 6
1 54
1 4
1 984
1 181
1 614
1 191
1 986
1 156
1 330
1 230
1 20
1 12
1 4
1 4
1 229
1 173
1 84
1 6
1 206
1 591
1 126
1 70
1 4
1 215
1 4
1 411
1 214
1 14
1 22
1 4
1 6
1 258
1 369
1 4
1 110
1 283
1 660
1 149
1 60
1 156
1 100
1 22
1 290
1 108
1 401
1 6
1 198
1 6
1 142
1 142
1 362
1 196
1 199
1 4
1 4
1 977
1 220
1 684
1 117
1 4
1 86
1 207
1 6
1 336
1 451
1 14
1 214
1 757
1 304
1 119
1 6
1 101
1 86
1 945
1 188
1 54
1 873
1 4
1 427
1 352
1 4
1 14
1 140
1 882
1 482
1 6
1 70
1 116
1 572
1 181
1 274
1 140
1 117
1 6
1 188
1 14
1 628
1 126
1 827
1 572
1 481
1 403
1 573
1 78
1 257
1 267
1 101
1 28
1 52
1 101
1 4
1 213
1 101
1 613
1 466
1 119
1 38
1 52
1 979
1 751
1 246
1 4
1 124
1 118
1 4
1 457
1 346
1 133
1 4
1 38
1 6
1 38
1 246
1 84
1 6
1 978
1 38
1 229
1 4
1 223
1 44
1 190
1 4
1 769
1 109
1 76
1 685
1 4
1 434
1 4
1 215
1 525
1 14
1 6
1 653
1 842
1 173
1 535
1 214
1 108
1 330
1 46
1 808
1 4
1 591
1 379
1 223
1 20
1 181
1 652
1 36
1 4
1 4
1 101
1 118
1 994
1 4
1 101
1 4
1 188
1 92
1 4
1 4
1 4
1 212
1 30
1 668
1 44
1 259
1 6
1 4
1 108
1 46
1 638
1 28
1 108
1 180
1 441
1 4
1 28
1 182
1 984
1 802
1 14
1 124
1 992
1 46
1 307
1 223
1 4
1 70
1 28
1 307
1 6
1 173
1 4
1 400
1 881
1 28
1 149
1 4
1 937
1 533
1 6
1 70
1 44
1 142
1 157
1 12
1 6
1 12
1 124
1 267
1 598
1 111
1 188
1 4
1 62
1 151
1 4
1 231
1 167
1 419
1 221
1 6
1 588
1 4
1 507
1 257
1 94
1 127
1 12
1 22
1 84
1 725
1 424
1 353
1 4
1 4
1 133
1 52
1 205
1 173
1 52
1 944
1 142
1 6
1 20
1 692
1 197
1 330
1 921
1 4
1 4
1 4
1 6
1 987
1 125
1 92
1 387
1 133
1 6
1 6
1 22
1 78
1 12
1 20
1 4
1 6
1 54
1 62
1 52
1 676
1 378
1 465
1 181
1 135
1 258
1 290
1 60
1 140
1 199
1 548
1 387
1 30
1 362
1 4
1 709
1 52
1 944
1 246
1 716
1 6
1 14
1 84
1 173
1 150
1 928
1 141
1 12
1 557
1 764
1 30
1 589
1 694
1 22
1 898
1 14
1 4
1 134
1 76
1 315
1 4
1 22
1 330
1 986
1 44
1 582
1 109
1 181
1 215
1 198
1 244
1 4
1 110
1 28
1 245
1 12
1 978
1 199
1 272
1 189
1 76
1 6
1 464
1 6
1 393
1 496
1 30
1 4
1 4
1 127
1 46
1 435
1 110
1 12
1 181
1 6
1 4
1 239
1 663
1 662
1 4
1 6
1 994
1 92
1 252
1 20
1 6
1 662
1 28
1 36
1 4
1 70
1 6
1 22
1 60
1 4
1 196
1 679
1 4
1 465
1 22
1 764
1 46
1 6
1 450
1 22
1 532
1 6
1 670
1 4
1 490
1 14
1 851
1 770
1 14
1 84
1 765
1 371
1 265
1 36
1 197
1 323
1 259
1 377
1 306
1 809
1 22
1 4
1 12
1 12
1 786
1 572
1 795
1 274
1 4
1 591
1 92
1 180
1 313
1 604
1 254
1 36
1 12
1 4
1 848
1 4
1 159
1 442
1 4
1 46
1 307
1 661
1 14
1 708
1 588
1 4
1 20
1 488
1 719
1 199
1 118
1 60
1 6
1 141
1 175
1 6
1 172
1 4
1 12
1 60
1 172
1 62
1 142
1 272
1 6
1 662
1 4
1 6
1 12
1 403
1 6
1 573
1 204
1 14
1 52
1 238
1 38
1 102
1 52
1 212
1 94
1 4
1 339
1 157
1 312
1 189
1 12
1 323
1 573
1 6
1 148
1 12
1 149
1 507
1 62
1 20
1 22
1 215
1 551
1 668
1 54
1 110
1 258
1 36
1 167
1 36
1 6
1 264
1 679
1 557
1 795
1 434
1 297
1 4
1 12
1 313
1 4
1 14
1 794
1 312
1 6
1 725
1 28
1 504
1 6
1 4
1 102
1 322
1 28
1 598
1 597
1 12
1 20
1 30
1 644
1 419
1 28
1 6
1 424
1 30
1 6
1 599
1 291
1 54
1 12
1 604
1 20
1 60
1 4
1 748
1 28
1 614
1 808
1 182
1 12
1 481
1 12
1 158
1 14
1 151
1 14
1 6
1 451
1 800
1 267
1 238
1 6
1 38
1 411
1 12
1 306
1 148
1 14
1 4
1 12
1 141
1 12
1 4
1 140
1 4
1 817
1 38
1 101
1 4
1 661
1 6
1 451
1 4
1 94
1 44
1 6
1 330
1 20
1 12
1 647
1 30
1 229
1 228
1 4
1 360
1 134
1 12
1 44
1 6
1 206
1 371
1 613
1 467
1 448
1 156
1 20
1 22
1 792
1 134
1 14
1 70
1 4
1 86
1 4
1 78
1 109
1 229
1 337
1 12
1 6
1 20
1 109
1 14
1 86
1 174
1 590
1 119
1 255
1 127
1 599
1 198
1 283
1 985
1 6
1 596
1 247
1 76
1 6
1 417
1 6
1 20
1 255
1 6
1 769
1 44
1 550
1 14
1 204
1 480
1 28
1 883
1 110
1 6
1 267
1 321
1 150
1 124
1 36
1 435
1 384
1 4
1 4
1 14
1 607
1 181
1 14
1 377
1 84
1 6
1 54
1 62
1 330
1 4
1 143
1 52
1 206
1 46
1 28
1 337
1 94
1 12
1 6
1 44
1 6
1 22
1 535
1 456
1 14
1 108
1 557
1 409
1 54
1 354
1 14
1 4
1 149
1 4
1 299
1 134
1 4
1 914
1 14
1 14
1 339
1 12
1 532
1 589
1 126
1 28
1 434
1 323
1 4
1 62
1 824
1 6
1 4
1 14
1 213
1 4
1 623
1 30
1 14
1 424
1 100
1 252
1 393
1 459
1 22
1 4
1 4
1 46
1 14
1 44
1 238
1 889
1 76
1 582
1 86
1 30
1 408
1 6
1 290
1 12
1 4
1 6
1 94
1 4
1 164
1 718
1 307
1 191
1 100
1 76
1 258
1 4
1 14
1 6
1 403
1 30
1 22
1 28
1 166
1 574
1 46
1 126
1 4
1 134
1 280
1 474
1 4
1 30
1 368
1 4
1 4
1 4
1 54
1 14
1 124
1 244
1 189
1 4
1 12
1 914
1 20
1 12
1 864
1 613
1 231
1 4
1 62
1 258
1 36
1 174
1 393
1 4
1 20
1 834
1 6
1 22
1 952
1 716
1 102
1 12
1 597
1 6
1 116
1 6
1 54
1 12
1 6
1 4
1 475
1 181
1 188
1 4
1 417
1 76
1 282
1 12
1 4
1 30
1 4
1 6
1 14
1 636
1 507
1 84
1 133
1 134
1 336
1 4
1 4
1 14
1 4
1 22
1 173
1 140
1 28
1 30
1 212
1 6
1 6
1 30
1 111
1 4
1 826
1 76
1 464
1 596
1 710
1 771
1 132
1 12
1 687
1 20
1 411
1 191
1 133
1 623
1 6
1 4
1 12
1 329
1 419
1 125
1 6
1 116
1 108
1 12
1 322
1 654
1 12
1 758
1 505
1 94
1 589
1 190
1 6
1 735
1 54
1 22
1 6
1 143
1 164
1 141
1 867
1 387
1 4
1 766
1 451
1 549
1 448
1 12
1 109
1 354
1 46
1 221
1 12
1 331
1 12
1 456
1 6
1 433
1 474
1 38
1 60
1 110
1 12
1 244
1 525
1 418
1 126
1 507
1 4
1 411
1 393
1 237
1 20
1 6
1 4
1 12
1 68
1 307
1 654
1 12
1 4
1 140
1 22
1 94
1 6
1 22
1 62
1 4
1 4
1 92
1 6
1 401
1 6
1 14
1 6
1 4
1 84
1 740
1 166
1 677
1 20
1 54
1 44
1 14
1 237
1 237
1 68
1 621
1 60
1 46
1 497
1 62
1 507
1 6
1 345
1 68
1 402
1 133
1 6
1 12
1 188
1 6
1 6
1 68
1 172
1 70
1 20
1 540
1 206
1 4
1 103
1 678
1 22
1 733
1 882
1 550
1 245
1 352
1 28
1 459
1 6
1 759
1 174
1 117
1 824
1 4
1 22
1 962
1 127
1 6
1 118
1 952
1 76
1 4
1 76
1 237
1 435
1 434
1 4
1 68
1 36
1 151
1 671
1 28
1 14
1 4
1 678
1 22
1 410
1 280
1 913
1 135
1 14
1 4
1 419
1 6
1 68
1 76
1 84
1 14
1 4
1 4
1 524
1 481
1 778
1 20
1 424
1 62
1 4
1 4
1 896
1 222
1 133
1 68
1 694
1 125
1 841
1 134
1 527
1 4
1 164
1 78
1 313
1 78
1 6
1 288
1 6
1 143
1 257
1 22
1 779
1 199
1 12
1 94
1 687
1 14
1 4
1 427
1 230
1 220
1 239
1 12
1 141
1 20
1 259
1 441
1 158
1 148
1 199
1 149
1 4
1 360
1 403
1 426
1 264
1 20
1 94
1 101
1 14
1 12
1 84
1 86
1 450
1 156
1 111
1 22
1 6
1 517
1 254
1 352
1 140
1 28
1 532
1 435
1 630
1 14
1 873
1 14
1 273
1 6
1 119
1 4
1 803
1 20
1 76
1 118
1 264
1 764
1 906
1 20
1 36
1 6
1 84
1 132
1 4
1 6
1 245
1 143
1 4
1 14
1 14
1 660
1 986
1 159
1 190
1 266
1 4
1 68
1 6
1 580
1 14
1 4
1 693
1 28
1 222
1 384
1 482
1 6
1 84
1 68
1 613
1 4
1 548
1 450
1 70
1 191
1 20
1 267
1 119
1 109
1 377
1 12
1 498
1 22
1 111
1 78
1 175
1 84
1 669
1 231
1 102
1 228
1 6
1 4
1 28
1 970
1 4
1 84
1 741
1 542
1 6
1 4
1 6
1 912
1 283
1 110
1 4
1 4
1 614
1 102
1 14
1 60
1 426
1 12
1 588
1 392
1 465
1 22
1 28
1 464
1 467
1 4
1 669
1 4
1 14
1 4
1 875
1 173
1 4
1 265
1 172
1 6
1 567
1 458
1 4
1 4
1 867
1 628
1 36
1 4
1 159
1 62
1 223
1 150
1 265
1 110
1 62
1 4
1 4
1 12
1 14
1 4
1 188
1 256
1 36
1 230
1 636
1 353
1 4
1 22
1 4
1 6
1 793
1 54
1 779
1 236
1 376
1 14
1 368
1 38
1 457
1 331
1 929
1 4
1 22
1 448
1 401
1 6
1 14
1 12
1 6
1 290
1 30
1 961
1 6
1 339
1 274
1 6
1 46
1 229
1 132
1 70
1 119
1 20
1 14
1 4
1 6
1 258
1 46
1 100
1 6
1 236
1 38
1 6
1 442
1 288
1 378
1 330
1 272
1 328
1 78
1 541
1 534
1 174
1 60
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment