diff options
author | itraviv <itraviv@cisco.com> | 2016-08-21 11:43:22 +0300 |
---|---|---|
committer | itraviv <itraviv@cisco.com> | 2016-08-21 11:43:22 +0300 |
commit | 666dde01548e89416789fd50439ceceb6bbaf020 (patch) | |
tree | ea1bd71774171b8e7992db9270e65e215bdb0082 | |
parent | 188d26c676d198a1dc813ca25d685537a2f675bb (diff) | |
parent | 8c0e3d3af7cc1c4ae53c5457115d37578483021d (diff) |
Merge remote-tracking branch 'origin/master'
Conflicts:
trex_scapy_rpc_server.asciidoc
-rwxr-xr-x | release_notes.asciidoc | 23 | ||||
-rwxr-xr-x | trex_book.asciidoc | 66 | ||||
-rw-r--r-- | trex_faq.asciidoc | 39 | ||||
-rw-r--r-- | trex_index.asciidoc | 4 | ||||
-rwxr-xr-x | trex_rpc_server_spec.asciidoc | 7 | ||||
-rw-r--r-- | trex_scapy_rpc_server-docinfo.html | 6 | ||||
-rwxr-xr-x | trex_scapy_rpc_server.asciidoc | 20 | ||||
-rwxr-xr-x | ws_main.py | 4 |
8 files changed, 134 insertions, 35 deletions
diff --git a/release_notes.asciidoc b/release_notes.asciidoc index 7ecce8ef..80c54803 100755 --- a/release_notes.asciidoc +++ b/release_notes.asciidoc @@ -23,6 +23,29 @@ ifdef::backend-docbook[] endif::backend-docbook[] +== Release 2.08 == + +* Scapy JSON-RPC server for GUI packet crafting, see link:trex_scapy_rpc_server.html[trex_scapy_rpc_server] +* Client.start Python API supports Core mask - significantly improve the Stateless performance. link:cp_stl_docs/_modules/trex_stl_lib/trex_stl_client.html#STLClient.start[start API], *TBD*- Itay to update the pointer here +* Upgrade the ./dpdk_setup_ports.py script. It simplifies the way to create first time *optimized* config file (/etc/trex_cfg.yaml). More info at the manual: link:trex_manual.html#_script_for_creating_config_file[Script for creating config file] + +[source,bash] +---- +$sudo ./dpdk_setup_ports.py -t # show the list of ports +$sudo ./dpdk_setup_ports.py -c 03:00.0 03:00.1 -o /etc/trex_cfg.yaml # create optimum /etc/trex_cfg.yaml file +---- + +* Basic Cisco VIC functionality works now. Advanced Stateless/Stateful functionality is still not supported. +* Enforce latest firmware for XL710/X710 (5.04) +* Add a way to stop/close NICS at TRex termination (link would be down) `-close-at-end` +* IPv6 XL710 ICMP packets are supported now + +=== fix issues: === + +* link:http://trex-tgn.cisco.com/youtrack/issue/trex-240[trex-240] +* link:http://trex-tgn.cisco.com/youtrack/issue/trex-242[trex-242] +* link:http://trex-tgn.cisco.com/youtrack/issue/trex-246[trex-246] + == Release 2.07 == * DPDK 16.07 diff --git a/trex_book.asciidoc b/trex_book.asciidoc index 0ff41543..b8de9f35 100755 --- a/trex_book.asciidoc +++ b/trex_book.asciidoc @@ -185,17 +185,12 @@ VMXNET3 (see notes) | VMware paravirtualized | Connect using VMware vSwitch [IMPORTANT] ===================================== -* For VMXNET3, use Ubuntu. Fedora 18 is not supported and causes crash. * Intel SFP+ 10Gb/sec is the only one supported by default on the standard Linux driver. TRex also supports Cisco 10Gb/sec SFP+. // above, replace "only one" with "only mode"? * For operating high speed throughput (example: several Intel XL710 40Gb/sec), use different link:https://en.wikipedia.org/wiki/Non-uniform_memory_access[NUMA] nodes for different NICs. + To verify NUMA and NIC topology: `lstopo (yum install hwloc)` + To display CPU info, including NUMA node: `lscpu` + NUMA usage xref:numa-example[example] -* Using Intel XL710 with Fedora 18 requires updating kernel: -** `> sudo yum update kernel` -** `> sudo yum update kernel-devel` -** `> sudo yum update kernel-headers` * For Intel XL710 NICs, verify that the NVM is v5.04 . xref:xl710-firmware[Info]. ** `> sudo ./t-rex-64 -f cap2/dns.yaml -d 0 *-v 6* --nc | grep NVM` + `PMD: FW 5.0 API 1.5 NVM 05.00.04 eetrack 800013fc` @@ -232,11 +227,12 @@ NOTE: Purchase the 10Gb/sec SFP+ separately. Cisco would be fine with TRex (but ==== Supported versions Supported Linux versions: -* Fedora 18-20, 64-bit kernel (not 32-bit) + +* Fedora 20-23, 64-bit kernel (not 32-bit) * Ubuntu 14.04.1 LTS, 64-bit kernel (not 32-bit) +* Ubuntu 16.xx LTS, 64-bit kernel (not 32-bit) NOTE: Additional OS version may be supported by compiling the necessary drivers. -// we should indicate exactly which drivers this means To check whether a kernel is 64-bit, verify that the ouput of the following command is `x86_64`. @@ -255,10 +251,6 @@ ISO images for supported Linux releases can be downloaded from: [options="header",cols="1^,2^",width="50%"] |====================================== | Distribution | SHA256 Checksum -| link:http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/18/Fedora/x86_64/iso/Fedora-18-x86_64-DVD.iso[Fedora 18] - | link:http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/18/Fedora/x86_64/iso/Fedora-18-x86_64-CHECKSUM[Fedora 18 CHECKSUM] -| link:http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/19/Fedora/x86_64/iso/Fedora-19-x86_64-DVD.iso[Fedora 19] - | link:http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/19/Fedora/x86_64/iso/Fedora-19-x86_64-CHECKSUM[Fedora 19 CHECKSUM] | link:http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/iso/Fedora-20-x86_64-DVD.iso[Fedora 20] | link:http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/iso/Fedora-20-x86_64-CHECKSUM[Fedora 20 CHECKSUM] | link:http://fedora-mirror01.rbc.ru/pub/fedora/linux/releases/21/Server/x86_64/iso/Fedora-Server-DVD-x86_64-21.iso[Fedora 21] @@ -446,6 +438,58 @@ and example // where can we describe this limitation (TRex supports only one type of NIC at a time. You cannot mix different NIC types in one config file.) and other limitations? +==== Script for creating config file + +We provide a script to create configuration file by specifying as input desired interfaces. +Examples of using: + +* Get view of all ports as table: + +[source,bash] +---- +sudo ./dpdk_setup_ports.py -t +---- + +* Create config file with given interfaces. You can use PCI addresses or Linux IF (eth1 etc.): + +[source,bash] +---- +sudo ./dpdk_setup_ports.py -c 13:00.0 eth3 --dump -o /etc/trex_cfg.yaml +### Config file generated by dpdk_setup_ports.py ### + +- port_limit: 2 + version: 2 + interfaces: ['13:00.0', '1b:00.0'] + port_info: + - dest_mac: [0x00, 0x0c, 0x29, 0x2a, 0x99, 0xda] # MAC OF LOOPBACK TO IT'S DUAL INTERFACE + src_mac: [0x00, 0x0c, 0x29, 0x2a, 0x99, 0xd0] + - dest_mac: [0x00, 0x0c, 0x29, 0x2a, 0x99, 0xd0] # MAC OF LOOPBACK TO IT'S DUAL INTERFACE + src_mac: [0x00, 0x0c, 0x29, 0x2a, 0x99, 0xda] + + platform: + master_thread_id: 0 + latency_thread_id: 1 + dual_if: + - socket: 0 + threads: [2] +---- + +.Arguments of dpdk_setup_ports.py script +[options="header",cols="2,5,3",width="100%"] +|================= +| Arg | Description | Example +| -c | Create a configuration file by specified interfaces (PCI address or Linux names: eth1 etc.) | -c 03:00.1 eth1 eth4 84:00.0 +| --dump | Dump created config to screen. | +| -o | Output the config to this file. | -o /etc/trex_cfg.yaml +| --dest-macs | Destination MACs to be used in created yaml file per each interface. Without specifying the option, will be assumed loopback (0⇔1, 2⇔3 etc.) | --dest-macs 11:11:11:11:11:11 22:22:22:22:22:22 +| --ci | Cores include: White list of cores to use. Make sure there is enough for each NUMA. | --ci 0 2 4 5 6 +| --ce | Cores exclude: Black list of cores to exclude. Make sure there will be enough for each NUMA. | --ci 10 11 12 +| --no-ht | No HyperThreading: Use only one thread of each Core in created config yaml. | +| --prefix | Advanced option: prefix to be used in TRex config in case of parallel instances. | --prefix first_instance +| --zmq-pub-port | Advanced option: ZMQ Publisher port to be used in TRex config in case of parallel instances. | --zmq-pub-port 4000 +| --zmq-rpc-port | Advanced option: ZMQ RPC port to be used in TRex config in case of parallel instances. | --zmq-rpc-port +| --ignore-numa | Advanced option: Ignore NUMAs for config creation. Use this option only if you have to, as it might reduce performance. For example, if you have pair of interfaces at different NUMAs | +|================= ==== Run TRex diff --git a/trex_faq.asciidoc b/trex_faq.asciidoc index da20711e..f1f0859f 100644 --- a/trex_faq.asciidoc +++ b/trex_faq.asciidoc @@ -223,6 +223,45 @@ After stretching TRex to its maximum CPS capacity, consider the following: DUT w In order to artificialy increse the length of the active flows in TRex, you can config larger IPG in the YAML file. This will cause each flow to last longer. Alternatively, you can increase IPG in your PCAP file as well. +==== How do I support more active flows? +The default maximum supported flows are 1M total (TRex prospective). DUT could have much more due to aging. When active flows are more than 1M flows there is message that there is no enough memory. + +[source,Python] +-------- +Active-flows : 1045562 Clients : 80120 Socket-util : 0.0207 % +-------- + +Look link:trex_manual.html#_memory_section_configuration[here] + +This example support 10M flows + +[source,Python] +-------- +- port_limit : 2 + version : 2 + interfaces : ['04:00.0', '0c:00.0'] # list of the interfaces to bind run ./dpdk_nic_bind.py --status + port_info : # set eh mac addr + + - dest_mac : [0x18, 0x8b, 0x9d, 0xa3, 0xae, 0x84] + src_mac : [0x18, 0x8b, 0x9d, 0xa3, 0xae, 0x83] + + - dest_mac : [0x18, 0x8b, 0x9d, 0xa3, 0xae, 0x83] + src_mac : [0x18, 0x8b, 0x9d, 0xa3, 0xae, 0x84] + + memory : + dp_flows : 10048576 <1> +-------- +<1> 10M flows + + +==== ERROR The number of ips should be at least number of threads +The range of clients and servers should be at least the number of threads. +The number of threads is equal (dual_ports) * (-c value) + +==== Incoming frames are from type SCTP why? +Default latency packets are SCTP, you can remove `-l 1000` or change it to ICMP see manual for more info + + === Stateless ==== How do I get started with stateless mode? diff --git a/trex_index.asciidoc b/trex_index.asciidoc index 158119c5..b2f3b1fd 100644 --- a/trex_index.asciidoc +++ b/trex_index.asciidoc @@ -80,7 +80,9 @@ link:../client_gui/[stateful GUI] |================= | Description | Name | Stateless server RPC specification | -link:trex_rpc_server_spec.html[server.html] +link:trex_rpc_server_spec.html[stl_rpc_server.html] +| Scapy server RPC specification | +link:trex_scapy_rpc_server.html[scapy_rpc_spec.html] | How to build | link:https://github.com/cisco-system-traffic-generator/trex-core/wiki[Wiki] |================= diff --git a/trex_rpc_server_spec.asciidoc b/trex_rpc_server_spec.asciidoc index 9e81c53e..7d016112 100755 --- a/trex_rpc_server_spec.asciidoc +++ b/trex_rpc_server_spec.asciidoc @@ -83,14 +83,13 @@ http://zeromq.org/intro:read-the-manual The RPC reprensentation protocol is JSON RPC v2.0. Every request and response will be encoded in a JSON RPC v2.0 format. -{zwsp} + - +{zwsp}+ For more info on JSON RPC v2.0 spec please refer to: -{zwsp} + +{zwsp}+ http://www.jsonrpc.org/specification -{zwsp} + +{zwsp}+ Later on in the document we will describe all the supported commands. diff --git a/trex_scapy_rpc_server-docinfo.html b/trex_scapy_rpc_server-docinfo.html new file mode 100644 index 00000000..6fb66a5e --- /dev/null +++ b/trex_scapy_rpc_server-docinfo.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/trex_scapy_rpc_server.asciidoc b/trex_scapy_rpc_server.asciidoc index b7d8c022..5e181ece 100755 --- a/trex_scapy_rpc_server.asciidoc +++ b/trex_scapy_rpc_server.asciidoc @@ -9,18 +9,7 @@ The TRex Scapy RPC Server :local_web_server_url: csi-wiki-01:8181/trex :toclevels: 4 -++++ -<script> - (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ - (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), - m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) - })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - - ga('create', 'UA-75220362-1', 'auto'); - ga('send', 'pageview'); - -</script> -++++ +include::trex_ga.asciidoc[] == Change log @@ -35,9 +24,7 @@ The TRex Scapy RPC Server == Audience of this document -Anyone who wants to create,edit and assemble packets for TRex - - +TRex GUI guys == Scapy RPC Server - Overview Scapy Server is implemented following the link:http://www.jsonrpc.org/specification[JSON-RPC 2.0 specification], + @@ -46,8 +33,7 @@ The server operates on a Request-Response basis *over ZMQ*, and does not support Read more about ZMQ link:http://zguide.zeromq.org/page:all[here] - -image::images/scapy_json_rpc_server.png[title="Scapy JSON RPC Server",align="left",width=800, link="images/Scapy_JSON_rpc_server.png"] +image::images/Scapy_JSON_rpc_server.png[title="Scapy JSON RPC Server",align="left",width=800, link="images/Scapy_JSON_rpc_server.png"] === Error Codes @@ -915,6 +915,8 @@ def build(bld): bld(rule=convert_to_html_toc_book, source='trex_rpc_server_spec.asciidoc waf.css', target='trex_rpc_server_spec.html',scan=ascii_doc_scan); + bld(rule=convert_to_html_toc_book, + source='trex_scapy_rpc_server.asciidoc waf.css', target='trex_scapy_rpc_server.html',scan=ascii_doc_scan); bld(rule='${ASCIIDOC} -a stylesheet=${SRC[1].abspath()} -a icons=true -a toc2 -a max-width=55em -o ${TGT} ${SRC[0].abspath()}', source='vm_doc.asciidoc waf.css', target='vm_doc.html', scan=ascii_doc_scan) @@ -922,8 +924,6 @@ def build(bld): bld(rule='${ASCIIDOC} -a stylesheet=${SRC[1].abspath()} -a icons=true -a toc2 -a max-width=55em -o ${TGT} ${SRC[0].abspath()}', source='packet_builder_yaml.asciidoc waf.css', target='packet_builder_yaml.html', scan=ascii_doc_scan) - bld(rule='${ASCIIDOC} -a stylesheet=${SRC[1].abspath()} -a icons=true -a toc2 -a max-width=55em -o ${TGT} ${SRC[0].abspath()}', - source='trex_scapy_rpc_server.asciidoc waf.css', target='trex_scapy_rpc_server.html', scan=ascii_doc_scan) bld(rule='${ASCIIDOC} -a stylesheet=${SRC[1].abspath()} -a icons=true -a toc2 -a max-width=55em -o ${TGT} ${SRC[0].abspath()}', source='trex_control_plane_design_phase1.asciidoc waf.css', target='trex_control_plane_design_phase1.html', scan=ascii_doc_scan) |