tbarbette / fastclick

FastClick - A faster version of the Click Modular Router featuring batching, advanced multi-processing and improved Netmap and DPDK support (ANCS'15). Check the metron branch for Metron specificities (NSDI'18). PacketMill modifications (ASPLOS'21) as well as MiddleClick(ToN, 2021) are merged in main.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Input aggregation element

p4pe opened this issue · comments

Hi again,

In my current project, I'm trying to measure the additional CPU overhead that an LB will add.
For this, I implement a simple chain
nat2

And then I expand the graph using also an LB
nat1

The implementation is below

in::FromDPDKDevice(0000:06:00.1, PROMISC true)

c::Classifier(12/0806,
              12/0800,
              -
);


NAT1::IPRewriter(pattern 27.32.11.3 1024-65535 - - 0 1);
NAT2::IPRewriter(pattern 27.32.11.3 1024-65535 - - 0 1);

f1::IPFilter( 0 src host 27.32.11.3,
             1 all

);

//f2::IPFilter(0 src host 17.32.11.4,
  //           1 all

//);

switch::PullSwitch
lb::RoundRobinSwitch;

in->c

c[0]->Print(ARP)->Discard;
c[1]->CheckIPHeader(14)->lb
c[2]->Discard;

lb[0]->NAT1
lb[1]->NAT2

NAT1[0]->switch;
NAT1[1]->Discard;

NAT2[0]->switch;
NAT2[1]->Discard;

switch->Queue->f1
f1[0]->c1::AverageCounter->ToDPDKDevice(0000:06:00.0)
f1[1]->Discard;

//f2[0]->c2::AverageCounter->ToDPDKDevice(0000:06:00.2)
//f2[1]->Discard;


Script(wait 1, print "Rate of packets sent : $(c1.rate)", loop)
ControlSocket("TCP", 1234)

As I realize, I need an element that aggregates the outputs of NAT1 and NAT2, to one output that is the input to the firewall.

I'm trying to do this using the PullSwitch (and RoundRobinSwitch) elements but of course, I can not connect a pull port to a push port
My question is, which is the appropriat element to handle this?

Thank you in advance

Hi! Sorry, somehow I forgot to answer this. You don't need any element to aggregate push ports. Multiple source can push to the same element.