Skip to content

Merge Longzhan's PR into build_aca to test in Jenkins. - #2

Open
pkommoju wants to merge 60 commits into
pkommoju:build_acafrom
lfu-ps:master
Open

Merge Longzhan's PR into build_aca to test in Jenkins.#2
pkommoju wants to merge 60 commits into
pkommoju:build_acafrom
lfu-ps:master

Conversation

@pkommoju

@pkommoju pkommoju commented Sep 7, 2021

Copy link
Copy Markdown
Owner

No description provided.

lfu-ps and others added 30 commits August 18, 2021 14:10
Pull latest master branch changes
…to deleted after added via ovs control vconn
lfu-ps and others added 30 commits September 10, 2021 17:08
…tch_to_conn_map and OFController::remove_switch_from_conn_maps
Fixing potential deadlock when adding an OpenFlow Connection
* Changed ACA's openflow version from 1.3 to 1.0

* Added tunnel_id printout, and commented out some unused code

* Try to make packet out to the bridge based on the of_connection_id

* Changed more code to let packet out based on of_connection_i

* Changed implementation for adding/removing switches in of_controller, in order to prevent deadlock

* Try to make on-demand packet_out based on the connection_id, rather than bridge name

* Added logs, in order to investigate why ofconnection dropped

* Suspect removing switches with empty name causes the problem

* Modifed arp_responder to avoid calling NCM

* Added local map lookup

* Initiate marl integration for packet-in stress testing

* Move libfluid packet-in parsing also to async scheduler, to release message_callback full capacity of receiving packets

* Break parse ARP job

* Test setting specific worker thread number

* Do not break parse job but set specific worker size

This reverts commit 42716a1.

* Try to make atomic counter for packet_in

* Try to make atomic counter for packet_in

* Try to make atomic counter for packet_in

* Try to make atomic counter for packet_in

* Try to make atomic counter for packet_in

* Try to make atomic counter for packet_in

* Added sleep 100 us in marl code when packet in

* Added packet_out_counter, also made the counters global

* Added packet_out_counter, also made the counters global

* Print out both counters every 1 second

* Commented out arp_recv and see if the bottleneck is in the on-demand engine

* Changed packet_out_counter++ to the start of parse_packet, then return immediately

* Changed packet_out_counter++ to the start of parse_packet, then return immediately

* Change it to right inside the arp ether type

* Change it to before arp ether type

* Change it to before vlan ether type

* Change it to before

* Commented out ACA_LOG_INFOs on the packet_in to packet_out path

* Confirm on_demand_engine is already fast

* Put the count into the arp_recv

* Put the count into the arp_recv

* Added fmt library and sample fmt code

* Set counter before sprintf to get a baseline for comparison

* Set counter before sprintf to get a baseline for comparison

* Set counter before sprintf to get a baseline for comparison

* Set counter after 5 sprintf and string.append

* Set counter after 5 sprintf and string.append

* set counter after for loops

* set counter after if statement

* set counter before return

* _serialize_arp_message isn't a bottleneck?

* have to do it again with 4 switches in cbench

* after first five sprintf and string.append

* after for loops

* before return

* Try to rewrite _serialize_arp_message with fmt code

* try to call condense format_to to fewer ones

* comment out append to see if it takes a lot of time

* Try to use FMT_COMPILE when calling format_to

* do test with fmt

* Check qps before packet out

* let packet out go and test again

* Comment out time recording and test again

* put counter before is_found

* put counter at the beginning of packet_out

* add packet out counter to packet out

* place counter in ofcontroller::packet_out

* place counter in create_packet_out

* place counter in create_packet_out

* place counter in create_packet_out

* place counter in create_packet_out

* place counter in create_packet_out

* place counter in create_packet_out

* place counter in create_packet_out

* place counter in create_packet_out

* place counter in create_packet_out

* testing without std::move

* testing without std::move

* remove lock

* put counter after create_packet_out

* put counter after send_packet_out

* use marl to send packet out

* added marl code to BaseOFConnection::send

* Disabled marl scheduling for OFConnection

* try to send flow_mod when receiving a packet_in

* enabled send packet out again, and test if cbench's OFPT_VENDOR should also count

* use marl to send flow_mod

* test parse_packet with marl

* Bring back gRPC client/server for testing

* Reverted OF version from 1.0 to 1.3

* comment out set ports' vlan tag for testing

* bring back adding getting ovs connections with bridge name

* added logs to investigate why no ovs flows are set up

* modified of message version

* commented out logs and time calculations to speed up the gs processing

* Try to use marl to update neighbor states

* Try to use marl to manage the whole gRPC server, so that update neighbor state can use marl, too

* Added waitGroup.wait()

* Check what should be the size of the wait group

* Check what should be the size of the wait group

* Check what should be the size of the wait group

* Check what should be the size of the wait group

* Check what should be the size of the wait group

* Check what should be the size of the wait group

* Check what should be the size of the wait group

* Check what should be the size of the wait group

* Check what should be the size of the wait group

* Check what should be the size of the wait group

* Check what should be the size of the wait group

* Check what should be the size of the wait group

* Use neighbor_count as waitGroup count; also changed back to for each loop when updating neighbor states

* try not to use defer()

* add one in waitgroup when iter through 1 neighbor

* Try to use barrier request/reply to check neighbor procecssing time

* added endl to printout

* Try to send barrier request at the 950k th neighbor creation

* Changed to send barrier request at the 970k th neighbor creation

* try to use marl to furthur schedule create l2 neighbor

* try to use marl to schedule execute_openflow when create_l2_neighbor

* comment out duplicated part

* comment out duplicated part

* comment out extra code

* revert back changes

* enable counter again

* put second counter after assert revision number

* put second counter after invalid argument checks

* increment first counter before marl schedule

* put second counter at the beginning of update_neighbor_state_workitem

* Improve performance by reducing unnecessary syslogs

* Use marl::schedule to process netowrk resource states

* added waitgroup to marl::schedule

* added marl::schedule to on-demand engine

* bring back original _parse_arp_request, in order to test with NCM

* add changes from futurewei-cloud#272

* Reverted ACA_ARP_Responder::_serialize_arp_message

* Cleaned up code

* Cleaned up more code

* Changed multiple logs from INFO to DEBUG

* Add marl dependencies in cmake as well as machine init script

* Fix marl dependency location in test cmake

* Fix docker file marl dependency

* Fix spaces

* removed fmt library related code

* corrected comment about OpenFlow Version

* Tried to fix the memory leak

* fixed blank lines and identation

* Always restart AlcorControlAgent with new build, and set default debug flag to false in aca-machine-init

Co-authored-by: Longzhang Fu <lfu@futurewei.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants