Commit Graph

346 Commits

Author SHA1 Message Date
Nico Schottelius 811e4c2b11 Separate checksum addition/subtraction into 2 steps 2019-07-16 12:30:29 +02:00
Nico Schottelius 5221675b6a +v4sum 2019-07-16 12:16:36 +02:00
Nico Schottelius ec48d89c67 get the v6sum 2019-07-16 12:14:46 +02:00
Nico Schottelius 1a5d3c529b rename ipv4 header checksum 2019-07-16 12:07:21 +02:00
Nico Schottelius ecab110d7c Back to 16 bit arithmetic 2019-07-16 12:06:26 +02:00
Nico Schottelius 428faead17 "fqdn" 2019-07-16 11:54:29 +02:00
Nico Schottelius 3ccbcd767c Use new style includes 2019-07-16 11:53:54 +02:00
Nico Schottelius 1a39c35e3b Check how wrapping is done in P4 2019-07-16 11:53:00 +02:00
Nico Schottelius beada8408a udp translation adopted 2019-07-16 10:55:17 +02:00
Nico Schottelius baa50b91c6 Use own filtering code 2019-07-15 16:53:57 +02:00
Nico Schottelius a8b00447e9 +dummy 2019-07-15 16:50:09 +02:00
Nico Schottelius f0900c3821 update tcp checksumming 2019-07-15 16:48:24 +02:00
Nico Schottelius 26c27cefa8 Change order of complement & filtering 2019-07-15 16:20:51 +02:00
Nico Schottelius 991b725c36 -typo 2019-07-15 16:13:13 +02:00
Nico Schottelius 52adbb1990 Migrate scapy shift/filter code to P4 2019-07-15 16:11:21 +02:00
Nico Schottelius 2caace5735 +1 2019-07-15 14:25:50 +02:00
Nico Schottelius fc60e4f45f -1 2019-07-15 14:24:04 +02:00
Nico Schottelius 51bf8b9ace netfpga: update test packet generator; checksum: implement carry over 2019-07-15 14:18:35 +02:00
Nico Schottelius 7599ebb89d Try to prevent underrun / possible off by one
Checking for bigger value
2019-07-13 18:05:50 +02:00
Nico Schottelius 86885760b2 update gen_testdata
- add more packets
- fix counter for one packet
2019-07-13 17:28:03 +02:00
Nico Schottelius d62a17dbe7 netpfga/bmv2 mixup 2019-07-11 11:01:33 +02:00
Nico Schottelius 7e794b5c10 - } 2019-07-11 10:59:42 +02:00
Nico Schottelius e9997964cd Split of checksumming of bmv2 2019-07-11 10:50:00 +02:00
Nico Schottelius 13ab000b18 Merge branch 'master' of gitlab.ethz.ch:nicosc/master-thesis 2019-07-11 08:47:45 +02:00
Nico Schottelius 378e16f48c ++stuff 2019-07-11 08:47:34 +02:00
Nico Schottelius 09d5c23aad make port a command 2019-07-10 23:25:09 +02:00
Nico Schottelius 9eccd6e95a ignore temp files 2019-07-10 23:16:55 +02:00
Nico Schottelius 4387e37f4e Shorten the name
It seems include with filenames over some length are not supported in sdnet
2019-07-10 23:05:51 +02:00
Nico Schottelius 0eb5d53438 include new actions 2019-07-10 22:51:45 +02:00
Nico Schottelius 5da69c79d3 use commands.txt for sending traffic on port1 2019-07-10 22:50:18 +02:00
Nico Schottelius 35d824b7f3 ++netpfga 2019-07-10 22:47:52 +02:00
Nico Schottelius ee3c594bf1 make
Signed-off-by: Nico Schottelius <nico@nico-notebook.schottelius.org>
2019-07-10 22:39:04 +02:00
Nico Schottelius 6430cf8264 unify headers on netpfga 2019-07-10 22:36:34 +02:00
Nico Schottelius ff1688e3b2 integrate netpfga/p4 generic 2019-07-10 22:28:37 +02:00
Nico Schottelius 6812dc46fd Fix off-by-one in tcp, too 2019-07-10 21:35:25 +02:00
Nico Schottelius 0b7f0347d4 off by one for delta checksums 2019-07-10 21:26:09 +02:00
Nico Schottelius 8ac508162a Add the complement diff 2019-07-10 15:28:59 +02:00
Nico Schottelius 5a093cf0cf Include diff complement 2019-07-10 15:11:19 +02:00
Nico Schottelius 9fdc909838 put the diff into the checksum 2019-07-10 14:49:23 +02:00
Nico Schottelius 0178a1a224 ifdef update 2019-07-10 13:46:00 +02:00
Nico Schottelius ade37e1a94 Trigger def for checksum 2019-07-10 13:45:17 +02:00
Nico Schottelius a370fcbb6c another meta fix 2019-07-10 13:44:04 +02:00
Nico Schottelius 7cec2b635d another meta fix 2019-07-10 13:43:37 +02:00
Nico Schottelius ebda2acbdc meta is not in a hdr 2019-07-10 13:42:37 +02:00
Nico Schottelius ae8ce224fc [delta checksum] in theory finish for v4-udp => v6-udp 2019-07-10 13:38:59 +02:00
Nico Schottelius 2839b8e4b2 ++ arp 2019-07-10 09:13:28 +02:00
Nico Schottelius 6246e99c5d Include egress 2019-07-10 09:11:57 +02:00
Nico Schottelius 4b6bd01dda generic -> controller 2019-07-10 09:10:59 +02:00
Nico Schottelius be73b24fb9 --typo 2019-07-10 09:09:18 +02:00
Nico Schottelius d82c843fff Re-include NAT64 generic 2019-07-10 09:08:32 +02:00
Nico Schottelius 8309f4367c Split logic into smaller action blocks 2019-07-10 09:07:17 +02:00
Nico Schottelius 8d2b73edee fix ipv6 var naming 2019-07-10 08:56:46 +02:00
Nico Schottelius 476b04c97c ++doc ++egress port 2019-07-10 08:55:07 +02:00
Nico Schottelius df73b417c6 Add controller_reply 2019-07-10 08:50:21 +02:00
Nico Schottelius d32543cf1b Syntax change: no += 2019-07-10 08:49:09 +02:00
Nico Schottelius c714b2748b Try replacing += syntax with explicit 2019-07-10 08:48:06 +02:00
Nico Schottelius ff383e3b08 add test json file for bmv2 2019-07-10 08:44:56 +02:00
Nico Schottelius a69c4060e2 begin implementing diff based checksum in p4 2019-07-06 20:57:11 +02:00
Nico Schottelius ce212ed9e1 Checksums: ipv4 diff not needed; minip4: enable icmp, arp 2019-07-01 11:03:10 +02:00
Nico Schottelius 8b8f70e6a0 Begin to introduce commented out code, use metadata 2019-06-24 13:05:42 +02:00
Nico Schottelius f9ce0b92a6 modify settings.h for netpfga 2019-06-24 12:55:27 +02:00
Nico Schottelius b8897a7b35 Adjust headers to work with netpfga #1
make[1]: Entering directory '/home/nico/master-thesis/netpfga/minip4/src'
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
headers.p4(12): error: Duplicate declaration of port_t; previous at
typedef bit<9> port_t
               ^^^^^^
/opt/xilinx/SDNet/2018.2/data/p4include/sume_switch.p4(37)
typedef bit<8> port_t;
               ^^^^^^
headers.p4(12): error: port_t: Duplicates declaration port_t
typedef bit<9> port_t;
               ^^^^^^
/opt/xilinx/SDNet/2018.2/data/p4include/sume_switch.p4(37)
typedef bit<8> port_t;
               ^^^^^^
error: 2 errors encountered, aborting compilation
make[1]: *** [Makefile:5: all] Error 1
make[1]: Leaving directory '/home/nico/master-thesis/netpfga/minip4/src'
make: *** [Makefile:31: frontend] Error 2
2019-06-06 22:34:32 +02:00
Nico Schottelius 56d2f2ee65 cleanup && integrate headers.p4 into minip4 2019-06-03 23:00:32 +02:00
Nico Schottelius 63ec17b9a4 begin to integrate headers of real code into netpfga 2019-06-03 22:33:37 +02:00
Nico Schottelius 78b037038a ipv4 egress if tcp session hit 2019-05-06 12:52:29 +02:00
Nico Schottelius 7be9c01b48 stop processing v6 when matching for nat64 session 2019-05-06 12:50:45 +02:00
Nico Schottelius 1a1d2fcdb7 [no init from v4 world] 2019-05-06 12:20:45 +02:00
Nico Schottelius 522b4d6593 ++addr change 2019-05-06 12:18:10 +02:00
Nico Schottelius b0b9cd7461 [controller] insert 6->4 session 2019-05-06 12:16:22 +02:00
Nico Schottelius 7fedd83959 [p4src] in theory finish source requirements for sessions 2019-05-06 11:51:04 +02:00
Nico Schottelius b972accc73 [refactor] nat64 now - not only static mapping anymore 2019-05-05 13:48:05 +02:00
Nico Schottelius 02fc065c1d Begin adding session tables, debug infos 2019-05-02 13:54:31 +02:00
Nico Schottelius fe9d169bef Add tcp/udp checksum triggers 2019-04-11 10:15:37 +02:00
Nico Schottelius 1afcd82e42 Update names 2019-04-11 10:13:54 +02:00
Nico Schottelius c082106338 -, 2019-04-11 10:11:57 +02:00
Nico Schottelius e26c348e71 +indent 2019-04-11 10:10:39 +02:00
Nico Schottelius bf59808806 Add checksums for udp_6, udp_v4, tcp_v6, tcp_v4 2019-04-11 10:08:11 +02:00
Nico Schottelius 6c3393e941 next steps, use noaction to avoid clone3() and breaking ndp 2019-04-08 15:59:28 +02:00
Nico Schottelius 71d1e86d3f Setup the cast_length in icmp->icmp6 translations 2019-04-03 12:44:00 +02:00
Nico Schottelius 9d2f418f78 Remove cloning on table miss 2019-04-03 12:38:55 +02:00
Nico Schottelius 2c9f4923b6 ++notes -remove unused debugging code 2019-04-03 12:02:40 +02:00
Nico Schottelius 13e77c89f6 syntax correction 2019-04-03 11:56:50 +02:00
Nico Schottelius 2c377f2df6 Correct field names 2019-04-03 11:56:10 +02:00
Nico Schottelius 74e4e7034b Trigger ipv4 checksumming after nat64 translation 2019-04-03 11:46:52 +02:00
Nico Schottelius 0f2df2723b Set mac address based on destination network [HACK] 2019-04-03 11:31:29 +02:00
Nico Schottelius bc2eb7dad1 Change ethernet addresses, too 2019-04-03 11:02:07 +02:00
Nico Schottelius fb02ca1a7f Set checksum flag for icmp 2019-04-03 10:56:32 +02:00
Nico Schottelius 1d08a942d5 -() 2019-04-03 10:53:16 +02:00
Nico Schottelius d87b897069 Add icmp handling / replying 2019-04-03 10:52:25 +02:00
Nico Schottelius fdf828d687 Do not not not double swap 2019-04-03 10:21:40 +02:00
Nico Schottelius fbe8e66431 Make arp swapping more readable, --BUG 2019-04-02 17:42:56 +02:00
Nico Schottelius 6e22465ae4 Update arp processing for ethernet 2019-04-02 17:22:21 +02:00
Nico Schottelius 16a1620002 Also emit the arp header 2019-04-02 17:16:17 +02:00
Nico Schottelius 018e9eef09 Begin to add egress / arp support 2019-04-02 17:13:05 +02:00
Nico Schottelius 30dcc0af81 Try to outsmart the compiler with the arp table
Adressing

p4c --target bmv2 --arch v1model --std p4-16 "../p4src/static-mapping.p4" -o "/home/p4/master-thesis/p4src"
../p4src/static-mapping.p4(366): error: Program is not supported by this target, because table MyIngress.v6_networks has multiple successors
    table v6_networks {
          ^^^^^^^^^^^
Compilation Error
2019-03-31 16:40:44 +02:00
Nico Schottelius 26605a43e7 Arp is not IPv4 2019-03-31 16:37:21 +02:00
Nico Schottelius 5097f9dbd1 +action for arp table 2019-03-31 15:55:57 +02:00
Nico Schottelius d8d7591647 +header arp 2019-03-31 15:50:07 +02:00
Nico Schottelius 07f0867175 Begin to introduce arp support 2019-03-31 15:48:00 +02:00
Nico Schottelius 801b4d818e Fix total_length by adding 15 bytes 2019-03-30 18:11:04 +01:00
Nico Schottelius cd3084d8f9 rewrite checksum triggers in ndp/echo reply 2019-03-30 17:19:17 +01:00
Nico Schottelius 33117f0ca8 Remove unused tables 2019-03-30 17:12:34 +01:00
Nico Schottelius cb3b1501ef also setter code s/true/1/ 2019-03-30 17:03:06 +01:00
Nico Schottelius ec40bc2c54 s/bool/bit<1>/
Fixing

Invalid entry type 'expression' in field list
bad json:
{
   "type" : "expression",
   "value" : {
      "type" : "expression",
      "value" : {
         "left" : null,
         "op" : "d2b",
         "right" : {
            "type" : "field",
            "value" : [ "scalars", "metadata.chk_icmp6" ]
         }
      }
   }
}
2019-03-30 17:02:18 +01:00
Nico Schottelius d1cc9d2643 Rewrite one check to bit<1> 2019-03-30 17:01:04 +01:00
Nico Schottelius 9f5b9fb0c9 Compare the right field 2019-03-30 16:59:32 +01:00
Nico Schottelius bfd4a35942 Try to find another workaround against json error in the switch
[15:54:38.463] [bmv2] [D] [thread 21721] Set default default entry for table 'MyIngress.nat46': MyIngress.controller_debug_table_id - 4,
[15:54:38.463] [bmv2] [D] [thread 21721] Set default default entry for table 'tbl_act_3': act_3 -
[15:54:38.463] [bmv2] [D] [thread 21721] Set default default entry for table 'tbl_act_4': act_4 -
[15:54:38.463] [bmv2] [D] [thread 21721] Set default default entry for table 'tbl_nat46_icmp_generic': MyIngress.nat46_icmp_generic -
[15:54:38.463] [bmv2] [D] [thread 21721] Set default default entry for table 'tbl_act_5': act_5 -
[15:54:38.463] [bmv2] [D] [thread 21721] Set default default entry for table 'tbl_act_6': act_6 -
[15:54:38.463] [bmv2] [D] [thread 21721] Set default default entry for table 'tbl_act_7': act_7 -
Invalid entry type 'expression' in field list
bad json:
{
   "type" : "expression",
   "value" : {
      "type" : "expression",
      "value" : {
         "left" : null,
         "op" : "d2b",
         "right" : {
            "type" : "field",
            "value" : [ "scalars", "metadata.chk_icmp6_na_ns" ]
         }
      }
   }
}

p4@ubuntu:~/master-thesis/p4app$
2019-03-30 16:57:57 +01:00
Nico Schottelius 78308a00ee v6: next_header 2019-03-30 16:54:19 +01:00
Nico Schottelius dae3d5ce30 + { 2019-03-30 16:53:20 +01:00
Nico Schottelius f57f15a9cb Cleanup tables++ 2019-03-30 16:51:34 +01:00
Nico Schottelius d5312dd04c Change table name 2019-03-30 16:50:17 +01:00
Nico Schottelius 92163d46ef Begin NAT46 translation of ICMP->ICMP6 2019-03-30 16:35:52 +01:00
Nico Schottelius 881643e2c3 +chk_ prefix 2019-03-30 15:01:24 +01:00
Nico Schottelius f32ad44e0b Refactor #n: go back to generic entry point, use if in apply{} 2019-03-30 14:59:46 +01:00
Nico Schottelius 432965eb4f Reordering actions... 2019-03-27 20:15:31 +01:00
Nico Schottelius b87b7b72f6 Action definition order matters... 2019-03-27 20:12:56 +01:00
Nico Schottelius f52522fe0c Correct typo / rename bug 2019-03-27 20:11:41 +01:00
Nico Schottelius b12d5d41ee Resolve name conflict 2019-03-27 20:08:49 +01:00
Nico Schottelius d6264a32a4 Add code to mimic if in action
New table logic, new actions
2019-03-27 19:43:49 +01:00
Nico Schottelius ac96fe467d Commit sketch tables for reference 2019-03-27 18:59:35 +01:00
Nico Schottelius c551b944f8 Remove outter if action call 2019-03-27 18:25:56 +01:00
Nico Schottelius 9a5571fc39 Remove inner if 2019-03-27 18:25:05 +01:00
Nico Schottelius 12658b23ac Use an action to do the same thing as before 2019-03-27 18:22:37 +01:00
Nico Schottelius 7d9e9e1cfd Replace switch in action with multiple if's
p4c --target bmv2 --arch v1model --std p4-16 "../p4src/static-mapping.p4" -o "/home/p4/master-thesis/p4src"
../p4src/static-mapping.p4(60): error: SwitchStatement: switch statements not allowed in actions
        switch(hdr.icmp6.type) {
        ^^^^^^
2019-03-27 18:05:59 +01:00
Nico Schottelius aa1b316767 + block in swtich 2019-03-27 18:02:42 +01:00
Nico Schottelius 404d4ff0df Begin checksumming icmp4 2019-03-27 18:01:11 +01:00
Your Name 31c86b2e7c Actually call() the function! 2019-03-27 13:13:04 +00:00
Your Name 907f677e2d Use if instead of switch 2019-03-27 13:09:27 +00:00
Nico Schottelius 01d9305350 Move def of nat64_icmp6 prior to use 2019-03-27 13:55:07 +01:00
Nico Schottelius e349de5859 Change protocol in case of icmp6->icmp 2019-03-27 13:49:39 +01:00
Nico Schottelius c1953aab5c Re-enable standard IPv4 processing 2019-03-27 13:32:14 +01:00
Nico Schottelius f59c35c41b setValid() before filling in the values 2019-03-27 13:26:50 +01:00
Nico Schottelius 29296a30e4 verify again 2019-03-26 22:16:53 +01:00
Nico Schottelius 74420d8bbd Uncomment region to check flow 2019-03-26 22:13:17 +01:00
Nico Schottelius 658227cd5b Clarify execution order in nat64/nat46 case 2019-03-26 22:06:35 +01:00
Nico Schottelius e48abdb254 Use symbolic names in debugging 2019-03-25 14:28:36 +01:00
Nico Schottelius 764245a914 Add table_id info to the NAT* tables 2019-03-25 14:16:14 +01:00
Nico Schottelius 1c1eeaf46e + table id bit width 2019-03-25 14:04:11 +01:00
Nico Schottelius f25d98503f Correct field width 2019-03-25 14:03:04 +01:00
Nico Schottelius 1e9ba58148 +; 2019-03-25 14:00:22 +01:00
Nico Schottelius 1e95278eb7 Try to use default action with parameter 2019-03-25 13:57:09 +01:00
Nico Schottelius f965942dd5 Add action to action list 2019-03-25 13:51:08 +01:00
Nico Schottelius 976397379d Try to use function parameter in default_action 2019-03-25 13:50:29 +01:00
Nico Schottelius f0fc4bcf0e +; 2019-03-25 13:44:31 +01:00
Nico Schottelius 9ca4d4c8de Transport table debug information to controller 2019-03-25 13:43:47 +01:00
Nico Schottelius b5524b636f Order matters in function definition 2019-03-25 13:13:02 +01:00
Nico Schottelius 236bd8e7d6 Debug send ipv4 packets to controller 2019-03-25 13:09:29 +01:00
Nico Schottelius c6b1463e17 Debug missing checksum, introduce new field 2019-03-25 13:02:09 +01:00
Nico Schottelius 905f51fba3 Add checksum marker 2019-03-25 12:56:54 +01:00
Nico Schottelius 6e40043c71 +, 2019-03-25 12:13:10 +01:00