The simple network models hop-by-hop network traversal, but abstracts out detailed modeling within the switches. The switches are modeled in simple/PerfectSwitch.cc while the links are modeled in simple/Throttle.cc. The flow-control is implemented by monitoring the available buffers and available bandwidth in output links before sending.
Simple network uses the generic network parameters in Network.py. Additional parameters are specified in simple/SimpleNetwork.py:
- buffer_size: Size of buffers at each switch input and output ports. A value of 0 implies infinite buffering.
- endpoint_bandwidth: Bandwidth at the end points of the network in 1000th of byte.
- adaptive_routing: This enables adaptive routing based on occupancy of output buffers.
More details of the gem5 Ruby Interconnection Network are here.