Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ycai
simbricks
Commits
c88bf6de
Commit
c88bf6de
authored
Jun 07, 2022
by
Hejing Li
Browse files
pktgen: add bitrate parameter
parent
6fe1bc33
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
17 deletions
+20
-17
sims/net/pktgen/pktgen.cc
sims/net/pktgen/pktgen.cc
+20
-17
No files found.
sims/net/pktgen/pktgen.cc
View file @
c88bf6de
...
@@ -51,7 +51,7 @@ struct SimbricksBaseIfParams netParams;
...
@@ -51,7 +51,7 @@ struct SimbricksBaseIfParams netParams;
static
pcap_dumper_t
*
dumpfile
=
nullptr
;
static
pcap_dumper_t
*
dumpfile
=
nullptr
;
#define PKT_LEN 1500 //byte
#define PKT_LEN 1500 //byte
static
uint64_t
bit_rate
=
100
*
1000ULL
*
1000ULL
*
1000ULL
;
// 100 Gbps
static
uint64_t
bit_rate
=
100
*
1000ULL
*
1000ULL
*
1000ULL
;
// 100 Gbps
static
uint64_t
target_tick
=
1
0
*
1000ULL
*
1000ULL
*
1000ULL
*
1000ULL
;
// 1
0
s
static
uint64_t
target_tick
=
1
*
1000ULL
*
1000ULL
*
1000ULL
*
1000ULL
;
// 1s
static
uint64_t
last_pkt_sent
=
0
;
static
uint64_t
last_pkt_sent
=
0
;
static
uint64_t
pkt_recv_num
=
0
;
static
uint64_t
pkt_recv_num
=
0
;
static
uint64_t
pkt_recv_byte
=
0
;
static
uint64_t
pkt_recv_byte
=
0
;
...
@@ -414,15 +414,16 @@ int main(int argc, char *argv[]) {
...
@@ -414,15 +414,16 @@ int main(int argc, char *argv[]) {
int
sync_eth
=
1
;
int
sync_eth
=
1
;
pcap_t
*
pc
=
nullptr
;
pcap_t
*
pc
=
nullptr
;
int
my_num
=
0
;
int
my_num
=
0
;
int
brate
=
10
;
SimbricksNetIfDefaultParams
(
&
netParams
);
SimbricksNetIfDefaultParams
(
&
netParams
);
// Parse command line argument
// Parse command line argument
while
((
c
=
getopt
(
argc
,
argv
,
"s:h:uS:E:p:n:"
))
!=
-
1
&&
!
bad_option
)
{
while
((
c
=
getopt
(
argc
,
argv
,
"s:h:uS:E:p:n:
b:
"
))
!=
-
1
&&
!
bad_option
)
{
switch
(
c
)
{
switch
(
c
)
{
case
's'
:
{
case
's'
:
{
NetPort
*
port
=
new
NetPort
;
NetPort
*
port
=
new
NetPort
;
fprintf
(
stderr
,
"
Switch
connecting to: %s
\n
"
,
optarg
);
fprintf
(
stderr
,
"
pktgen
connecting to: %s
\n
"
,
optarg
);
if
(
!
port
->
Connect
(
optarg
,
sync_eth
))
{
if
(
!
port
->
Connect
(
optarg
,
sync_eth
))
{
fprintf
(
stderr
,
"connecting to %s failed
\n
"
,
optarg
);
fprintf
(
stderr
,
"connecting to %s failed
\n
"
,
optarg
);
return
EXIT_FAILURE
;
return
EXIT_FAILURE
;
...
@@ -433,7 +434,7 @@ int main(int argc, char *argv[]) {
...
@@ -433,7 +434,7 @@ int main(int argc, char *argv[]) {
case
'h'
:
{
case
'h'
:
{
NetHostPort
*
port
=
new
NetHostPort
;
NetHostPort
*
port
=
new
NetHostPort
;
fprintf
(
stderr
,
"
Switch
listening on: %s
\n
"
,
optarg
);
fprintf
(
stderr
,
"
pktgen
listening on: %s
\n
"
,
optarg
);
if
(
!
port
->
Connect
(
optarg
,
sync_eth
))
{
if
(
!
port
->
Connect
(
optarg
,
sync_eth
))
{
fprintf
(
stderr
,
"listening on %s failed
\n
"
,
optarg
);
fprintf
(
stderr
,
"listening on %s failed
\n
"
,
optarg
);
return
EXIT_FAILURE
;
return
EXIT_FAILURE
;
...
@@ -470,6 +471,19 @@ int main(int argc, char *argv[]) {
...
@@ -470,6 +471,19 @@ int main(int argc, char *argv[]) {
assert
(
my_num
<
255
);
assert
(
my_num
<
255
);
break
;
break
;
case
'b'
:
brate
=
strtol
(
optarg
,
NULL
,
0
);
fprintf
(
stderr
,
"bit rate set to: %d Gbps
\n
"
,
brate
);
if
(
brate
==
0
){
period
=
ULLONG_MAX
;
}
else
{
bit_rate
=
brate
*
1000ULL
*
1000ULL
*
1000ULL
;
period
=
(
1E12
*
8
*
PKT_LEN
)
/
bit_rate
;
// per packet
}
assert
(
brate
<
200
);
break
;
default:
default:
fprintf
(
stderr
,
"unknown option %c
\n
"
,
c
);
fprintf
(
stderr
,
"unknown option %c
\n
"
,
c
);
bad_option
=
1
;
bad_option
=
1
;
...
@@ -479,8 +493,8 @@ int main(int argc, char *argv[]) {
...
@@ -479,8 +493,8 @@ int main(int argc, char *argv[]) {
if
(
ports
.
empty
()
||
bad_option
)
{
if
(
ports
.
empty
()
||
bad_option
)
{
fprintf
(
stderr
,
fprintf
(
stderr
,
"Usage:
net_switch
[-S SYNC-PERIOD] [-E ETH-LATENCY] "
"Usage:
pktgen
[-S SYNC-PERIOD] [-E ETH-LATENCY] "
"-s SOCKET-A [-s SOCKET-B ...] [-n my_num]
\n
"
);
"-s SOCKET-A [-s SOCKET-B ...] [-n my_num]
[-b bitrate(GB)]
\n
"
);
return
EXIT_FAILURE
;
return
EXIT_FAILURE
;
}
}
...
@@ -548,17 +562,6 @@ int main(int argc, char *argv[]) {
...
@@ -548,17 +562,6 @@ int main(int argc, char *argv[]) {
fprintf
(
stderr
,
"sent packet: %20lu [%20lu Byte]
\n
"
,
pkt_tx_num
,
pkt_tx_byte
);
fprintf
(
stderr
,
"sent packet: %20lu [%20lu Byte]
\n
"
,
pkt_tx_num
,
pkt_tx_byte
);
fprintf
(
stderr
,
"recv packet: %20lu [%20lu Byte]
\n
"
,
pkt_recv_num
,
pkt_recv_byte
);
fprintf
(
stderr
,
"recv packet: %20lu [%20lu Byte]
\n
"
,
pkt_recv_num
,
pkt_recv_byte
);
fprintf
(
stderr
,
"%20s: %22lu %20s: %22lu poll_suc_rate: %f
\n
"
,
"d2n_poll_total"
,
d2n_poll_total
,
"d2n_poll_suc"
,
d2n_poll_suc
,
(
double
)
d2n_poll_suc
/
d2n_poll_total
);
fprintf
(
stderr
,
"%65s: %22lu sync_rate: %f
\n
"
,
"d2n_poll_sync"
,
d2n_poll_sync
,
(
double
)
d2n_poll_sync
/
d2n_poll_suc
);
fprintf
(
stderr
,
"%20s: %22lu %20s: %22lu poll_suc_rate: %f
\n
"
,
"s_d2n_poll_total"
,
s_d2n_poll_total
,
"s_d2n_poll_suc"
,
s_d2n_poll_suc
,
(
double
)
s_d2n_poll_suc
/
s_d2n_poll_total
);
fprintf
(
stderr
,
"%65s: %22lu sync_rate: %f
\n
"
,
"s_d2n_poll_sync"
,
s_d2n_poll_sync
,
(
double
)
s_d2n_poll_sync
/
s_d2n_poll_suc
);
#endif
#endif
return
0
;
return
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment