{"id":531,"date":"2022-09-15T09:02:20","date_gmt":"2022-09-15T02:02:20","guid":{"rendered":"https:\/\/dgway.com\/blog_E\/?p=531"},"modified":"2022-10-04T11:59:52","modified_gmt":"2022-10-04T04:59:52","slug":"nvmetcp-host-controller-ip-core-for-25-gigabit-ethernet","status":"publish","type":"post","link":"https:\/\/dgway.com\/blog_E\/2022\/09\/15\/nvmetcp-host-controller-ip-core-for-25-gigabit-ethernet\/","title":{"rendered":"NVMeTCP Host Controller IP Core for 25 Gigabit Ethernet"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/NVMeTCP-vs-RDMA-1024x394.png\" alt=\"\" class=\"wp-image-532\" width=\"840\" height=\"323\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/NVMeTCP-vs-RDMA-1024x394.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/NVMeTCP-vs-RDMA-300x116.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/NVMeTCP-vs-RDMA-768x296.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/NVMeTCP-vs-RDMA-1536x592.png 1536w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/NVMeTCP-vs-RDMA.png 1750w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><figcaption>NVMeTCP vs RDMA<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Most of you may wondering what\u2019s the different between NVMe over TCP and NVMe over RDMA. Both are the same NVMe over Fabrics protocol but the key different is NVMe over RDMA is designed for data transfer between Host Main Memory and Storage. So you need to have a complete Host systems with CPU, OS, Device and specific hardware that support NVMe over RDMA.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While Our NVMeTCP 10G and 25G IP core is designed to fully handle NVMe over TCP protocol on Host side without CPU, OS and device driver. Which can reduce hardware resource and cost for adapting NVMe over Fabrics solutions on your existing network.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"348\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/Achieving-maximum-speed-with-pure-hardware-logic-1024x348.png\" alt=\"\" class=\"wp-image-533\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/Achieving-maximum-speed-with-pure-hardware-logic-1024x348.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/Achieving-maximum-speed-with-pure-hardware-logic-300x102.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/Achieving-maximum-speed-with-pure-hardware-logic-768x261.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/Achieving-maximum-speed-with-pure-hardware-logic.png 1501w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Achieving maximum speed with pure hardware logic<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">As you can see from the table with traditional solution normally consume CPU usage more than 50% and achieve performance just around 40~60%. While our IP core solutions can achieve close to maximum performance of 10G and 25G Ethernet speed with 0% CPU usage.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"353\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/2-x-performance-improvement-with-25G-1024x353.png\" alt=\"\" class=\"wp-image-534\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/2-x-performance-improvement-with-25G-1024x353.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/2-x-performance-improvement-with-25G-300x103.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/2-x-performance-improvement-with-25G-768x264.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/2-x-performance-improvement-with-25G-1536x529.png 1536w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/2-x-performance-improvement-with-25G.png 1687w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>2 x performance improvement with 25G<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Comparing with maximum transfer speed. NVMeTCP 25G can achieve more than 2 times performance improvement over 10G.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">25Gigabit Ethernet is now the most cost-performance effective solutions for signal channel ethernet interface and suitable for 100Gigabit Ethernet connection by implementing 4 of NVMeTCP 25G IP core to work as 4 channel RAID Controller.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"410\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/NVMeTCP25G-IP-Overview-1024x410.png\" alt=\"\" class=\"wp-image-535\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/NVMeTCP25G-IP-Overview-1024x410.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/NVMeTCP25G-IP-Overview-300x120.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/NVMeTCP25G-IP-Overview-768x307.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/NVMeTCP25G-IP-Overview-1536x615.png 1536w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/NVMeTCP25G-IP-Overview.png 1806w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>NVMeTCP25G-IP Overview<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">NVMeTCP IP core for 25G IP support 25Gigabit Ethernet speed. For Usage &amp; Operation is same as 10G.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>First, Set network and transfer parameters<\/li><li>Then connect to selected target server<\/li><li>Perform read or write data transfer between simple User logic and IP. When data transfer completed, You can disconnect from current target.<\/li><\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"546\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/Demo-system-overview-setup-1024x546.png\" alt=\"\" class=\"wp-image-536\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/Demo-system-overview-setup-1024x546.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/Demo-system-overview-setup-300x160.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/Demo-system-overview-setup-768x409.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/Demo-system-overview-setup.png 1158w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Demo system overview &amp; setup<\/figcaption><\/figure>\n<\/div>\n\n\n<ol class=\"wp-block-list\"><li>Host PC #1 for demo operation and program the FPGA board<\/li><li>Host PC #2 for NVMeTCP Target Server<ul><li>Ubuntu Linux Server<\/li><li>Kernel 5.0 or later<\/li><li>25G Network Card<\/li><li>NVMe SSD<\/li><\/ul><\/li><li>FPGA board with 25Gigabit interface. We choose Xilinx KCU116 Development Kit which include UltraScale+ device and GTY transceivers that can support 25G.<\/li><\/ol>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/08\/Demo-system-overview-setup2.png\" alt=\"\" class=\"wp-image-537\" width=\"344\" height=\"258\"\/><figcaption>FPGA board: KCU116 Development kit<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Before running the demo, we need to set up 25Gb Ethernet network card to get the best performance by following commands. The console shows logical name of Ethernet connection which connected to the NVMe\/TCP host.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then, set target IP address and subnet mask to the desired port of the Ethernet card. After finishing 25G Ethernet network setting, configure TestPC to be NVMe\/TCP target. If the target is set successfully, target IP address and port number are printed<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-target-on-linux-2-1024x576.png\" alt=\"\" class=\"wp-image-548\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-target-on-linux-2-1024x576.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-target-on-linux-2-300x169.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-target-on-linux-2-768x432.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-target-on-linux-2.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-target-on-linux2-3-1024x576.png\" alt=\"\" class=\"wp-image-549\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-target-on-linux2-3-1024x576.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-target-on-linux2-3-300x169.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-target-on-linux2-3-768x432.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-target-on-linux2-3.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Setup target on linux<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">After finishing PC and FPGA setup, the welcome screen is displayed on FPGA console. we need to set IP parameters. Each parameter is verified by CPU. The parameter is updated when the input is valid. If all parameters are set, \u201cIP parameters are set\u201d is shown on the console and Connect command is available on the main menu<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After that, NVMe\/TCP connection between host and target is established. Once the host successfully connect with the target, \u201cConnect target successfully\u201d and the target NVMe SSD capacity are displayed with Write\/Read\/Disconnect command.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For write command, The host sends Write command with pattern data across Ethernet to the target for NVMe SSD writing. The tranfer speed is about 2424 MB\/s. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For read command, The host sends Read command across Ethernet to the target for NVMe SSD reading. The tranfer speed is about 2650 MB\/s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-host-and-run-demo-1024x576.png\" alt=\"\" class=\"wp-image-550\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-host-and-run-demo-1024x576.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-host-and-run-demo-300x169.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-host-and-run-demo-768x432.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Setup-host-and-run-demo.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Setup host and run demo<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Let compare the solutions in term of performance, power consumption and cost. For CPU and OS based system like Zynq Ultrascale+ MPSoC device with 10 or 25Gigabit EMAC. TCP transfer performance bandwidth will be around 40% read and 60% write according to iperf benchmark result. This performance is less than 70% bandwidth of 10GbE or 25GbE but require more than 50% of CPU time to handle TCP protocol.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For our NVMeTCP IP Core, Performance is consistent without need CPU invention at more than 80% bandwidth. By implementing 4 instance of NVMeTCP25G IP, you can easily achieve close up 10GB\/s transfer speed over ethernet without direct interface to NVMe SSDs.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"483\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Performance-Comparison-25GbE-1024x483.png\" alt=\"\" class=\"wp-image-551\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Performance-Comparison-25GbE-1024x483.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Performance-Comparison-25GbE-300x142.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Performance-Comparison-25GbE-768x363.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Performance-Comparison-25GbE-1536x725.png 1536w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Performance-Comparison-25GbE.png 1883w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Performance Comparison (25GbE)<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Now you can see that our NVMeTCP IP core solutions can help you to get access to NVMe Storage Server directly from your FPGA board through 10G or 25G ethernet interface.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can easily upgrade your existing systems to get<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Faster storage speed<\/li><li>Large storage capacity<\/li><li>Easier data sharing and access over enterprise network<\/li><\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"402\" src=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Upgrade-your-systems-with-NVMeTCP-IP-core-1024x402.png\" alt=\"\" class=\"wp-image-552\" srcset=\"https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Upgrade-your-systems-with-NVMeTCP-IP-core-1024x402.png 1024w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Upgrade-your-systems-with-NVMeTCP-IP-core-300x118.png 300w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Upgrade-your-systems-with-NVMeTCP-IP-core-768x301.png 768w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Upgrade-your-systems-with-NVMeTCP-IP-core-1536x602.png 1536w, https:\/\/dgway.com\/blog_E\/wp-content\/uploads\/2022\/09\/Upgrade-your-systems-with-NVMeTCP-IP-core.png 1971w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Upgrade your systems with NVMeTCP IP Core<\/figcaption><\/figure>\n<\/div>\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"NVMeTCP25G-IP Introduction &amp; Performance Demo on Xilinx KCU116\u3010NVMe over TCP\u3011\" width=\"680\" height=\"383\" src=\"https:\/\/www.youtube.com\/embed\/tysMEKSXSEs?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><figcaption>Youtube channel: <a href=\"https:\/\/www.youtube.com\/c\/Dgwayweb\" data-type=\"URL\" data-id=\"https:\/\/www.youtube.com\/c\/Dgwayweb\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.youtube.com\/c\/Dgwayweb<\/a><\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Most of you may wondering what\u2019s the different between NVMe over TCP and NVMe over RDMA. Both are the same NVMe over Fabrics protocol but the key different is NVMe over RDMA is designed for data transfer between Host Main Memory and Storage. So you need to have a complete Host systems with CPU, OS, Device and specific hardware that&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":558,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-531","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-storage"],"_links":{"self":[{"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/posts\/531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/comments?post=531"}],"version-history":[{"count":6,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/posts\/531\/revisions"}],"predecessor-version":[{"id":695,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/posts\/531\/revisions\/695"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/media\/558"}],"wp:attachment":[{"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/media?parent=531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/categories?post=531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dgway.com\/blog_E\/wp-json\/wp\/v2\/tags?post=531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}