├── config ├── generate_delay_data.py ├── p4app.json_sample ├── topo_allocator.py ├── send.py ├── README.md ├── recv.py ├── kll.py ├── exp.py ├── generate_delay_results.py ├── p4src ├── pint.p4 └── pint.p4i ├── generate_results.py └── rules ├── s0-commands.txt ├── s1-commands.txt ├── s2-commands.txt ├── s3-commands.txt ├── s4-commands.txt ├── s5-commands.txt ├── s6-commands.txt └── s7-commands.txt /config: -------------------------------------------------------------------------------- 1 | receiver_interface=h1-eth0 2 | max_bit_range=255 3 | global_hash_range=1000000 4 | receiver_ip=10.0.0.1 5 | sender_ip=10.0.0.0 6 | common_log=common_log 7 | total_packets=5000 8 | iterations=1 -------------------------------------------------------------------------------- /generate_delay_data.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | file_name=sys.argv[1] 4 | 5 | os.system("mkdir -p experiments/delays/") 6 | 7 | f=open(file_name,"r") 8 | data={} 9 | for line in f: 10 | time = int(line.strip().split(" ")[0]) 11 | if "Enqu" in line: 12 | pkt = line.strip().split("Enqu")[1] 13 | data[pkt]=[time, 0] 14 | if "Dequ" in line: 15 | pkt = line.strip().split("Dequ")[1] 16 | data[pkt][1]=time 17 | f.close() 18 | all=[] 19 | pint_4=[] 20 | pint_8=[] 21 | for key,value in data.items(): 22 | all.append(value[1] - value[0]) 23 | 24 | fw=open("experiments/delays/processed_data","w") 25 | for item in all: 26 | fw.write(str(item)+"\n") 27 | fw.close() 28 | -------------------------------------------------------------------------------- /p4app.json_sample: -------------------------------------------------------------------------------- 1 | { 2 | "program": "p4src/pint.p4", 3 | "switch": "simple_switch", 4 | "compiler": "p4c", 5 | "options": "--target bmv2 --arch v1model --std p4-16", 6 | "switch_cli": "simple_switch_CLI", 7 | "cli": true, 8 | "pcap_dump": false, 9 | "enable_log": false, 10 | "topo_module": { 11 | "file_path": "", 12 | "module_name": "p4utils.mininetlib.apptopo", 13 | "object_name": "AppTopoStrategies" 14 | }, 15 | "controller_module": null, 16 | "topodb_module": { 17 | "file_path": "", 18 | "module_name": "p4utils.utils.topology", 19 | "object_name": "Topology" 20 | }, 21 | "mininet_module": { 22 | "file_path": "", 23 | "module_name": "p4utils.mininetlib.p4net", 24 | "object_name": "P4Mininet" 25 | }, 26 | "topology": { 27 | "assignment_strategy": "l2", 28 | "auto_arp_tables": true, 29 | "links": [["h1", "s1"], ["h2", "s1"]], 30 | "hosts": { 31 | "h1": { 32 | }, 33 | "h2": { 34 | } 35 | }, 36 | "switches": { 37 | "s1": { 38 | "cli_input": "s1-commands.txt" 39 | } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /topo_allocator.py: -------------------------------------------------------------------------------- 1 | import os 2 | import json 3 | import sys 4 | 5 | from p4utils.utils.topology import Topology 6 | 7 | class TopoAllocator: 8 | def __init__(self, length): 9 | self.length = length 10 | self.b_value = 255 11 | self.all_switches = set() 12 | self.all_links = set() 13 | self.data = {} 14 | for i in range(0,length): 15 | self.all_switches.add("s"+str(i)) 16 | 17 | for i in range(0,length-1): 18 | self.all_links.add(("s"+str(i),"s"+str(i+1))) 19 | 20 | self.links = [] 21 | 22 | def load_sample(self): 23 | with open('p4app.json_sample') as json_file: 24 | self.data = json.load(json_file) 25 | 26 | self.data["pcap_dump"] = False 27 | self.data["enable_log"] = False 28 | self.data["topology"]["switches"] = {} 29 | self.data["topology"]["hosts"] = {} 30 | 31 | def generate_topo(self): 32 | for switch in self.all_switches: 33 | self.data["topology"]["switches"][switch]={} 34 | self.data["topology"]["switches"][switch]["cli_input"]="rules/"+switch+"-commands.txt" 35 | host=switch.replace("s","h") 36 | self.data["topology"]["hosts"][host]={} 37 | self.links.append([switch,host,{"bw": 1000}]) 38 | 39 | for link in self.all_links: 40 | node_1=link[0] 41 | node_2=link[1] 42 | self.links.append([node_1,node_2,{"bw":1000}]) 43 | 44 | 45 | self.data["topology"]["links"]=self.links 46 | 47 | fw=open("p4app.json","w") 48 | fw.write(json.dumps(self.data)) 49 | fw.close() 50 | 51 | length=int(sys.argv[1]) 52 | 53 | topo = TopoAllocator(length) 54 | topo.load_sample() 55 | topo.generate_topo() 56 | print "Run: sudo p4run --config p4app.json" 57 | -------------------------------------------------------------------------------- /send.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import time 3 | import random 4 | from subprocess import Popen, PIPE 5 | import re 6 | from scapy.all import sendp, get_if_list, get_if_hwaddr,sendpfast 7 | from scapy.all import Ether, IP, UDP, TCP,Raw,conf 8 | 9 | def get_if(): 10 | ifs=get_if_list() 11 | iface=None 12 | for i in get_if_list(): 13 | if "eth0" in i: 14 | iface=i 15 | break; 16 | if not iface: 17 | exit(1) 18 | return iface 19 | 20 | def get_dst_mac(ip): 21 | try: 22 | pid = Popen(["arp", "-n", ip], stdout=PIPE) 23 | s = pid.communicate()[0] 24 | mac = re.search(r"(([a-f\d]{1,2}\:){5}[a-f\d]{1,2})", s).groups()[0] 25 | return mac 26 | except: 27 | return None 28 | 29 | def main(): 30 | f=open("config","r") 31 | for line in f: 32 | data=line.strip().split("=") 33 | type=data[0] 34 | value=data[1] 35 | if type=="receiver_ip": 36 | receiver_ip=value 37 | if type=="sender_ip": 38 | sender_ip=value 39 | if type=="common_log": 40 | common_log=value 41 | if type=="total_packets": 42 | total_packets=int(value) 43 | if type=="iterations": 44 | iterations=int(value) 45 | f.close() 46 | 47 | iface = get_if() 48 | 49 | seen_timestamps=set() 50 | current_time="" 51 | last_time=0 52 | total_sent=0 53 | all_pkt_id=set() 54 | while True: 55 | pkt_id=random.randint(1,60000) 56 | if pkt_id not in all_pkt_id: 57 | all_pkt_id.add(pkt_id) 58 | if len(all_pkt_id)==total_packets: 59 | break 60 | 61 | ether_dst='{0:0{1}X}'.format(0,12) 62 | ether_src='{0:0{1}X}'.format(0,12) 63 | ether_dst=':'.join([ether_dst[i:i+2] for i in range(0, len(ether_dst), 2)]) 64 | pkt_list=[] 65 | for pkt_id in all_pkt_id: 66 | pkt = Ether(src=ether_src, dst=ether_dst) 67 | pkt = pkt /IP(dst=receiver_ip,ttl=255,id=pkt_id) / UDP() 68 | pkt_list.append(pkt) 69 | total_sent=total_sent+1 70 | 71 | for i in range(0,iterations): 72 | random.shuffle(pkt_list) 73 | sendp(pkt_list,iface=iface,verbose=False,inter=0.005) 74 | 75 | if __name__ == '__main__': 76 | main() 77 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Running PINT on Mininet 2 | 3 | This repository gives the sample code to run and test PINT on Mininet. 4 | 5 | ## Requirements 6 | 1. Mininet supporting bmv2 (https://github.com/nsg-ethz/p4-learning) 7 | 2. networkx (pip install networkx) 8 | 3. scapy (pip install scapy) 9 | 4. numpy (pip install numpy) 10 | 11 | ## Steps to run PINT 12 | - Create topology. 13 | 14 | Ensure you are running this in VM with Mininet. 15 | Create a Mininet topology to conduct path tracing on path size N. 16 | 17 | `python topo_allocator.py 5` 18 | 19 | where 5 indicates that path tracing needs to be conducted on five switches. In our paper, we used N= 5, 36, 59. 20 | 21 | - Start Mininet. 22 | 23 | Start Mininet with the newly constructed topology. 24 | 25 | `sudo p4run --config p4app.json` 26 | 27 | - Start path tracing. 28 | 29 | Start path tracing by specifying the length of path (N). 30 | 31 | `sudo python exp.py 5` 32 | 33 | where 5 indicates the length of path. 34 | 35 | - Generate results. 36 | 37 | Generate results using: 38 | 39 | `python generate_results.py 5` 40 | 41 | where 5 indicates the length of path. The results can be found under final_results/5. There 42 | will be three files, indicating the average, median and tail number of packets required to conduct 43 | path tracing for path length of 5. This will also contain results for ASM and PPM techniques. 44 | 45 | # Running PINT for delay quantiles 46 | 47 | ## Requirements 48 | 1. Python 3.7.5 49 | 2. numpy (pip install numpy) 50 | 51 | ## Setting up Python 3.7.5 in Mininet VM 52 | 53 | - Install Miniconda: https://docs.conda.io/en/latest/miniconda.html 54 | - Create a new Python 3.7.5 environment. 55 | - Run PINT for delay quantiles in that environment. 56 | 57 | ## Steps to run PINT for delay quantiles 58 | 59 | - Generate delay data obtained from ns3 simulations. 60 | 61 | `python generate_delay_data.py file_name` 62 | 63 | where file_name is the location of delay data generated from ns3 simulations. A sample 64 | processed data is present in experiments/delays/processed_data 65 | 66 | - Generate results 67 | 68 | `python generate_delay_results.py` 69 | 70 | This generates the average, median and tail latencies in final_results/delays. 71 | -------------------------------------------------------------------------------- /recv.py: -------------------------------------------------------------------------------- 1 | import time 2 | import zlib 3 | from scapy.all import * 4 | import multiprocessing 5 | import sys 6 | 7 | def listener(queue,trial_number,stop_total_packets): 8 | k=0 9 | total_packets=0 10 | distance_metric={} 11 | fw=open(trial_number,"w") 12 | fw.close() 13 | while True: 14 | data=queue.get() 15 | k=data[0] 16 | pkt_id=data[1] 17 | switch_id=data[2] 18 | digest=data[3] 19 | checksum=data[4] 20 | final_results={} 21 | total_packets=total_packets+1 22 | if total_packets==1: 23 | start_time=time.time() 24 | fw=open(trial_number,"a") 25 | fw.write(str(total_packets)+","+str(k)+","+str(pkt_id)+","+str(switch_id)+","+str(digest)+","+str(checksum)+"\n") 26 | fw.close() 27 | return 28 | 29 | 30 | 31 | def parent_callback(queue): 32 | def pkt_callback(pkt): 33 | ethernet_header=pkt.getlayer(Ether) 34 | src_mac=ethernet_header.src 35 | dst_mac=ethernet_header.dst 36 | ip_header=pkt.getlayer(IP) 37 | src_ip=ip_header.src 38 | dst_ip=ip_header.dst 39 | ecn=ip_header.tos 40 | pkt_id=ip_header.id 41 | ttl=ip_header.ttl 42 | chksum=ip_header.chksum 43 | if ecn==1: 44 | k=ttl 45 | src_mac_int = int(src_mac.translate(None, ":.- "), 16) 46 | dst_mac_int = int(dst_mac.translate(None, ":.- "), 16) 47 | checksum=int(ip_header.chksum) 48 | queue.put((k,pkt_id,src_mac_int,dst_mac_int,checksum)) 49 | return pkt_callback 50 | 51 | manager = multiprocessing.Manager() 52 | queue = manager.Queue() 53 | pool = multiprocessing.Pool(1) 54 | 55 | f=open("config","r") 56 | for line in f: 57 | line=line.strip().split("=") 58 | type=line[0] 59 | data=line[1] 60 | if type=="max_bit_range": 61 | max_bit_range=int(data) 62 | if type=="global_hash_range": 63 | global_hash_range=int(data) 64 | if type=="receiver_interface": 65 | receiver_interface=data 66 | if type=="receiver_ip": 67 | receiver_ip=data 68 | if type=="common_log": 69 | common_log=data 70 | if type=="total_packets": 71 | total_packets=int(data) 72 | if type=="iterations": 73 | iterations=int(data) 74 | f.close() 75 | 76 | trial_number=sys.argv[1] 77 | watcher = pool.apply_async(listener,(queue,trial_number+"_"+str(global_hash_range),total_packets*iterations)) 78 | sniff(iface=receiver_interface, prn=parent_callback(queue), filter="dst net "+receiver_ip, store=0) 79 | -------------------------------------------------------------------------------- /kll.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | ''' 3 | Written by Edo Liberty. All rights reserved. 4 | Intended for academic use only. No commercial use is allowed. 5 | ''' 6 | 7 | import sys 8 | from random import random 9 | from math import ceil 10 | 11 | class KLL: 12 | def __init__(self, k, c = 2.0/3.0, lazy=True, alternate=True): 13 | if k<=0: raise ValueError("k must be a positive integer.") 14 | if c <= 0.5 or c > 1.0: raise ValueError("c must larger than 0.5 and at most 1.0.") 15 | self.k = k 16 | self.c = c 17 | self.lazy = lazy 18 | self.alternate = alternate 19 | self.compactors = [] 20 | self.H = 0 21 | self.size = 0 22 | self.maxSize = 0 23 | self.grow() 24 | 25 | def grow(self): 26 | self.compactors.append(Compactor(self.alternate)) 27 | self.H = len(self.compactors) 28 | self.maxSize = sum(self.capacity(height) for height in range(self.H)) 29 | 30 | def capacity(self, height): 31 | depth = self.H - height - 1 32 | return int(ceil(self.c**depth*self.k)) + 1 33 | 34 | def update(self, item): 35 | self.compactors[0].append(item) 36 | self.size += 1 37 | if self.size >= self.maxSize: 38 | self.compress() 39 | assert(self.size < self.maxSize) 40 | 41 | def compress(self): 42 | for h in range(len(self.compactors)): 43 | if len(self.compactors[h]) >= self.capacity(h): 44 | if h+1 >= self.H: self.grow() 45 | self.compactors[h+1].extend(self.compactors[h].compact()) 46 | self.size = sum(len(c) for c in self.compactors) 47 | if(self.lazy): 48 | break 49 | 50 | def merge(self, other): 51 | # Grow until self has at least as many compactors as other 52 | while self.H < other.H: self.grow() 53 | # Append the items in same height compactors 54 | for h in range(other.H): self.compactors[h].extend(other.compactors[h]) 55 | self.size = sum(len(c) for c in self.compactors) 56 | # Keep compressing until the size constraint is met 57 | while self.size >= self.maxSize: 58 | self.compress() 59 | assert(self.size < self.maxSize) 60 | 61 | def rank(self, value): 62 | r = 0 63 | for (h, c) in enumerate(self.compactors): 64 | for item in c: 65 | if item <= value: 66 | r += 2**h 67 | return r 68 | 69 | def cdf(self): 70 | itemsAndWeights = [] 71 | for (h, items) in enumerate(self.compactors): 72 | itemsAndWeights.extend( (item, 2**h) for item in items ) 73 | totWeight = sum( weight for (item, weight) in itemsAndWeights) 74 | itemsAndWeights.sort() 75 | cumWeight = 0 76 | cdf = [] 77 | for (item, weight) in itemsAndWeights: 78 | cumWeight += weight 79 | cdf.append( (item, float(cumWeight)/float(totWeight) ) ) 80 | return cdf 81 | 82 | def ranks(self): 83 | ranksList = [] 84 | itemsAndWeights = [] 85 | for (h, items) in enumerate(self.compactors): 86 | itemsAndWeights.extend( (item, 2**h) for item in items ) 87 | itemsAndWeights.sort() 88 | cumWeight = 0 89 | for (item, weight) in itemsAndWeights: 90 | cumWeight += weight 91 | ranksList.append( (item, cumWeight) ) 92 | return ranksList 93 | 94 | class Compactor(list): 95 | def __init__(self, alternate=True): 96 | self.numCompaction = 0 97 | self.offset = 0 98 | self.alternate = alternate 99 | 100 | def compact(self): 101 | if (self.numCompaction%2==1 and self.alternate): 102 | self.offset = 1 - self.offset 103 | else: 104 | self.offset = int(random() < 0.5) 105 | 106 | self.sort() 107 | 108 | lastItem = None 109 | if (len(self)%2==1): 110 | lastItem = self.pop(-1) 111 | 112 | for i in range(self.offset,len(self),2): 113 | yield self[i] 114 | 115 | self.clear() 116 | if lastItem is not None: 117 | self.append(lastItem) 118 | 119 | self.numCompaction += 1 120 | 121 | 122 | if __name__ == '__main__': 123 | import argparse 124 | parser = argparse.ArgumentParser() 125 | parser.add_argument('-k', type=int, default=128, 126 | help='''controls the number of elements in the sketch which is 127 | at most 3k+log2(n). n is the length of the stream.''') 128 | parser.add_argument('-t', type=str, choices=["string","int","float"], default='string', 129 | help='defines the type of stream items, default="string".') 130 | args = parser.parse_args() 131 | 132 | k = args.k if args.k > 0 else 128 133 | conversions = {'int':int,'string':str,'float':float} 134 | 135 | kll = KLL(k) 136 | for line in sys.stdin: 137 | item = conversions[args.t](line.strip('\n\r')) 138 | kll.update(item) 139 | 140 | for (item, quantile) in kll.cdf(): 141 | print('%f\t%s'%(quantile,str(item))) 142 | 143 | -------------------------------------------------------------------------------- /exp.py: -------------------------------------------------------------------------------- 1 | from subprocess import Popen 2 | import os 3 | import time 4 | import sys 5 | import networkx as nx 6 | 7 | from p4utils.utils.topology import Topology 8 | 9 | 10 | class Experiment: 11 | def __init__( 12 | self, 13 | length, 14 | exp_ranges, 15 | ): 16 | self.length = length 17 | self.exp_ranges = exp_ranges 18 | self.original_path = [] 19 | self.all_switches = set() 20 | self.all_links = set() 21 | self.G = nx.Graph() 22 | self.host_ips={} 23 | self.switch_mapper={} 24 | self.thrift_port={} 25 | 26 | for i in range(0,length): 27 | self.all_switches.add("s"+str(i)) 28 | self.original_path.append("s"+str(i)) 29 | for i in range(0,length-1): 30 | self.all_links.add(("s"+str(i),"s"+str(i+1))) 31 | 32 | self.exp_count=0 33 | self.max_bit_range=255 34 | self.all_done=set() 35 | self.global_hash_range=1000000 36 | 37 | 38 | def update_graph(self): 39 | for switch in self.all_switches: 40 | host=switch.replace("s","h") 41 | self.G.add_node(switch) 42 | self.G.add_node(host) 43 | 44 | for link in self.all_links: 45 | node_1=link[0] 46 | node_2=link[1] 47 | self.G.add_edge(node_1,node_2) 48 | 49 | def obtain_mininet_topo(self): 50 | topo = Topology(db="topology.db") 51 | for switch in self.all_switches: 52 | if switch not in self.switch_mapper: 53 | self.switch_mapper[switch]={} 54 | 55 | host=switch.replace("s","h") 56 | host_details=topo.node(host) 57 | ip_address=host_details[switch]["ip"].split("/")[0] 58 | self.host_ips[host]=ip_address 59 | 60 | switch_details=topo.node(switch) 61 | self.thrift_port[switch]=switch_details["thrift_port"] 62 | 63 | for interface,port in switch_details["interfaces_to_port"].iteritems(): 64 | if interface!="lo": 65 | node=switch_details["interfaces_to_node"][interface] 66 | self.switch_mapper[switch][node]=port 67 | 68 | 69 | def generate_rules(self): 70 | for switch in self.all_switches: 71 | host=switch.replace("s","h") 72 | fw=open("rules/"+switch+"-commands.txt","w") 73 | fw.write("table_clear dmac\n") 74 | fw.write("table_clear ttl_rules\n\n") 75 | fw.write("table_add dmac forward " + self.host_ips[host] + 76 | " => " + str(self.switch_mapper[switch][host])+"\n") 77 | for switch_1 in self.all_switches: 78 | if switch == switch_1: 79 | continue 80 | destination_host = switch_1.replace("s","h") 81 | try: 82 | p = nx.shortest_path(self.G, source=switch, target=switch_1) 83 | except: 84 | continue 85 | fw.write("table_add dmac forward " + self.host_ips[destination_host] 86 | + " => " + str(self.switch_mapper[switch][p[1]])+"\n") 87 | 88 | switch_id=switch.replace("s","") 89 | ttl=255 90 | max_ttl=30 91 | fw.write("\n\n") 92 | while ttl>0: 93 | approx=self.global_hash_range/(256-ttl) 94 | fw.write("table_add ttl_rules copy_to_metadata " 95 | +str(ttl)+" => "+str(approx)+" "+str(switch_id)+" " 96 | +str(self.max_bit_range)+"\n") 97 | ttl=ttl-1 98 | fw.close() 99 | 100 | for node,port in self.thrift_port.iteritems(): 101 | os.system("simple_switch_CLI --thrift-port " 102 | +str(port)+" < rules/"+str(node) 103 | +"-commands.txt > /dev/null") 104 | 105 | def gen_config(self, receiver_interface, receiver_ip, sender_ip): 106 | fw=open("config","w") 107 | fw.write("receiver_interface="+receiver_interface+"\n") 108 | fw.write("max_bit_range="+str(self.max_bit_range)+"\n") 109 | fw.write("global_hash_range=1000000\n") 110 | fw.write("receiver_ip="+receiver_ip+"\n") 111 | fw.write("sender_ip="+sender_ip+"\n") 112 | fw.write("common_log=common_log\n") 113 | fw.write("total_packets=5000\n") 114 | fw.write("iterations=1") 115 | fw.close() 116 | 117 | def run(self): 118 | while True: 119 | for exp_range in self.exp_ranges: 120 | path=self.original_path[:exp_range] 121 | exp_name=str(len(path)) 122 | total_runs=len(path) 123 | 124 | self.generate_rules() 125 | 126 | while True: 127 | if total_runs==1: 128 | break 129 | new_path=path[:total_runs] 130 | sender=new_path[0].replace("s","h") 131 | receiver=new_path[-1].replace("s","h") 132 | receiver_interface=receiver+"-eth0" 133 | receiver_ip="10.0.0."+str(receiver.replace("h","")) 134 | sender_ip="10.0.0."+str(sender.replace("h","")) 135 | 136 | self.gen_config(receiver_interface, receiver_ip, sender_ip) 137 | 138 | start_time=time.time() 139 | os.system("mkdir -p experiments/"+exp_name+"/"+str(total_runs)) 140 | os.system("sudo pkill -9 -f recv.py") 141 | os.system("sudo pkill -9 -f send.py") 142 | 143 | #Start Receiver 144 | simple_controller="mx {0} sudo python recv.py {1}" 145 | recv_job=Popen(simple_controller.format(receiver, 146 | "experiments/"+exp_name+"/"+str(total_runs)+"/" 147 | +str(self.max_bit_range)), shell=True) 148 | 149 | time.sleep(2) 150 | 151 | #Start sender 152 | sender_="mx {0} sudo python send.py" 153 | send_job=Popen(sender_.format(sender), shell=True) 154 | 155 | while True: 156 | if send_job.poll() is None: 157 | time.sleep(3) 158 | else: 159 | break 160 | 161 | os.system("sudo pkill -9 -f recv.py") 162 | self.exp_count=self.exp_count+1 163 | print "Exp range",exp_range,"Total runs",str(self.exp_count)+"/"+str(exp_range-1)+" Time",time.time()-start_time 164 | total_runs=total_runs-1 165 | if total_runs==1: 166 | self.all_done.add(exp_range) 167 | if len(self.all_done)==len(exp_ranges): 168 | break 169 | 170 | length=int(sys.argv[1]) 171 | exp_ranges=str(sys.argv[1]) 172 | exp_ranges=[int(x) for x in exp_ranges.split(",")] 173 | 174 | exp = Experiment(length, exp_ranges) 175 | exp.update_graph() 176 | exp.obtain_mininet_topo() 177 | exp.run() 178 | -------------------------------------------------------------------------------- /generate_delay_results.py: -------------------------------------------------------------------------------- 1 | import math 2 | import time 3 | import sys 4 | import numpy as np 5 | import operator 6 | import random 7 | import os 8 | from kll import KLL 9 | 10 | random.seed(30) 11 | 12 | import glob 13 | 14 | 15 | sketch_size=100 16 | packets_range=list(range(100,1100,100)) 17 | pint_packets={} 18 | all_packets={} 19 | approx={} 20 | all_approx=set() 21 | approx_map={} 22 | for packets in packets_range: 23 | approx[packets]={} 24 | for packets in packets_range: 25 | for bits in [4,8]: 26 | if bits==4: 27 | ap=0.42 28 | if bits==8: 29 | ap=0.022 30 | approx[packets][ap]=[] 31 | all_approx.add(ap) 32 | approx_map[ap]=bits 33 | packet_results_avg={} 34 | packet_results_median={} 35 | packet_results_tail={} 36 | all=[] 37 | f=open("experiments/delays/processed_data","r") 38 | for line in f: 39 | digest_1=int(line.strip()) 40 | if digest_1 <0: 41 | continue 42 | all.append(digest_1) 43 | f.close() 44 | 45 | all=sorted(all) 46 | all_median=np.median(all) 47 | all_avg=sum(all)/float(len(all)) 48 | all_tail=np.percentile(all,99) 49 | 50 | for packets in packets_range: 51 | if packets not in packet_results_avg: 52 | packet_results_avg[packets]={} 53 | if packets not in packet_results_median: 54 | packet_results_median[packets]={} 55 | if packets not in packet_results_tail: 56 | packet_results_tail[packets]={} 57 | 58 | pint_packets[packets]=[] 59 | all_packets[packets]=[] 60 | pint=[] 61 | 62 | f=open("experiments/delays/processed_data","r") 63 | for line in f: 64 | digest_1=int(line.strip()) 65 | if digest_1 <0: 66 | continue 67 | if random.randint(1, 2) == 1: 68 | pint.append(digest_1) 69 | for ap in all_approx: 70 | if digest_1==0: 71 | approx[packets][ap].append(digest_1) 72 | continue 73 | 74 | range_1=int(math.log(digest_1, (1+ap)**2)) 75 | range_2=int(math.log(digest_1, (1+ap)**2)+0.5) 76 | 77 | approx_value_1=(1+ap)**(2*range_1) 78 | approx_value_2=(1+ap)**(2*range_2) 79 | 80 | diff_1=digest_1-approx_value_1 81 | if diff_1<0: 82 | diff_1=-1*diff_1 83 | 84 | diff_2=digest_1-approx_value_2 85 | if diff_2<0: 86 | diff_2=-1*diff_2 87 | 88 | if diff_1<=diff_2: 89 | approx[packets][ap].append(int(approx_value_1)) 90 | if diff_1>diff_2: 91 | approx[packets][ap].append(int(approx_value_2)) 92 | 93 | if len(pint)==packets: 94 | all_medianp=np.median(pint) 95 | all_avgp=sum(all)/float(len(pint)) 96 | all_tailp=np.percentile(pint,99) 97 | 98 | for item in all_approx: 99 | value=sorted(approx[packets][item]) 100 | if len(value)<=1: 101 | continue 102 | 103 | #Using sketch to store digests 104 | kll = KLL(sketch_size) 105 | for v in value: 106 | kll.update(v) 107 | 108 | min_diff_50 = 1000 109 | min_diff_99 = 1000 110 | pint_median = 0 111 | pint_tail = 0 112 | for (ii, quantile) in kll.cdf(): 113 | diff = quantile - 0.5 114 | if diff < 0: 115 | diff = diff * -1 116 | if diff 3 | #include 4 | 5 | const bit<16> TYPE_IPV4 = 0x800; 6 | const bit<16> L2_LEARN_ETHER_TYPE = 0x1234; 7 | 8 | /************************************************************************* 9 | *********************** H E A D E R S *********************************** 10 | *************************************************************************/ 11 | 12 | typedef bit<9> egressSpec_t; 13 | typedef bit<48> macAddr_t; 14 | typedef bit<32> ip4Addr_t; 15 | const bit<32> BMV2_V1MODEL_INSTANCE_TYPE_REPLICATION = 5; 16 | #define IS_REPLICATED(std_meta) (std_meta.instance_type == BMV2_V1MODEL_INSTANCE_TYPE_REPLICATION) 17 | 18 | header ethernet_t { 19 | macAddr_t dstAddr; 20 | macAddr_t srcAddr; 21 | bit<16> etherType; 22 | } 23 | 24 | header ipv4_t { 25 | bit<4> version; 26 | bit<4> ihl; 27 | bit<6> dscp; 28 | bit<2> ecn; 29 | bit<16> totalLen; 30 | bit<16> identification; 31 | bit<3> flags; 32 | bit<13> fragOffset; 33 | bit<8> ttl; 34 | bit<8> protocol; 35 | bit<16> hdrChecksum; 36 | ip4Addr_t srcAddr; 37 | ip4Addr_t dstAddr; 38 | } 39 | 40 | header switch_to_cpu_header_t { 41 | bit<32> word0; 42 | bit<32> word1; 43 | } 44 | 45 | 46 | struct headers { 47 | switch_to_cpu_header_t switch_to_cpu; 48 | ethernet_t ethernet; 49 | ipv4_t ipv4; 50 | } 51 | 52 | struct learn_t{ 53 | bit<48> global_hash; 54 | bit<48> digest; 55 | bit<48> approximation; 56 | bit<32> switch_id; 57 | bit<16> packet_id; 58 | bit<8> ttl; 59 | bit<1> decision; 60 | } 61 | 62 | struct metadata { 63 | bit<9> ingress_port; 64 | bit<48> approximation; 65 | bit<48> global_hash; 66 | 67 | bit<48> digest_1; 68 | bit<48> digest_2; 69 | bit<48> digest_3; 70 | 71 | bit<32> switch_id; 72 | bit<32> decider_hash_pint; 73 | bit<32> decider_hash_asm; 74 | bit<13> asm_hash_1; 75 | bit<13> asm_hash_2; 76 | bit<13> asm_hash_3; 77 | bit<13> asm_hash_4; 78 | bit<13> asm_hash_5; 79 | bit<13> asm_hash_6; 80 | bit<13> asm_hash_7; 81 | bit<13> asm_hash_8; 82 | 83 | bit<32> xor_hash; 84 | learn_t learn_data; 85 | bit<8> ttl; 86 | bit<32> b_value; 87 | } 88 | 89 | 90 | /************************************************************************* 91 | *********************** P A R S E R *********************************** 92 | *************************************************************************/ 93 | 94 | parser MyParser(packet_in packet, 95 | out headers hdr, 96 | inout metadata meta, 97 | inout standard_metadata_t standard_metadata) { 98 | 99 | state start { 100 | packet.extract(hdr.ethernet); 101 | packet.extract(hdr.ipv4); 102 | transition accept; 103 | } 104 | } 105 | 106 | 107 | /************************************************************************* 108 | ************ C H E C K S U M V E R I F I C A T I O N ************* 109 | *************************************************************************/ 110 | 111 | control MyVerifyChecksum(inout headers hdr, inout metadata meta) { 112 | apply { } 113 | } 114 | 115 | 116 | /************************************************************************* 117 | ************** I N G R E S S P R O C E S S I N G ******************* 118 | *************************************************************************/ 119 | 120 | control MyIngress(inout headers hdr, 121 | inout metadata meta, 122 | inout standard_metadata_t standard_metadata) { 123 | 124 | action drop() { 125 | mark_to_drop(); 126 | } 127 | 128 | action forward(bit<9> egress_port){ 129 | //Standard routing 130 | standard_metadata.egress_spec=egress_port; 131 | 132 | //Read the current TTL 133 | bit <32> diff=256-(bit<32>)hdr.ipv4.ttl; 134 | 135 | //Decider hash 136 | hash(meta.decider_hash_pint, HashAlgorithm.crc32, (bit<1>)0, {hdr.ipv4.identification},(bit<32>)100); 137 | 138 | //XOR hash 139 | hash(meta.xor_hash, HashAlgorithm.crc32, (bit<1>)0, {hdr.ipv4.identification,diff},(bit<32>)1000000); 140 | 141 | //Hashing to understand if needs to copy digest 142 | hash(meta.global_hash, HashAlgorithm.crc32, (bit<1>)0, {hdr.ipv4.identification,diff},(bit<48>)1000000); 143 | 144 | /*Creating digest of the switch: 145 | Using 48 bits of the destination MAC address to accomodate PINT8, PINT4 and PINT1 146 | Speeds up evaluation. 147 | */ 148 | hash(meta.digest_1, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id,hdr.ipv4.identification},(bit<16>)255); 149 | hash(meta.digest_2, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id,hdr.ipv4.identification},(bit<16>)7); 150 | hash(meta.digest_3, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id,hdr.ipv4.identification},(bit<16>)1); 151 | 152 | //Combining PINT8, PINT4 and PINT1 into the final digest. 153 | bit <48> final_digest=(meta.digest_1 << 32) + (meta.digest_2 << 16) + (meta.digest_3); 154 | 155 | //Estimating the XOR of switch ID 156 | bit<48> xor_extract=1; 157 | bit<48> dstAddr_1=((xor_extract << 16) - 1) & (hdr.ethernet.dstAddr >> 0); 158 | bit<48> dstAddr_2=((xor_extract << 16) - 1) & (hdr.ethernet.dstAddr >> 16); 159 | bit<48> dstAddr_3=((xor_extract << 16) - 1) & (hdr.ethernet.dstAddr >> 32); 160 | 161 | dstAddr_1=dstAddr_1^(bit<48>)meta.switch_id; 162 | dstAddr_2=dstAddr_2^(bit<48>)meta.switch_id; 163 | dstAddr_3=dstAddr_3^(bit<48>)meta.switch_id; 164 | 165 | 166 | bit<8> dstAddr_1_final=(bit<8>)dstAddr_1; 167 | bit<4> dstAddr_2_final=(bit<4>)dstAddr_2; 168 | bit<1> dstAddr_3_final=(bit<1>)dstAddr_3; 169 | 170 | bit <48> final_xor_digest=((bit<48>)dstAddr_1_final << 32) + ((bit<48>)dstAddr_2_final << 16) + ((bit<48>)dstAddr_3_final); 171 | 172 | /*Copying the digest to the destination MAC for 173 | some packets. 174 | */ 175 | if (meta.decider_hash_pint<50){ 176 | if (meta.global_hash)meta.switch_id; 182 | } 183 | } 184 | 185 | /*Copying the XOR digest to the destination MAC for 186 | some packets. 187 | */ 188 | if (meta.decider_hash_pint>=50){ 189 | if (meta.xor_hash<=100000){ 190 | //Copying the digest to Destination MAC 191 | hdr.ethernet.dstAddr=final_xor_digest; 192 | 193 | //Copying the switch ID to source MAC. Used only for verification 194 | hdr.ipv4.hdrChecksum=(bit<16>)meta.switch_id; 195 | } 196 | } 197 | //Decider hash ASM 198 | hash(meta.decider_hash_asm, HashAlgorithm.crc32, (bit<1>)0, {hdr.ipv4.identification},(bit<32>)7); 199 | 200 | hash(meta.asm_hash_1, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id+1},(bit<48>)100); 201 | hash(meta.asm_hash_2, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id+2},(bit<48>)100); 202 | hash(meta.asm_hash_3, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id+3},(bit<48>)100); 203 | hash(meta.asm_hash_4, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id+4},(bit<48>)100); 204 | hash(meta.asm_hash_5, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id+5},(bit<48>)100); 205 | hash(meta.asm_hash_6, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id+6},(bit<48>)100); 206 | hash(meta.asm_hash_7, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id+7},(bit<48>)100); 207 | hash(meta.asm_hash_8, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id+8},(bit<48>)100); 208 | 209 | if (meta.global_hash)meta.switch_id; 211 | if (meta.decider_hash_asm==0){ 212 | bit<16> final_asm_hash=((bit<16>)meta.asm_hash_1<<3)+((bit<16>)meta.decider_hash_asm); 213 | hdr.ethernet.srcAddr=(bit<48>)final_asm_hash; 214 | } 215 | if (meta.decider_hash_asm==1){ 216 | bit<16> final_asm_hash=((bit<16>)meta.asm_hash_2<<3)+((bit<16>) meta.decider_hash_asm); 217 | hdr.ethernet.srcAddr=(bit<48>)final_asm_hash; 218 | } 219 | if (meta.decider_hash_asm==2){ 220 | bit<16> final_asm_hash=((bit<16>)meta.asm_hash_3<<3)+((bit<16>) meta.decider_hash_asm); 221 | hdr.ethernet.srcAddr=(bit<48>)final_asm_hash; 222 | } 223 | if (meta.decider_hash_asm==3){ 224 | bit<16> final_asm_hash=((bit<16>)meta.asm_hash_4<<3)+((bit<16>) meta.decider_hash_asm); 225 | hdr.ethernet.srcAddr=(bit<48>)final_asm_hash; 226 | } 227 | if (meta.decider_hash_asm==4){ 228 | bit<16> final_asm_hash=((bit<16>)meta.asm_hash_5<<3)+((bit<16>) meta.decider_hash_asm); 229 | hdr.ethernet.srcAddr=(bit<48>)final_asm_hash; 230 | } 231 | if (meta.decider_hash_asm==5){ 232 | bit<16> final_asm_hash=((bit<16>)meta.asm_hash_6<<3)+((bit<16>) meta.decider_hash_asm); 233 | hdr.ethernet.srcAddr=(bit<48>)final_asm_hash; 234 | } 235 | if (meta.decider_hash_asm==6){ 236 | bit<16> final_asm_hash=((bit<16>)meta.asm_hash_7<<3)+((bit<16>) meta.decider_hash_asm); 237 | hdr.ethernet.srcAddr=(bit<48>)final_asm_hash; 238 | } 239 | if (meta.decider_hash_asm==7){ 240 | bit<16> final_asm_hash=((bit<16>)meta.asm_hash_8<<3)+((bit<16>) meta.decider_hash_asm); 241 | hdr.ethernet.srcAddr=(bit<48>)final_asm_hash; 242 | } 243 | } 244 | 245 | hdr.ipv4.ttl=hdr.ipv4.ttl-1; 246 | 247 | } 248 | 249 | table dmac{ 250 | key={ 251 | hdr.ipv4.dstAddr: exact; 252 | } 253 | actions={ 254 | forward; 255 | NoAction; 256 | } 257 | size=256; 258 | default_action=NoAction; 259 | } 260 | 261 | 262 | action copy_to_metadata(bit<48> approximation, bit<32> switch_id, bit<32> b_value){ 263 | meta.approximation=approximation; 264 | meta.switch_id=switch_id; 265 | meta.b_value=b_value; 266 | } 267 | 268 | table ttl_rules{ 269 | key={ 270 | hdr.ipv4.ttl: exact; 271 | } 272 | actions={ 273 | copy_to_metadata; 274 | NoAction; 275 | } 276 | size=256; 277 | default_action=NoAction; 278 | } 279 | 280 | apply { 281 | ttl_rules.apply(); 282 | dmac.apply(); 283 | } 284 | } 285 | 286 | /************************************************************************* 287 | **************** E G R E S S P R O C E S S I N G ******************* 288 | *************************************************************************/ 289 | 290 | control MyEgress(inout headers hdr, 291 | inout metadata meta, 292 | inout standard_metadata_t standard_metadata) { 293 | apply { 294 | hdr.ipv4.ecn=1; 295 | } 296 | } 297 | 298 | /************************************************************************* 299 | ************* C H E C K S U M C O M P U T A T I O N ************** 300 | *************************************************************************/ 301 | 302 | control MyComputeChecksum(inout headers hdr, inout metadata meta) { 303 | apply { 304 | 305 | } 306 | } 307 | 308 | /************************************************************************* 309 | *********************** D E P A R S E R ******************************* 310 | *************************************************************************/ 311 | 312 | control MyDeparser(packet_out packet, in headers hdr) { 313 | apply { 314 | //parsed headers have to be added again into the packet. 315 | packet.emit(hdr.switch_to_cpu); 316 | packet.emit(hdr.ethernet); 317 | packet.emit(hdr.ipv4); 318 | } 319 | } 320 | 321 | /************************************************************************* 322 | *********************** S W I T C H ******************************* 323 | *************************************************************************/ 324 | //switch architecture 325 | V1Switch( 326 | MyParser(), 327 | MyVerifyChecksum(), 328 | MyIngress(), 329 | MyEgress(), 330 | MyComputeChecksum(), 331 | MyDeparser() 332 | ) main; 333 | -------------------------------------------------------------------------------- /generate_results.py: -------------------------------------------------------------------------------- 1 | import operator 2 | import glob 3 | import struct 4 | import time 5 | import zlib 6 | import multiprocessing 7 | import sys 8 | import socket 9 | import os 10 | import numpy as np 11 | import random 12 | 13 | exp_name=sys.argv[1] 14 | 15 | path = [] 16 | for i in range(0,int(exp_name)): 17 | path.append("s"+str(i)) 18 | 19 | f=open("config","r") 20 | for line in f: 21 | line=line.strip().split("=") 22 | type=line[0] 23 | data=line[1] 24 | if type=="global_hash_range": 25 | global_hash_range=int(data) 26 | if type=="receiver_interface": 27 | receiver_interface=data 28 | if type=="receiver_ip": 29 | receiver_ip=data 30 | if type=="common_log": 31 | common_log=data 32 | if type=="total_packets": 33 | total_packets_1=int(data) 34 | f.close() 35 | 36 | def ip2int(addr): 37 | return struct.unpack("!I", socket.inet_aton(addr))[0] 38 | 39 | 40 | max_cutoff=4000 41 | for max_bit_range in [255,8,1]: 42 | final_results_avg={} 43 | final_results_median={} 44 | final_results_tail={} 45 | 46 | asm_5_final_results_avg={} 47 | asm_5_final_results_median={} 48 | asm_5_final_results_tail={} 49 | 50 | asm_6_final_results_avg={} 51 | asm_6_final_results_median={} 52 | asm_6_final_results_tail={} 53 | os.system("mkdir -p final_results/"+exp_name+"/avg") 54 | os.system("mkdir -p final_results/"+exp_name+"/median") 55 | os.system("mkdir -p final_results/"+exp_name+"/tail") 56 | 57 | iterations=len(path) 58 | while True: 59 | if iterations==1: 60 | break 61 | new_path=path[:iterations][::-1] 62 | distance_metric={} 63 | xor_locations={} 64 | hop_location={} 65 | 66 | asm_agreeing_hashes_5={} 67 | asm_agreeing_hashes_6={} 68 | asm_packets_5=0 69 | asm_packets_6=0 70 | asm_results_5=[] 71 | asm_results_6=[] 72 | 73 | all_sampling_distances=set() 74 | packet_count=0 75 | results=[] 76 | 77 | f=open("experiments/"+exp_name+"/"+str(len(new_path))+"/255_1000000","r") 78 | for line in f: 79 | packet_count=packet_count+1 80 | asm_packets_5=asm_packets_5+1 81 | asm_packets_6=asm_packets_6+1 82 | try: 83 | data=line.strip().split(",") 84 | data=[int(x) for x in data] 85 | total_packets=data[0] 86 | ttl=data[1] 87 | pkt_id=int(data[2]) 88 | asm_hash=int(data[3]) 89 | digest=int(data[4]) 90 | actual_switch_id=int(data[5]) 91 | except: 92 | continue 93 | 94 | final_results={} 95 | k=255-ttl 96 | k_val=k+1 97 | current_path=new_path[:k_val] 98 | host=current_path[-1] 99 | 100 | decider_hash=(zlib.crc32(struct.pack("!H",pkt_id))& 0xffffffff)%100 101 | if decider_hash<50: 102 | old_digest=digest 103 | digest='{:048b}'.format(digest) 104 | digest_1=int(digest[0:16],2) 105 | digest_2=int(digest[16:32],2) 106 | digest_3=int(digest[32:],2) 107 | 108 | if max_bit_range==255: 109 | digest=digest_1 110 | if max_bit_range==8: 111 | digest=digest_2 112 | if max_bit_range==1: 113 | digest=digest_3 114 | global_hash_check=(zlib.crc32(struct.pack("!HI",pkt_id, k_val))& 0xffffffff)%global_hash_range 115 | while global_hash_check>global_hash_range/k_val: 116 | k_val=k_val-1 117 | global_hash_check=(zlib.crc32(struct.pack("!HI",pkt_id, k_val))& 0xffffffff)%global_hash_range 118 | 119 | if k_val not in distance_metric: 120 | distance_metric[k_val]=set() 121 | 122 | distance_metric[k_val].add((digest,pkt_id,actual_switch_id)) 123 | 124 | sampling_distance=k_val-1 125 | if max_bit_range==255: 126 | all_sampling_distances.add(sampling_distance) 127 | asm_hash='{:048b}'.format(asm_hash) 128 | asm_hash=asm_hash[32:] 129 | hash_function=int(asm_hash[13:],2)+1 130 | asm_hash=int(asm_hash[0:13],2) 131 | 132 | if sampling_distance not in asm_agreeing_hashes_5: 133 | asm_agreeing_hashes_5[sampling_distance]=set() 134 | if sampling_distance not in asm_agreeing_hashes_6: 135 | asm_agreeing_hashes_6[sampling_distance]=set() 136 | all_hashes=[] 137 | 138 | 139 | for switch_id_check in range(0,len(new_path)): 140 | specific_hash_check=(zlib.crc32(struct.pack("!I", switch_id_check+hash_function))& 0xffffffff)%100 141 | if specific_hash_check==asm_hash and sampling_distance==actual_switch_id: 142 | asm_agreeing_hashes_5[sampling_distance].add(hash_function) 143 | asm_agreeing_hashes_6[sampling_distance].add(hash_function) 144 | 145 | 146 | 147 | total_check_5=0 148 | total_check_6=0 149 | 150 | for sid in range(0,len(new_path)): 151 | if sid in asm_agreeing_hashes_5: 152 | if len(asm_agreeing_hashes_5[sid])>=5: 153 | total_check_5=total_check_5+1 154 | if sid in asm_agreeing_hashes_6: 155 | if len(asm_agreeing_hashes_6[sid])>=6: 156 | total_check_6=total_check_6+1 157 | 158 | if total_check_5==len(new_path): 159 | asm_results_5.append(asm_packets_5) 160 | asm_packets_5=0 161 | asm_agreeing_hashes_5={} 162 | 163 | if total_check_6==len(new_path): 164 | asm_results_6.append(asm_packets_6) 165 | asm_packets_6=0 166 | asm_agreeing_hashes_6={} 167 | ################################### 168 | 169 | 170 | 171 | 172 | hop_location={} 173 | for k_val,all_data in distance_metric.iteritems(): 174 | set_list=[] 175 | for data in all_data: 176 | digest=data[0] 177 | pkt_id=data[1] 178 | actual_switch=data[2] 179 | temp_list=set() 180 | for switch_id in new_path: 181 | switch_id=int(switch_id.replace("s","")) 182 | specific_hash_check=(zlib.crc32(struct.pack("!IH", switch_id,pkt_id))& 0xffffffff)%max_bit_range 183 | if specific_hash_check==digest: 184 | temp_list.add(switch_id) 185 | set_list.append(temp_list) 186 | if len(set.intersection(*set_list))==1: 187 | hop_location[k_val]=list(set.intersection(*set_list))[0] 188 | 189 | if len(hop_location)==k: 190 | results.append(packet_count) 191 | packet_count=0 192 | distance_metric={} 193 | hop_location={} 194 | xor_locations={} 195 | 196 | 197 | if packet_count==max_cutoff: 198 | bin_dis={} 199 | missing_distance=set() 200 | disagreement=set() 201 | results.append(0) 202 | packet_count=0 203 | distance_metric={} 204 | 205 | if decider_hash>=50: 206 | digest='{:048b}'.format(digest) 207 | digest_1=int(digest[0:16],2) 208 | digest_2=int(digest[16:32],2) 209 | digest_3=int(digest[32:],2) 210 | if max_bit_range==255: 211 | digest=digest_1 212 | if max_bit_range==8: 213 | digest=digest_2 214 | if max_bit_range==1: 215 | digest=digest_3 216 | 217 | k=255-ttl 218 | k_val=k+1 219 | 220 | current_path=new_path[:k_val] 221 | host=current_path[-1] 222 | 223 | temp=[] 224 | while k_val!=1: 225 | k_val=k_val-1 226 | global_hash_check=(zlib.crc32(struct.pack("!HI",pkt_id, k_val))& 0xffffffff)%1000000 227 | if global_hash_check<=100000 and int(digest)!=0: 228 | temp.append((k_val,digest)) 229 | 230 | if len(temp)!=0: 231 | if len(temp) not in xor_locations: 232 | xor_locations[len(temp)]=[] 233 | xor_locations[len(temp)].append(temp) 234 | 235 | sorted_xor_locations=sorted(xor_locations.items(),key=operator.itemgetter(0)) 236 | for item in sorted_xor_locations: 237 | for k_val_set in item[1]: 238 | found=0 239 | total=len(k_val_set) 240 | for k_value_digest in k_val_set: 241 | k_value=k_value_digest[0] 242 | remaining_digest=k_value_digest[1] 243 | if k_value in hop_location: 244 | found=found+1 245 | if total-found==1: 246 | for k_value_digest in k_val_set: 247 | k_value=k_value_digest[0] 248 | if k_value in hop_location: 249 | current_switch=hop_location[k_value] 250 | remaining_digest='{0:048b}'.format(int(remaining_digest)) 251 | current_switch='{0:048b}'.format(int(current_switch)) 252 | remaining_digest=int(remaining_digest, 2)^int(current_switch,2) 253 | else: 254 | missing_k=k_value 255 | final_switch_id=int(bin(remaining_digest)[2:].zfill(48),2) 256 | hop_location[missing_k]=final_switch_id 257 | if len(hop_location)==255-ttl: 258 | results.append(packet_count) 259 | hop_location={} 260 | xor_locations={} 261 | packet_count=0 262 | distance_metric={} 263 | f.close() 264 | final_results_avg[len(new_path)]=["0"] 265 | final_results_median[len(new_path)]=["0"] 266 | final_results_tail[len(new_path)]=["0"] 267 | final_results_avg[len(new_path)][0]=str(round(sum(results)/float(len(results)),2)) 268 | final_results_median[len(new_path)][0]=str(round(np.median(results),2)) 269 | final_results_tail[len(new_path)][0]=str(round(np.percentile(results, 99),2)) 270 | 271 | if max_bit_range==255: 272 | if len(asm_results_5)!=0: 273 | asm_5_final_results_avg[len(new_path)]=["0"] 274 | asm_5_final_results_median[len(new_path)]=["0"] 275 | asm_5_final_results_tail[len(new_path)]=["0"] 276 | asm_5_final_results_avg[len(new_path)][0]=str(round(sum(asm_results_5)/float(len(asm_results_5)),2)) 277 | asm_5_final_results_median[len(new_path)][0]=str(round(np.median(asm_results_5),2)) 278 | asm_5_final_results_tail[len(new_path)][0]=str(round(np.percentile(asm_results_5, 99),2)) 279 | 280 | if len(asm_results_6)!=0: 281 | asm_6_final_results_avg[len(new_path)]=["0"] 282 | asm_6_final_results_median[len(new_path)]=["0"] 283 | asm_6_final_results_tail[len(new_path)]=["0"] 284 | asm_6_final_results_avg[len(new_path)][0]=str(round(sum(asm_results_6)/float(len(asm_results_6)),2)) 285 | asm_6_final_results_median[len(new_path)][0]=str(round(np.median(asm_results_6),2)) 286 | asm_6_final_results_tail[len(new_path)][0]=str(round(np.percentile(asm_results_6, 99),2)) 287 | 288 | 289 | 290 | iterations=iterations-1 291 | 292 | bit_map={255: "PINT8", 8: "PINT4", 1: "PINT1"} 293 | final_results_avg = sorted(final_results_avg.items(), key=operator.itemgetter(0)) 294 | fw = open("final_results/"+exp_name+"/avg/"+str(bit_map[max_bit_range]),"w") 295 | for item in final_results_avg: 296 | fw.write(str(item[0])+","+",".join(item[1])+"\n") 297 | fw.close() 298 | 299 | final_results_median = sorted(final_results_median.items(), key=operator.itemgetter(0)) 300 | fw = open("final_results/"+exp_name+"/median/"+str(bit_map[max_bit_range]),"w") 301 | for item in final_results_median: 302 | fw.write(str(item[0])+","+",".join(item[1])+"\n") 303 | fw.close() 304 | 305 | final_results_tail = sorted(final_results_tail.items(), key=operator.itemgetter(0)) 306 | fw = open("final_results/"+exp_name+"/tail/"+str(bit_map[max_bit_range]),"w") 307 | for item in final_results_tail: 308 | fw.write(str(item[0])+","+",".join(item[1])+"\n") 309 | fw.close() 310 | if max_bit_range==255: 311 | asm_5_final_results_avg = sorted(asm_5_final_results_avg.items(), key=operator.itemgetter(0)) 312 | fw = open("final_results/"+exp_name+"/avg/asm_5","w") 313 | for item in asm_5_final_results_avg: 314 | fw.write(str(item[0])+","+",".join(item[1])+"\n") 315 | fw.close() 316 | 317 | asm_5_final_results_median = sorted(asm_5_final_results_median.items(), key=operator.itemgetter(0)) 318 | fw = open("final_results/"+exp_name+"/median/asm_5","w") 319 | for item in asm_5_final_results_median: 320 | fw.write(str(item[0])+","+",".join(item[1])+"\n") 321 | fw.close() 322 | 323 | asm_5_final_results_tail = sorted(asm_5_final_results_tail.items(), key=operator.itemgetter(0)) 324 | fw = open("final_results/"+exp_name+"/tail/asm_5","w") 325 | for item in asm_5_final_results_tail: 326 | fw.write(str(item[0])+","+",".join(item[1])+"\n") 327 | fw.close() 328 | 329 | asm_6_final_results_avg = sorted(asm_6_final_results_avg.items(), key=operator.itemgetter(0)) 330 | fw = open("final_results/"+exp_name+"/avg/asm_6","w") 331 | for item in asm_6_final_results_avg: 332 | fw.write(str(item[0])+","+",".join(item[1])+"\n") 333 | fw.close() 334 | 335 | asm_6_final_results_median = sorted(asm_6_final_results_median.items(), key=operator.itemgetter(0)) 336 | fw = open("final_results/"+exp_name+"/median/asm_6","w") 337 | for item in asm_6_final_results_median: 338 | fw.write(str(item[0])+","+",".join(item[1])+"\n") 339 | fw.close() 340 | 341 | asm_6_final_results_tail = sorted(asm_6_final_results_tail.items(), key=operator.itemgetter(0)) 342 | fw = open("final_results/"+exp_name+"/tail/asm_6","w") 343 | for item in asm_6_final_results_tail: 344 | fw.write(str(item[0])+","+",".join(item[1])+"\n") 345 | fw.close() 346 | final_results_asm=[] 347 | 348 | num_of_fragments=8 349 | runs=100 350 | k = int(exp_name) 351 | ppm_final_results_avg={} 352 | ppm_final_results_median={} 353 | ppm_final_results_tail={} 354 | while True: 355 | if k==1: 356 | break 357 | ppm_final_results=[] 358 | for run in xrange(runs): 359 | results={} 360 | for p in xrange(5000): 361 | samplingDistance = int(random.randint(0,(k-1))) 362 | samplingFragment = random.randint(0,num_of_fragments-1) 363 | if samplingDistance not in results: 364 | results[samplingDistance]=set() 365 | results[samplingDistance].add(samplingFragment) 366 | if len(results)==k: 367 | check=0 368 | for key,value in results.iteritems(): 369 | if len(value)==num_of_fragments: 370 | check=check+1 371 | if check==k: 372 | ppm_final_results.append(p) 373 | break 374 | 375 | ppm_final_results_avg[k]=["0"] 376 | ppm_final_results_median[k]=["0"] 377 | ppm_final_results_tail[k]=["0"] 378 | ppm_final_results_avg[k][0]=str(round(sum(ppm_final_results)/float(len(ppm_final_results)),2)) 379 | ppm_final_results_median[k][0]=str(round(np.median(ppm_final_results),2)) 380 | ppm_final_results_tail[k][0]=str(round(np.percentile(ppm_final_results, 99),2)) 381 | k=k-1 382 | 383 | ppm_final_results_avg = sorted(ppm_final_results_avg.items(), key=operator.itemgetter(0)) 384 | fw = open("final_results/"+exp_name+"/avg/ppm","w") 385 | for item in ppm_final_results_avg: 386 | fw.write(str(item[0])+","+",".join(item[1])+"\n") 387 | fw.close() 388 | 389 | ppm_final_results_median = sorted(ppm_final_results_median.items(), key=operator.itemgetter(0)) 390 | fw = open("final_results/"+exp_name+"/median/ppm","w") 391 | for item in ppm_final_results_median: 392 | fw.write(str(item[0])+","+",".join(item[1])+"\n") 393 | fw.close() 394 | 395 | ppm_final_results_tail = sorted(ppm_final_results_tail.items(), key=operator.itemgetter(0)) 396 | fw = open("final_results/"+exp_name+"/tail/ppm","w") 397 | for item in ppm_final_results_median: 398 | fw.write(str(item[0])+","+",".join(item[1])+"\n") 399 | fw.close() 400 | -------------------------------------------------------------------------------- /rules/s0-commands.txt: -------------------------------------------------------------------------------- 1 | table_clear dmac 2 | table_clear ttl_rules 3 | 4 | table_add dmac forward 10.0.0.0 => 1 5 | table_add dmac forward 10.0.0.3 => 2 6 | table_add dmac forward 10.0.0.2 => 2 7 | table_add dmac forward 10.0.0.1 => 2 8 | table_add dmac forward 10.0.0.4 => 2 9 | 10 | 11 | table_add ttl_rules copy_to_metadata 255 => 1000000 0 255 12 | table_add ttl_rules copy_to_metadata 254 => 500000 0 255 13 | table_add ttl_rules copy_to_metadata 253 => 333333 0 255 14 | table_add ttl_rules copy_to_metadata 252 => 250000 0 255 15 | table_add ttl_rules copy_to_metadata 251 => 200000 0 255 16 | table_add ttl_rules copy_to_metadata 250 => 166666 0 255 17 | table_add ttl_rules copy_to_metadata 249 => 142857 0 255 18 | table_add ttl_rules copy_to_metadata 248 => 125000 0 255 19 | table_add ttl_rules copy_to_metadata 247 => 111111 0 255 20 | table_add ttl_rules copy_to_metadata 246 => 100000 0 255 21 | table_add ttl_rules copy_to_metadata 245 => 90909 0 255 22 | table_add ttl_rules copy_to_metadata 244 => 83333 0 255 23 | table_add ttl_rules copy_to_metadata 243 => 76923 0 255 24 | table_add ttl_rules copy_to_metadata 242 => 71428 0 255 25 | table_add ttl_rules copy_to_metadata 241 => 66666 0 255 26 | table_add ttl_rules copy_to_metadata 240 => 62500 0 255 27 | table_add ttl_rules copy_to_metadata 239 => 58823 0 255 28 | table_add ttl_rules copy_to_metadata 238 => 55555 0 255 29 | table_add ttl_rules copy_to_metadata 237 => 52631 0 255 30 | table_add ttl_rules copy_to_metadata 236 => 50000 0 255 31 | table_add ttl_rules copy_to_metadata 235 => 47619 0 255 32 | table_add ttl_rules copy_to_metadata 234 => 45454 0 255 33 | table_add ttl_rules copy_to_metadata 233 => 43478 0 255 34 | table_add ttl_rules copy_to_metadata 232 => 41666 0 255 35 | table_add ttl_rules copy_to_metadata 231 => 40000 0 255 36 | table_add ttl_rules copy_to_metadata 230 => 38461 0 255 37 | table_add ttl_rules copy_to_metadata 229 => 37037 0 255 38 | table_add ttl_rules copy_to_metadata 228 => 35714 0 255 39 | table_add ttl_rules copy_to_metadata 227 => 34482 0 255 40 | table_add ttl_rules copy_to_metadata 226 => 33333 0 255 41 | table_add ttl_rules copy_to_metadata 225 => 32258 0 255 42 | table_add ttl_rules copy_to_metadata 224 => 31250 0 255 43 | table_add ttl_rules copy_to_metadata 223 => 30303 0 255 44 | table_add ttl_rules copy_to_metadata 222 => 29411 0 255 45 | table_add ttl_rules copy_to_metadata 221 => 28571 0 255 46 | table_add ttl_rules copy_to_metadata 220 => 27777 0 255 47 | table_add ttl_rules copy_to_metadata 219 => 27027 0 255 48 | table_add ttl_rules copy_to_metadata 218 => 26315 0 255 49 | table_add ttl_rules copy_to_metadata 217 => 25641 0 255 50 | table_add ttl_rules copy_to_metadata 216 => 25000 0 255 51 | table_add ttl_rules copy_to_metadata 215 => 24390 0 255 52 | table_add ttl_rules copy_to_metadata 214 => 23809 0 255 53 | table_add ttl_rules copy_to_metadata 213 => 23255 0 255 54 | table_add ttl_rules copy_to_metadata 212 => 22727 0 255 55 | table_add ttl_rules copy_to_metadata 211 => 22222 0 255 56 | table_add ttl_rules copy_to_metadata 210 => 21739 0 255 57 | table_add ttl_rules copy_to_metadata 209 => 21276 0 255 58 | table_add ttl_rules copy_to_metadata 208 => 20833 0 255 59 | table_add ttl_rules copy_to_metadata 207 => 20408 0 255 60 | table_add ttl_rules copy_to_metadata 206 => 20000 0 255 61 | table_add ttl_rules copy_to_metadata 205 => 19607 0 255 62 | table_add ttl_rules copy_to_metadata 204 => 19230 0 255 63 | table_add ttl_rules copy_to_metadata 203 => 18867 0 255 64 | table_add ttl_rules copy_to_metadata 202 => 18518 0 255 65 | table_add ttl_rules copy_to_metadata 201 => 18181 0 255 66 | table_add ttl_rules copy_to_metadata 200 => 17857 0 255 67 | table_add ttl_rules copy_to_metadata 199 => 17543 0 255 68 | table_add ttl_rules copy_to_metadata 198 => 17241 0 255 69 | table_add ttl_rules copy_to_metadata 197 => 16949 0 255 70 | table_add ttl_rules copy_to_metadata 196 => 16666 0 255 71 | table_add ttl_rules copy_to_metadata 195 => 16393 0 255 72 | table_add ttl_rules copy_to_metadata 194 => 16129 0 255 73 | table_add ttl_rules copy_to_metadata 193 => 15873 0 255 74 | table_add ttl_rules copy_to_metadata 192 => 15625 0 255 75 | table_add ttl_rules copy_to_metadata 191 => 15384 0 255 76 | table_add ttl_rules copy_to_metadata 190 => 15151 0 255 77 | table_add ttl_rules copy_to_metadata 189 => 14925 0 255 78 | table_add ttl_rules copy_to_metadata 188 => 14705 0 255 79 | table_add ttl_rules copy_to_metadata 187 => 14492 0 255 80 | table_add ttl_rules copy_to_metadata 186 => 14285 0 255 81 | table_add ttl_rules copy_to_metadata 185 => 14084 0 255 82 | table_add ttl_rules copy_to_metadata 184 => 13888 0 255 83 | table_add ttl_rules copy_to_metadata 183 => 13698 0 255 84 | table_add ttl_rules copy_to_metadata 182 => 13513 0 255 85 | table_add ttl_rules copy_to_metadata 181 => 13333 0 255 86 | table_add ttl_rules copy_to_metadata 180 => 13157 0 255 87 | table_add ttl_rules copy_to_metadata 179 => 12987 0 255 88 | table_add ttl_rules copy_to_metadata 178 => 12820 0 255 89 | table_add ttl_rules copy_to_metadata 177 => 12658 0 255 90 | table_add ttl_rules copy_to_metadata 176 => 12500 0 255 91 | table_add ttl_rules copy_to_metadata 175 => 12345 0 255 92 | table_add ttl_rules copy_to_metadata 174 => 12195 0 255 93 | table_add ttl_rules copy_to_metadata 173 => 12048 0 255 94 | table_add ttl_rules copy_to_metadata 172 => 11904 0 255 95 | table_add ttl_rules copy_to_metadata 171 => 11764 0 255 96 | table_add ttl_rules copy_to_metadata 170 => 11627 0 255 97 | table_add ttl_rules copy_to_metadata 169 => 11494 0 255 98 | table_add ttl_rules copy_to_metadata 168 => 11363 0 255 99 | table_add ttl_rules copy_to_metadata 167 => 11235 0 255 100 | table_add ttl_rules copy_to_metadata 166 => 11111 0 255 101 | table_add ttl_rules copy_to_metadata 165 => 10989 0 255 102 | table_add ttl_rules copy_to_metadata 164 => 10869 0 255 103 | table_add ttl_rules copy_to_metadata 163 => 10752 0 255 104 | table_add ttl_rules copy_to_metadata 162 => 10638 0 255 105 | table_add ttl_rules copy_to_metadata 161 => 10526 0 255 106 | table_add ttl_rules copy_to_metadata 160 => 10416 0 255 107 | table_add ttl_rules copy_to_metadata 159 => 10309 0 255 108 | table_add ttl_rules copy_to_metadata 158 => 10204 0 255 109 | table_add ttl_rules copy_to_metadata 157 => 10101 0 255 110 | table_add ttl_rules copy_to_metadata 156 => 10000 0 255 111 | table_add ttl_rules copy_to_metadata 155 => 9900 0 255 112 | table_add ttl_rules copy_to_metadata 154 => 9803 0 255 113 | table_add ttl_rules copy_to_metadata 153 => 9708 0 255 114 | table_add ttl_rules copy_to_metadata 152 => 9615 0 255 115 | table_add ttl_rules copy_to_metadata 151 => 9523 0 255 116 | table_add ttl_rules copy_to_metadata 150 => 9433 0 255 117 | table_add ttl_rules copy_to_metadata 149 => 9345 0 255 118 | table_add ttl_rules copy_to_metadata 148 => 9259 0 255 119 | table_add ttl_rules copy_to_metadata 147 => 9174 0 255 120 | table_add ttl_rules copy_to_metadata 146 => 9090 0 255 121 | table_add ttl_rules copy_to_metadata 145 => 9009 0 255 122 | table_add ttl_rules copy_to_metadata 144 => 8928 0 255 123 | table_add ttl_rules copy_to_metadata 143 => 8849 0 255 124 | table_add ttl_rules copy_to_metadata 142 => 8771 0 255 125 | table_add ttl_rules copy_to_metadata 141 => 8695 0 255 126 | table_add ttl_rules copy_to_metadata 140 => 8620 0 255 127 | table_add ttl_rules copy_to_metadata 139 => 8547 0 255 128 | table_add ttl_rules copy_to_metadata 138 => 8474 0 255 129 | table_add ttl_rules copy_to_metadata 137 => 8403 0 255 130 | table_add ttl_rules copy_to_metadata 136 => 8333 0 255 131 | table_add ttl_rules copy_to_metadata 135 => 8264 0 255 132 | table_add ttl_rules copy_to_metadata 134 => 8196 0 255 133 | table_add ttl_rules copy_to_metadata 133 => 8130 0 255 134 | table_add ttl_rules copy_to_metadata 132 => 8064 0 255 135 | table_add ttl_rules copy_to_metadata 131 => 8000 0 255 136 | table_add ttl_rules copy_to_metadata 130 => 7936 0 255 137 | table_add ttl_rules copy_to_metadata 129 => 7874 0 255 138 | table_add ttl_rules copy_to_metadata 128 => 7812 0 255 139 | table_add ttl_rules copy_to_metadata 127 => 7751 0 255 140 | table_add ttl_rules copy_to_metadata 126 => 7692 0 255 141 | table_add ttl_rules copy_to_metadata 125 => 7633 0 255 142 | table_add ttl_rules copy_to_metadata 124 => 7575 0 255 143 | table_add ttl_rules copy_to_metadata 123 => 7518 0 255 144 | table_add ttl_rules copy_to_metadata 122 => 7462 0 255 145 | table_add ttl_rules copy_to_metadata 121 => 7407 0 255 146 | table_add ttl_rules copy_to_metadata 120 => 7352 0 255 147 | table_add ttl_rules copy_to_metadata 119 => 7299 0 255 148 | table_add ttl_rules copy_to_metadata 118 => 7246 0 255 149 | table_add ttl_rules copy_to_metadata 117 => 7194 0 255 150 | table_add ttl_rules copy_to_metadata 116 => 7142 0 255 151 | table_add ttl_rules copy_to_metadata 115 => 7092 0 255 152 | table_add ttl_rules copy_to_metadata 114 => 7042 0 255 153 | table_add ttl_rules copy_to_metadata 113 => 6993 0 255 154 | table_add ttl_rules copy_to_metadata 112 => 6944 0 255 155 | table_add ttl_rules copy_to_metadata 111 => 6896 0 255 156 | table_add ttl_rules copy_to_metadata 110 => 6849 0 255 157 | table_add ttl_rules copy_to_metadata 109 => 6802 0 255 158 | table_add ttl_rules copy_to_metadata 108 => 6756 0 255 159 | table_add ttl_rules copy_to_metadata 107 => 6711 0 255 160 | table_add ttl_rules copy_to_metadata 106 => 6666 0 255 161 | table_add ttl_rules copy_to_metadata 105 => 6622 0 255 162 | table_add ttl_rules copy_to_metadata 104 => 6578 0 255 163 | table_add ttl_rules copy_to_metadata 103 => 6535 0 255 164 | table_add ttl_rules copy_to_metadata 102 => 6493 0 255 165 | table_add ttl_rules copy_to_metadata 101 => 6451 0 255 166 | table_add ttl_rules copy_to_metadata 100 => 6410 0 255 167 | table_add ttl_rules copy_to_metadata 99 => 6369 0 255 168 | table_add ttl_rules copy_to_metadata 98 => 6329 0 255 169 | table_add ttl_rules copy_to_metadata 97 => 6289 0 255 170 | table_add ttl_rules copy_to_metadata 96 => 6250 0 255 171 | table_add ttl_rules copy_to_metadata 95 => 6211 0 255 172 | table_add ttl_rules copy_to_metadata 94 => 6172 0 255 173 | table_add ttl_rules copy_to_metadata 93 => 6134 0 255 174 | table_add ttl_rules copy_to_metadata 92 => 6097 0 255 175 | table_add ttl_rules copy_to_metadata 91 => 6060 0 255 176 | table_add ttl_rules copy_to_metadata 90 => 6024 0 255 177 | table_add ttl_rules copy_to_metadata 89 => 5988 0 255 178 | table_add ttl_rules copy_to_metadata 88 => 5952 0 255 179 | table_add ttl_rules copy_to_metadata 87 => 5917 0 255 180 | table_add ttl_rules copy_to_metadata 86 => 5882 0 255 181 | table_add ttl_rules copy_to_metadata 85 => 5847 0 255 182 | table_add ttl_rules copy_to_metadata 84 => 5813 0 255 183 | table_add ttl_rules copy_to_metadata 83 => 5780 0 255 184 | table_add ttl_rules copy_to_metadata 82 => 5747 0 255 185 | table_add ttl_rules copy_to_metadata 81 => 5714 0 255 186 | table_add ttl_rules copy_to_metadata 80 => 5681 0 255 187 | table_add ttl_rules copy_to_metadata 79 => 5649 0 255 188 | table_add ttl_rules copy_to_metadata 78 => 5617 0 255 189 | table_add ttl_rules copy_to_metadata 77 => 5586 0 255 190 | table_add ttl_rules copy_to_metadata 76 => 5555 0 255 191 | table_add ttl_rules copy_to_metadata 75 => 5524 0 255 192 | table_add ttl_rules copy_to_metadata 74 => 5494 0 255 193 | table_add ttl_rules copy_to_metadata 73 => 5464 0 255 194 | table_add ttl_rules copy_to_metadata 72 => 5434 0 255 195 | table_add ttl_rules copy_to_metadata 71 => 5405 0 255 196 | table_add ttl_rules copy_to_metadata 70 => 5376 0 255 197 | table_add ttl_rules copy_to_metadata 69 => 5347 0 255 198 | table_add ttl_rules copy_to_metadata 68 => 5319 0 255 199 | table_add ttl_rules copy_to_metadata 67 => 5291 0 255 200 | table_add ttl_rules copy_to_metadata 66 => 5263 0 255 201 | table_add ttl_rules copy_to_metadata 65 => 5235 0 255 202 | table_add ttl_rules copy_to_metadata 64 => 5208 0 255 203 | table_add ttl_rules copy_to_metadata 63 => 5181 0 255 204 | table_add ttl_rules copy_to_metadata 62 => 5154 0 255 205 | table_add ttl_rules copy_to_metadata 61 => 5128 0 255 206 | table_add ttl_rules copy_to_metadata 60 => 5102 0 255 207 | table_add ttl_rules copy_to_metadata 59 => 5076 0 255 208 | table_add ttl_rules copy_to_metadata 58 => 5050 0 255 209 | table_add ttl_rules copy_to_metadata 57 => 5025 0 255 210 | table_add ttl_rules copy_to_metadata 56 => 5000 0 255 211 | table_add ttl_rules copy_to_metadata 55 => 4975 0 255 212 | table_add ttl_rules copy_to_metadata 54 => 4950 0 255 213 | table_add ttl_rules copy_to_metadata 53 => 4926 0 255 214 | table_add ttl_rules copy_to_metadata 52 => 4901 0 255 215 | table_add ttl_rules copy_to_metadata 51 => 4878 0 255 216 | table_add ttl_rules copy_to_metadata 50 => 4854 0 255 217 | table_add ttl_rules copy_to_metadata 49 => 4830 0 255 218 | table_add ttl_rules copy_to_metadata 48 => 4807 0 255 219 | table_add ttl_rules copy_to_metadata 47 => 4784 0 255 220 | table_add ttl_rules copy_to_metadata 46 => 4761 0 255 221 | table_add ttl_rules copy_to_metadata 45 => 4739 0 255 222 | table_add ttl_rules copy_to_metadata 44 => 4716 0 255 223 | table_add ttl_rules copy_to_metadata 43 => 4694 0 255 224 | table_add ttl_rules copy_to_metadata 42 => 4672 0 255 225 | table_add ttl_rules copy_to_metadata 41 => 4651 0 255 226 | table_add ttl_rules copy_to_metadata 40 => 4629 0 255 227 | table_add ttl_rules copy_to_metadata 39 => 4608 0 255 228 | table_add ttl_rules copy_to_metadata 38 => 4587 0 255 229 | table_add ttl_rules copy_to_metadata 37 => 4566 0 255 230 | table_add ttl_rules copy_to_metadata 36 => 4545 0 255 231 | table_add ttl_rules copy_to_metadata 35 => 4524 0 255 232 | table_add ttl_rules copy_to_metadata 34 => 4504 0 255 233 | table_add ttl_rules copy_to_metadata 33 => 4484 0 255 234 | table_add ttl_rules copy_to_metadata 32 => 4464 0 255 235 | table_add ttl_rules copy_to_metadata 31 => 4444 0 255 236 | table_add ttl_rules copy_to_metadata 30 => 4424 0 255 237 | table_add ttl_rules copy_to_metadata 29 => 4405 0 255 238 | table_add ttl_rules copy_to_metadata 28 => 4385 0 255 239 | table_add ttl_rules copy_to_metadata 27 => 4366 0 255 240 | table_add ttl_rules copy_to_metadata 26 => 4347 0 255 241 | table_add ttl_rules copy_to_metadata 25 => 4329 0 255 242 | table_add ttl_rules copy_to_metadata 24 => 4310 0 255 243 | table_add ttl_rules copy_to_metadata 23 => 4291 0 255 244 | table_add ttl_rules copy_to_metadata 22 => 4273 0 255 245 | table_add ttl_rules copy_to_metadata 21 => 4255 0 255 246 | table_add ttl_rules copy_to_metadata 20 => 4237 0 255 247 | table_add ttl_rules copy_to_metadata 19 => 4219 0 255 248 | table_add ttl_rules copy_to_metadata 18 => 4201 0 255 249 | table_add ttl_rules copy_to_metadata 17 => 4184 0 255 250 | table_add ttl_rules copy_to_metadata 16 => 4166 0 255 251 | table_add ttl_rules copy_to_metadata 15 => 4149 0 255 252 | table_add ttl_rules copy_to_metadata 14 => 4132 0 255 253 | table_add ttl_rules copy_to_metadata 13 => 4115 0 255 254 | table_add ttl_rules copy_to_metadata 12 => 4098 0 255 255 | table_add ttl_rules copy_to_metadata 11 => 4081 0 255 256 | table_add ttl_rules copy_to_metadata 10 => 4065 0 255 257 | table_add ttl_rules copy_to_metadata 9 => 4048 0 255 258 | table_add ttl_rules copy_to_metadata 8 => 4032 0 255 259 | table_add ttl_rules copy_to_metadata 7 => 4016 0 255 260 | table_add ttl_rules copy_to_metadata 6 => 4000 0 255 261 | table_add ttl_rules copy_to_metadata 5 => 3984 0 255 262 | table_add ttl_rules copy_to_metadata 4 => 3968 0 255 263 | table_add ttl_rules copy_to_metadata 3 => 3952 0 255 264 | table_add ttl_rules copy_to_metadata 2 => 3937 0 255 265 | table_add ttl_rules copy_to_metadata 1 => 3921 0 255 266 | -------------------------------------------------------------------------------- /rules/s1-commands.txt: -------------------------------------------------------------------------------- 1 | table_clear dmac 2 | table_clear ttl_rules 3 | 4 | table_add dmac forward 10.0.0.1 => 1 5 | table_add dmac forward 10.0.0.3 => 3 6 | table_add dmac forward 10.0.0.2 => 3 7 | table_add dmac forward 10.0.0.0 => 2 8 | table_add dmac forward 10.0.0.4 => 3 9 | 10 | 11 | table_add ttl_rules copy_to_metadata 255 => 1000000 1 255 12 | table_add ttl_rules copy_to_metadata 254 => 500000 1 255 13 | table_add ttl_rules copy_to_metadata 253 => 333333 1 255 14 | table_add ttl_rules copy_to_metadata 252 => 250000 1 255 15 | table_add ttl_rules copy_to_metadata 251 => 200000 1 255 16 | table_add ttl_rules copy_to_metadata 250 => 166666 1 255 17 | table_add ttl_rules copy_to_metadata 249 => 142857 1 255 18 | table_add ttl_rules copy_to_metadata 248 => 125000 1 255 19 | table_add ttl_rules copy_to_metadata 247 => 111111 1 255 20 | table_add ttl_rules copy_to_metadata 246 => 100000 1 255 21 | table_add ttl_rules copy_to_metadata 245 => 90909 1 255 22 | table_add ttl_rules copy_to_metadata 244 => 83333 1 255 23 | table_add ttl_rules copy_to_metadata 243 => 76923 1 255 24 | table_add ttl_rules copy_to_metadata 242 => 71428 1 255 25 | table_add ttl_rules copy_to_metadata 241 => 66666 1 255 26 | table_add ttl_rules copy_to_metadata 240 => 62500 1 255 27 | table_add ttl_rules copy_to_metadata 239 => 58823 1 255 28 | table_add ttl_rules copy_to_metadata 238 => 55555 1 255 29 | table_add ttl_rules copy_to_metadata 237 => 52631 1 255 30 | table_add ttl_rules copy_to_metadata 236 => 50000 1 255 31 | table_add ttl_rules copy_to_metadata 235 => 47619 1 255 32 | table_add ttl_rules copy_to_metadata 234 => 45454 1 255 33 | table_add ttl_rules copy_to_metadata 233 => 43478 1 255 34 | table_add ttl_rules copy_to_metadata 232 => 41666 1 255 35 | table_add ttl_rules copy_to_metadata 231 => 40000 1 255 36 | table_add ttl_rules copy_to_metadata 230 => 38461 1 255 37 | table_add ttl_rules copy_to_metadata 229 => 37037 1 255 38 | table_add ttl_rules copy_to_metadata 228 => 35714 1 255 39 | table_add ttl_rules copy_to_metadata 227 => 34482 1 255 40 | table_add ttl_rules copy_to_metadata 226 => 33333 1 255 41 | table_add ttl_rules copy_to_metadata 225 => 32258 1 255 42 | table_add ttl_rules copy_to_metadata 224 => 31250 1 255 43 | table_add ttl_rules copy_to_metadata 223 => 30303 1 255 44 | table_add ttl_rules copy_to_metadata 222 => 29411 1 255 45 | table_add ttl_rules copy_to_metadata 221 => 28571 1 255 46 | table_add ttl_rules copy_to_metadata 220 => 27777 1 255 47 | table_add ttl_rules copy_to_metadata 219 => 27027 1 255 48 | table_add ttl_rules copy_to_metadata 218 => 26315 1 255 49 | table_add ttl_rules copy_to_metadata 217 => 25641 1 255 50 | table_add ttl_rules copy_to_metadata 216 => 25000 1 255 51 | table_add ttl_rules copy_to_metadata 215 => 24390 1 255 52 | table_add ttl_rules copy_to_metadata 214 => 23809 1 255 53 | table_add ttl_rules copy_to_metadata 213 => 23255 1 255 54 | table_add ttl_rules copy_to_metadata 212 => 22727 1 255 55 | table_add ttl_rules copy_to_metadata 211 => 22222 1 255 56 | table_add ttl_rules copy_to_metadata 210 => 21739 1 255 57 | table_add ttl_rules copy_to_metadata 209 => 21276 1 255 58 | table_add ttl_rules copy_to_metadata 208 => 20833 1 255 59 | table_add ttl_rules copy_to_metadata 207 => 20408 1 255 60 | table_add ttl_rules copy_to_metadata 206 => 20000 1 255 61 | table_add ttl_rules copy_to_metadata 205 => 19607 1 255 62 | table_add ttl_rules copy_to_metadata 204 => 19230 1 255 63 | table_add ttl_rules copy_to_metadata 203 => 18867 1 255 64 | table_add ttl_rules copy_to_metadata 202 => 18518 1 255 65 | table_add ttl_rules copy_to_metadata 201 => 18181 1 255 66 | table_add ttl_rules copy_to_metadata 200 => 17857 1 255 67 | table_add ttl_rules copy_to_metadata 199 => 17543 1 255 68 | table_add ttl_rules copy_to_metadata 198 => 17241 1 255 69 | table_add ttl_rules copy_to_metadata 197 => 16949 1 255 70 | table_add ttl_rules copy_to_metadata 196 => 16666 1 255 71 | table_add ttl_rules copy_to_metadata 195 => 16393 1 255 72 | table_add ttl_rules copy_to_metadata 194 => 16129 1 255 73 | table_add ttl_rules copy_to_metadata 193 => 15873 1 255 74 | table_add ttl_rules copy_to_metadata 192 => 15625 1 255 75 | table_add ttl_rules copy_to_metadata 191 => 15384 1 255 76 | table_add ttl_rules copy_to_metadata 190 => 15151 1 255 77 | table_add ttl_rules copy_to_metadata 189 => 14925 1 255 78 | table_add ttl_rules copy_to_metadata 188 => 14705 1 255 79 | table_add ttl_rules copy_to_metadata 187 => 14492 1 255 80 | table_add ttl_rules copy_to_metadata 186 => 14285 1 255 81 | table_add ttl_rules copy_to_metadata 185 => 14084 1 255 82 | table_add ttl_rules copy_to_metadata 184 => 13888 1 255 83 | table_add ttl_rules copy_to_metadata 183 => 13698 1 255 84 | table_add ttl_rules copy_to_metadata 182 => 13513 1 255 85 | table_add ttl_rules copy_to_metadata 181 => 13333 1 255 86 | table_add ttl_rules copy_to_metadata 180 => 13157 1 255 87 | table_add ttl_rules copy_to_metadata 179 => 12987 1 255 88 | table_add ttl_rules copy_to_metadata 178 => 12820 1 255 89 | table_add ttl_rules copy_to_metadata 177 => 12658 1 255 90 | table_add ttl_rules copy_to_metadata 176 => 12500 1 255 91 | table_add ttl_rules copy_to_metadata 175 => 12345 1 255 92 | table_add ttl_rules copy_to_metadata 174 => 12195 1 255 93 | table_add ttl_rules copy_to_metadata 173 => 12048 1 255 94 | table_add ttl_rules copy_to_metadata 172 => 11904 1 255 95 | table_add ttl_rules copy_to_metadata 171 => 11764 1 255 96 | table_add ttl_rules copy_to_metadata 170 => 11627 1 255 97 | table_add ttl_rules copy_to_metadata 169 => 11494 1 255 98 | table_add ttl_rules copy_to_metadata 168 => 11363 1 255 99 | table_add ttl_rules copy_to_metadata 167 => 11235 1 255 100 | table_add ttl_rules copy_to_metadata 166 => 11111 1 255 101 | table_add ttl_rules copy_to_metadata 165 => 10989 1 255 102 | table_add ttl_rules copy_to_metadata 164 => 10869 1 255 103 | table_add ttl_rules copy_to_metadata 163 => 10752 1 255 104 | table_add ttl_rules copy_to_metadata 162 => 10638 1 255 105 | table_add ttl_rules copy_to_metadata 161 => 10526 1 255 106 | table_add ttl_rules copy_to_metadata 160 => 10416 1 255 107 | table_add ttl_rules copy_to_metadata 159 => 10309 1 255 108 | table_add ttl_rules copy_to_metadata 158 => 10204 1 255 109 | table_add ttl_rules copy_to_metadata 157 => 10101 1 255 110 | table_add ttl_rules copy_to_metadata 156 => 10000 1 255 111 | table_add ttl_rules copy_to_metadata 155 => 9900 1 255 112 | table_add ttl_rules copy_to_metadata 154 => 9803 1 255 113 | table_add ttl_rules copy_to_metadata 153 => 9708 1 255 114 | table_add ttl_rules copy_to_metadata 152 => 9615 1 255 115 | table_add ttl_rules copy_to_metadata 151 => 9523 1 255 116 | table_add ttl_rules copy_to_metadata 150 => 9433 1 255 117 | table_add ttl_rules copy_to_metadata 149 => 9345 1 255 118 | table_add ttl_rules copy_to_metadata 148 => 9259 1 255 119 | table_add ttl_rules copy_to_metadata 147 => 9174 1 255 120 | table_add ttl_rules copy_to_metadata 146 => 9090 1 255 121 | table_add ttl_rules copy_to_metadata 145 => 9009 1 255 122 | table_add ttl_rules copy_to_metadata 144 => 8928 1 255 123 | table_add ttl_rules copy_to_metadata 143 => 8849 1 255 124 | table_add ttl_rules copy_to_metadata 142 => 8771 1 255 125 | table_add ttl_rules copy_to_metadata 141 => 8695 1 255 126 | table_add ttl_rules copy_to_metadata 140 => 8620 1 255 127 | table_add ttl_rules copy_to_metadata 139 => 8547 1 255 128 | table_add ttl_rules copy_to_metadata 138 => 8474 1 255 129 | table_add ttl_rules copy_to_metadata 137 => 8403 1 255 130 | table_add ttl_rules copy_to_metadata 136 => 8333 1 255 131 | table_add ttl_rules copy_to_metadata 135 => 8264 1 255 132 | table_add ttl_rules copy_to_metadata 134 => 8196 1 255 133 | table_add ttl_rules copy_to_metadata 133 => 8130 1 255 134 | table_add ttl_rules copy_to_metadata 132 => 8064 1 255 135 | table_add ttl_rules copy_to_metadata 131 => 8000 1 255 136 | table_add ttl_rules copy_to_metadata 130 => 7936 1 255 137 | table_add ttl_rules copy_to_metadata 129 => 7874 1 255 138 | table_add ttl_rules copy_to_metadata 128 => 7812 1 255 139 | table_add ttl_rules copy_to_metadata 127 => 7751 1 255 140 | table_add ttl_rules copy_to_metadata 126 => 7692 1 255 141 | table_add ttl_rules copy_to_metadata 125 => 7633 1 255 142 | table_add ttl_rules copy_to_metadata 124 => 7575 1 255 143 | table_add ttl_rules copy_to_metadata 123 => 7518 1 255 144 | table_add ttl_rules copy_to_metadata 122 => 7462 1 255 145 | table_add ttl_rules copy_to_metadata 121 => 7407 1 255 146 | table_add ttl_rules copy_to_metadata 120 => 7352 1 255 147 | table_add ttl_rules copy_to_metadata 119 => 7299 1 255 148 | table_add ttl_rules copy_to_metadata 118 => 7246 1 255 149 | table_add ttl_rules copy_to_metadata 117 => 7194 1 255 150 | table_add ttl_rules copy_to_metadata 116 => 7142 1 255 151 | table_add ttl_rules copy_to_metadata 115 => 7092 1 255 152 | table_add ttl_rules copy_to_metadata 114 => 7042 1 255 153 | table_add ttl_rules copy_to_metadata 113 => 6993 1 255 154 | table_add ttl_rules copy_to_metadata 112 => 6944 1 255 155 | table_add ttl_rules copy_to_metadata 111 => 6896 1 255 156 | table_add ttl_rules copy_to_metadata 110 => 6849 1 255 157 | table_add ttl_rules copy_to_metadata 109 => 6802 1 255 158 | table_add ttl_rules copy_to_metadata 108 => 6756 1 255 159 | table_add ttl_rules copy_to_metadata 107 => 6711 1 255 160 | table_add ttl_rules copy_to_metadata 106 => 6666 1 255 161 | table_add ttl_rules copy_to_metadata 105 => 6622 1 255 162 | table_add ttl_rules copy_to_metadata 104 => 6578 1 255 163 | table_add ttl_rules copy_to_metadata 103 => 6535 1 255 164 | table_add ttl_rules copy_to_metadata 102 => 6493 1 255 165 | table_add ttl_rules copy_to_metadata 101 => 6451 1 255 166 | table_add ttl_rules copy_to_metadata 100 => 6410 1 255 167 | table_add ttl_rules copy_to_metadata 99 => 6369 1 255 168 | table_add ttl_rules copy_to_metadata 98 => 6329 1 255 169 | table_add ttl_rules copy_to_metadata 97 => 6289 1 255 170 | table_add ttl_rules copy_to_metadata 96 => 6250 1 255 171 | table_add ttl_rules copy_to_metadata 95 => 6211 1 255 172 | table_add ttl_rules copy_to_metadata 94 => 6172 1 255 173 | table_add ttl_rules copy_to_metadata 93 => 6134 1 255 174 | table_add ttl_rules copy_to_metadata 92 => 6097 1 255 175 | table_add ttl_rules copy_to_metadata 91 => 6060 1 255 176 | table_add ttl_rules copy_to_metadata 90 => 6024 1 255 177 | table_add ttl_rules copy_to_metadata 89 => 5988 1 255 178 | table_add ttl_rules copy_to_metadata 88 => 5952 1 255 179 | table_add ttl_rules copy_to_metadata 87 => 5917 1 255 180 | table_add ttl_rules copy_to_metadata 86 => 5882 1 255 181 | table_add ttl_rules copy_to_metadata 85 => 5847 1 255 182 | table_add ttl_rules copy_to_metadata 84 => 5813 1 255 183 | table_add ttl_rules copy_to_metadata 83 => 5780 1 255 184 | table_add ttl_rules copy_to_metadata 82 => 5747 1 255 185 | table_add ttl_rules copy_to_metadata 81 => 5714 1 255 186 | table_add ttl_rules copy_to_metadata 80 => 5681 1 255 187 | table_add ttl_rules copy_to_metadata 79 => 5649 1 255 188 | table_add ttl_rules copy_to_metadata 78 => 5617 1 255 189 | table_add ttl_rules copy_to_metadata 77 => 5586 1 255 190 | table_add ttl_rules copy_to_metadata 76 => 5555 1 255 191 | table_add ttl_rules copy_to_metadata 75 => 5524 1 255 192 | table_add ttl_rules copy_to_metadata 74 => 5494 1 255 193 | table_add ttl_rules copy_to_metadata 73 => 5464 1 255 194 | table_add ttl_rules copy_to_metadata 72 => 5434 1 255 195 | table_add ttl_rules copy_to_metadata 71 => 5405 1 255 196 | table_add ttl_rules copy_to_metadata 70 => 5376 1 255 197 | table_add ttl_rules copy_to_metadata 69 => 5347 1 255 198 | table_add ttl_rules copy_to_metadata 68 => 5319 1 255 199 | table_add ttl_rules copy_to_metadata 67 => 5291 1 255 200 | table_add ttl_rules copy_to_metadata 66 => 5263 1 255 201 | table_add ttl_rules copy_to_metadata 65 => 5235 1 255 202 | table_add ttl_rules copy_to_metadata 64 => 5208 1 255 203 | table_add ttl_rules copy_to_metadata 63 => 5181 1 255 204 | table_add ttl_rules copy_to_metadata 62 => 5154 1 255 205 | table_add ttl_rules copy_to_metadata 61 => 5128 1 255 206 | table_add ttl_rules copy_to_metadata 60 => 5102 1 255 207 | table_add ttl_rules copy_to_metadata 59 => 5076 1 255 208 | table_add ttl_rules copy_to_metadata 58 => 5050 1 255 209 | table_add ttl_rules copy_to_metadata 57 => 5025 1 255 210 | table_add ttl_rules copy_to_metadata 56 => 5000 1 255 211 | table_add ttl_rules copy_to_metadata 55 => 4975 1 255 212 | table_add ttl_rules copy_to_metadata 54 => 4950 1 255 213 | table_add ttl_rules copy_to_metadata 53 => 4926 1 255 214 | table_add ttl_rules copy_to_metadata 52 => 4901 1 255 215 | table_add ttl_rules copy_to_metadata 51 => 4878 1 255 216 | table_add ttl_rules copy_to_metadata 50 => 4854 1 255 217 | table_add ttl_rules copy_to_metadata 49 => 4830 1 255 218 | table_add ttl_rules copy_to_metadata 48 => 4807 1 255 219 | table_add ttl_rules copy_to_metadata 47 => 4784 1 255 220 | table_add ttl_rules copy_to_metadata 46 => 4761 1 255 221 | table_add ttl_rules copy_to_metadata 45 => 4739 1 255 222 | table_add ttl_rules copy_to_metadata 44 => 4716 1 255 223 | table_add ttl_rules copy_to_metadata 43 => 4694 1 255 224 | table_add ttl_rules copy_to_metadata 42 => 4672 1 255 225 | table_add ttl_rules copy_to_metadata 41 => 4651 1 255 226 | table_add ttl_rules copy_to_metadata 40 => 4629 1 255 227 | table_add ttl_rules copy_to_metadata 39 => 4608 1 255 228 | table_add ttl_rules copy_to_metadata 38 => 4587 1 255 229 | table_add ttl_rules copy_to_metadata 37 => 4566 1 255 230 | table_add ttl_rules copy_to_metadata 36 => 4545 1 255 231 | table_add ttl_rules copy_to_metadata 35 => 4524 1 255 232 | table_add ttl_rules copy_to_metadata 34 => 4504 1 255 233 | table_add ttl_rules copy_to_metadata 33 => 4484 1 255 234 | table_add ttl_rules copy_to_metadata 32 => 4464 1 255 235 | table_add ttl_rules copy_to_metadata 31 => 4444 1 255 236 | table_add ttl_rules copy_to_metadata 30 => 4424 1 255 237 | table_add ttl_rules copy_to_metadata 29 => 4405 1 255 238 | table_add ttl_rules copy_to_metadata 28 => 4385 1 255 239 | table_add ttl_rules copy_to_metadata 27 => 4366 1 255 240 | table_add ttl_rules copy_to_metadata 26 => 4347 1 255 241 | table_add ttl_rules copy_to_metadata 25 => 4329 1 255 242 | table_add ttl_rules copy_to_metadata 24 => 4310 1 255 243 | table_add ttl_rules copy_to_metadata 23 => 4291 1 255 244 | table_add ttl_rules copy_to_metadata 22 => 4273 1 255 245 | table_add ttl_rules copy_to_metadata 21 => 4255 1 255 246 | table_add ttl_rules copy_to_metadata 20 => 4237 1 255 247 | table_add ttl_rules copy_to_metadata 19 => 4219 1 255 248 | table_add ttl_rules copy_to_metadata 18 => 4201 1 255 249 | table_add ttl_rules copy_to_metadata 17 => 4184 1 255 250 | table_add ttl_rules copy_to_metadata 16 => 4166 1 255 251 | table_add ttl_rules copy_to_metadata 15 => 4149 1 255 252 | table_add ttl_rules copy_to_metadata 14 => 4132 1 255 253 | table_add ttl_rules copy_to_metadata 13 => 4115 1 255 254 | table_add ttl_rules copy_to_metadata 12 => 4098 1 255 255 | table_add ttl_rules copy_to_metadata 11 => 4081 1 255 256 | table_add ttl_rules copy_to_metadata 10 => 4065 1 255 257 | table_add ttl_rules copy_to_metadata 9 => 4048 1 255 258 | table_add ttl_rules copy_to_metadata 8 => 4032 1 255 259 | table_add ttl_rules copy_to_metadata 7 => 4016 1 255 260 | table_add ttl_rules copy_to_metadata 6 => 4000 1 255 261 | table_add ttl_rules copy_to_metadata 5 => 3984 1 255 262 | table_add ttl_rules copy_to_metadata 4 => 3968 1 255 263 | table_add ttl_rules copy_to_metadata 3 => 3952 1 255 264 | table_add ttl_rules copy_to_metadata 2 => 3937 1 255 265 | table_add ttl_rules copy_to_metadata 1 => 3921 1 255 266 | -------------------------------------------------------------------------------- /rules/s2-commands.txt: -------------------------------------------------------------------------------- 1 | table_clear dmac 2 | table_clear ttl_rules 3 | 4 | table_add dmac forward 10.0.0.2 => 1 5 | table_add dmac forward 10.0.0.3 => 2 6 | table_add dmac forward 10.0.0.1 => 3 7 | table_add dmac forward 10.0.0.0 => 3 8 | table_add dmac forward 10.0.0.4 => 2 9 | 10 | 11 | table_add ttl_rules copy_to_metadata 255 => 1000000 2 255 12 | table_add ttl_rules copy_to_metadata 254 => 500000 2 255 13 | table_add ttl_rules copy_to_metadata 253 => 333333 2 255 14 | table_add ttl_rules copy_to_metadata 252 => 250000 2 255 15 | table_add ttl_rules copy_to_metadata 251 => 200000 2 255 16 | table_add ttl_rules copy_to_metadata 250 => 166666 2 255 17 | table_add ttl_rules copy_to_metadata 249 => 142857 2 255 18 | table_add ttl_rules copy_to_metadata 248 => 125000 2 255 19 | table_add ttl_rules copy_to_metadata 247 => 111111 2 255 20 | table_add ttl_rules copy_to_metadata 246 => 100000 2 255 21 | table_add ttl_rules copy_to_metadata 245 => 90909 2 255 22 | table_add ttl_rules copy_to_metadata 244 => 83333 2 255 23 | table_add ttl_rules copy_to_metadata 243 => 76923 2 255 24 | table_add ttl_rules copy_to_metadata 242 => 71428 2 255 25 | table_add ttl_rules copy_to_metadata 241 => 66666 2 255 26 | table_add ttl_rules copy_to_metadata 240 => 62500 2 255 27 | table_add ttl_rules copy_to_metadata 239 => 58823 2 255 28 | table_add ttl_rules copy_to_metadata 238 => 55555 2 255 29 | table_add ttl_rules copy_to_metadata 237 => 52631 2 255 30 | table_add ttl_rules copy_to_metadata 236 => 50000 2 255 31 | table_add ttl_rules copy_to_metadata 235 => 47619 2 255 32 | table_add ttl_rules copy_to_metadata 234 => 45454 2 255 33 | table_add ttl_rules copy_to_metadata 233 => 43478 2 255 34 | table_add ttl_rules copy_to_metadata 232 => 41666 2 255 35 | table_add ttl_rules copy_to_metadata 231 => 40000 2 255 36 | table_add ttl_rules copy_to_metadata 230 => 38461 2 255 37 | table_add ttl_rules copy_to_metadata 229 => 37037 2 255 38 | table_add ttl_rules copy_to_metadata 228 => 35714 2 255 39 | table_add ttl_rules copy_to_metadata 227 => 34482 2 255 40 | table_add ttl_rules copy_to_metadata 226 => 33333 2 255 41 | table_add ttl_rules copy_to_metadata 225 => 32258 2 255 42 | table_add ttl_rules copy_to_metadata 224 => 31250 2 255 43 | table_add ttl_rules copy_to_metadata 223 => 30303 2 255 44 | table_add ttl_rules copy_to_metadata 222 => 29411 2 255 45 | table_add ttl_rules copy_to_metadata 221 => 28571 2 255 46 | table_add ttl_rules copy_to_metadata 220 => 27777 2 255 47 | table_add ttl_rules copy_to_metadata 219 => 27027 2 255 48 | table_add ttl_rules copy_to_metadata 218 => 26315 2 255 49 | table_add ttl_rules copy_to_metadata 217 => 25641 2 255 50 | table_add ttl_rules copy_to_metadata 216 => 25000 2 255 51 | table_add ttl_rules copy_to_metadata 215 => 24390 2 255 52 | table_add ttl_rules copy_to_metadata 214 => 23809 2 255 53 | table_add ttl_rules copy_to_metadata 213 => 23255 2 255 54 | table_add ttl_rules copy_to_metadata 212 => 22727 2 255 55 | table_add ttl_rules copy_to_metadata 211 => 22222 2 255 56 | table_add ttl_rules copy_to_metadata 210 => 21739 2 255 57 | table_add ttl_rules copy_to_metadata 209 => 21276 2 255 58 | table_add ttl_rules copy_to_metadata 208 => 20833 2 255 59 | table_add ttl_rules copy_to_metadata 207 => 20408 2 255 60 | table_add ttl_rules copy_to_metadata 206 => 20000 2 255 61 | table_add ttl_rules copy_to_metadata 205 => 19607 2 255 62 | table_add ttl_rules copy_to_metadata 204 => 19230 2 255 63 | table_add ttl_rules copy_to_metadata 203 => 18867 2 255 64 | table_add ttl_rules copy_to_metadata 202 => 18518 2 255 65 | table_add ttl_rules copy_to_metadata 201 => 18181 2 255 66 | table_add ttl_rules copy_to_metadata 200 => 17857 2 255 67 | table_add ttl_rules copy_to_metadata 199 => 17543 2 255 68 | table_add ttl_rules copy_to_metadata 198 => 17241 2 255 69 | table_add ttl_rules copy_to_metadata 197 => 16949 2 255 70 | table_add ttl_rules copy_to_metadata 196 => 16666 2 255 71 | table_add ttl_rules copy_to_metadata 195 => 16393 2 255 72 | table_add ttl_rules copy_to_metadata 194 => 16129 2 255 73 | table_add ttl_rules copy_to_metadata 193 => 15873 2 255 74 | table_add ttl_rules copy_to_metadata 192 => 15625 2 255 75 | table_add ttl_rules copy_to_metadata 191 => 15384 2 255 76 | table_add ttl_rules copy_to_metadata 190 => 15151 2 255 77 | table_add ttl_rules copy_to_metadata 189 => 14925 2 255 78 | table_add ttl_rules copy_to_metadata 188 => 14705 2 255 79 | table_add ttl_rules copy_to_metadata 187 => 14492 2 255 80 | table_add ttl_rules copy_to_metadata 186 => 14285 2 255 81 | table_add ttl_rules copy_to_metadata 185 => 14084 2 255 82 | table_add ttl_rules copy_to_metadata 184 => 13888 2 255 83 | table_add ttl_rules copy_to_metadata 183 => 13698 2 255 84 | table_add ttl_rules copy_to_metadata 182 => 13513 2 255 85 | table_add ttl_rules copy_to_metadata 181 => 13333 2 255 86 | table_add ttl_rules copy_to_metadata 180 => 13157 2 255 87 | table_add ttl_rules copy_to_metadata 179 => 12987 2 255 88 | table_add ttl_rules copy_to_metadata 178 => 12820 2 255 89 | table_add ttl_rules copy_to_metadata 177 => 12658 2 255 90 | table_add ttl_rules copy_to_metadata 176 => 12500 2 255 91 | table_add ttl_rules copy_to_metadata 175 => 12345 2 255 92 | table_add ttl_rules copy_to_metadata 174 => 12195 2 255 93 | table_add ttl_rules copy_to_metadata 173 => 12048 2 255 94 | table_add ttl_rules copy_to_metadata 172 => 11904 2 255 95 | table_add ttl_rules copy_to_metadata 171 => 11764 2 255 96 | table_add ttl_rules copy_to_metadata 170 => 11627 2 255 97 | table_add ttl_rules copy_to_metadata 169 => 11494 2 255 98 | table_add ttl_rules copy_to_metadata 168 => 11363 2 255 99 | table_add ttl_rules copy_to_metadata 167 => 11235 2 255 100 | table_add ttl_rules copy_to_metadata 166 => 11111 2 255 101 | table_add ttl_rules copy_to_metadata 165 => 10989 2 255 102 | table_add ttl_rules copy_to_metadata 164 => 10869 2 255 103 | table_add ttl_rules copy_to_metadata 163 => 10752 2 255 104 | table_add ttl_rules copy_to_metadata 162 => 10638 2 255 105 | table_add ttl_rules copy_to_metadata 161 => 10526 2 255 106 | table_add ttl_rules copy_to_metadata 160 => 10416 2 255 107 | table_add ttl_rules copy_to_metadata 159 => 10309 2 255 108 | table_add ttl_rules copy_to_metadata 158 => 10204 2 255 109 | table_add ttl_rules copy_to_metadata 157 => 10101 2 255 110 | table_add ttl_rules copy_to_metadata 156 => 10000 2 255 111 | table_add ttl_rules copy_to_metadata 155 => 9900 2 255 112 | table_add ttl_rules copy_to_metadata 154 => 9803 2 255 113 | table_add ttl_rules copy_to_metadata 153 => 9708 2 255 114 | table_add ttl_rules copy_to_metadata 152 => 9615 2 255 115 | table_add ttl_rules copy_to_metadata 151 => 9523 2 255 116 | table_add ttl_rules copy_to_metadata 150 => 9433 2 255 117 | table_add ttl_rules copy_to_metadata 149 => 9345 2 255 118 | table_add ttl_rules copy_to_metadata 148 => 9259 2 255 119 | table_add ttl_rules copy_to_metadata 147 => 9174 2 255 120 | table_add ttl_rules copy_to_metadata 146 => 9090 2 255 121 | table_add ttl_rules copy_to_metadata 145 => 9009 2 255 122 | table_add ttl_rules copy_to_metadata 144 => 8928 2 255 123 | table_add ttl_rules copy_to_metadata 143 => 8849 2 255 124 | table_add ttl_rules copy_to_metadata 142 => 8771 2 255 125 | table_add ttl_rules copy_to_metadata 141 => 8695 2 255 126 | table_add ttl_rules copy_to_metadata 140 => 8620 2 255 127 | table_add ttl_rules copy_to_metadata 139 => 8547 2 255 128 | table_add ttl_rules copy_to_metadata 138 => 8474 2 255 129 | table_add ttl_rules copy_to_metadata 137 => 8403 2 255 130 | table_add ttl_rules copy_to_metadata 136 => 8333 2 255 131 | table_add ttl_rules copy_to_metadata 135 => 8264 2 255 132 | table_add ttl_rules copy_to_metadata 134 => 8196 2 255 133 | table_add ttl_rules copy_to_metadata 133 => 8130 2 255 134 | table_add ttl_rules copy_to_metadata 132 => 8064 2 255 135 | table_add ttl_rules copy_to_metadata 131 => 8000 2 255 136 | table_add ttl_rules copy_to_metadata 130 => 7936 2 255 137 | table_add ttl_rules copy_to_metadata 129 => 7874 2 255 138 | table_add ttl_rules copy_to_metadata 128 => 7812 2 255 139 | table_add ttl_rules copy_to_metadata 127 => 7751 2 255 140 | table_add ttl_rules copy_to_metadata 126 => 7692 2 255 141 | table_add ttl_rules copy_to_metadata 125 => 7633 2 255 142 | table_add ttl_rules copy_to_metadata 124 => 7575 2 255 143 | table_add ttl_rules copy_to_metadata 123 => 7518 2 255 144 | table_add ttl_rules copy_to_metadata 122 => 7462 2 255 145 | table_add ttl_rules copy_to_metadata 121 => 7407 2 255 146 | table_add ttl_rules copy_to_metadata 120 => 7352 2 255 147 | table_add ttl_rules copy_to_metadata 119 => 7299 2 255 148 | table_add ttl_rules copy_to_metadata 118 => 7246 2 255 149 | table_add ttl_rules copy_to_metadata 117 => 7194 2 255 150 | table_add ttl_rules copy_to_metadata 116 => 7142 2 255 151 | table_add ttl_rules copy_to_metadata 115 => 7092 2 255 152 | table_add ttl_rules copy_to_metadata 114 => 7042 2 255 153 | table_add ttl_rules copy_to_metadata 113 => 6993 2 255 154 | table_add ttl_rules copy_to_metadata 112 => 6944 2 255 155 | table_add ttl_rules copy_to_metadata 111 => 6896 2 255 156 | table_add ttl_rules copy_to_metadata 110 => 6849 2 255 157 | table_add ttl_rules copy_to_metadata 109 => 6802 2 255 158 | table_add ttl_rules copy_to_metadata 108 => 6756 2 255 159 | table_add ttl_rules copy_to_metadata 107 => 6711 2 255 160 | table_add ttl_rules copy_to_metadata 106 => 6666 2 255 161 | table_add ttl_rules copy_to_metadata 105 => 6622 2 255 162 | table_add ttl_rules copy_to_metadata 104 => 6578 2 255 163 | table_add ttl_rules copy_to_metadata 103 => 6535 2 255 164 | table_add ttl_rules copy_to_metadata 102 => 6493 2 255 165 | table_add ttl_rules copy_to_metadata 101 => 6451 2 255 166 | table_add ttl_rules copy_to_metadata 100 => 6410 2 255 167 | table_add ttl_rules copy_to_metadata 99 => 6369 2 255 168 | table_add ttl_rules copy_to_metadata 98 => 6329 2 255 169 | table_add ttl_rules copy_to_metadata 97 => 6289 2 255 170 | table_add ttl_rules copy_to_metadata 96 => 6250 2 255 171 | table_add ttl_rules copy_to_metadata 95 => 6211 2 255 172 | table_add ttl_rules copy_to_metadata 94 => 6172 2 255 173 | table_add ttl_rules copy_to_metadata 93 => 6134 2 255 174 | table_add ttl_rules copy_to_metadata 92 => 6097 2 255 175 | table_add ttl_rules copy_to_metadata 91 => 6060 2 255 176 | table_add ttl_rules copy_to_metadata 90 => 6024 2 255 177 | table_add ttl_rules copy_to_metadata 89 => 5988 2 255 178 | table_add ttl_rules copy_to_metadata 88 => 5952 2 255 179 | table_add ttl_rules copy_to_metadata 87 => 5917 2 255 180 | table_add ttl_rules copy_to_metadata 86 => 5882 2 255 181 | table_add ttl_rules copy_to_metadata 85 => 5847 2 255 182 | table_add ttl_rules copy_to_metadata 84 => 5813 2 255 183 | table_add ttl_rules copy_to_metadata 83 => 5780 2 255 184 | table_add ttl_rules copy_to_metadata 82 => 5747 2 255 185 | table_add ttl_rules copy_to_metadata 81 => 5714 2 255 186 | table_add ttl_rules copy_to_metadata 80 => 5681 2 255 187 | table_add ttl_rules copy_to_metadata 79 => 5649 2 255 188 | table_add ttl_rules copy_to_metadata 78 => 5617 2 255 189 | table_add ttl_rules copy_to_metadata 77 => 5586 2 255 190 | table_add ttl_rules copy_to_metadata 76 => 5555 2 255 191 | table_add ttl_rules copy_to_metadata 75 => 5524 2 255 192 | table_add ttl_rules copy_to_metadata 74 => 5494 2 255 193 | table_add ttl_rules copy_to_metadata 73 => 5464 2 255 194 | table_add ttl_rules copy_to_metadata 72 => 5434 2 255 195 | table_add ttl_rules copy_to_metadata 71 => 5405 2 255 196 | table_add ttl_rules copy_to_metadata 70 => 5376 2 255 197 | table_add ttl_rules copy_to_metadata 69 => 5347 2 255 198 | table_add ttl_rules copy_to_metadata 68 => 5319 2 255 199 | table_add ttl_rules copy_to_metadata 67 => 5291 2 255 200 | table_add ttl_rules copy_to_metadata 66 => 5263 2 255 201 | table_add ttl_rules copy_to_metadata 65 => 5235 2 255 202 | table_add ttl_rules copy_to_metadata 64 => 5208 2 255 203 | table_add ttl_rules copy_to_metadata 63 => 5181 2 255 204 | table_add ttl_rules copy_to_metadata 62 => 5154 2 255 205 | table_add ttl_rules copy_to_metadata 61 => 5128 2 255 206 | table_add ttl_rules copy_to_metadata 60 => 5102 2 255 207 | table_add ttl_rules copy_to_metadata 59 => 5076 2 255 208 | table_add ttl_rules copy_to_metadata 58 => 5050 2 255 209 | table_add ttl_rules copy_to_metadata 57 => 5025 2 255 210 | table_add ttl_rules copy_to_metadata 56 => 5000 2 255 211 | table_add ttl_rules copy_to_metadata 55 => 4975 2 255 212 | table_add ttl_rules copy_to_metadata 54 => 4950 2 255 213 | table_add ttl_rules copy_to_metadata 53 => 4926 2 255 214 | table_add ttl_rules copy_to_metadata 52 => 4901 2 255 215 | table_add ttl_rules copy_to_metadata 51 => 4878 2 255 216 | table_add ttl_rules copy_to_metadata 50 => 4854 2 255 217 | table_add ttl_rules copy_to_metadata 49 => 4830 2 255 218 | table_add ttl_rules copy_to_metadata 48 => 4807 2 255 219 | table_add ttl_rules copy_to_metadata 47 => 4784 2 255 220 | table_add ttl_rules copy_to_metadata 46 => 4761 2 255 221 | table_add ttl_rules copy_to_metadata 45 => 4739 2 255 222 | table_add ttl_rules copy_to_metadata 44 => 4716 2 255 223 | table_add ttl_rules copy_to_metadata 43 => 4694 2 255 224 | table_add ttl_rules copy_to_metadata 42 => 4672 2 255 225 | table_add ttl_rules copy_to_metadata 41 => 4651 2 255 226 | table_add ttl_rules copy_to_metadata 40 => 4629 2 255 227 | table_add ttl_rules copy_to_metadata 39 => 4608 2 255 228 | table_add ttl_rules copy_to_metadata 38 => 4587 2 255 229 | table_add ttl_rules copy_to_metadata 37 => 4566 2 255 230 | table_add ttl_rules copy_to_metadata 36 => 4545 2 255 231 | table_add ttl_rules copy_to_metadata 35 => 4524 2 255 232 | table_add ttl_rules copy_to_metadata 34 => 4504 2 255 233 | table_add ttl_rules copy_to_metadata 33 => 4484 2 255 234 | table_add ttl_rules copy_to_metadata 32 => 4464 2 255 235 | table_add ttl_rules copy_to_metadata 31 => 4444 2 255 236 | table_add ttl_rules copy_to_metadata 30 => 4424 2 255 237 | table_add ttl_rules copy_to_metadata 29 => 4405 2 255 238 | table_add ttl_rules copy_to_metadata 28 => 4385 2 255 239 | table_add ttl_rules copy_to_metadata 27 => 4366 2 255 240 | table_add ttl_rules copy_to_metadata 26 => 4347 2 255 241 | table_add ttl_rules copy_to_metadata 25 => 4329 2 255 242 | table_add ttl_rules copy_to_metadata 24 => 4310 2 255 243 | table_add ttl_rules copy_to_metadata 23 => 4291 2 255 244 | table_add ttl_rules copy_to_metadata 22 => 4273 2 255 245 | table_add ttl_rules copy_to_metadata 21 => 4255 2 255 246 | table_add ttl_rules copy_to_metadata 20 => 4237 2 255 247 | table_add ttl_rules copy_to_metadata 19 => 4219 2 255 248 | table_add ttl_rules copy_to_metadata 18 => 4201 2 255 249 | table_add ttl_rules copy_to_metadata 17 => 4184 2 255 250 | table_add ttl_rules copy_to_metadata 16 => 4166 2 255 251 | table_add ttl_rules copy_to_metadata 15 => 4149 2 255 252 | table_add ttl_rules copy_to_metadata 14 => 4132 2 255 253 | table_add ttl_rules copy_to_metadata 13 => 4115 2 255 254 | table_add ttl_rules copy_to_metadata 12 => 4098 2 255 255 | table_add ttl_rules copy_to_metadata 11 => 4081 2 255 256 | table_add ttl_rules copy_to_metadata 10 => 4065 2 255 257 | table_add ttl_rules copy_to_metadata 9 => 4048 2 255 258 | table_add ttl_rules copy_to_metadata 8 => 4032 2 255 259 | table_add ttl_rules copy_to_metadata 7 => 4016 2 255 260 | table_add ttl_rules copy_to_metadata 6 => 4000 2 255 261 | table_add ttl_rules copy_to_metadata 5 => 3984 2 255 262 | table_add ttl_rules copy_to_metadata 4 => 3968 2 255 263 | table_add ttl_rules copy_to_metadata 3 => 3952 2 255 264 | table_add ttl_rules copy_to_metadata 2 => 3937 2 255 265 | table_add ttl_rules copy_to_metadata 1 => 3921 2 255 266 | -------------------------------------------------------------------------------- /rules/s3-commands.txt: -------------------------------------------------------------------------------- 1 | table_clear dmac 2 | table_clear ttl_rules 3 | 4 | table_add dmac forward 10.0.0.3 => 1 5 | table_add dmac forward 10.0.0.2 => 2 6 | table_add dmac forward 10.0.0.1 => 2 7 | table_add dmac forward 10.0.0.0 => 2 8 | table_add dmac forward 10.0.0.4 => 3 9 | 10 | 11 | table_add ttl_rules copy_to_metadata 255 => 1000000 3 255 12 | table_add ttl_rules copy_to_metadata 254 => 500000 3 255 13 | table_add ttl_rules copy_to_metadata 253 => 333333 3 255 14 | table_add ttl_rules copy_to_metadata 252 => 250000 3 255 15 | table_add ttl_rules copy_to_metadata 251 => 200000 3 255 16 | table_add ttl_rules copy_to_metadata 250 => 166666 3 255 17 | table_add ttl_rules copy_to_metadata 249 => 142857 3 255 18 | table_add ttl_rules copy_to_metadata 248 => 125000 3 255 19 | table_add ttl_rules copy_to_metadata 247 => 111111 3 255 20 | table_add ttl_rules copy_to_metadata 246 => 100000 3 255 21 | table_add ttl_rules copy_to_metadata 245 => 90909 3 255 22 | table_add ttl_rules copy_to_metadata 244 => 83333 3 255 23 | table_add ttl_rules copy_to_metadata 243 => 76923 3 255 24 | table_add ttl_rules copy_to_metadata 242 => 71428 3 255 25 | table_add ttl_rules copy_to_metadata 241 => 66666 3 255 26 | table_add ttl_rules copy_to_metadata 240 => 62500 3 255 27 | table_add ttl_rules copy_to_metadata 239 => 58823 3 255 28 | table_add ttl_rules copy_to_metadata 238 => 55555 3 255 29 | table_add ttl_rules copy_to_metadata 237 => 52631 3 255 30 | table_add ttl_rules copy_to_metadata 236 => 50000 3 255 31 | table_add ttl_rules copy_to_metadata 235 => 47619 3 255 32 | table_add ttl_rules copy_to_metadata 234 => 45454 3 255 33 | table_add ttl_rules copy_to_metadata 233 => 43478 3 255 34 | table_add ttl_rules copy_to_metadata 232 => 41666 3 255 35 | table_add ttl_rules copy_to_metadata 231 => 40000 3 255 36 | table_add ttl_rules copy_to_metadata 230 => 38461 3 255 37 | table_add ttl_rules copy_to_metadata 229 => 37037 3 255 38 | table_add ttl_rules copy_to_metadata 228 => 35714 3 255 39 | table_add ttl_rules copy_to_metadata 227 => 34482 3 255 40 | table_add ttl_rules copy_to_metadata 226 => 33333 3 255 41 | table_add ttl_rules copy_to_metadata 225 => 32258 3 255 42 | table_add ttl_rules copy_to_metadata 224 => 31250 3 255 43 | table_add ttl_rules copy_to_metadata 223 => 30303 3 255 44 | table_add ttl_rules copy_to_metadata 222 => 29411 3 255 45 | table_add ttl_rules copy_to_metadata 221 => 28571 3 255 46 | table_add ttl_rules copy_to_metadata 220 => 27777 3 255 47 | table_add ttl_rules copy_to_metadata 219 => 27027 3 255 48 | table_add ttl_rules copy_to_metadata 218 => 26315 3 255 49 | table_add ttl_rules copy_to_metadata 217 => 25641 3 255 50 | table_add ttl_rules copy_to_metadata 216 => 25000 3 255 51 | table_add ttl_rules copy_to_metadata 215 => 24390 3 255 52 | table_add ttl_rules copy_to_metadata 214 => 23809 3 255 53 | table_add ttl_rules copy_to_metadata 213 => 23255 3 255 54 | table_add ttl_rules copy_to_metadata 212 => 22727 3 255 55 | table_add ttl_rules copy_to_metadata 211 => 22222 3 255 56 | table_add ttl_rules copy_to_metadata 210 => 21739 3 255 57 | table_add ttl_rules copy_to_metadata 209 => 21276 3 255 58 | table_add ttl_rules copy_to_metadata 208 => 20833 3 255 59 | table_add ttl_rules copy_to_metadata 207 => 20408 3 255 60 | table_add ttl_rules copy_to_metadata 206 => 20000 3 255 61 | table_add ttl_rules copy_to_metadata 205 => 19607 3 255 62 | table_add ttl_rules copy_to_metadata 204 => 19230 3 255 63 | table_add ttl_rules copy_to_metadata 203 => 18867 3 255 64 | table_add ttl_rules copy_to_metadata 202 => 18518 3 255 65 | table_add ttl_rules copy_to_metadata 201 => 18181 3 255 66 | table_add ttl_rules copy_to_metadata 200 => 17857 3 255 67 | table_add ttl_rules copy_to_metadata 199 => 17543 3 255 68 | table_add ttl_rules copy_to_metadata 198 => 17241 3 255 69 | table_add ttl_rules copy_to_metadata 197 => 16949 3 255 70 | table_add ttl_rules copy_to_metadata 196 => 16666 3 255 71 | table_add ttl_rules copy_to_metadata 195 => 16393 3 255 72 | table_add ttl_rules copy_to_metadata 194 => 16129 3 255 73 | table_add ttl_rules copy_to_metadata 193 => 15873 3 255 74 | table_add ttl_rules copy_to_metadata 192 => 15625 3 255 75 | table_add ttl_rules copy_to_metadata 191 => 15384 3 255 76 | table_add ttl_rules copy_to_metadata 190 => 15151 3 255 77 | table_add ttl_rules copy_to_metadata 189 => 14925 3 255 78 | table_add ttl_rules copy_to_metadata 188 => 14705 3 255 79 | table_add ttl_rules copy_to_metadata 187 => 14492 3 255 80 | table_add ttl_rules copy_to_metadata 186 => 14285 3 255 81 | table_add ttl_rules copy_to_metadata 185 => 14084 3 255 82 | table_add ttl_rules copy_to_metadata 184 => 13888 3 255 83 | table_add ttl_rules copy_to_metadata 183 => 13698 3 255 84 | table_add ttl_rules copy_to_metadata 182 => 13513 3 255 85 | table_add ttl_rules copy_to_metadata 181 => 13333 3 255 86 | table_add ttl_rules copy_to_metadata 180 => 13157 3 255 87 | table_add ttl_rules copy_to_metadata 179 => 12987 3 255 88 | table_add ttl_rules copy_to_metadata 178 => 12820 3 255 89 | table_add ttl_rules copy_to_metadata 177 => 12658 3 255 90 | table_add ttl_rules copy_to_metadata 176 => 12500 3 255 91 | table_add ttl_rules copy_to_metadata 175 => 12345 3 255 92 | table_add ttl_rules copy_to_metadata 174 => 12195 3 255 93 | table_add ttl_rules copy_to_metadata 173 => 12048 3 255 94 | table_add ttl_rules copy_to_metadata 172 => 11904 3 255 95 | table_add ttl_rules copy_to_metadata 171 => 11764 3 255 96 | table_add ttl_rules copy_to_metadata 170 => 11627 3 255 97 | table_add ttl_rules copy_to_metadata 169 => 11494 3 255 98 | table_add ttl_rules copy_to_metadata 168 => 11363 3 255 99 | table_add ttl_rules copy_to_metadata 167 => 11235 3 255 100 | table_add ttl_rules copy_to_metadata 166 => 11111 3 255 101 | table_add ttl_rules copy_to_metadata 165 => 10989 3 255 102 | table_add ttl_rules copy_to_metadata 164 => 10869 3 255 103 | table_add ttl_rules copy_to_metadata 163 => 10752 3 255 104 | table_add ttl_rules copy_to_metadata 162 => 10638 3 255 105 | table_add ttl_rules copy_to_metadata 161 => 10526 3 255 106 | table_add ttl_rules copy_to_metadata 160 => 10416 3 255 107 | table_add ttl_rules copy_to_metadata 159 => 10309 3 255 108 | table_add ttl_rules copy_to_metadata 158 => 10204 3 255 109 | table_add ttl_rules copy_to_metadata 157 => 10101 3 255 110 | table_add ttl_rules copy_to_metadata 156 => 10000 3 255 111 | table_add ttl_rules copy_to_metadata 155 => 9900 3 255 112 | table_add ttl_rules copy_to_metadata 154 => 9803 3 255 113 | table_add ttl_rules copy_to_metadata 153 => 9708 3 255 114 | table_add ttl_rules copy_to_metadata 152 => 9615 3 255 115 | table_add ttl_rules copy_to_metadata 151 => 9523 3 255 116 | table_add ttl_rules copy_to_metadata 150 => 9433 3 255 117 | table_add ttl_rules copy_to_metadata 149 => 9345 3 255 118 | table_add ttl_rules copy_to_metadata 148 => 9259 3 255 119 | table_add ttl_rules copy_to_metadata 147 => 9174 3 255 120 | table_add ttl_rules copy_to_metadata 146 => 9090 3 255 121 | table_add ttl_rules copy_to_metadata 145 => 9009 3 255 122 | table_add ttl_rules copy_to_metadata 144 => 8928 3 255 123 | table_add ttl_rules copy_to_metadata 143 => 8849 3 255 124 | table_add ttl_rules copy_to_metadata 142 => 8771 3 255 125 | table_add ttl_rules copy_to_metadata 141 => 8695 3 255 126 | table_add ttl_rules copy_to_metadata 140 => 8620 3 255 127 | table_add ttl_rules copy_to_metadata 139 => 8547 3 255 128 | table_add ttl_rules copy_to_metadata 138 => 8474 3 255 129 | table_add ttl_rules copy_to_metadata 137 => 8403 3 255 130 | table_add ttl_rules copy_to_metadata 136 => 8333 3 255 131 | table_add ttl_rules copy_to_metadata 135 => 8264 3 255 132 | table_add ttl_rules copy_to_metadata 134 => 8196 3 255 133 | table_add ttl_rules copy_to_metadata 133 => 8130 3 255 134 | table_add ttl_rules copy_to_metadata 132 => 8064 3 255 135 | table_add ttl_rules copy_to_metadata 131 => 8000 3 255 136 | table_add ttl_rules copy_to_metadata 130 => 7936 3 255 137 | table_add ttl_rules copy_to_metadata 129 => 7874 3 255 138 | table_add ttl_rules copy_to_metadata 128 => 7812 3 255 139 | table_add ttl_rules copy_to_metadata 127 => 7751 3 255 140 | table_add ttl_rules copy_to_metadata 126 => 7692 3 255 141 | table_add ttl_rules copy_to_metadata 125 => 7633 3 255 142 | table_add ttl_rules copy_to_metadata 124 => 7575 3 255 143 | table_add ttl_rules copy_to_metadata 123 => 7518 3 255 144 | table_add ttl_rules copy_to_metadata 122 => 7462 3 255 145 | table_add ttl_rules copy_to_metadata 121 => 7407 3 255 146 | table_add ttl_rules copy_to_metadata 120 => 7352 3 255 147 | table_add ttl_rules copy_to_metadata 119 => 7299 3 255 148 | table_add ttl_rules copy_to_metadata 118 => 7246 3 255 149 | table_add ttl_rules copy_to_metadata 117 => 7194 3 255 150 | table_add ttl_rules copy_to_metadata 116 => 7142 3 255 151 | table_add ttl_rules copy_to_metadata 115 => 7092 3 255 152 | table_add ttl_rules copy_to_metadata 114 => 7042 3 255 153 | table_add ttl_rules copy_to_metadata 113 => 6993 3 255 154 | table_add ttl_rules copy_to_metadata 112 => 6944 3 255 155 | table_add ttl_rules copy_to_metadata 111 => 6896 3 255 156 | table_add ttl_rules copy_to_metadata 110 => 6849 3 255 157 | table_add ttl_rules copy_to_metadata 109 => 6802 3 255 158 | table_add ttl_rules copy_to_metadata 108 => 6756 3 255 159 | table_add ttl_rules copy_to_metadata 107 => 6711 3 255 160 | table_add ttl_rules copy_to_metadata 106 => 6666 3 255 161 | table_add ttl_rules copy_to_metadata 105 => 6622 3 255 162 | table_add ttl_rules copy_to_metadata 104 => 6578 3 255 163 | table_add ttl_rules copy_to_metadata 103 => 6535 3 255 164 | table_add ttl_rules copy_to_metadata 102 => 6493 3 255 165 | table_add ttl_rules copy_to_metadata 101 => 6451 3 255 166 | table_add ttl_rules copy_to_metadata 100 => 6410 3 255 167 | table_add ttl_rules copy_to_metadata 99 => 6369 3 255 168 | table_add ttl_rules copy_to_metadata 98 => 6329 3 255 169 | table_add ttl_rules copy_to_metadata 97 => 6289 3 255 170 | table_add ttl_rules copy_to_metadata 96 => 6250 3 255 171 | table_add ttl_rules copy_to_metadata 95 => 6211 3 255 172 | table_add ttl_rules copy_to_metadata 94 => 6172 3 255 173 | table_add ttl_rules copy_to_metadata 93 => 6134 3 255 174 | table_add ttl_rules copy_to_metadata 92 => 6097 3 255 175 | table_add ttl_rules copy_to_metadata 91 => 6060 3 255 176 | table_add ttl_rules copy_to_metadata 90 => 6024 3 255 177 | table_add ttl_rules copy_to_metadata 89 => 5988 3 255 178 | table_add ttl_rules copy_to_metadata 88 => 5952 3 255 179 | table_add ttl_rules copy_to_metadata 87 => 5917 3 255 180 | table_add ttl_rules copy_to_metadata 86 => 5882 3 255 181 | table_add ttl_rules copy_to_metadata 85 => 5847 3 255 182 | table_add ttl_rules copy_to_metadata 84 => 5813 3 255 183 | table_add ttl_rules copy_to_metadata 83 => 5780 3 255 184 | table_add ttl_rules copy_to_metadata 82 => 5747 3 255 185 | table_add ttl_rules copy_to_metadata 81 => 5714 3 255 186 | table_add ttl_rules copy_to_metadata 80 => 5681 3 255 187 | table_add ttl_rules copy_to_metadata 79 => 5649 3 255 188 | table_add ttl_rules copy_to_metadata 78 => 5617 3 255 189 | table_add ttl_rules copy_to_metadata 77 => 5586 3 255 190 | table_add ttl_rules copy_to_metadata 76 => 5555 3 255 191 | table_add ttl_rules copy_to_metadata 75 => 5524 3 255 192 | table_add ttl_rules copy_to_metadata 74 => 5494 3 255 193 | table_add ttl_rules copy_to_metadata 73 => 5464 3 255 194 | table_add ttl_rules copy_to_metadata 72 => 5434 3 255 195 | table_add ttl_rules copy_to_metadata 71 => 5405 3 255 196 | table_add ttl_rules copy_to_metadata 70 => 5376 3 255 197 | table_add ttl_rules copy_to_metadata 69 => 5347 3 255 198 | table_add ttl_rules copy_to_metadata 68 => 5319 3 255 199 | table_add ttl_rules copy_to_metadata 67 => 5291 3 255 200 | table_add ttl_rules copy_to_metadata 66 => 5263 3 255 201 | table_add ttl_rules copy_to_metadata 65 => 5235 3 255 202 | table_add ttl_rules copy_to_metadata 64 => 5208 3 255 203 | table_add ttl_rules copy_to_metadata 63 => 5181 3 255 204 | table_add ttl_rules copy_to_metadata 62 => 5154 3 255 205 | table_add ttl_rules copy_to_metadata 61 => 5128 3 255 206 | table_add ttl_rules copy_to_metadata 60 => 5102 3 255 207 | table_add ttl_rules copy_to_metadata 59 => 5076 3 255 208 | table_add ttl_rules copy_to_metadata 58 => 5050 3 255 209 | table_add ttl_rules copy_to_metadata 57 => 5025 3 255 210 | table_add ttl_rules copy_to_metadata 56 => 5000 3 255 211 | table_add ttl_rules copy_to_metadata 55 => 4975 3 255 212 | table_add ttl_rules copy_to_metadata 54 => 4950 3 255 213 | table_add ttl_rules copy_to_metadata 53 => 4926 3 255 214 | table_add ttl_rules copy_to_metadata 52 => 4901 3 255 215 | table_add ttl_rules copy_to_metadata 51 => 4878 3 255 216 | table_add ttl_rules copy_to_metadata 50 => 4854 3 255 217 | table_add ttl_rules copy_to_metadata 49 => 4830 3 255 218 | table_add ttl_rules copy_to_metadata 48 => 4807 3 255 219 | table_add ttl_rules copy_to_metadata 47 => 4784 3 255 220 | table_add ttl_rules copy_to_metadata 46 => 4761 3 255 221 | table_add ttl_rules copy_to_metadata 45 => 4739 3 255 222 | table_add ttl_rules copy_to_metadata 44 => 4716 3 255 223 | table_add ttl_rules copy_to_metadata 43 => 4694 3 255 224 | table_add ttl_rules copy_to_metadata 42 => 4672 3 255 225 | table_add ttl_rules copy_to_metadata 41 => 4651 3 255 226 | table_add ttl_rules copy_to_metadata 40 => 4629 3 255 227 | table_add ttl_rules copy_to_metadata 39 => 4608 3 255 228 | table_add ttl_rules copy_to_metadata 38 => 4587 3 255 229 | table_add ttl_rules copy_to_metadata 37 => 4566 3 255 230 | table_add ttl_rules copy_to_metadata 36 => 4545 3 255 231 | table_add ttl_rules copy_to_metadata 35 => 4524 3 255 232 | table_add ttl_rules copy_to_metadata 34 => 4504 3 255 233 | table_add ttl_rules copy_to_metadata 33 => 4484 3 255 234 | table_add ttl_rules copy_to_metadata 32 => 4464 3 255 235 | table_add ttl_rules copy_to_metadata 31 => 4444 3 255 236 | table_add ttl_rules copy_to_metadata 30 => 4424 3 255 237 | table_add ttl_rules copy_to_metadata 29 => 4405 3 255 238 | table_add ttl_rules copy_to_metadata 28 => 4385 3 255 239 | table_add ttl_rules copy_to_metadata 27 => 4366 3 255 240 | table_add ttl_rules copy_to_metadata 26 => 4347 3 255 241 | table_add ttl_rules copy_to_metadata 25 => 4329 3 255 242 | table_add ttl_rules copy_to_metadata 24 => 4310 3 255 243 | table_add ttl_rules copy_to_metadata 23 => 4291 3 255 244 | table_add ttl_rules copy_to_metadata 22 => 4273 3 255 245 | table_add ttl_rules copy_to_metadata 21 => 4255 3 255 246 | table_add ttl_rules copy_to_metadata 20 => 4237 3 255 247 | table_add ttl_rules copy_to_metadata 19 => 4219 3 255 248 | table_add ttl_rules copy_to_metadata 18 => 4201 3 255 249 | table_add ttl_rules copy_to_metadata 17 => 4184 3 255 250 | table_add ttl_rules copy_to_metadata 16 => 4166 3 255 251 | table_add ttl_rules copy_to_metadata 15 => 4149 3 255 252 | table_add ttl_rules copy_to_metadata 14 => 4132 3 255 253 | table_add ttl_rules copy_to_metadata 13 => 4115 3 255 254 | table_add ttl_rules copy_to_metadata 12 => 4098 3 255 255 | table_add ttl_rules copy_to_metadata 11 => 4081 3 255 256 | table_add ttl_rules copy_to_metadata 10 => 4065 3 255 257 | table_add ttl_rules copy_to_metadata 9 => 4048 3 255 258 | table_add ttl_rules copy_to_metadata 8 => 4032 3 255 259 | table_add ttl_rules copy_to_metadata 7 => 4016 3 255 260 | table_add ttl_rules copy_to_metadata 6 => 4000 3 255 261 | table_add ttl_rules copy_to_metadata 5 => 3984 3 255 262 | table_add ttl_rules copy_to_metadata 4 => 3968 3 255 263 | table_add ttl_rules copy_to_metadata 3 => 3952 3 255 264 | table_add ttl_rules copy_to_metadata 2 => 3937 3 255 265 | table_add ttl_rules copy_to_metadata 1 => 3921 3 255 266 | -------------------------------------------------------------------------------- /rules/s4-commands.txt: -------------------------------------------------------------------------------- 1 | table_clear dmac 2 | table_clear ttl_rules 3 | 4 | table_add dmac forward 10.0.0.4 => 1 5 | table_add dmac forward 10.0.0.3 => 2 6 | table_add dmac forward 10.0.0.2 => 2 7 | table_add dmac forward 10.0.0.1 => 2 8 | table_add dmac forward 10.0.0.0 => 2 9 | 10 | 11 | table_add ttl_rules copy_to_metadata 255 => 1000000 4 255 12 | table_add ttl_rules copy_to_metadata 254 => 500000 4 255 13 | table_add ttl_rules copy_to_metadata 253 => 333333 4 255 14 | table_add ttl_rules copy_to_metadata 252 => 250000 4 255 15 | table_add ttl_rules copy_to_metadata 251 => 200000 4 255 16 | table_add ttl_rules copy_to_metadata 250 => 166666 4 255 17 | table_add ttl_rules copy_to_metadata 249 => 142857 4 255 18 | table_add ttl_rules copy_to_metadata 248 => 125000 4 255 19 | table_add ttl_rules copy_to_metadata 247 => 111111 4 255 20 | table_add ttl_rules copy_to_metadata 246 => 100000 4 255 21 | table_add ttl_rules copy_to_metadata 245 => 90909 4 255 22 | table_add ttl_rules copy_to_metadata 244 => 83333 4 255 23 | table_add ttl_rules copy_to_metadata 243 => 76923 4 255 24 | table_add ttl_rules copy_to_metadata 242 => 71428 4 255 25 | table_add ttl_rules copy_to_metadata 241 => 66666 4 255 26 | table_add ttl_rules copy_to_metadata 240 => 62500 4 255 27 | table_add ttl_rules copy_to_metadata 239 => 58823 4 255 28 | table_add ttl_rules copy_to_metadata 238 => 55555 4 255 29 | table_add ttl_rules copy_to_metadata 237 => 52631 4 255 30 | table_add ttl_rules copy_to_metadata 236 => 50000 4 255 31 | table_add ttl_rules copy_to_metadata 235 => 47619 4 255 32 | table_add ttl_rules copy_to_metadata 234 => 45454 4 255 33 | table_add ttl_rules copy_to_metadata 233 => 43478 4 255 34 | table_add ttl_rules copy_to_metadata 232 => 41666 4 255 35 | table_add ttl_rules copy_to_metadata 231 => 40000 4 255 36 | table_add ttl_rules copy_to_metadata 230 => 38461 4 255 37 | table_add ttl_rules copy_to_metadata 229 => 37037 4 255 38 | table_add ttl_rules copy_to_metadata 228 => 35714 4 255 39 | table_add ttl_rules copy_to_metadata 227 => 34482 4 255 40 | table_add ttl_rules copy_to_metadata 226 => 33333 4 255 41 | table_add ttl_rules copy_to_metadata 225 => 32258 4 255 42 | table_add ttl_rules copy_to_metadata 224 => 31250 4 255 43 | table_add ttl_rules copy_to_metadata 223 => 30303 4 255 44 | table_add ttl_rules copy_to_metadata 222 => 29411 4 255 45 | table_add ttl_rules copy_to_metadata 221 => 28571 4 255 46 | table_add ttl_rules copy_to_metadata 220 => 27777 4 255 47 | table_add ttl_rules copy_to_metadata 219 => 27027 4 255 48 | table_add ttl_rules copy_to_metadata 218 => 26315 4 255 49 | table_add ttl_rules copy_to_metadata 217 => 25641 4 255 50 | table_add ttl_rules copy_to_metadata 216 => 25000 4 255 51 | table_add ttl_rules copy_to_metadata 215 => 24390 4 255 52 | table_add ttl_rules copy_to_metadata 214 => 23809 4 255 53 | table_add ttl_rules copy_to_metadata 213 => 23255 4 255 54 | table_add ttl_rules copy_to_metadata 212 => 22727 4 255 55 | table_add ttl_rules copy_to_metadata 211 => 22222 4 255 56 | table_add ttl_rules copy_to_metadata 210 => 21739 4 255 57 | table_add ttl_rules copy_to_metadata 209 => 21276 4 255 58 | table_add ttl_rules copy_to_metadata 208 => 20833 4 255 59 | table_add ttl_rules copy_to_metadata 207 => 20408 4 255 60 | table_add ttl_rules copy_to_metadata 206 => 20000 4 255 61 | table_add ttl_rules copy_to_metadata 205 => 19607 4 255 62 | table_add ttl_rules copy_to_metadata 204 => 19230 4 255 63 | table_add ttl_rules copy_to_metadata 203 => 18867 4 255 64 | table_add ttl_rules copy_to_metadata 202 => 18518 4 255 65 | table_add ttl_rules copy_to_metadata 201 => 18181 4 255 66 | table_add ttl_rules copy_to_metadata 200 => 17857 4 255 67 | table_add ttl_rules copy_to_metadata 199 => 17543 4 255 68 | table_add ttl_rules copy_to_metadata 198 => 17241 4 255 69 | table_add ttl_rules copy_to_metadata 197 => 16949 4 255 70 | table_add ttl_rules copy_to_metadata 196 => 16666 4 255 71 | table_add ttl_rules copy_to_metadata 195 => 16393 4 255 72 | table_add ttl_rules copy_to_metadata 194 => 16129 4 255 73 | table_add ttl_rules copy_to_metadata 193 => 15873 4 255 74 | table_add ttl_rules copy_to_metadata 192 => 15625 4 255 75 | table_add ttl_rules copy_to_metadata 191 => 15384 4 255 76 | table_add ttl_rules copy_to_metadata 190 => 15151 4 255 77 | table_add ttl_rules copy_to_metadata 189 => 14925 4 255 78 | table_add ttl_rules copy_to_metadata 188 => 14705 4 255 79 | table_add ttl_rules copy_to_metadata 187 => 14492 4 255 80 | table_add ttl_rules copy_to_metadata 186 => 14285 4 255 81 | table_add ttl_rules copy_to_metadata 185 => 14084 4 255 82 | table_add ttl_rules copy_to_metadata 184 => 13888 4 255 83 | table_add ttl_rules copy_to_metadata 183 => 13698 4 255 84 | table_add ttl_rules copy_to_metadata 182 => 13513 4 255 85 | table_add ttl_rules copy_to_metadata 181 => 13333 4 255 86 | table_add ttl_rules copy_to_metadata 180 => 13157 4 255 87 | table_add ttl_rules copy_to_metadata 179 => 12987 4 255 88 | table_add ttl_rules copy_to_metadata 178 => 12820 4 255 89 | table_add ttl_rules copy_to_metadata 177 => 12658 4 255 90 | table_add ttl_rules copy_to_metadata 176 => 12500 4 255 91 | table_add ttl_rules copy_to_metadata 175 => 12345 4 255 92 | table_add ttl_rules copy_to_metadata 174 => 12195 4 255 93 | table_add ttl_rules copy_to_metadata 173 => 12048 4 255 94 | table_add ttl_rules copy_to_metadata 172 => 11904 4 255 95 | table_add ttl_rules copy_to_metadata 171 => 11764 4 255 96 | table_add ttl_rules copy_to_metadata 170 => 11627 4 255 97 | table_add ttl_rules copy_to_metadata 169 => 11494 4 255 98 | table_add ttl_rules copy_to_metadata 168 => 11363 4 255 99 | table_add ttl_rules copy_to_metadata 167 => 11235 4 255 100 | table_add ttl_rules copy_to_metadata 166 => 11111 4 255 101 | table_add ttl_rules copy_to_metadata 165 => 10989 4 255 102 | table_add ttl_rules copy_to_metadata 164 => 10869 4 255 103 | table_add ttl_rules copy_to_metadata 163 => 10752 4 255 104 | table_add ttl_rules copy_to_metadata 162 => 10638 4 255 105 | table_add ttl_rules copy_to_metadata 161 => 10526 4 255 106 | table_add ttl_rules copy_to_metadata 160 => 10416 4 255 107 | table_add ttl_rules copy_to_metadata 159 => 10309 4 255 108 | table_add ttl_rules copy_to_metadata 158 => 10204 4 255 109 | table_add ttl_rules copy_to_metadata 157 => 10101 4 255 110 | table_add ttl_rules copy_to_metadata 156 => 10000 4 255 111 | table_add ttl_rules copy_to_metadata 155 => 9900 4 255 112 | table_add ttl_rules copy_to_metadata 154 => 9803 4 255 113 | table_add ttl_rules copy_to_metadata 153 => 9708 4 255 114 | table_add ttl_rules copy_to_metadata 152 => 9615 4 255 115 | table_add ttl_rules copy_to_metadata 151 => 9523 4 255 116 | table_add ttl_rules copy_to_metadata 150 => 9433 4 255 117 | table_add ttl_rules copy_to_metadata 149 => 9345 4 255 118 | table_add ttl_rules copy_to_metadata 148 => 9259 4 255 119 | table_add ttl_rules copy_to_metadata 147 => 9174 4 255 120 | table_add ttl_rules copy_to_metadata 146 => 9090 4 255 121 | table_add ttl_rules copy_to_metadata 145 => 9009 4 255 122 | table_add ttl_rules copy_to_metadata 144 => 8928 4 255 123 | table_add ttl_rules copy_to_metadata 143 => 8849 4 255 124 | table_add ttl_rules copy_to_metadata 142 => 8771 4 255 125 | table_add ttl_rules copy_to_metadata 141 => 8695 4 255 126 | table_add ttl_rules copy_to_metadata 140 => 8620 4 255 127 | table_add ttl_rules copy_to_metadata 139 => 8547 4 255 128 | table_add ttl_rules copy_to_metadata 138 => 8474 4 255 129 | table_add ttl_rules copy_to_metadata 137 => 8403 4 255 130 | table_add ttl_rules copy_to_metadata 136 => 8333 4 255 131 | table_add ttl_rules copy_to_metadata 135 => 8264 4 255 132 | table_add ttl_rules copy_to_metadata 134 => 8196 4 255 133 | table_add ttl_rules copy_to_metadata 133 => 8130 4 255 134 | table_add ttl_rules copy_to_metadata 132 => 8064 4 255 135 | table_add ttl_rules copy_to_metadata 131 => 8000 4 255 136 | table_add ttl_rules copy_to_metadata 130 => 7936 4 255 137 | table_add ttl_rules copy_to_metadata 129 => 7874 4 255 138 | table_add ttl_rules copy_to_metadata 128 => 7812 4 255 139 | table_add ttl_rules copy_to_metadata 127 => 7751 4 255 140 | table_add ttl_rules copy_to_metadata 126 => 7692 4 255 141 | table_add ttl_rules copy_to_metadata 125 => 7633 4 255 142 | table_add ttl_rules copy_to_metadata 124 => 7575 4 255 143 | table_add ttl_rules copy_to_metadata 123 => 7518 4 255 144 | table_add ttl_rules copy_to_metadata 122 => 7462 4 255 145 | table_add ttl_rules copy_to_metadata 121 => 7407 4 255 146 | table_add ttl_rules copy_to_metadata 120 => 7352 4 255 147 | table_add ttl_rules copy_to_metadata 119 => 7299 4 255 148 | table_add ttl_rules copy_to_metadata 118 => 7246 4 255 149 | table_add ttl_rules copy_to_metadata 117 => 7194 4 255 150 | table_add ttl_rules copy_to_metadata 116 => 7142 4 255 151 | table_add ttl_rules copy_to_metadata 115 => 7092 4 255 152 | table_add ttl_rules copy_to_metadata 114 => 7042 4 255 153 | table_add ttl_rules copy_to_metadata 113 => 6993 4 255 154 | table_add ttl_rules copy_to_metadata 112 => 6944 4 255 155 | table_add ttl_rules copy_to_metadata 111 => 6896 4 255 156 | table_add ttl_rules copy_to_metadata 110 => 6849 4 255 157 | table_add ttl_rules copy_to_metadata 109 => 6802 4 255 158 | table_add ttl_rules copy_to_metadata 108 => 6756 4 255 159 | table_add ttl_rules copy_to_metadata 107 => 6711 4 255 160 | table_add ttl_rules copy_to_metadata 106 => 6666 4 255 161 | table_add ttl_rules copy_to_metadata 105 => 6622 4 255 162 | table_add ttl_rules copy_to_metadata 104 => 6578 4 255 163 | table_add ttl_rules copy_to_metadata 103 => 6535 4 255 164 | table_add ttl_rules copy_to_metadata 102 => 6493 4 255 165 | table_add ttl_rules copy_to_metadata 101 => 6451 4 255 166 | table_add ttl_rules copy_to_metadata 100 => 6410 4 255 167 | table_add ttl_rules copy_to_metadata 99 => 6369 4 255 168 | table_add ttl_rules copy_to_metadata 98 => 6329 4 255 169 | table_add ttl_rules copy_to_metadata 97 => 6289 4 255 170 | table_add ttl_rules copy_to_metadata 96 => 6250 4 255 171 | table_add ttl_rules copy_to_metadata 95 => 6211 4 255 172 | table_add ttl_rules copy_to_metadata 94 => 6172 4 255 173 | table_add ttl_rules copy_to_metadata 93 => 6134 4 255 174 | table_add ttl_rules copy_to_metadata 92 => 6097 4 255 175 | table_add ttl_rules copy_to_metadata 91 => 6060 4 255 176 | table_add ttl_rules copy_to_metadata 90 => 6024 4 255 177 | table_add ttl_rules copy_to_metadata 89 => 5988 4 255 178 | table_add ttl_rules copy_to_metadata 88 => 5952 4 255 179 | table_add ttl_rules copy_to_metadata 87 => 5917 4 255 180 | table_add ttl_rules copy_to_metadata 86 => 5882 4 255 181 | table_add ttl_rules copy_to_metadata 85 => 5847 4 255 182 | table_add ttl_rules copy_to_metadata 84 => 5813 4 255 183 | table_add ttl_rules copy_to_metadata 83 => 5780 4 255 184 | table_add ttl_rules copy_to_metadata 82 => 5747 4 255 185 | table_add ttl_rules copy_to_metadata 81 => 5714 4 255 186 | table_add ttl_rules copy_to_metadata 80 => 5681 4 255 187 | table_add ttl_rules copy_to_metadata 79 => 5649 4 255 188 | table_add ttl_rules copy_to_metadata 78 => 5617 4 255 189 | table_add ttl_rules copy_to_metadata 77 => 5586 4 255 190 | table_add ttl_rules copy_to_metadata 76 => 5555 4 255 191 | table_add ttl_rules copy_to_metadata 75 => 5524 4 255 192 | table_add ttl_rules copy_to_metadata 74 => 5494 4 255 193 | table_add ttl_rules copy_to_metadata 73 => 5464 4 255 194 | table_add ttl_rules copy_to_metadata 72 => 5434 4 255 195 | table_add ttl_rules copy_to_metadata 71 => 5405 4 255 196 | table_add ttl_rules copy_to_metadata 70 => 5376 4 255 197 | table_add ttl_rules copy_to_metadata 69 => 5347 4 255 198 | table_add ttl_rules copy_to_metadata 68 => 5319 4 255 199 | table_add ttl_rules copy_to_metadata 67 => 5291 4 255 200 | table_add ttl_rules copy_to_metadata 66 => 5263 4 255 201 | table_add ttl_rules copy_to_metadata 65 => 5235 4 255 202 | table_add ttl_rules copy_to_metadata 64 => 5208 4 255 203 | table_add ttl_rules copy_to_metadata 63 => 5181 4 255 204 | table_add ttl_rules copy_to_metadata 62 => 5154 4 255 205 | table_add ttl_rules copy_to_metadata 61 => 5128 4 255 206 | table_add ttl_rules copy_to_metadata 60 => 5102 4 255 207 | table_add ttl_rules copy_to_metadata 59 => 5076 4 255 208 | table_add ttl_rules copy_to_metadata 58 => 5050 4 255 209 | table_add ttl_rules copy_to_metadata 57 => 5025 4 255 210 | table_add ttl_rules copy_to_metadata 56 => 5000 4 255 211 | table_add ttl_rules copy_to_metadata 55 => 4975 4 255 212 | table_add ttl_rules copy_to_metadata 54 => 4950 4 255 213 | table_add ttl_rules copy_to_metadata 53 => 4926 4 255 214 | table_add ttl_rules copy_to_metadata 52 => 4901 4 255 215 | table_add ttl_rules copy_to_metadata 51 => 4878 4 255 216 | table_add ttl_rules copy_to_metadata 50 => 4854 4 255 217 | table_add ttl_rules copy_to_metadata 49 => 4830 4 255 218 | table_add ttl_rules copy_to_metadata 48 => 4807 4 255 219 | table_add ttl_rules copy_to_metadata 47 => 4784 4 255 220 | table_add ttl_rules copy_to_metadata 46 => 4761 4 255 221 | table_add ttl_rules copy_to_metadata 45 => 4739 4 255 222 | table_add ttl_rules copy_to_metadata 44 => 4716 4 255 223 | table_add ttl_rules copy_to_metadata 43 => 4694 4 255 224 | table_add ttl_rules copy_to_metadata 42 => 4672 4 255 225 | table_add ttl_rules copy_to_metadata 41 => 4651 4 255 226 | table_add ttl_rules copy_to_metadata 40 => 4629 4 255 227 | table_add ttl_rules copy_to_metadata 39 => 4608 4 255 228 | table_add ttl_rules copy_to_metadata 38 => 4587 4 255 229 | table_add ttl_rules copy_to_metadata 37 => 4566 4 255 230 | table_add ttl_rules copy_to_metadata 36 => 4545 4 255 231 | table_add ttl_rules copy_to_metadata 35 => 4524 4 255 232 | table_add ttl_rules copy_to_metadata 34 => 4504 4 255 233 | table_add ttl_rules copy_to_metadata 33 => 4484 4 255 234 | table_add ttl_rules copy_to_metadata 32 => 4464 4 255 235 | table_add ttl_rules copy_to_metadata 31 => 4444 4 255 236 | table_add ttl_rules copy_to_metadata 30 => 4424 4 255 237 | table_add ttl_rules copy_to_metadata 29 => 4405 4 255 238 | table_add ttl_rules copy_to_metadata 28 => 4385 4 255 239 | table_add ttl_rules copy_to_metadata 27 => 4366 4 255 240 | table_add ttl_rules copy_to_metadata 26 => 4347 4 255 241 | table_add ttl_rules copy_to_metadata 25 => 4329 4 255 242 | table_add ttl_rules copy_to_metadata 24 => 4310 4 255 243 | table_add ttl_rules copy_to_metadata 23 => 4291 4 255 244 | table_add ttl_rules copy_to_metadata 22 => 4273 4 255 245 | table_add ttl_rules copy_to_metadata 21 => 4255 4 255 246 | table_add ttl_rules copy_to_metadata 20 => 4237 4 255 247 | table_add ttl_rules copy_to_metadata 19 => 4219 4 255 248 | table_add ttl_rules copy_to_metadata 18 => 4201 4 255 249 | table_add ttl_rules copy_to_metadata 17 => 4184 4 255 250 | table_add ttl_rules copy_to_metadata 16 => 4166 4 255 251 | table_add ttl_rules copy_to_metadata 15 => 4149 4 255 252 | table_add ttl_rules copy_to_metadata 14 => 4132 4 255 253 | table_add ttl_rules copy_to_metadata 13 => 4115 4 255 254 | table_add ttl_rules copy_to_metadata 12 => 4098 4 255 255 | table_add ttl_rules copy_to_metadata 11 => 4081 4 255 256 | table_add ttl_rules copy_to_metadata 10 => 4065 4 255 257 | table_add ttl_rules copy_to_metadata 9 => 4048 4 255 258 | table_add ttl_rules copy_to_metadata 8 => 4032 4 255 259 | table_add ttl_rules copy_to_metadata 7 => 4016 4 255 260 | table_add ttl_rules copy_to_metadata 6 => 4000 4 255 261 | table_add ttl_rules copy_to_metadata 5 => 3984 4 255 262 | table_add ttl_rules copy_to_metadata 4 => 3968 4 255 263 | table_add ttl_rules copy_to_metadata 3 => 3952 4 255 264 | table_add ttl_rules copy_to_metadata 2 => 3937 4 255 265 | table_add ttl_rules copy_to_metadata 1 => 3921 4 255 266 | -------------------------------------------------------------------------------- /rules/s5-commands.txt: -------------------------------------------------------------------------------- 1 | table_clear dmac 2 | table_clear ttl_rules 3 | 4 | table_add dmac forward 10.0.0.5 => 1 5 | table_add dmac forward 10.0.0.3 => 3 6 | table_add dmac forward 10.0.0.2 => 3 7 | table_add dmac forward 10.0.0.1 => 3 8 | table_add dmac forward 10.0.0.0 => 3 9 | table_add dmac forward 10.0.0.7 => 2 10 | table_add dmac forward 10.0.0.6 => 2 11 | table_add dmac forward 10.0.0.4 => 3 12 | 13 | 14 | table_add ttl_rules copy_to_metadata 255 => 1000000 5 255 15 | table_add ttl_rules copy_to_metadata 254 => 500000 5 255 16 | table_add ttl_rules copy_to_metadata 253 => 333333 5 255 17 | table_add ttl_rules copy_to_metadata 252 => 250000 5 255 18 | table_add ttl_rules copy_to_metadata 251 => 200000 5 255 19 | table_add ttl_rules copy_to_metadata 250 => 166666 5 255 20 | table_add ttl_rules copy_to_metadata 249 => 142857 5 255 21 | table_add ttl_rules copy_to_metadata 248 => 125000 5 255 22 | table_add ttl_rules copy_to_metadata 247 => 111111 5 255 23 | table_add ttl_rules copy_to_metadata 246 => 100000 5 255 24 | table_add ttl_rules copy_to_metadata 245 => 90909 5 255 25 | table_add ttl_rules copy_to_metadata 244 => 83333 5 255 26 | table_add ttl_rules copy_to_metadata 243 => 76923 5 255 27 | table_add ttl_rules copy_to_metadata 242 => 71428 5 255 28 | table_add ttl_rules copy_to_metadata 241 => 66666 5 255 29 | table_add ttl_rules copy_to_metadata 240 => 62500 5 255 30 | table_add ttl_rules copy_to_metadata 239 => 58823 5 255 31 | table_add ttl_rules copy_to_metadata 238 => 55555 5 255 32 | table_add ttl_rules copy_to_metadata 237 => 52631 5 255 33 | table_add ttl_rules copy_to_metadata 236 => 50000 5 255 34 | table_add ttl_rules copy_to_metadata 235 => 47619 5 255 35 | table_add ttl_rules copy_to_metadata 234 => 45454 5 255 36 | table_add ttl_rules copy_to_metadata 233 => 43478 5 255 37 | table_add ttl_rules copy_to_metadata 232 => 41666 5 255 38 | table_add ttl_rules copy_to_metadata 231 => 40000 5 255 39 | table_add ttl_rules copy_to_metadata 230 => 38461 5 255 40 | table_add ttl_rules copy_to_metadata 229 => 37037 5 255 41 | table_add ttl_rules copy_to_metadata 228 => 35714 5 255 42 | table_add ttl_rules copy_to_metadata 227 => 34482 5 255 43 | table_add ttl_rules copy_to_metadata 226 => 33333 5 255 44 | table_add ttl_rules copy_to_metadata 225 => 32258 5 255 45 | table_add ttl_rules copy_to_metadata 224 => 31250 5 255 46 | table_add ttl_rules copy_to_metadata 223 => 30303 5 255 47 | table_add ttl_rules copy_to_metadata 222 => 29411 5 255 48 | table_add ttl_rules copy_to_metadata 221 => 28571 5 255 49 | table_add ttl_rules copy_to_metadata 220 => 27777 5 255 50 | table_add ttl_rules copy_to_metadata 219 => 27027 5 255 51 | table_add ttl_rules copy_to_metadata 218 => 26315 5 255 52 | table_add ttl_rules copy_to_metadata 217 => 25641 5 255 53 | table_add ttl_rules copy_to_metadata 216 => 25000 5 255 54 | table_add ttl_rules copy_to_metadata 215 => 24390 5 255 55 | table_add ttl_rules copy_to_metadata 214 => 23809 5 255 56 | table_add ttl_rules copy_to_metadata 213 => 23255 5 255 57 | table_add ttl_rules copy_to_metadata 212 => 22727 5 255 58 | table_add ttl_rules copy_to_metadata 211 => 22222 5 255 59 | table_add ttl_rules copy_to_metadata 210 => 21739 5 255 60 | table_add ttl_rules copy_to_metadata 209 => 21276 5 255 61 | table_add ttl_rules copy_to_metadata 208 => 20833 5 255 62 | table_add ttl_rules copy_to_metadata 207 => 20408 5 255 63 | table_add ttl_rules copy_to_metadata 206 => 20000 5 255 64 | table_add ttl_rules copy_to_metadata 205 => 19607 5 255 65 | table_add ttl_rules copy_to_metadata 204 => 19230 5 255 66 | table_add ttl_rules copy_to_metadata 203 => 18867 5 255 67 | table_add ttl_rules copy_to_metadata 202 => 18518 5 255 68 | table_add ttl_rules copy_to_metadata 201 => 18181 5 255 69 | table_add ttl_rules copy_to_metadata 200 => 17857 5 255 70 | table_add ttl_rules copy_to_metadata 199 => 17543 5 255 71 | table_add ttl_rules copy_to_metadata 198 => 17241 5 255 72 | table_add ttl_rules copy_to_metadata 197 => 16949 5 255 73 | table_add ttl_rules copy_to_metadata 196 => 16666 5 255 74 | table_add ttl_rules copy_to_metadata 195 => 16393 5 255 75 | table_add ttl_rules copy_to_metadata 194 => 16129 5 255 76 | table_add ttl_rules copy_to_metadata 193 => 15873 5 255 77 | table_add ttl_rules copy_to_metadata 192 => 15625 5 255 78 | table_add ttl_rules copy_to_metadata 191 => 15384 5 255 79 | table_add ttl_rules copy_to_metadata 190 => 15151 5 255 80 | table_add ttl_rules copy_to_metadata 189 => 14925 5 255 81 | table_add ttl_rules copy_to_metadata 188 => 14705 5 255 82 | table_add ttl_rules copy_to_metadata 187 => 14492 5 255 83 | table_add ttl_rules copy_to_metadata 186 => 14285 5 255 84 | table_add ttl_rules copy_to_metadata 185 => 14084 5 255 85 | table_add ttl_rules copy_to_metadata 184 => 13888 5 255 86 | table_add ttl_rules copy_to_metadata 183 => 13698 5 255 87 | table_add ttl_rules copy_to_metadata 182 => 13513 5 255 88 | table_add ttl_rules copy_to_metadata 181 => 13333 5 255 89 | table_add ttl_rules copy_to_metadata 180 => 13157 5 255 90 | table_add ttl_rules copy_to_metadata 179 => 12987 5 255 91 | table_add ttl_rules copy_to_metadata 178 => 12820 5 255 92 | table_add ttl_rules copy_to_metadata 177 => 12658 5 255 93 | table_add ttl_rules copy_to_metadata 176 => 12500 5 255 94 | table_add ttl_rules copy_to_metadata 175 => 12345 5 255 95 | table_add ttl_rules copy_to_metadata 174 => 12195 5 255 96 | table_add ttl_rules copy_to_metadata 173 => 12048 5 255 97 | table_add ttl_rules copy_to_metadata 172 => 11904 5 255 98 | table_add ttl_rules copy_to_metadata 171 => 11764 5 255 99 | table_add ttl_rules copy_to_metadata 170 => 11627 5 255 100 | table_add ttl_rules copy_to_metadata 169 => 11494 5 255 101 | table_add ttl_rules copy_to_metadata 168 => 11363 5 255 102 | table_add ttl_rules copy_to_metadata 167 => 11235 5 255 103 | table_add ttl_rules copy_to_metadata 166 => 11111 5 255 104 | table_add ttl_rules copy_to_metadata 165 => 10989 5 255 105 | table_add ttl_rules copy_to_metadata 164 => 10869 5 255 106 | table_add ttl_rules copy_to_metadata 163 => 10752 5 255 107 | table_add ttl_rules copy_to_metadata 162 => 10638 5 255 108 | table_add ttl_rules copy_to_metadata 161 => 10526 5 255 109 | table_add ttl_rules copy_to_metadata 160 => 10416 5 255 110 | table_add ttl_rules copy_to_metadata 159 => 10309 5 255 111 | table_add ttl_rules copy_to_metadata 158 => 10204 5 255 112 | table_add ttl_rules copy_to_metadata 157 => 10101 5 255 113 | table_add ttl_rules copy_to_metadata 156 => 10000 5 255 114 | table_add ttl_rules copy_to_metadata 155 => 9900 5 255 115 | table_add ttl_rules copy_to_metadata 154 => 9803 5 255 116 | table_add ttl_rules copy_to_metadata 153 => 9708 5 255 117 | table_add ttl_rules copy_to_metadata 152 => 9615 5 255 118 | table_add ttl_rules copy_to_metadata 151 => 9523 5 255 119 | table_add ttl_rules copy_to_metadata 150 => 9433 5 255 120 | table_add ttl_rules copy_to_metadata 149 => 9345 5 255 121 | table_add ttl_rules copy_to_metadata 148 => 9259 5 255 122 | table_add ttl_rules copy_to_metadata 147 => 9174 5 255 123 | table_add ttl_rules copy_to_metadata 146 => 9090 5 255 124 | table_add ttl_rules copy_to_metadata 145 => 9009 5 255 125 | table_add ttl_rules copy_to_metadata 144 => 8928 5 255 126 | table_add ttl_rules copy_to_metadata 143 => 8849 5 255 127 | table_add ttl_rules copy_to_metadata 142 => 8771 5 255 128 | table_add ttl_rules copy_to_metadata 141 => 8695 5 255 129 | table_add ttl_rules copy_to_metadata 140 => 8620 5 255 130 | table_add ttl_rules copy_to_metadata 139 => 8547 5 255 131 | table_add ttl_rules copy_to_metadata 138 => 8474 5 255 132 | table_add ttl_rules copy_to_metadata 137 => 8403 5 255 133 | table_add ttl_rules copy_to_metadata 136 => 8333 5 255 134 | table_add ttl_rules copy_to_metadata 135 => 8264 5 255 135 | table_add ttl_rules copy_to_metadata 134 => 8196 5 255 136 | table_add ttl_rules copy_to_metadata 133 => 8130 5 255 137 | table_add ttl_rules copy_to_metadata 132 => 8064 5 255 138 | table_add ttl_rules copy_to_metadata 131 => 8000 5 255 139 | table_add ttl_rules copy_to_metadata 130 => 7936 5 255 140 | table_add ttl_rules copy_to_metadata 129 => 7874 5 255 141 | table_add ttl_rules copy_to_metadata 128 => 7812 5 255 142 | table_add ttl_rules copy_to_metadata 127 => 7751 5 255 143 | table_add ttl_rules copy_to_metadata 126 => 7692 5 255 144 | table_add ttl_rules copy_to_metadata 125 => 7633 5 255 145 | table_add ttl_rules copy_to_metadata 124 => 7575 5 255 146 | table_add ttl_rules copy_to_metadata 123 => 7518 5 255 147 | table_add ttl_rules copy_to_metadata 122 => 7462 5 255 148 | table_add ttl_rules copy_to_metadata 121 => 7407 5 255 149 | table_add ttl_rules copy_to_metadata 120 => 7352 5 255 150 | table_add ttl_rules copy_to_metadata 119 => 7299 5 255 151 | table_add ttl_rules copy_to_metadata 118 => 7246 5 255 152 | table_add ttl_rules copy_to_metadata 117 => 7194 5 255 153 | table_add ttl_rules copy_to_metadata 116 => 7142 5 255 154 | table_add ttl_rules copy_to_metadata 115 => 7092 5 255 155 | table_add ttl_rules copy_to_metadata 114 => 7042 5 255 156 | table_add ttl_rules copy_to_metadata 113 => 6993 5 255 157 | table_add ttl_rules copy_to_metadata 112 => 6944 5 255 158 | table_add ttl_rules copy_to_metadata 111 => 6896 5 255 159 | table_add ttl_rules copy_to_metadata 110 => 6849 5 255 160 | table_add ttl_rules copy_to_metadata 109 => 6802 5 255 161 | table_add ttl_rules copy_to_metadata 108 => 6756 5 255 162 | table_add ttl_rules copy_to_metadata 107 => 6711 5 255 163 | table_add ttl_rules copy_to_metadata 106 => 6666 5 255 164 | table_add ttl_rules copy_to_metadata 105 => 6622 5 255 165 | table_add ttl_rules copy_to_metadata 104 => 6578 5 255 166 | table_add ttl_rules copy_to_metadata 103 => 6535 5 255 167 | table_add ttl_rules copy_to_metadata 102 => 6493 5 255 168 | table_add ttl_rules copy_to_metadata 101 => 6451 5 255 169 | table_add ttl_rules copy_to_metadata 100 => 6410 5 255 170 | table_add ttl_rules copy_to_metadata 99 => 6369 5 255 171 | table_add ttl_rules copy_to_metadata 98 => 6329 5 255 172 | table_add ttl_rules copy_to_metadata 97 => 6289 5 255 173 | table_add ttl_rules copy_to_metadata 96 => 6250 5 255 174 | table_add ttl_rules copy_to_metadata 95 => 6211 5 255 175 | table_add ttl_rules copy_to_metadata 94 => 6172 5 255 176 | table_add ttl_rules copy_to_metadata 93 => 6134 5 255 177 | table_add ttl_rules copy_to_metadata 92 => 6097 5 255 178 | table_add ttl_rules copy_to_metadata 91 => 6060 5 255 179 | table_add ttl_rules copy_to_metadata 90 => 6024 5 255 180 | table_add ttl_rules copy_to_metadata 89 => 5988 5 255 181 | table_add ttl_rules copy_to_metadata 88 => 5952 5 255 182 | table_add ttl_rules copy_to_metadata 87 => 5917 5 255 183 | table_add ttl_rules copy_to_metadata 86 => 5882 5 255 184 | table_add ttl_rules copy_to_metadata 85 => 5847 5 255 185 | table_add ttl_rules copy_to_metadata 84 => 5813 5 255 186 | table_add ttl_rules copy_to_metadata 83 => 5780 5 255 187 | table_add ttl_rules copy_to_metadata 82 => 5747 5 255 188 | table_add ttl_rules copy_to_metadata 81 => 5714 5 255 189 | table_add ttl_rules copy_to_metadata 80 => 5681 5 255 190 | table_add ttl_rules copy_to_metadata 79 => 5649 5 255 191 | table_add ttl_rules copy_to_metadata 78 => 5617 5 255 192 | table_add ttl_rules copy_to_metadata 77 => 5586 5 255 193 | table_add ttl_rules copy_to_metadata 76 => 5555 5 255 194 | table_add ttl_rules copy_to_metadata 75 => 5524 5 255 195 | table_add ttl_rules copy_to_metadata 74 => 5494 5 255 196 | table_add ttl_rules copy_to_metadata 73 => 5464 5 255 197 | table_add ttl_rules copy_to_metadata 72 => 5434 5 255 198 | table_add ttl_rules copy_to_metadata 71 => 5405 5 255 199 | table_add ttl_rules copy_to_metadata 70 => 5376 5 255 200 | table_add ttl_rules copy_to_metadata 69 => 5347 5 255 201 | table_add ttl_rules copy_to_metadata 68 => 5319 5 255 202 | table_add ttl_rules copy_to_metadata 67 => 5291 5 255 203 | table_add ttl_rules copy_to_metadata 66 => 5263 5 255 204 | table_add ttl_rules copy_to_metadata 65 => 5235 5 255 205 | table_add ttl_rules copy_to_metadata 64 => 5208 5 255 206 | table_add ttl_rules copy_to_metadata 63 => 5181 5 255 207 | table_add ttl_rules copy_to_metadata 62 => 5154 5 255 208 | table_add ttl_rules copy_to_metadata 61 => 5128 5 255 209 | table_add ttl_rules copy_to_metadata 60 => 5102 5 255 210 | table_add ttl_rules copy_to_metadata 59 => 5076 5 255 211 | table_add ttl_rules copy_to_metadata 58 => 5050 5 255 212 | table_add ttl_rules copy_to_metadata 57 => 5025 5 255 213 | table_add ttl_rules copy_to_metadata 56 => 5000 5 255 214 | table_add ttl_rules copy_to_metadata 55 => 4975 5 255 215 | table_add ttl_rules copy_to_metadata 54 => 4950 5 255 216 | table_add ttl_rules copy_to_metadata 53 => 4926 5 255 217 | table_add ttl_rules copy_to_metadata 52 => 4901 5 255 218 | table_add ttl_rules copy_to_metadata 51 => 4878 5 255 219 | table_add ttl_rules copy_to_metadata 50 => 4854 5 255 220 | table_add ttl_rules copy_to_metadata 49 => 4830 5 255 221 | table_add ttl_rules copy_to_metadata 48 => 4807 5 255 222 | table_add ttl_rules copy_to_metadata 47 => 4784 5 255 223 | table_add ttl_rules copy_to_metadata 46 => 4761 5 255 224 | table_add ttl_rules copy_to_metadata 45 => 4739 5 255 225 | table_add ttl_rules copy_to_metadata 44 => 4716 5 255 226 | table_add ttl_rules copy_to_metadata 43 => 4694 5 255 227 | table_add ttl_rules copy_to_metadata 42 => 4672 5 255 228 | table_add ttl_rules copy_to_metadata 41 => 4651 5 255 229 | table_add ttl_rules copy_to_metadata 40 => 4629 5 255 230 | table_add ttl_rules copy_to_metadata 39 => 4608 5 255 231 | table_add ttl_rules copy_to_metadata 38 => 4587 5 255 232 | table_add ttl_rules copy_to_metadata 37 => 4566 5 255 233 | table_add ttl_rules copy_to_metadata 36 => 4545 5 255 234 | table_add ttl_rules copy_to_metadata 35 => 4524 5 255 235 | table_add ttl_rules copy_to_metadata 34 => 4504 5 255 236 | table_add ttl_rules copy_to_metadata 33 => 4484 5 255 237 | table_add ttl_rules copy_to_metadata 32 => 4464 5 255 238 | table_add ttl_rules copy_to_metadata 31 => 4444 5 255 239 | table_add ttl_rules copy_to_metadata 30 => 4424 5 255 240 | table_add ttl_rules copy_to_metadata 29 => 4405 5 255 241 | table_add ttl_rules copy_to_metadata 28 => 4385 5 255 242 | table_add ttl_rules copy_to_metadata 27 => 4366 5 255 243 | table_add ttl_rules copy_to_metadata 26 => 4347 5 255 244 | table_add ttl_rules copy_to_metadata 25 => 4329 5 255 245 | table_add ttl_rules copy_to_metadata 24 => 4310 5 255 246 | table_add ttl_rules copy_to_metadata 23 => 4291 5 255 247 | table_add ttl_rules copy_to_metadata 22 => 4273 5 255 248 | table_add ttl_rules copy_to_metadata 21 => 4255 5 255 249 | table_add ttl_rules copy_to_metadata 20 => 4237 5 255 250 | table_add ttl_rules copy_to_metadata 19 => 4219 5 255 251 | table_add ttl_rules copy_to_metadata 18 => 4201 5 255 252 | table_add ttl_rules copy_to_metadata 17 => 4184 5 255 253 | table_add ttl_rules copy_to_metadata 16 => 4166 5 255 254 | table_add ttl_rules copy_to_metadata 15 => 4149 5 255 255 | table_add ttl_rules copy_to_metadata 14 => 4132 5 255 256 | table_add ttl_rules copy_to_metadata 13 => 4115 5 255 257 | table_add ttl_rules copy_to_metadata 12 => 4098 5 255 258 | table_add ttl_rules copy_to_metadata 11 => 4081 5 255 259 | table_add ttl_rules copy_to_metadata 10 => 4065 5 255 260 | table_add ttl_rules copy_to_metadata 9 => 4048 5 255 261 | table_add ttl_rules copy_to_metadata 8 => 4032 5 255 262 | table_add ttl_rules copy_to_metadata 7 => 4016 5 255 263 | table_add ttl_rules copy_to_metadata 6 => 4000 5 255 264 | table_add ttl_rules copy_to_metadata 5 => 3984 5 255 265 | table_add ttl_rules copy_to_metadata 4 => 3968 5 255 266 | table_add ttl_rules copy_to_metadata 3 => 3952 5 255 267 | table_add ttl_rules copy_to_metadata 2 => 3937 5 255 268 | table_add ttl_rules copy_to_metadata 1 => 3921 5 255 269 | -------------------------------------------------------------------------------- /rules/s6-commands.txt: -------------------------------------------------------------------------------- 1 | table_clear dmac 2 | table_clear ttl_rules 3 | 4 | table_add dmac forward 10.0.0.6 => 1 5 | table_add dmac forward 10.0.0.3 => 3 6 | table_add dmac forward 10.0.0.2 => 3 7 | table_add dmac forward 10.0.0.1 => 3 8 | table_add dmac forward 10.0.0.0 => 3 9 | table_add dmac forward 10.0.0.7 => 2 10 | table_add dmac forward 10.0.0.5 => 3 11 | table_add dmac forward 10.0.0.4 => 3 12 | 13 | 14 | table_add ttl_rules copy_to_metadata 255 => 1000000 6 255 15 | table_add ttl_rules copy_to_metadata 254 => 500000 6 255 16 | table_add ttl_rules copy_to_metadata 253 => 333333 6 255 17 | table_add ttl_rules copy_to_metadata 252 => 250000 6 255 18 | table_add ttl_rules copy_to_metadata 251 => 200000 6 255 19 | table_add ttl_rules copy_to_metadata 250 => 166666 6 255 20 | table_add ttl_rules copy_to_metadata 249 => 142857 6 255 21 | table_add ttl_rules copy_to_metadata 248 => 125000 6 255 22 | table_add ttl_rules copy_to_metadata 247 => 111111 6 255 23 | table_add ttl_rules copy_to_metadata 246 => 100000 6 255 24 | table_add ttl_rules copy_to_metadata 245 => 90909 6 255 25 | table_add ttl_rules copy_to_metadata 244 => 83333 6 255 26 | table_add ttl_rules copy_to_metadata 243 => 76923 6 255 27 | table_add ttl_rules copy_to_metadata 242 => 71428 6 255 28 | table_add ttl_rules copy_to_metadata 241 => 66666 6 255 29 | table_add ttl_rules copy_to_metadata 240 => 62500 6 255 30 | table_add ttl_rules copy_to_metadata 239 => 58823 6 255 31 | table_add ttl_rules copy_to_metadata 238 => 55555 6 255 32 | table_add ttl_rules copy_to_metadata 237 => 52631 6 255 33 | table_add ttl_rules copy_to_metadata 236 => 50000 6 255 34 | table_add ttl_rules copy_to_metadata 235 => 47619 6 255 35 | table_add ttl_rules copy_to_metadata 234 => 45454 6 255 36 | table_add ttl_rules copy_to_metadata 233 => 43478 6 255 37 | table_add ttl_rules copy_to_metadata 232 => 41666 6 255 38 | table_add ttl_rules copy_to_metadata 231 => 40000 6 255 39 | table_add ttl_rules copy_to_metadata 230 => 38461 6 255 40 | table_add ttl_rules copy_to_metadata 229 => 37037 6 255 41 | table_add ttl_rules copy_to_metadata 228 => 35714 6 255 42 | table_add ttl_rules copy_to_metadata 227 => 34482 6 255 43 | table_add ttl_rules copy_to_metadata 226 => 33333 6 255 44 | table_add ttl_rules copy_to_metadata 225 => 32258 6 255 45 | table_add ttl_rules copy_to_metadata 224 => 31250 6 255 46 | table_add ttl_rules copy_to_metadata 223 => 30303 6 255 47 | table_add ttl_rules copy_to_metadata 222 => 29411 6 255 48 | table_add ttl_rules copy_to_metadata 221 => 28571 6 255 49 | table_add ttl_rules copy_to_metadata 220 => 27777 6 255 50 | table_add ttl_rules copy_to_metadata 219 => 27027 6 255 51 | table_add ttl_rules copy_to_metadata 218 => 26315 6 255 52 | table_add ttl_rules copy_to_metadata 217 => 25641 6 255 53 | table_add ttl_rules copy_to_metadata 216 => 25000 6 255 54 | table_add ttl_rules copy_to_metadata 215 => 24390 6 255 55 | table_add ttl_rules copy_to_metadata 214 => 23809 6 255 56 | table_add ttl_rules copy_to_metadata 213 => 23255 6 255 57 | table_add ttl_rules copy_to_metadata 212 => 22727 6 255 58 | table_add ttl_rules copy_to_metadata 211 => 22222 6 255 59 | table_add ttl_rules copy_to_metadata 210 => 21739 6 255 60 | table_add ttl_rules copy_to_metadata 209 => 21276 6 255 61 | table_add ttl_rules copy_to_metadata 208 => 20833 6 255 62 | table_add ttl_rules copy_to_metadata 207 => 20408 6 255 63 | table_add ttl_rules copy_to_metadata 206 => 20000 6 255 64 | table_add ttl_rules copy_to_metadata 205 => 19607 6 255 65 | table_add ttl_rules copy_to_metadata 204 => 19230 6 255 66 | table_add ttl_rules copy_to_metadata 203 => 18867 6 255 67 | table_add ttl_rules copy_to_metadata 202 => 18518 6 255 68 | table_add ttl_rules copy_to_metadata 201 => 18181 6 255 69 | table_add ttl_rules copy_to_metadata 200 => 17857 6 255 70 | table_add ttl_rules copy_to_metadata 199 => 17543 6 255 71 | table_add ttl_rules copy_to_metadata 198 => 17241 6 255 72 | table_add ttl_rules copy_to_metadata 197 => 16949 6 255 73 | table_add ttl_rules copy_to_metadata 196 => 16666 6 255 74 | table_add ttl_rules copy_to_metadata 195 => 16393 6 255 75 | table_add ttl_rules copy_to_metadata 194 => 16129 6 255 76 | table_add ttl_rules copy_to_metadata 193 => 15873 6 255 77 | table_add ttl_rules copy_to_metadata 192 => 15625 6 255 78 | table_add ttl_rules copy_to_metadata 191 => 15384 6 255 79 | table_add ttl_rules copy_to_metadata 190 => 15151 6 255 80 | table_add ttl_rules copy_to_metadata 189 => 14925 6 255 81 | table_add ttl_rules copy_to_metadata 188 => 14705 6 255 82 | table_add ttl_rules copy_to_metadata 187 => 14492 6 255 83 | table_add ttl_rules copy_to_metadata 186 => 14285 6 255 84 | table_add ttl_rules copy_to_metadata 185 => 14084 6 255 85 | table_add ttl_rules copy_to_metadata 184 => 13888 6 255 86 | table_add ttl_rules copy_to_metadata 183 => 13698 6 255 87 | table_add ttl_rules copy_to_metadata 182 => 13513 6 255 88 | table_add ttl_rules copy_to_metadata 181 => 13333 6 255 89 | table_add ttl_rules copy_to_metadata 180 => 13157 6 255 90 | table_add ttl_rules copy_to_metadata 179 => 12987 6 255 91 | table_add ttl_rules copy_to_metadata 178 => 12820 6 255 92 | table_add ttl_rules copy_to_metadata 177 => 12658 6 255 93 | table_add ttl_rules copy_to_metadata 176 => 12500 6 255 94 | table_add ttl_rules copy_to_metadata 175 => 12345 6 255 95 | table_add ttl_rules copy_to_metadata 174 => 12195 6 255 96 | table_add ttl_rules copy_to_metadata 173 => 12048 6 255 97 | table_add ttl_rules copy_to_metadata 172 => 11904 6 255 98 | table_add ttl_rules copy_to_metadata 171 => 11764 6 255 99 | table_add ttl_rules copy_to_metadata 170 => 11627 6 255 100 | table_add ttl_rules copy_to_metadata 169 => 11494 6 255 101 | table_add ttl_rules copy_to_metadata 168 => 11363 6 255 102 | table_add ttl_rules copy_to_metadata 167 => 11235 6 255 103 | table_add ttl_rules copy_to_metadata 166 => 11111 6 255 104 | table_add ttl_rules copy_to_metadata 165 => 10989 6 255 105 | table_add ttl_rules copy_to_metadata 164 => 10869 6 255 106 | table_add ttl_rules copy_to_metadata 163 => 10752 6 255 107 | table_add ttl_rules copy_to_metadata 162 => 10638 6 255 108 | table_add ttl_rules copy_to_metadata 161 => 10526 6 255 109 | table_add ttl_rules copy_to_metadata 160 => 10416 6 255 110 | table_add ttl_rules copy_to_metadata 159 => 10309 6 255 111 | table_add ttl_rules copy_to_metadata 158 => 10204 6 255 112 | table_add ttl_rules copy_to_metadata 157 => 10101 6 255 113 | table_add ttl_rules copy_to_metadata 156 => 10000 6 255 114 | table_add ttl_rules copy_to_metadata 155 => 9900 6 255 115 | table_add ttl_rules copy_to_metadata 154 => 9803 6 255 116 | table_add ttl_rules copy_to_metadata 153 => 9708 6 255 117 | table_add ttl_rules copy_to_metadata 152 => 9615 6 255 118 | table_add ttl_rules copy_to_metadata 151 => 9523 6 255 119 | table_add ttl_rules copy_to_metadata 150 => 9433 6 255 120 | table_add ttl_rules copy_to_metadata 149 => 9345 6 255 121 | table_add ttl_rules copy_to_metadata 148 => 9259 6 255 122 | table_add ttl_rules copy_to_metadata 147 => 9174 6 255 123 | table_add ttl_rules copy_to_metadata 146 => 9090 6 255 124 | table_add ttl_rules copy_to_metadata 145 => 9009 6 255 125 | table_add ttl_rules copy_to_metadata 144 => 8928 6 255 126 | table_add ttl_rules copy_to_metadata 143 => 8849 6 255 127 | table_add ttl_rules copy_to_metadata 142 => 8771 6 255 128 | table_add ttl_rules copy_to_metadata 141 => 8695 6 255 129 | table_add ttl_rules copy_to_metadata 140 => 8620 6 255 130 | table_add ttl_rules copy_to_metadata 139 => 8547 6 255 131 | table_add ttl_rules copy_to_metadata 138 => 8474 6 255 132 | table_add ttl_rules copy_to_metadata 137 => 8403 6 255 133 | table_add ttl_rules copy_to_metadata 136 => 8333 6 255 134 | table_add ttl_rules copy_to_metadata 135 => 8264 6 255 135 | table_add ttl_rules copy_to_metadata 134 => 8196 6 255 136 | table_add ttl_rules copy_to_metadata 133 => 8130 6 255 137 | table_add ttl_rules copy_to_metadata 132 => 8064 6 255 138 | table_add ttl_rules copy_to_metadata 131 => 8000 6 255 139 | table_add ttl_rules copy_to_metadata 130 => 7936 6 255 140 | table_add ttl_rules copy_to_metadata 129 => 7874 6 255 141 | table_add ttl_rules copy_to_metadata 128 => 7812 6 255 142 | table_add ttl_rules copy_to_metadata 127 => 7751 6 255 143 | table_add ttl_rules copy_to_metadata 126 => 7692 6 255 144 | table_add ttl_rules copy_to_metadata 125 => 7633 6 255 145 | table_add ttl_rules copy_to_metadata 124 => 7575 6 255 146 | table_add ttl_rules copy_to_metadata 123 => 7518 6 255 147 | table_add ttl_rules copy_to_metadata 122 => 7462 6 255 148 | table_add ttl_rules copy_to_metadata 121 => 7407 6 255 149 | table_add ttl_rules copy_to_metadata 120 => 7352 6 255 150 | table_add ttl_rules copy_to_metadata 119 => 7299 6 255 151 | table_add ttl_rules copy_to_metadata 118 => 7246 6 255 152 | table_add ttl_rules copy_to_metadata 117 => 7194 6 255 153 | table_add ttl_rules copy_to_metadata 116 => 7142 6 255 154 | table_add ttl_rules copy_to_metadata 115 => 7092 6 255 155 | table_add ttl_rules copy_to_metadata 114 => 7042 6 255 156 | table_add ttl_rules copy_to_metadata 113 => 6993 6 255 157 | table_add ttl_rules copy_to_metadata 112 => 6944 6 255 158 | table_add ttl_rules copy_to_metadata 111 => 6896 6 255 159 | table_add ttl_rules copy_to_metadata 110 => 6849 6 255 160 | table_add ttl_rules copy_to_metadata 109 => 6802 6 255 161 | table_add ttl_rules copy_to_metadata 108 => 6756 6 255 162 | table_add ttl_rules copy_to_metadata 107 => 6711 6 255 163 | table_add ttl_rules copy_to_metadata 106 => 6666 6 255 164 | table_add ttl_rules copy_to_metadata 105 => 6622 6 255 165 | table_add ttl_rules copy_to_metadata 104 => 6578 6 255 166 | table_add ttl_rules copy_to_metadata 103 => 6535 6 255 167 | table_add ttl_rules copy_to_metadata 102 => 6493 6 255 168 | table_add ttl_rules copy_to_metadata 101 => 6451 6 255 169 | table_add ttl_rules copy_to_metadata 100 => 6410 6 255 170 | table_add ttl_rules copy_to_metadata 99 => 6369 6 255 171 | table_add ttl_rules copy_to_metadata 98 => 6329 6 255 172 | table_add ttl_rules copy_to_metadata 97 => 6289 6 255 173 | table_add ttl_rules copy_to_metadata 96 => 6250 6 255 174 | table_add ttl_rules copy_to_metadata 95 => 6211 6 255 175 | table_add ttl_rules copy_to_metadata 94 => 6172 6 255 176 | table_add ttl_rules copy_to_metadata 93 => 6134 6 255 177 | table_add ttl_rules copy_to_metadata 92 => 6097 6 255 178 | table_add ttl_rules copy_to_metadata 91 => 6060 6 255 179 | table_add ttl_rules copy_to_metadata 90 => 6024 6 255 180 | table_add ttl_rules copy_to_metadata 89 => 5988 6 255 181 | table_add ttl_rules copy_to_metadata 88 => 5952 6 255 182 | table_add ttl_rules copy_to_metadata 87 => 5917 6 255 183 | table_add ttl_rules copy_to_metadata 86 => 5882 6 255 184 | table_add ttl_rules copy_to_metadata 85 => 5847 6 255 185 | table_add ttl_rules copy_to_metadata 84 => 5813 6 255 186 | table_add ttl_rules copy_to_metadata 83 => 5780 6 255 187 | table_add ttl_rules copy_to_metadata 82 => 5747 6 255 188 | table_add ttl_rules copy_to_metadata 81 => 5714 6 255 189 | table_add ttl_rules copy_to_metadata 80 => 5681 6 255 190 | table_add ttl_rules copy_to_metadata 79 => 5649 6 255 191 | table_add ttl_rules copy_to_metadata 78 => 5617 6 255 192 | table_add ttl_rules copy_to_metadata 77 => 5586 6 255 193 | table_add ttl_rules copy_to_metadata 76 => 5555 6 255 194 | table_add ttl_rules copy_to_metadata 75 => 5524 6 255 195 | table_add ttl_rules copy_to_metadata 74 => 5494 6 255 196 | table_add ttl_rules copy_to_metadata 73 => 5464 6 255 197 | table_add ttl_rules copy_to_metadata 72 => 5434 6 255 198 | table_add ttl_rules copy_to_metadata 71 => 5405 6 255 199 | table_add ttl_rules copy_to_metadata 70 => 5376 6 255 200 | table_add ttl_rules copy_to_metadata 69 => 5347 6 255 201 | table_add ttl_rules copy_to_metadata 68 => 5319 6 255 202 | table_add ttl_rules copy_to_metadata 67 => 5291 6 255 203 | table_add ttl_rules copy_to_metadata 66 => 5263 6 255 204 | table_add ttl_rules copy_to_metadata 65 => 5235 6 255 205 | table_add ttl_rules copy_to_metadata 64 => 5208 6 255 206 | table_add ttl_rules copy_to_metadata 63 => 5181 6 255 207 | table_add ttl_rules copy_to_metadata 62 => 5154 6 255 208 | table_add ttl_rules copy_to_metadata 61 => 5128 6 255 209 | table_add ttl_rules copy_to_metadata 60 => 5102 6 255 210 | table_add ttl_rules copy_to_metadata 59 => 5076 6 255 211 | table_add ttl_rules copy_to_metadata 58 => 5050 6 255 212 | table_add ttl_rules copy_to_metadata 57 => 5025 6 255 213 | table_add ttl_rules copy_to_metadata 56 => 5000 6 255 214 | table_add ttl_rules copy_to_metadata 55 => 4975 6 255 215 | table_add ttl_rules copy_to_metadata 54 => 4950 6 255 216 | table_add ttl_rules copy_to_metadata 53 => 4926 6 255 217 | table_add ttl_rules copy_to_metadata 52 => 4901 6 255 218 | table_add ttl_rules copy_to_metadata 51 => 4878 6 255 219 | table_add ttl_rules copy_to_metadata 50 => 4854 6 255 220 | table_add ttl_rules copy_to_metadata 49 => 4830 6 255 221 | table_add ttl_rules copy_to_metadata 48 => 4807 6 255 222 | table_add ttl_rules copy_to_metadata 47 => 4784 6 255 223 | table_add ttl_rules copy_to_metadata 46 => 4761 6 255 224 | table_add ttl_rules copy_to_metadata 45 => 4739 6 255 225 | table_add ttl_rules copy_to_metadata 44 => 4716 6 255 226 | table_add ttl_rules copy_to_metadata 43 => 4694 6 255 227 | table_add ttl_rules copy_to_metadata 42 => 4672 6 255 228 | table_add ttl_rules copy_to_metadata 41 => 4651 6 255 229 | table_add ttl_rules copy_to_metadata 40 => 4629 6 255 230 | table_add ttl_rules copy_to_metadata 39 => 4608 6 255 231 | table_add ttl_rules copy_to_metadata 38 => 4587 6 255 232 | table_add ttl_rules copy_to_metadata 37 => 4566 6 255 233 | table_add ttl_rules copy_to_metadata 36 => 4545 6 255 234 | table_add ttl_rules copy_to_metadata 35 => 4524 6 255 235 | table_add ttl_rules copy_to_metadata 34 => 4504 6 255 236 | table_add ttl_rules copy_to_metadata 33 => 4484 6 255 237 | table_add ttl_rules copy_to_metadata 32 => 4464 6 255 238 | table_add ttl_rules copy_to_metadata 31 => 4444 6 255 239 | table_add ttl_rules copy_to_metadata 30 => 4424 6 255 240 | table_add ttl_rules copy_to_metadata 29 => 4405 6 255 241 | table_add ttl_rules copy_to_metadata 28 => 4385 6 255 242 | table_add ttl_rules copy_to_metadata 27 => 4366 6 255 243 | table_add ttl_rules copy_to_metadata 26 => 4347 6 255 244 | table_add ttl_rules copy_to_metadata 25 => 4329 6 255 245 | table_add ttl_rules copy_to_metadata 24 => 4310 6 255 246 | table_add ttl_rules copy_to_metadata 23 => 4291 6 255 247 | table_add ttl_rules copy_to_metadata 22 => 4273 6 255 248 | table_add ttl_rules copy_to_metadata 21 => 4255 6 255 249 | table_add ttl_rules copy_to_metadata 20 => 4237 6 255 250 | table_add ttl_rules copy_to_metadata 19 => 4219 6 255 251 | table_add ttl_rules copy_to_metadata 18 => 4201 6 255 252 | table_add ttl_rules copy_to_metadata 17 => 4184 6 255 253 | table_add ttl_rules copy_to_metadata 16 => 4166 6 255 254 | table_add ttl_rules copy_to_metadata 15 => 4149 6 255 255 | table_add ttl_rules copy_to_metadata 14 => 4132 6 255 256 | table_add ttl_rules copy_to_metadata 13 => 4115 6 255 257 | table_add ttl_rules copy_to_metadata 12 => 4098 6 255 258 | table_add ttl_rules copy_to_metadata 11 => 4081 6 255 259 | table_add ttl_rules copy_to_metadata 10 => 4065 6 255 260 | table_add ttl_rules copy_to_metadata 9 => 4048 6 255 261 | table_add ttl_rules copy_to_metadata 8 => 4032 6 255 262 | table_add ttl_rules copy_to_metadata 7 => 4016 6 255 263 | table_add ttl_rules copy_to_metadata 6 => 4000 6 255 264 | table_add ttl_rules copy_to_metadata 5 => 3984 6 255 265 | table_add ttl_rules copy_to_metadata 4 => 3968 6 255 266 | table_add ttl_rules copy_to_metadata 3 => 3952 6 255 267 | table_add ttl_rules copy_to_metadata 2 => 3937 6 255 268 | table_add ttl_rules copy_to_metadata 1 => 3921 6 255 269 | -------------------------------------------------------------------------------- /rules/s7-commands.txt: -------------------------------------------------------------------------------- 1 | table_clear dmac 2 | table_clear ttl_rules 3 | 4 | table_add dmac forward 10.0.0.7 => 1 5 | table_add dmac forward 10.0.0.3 => 2 6 | table_add dmac forward 10.0.0.2 => 2 7 | table_add dmac forward 10.0.0.1 => 2 8 | table_add dmac forward 10.0.0.0 => 2 9 | table_add dmac forward 10.0.0.6 => 2 10 | table_add dmac forward 10.0.0.5 => 2 11 | table_add dmac forward 10.0.0.4 => 2 12 | 13 | 14 | table_add ttl_rules copy_to_metadata 255 => 1000000 7 255 15 | table_add ttl_rules copy_to_metadata 254 => 500000 7 255 16 | table_add ttl_rules copy_to_metadata 253 => 333333 7 255 17 | table_add ttl_rules copy_to_metadata 252 => 250000 7 255 18 | table_add ttl_rules copy_to_metadata 251 => 200000 7 255 19 | table_add ttl_rules copy_to_metadata 250 => 166666 7 255 20 | table_add ttl_rules copy_to_metadata 249 => 142857 7 255 21 | table_add ttl_rules copy_to_metadata 248 => 125000 7 255 22 | table_add ttl_rules copy_to_metadata 247 => 111111 7 255 23 | table_add ttl_rules copy_to_metadata 246 => 100000 7 255 24 | table_add ttl_rules copy_to_metadata 245 => 90909 7 255 25 | table_add ttl_rules copy_to_metadata 244 => 83333 7 255 26 | table_add ttl_rules copy_to_metadata 243 => 76923 7 255 27 | table_add ttl_rules copy_to_metadata 242 => 71428 7 255 28 | table_add ttl_rules copy_to_metadata 241 => 66666 7 255 29 | table_add ttl_rules copy_to_metadata 240 => 62500 7 255 30 | table_add ttl_rules copy_to_metadata 239 => 58823 7 255 31 | table_add ttl_rules copy_to_metadata 238 => 55555 7 255 32 | table_add ttl_rules copy_to_metadata 237 => 52631 7 255 33 | table_add ttl_rules copy_to_metadata 236 => 50000 7 255 34 | table_add ttl_rules copy_to_metadata 235 => 47619 7 255 35 | table_add ttl_rules copy_to_metadata 234 => 45454 7 255 36 | table_add ttl_rules copy_to_metadata 233 => 43478 7 255 37 | table_add ttl_rules copy_to_metadata 232 => 41666 7 255 38 | table_add ttl_rules copy_to_metadata 231 => 40000 7 255 39 | table_add ttl_rules copy_to_metadata 230 => 38461 7 255 40 | table_add ttl_rules copy_to_metadata 229 => 37037 7 255 41 | table_add ttl_rules copy_to_metadata 228 => 35714 7 255 42 | table_add ttl_rules copy_to_metadata 227 => 34482 7 255 43 | table_add ttl_rules copy_to_metadata 226 => 33333 7 255 44 | table_add ttl_rules copy_to_metadata 225 => 32258 7 255 45 | table_add ttl_rules copy_to_metadata 224 => 31250 7 255 46 | table_add ttl_rules copy_to_metadata 223 => 30303 7 255 47 | table_add ttl_rules copy_to_metadata 222 => 29411 7 255 48 | table_add ttl_rules copy_to_metadata 221 => 28571 7 255 49 | table_add ttl_rules copy_to_metadata 220 => 27777 7 255 50 | table_add ttl_rules copy_to_metadata 219 => 27027 7 255 51 | table_add ttl_rules copy_to_metadata 218 => 26315 7 255 52 | table_add ttl_rules copy_to_metadata 217 => 25641 7 255 53 | table_add ttl_rules copy_to_metadata 216 => 25000 7 255 54 | table_add ttl_rules copy_to_metadata 215 => 24390 7 255 55 | table_add ttl_rules copy_to_metadata 214 => 23809 7 255 56 | table_add ttl_rules copy_to_metadata 213 => 23255 7 255 57 | table_add ttl_rules copy_to_metadata 212 => 22727 7 255 58 | table_add ttl_rules copy_to_metadata 211 => 22222 7 255 59 | table_add ttl_rules copy_to_metadata 210 => 21739 7 255 60 | table_add ttl_rules copy_to_metadata 209 => 21276 7 255 61 | table_add ttl_rules copy_to_metadata 208 => 20833 7 255 62 | table_add ttl_rules copy_to_metadata 207 => 20408 7 255 63 | table_add ttl_rules copy_to_metadata 206 => 20000 7 255 64 | table_add ttl_rules copy_to_metadata 205 => 19607 7 255 65 | table_add ttl_rules copy_to_metadata 204 => 19230 7 255 66 | table_add ttl_rules copy_to_metadata 203 => 18867 7 255 67 | table_add ttl_rules copy_to_metadata 202 => 18518 7 255 68 | table_add ttl_rules copy_to_metadata 201 => 18181 7 255 69 | table_add ttl_rules copy_to_metadata 200 => 17857 7 255 70 | table_add ttl_rules copy_to_metadata 199 => 17543 7 255 71 | table_add ttl_rules copy_to_metadata 198 => 17241 7 255 72 | table_add ttl_rules copy_to_metadata 197 => 16949 7 255 73 | table_add ttl_rules copy_to_metadata 196 => 16666 7 255 74 | table_add ttl_rules copy_to_metadata 195 => 16393 7 255 75 | table_add ttl_rules copy_to_metadata 194 => 16129 7 255 76 | table_add ttl_rules copy_to_metadata 193 => 15873 7 255 77 | table_add ttl_rules copy_to_metadata 192 => 15625 7 255 78 | table_add ttl_rules copy_to_metadata 191 => 15384 7 255 79 | table_add ttl_rules copy_to_metadata 190 => 15151 7 255 80 | table_add ttl_rules copy_to_metadata 189 => 14925 7 255 81 | table_add ttl_rules copy_to_metadata 188 => 14705 7 255 82 | table_add ttl_rules copy_to_metadata 187 => 14492 7 255 83 | table_add ttl_rules copy_to_metadata 186 => 14285 7 255 84 | table_add ttl_rules copy_to_metadata 185 => 14084 7 255 85 | table_add ttl_rules copy_to_metadata 184 => 13888 7 255 86 | table_add ttl_rules copy_to_metadata 183 => 13698 7 255 87 | table_add ttl_rules copy_to_metadata 182 => 13513 7 255 88 | table_add ttl_rules copy_to_metadata 181 => 13333 7 255 89 | table_add ttl_rules copy_to_metadata 180 => 13157 7 255 90 | table_add ttl_rules copy_to_metadata 179 => 12987 7 255 91 | table_add ttl_rules copy_to_metadata 178 => 12820 7 255 92 | table_add ttl_rules copy_to_metadata 177 => 12658 7 255 93 | table_add ttl_rules copy_to_metadata 176 => 12500 7 255 94 | table_add ttl_rules copy_to_metadata 175 => 12345 7 255 95 | table_add ttl_rules copy_to_metadata 174 => 12195 7 255 96 | table_add ttl_rules copy_to_metadata 173 => 12048 7 255 97 | table_add ttl_rules copy_to_metadata 172 => 11904 7 255 98 | table_add ttl_rules copy_to_metadata 171 => 11764 7 255 99 | table_add ttl_rules copy_to_metadata 170 => 11627 7 255 100 | table_add ttl_rules copy_to_metadata 169 => 11494 7 255 101 | table_add ttl_rules copy_to_metadata 168 => 11363 7 255 102 | table_add ttl_rules copy_to_metadata 167 => 11235 7 255 103 | table_add ttl_rules copy_to_metadata 166 => 11111 7 255 104 | table_add ttl_rules copy_to_metadata 165 => 10989 7 255 105 | table_add ttl_rules copy_to_metadata 164 => 10869 7 255 106 | table_add ttl_rules copy_to_metadata 163 => 10752 7 255 107 | table_add ttl_rules copy_to_metadata 162 => 10638 7 255 108 | table_add ttl_rules copy_to_metadata 161 => 10526 7 255 109 | table_add ttl_rules copy_to_metadata 160 => 10416 7 255 110 | table_add ttl_rules copy_to_metadata 159 => 10309 7 255 111 | table_add ttl_rules copy_to_metadata 158 => 10204 7 255 112 | table_add ttl_rules copy_to_metadata 157 => 10101 7 255 113 | table_add ttl_rules copy_to_metadata 156 => 10000 7 255 114 | table_add ttl_rules copy_to_metadata 155 => 9900 7 255 115 | table_add ttl_rules copy_to_metadata 154 => 9803 7 255 116 | table_add ttl_rules copy_to_metadata 153 => 9708 7 255 117 | table_add ttl_rules copy_to_metadata 152 => 9615 7 255 118 | table_add ttl_rules copy_to_metadata 151 => 9523 7 255 119 | table_add ttl_rules copy_to_metadata 150 => 9433 7 255 120 | table_add ttl_rules copy_to_metadata 149 => 9345 7 255 121 | table_add ttl_rules copy_to_metadata 148 => 9259 7 255 122 | table_add ttl_rules copy_to_metadata 147 => 9174 7 255 123 | table_add ttl_rules copy_to_metadata 146 => 9090 7 255 124 | table_add ttl_rules copy_to_metadata 145 => 9009 7 255 125 | table_add ttl_rules copy_to_metadata 144 => 8928 7 255 126 | table_add ttl_rules copy_to_metadata 143 => 8849 7 255 127 | table_add ttl_rules copy_to_metadata 142 => 8771 7 255 128 | table_add ttl_rules copy_to_metadata 141 => 8695 7 255 129 | table_add ttl_rules copy_to_metadata 140 => 8620 7 255 130 | table_add ttl_rules copy_to_metadata 139 => 8547 7 255 131 | table_add ttl_rules copy_to_metadata 138 => 8474 7 255 132 | table_add ttl_rules copy_to_metadata 137 => 8403 7 255 133 | table_add ttl_rules copy_to_metadata 136 => 8333 7 255 134 | table_add ttl_rules copy_to_metadata 135 => 8264 7 255 135 | table_add ttl_rules copy_to_metadata 134 => 8196 7 255 136 | table_add ttl_rules copy_to_metadata 133 => 8130 7 255 137 | table_add ttl_rules copy_to_metadata 132 => 8064 7 255 138 | table_add ttl_rules copy_to_metadata 131 => 8000 7 255 139 | table_add ttl_rules copy_to_metadata 130 => 7936 7 255 140 | table_add ttl_rules copy_to_metadata 129 => 7874 7 255 141 | table_add ttl_rules copy_to_metadata 128 => 7812 7 255 142 | table_add ttl_rules copy_to_metadata 127 => 7751 7 255 143 | table_add ttl_rules copy_to_metadata 126 => 7692 7 255 144 | table_add ttl_rules copy_to_metadata 125 => 7633 7 255 145 | table_add ttl_rules copy_to_metadata 124 => 7575 7 255 146 | table_add ttl_rules copy_to_metadata 123 => 7518 7 255 147 | table_add ttl_rules copy_to_metadata 122 => 7462 7 255 148 | table_add ttl_rules copy_to_metadata 121 => 7407 7 255 149 | table_add ttl_rules copy_to_metadata 120 => 7352 7 255 150 | table_add ttl_rules copy_to_metadata 119 => 7299 7 255 151 | table_add ttl_rules copy_to_metadata 118 => 7246 7 255 152 | table_add ttl_rules copy_to_metadata 117 => 7194 7 255 153 | table_add ttl_rules copy_to_metadata 116 => 7142 7 255 154 | table_add ttl_rules copy_to_metadata 115 => 7092 7 255 155 | table_add ttl_rules copy_to_metadata 114 => 7042 7 255 156 | table_add ttl_rules copy_to_metadata 113 => 6993 7 255 157 | table_add ttl_rules copy_to_metadata 112 => 6944 7 255 158 | table_add ttl_rules copy_to_metadata 111 => 6896 7 255 159 | table_add ttl_rules copy_to_metadata 110 => 6849 7 255 160 | table_add ttl_rules copy_to_metadata 109 => 6802 7 255 161 | table_add ttl_rules copy_to_metadata 108 => 6756 7 255 162 | table_add ttl_rules copy_to_metadata 107 => 6711 7 255 163 | table_add ttl_rules copy_to_metadata 106 => 6666 7 255 164 | table_add ttl_rules copy_to_metadata 105 => 6622 7 255 165 | table_add ttl_rules copy_to_metadata 104 => 6578 7 255 166 | table_add ttl_rules copy_to_metadata 103 => 6535 7 255 167 | table_add ttl_rules copy_to_metadata 102 => 6493 7 255 168 | table_add ttl_rules copy_to_metadata 101 => 6451 7 255 169 | table_add ttl_rules copy_to_metadata 100 => 6410 7 255 170 | table_add ttl_rules copy_to_metadata 99 => 6369 7 255 171 | table_add ttl_rules copy_to_metadata 98 => 6329 7 255 172 | table_add ttl_rules copy_to_metadata 97 => 6289 7 255 173 | table_add ttl_rules copy_to_metadata 96 => 6250 7 255 174 | table_add ttl_rules copy_to_metadata 95 => 6211 7 255 175 | table_add ttl_rules copy_to_metadata 94 => 6172 7 255 176 | table_add ttl_rules copy_to_metadata 93 => 6134 7 255 177 | table_add ttl_rules copy_to_metadata 92 => 6097 7 255 178 | table_add ttl_rules copy_to_metadata 91 => 6060 7 255 179 | table_add ttl_rules copy_to_metadata 90 => 6024 7 255 180 | table_add ttl_rules copy_to_metadata 89 => 5988 7 255 181 | table_add ttl_rules copy_to_metadata 88 => 5952 7 255 182 | table_add ttl_rules copy_to_metadata 87 => 5917 7 255 183 | table_add ttl_rules copy_to_metadata 86 => 5882 7 255 184 | table_add ttl_rules copy_to_metadata 85 => 5847 7 255 185 | table_add ttl_rules copy_to_metadata 84 => 5813 7 255 186 | table_add ttl_rules copy_to_metadata 83 => 5780 7 255 187 | table_add ttl_rules copy_to_metadata 82 => 5747 7 255 188 | table_add ttl_rules copy_to_metadata 81 => 5714 7 255 189 | table_add ttl_rules copy_to_metadata 80 => 5681 7 255 190 | table_add ttl_rules copy_to_metadata 79 => 5649 7 255 191 | table_add ttl_rules copy_to_metadata 78 => 5617 7 255 192 | table_add ttl_rules copy_to_metadata 77 => 5586 7 255 193 | table_add ttl_rules copy_to_metadata 76 => 5555 7 255 194 | table_add ttl_rules copy_to_metadata 75 => 5524 7 255 195 | table_add ttl_rules copy_to_metadata 74 => 5494 7 255 196 | table_add ttl_rules copy_to_metadata 73 => 5464 7 255 197 | table_add ttl_rules copy_to_metadata 72 => 5434 7 255 198 | table_add ttl_rules copy_to_metadata 71 => 5405 7 255 199 | table_add ttl_rules copy_to_metadata 70 => 5376 7 255 200 | table_add ttl_rules copy_to_metadata 69 => 5347 7 255 201 | table_add ttl_rules copy_to_metadata 68 => 5319 7 255 202 | table_add ttl_rules copy_to_metadata 67 => 5291 7 255 203 | table_add ttl_rules copy_to_metadata 66 => 5263 7 255 204 | table_add ttl_rules copy_to_metadata 65 => 5235 7 255 205 | table_add ttl_rules copy_to_metadata 64 => 5208 7 255 206 | table_add ttl_rules copy_to_metadata 63 => 5181 7 255 207 | table_add ttl_rules copy_to_metadata 62 => 5154 7 255 208 | table_add ttl_rules copy_to_metadata 61 => 5128 7 255 209 | table_add ttl_rules copy_to_metadata 60 => 5102 7 255 210 | table_add ttl_rules copy_to_metadata 59 => 5076 7 255 211 | table_add ttl_rules copy_to_metadata 58 => 5050 7 255 212 | table_add ttl_rules copy_to_metadata 57 => 5025 7 255 213 | table_add ttl_rules copy_to_metadata 56 => 5000 7 255 214 | table_add ttl_rules copy_to_metadata 55 => 4975 7 255 215 | table_add ttl_rules copy_to_metadata 54 => 4950 7 255 216 | table_add ttl_rules copy_to_metadata 53 => 4926 7 255 217 | table_add ttl_rules copy_to_metadata 52 => 4901 7 255 218 | table_add ttl_rules copy_to_metadata 51 => 4878 7 255 219 | table_add ttl_rules copy_to_metadata 50 => 4854 7 255 220 | table_add ttl_rules copy_to_metadata 49 => 4830 7 255 221 | table_add ttl_rules copy_to_metadata 48 => 4807 7 255 222 | table_add ttl_rules copy_to_metadata 47 => 4784 7 255 223 | table_add ttl_rules copy_to_metadata 46 => 4761 7 255 224 | table_add ttl_rules copy_to_metadata 45 => 4739 7 255 225 | table_add ttl_rules copy_to_metadata 44 => 4716 7 255 226 | table_add ttl_rules copy_to_metadata 43 => 4694 7 255 227 | table_add ttl_rules copy_to_metadata 42 => 4672 7 255 228 | table_add ttl_rules copy_to_metadata 41 => 4651 7 255 229 | table_add ttl_rules copy_to_metadata 40 => 4629 7 255 230 | table_add ttl_rules copy_to_metadata 39 => 4608 7 255 231 | table_add ttl_rules copy_to_metadata 38 => 4587 7 255 232 | table_add ttl_rules copy_to_metadata 37 => 4566 7 255 233 | table_add ttl_rules copy_to_metadata 36 => 4545 7 255 234 | table_add ttl_rules copy_to_metadata 35 => 4524 7 255 235 | table_add ttl_rules copy_to_metadata 34 => 4504 7 255 236 | table_add ttl_rules copy_to_metadata 33 => 4484 7 255 237 | table_add ttl_rules copy_to_metadata 32 => 4464 7 255 238 | table_add ttl_rules copy_to_metadata 31 => 4444 7 255 239 | table_add ttl_rules copy_to_metadata 30 => 4424 7 255 240 | table_add ttl_rules copy_to_metadata 29 => 4405 7 255 241 | table_add ttl_rules copy_to_metadata 28 => 4385 7 255 242 | table_add ttl_rules copy_to_metadata 27 => 4366 7 255 243 | table_add ttl_rules copy_to_metadata 26 => 4347 7 255 244 | table_add ttl_rules copy_to_metadata 25 => 4329 7 255 245 | table_add ttl_rules copy_to_metadata 24 => 4310 7 255 246 | table_add ttl_rules copy_to_metadata 23 => 4291 7 255 247 | table_add ttl_rules copy_to_metadata 22 => 4273 7 255 248 | table_add ttl_rules copy_to_metadata 21 => 4255 7 255 249 | table_add ttl_rules copy_to_metadata 20 => 4237 7 255 250 | table_add ttl_rules copy_to_metadata 19 => 4219 7 255 251 | table_add ttl_rules copy_to_metadata 18 => 4201 7 255 252 | table_add ttl_rules copy_to_metadata 17 => 4184 7 255 253 | table_add ttl_rules copy_to_metadata 16 => 4166 7 255 254 | table_add ttl_rules copy_to_metadata 15 => 4149 7 255 255 | table_add ttl_rules copy_to_metadata 14 => 4132 7 255 256 | table_add ttl_rules copy_to_metadata 13 => 4115 7 255 257 | table_add ttl_rules copy_to_metadata 12 => 4098 7 255 258 | table_add ttl_rules copy_to_metadata 11 => 4081 7 255 259 | table_add ttl_rules copy_to_metadata 10 => 4065 7 255 260 | table_add ttl_rules copy_to_metadata 9 => 4048 7 255 261 | table_add ttl_rules copy_to_metadata 8 => 4032 7 255 262 | table_add ttl_rules copy_to_metadata 7 => 4016 7 255 263 | table_add ttl_rules copy_to_metadata 6 => 4000 7 255 264 | table_add ttl_rules copy_to_metadata 5 => 3984 7 255 265 | table_add ttl_rules copy_to_metadata 4 => 3968 7 255 266 | table_add ttl_rules copy_to_metadata 3 => 3952 7 255 267 | table_add ttl_rules copy_to_metadata 2 => 3937 7 255 268 | table_add ttl_rules copy_to_metadata 1 => 3921 7 255 269 | -------------------------------------------------------------------------------- /p4src/pint.p4i: -------------------------------------------------------------------------------- 1 | # 1 "p4src/pint.p4" 2 | # 1 "" 3 | # 1 "" 4 | # 1 "p4src/pint.p4" 5 | /* -*- P4_16 -*- */ 6 | # 1 "/usr/local/share/p4c/p4include/core.p4" 1 7 | /* 8 | Copyright 2013-present Barefoot Networks, Inc. 9 | 10 | Licensed under the Apache License, Version 2.0 (the "License"); 11 | you may not use this file except in compliance with the License. 12 | You may obtain a copy of the License at 13 | 14 | http://www.apache.org/licenses/LICENSE-2.0 15 | 16 | Unless required by applicable law or agreed to in writing, software 17 | distributed under the License is distributed on an "AS IS" BASIS, 18 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 | See the License for the specific language governing permissions and 20 | limitations under the License. 21 | */ 22 | 23 | /* This is the P4-16 core library, which declares some built-in P4 constructs using P4 */ 24 | 25 | 26 | 27 | 28 | /// Standard error codes. New error codes can be declared by users. 29 | error { 30 | NoError, /// No error. 31 | PacketTooShort, /// Not enough bits in packet for 'extract'. 32 | NoMatch, /// 'select' expression has no matches. 33 | StackOutOfBounds, /// Reference to invalid element of a header stack. 34 | HeaderTooShort, /// Extracting too many bits into a varbit field. 35 | ParserTimeout /// Parser execution time limit exceeded. 36 | } 37 | 38 | extern packet_in { 39 | /// Read a header from the packet into a fixed-sized header @hdr and advance the cursor. 40 | /// May trigger error PacketTooShort or StackOutOfBounds. 41 | /// @T must be a fixed-size header type 42 | void extract(out T hdr); 43 | /// Read bits from the packet into a variable-sized header @variableSizeHeader 44 | /// and advance the cursor. 45 | /// @T must be a header containing exactly 1 varbit field. 46 | /// May trigger errors PacketTooShort, StackOutOfBounds, or HeaderTooShort. 47 | void extract(out T variableSizeHeader, 48 | in bit<32> variableFieldSizeInBits); 49 | /// Read bits from the packet without advancing the cursor. 50 | /// @returns: the bits read from the packet. 51 | /// T may be an arbitrary fixed-size type. 52 | T lookahead(); 53 | /// Advance the packet cursor by the specified number of bits. 54 | void advance(in bit<32> sizeInBits); 55 | /// @return packet length in bytes. This method may be unavailable on 56 | /// some target architectures. 57 | bit<32> length(); 58 | } 59 | 60 | extern packet_out { 61 | /// Write @hdr into the output packet, advancing cursor. 62 | /// @T can be a header type, a header stack, a header_union, or a struct 63 | /// containing fields with such types. 64 | void emit(in T hdr); 65 | } 66 | 67 | // TODO: remove from this file, convert to built-in 68 | /// Check a predicate @check in the parser; if the predicate is true do nothing, 69 | /// otherwise set the parser error to @toSignal, and transition to the `reject` state. 70 | extern void verify(in bool check, in error toSignal); 71 | 72 | /// Built-in action that does nothing. 73 | action NoAction() {} 74 | 75 | /// Standard match kinds for table key fields. 76 | /// Some architectures may not support all these match kinds. 77 | /// Architectures can declare additional match kinds. 78 | match_kind { 79 | /// Match bits exactly. 80 | exact, 81 | /// Ternary match, using a mask. 82 | ternary, 83 | /// Longest-prefix match. 84 | lpm 85 | } 86 | # 3 "p4src/pint.p4" 2 87 | # 1 "/usr/local/share/p4c/p4include/v1model.p4" 1 88 | /* 89 | Copyright 2013-present Barefoot Networks, Inc. 90 | 91 | Licensed under the Apache License, Version 2.0 (the "License"); 92 | you may not use this file except in compliance with the License. 93 | You may obtain a copy of the License at 94 | 95 | http://www.apache.org/licenses/LICENSE-2.0 96 | 97 | Unless required by applicable law or agreed to in writing, software 98 | distributed under the License is distributed on an "AS IS" BASIS, 99 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 100 | See the License for the specific language governing permissions and 101 | limitations under the License. 102 | */ 103 | 104 | /* P4-16 declaration of the P4 v1.0 switch model */ 105 | 106 | 107 | 108 | 109 | # 1 "/usr/local/share/p4c/p4include/core.p4" 1 110 | /* 111 | Copyright 2013-present Barefoot Networks, Inc. 112 | 113 | Licensed under the Apache License, Version 2.0 (the "License"); 114 | you may not use this file except in compliance with the License. 115 | You may obtain a copy of the License at 116 | 117 | http://www.apache.org/licenses/LICENSE-2.0 118 | 119 | Unless required by applicable law or agreed to in writing, software 120 | distributed under the License is distributed on an "AS IS" BASIS, 121 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 122 | See the License for the specific language governing permissions and 123 | limitations under the License. 124 | */ 125 | 126 | /* This is the P4-16 core library, which declares some built-in P4 constructs using P4 */ 127 | # 23 "/usr/local/share/p4c/p4include/v1model.p4" 2 128 | 129 | match_kind { 130 | range, 131 | // Used for implementing dynamic_action_selection 132 | selector 133 | } 134 | 135 | // Are these correct? 136 | @metadata @name("standard_metadata") 137 | struct standard_metadata_t { 138 | bit<9> ingress_port; 139 | bit<9> egress_spec; 140 | bit<9> egress_port; 141 | bit<32> clone_spec; 142 | bit<32> instance_type; 143 | // The drop and recirculate_port fields are not used at all by the 144 | // behavioral-model simple_switch software switch as of September 145 | // 2018, and perhaps never was. They may be considered 146 | // deprecated, at least for that P4 target device. simple_switch 147 | // uses the value of the egress_spec field to determine whether a 148 | // packet is dropped or not, and it is recommended to use the 149 | // P4_14 drop() primitive action, or the P4_16 + v1model 150 | // mark_to_drop() primitive action, to cause that field to be 151 | // changed so the packet will be dropped. 152 | bit<1> drop; 153 | bit<16> recirculate_port; 154 | bit<32> packet_length; 155 | // 156 | // @alias is used to generate the field_alias section of the BMV2 JSON. 157 | // Field alias creates a mapping from the metadata name in P4 program to 158 | // the behavioral model's internal metadata name. Here we use it to 159 | // expose all metadata supported by simple switch to the user through 160 | // standard_metadata_t. 161 | // 162 | // flattening fields that exist in bmv2-ss 163 | // queueing metadata 164 | @alias("queueing_metadata.enq_timestamp") bit<32> enq_timestamp; 165 | @alias("queueing_metadata.enq_qdepth") bit<19> enq_qdepth; 166 | @alias("queueing_metadata.deq_timedelta") bit<32> deq_timedelta; 167 | @alias("queueing_metadata.deq_qdepth") bit<19> deq_qdepth; 168 | // intrinsic metadata 169 | @alias("intrinsic_metadata.ingress_global_timestamp") bit<48> ingress_global_timestamp; 170 | @alias("intrinsic_metadata.egress_global_timestamp") bit<48> egress_global_timestamp; 171 | @alias("intrinsic_metadata.lf_field_list") bit<32> lf_field_list; 172 | @alias("intrinsic_metadata.mcast_grp") bit<16> mcast_grp; 173 | @alias("intrinsic_metadata.resubmit_flag") bit<32> resubmit_flag; 174 | @alias("intrinsic_metadata.egress_rid") bit<16> egress_rid; 175 | /// Indicates that a verify_checksum() method has failed. 176 | // 1 if a checksum error was found, otherwise 0. 177 | bit<1> checksum_error; 178 | @alias("intrinsic_metadata.recirculate_flag") bit<32> recirculate_flag; 179 | /// Error produced by parsing 180 | error parser_error; 181 | } 182 | 183 | enum CounterType { 184 | packets, 185 | bytes, 186 | packets_and_bytes 187 | } 188 | 189 | enum MeterType { 190 | packets, 191 | bytes 192 | } 193 | 194 | extern counter { 195 | counter(bit<32> size, CounterType type); 196 | void count(in bit<32> index); 197 | } 198 | 199 | extern direct_counter { 200 | direct_counter(CounterType type); 201 | void count(); 202 | } 203 | 204 | extern meter { 205 | meter(bit<32> size, MeterType type); 206 | void execute_meter(in bit<32> index, out T result); 207 | } 208 | 209 | extern direct_meter { 210 | direct_meter(MeterType type); 211 | void read(out T result); 212 | } 213 | 214 | extern register { 215 | register(bit<32> size); 216 | void read(out T result, in bit<32> index); 217 | void write(in bit<32> index, in T value); 218 | } 219 | 220 | // used as table implementation attribute 221 | extern action_profile { 222 | action_profile(bit<32> size); 223 | } 224 | 225 | // Get a random number in the range lo..hi 226 | extern void random(out T result, in T lo, in T hi); 227 | // If the type T is a named struct, the name is used 228 | // to generate the control-plane API. 229 | extern void digest(in bit<32> receiver, in T data); 230 | 231 | enum HashAlgorithm { 232 | crc32, 233 | crc32_custom, 234 | crc16, 235 | crc16_custom, 236 | random, 237 | identity, 238 | csum16, 239 | xor16 240 | } 241 | 242 | extern void mark_to_drop(); 243 | extern void hash(out O result, in HashAlgorithm algo, in T base, in D data, in M max); 244 | 245 | extern action_selector { 246 | action_selector(HashAlgorithm algorithm, bit<32> size, bit<32> outputWidth); 247 | } 248 | 249 | enum CloneType { 250 | I2E, 251 | E2E 252 | } 253 | 254 | @deprecated("Please use verify_checksum/update_checksum instead.") 255 | extern Checksum16 { 256 | Checksum16(); 257 | bit<16> get(in D data); 258 | } 259 | 260 | /** 261 | Verifies the checksum of the supplied data. 262 | If this method detects that a checksum of the data is not correct it 263 | sets the standard_metadata checksum_error bit. 264 | @param T Must be a tuple type where all the fields are bit-fields or varbits. 265 | The total dynamic length of the fields is a multiple of the output size. 266 | @param O Checksum type; must be bit type. 267 | @param condition If 'false' the verification always succeeds. 268 | @param data Data whose checksum is verified. 269 | @param checksum Expected checksum of the data; note that is must be a left-value. 270 | @param algo Algorithm to use for checksum (not all algorithms may be supported). 271 | Must be a compile-time constant. 272 | */ 273 | extern void verify_checksum(in bool condition, in T data, inout O checksum, HashAlgorithm algo); 274 | /** 275 | Computes the checksum of the supplied data. 276 | @param T Must be a tuple type where all the fields are bit-fields or varbits. 277 | The total dynamic length of the fields is a multiple of the output size. 278 | @param O Output type; must be bit type. 279 | @param condition If 'false' the checksum is not changed 280 | @param data Data whose checksum is computed. 281 | @param checksum Checksum of the data. 282 | @param algo Algorithm to use for checksum (not all algorithms may be supported). 283 | Must be a compile-time constant. 284 | */ 285 | extern void update_checksum(in bool condition, in T data, inout O checksum, HashAlgorithm algo); 286 | 287 | /** 288 | Verifies the checksum of the supplied data including the payload. 289 | The payload is defined as "all bytes of the packet which were not parsed by the parser". 290 | If this method detects that a checksum of the data is not correct it 291 | sets the standard_metadata checksum_error bit. 292 | @param T Must be a tuple type where all the fields are bit-fields or varbits. 293 | The total dynamic length of the fields is a multiple of the output size. 294 | @param O Checksum type; must be bit type. 295 | @param condition If 'false' the verification always succeeds. 296 | @param data Data whose checksum is verified. 297 | @param checksum Expected checksum of the data; note that is must be a left-value. 298 | @param algo Algorithm to use for checksum (not all algorithms may be supported). 299 | Must be a compile-time constant. 300 | */ 301 | extern void verify_checksum_with_payload(in bool condition, in T data, inout O checksum, HashAlgorithm algo); 302 | /** 303 | Computes the checksum of the supplied data including the payload. 304 | The payload is defined as "all bytes of the packet which were not parsed by the parser". 305 | @param T Must be a tuple type where all the fields are bit-fields or varbits. 306 | The total dynamic length of the fields is a multiple of the output size. 307 | @param O Output type; must be bit type. 308 | @param condition If 'false' the checksum is not changed 309 | @param data Data whose checksum is computed. 310 | @param checksum Checksum of the data. 311 | @param algo Algorithm to use for checksum (not all algorithms may be supported). 312 | Must be a compile-time constant. 313 | */ 314 | extern void update_checksum_with_payload(in bool condition, in T data, inout O checksum, HashAlgorithm algo); 315 | 316 | extern void resubmit(in T data); 317 | extern void recirculate(in T data); 318 | extern void clone(in CloneType type, in bit<32> session); 319 | extern void clone3(in CloneType type, in bit<32> session, in T data); 320 | 321 | extern void truncate(in bit<32> length); 322 | 323 | // The name 'standard_metadata' is reserved 324 | 325 | // Architecture. 326 | // M should be a struct of structs 327 | // H should be a struct of headers, stacks or header_unions 328 | 329 | parser Parser(packet_in b, 330 | out H parsedHdr, 331 | inout M meta, 332 | inout standard_metadata_t standard_metadata); 333 | 334 | /* The only legal statements in the implementation of the 335 | VerifyChecksum control are: block statements, calls to the 336 | verify_checksum and verify_checksum_with_payload methods, 337 | and return statements. */ 338 | control VerifyChecksum(inout H hdr, 339 | inout M meta); 340 | @pipeline 341 | control Ingress(inout H hdr, 342 | inout M meta, 343 | inout standard_metadata_t standard_metadata); 344 | @pipeline 345 | control Egress(inout H hdr, 346 | inout M meta, 347 | inout standard_metadata_t standard_metadata); 348 | 349 | /* The only legal statements in the implementation of the 350 | ComputeChecksum control are: block statements, calls to the 351 | update_checksum and update_checksum_with_payload methods, 352 | and return statements. */ 353 | control ComputeChecksum(inout H hdr, 354 | inout M meta); 355 | @deparser 356 | control Deparser(packet_out b, in H hdr); 357 | 358 | package V1Switch(Parser p, 359 | VerifyChecksum vr, 360 | Ingress ig, 361 | Egress eg, 362 | ComputeChecksum ck, 363 | Deparser dep 364 | ); 365 | # 4 "p4src/pint.p4" 2 366 | 367 | const bit<16> TYPE_IPV4 = 0x800; 368 | const bit<16> L2_LEARN_ETHER_TYPE = 0x1234; 369 | 370 | /************************************************************************* 371 | *********************** H E A D E R S *********************************** 372 | *************************************************************************/ 373 | 374 | typedef bit<9> egressSpec_t; 375 | typedef bit<48> macAddr_t; 376 | typedef bit<32> ip4Addr_t; 377 | const bit<32> BMV2_V1MODEL_INSTANCE_TYPE_REPLICATION = 5; 378 | 379 | 380 | header ethernet_t { 381 | macAddr_t dstAddr; 382 | macAddr_t srcAddr; 383 | bit<16> etherType; 384 | } 385 | 386 | header ipv4_t { 387 | bit<4> version; 388 | bit<4> ihl; 389 | bit<6> dscp; 390 | bit<2> ecn; 391 | bit<16> totalLen; 392 | bit<16> identification; 393 | bit<3> flags; 394 | bit<13> fragOffset; 395 | bit<8> ttl; 396 | bit<8> protocol; 397 | bit<16> hdrChecksum; 398 | ip4Addr_t srcAddr; 399 | ip4Addr_t dstAddr; 400 | } 401 | 402 | header switch_to_cpu_header_t { 403 | bit<32> word0; 404 | bit<32> word1; 405 | } 406 | 407 | 408 | struct headers { 409 | switch_to_cpu_header_t switch_to_cpu; 410 | ethernet_t ethernet; 411 | ipv4_t ipv4; 412 | } 413 | 414 | struct learn_t{ 415 | bit<48> global_hash; 416 | bit<48> digest; 417 | bit<48> approximation; 418 | bit<32> switch_id; 419 | bit<16> packet_id; 420 | bit<8> ttl; 421 | bit<1> decision; 422 | } 423 | 424 | struct metadata { 425 | bit<9> ingress_port; 426 | bit<48> approximation; 427 | bit<48> global_hash; 428 | 429 | bit<48> digest_1; 430 | bit<48> digest_2; 431 | bit<48> digest_3; 432 | 433 | bit<32> switch_id; 434 | bit<32> decider_hash_pint; 435 | bit<32> decider_hash_asm; 436 | bit<13> asm_hash_1; 437 | bit<13> asm_hash_2; 438 | bit<13> asm_hash_3; 439 | bit<13> asm_hash_4; 440 | bit<13> asm_hash_5; 441 | bit<13> asm_hash_6; 442 | bit<13> asm_hash_7; 443 | bit<13> asm_hash_8; 444 | 445 | bit<32> xor_hash; 446 | learn_t learn_data; 447 | bit<8> ttl; 448 | bit<32> b_value; 449 | } 450 | 451 | 452 | /************************************************************************* 453 | *********************** P A R S E R *********************************** 454 | *************************************************************************/ 455 | 456 | parser MyParser(packet_in packet, 457 | out headers hdr, 458 | inout metadata meta, 459 | inout standard_metadata_t standard_metadata) { 460 | 461 | state start { 462 | packet.extract(hdr.ethernet); 463 | packet.extract(hdr.ipv4); 464 | transition accept; 465 | } 466 | } 467 | 468 | 469 | /************************************************************************* 470 | ************ C H E C K S U M V E R I F I C A T I O N ************* 471 | *************************************************************************/ 472 | 473 | control MyVerifyChecksum(inout headers hdr, inout metadata meta) { 474 | apply { } 475 | } 476 | 477 | 478 | /************************************************************************* 479 | ************** I N G R E S S P R O C E S S I N G ******************* 480 | *************************************************************************/ 481 | 482 | control MyIngress(inout headers hdr, 483 | inout metadata meta, 484 | inout standard_metadata_t standard_metadata) { 485 | 486 | action drop() { 487 | mark_to_drop(); 488 | } 489 | 490 | action forward(bit<9> egress_port){ 491 | //Standard routing 492 | standard_metadata.egress_spec=egress_port; 493 | 494 | //Read the current TTL 495 | bit <32> diff=256-(bit<32>)hdr.ipv4.ttl; 496 | 497 | //Decider hash 498 | hash(meta.decider_hash_pint, HashAlgorithm.crc32, (bit<1>)0, {hdr.ipv4.identification},(bit<32>)100); 499 | 500 | //XOR hash 501 | hash(meta.xor_hash, HashAlgorithm.crc32, (bit<1>)0, {hdr.ipv4.identification,diff},(bit<32>)1000000); 502 | 503 | //Hashing to understand if needs to copy digest 504 | hash(meta.global_hash, HashAlgorithm.crc32, (bit<1>)0, {hdr.ipv4.identification,diff},(bit<48>)1000000); 505 | 506 | /*Creating digest of the switch: 507 | Using 48 bits of the destination MAC address to accomodate PINT8, PINT4 and PINT1 508 | Speeds up evaluation. 509 | */ 510 | hash(meta.digest_1, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id,hdr.ipv4.identification},(bit<16>)255); 511 | hash(meta.digest_2, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id,hdr.ipv4.identification},(bit<16>)7); 512 | hash(meta.digest_3, HashAlgorithm.crc32, (bit<32>)0, {meta.switch_id,hdr.ipv4.identification},(bit<16>)1); 513 | 514 | //Combining PINT8, PINT4 and PINT1 into the final digest. 515 | bit <48> final_digest=(meta.digest_1 << 32) + (meta.digest_2 << 16) + (meta.digest_3); 516 | 517 | //Estimating the XOR of switch ID 518 | bit<48> xor_extract=1; 519 | bit<48> dstAddr_1=((xor_extract << 16) - 1) & (hdr.ethernet.dstAddr >> 0); 520 | bit<48> dstAddr_2=((xor_extract << 16) - 1) & (hdr.ethernet.dstAddr >> 16); 521 | bit<48> dstAddr_3=((xor_extract << 16) - 1) & (hdr.ethernet.dstAddr >> 32); 522 | 523 | dstAddr_1=dstAddr_1^(bit<48>)meta.switch_id; 524 | dstAddr_2=dstAddr_2^(bit<48>)meta.switch_id; 525 | dstAddr_3=dstAddr_3^(bit<48>)meta.switch_id; 526 | 527 | 528 | bit<8> dstAddr_1_final=(bit<8>)dstAddr_1; 529 | bit<4> dstAddr_2_final=(bit<4>)dstAddr_2; 530 | bit<1> dstAddr_3_final=(bit<1>)dstAddr_3; 531 | 532 | bit <48> final_xor_digest=((bit<48>)dstAddr_1_final << 32) + ((bit<48>)dstAddr_2_final << 16) + ((bit<48>)dstAddr_3_final); 533 | 534 | /*Copying the digest to the destination MAC for 535 | some packets. 536 | */ 537 | if (meta.decider_hash_pint<50){ 538 | if (meta.global_hash)meta.switch_id; 544 | } 545 | } 546 | 547 | /*Copying the XOR digest to the destination MAC for 548 | some packets. 549 | */ 550 | if (meta.decider_hash_pint>=50){ 551 | if (meta.xor_hash<=100000){ 552 | //Copying the digest to Destination MAC 553 | hdr.ethernet.dstAddr=final_xor_digest; 554 | 555 | //Copying the switch ID to source MAC. Used only for verification 556 | hdr.ipv4.hdrChecksum=(bit<16>)meta.switch_id; 557 | } 558 | } 559 | hdr.ipv4.ttl=hdr.ipv4.ttl-1; 560 | 561 | } 562 | 563 | table dmac{ 564 | key={ 565 | hdr.ipv4.dstAddr: exact; 566 | } 567 | actions={ 568 | forward; 569 | NoAction; 570 | } 571 | size=256; 572 | default_action=NoAction; 573 | } 574 | 575 | 576 | action copy_to_metadata(bit<48> approximation, bit<32> switch_id, bit<32> b_value){ 577 | meta.approximation=approximation; 578 | meta.switch_id=switch_id; 579 | meta.b_value=b_value; 580 | } 581 | 582 | table ttl_rules{ 583 | key={ 584 | hdr.ipv4.ttl: exact; 585 | } 586 | actions={ 587 | copy_to_metadata; 588 | NoAction; 589 | } 590 | size=256; 591 | default_action=NoAction; 592 | } 593 | 594 | apply { 595 | ttl_rules.apply(); 596 | dmac.apply(); 597 | } 598 | } 599 | 600 | /************************************************************************* 601 | **************** E G R E S S P R O C E S S I N G ******************* 602 | *************************************************************************/ 603 | 604 | control MyEgress(inout headers hdr, 605 | inout metadata meta, 606 | inout standard_metadata_t standard_metadata) { 607 | apply { 608 | hdr.ipv4.ecn=1; 609 | } 610 | } 611 | 612 | /************************************************************************* 613 | ************* C H E C K S U M C O M P U T A T I O N ************** 614 | *************************************************************************/ 615 | 616 | control MyComputeChecksum(inout headers hdr, inout metadata meta) { 617 | apply { 618 | 619 | } 620 | } 621 | 622 | /************************************************************************* 623 | *********************** D E P A R S E R ******************************* 624 | *************************************************************************/ 625 | 626 | control MyDeparser(packet_out packet, in headers hdr) { 627 | apply { 628 | //parsed headers have to be added again into the packet. 629 | packet.emit(hdr.switch_to_cpu); 630 | packet.emit(hdr.ethernet); 631 | packet.emit(hdr.ipv4); 632 | } 633 | } 634 | 635 | /************************************************************************* 636 | *********************** S W I T C H ******************************* 637 | *************************************************************************/ 638 | //switch architecture 639 | V1Switch( 640 | MyParser(), 641 | MyVerifyChecksum(), 642 | MyIngress(), 643 | MyEgress(), 644 | MyComputeChecksum(), 645 | MyDeparser() 646 | ) main; 647 | --------------------------------------------------------------------------------