191df013fSAsim Jamshed<!-- Creator     : groff version 1.22.2 -->
2*e5df9dc1SAsim Jamshed<!-- CreationDate: Wed Feb  1 22:24:31 2017 -->
391df013fSAsim Jamshed<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
491df013fSAsim Jamshed"http://www.w3.org/TR/html4/loose.dtd">
591df013fSAsim Jamshed<html>
691df013fSAsim Jamshed<head>
791df013fSAsim Jamshed<meta name="generator" content="groff -Thtml, see www.gnu.org">
891df013fSAsim Jamshed<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
991df013fSAsim Jamshed<meta name="Content-Style" content="text/css">
1091df013fSAsim Jamshed<style type="text/css">
1191df013fSAsim Jamshed       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
1291df013fSAsim Jamshed       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
1391df013fSAsim Jamshed       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
1491df013fSAsim Jamshed       h1      { text-align: center }
1591df013fSAsim Jamshed</style>
1691df013fSAsim Jamshed<title>mtcp_init_rss</title>
17*e5df9dc1SAsim Jamshed<link rel="stylesheet" href="./common.css">
1891df013fSAsim Jamshed</head>
1991df013fSAsim Jamshed<body>
20*e5df9dc1SAsim Jamshed<div class="main">
2191df013fSAsim Jamshed<h1 align="center">mtcp_init_rss</h1>
22*e5df9dc1SAsim Jamshed<!--
2391df013fSAsim Jamshed<a href="#NAME">NAME</a><br>
2491df013fSAsim Jamshed<a href="#SYNOPSIS">SYNOPSIS</a><br>
2591df013fSAsim Jamshed<a href="#DESCRIPTION">DESCRIPTION</a><br>
2691df013fSAsim Jamshed<a href="#RETURN VALUE">RETURN VALUE</a><br>
2791df013fSAsim Jamshed<a href="#NOTES">NOTES</a><br>
2891df013fSAsim Jamshed<a href="#ERRORS">ERRORS</a><br>
2991df013fSAsim Jamshed<a href="#NOTES">NOTES</a><br>
3091df013fSAsim Jamshed<a href="#AUTHORS">AUTHORS</a><br>
3191df013fSAsim Jamshed<a href="#SEE ALSO">SEE ALSO</a><br>
3291df013fSAsim Jamshed<a href="#COLOPHON">COLOPHON</a><br>
3391df013fSAsim Jamshed<hr>
34*e5df9dc1SAsim Jamshed-->
3591df013fSAsim Jamshed
3691df013fSAsim Jamshed<h2>NAME
3791df013fSAsim Jamshed<a name="NAME"></a>
3891df013fSAsim Jamshed</h2>
3991df013fSAsim Jamshed
4091df013fSAsim Jamshed
4191df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">mtcp_init_rss
4291df013fSAsim Jamshed&minus; initialize RSS-based NIC-queue-to-TCP-port numbers
4391df013fSAsim Jamshedmapping pool</p>
4491df013fSAsim Jamshed
4591df013fSAsim Jamshed<h2>SYNOPSIS
4691df013fSAsim Jamshed<a name="SYNOPSIS"></a>
4791df013fSAsim Jamshed</h2>
4891df013fSAsim Jamshed
4991df013fSAsim Jamshed
5091df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>#include
5191df013fSAsim Jamshed&lt;mtcp_api.h&gt;</b></p>
5291df013fSAsim Jamshed
5391df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>int
5491df013fSAsim Jamshedmtcp_init_rss(mctx_t</b> <i>mctx</i><b>, in_addr_t</b>
5591df013fSAsim Jamshed<i>srcip</i><b>, int</b> <i>num_addr</i><b>, in_addr_t</b>
5691df013fSAsim Jamshed<i>dstip</i><b>, in_addr_t</b> <i>dport</i><b>);</b></p>
5791df013fSAsim Jamshed
5891df013fSAsim Jamshed<h2>DESCRIPTION
5991df013fSAsim Jamshed<a name="DESCRIPTION"></a>
6091df013fSAsim Jamshed</h2>
6191df013fSAsim Jamshed
6291df013fSAsim Jamshed
6391df013fSAsim Jamshed
6491df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>mtcp_init_rss</b>()
6591df013fSAsim Jamshedcreates a pool of TCP source ports that can be used by a
6691df013fSAsim Jamshedclient to generate outgoing connections for an arbitrary
6791df013fSAsim Jamshedtuple of &lt; <i>srcip, dstip,</i> and, <i>dport</i> &gt;
6891df013fSAsim Jamshedwhere ( <i>srcip</i> = source IPv4 address, <i>dstip</i> =
6991df013fSAsim Jamsheddestination IPv4 address, and <i>dport</i> = destination
7091df013fSAsim Jamshedport number respectively). Choosing the appropriate set of
7191df013fSAsim Jamshedsource ports for each mTCP context, <i>mctx</i> (running on
7291df013fSAsim Jamshedeach CPU) is important for connecting to peer TCP endpoints:
7391df013fSAsim JamshedmTCP relies on the underlying symmetric RSS-based hash
7491df013fSAsim Jamshedalgorithm (based on Toeplitz function) to read traffic from
7591df013fSAsim JamshedNIC hardware queues. This function ensures that all packets,
7691df013fSAsim Jamshedirrespective of the flow direction, are processed in the
7791df013fSAsim Jamshedsame CPU core.</p>
7891df013fSAsim Jamshed
7991df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">Please note
8091df013fSAsim Jamshedthat <b>mtcp_init_rss()</b> assumes that the CPU core-id (as
8191df013fSAsim Jamshedset inside <i>mctx</i> structure) will be used as the value
8291df013fSAsim Jamshedfor NIC queue-id, which the mTCP context will eventually
8391df013fSAsim Jamshedaccess during its operation. For example, mTCP context
8491df013fSAsim Jamshedrunning on core 3 will read traffic from NIC hardware
8591df013fSAsim Jamshedqueue-id 3.</p>
8691df013fSAsim Jamshed
8791df013fSAsim Jamshed
8891df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><i>num_addr</i>
8991df013fSAsim Jamshedis a reserved argument whose value should be set to 1 for
9091df013fSAsim Jamshedthe time being.</p>
9191df013fSAsim Jamshed
9291df013fSAsim Jamshed<h2>RETURN VALUE
9391df013fSAsim Jamshed<a name="RETURN VALUE"></a>
9491df013fSAsim Jamshed</h2>
9591df013fSAsim Jamshed
9691df013fSAsim Jamshed
9791df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">Returns 0 on
9891df013fSAsim Jamshedsuccess; -1 on failure. In case of failure, <i>errno</i> is
9991df013fSAsim Jamshedset appropriately.</p>
10091df013fSAsim Jamshed
10191df013fSAsim Jamshed<h2>NOTES
10291df013fSAsim Jamshed<a name="NOTES"></a>
10391df013fSAsim Jamshed</h2>
10491df013fSAsim Jamshed
10591df013fSAsim Jamshed
10691df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">The default RSS
10791df013fSAsim Jamshedalgorithm set in NIC device is normally asymmetric. During
10891df013fSAsim JamshedNIC driver initialization, the mTCP core ensures that the
10991df013fSAsim Jamshedseed for the RSS algorithm is re-set to make traffic
11091df013fSAsim Jamshedreception symmetric. Also, during the driver intialization
11191df013fSAsim Jamshedstage, the mTCP core assigns NIC queue(s) binding with
11291df013fSAsim Jamshedarbitrary CPU core(s).</p>
11391df013fSAsim Jamshed
11491df013fSAsim Jamshed<h2>ERRORS
11591df013fSAsim Jamshed<a name="ERRORS"></a>
11691df013fSAsim Jamshed</h2>
11791df013fSAsim Jamshed
11891df013fSAsim Jamshed
11991df013fSAsim Jamshed<table width="100%" border="0" rules="none" frame="void"
12091df013fSAsim Jamshed       cellspacing="0" cellpadding="0">
12191df013fSAsim Jamshed<tr valign="top" align="left">
12291df013fSAsim Jamshed<td width="11%"></td>
12391df013fSAsim Jamshed<td width="9%">
12491df013fSAsim Jamshed
12591df013fSAsim Jamshed
12691df013fSAsim Jamshed<p style="margin-top: 1em"><b>ENOMEM</b></p></td>
12791df013fSAsim Jamshed<td width="6%"></td>
12891df013fSAsim Jamshed<td width="74%">
12991df013fSAsim Jamshed
13091df013fSAsim Jamshed
13191df013fSAsim Jamshed<p style="margin-top: 1em">Failure to create mapping pool
13291df013fSAsim Jamsheddue to insufficient memory.</p></td></tr>
13391df013fSAsim Jamshed</table>
13491df013fSAsim Jamshed
13591df013fSAsim Jamshed<h2>NOTES
13691df013fSAsim Jamshed<a name="NOTES"></a>
13791df013fSAsim Jamshed</h2>
13891df013fSAsim Jamshed
13991df013fSAsim Jamshed
14091df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">See
14191df013fSAsim Jamshed<b>http://an.kaist.ac.kr/~shinae/paper/2012-srss.pdf</b> for
14291df013fSAsim Jamsheddetails on symmetric Receive-Side Scaling (RSS).</p>
14391df013fSAsim Jamshed
14491df013fSAsim Jamshed<h2>AUTHORS
14591df013fSAsim Jamshed<a name="AUTHORS"></a>
14691df013fSAsim Jamshed</h2>
14791df013fSAsim Jamshed
14891df013fSAsim Jamshed
149*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">mOS
150*e5df9dc1SAsim Jamsheddevelopment team &lt;[email protected]&gt;</p>
15191df013fSAsim Jamshed
15291df013fSAsim Jamshed<h2>SEE ALSO
15391df013fSAsim Jamshed<a name="SEE ALSO"></a>
15491df013fSAsim Jamshed</h2>
15591df013fSAsim Jamshed
15691df013fSAsim Jamshed
15791df013fSAsim Jamshed
15891df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>mtcp_init</b>(),
15991df013fSAsim Jamshed<b>mtcp_destroy</b>()</p>
16091df013fSAsim Jamshed
16191df013fSAsim Jamshed<h2>COLOPHON
16291df013fSAsim Jamshed<a name="COLOPHON"></a>
16391df013fSAsim Jamshed</h2>
16491df013fSAsim Jamshed
16591df013fSAsim Jamshed
16691df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">This page is
16791df013fSAsim Jamshedpart of mOS release 0.3 <i>docs</i> section. A description
16891df013fSAsim Jamshedof the project, and information about reporting bugs, can be
16991df013fSAsim Jamshedfound at http://mos.kaist.edu/.</p>
170*e5df9dc1SAsim Jamshed<!--<hr>-->
171*e5df9dc1SAsim Jamshed<br>
172*e5df9dc1SAsim Jamshed<div class="footer">
173*e5df9dc1SAsim Jamshed  <img src="back-arrow.jpg" width="2%" height="2%"><a href="http://mos.kaist.edu/index_man.html">Back to Index</a>
174*e5df9dc1SAsim Jamshed</div>
175*e5df9dc1SAsim Jamshed</div>
17691df013fSAsim Jamshed</body>
17791df013fSAsim Jamshed</html>
178