Closed john-smith-77 closed 3 years ago
You need to say how all the ToDevice should orchestrate the query of the 3 paths. For instance with a RoundRobinSched.
I tried with the dpdk device and add scheduler but I got this error
‘P1 :: PrioSched’ pull output 0 connected to ‘out0 :: ToDPDKDevice’ push input 0
modified code:
FromDPDKDevice(0) -> c0 :: Classifier(12/0806 20/0001,
12/0806 20/0002,
12/0800,
-);
out0 :: ToDPDKDevice(1);
outtcp :: Queue(1024);
outudp :: Queue(1024);
outoth :: Queue(1024);
P1 :: PrioSched;
outtcp, outoth, outudp -> P1;
P1 -> out0;
// ARP request need to be answered, obviously
c0[0]
-> Print("ARPResponder")
-> ARPResponder(10.0.0.11 00:0c:29:64:45:48)
-> outoth;
// ARP responses are handed to Linux
c0[1]
-> Print("ToHost")
-> Discard;
// -> ToHost();
// Non-IP packets are dropped
c0[3]
-> Print("Discard")
-> Discard;
// Other IP packets. Split on UDP, TCP and rest
c0[2]
-> Print("IP")
-> Strip(14)
-> CheckIPHeader()
-> c1 :: Classifier(9/17, 9/06, -);
// TCP packets
c1[1] -> Print(TCP) -> outtcp;
// UDP packets
c1[0]
-> Print(UDP)
-> outudp;
// non-UDP and non-TCP packets
c1[2] -> Print(UNKNOWN) -> outoth;
and also I used round-robin
R1 :: RoundRobinSched;
P1 :: PrioSched;
outtcp, outoth, outudp -> R1;
R1 -> P1;
//outtcp, outudp, outoth -> P1;
P1 -> out0;
ToDPDKDevice is not a pull element, it's a push element, so you need push element before. RoundRobinSwitch is the "push" equivalent of RoundRobinSched. See page 18 of http://www-soc.lip6.fr/~genius/kohler-thesis.pdf for more information :)
hello I'm trying to assign multiple queues to the
ToDevice
element. my code :but I got this error
is it possible to use multiple queues on a device? thanks.