Files
dofs/docs/network/network_nic.md

5.7 KiB

network/network_nic.h

NicSchedulingWeights::NetworkNic::NetworkNic

NetworkNic(Simulator *const sim, NodeId id, uint16_t total_ports, SwitchBuffer *const buf, Time nic_latency, Bytes mice_elephant_threshold, PacketSeq ooo_threshold, CCType cc_type, LBType lb_type, Bytes cc_init_cwnd, Bytes cc_max_cwnd, const NicSchedulingWeights &schedw) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::enqueue_packet

void enqueue_packet(PortId port, QClass cls, Packet pkt) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::is_elephant

bool is_elephant(Bytes sz) const noexcept

NicSchedulingWeights::NetworkNic::PortQueues::lookup_rtt_and_erase

bool lookup_rtt_and_erase(const Packet &ack_like, Time now, Time &out_rtt) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::make_ack_packet

Packet make_ack_packet(const Packet &rx_data, PortId ingress) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::make_data_packet

Packet make_data_packet(NodeId dst, PortId out_port, FlowPriority prio, FlowId fid, PacketSeq seq, Bytes payload) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::make_nack_packet

Packet make_nack_packet(NodeId peer, FlowId flow, PacketSeq miss, FlowPriority prio, PortId ingress) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::make_trim_back_response

Packet make_trim_back_response(const Packet &trim, PortId ingress) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::pick_next_qclass

bool pick_next_qclass(const PortQueues &pq, QClass &out_cls) const noexcept

NicSchedulingWeights::NetworkNic::PortQueues::pick_src_port_for_flow

PortId pick_src_port_for_flow(NodeId dst) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::port_drain_task

void port_drain_task(PortId port) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::record_tx_timestamp

void record_tx_timestamp(const Packet &pkt) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::schedule_ack

void schedule_ack(const Packet &rx_data, PortId ingress) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::schedule_nack

void schedule_nack(NodeId peer, FlowId flow, PacketSeq missing_seq, FlowPriority prio, PortId ingress) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::schedule_port_if_needed

void schedule_port_if_needed(PortId port) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::schedule_trim_back_response

void schedule_trim_back_response(const Packet &trim, PortId ingress) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::start_tx_multicast

void start_tx_multicast(PacketGroups gmask, Bytes size, FlowPriority prio)

NicSchedulingWeights::NetworkNic::PortQueues::start_tx_unicast

void start_tx_unicast(NodeId dst, Bytes size, FlowPriority prio)

NicSchedulingWeights::NetworkNic::PortQueues::try_send_one

bool try_send_one(PortId port, QClass cls) noexcept

NicSchedulingWeights::NetworkNic::PortQueues::txkey

static inline std::uint64_t txkey(FlowId f, PacketSeq s) noexcept

NicSchedulingWeights::NetworkNic::attach_host

void attach_host(Host *host) noexcept

NicSchedulingWeights::NetworkNic::detach_host

void detach_host(Host *host) noexcept

NicSchedulingWeights::NetworkNic::is_port_blacklisted

bool is_port_blacklisted(PortId port) const noexcept

NicSchedulingWeights::NetworkNic::recv_pkt

virtual void recv_pkt(Packet &pkt, PortId ingress) override

NicSchedulingWeights::NetworkNic::send_flow

void send_flow(NodeId dst, Bytes size, FlowPriority desired = FlowPriority::AUTO)

NicSchedulingWeights::NetworkNic::send_flow

void send_flow(PacketGroups group_mask, Bytes size, FlowPriority desired = FlowPriority::AUTO)

NicSchedulingWeights::NetworkNic::set_port_blacklisted

void set_port_blacklisted(PortId port, bool blacklisted) noexcept

NicSchedulingWeights::NetworkNic::set_status

void set_status(NodeStatus s, Time new_latency = Time(0)) noexcept

NicSchedulingWeights::NetworkNic::telemetry

const NicTelemetry &telemetry() const noexcept

enqueue_packet

void enqueue_packet(PortId port, QClass cls, Packet pkt) noexcept;

lookup_rtt_and_erase

bool lookup_rtt_and_erase(const Packet &ack_like, Time now, Time &out_rtt) noexcept;

make_ack_packet

Packet make_ack_packet(const Packet &rx_data, PortId ingress) noexcept;

make_data_packet

Packet make_data_packet(NodeId dst, PortId out_port, FlowPriority prio, FlowId fid, PacketSeq seq, Bytes payload) noexcept;

make_nack_packet

Packet make_nack_packet(NodeId peer, FlowId flow, PacketSeq miss, FlowPriority prio, PortId ingress) noexcept;

make_trim_back_response

Packet make_trim_back_response(const Packet &trim, PortId ingress) noexcept;

pick_src_port_for_flow

PortId pick_src_port_for_flow(NodeId dst) noexcept;

port_drain_task

void port_drain_task(PortId port) noexcept;

record_tx_timestamp

void record_tx_timestamp(const Packet &pkt) noexcept;

schedule_ack

void schedule_ack(const Packet &rx_data, PortId ingress) noexcept;

schedule_nack

void schedule_nack(NodeId peer, FlowId flow, PacketSeq missing_seq, FlowPriority prio, PortId ingress) noexcept;

schedule_port_if_needed

void schedule_port_if_needed(PortId port) noexcept;

schedule_trim_back_response

void schedule_trim_back_response(const Packet &trim, PortId ingress) noexcept;

set_port_blacklisted

void set_port_blacklisted(PortId port, bool blacklisted) noexcept;

start_tx_multicast

void start_tx_multicast(PacketGroups gmask, Bytes size, FlowPriority prio);

start_tx_unicast

void start_tx_unicast(NodeId dst, Bytes size, FlowPriority prio);

try_send_one

bool try_send_one(PortId port, QClass cls) noexcept;

txkey

static inline std::uint64_t txkey(FlowId f, PacketSeq s) noexcept;