aboutsummaryrefslogtreecommitdiffstats
path: root/docs/tag_documentation.rst
AgeCommit message (Expand)AuthorFilesLines
2020-03-10Make RXQs/TXQs configurablePeter Mikus1-0/+10
2020-01-15Remove everything related to TLDKVratko Polak1-4/+0
2020-01-09DMM: RemoveTibor Frank1-4/+0
2019-11-13LIGATO: RemovePeter Mikus1-14/+0
2019-11-13Add vpp loadbalancer l3dsr/nat4 mode test suiteshaiyanx1.zhang1-2/+10
2019-10-25Introduce pre-initialize driver layerPeter Mikus1-0/+10
2019-10-09Add vpp loadbalancer maglev mode test suitehaiyanX1.zhang1-0/+4
2019-09-21Fixing typo tag_documentation for LISPNidhy1-1/+1
2019-09-19LISP: 3-node (func) to 2-node (dev) converstionNidhy1-0/+20
2019-08-23Introduce reconfig suites, for dot1q+ip4+vxlanVratko Polak1-14/+32
2019-06-19Add scale ipsec tunnel testsPeter Mikus1-2/+2
2019-05-23CSIT-1506: Rework IPsec base testcasesPeter Mikus1-4/+24
2019-04-26NF density tests with dtc=0.5 and dtcr=2Peter Mikus1-0/+10
2019-04-08Upgrade autogen to NICs and search typesVratko Polak1-0/+28
2019-04-05Fixes for Taishan testbedjuraj.linkes1-4/+0
2019-03-01Add ARM Taishan testbed33 perftestStanislav Chlebec1-0/+4
2019-01-29Add 2n1l-10ge2p1x710-eth-l2xcbase-eth-2vhostvr1024-1vm-soakTibor Frank1-0/+4
2019-01-23Updated RF tag documentation file with svc density tags, other minor edits.Maciek Konstantynowicz1-47/+60
2019-01-21CSIT-1390 Implement multichain configuration for l2bd with vhost/l3fwd.Peter Mikus1-0/+21
2018-11-28Add trial duration info to tag documentationVratko Polak1-1/+3
2018-11-19Report: Edit the chapters' titlesTibor Frank1-2/+2
2018-10-10Add VXLAN scale perf testsJan Gelety1-0/+48
2018-09-20CSIT-1205 Create AVF driver test - Add Tests L2BD L2XCPeter Mikus1-0/+8
2018-08-24VPP link bonding perf tests with two links between DUTsJan Gelety1-0/+8
2018-08-08CSIT-1231: Cleanup CSIT RF Tags DescriptionsTibor Frank1-27/+49
2018-07-09CSIT-1142 Change thread perf test TAGsPeter Mikus1-18/+23
2018-06-15CSIT-1085 eth-l2xcbase-eth-1memif-1dcrPeter Mikus1-0/+6
2018-06-01VPP link bonding - lacp modeJan Gelety1-0/+8
2018-05-31DPDK link bonding: xor modeJan Gelety1-0/+16
2018-05-04CSIT-992: Add two suites using optimized searchVratko Polak1-0/+6
2018-04-23CSIT-1009: SRv6 proxy testsJan Gelety1-0/+20
2018-02-23Raw results chk keywords and initial TCPeter Mikus1-0/+10
2018-01-11CSIT Report updatePeter Mikus1-0/+4
2018-01-10CSIT-866: wrk onboarding in CSITTibor Frank1-0/+16
2017-11-13Introduce HC_NSH tagMarek Gradzki1-0/+4
2017-10-20Rename all container based test following name conventionsPeter Mikus1-1/+34
2017-08-28FIX: SNAT -> NAT renaming of APIPeter Mikus1-2/+6
2017-08-02CSIT-744 Update report content for proper parsingPeter Mikus1-1/+1
2017-08-01CSIT-699: Add l2bd+dot1q perf testsJan Gelety1-6/+9
2017-07-18CSIT-703: Add ACL 2t2c perf test casesJan Gelety1-0/+47
2017-07-17FIX: remove previous QEMU build when needed to change qszJan Gelety1-0/+12
2017-07-04CSIT-702 Update static content after optimizationsPeter Mikus1-18/+5
2017-07-04CSIT-651 Add keywords and template for memifPeter Mikus1-0/+3
2017-06-07 TLDK udwfwd test case:Qun Wan1-0/+4
2017-05-17Func test reorg - decrease exec time per vpp patchJan Gelety1-0/+5
2017-05-17CSIT-562 HC Test: Persistence suite rework, part1selias1-0/+17
2017-05-11CSIT-574: IPSec Scale File Splitsjan.hradil1-0/+4
2017-05-10CSIT-573: Split SNAT scale tests to multiple filesjan.hradil1-0/+20
2017-04-26Update run_report.sh script for generating reportPeter Mikus1-22/+2
2017-04-24CSIT-557: Performance jobs reorganisation, part 3Tibor Frank1-0/+20
es, p[0]); else return -2; } else sr_policy = pool_elt_at_index (sm->sr_policies, sr_policy_index); if (!sr_policy) return -2; steer_pl->sr_policy = sr_policy - sm->sr_policies; /* Remove old FIB/hw redirection and create a new one */ if (steer_pl->classify.traffic_type == SR_STEER_IPV6) { /* Remove FIB entry */ pfx.fp_proto = FIB_PROTOCOL_IP6; pfx.fp_len = steer_pl->classify.mask_width; pfx.fp_addr.ip6 = steer_pl->classify.prefix.ip6; fib_table_entry_delete (fib_table_find (FIB_PROTOCOL_IP6, steer_pl->classify.fib_table), &pfx, FIB_SOURCE_SR); /* Create a new one */ goto update_fib; } else if (steer_pl->classify.traffic_type == SR_STEER_IPV4) { /* Remove FIB entry */ pfx.fp_proto = FIB_PROTOCOL_IP4; pfx.fp_len = steer_pl->classify.mask_width; pfx.fp_addr.ip4 = steer_pl->classify.prefix.ip4; fib_table_entry_delete (fib_table_find (FIB_PROTOCOL_IP4, steer_pl->classify.fib_table), &pfx, FIB_SOURCE_SR); /* Create a new one */ goto update_fib; } } } else /* delete; steering policy does not exist; complain */ if (is_del) return -4; /* Retrieve SR policy */ if (bsid) //FIX { p = hash_get (sm->sr_policies_index_hash, bsid); if (p) sr_policy = pool_elt_at_index (sm->sr_policies, p[0]); else return -2; } else sr_policy = pool_elt_at_index (sm->sr_policies, sr_policy_index); /* Create a new steering policy */ pool_get (sm->steer_policies, steer_pl); memset (steer_pl, 0, sizeof (*steer_pl)); if (traffic_type == SR_STEER_IPV4 || traffic_type == SR_STEER_IPV6) { clib_memcpy (&steer_pl->classify.prefix, prefix, sizeof (ip46_address_t)); steer_pl->classify.mask_width = mask_width; steer_pl->classify.fib_table = (table_id != (u32) ~ 0 ? table_id : 0); steer_pl->classify.traffic_type = traffic_type; } else { /* Incorrect API usage. Should never get here */ pool_put (sm->steer_policies, steer_pl); mhash_unset (&sm->sr_steer_policies_hash, &key, NULL); return -1; } steer_pl->sr_policy = sr_policy - sm->sr_policies; /* Create and store key */ mhash_set (&sm->sr_steer_policies_hash, &key, steer_pl - sm->steer_policies, NULL); update_fib:; fib_route_path_t path = { .frp_proto = DPO_PROTO_MPLS, .frp_local_label = sr_policy->bsid, .frp_eos = MPLS_EOS, .frp_sw_if_index = ~0, .frp_fib_index = 0, .frp_weight = 1, .frp_flags = FIB_ROUTE_PATH_FLAG_NONE, .frp_label_stack = NULL }; fib_route_path_t *paths = NULL; /* FIB API calls - Recursive route through the BindingSID */ if (traffic_type == SR_STEER_IPV6) { pfx.fp_proto = FIB_PROTOCOL_IP6; pfx.fp_len = steer_pl->classify.mask_width; pfx.fp_addr.ip6 = steer_pl->classify.prefix.ip6; path.frp_fib_index = 0; vec_add1 (paths, path); fib_table_entry_path_add2 (fib_table_find (FIB_PROTOCOL_IP6, (table_id != (u32) ~ 0 ? table_id : 0)), &pfx, FIB_SOURCE_SR, FIB_ENTRY_FLAG_LOOSE_URPF_EXEMPT, paths); vec_free (paths); } else if (traffic_type == SR_STEER_IPV4) { pfx.fp_proto = FIB_PROTOCOL_IP4; pfx.fp_len = steer_pl->classify.mask_width; pfx.fp_addr.ip4 = steer_pl->classify.prefix.ip4; path.frp_fib_index = 0; vec_add1 (paths, path); fib_table_entry_path_add2 (fib_table_find (FIB_PROTOCOL_IP4, (table_id != (u32) ~ 0 ? table_id : 0)), &pfx, FIB_SOURCE_SR, FIB_ENTRY_FLAG_LOOSE_URPF_EXEMPT, paths); vec_free (paths); } return 0; } static clib_error_t * sr_mpls_steer_policy_command_fn (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { int is_del = 0; ip46_address_t prefix; u32 dst_mask_width = 0; u8 traffic_type = 0; u32 fib_table = (u32) ~ 0; mpls_label_t bsid; u32 sr_policy_index = (u32) ~ 0; u8 sr_policy_set = 0; memset (&prefix, 0, sizeof (ip46_address_t)); int rv; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "del")) is_del = 1; else if (!traffic_type && unformat (input, "l3 %U/%d", unformat_ip6_address, &prefix.ip6, &dst_mask_width)) traffic_type = SR_STEER_IPV6; else if (!traffic_type && unformat (input, "l3 %U/%d", unformat_ip4_address, &prefix.ip4, &dst_mask_width)) traffic_type = SR_STEER_IPV4; else if (!sr_policy_set && unformat (input, "via sr policy index %d", &sr_policy_index)) sr_policy_set = 1; else if (!sr_policy_set && unformat (input, "via sr policy bsid %U", unformat_mpls_unicast_label, &bsid)) sr_policy_set = 1; else if (fib_table == (u32) ~ 0 && unformat (input, "fib-table %d", &fib_table)); else break; } if (!traffic_type) return clib_error_return (0, "No L3 traffic specified"); if (!sr_policy_set) return clib_error_return (0, "No SR policy specified"); /* Make sure that the prefixes are clean */ if (traffic_type == SR_STEER_IPV4) { u32 mask = (dst_mask_width ? (0xFFFFFFFFu >> (32 - dst_mask_width)) : 0); prefix.ip4.as_u32 &= mask; } else if (traffic_type == SR_STEER_IPV6) { ip6_address_t mask; ip6_address_mask_from_width (&mask, dst_mask_width); ip6_address_mask (&prefix.ip6, &mask); } rv = sr_mpls_steering_policy (is_del, bsid, sr_policy_index, fib_table, &prefix, dst_mask_width, traffic_type); switch (rv) { case 0: break; case 1: return 0; case -1: return clib_error_return (0, "Incorrect API usage."); case -2: return clib_error_return (0, "The requested SR policy could not be located. Review the BSID/index."); case -3: return clib_error_return (0, "Unable to do SW redirect. Incorrect interface."); case -4: return clib_error_return (0, "The requested SR steering policy could not be deleted."); case -5: return clib_error_return (0, "The SR policy is not an encapsulation one."); default: return clib_error_return (0, "BUG: sr steer policy returns %d", rv); } return 0; } /* *INDENT-OFF* */ VLIB_CLI_COMMAND (sr_mpls_steer_policy_command, static) = { .path = "sr mpls steer", .short_help = "sr mpls steer (del) l3 <ip_addr/mask>" "via sr policy bsid <mpls_label> (fib-table <fib_table_index>)", .long_help = "\tSteer L3 traffic through an existing SR policy.\n" "\tExamples:\n" "\t\tsr steer l3 2001::/64 via sr_policy index 5\n" "\t\tsr steer l3 2001::/64 via sr_policy bsid 29999\n" "\t\tsr steer del l3 2001::/64 via sr_policy index 5\n", .function = sr_mpls_steer_policy_command_fn, }; /* *INDENT-ON* */ static clib_error_t * show_sr_mpls_steering_policies_command_fn (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { mpls_sr_main_t *sm = &sr_mpls_main; mpls_sr_steering_policy_t **steer_policies = 0; mpls_sr_steering_policy_t *steer_pl; mpls_sr_policy_t *pl = 0; int i; vlib_cli_output (vm, "SR MPLS steering policies:"); /* *INDENT-OFF* */ pool_foreach (steer_pl, sm->steer_policies, ({vec_add1(steer_policies, steer_pl);})); /* *INDENT-ON* */ vlib_cli_output (vm, "Traffic\t\tSR policy BSID"); for (i = 0; i < vec_len (steer_policies); i++) { steer_pl = steer_policies[i]; pl = pool_elt_at_index (sm->sr_policies, steer_pl->sr_policy); if (steer_pl->classify.traffic_type == SR_STEER_IPV4) { vlib_cli_output (vm, "L3 %U/%d\t%U", format_ip4_address, &steer_pl->classify.prefix.ip4, steer_pl->classify.mask_width, format_mpls_unicast_label, pl->bsid); } else if (steer_pl->classify.traffic_type == SR_STEER_IPV6) { vlib_cli_output (vm, "L3 %U/%d\t%U", format_ip6_address, &steer_pl->classify.prefix.ip6, steer_pl->classify.mask_width, format_mpls_unicast_label, pl->bsid); } } return 0; } /* *INDENT-OFF* */ VLIB_CLI_COMMAND (show_sr_mpls_steering_policies_command, static) = { .path = "show sr mpls steering policies", .short_help = "show sr mpls steering policies", .function = show_sr_mpls_steering_policies_command_fn, }; /* *INDENT-ON* */ clib_error_t * sr_mpls_steering_init (vlib_main_t * vm) { mpls_sr_main_t *sm = &sr_mpls_main; /* Init memory for function keys */ mhash_init (&sm->sr_steer_policies_hash, sizeof (uword), sizeof (sr_mpls_steering_key_t)); return 0; } /* *INDENT-OFF* */ VLIB_INIT_FUNCTION (sr_mpls_steering_init); /* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */