#include <SCTPAssociation.h>
Definition at line 203 of file SCTPAssociation.h.
| SCTPPathVariables::SCTPPathVariables | ( | const IPvXAddress & | addr, | |
| SCTPAssociation * | assoc | |||
| ) |
Definition at line 33 of file SCTPAssociationBase.cc.
{
InterfaceTableAccess interfaceTableAccess;
association = assoc;
remoteAddress = addr;
activePath = true;
confirmed = false;
primaryPathCandidate = false;
pathErrorCount = 0;
pathErrorThreshold = assoc->getSctpMain()->par("pathMaxRetrans");
if (!pathErrorThreshold) {
pathErrorThreshold = PATH_MAX_RETRANS;
}
pathRto = assoc->getSctpMain()->par("rtoInitial");
heartbeatTimeout = pathRto;
double interval = (double)assoc->getSctpMain()->par("hbInterval");
if (!interval) {
interval = HB_INTERVAL;
}
heartbeatIntervalTimeout = pathRto+interval;
srtt = pathRto;
lastAckTime = 0;
forceHb = false;
partialBytesAcked = 0;
queuedBytes = 0;
outstandingBytes = 0;
RoutingTableAccess routingTableAccess;
const InterfaceEntry* rtie = routingTableAccess.get()->getInterfaceForDestAddr(remoteAddress.get4());
if(rtie == NULL) {
opp_error("No interface for remote address %s found!", remoteAddress.get4().str().c_str());
}
pmtu = rtie->getMTU();
rttvar = 0.0;
cwndTimeout = pathRto;
cwnd = 0;
ssthresh = 0;
updateTime = 0.0;
fastRecoveryExitPoint = 0;
fastRecoveryActive = false;
numberOfFastRetransmissions = 0;
numberOfTimerBasedRetransmissions = 0;
numberOfHeartbeatsSent = 0;
numberOfHeartbeatsRcvd = 0;
numberOfHeartbeatAcksSent = 0;
numberOfHeartbeatAcksRcvd = 0;
char str[128];
snprintf(str, sizeof(str), "HB_TIMER %d:%s",assoc->assocId,addr.str().c_str());
HeartbeatTimer = new cMessage(str);
snprintf(str, sizeof(str), "HB_INT_TIMER %d:%s",assoc->assocId,addr.str().c_str());
HeartbeatIntervalTimer = new cMessage(str);
snprintf(str, sizeof(str), "CWND_TIMER %d:%s",assoc->assocId,addr.str().c_str());
CwndTimer = new cMessage(str);
snprintf(str, sizeof(str), "RTX_TIMER %d:%s",assoc->assocId,addr.str().c_str());
T3_RtxTimer = new cMessage(str);
HeartbeatTimer->setContextPointer(association);
HeartbeatIntervalTimer->setContextPointer(association);
CwndTimer->setContextPointer(association);
T3_RtxTimer->setContextPointer(association);
snprintf(str, sizeof(str), "RTO %d:%s",assoc->assocId,addr.str().c_str());
statisticsPathRTO = new cOutVector(str);
snprintf(str, sizeof(str), "RTT %d:%s",assoc->assocId,addr.str().c_str());
statisticsPathRTT = new cOutVector(str);
snprintf(str, sizeof(str), "Slow Start Threshold %d:%s",assoc->assocId,addr.str().c_str());
statisticsPathSSthresh = new cOutVector(str);
snprintf(str, sizeof(str), "Congestion Window %d:%s",assoc->assocId,addr.str().c_str());
statisticsPathCwnd = new cOutVector(str);
snprintf(str, sizeof(str), "TSN Sent %d:%s",assoc->assocId,addr.str().c_str());
pathTSN = new cOutVector(str);
snprintf(str, sizeof(str), "TSN Received %d:%s",assoc->assocId,addr.str().c_str());
pathRcvdTSN = new cOutVector(str);
snprintf(str, sizeof(str), "HB Sent %d:%s",assoc->assocId,addr.str().c_str());
pathHb = new cOutVector(str);
snprintf(str, sizeof(str), "HB ACK Sent %d:%s",assoc->assocId,addr.str().c_str());
pathHbAck = new cOutVector(str);
snprintf(str, sizeof(str), "HB Received %d:%s",assoc->assocId,addr.str().c_str());
pathRcvdHb = new cOutVector(str);
snprintf(str, sizeof(str), "HB ACK Received %d:%s",assoc->assocId,addr.str().c_str());
pathRcvdHbAck = new cOutVector(str);
SCTPPathInfo* pinfo = new SCTPPathInfo("pinfo");
pinfo->setRemoteAddress(addr);
T3_RtxTimer->setControlInfo(pinfo);
HeartbeatTimer->setControlInfo(pinfo->dup());
HeartbeatIntervalTimer->setControlInfo(pinfo->dup());
CwndTimer->setControlInfo(pinfo->dup());
}
| SCTPPathVariables::~SCTPPathVariables | ( | ) |
Definition at line 132 of file SCTPAssociationBase.cc.
{
statisticsPathSSthresh->record(0);
statisticsPathCwnd->record(0);
delete statisticsPathSSthresh;
delete statisticsPathCwnd;
statisticsPathRTO->record(0);
statisticsPathRTT->record(0);
delete statisticsPathRTO;
delete statisticsPathRTT;
delete pathTSN;
delete pathRcvdTSN;
delete pathHb;
delete pathRcvdHb;
delete pathHbAck;
delete pathRcvdHbAck;
}
Definition at line 213 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmClearPathCounter(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::process_TIMEOUT_HEARTBEAT(), SCTPAssociation::process_TIMEOUT_RTX(), SCTPAssociation::processHeartbeatAckArrived(), SCTPPathVariables(), and SCTPAssociation::updateCounters().
Definition at line 209 of file SCTPAssociation.h.
Referenced by SCTPPathVariables().
Definition at line 214 of file SCTPAssociation.h.
Referenced by SCTPAssociation::getNextDestination(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::processHeartbeatAckArrived(), and SCTPPathVariables().
| uint32 SCTPPathVariables::cwnd |
Definition at line 227 of file SCTPAssociation.h.
Referenced by SCTPAssociation::bytesAllowedToSend(), SCTPAssociation::cwndUpdateAfterCwndTimeout(), SCTPAssociation::cwndUpdateAfterRtxTimeout(), SCTPAssociation::cwndUpdateAfterSack(), SCTPAssociation::cwndUpdateBytesAcked(), SCTPAssociation::cwndUpdateMaxBurst(), SCTPAssociation::initCCParameters(), SCTPAssociation::printSctpPathMap(), SCTPAssociation::recordCwndUpdate(), SCTPAssociation::removePath(), and SCTPPathVariables().
| simtime_t SCTPPathVariables::cwndTimeout |
Definition at line 253 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmDataIsSentOn(), and SCTPPathVariables().
| cMessage* SCTPPathVariables::CwndTimer |
Definition at line 246 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmDataIsSentOn(), SCTPAssociation::processTimer(), SCTPAssociation::removePath(), and SCTPPathVariables().
Definition at line 236 of file SCTPAssociation.h.
Referenced by SCTPAssociation::cwndUpdateAfterRtxTimeout(), SCTPAssociation::cwndUpdateAfterSack(), SCTPAssociation::cwndUpdateBytesAcked(), SCTPPathVariables(), and SCTPAssociation::updateFastRecoveryStatus().
Definition at line 238 of file SCTPAssociation.h.
Referenced by SCTPAssociation::cwndUpdateAfterSack().
Definition at line 237 of file SCTPAssociation.h.
Referenced by SCTPAssociation::cwndUpdateAfterRtxTimeout(), SCTPAssociation::cwndUpdateAfterSack(), SCTPPathVariables(), and SCTPAssociation::updateFastRecoveryStatus().
Definition at line 240 of file SCTPAssociation.h.
Referenced by SCTPAssociation::handleChunkReportedAsMissing(), and SCTPAssociation::processSackArrived().
Definition at line 217 of file SCTPAssociation.h.
Referenced by SCTPAssociation::process_TIMEOUT_HEARTBEAT_INTERVAL(), SCTPAssociation::processTimer(), and SCTPPathVariables().
| unsigned int SCTPPathVariables::gapAcksInLastSACK |
Definition at line 261 of file SCTPAssociation.h.
Referenced by SCTPAssociation::handleChunkReportedAsMissing(), and SCTPAssociation::processSackArrived().
| unsigned int SCTPPathVariables::gapNAcksInLastSACK |
Definition at line 262 of file SCTPAssociation.h.
Referenced by SCTPAssociation::handleChunkReportedAsMissing(), and SCTPAssociation::processSackArrived().
Definition at line 251 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmStartPathManagement(), SCTPAssociation::process_TIMEOUT_HEARTBEAT_INTERVAL(), and SCTPPathVariables().
Definition at line 245 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmStartPathManagement(), SCTPAssociation::process_TIMEOUT_HEARTBEAT_INTERVAL(), SCTPAssociation::processTimer(), SCTPAssociation::removePath(), and SCTPPathVariables().
| simtime_t SCTPPathVariables::heartbeatTimeout |
Definition at line 250 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmDataIsSentOn(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::process_TIMEOUT_HEARTBEAT_INTERVAL(), SCTPAssociation::processHeartbeatAckArrived(), and SCTPPathVariables().
| cMessage* SCTPPathVariables::HeartbeatTimer |
Definition at line 244 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmDataIsSentOn(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::process_TIMEOUT_HEARTBEAT_INTERVAL(), SCTPAssociation::processHeartbeatAckArrived(), SCTPAssociation::processTimer(), SCTPAssociation::removePath(), and SCTPPathVariables().
| simtime_t SCTPPathVariables::lastAckTime |
Definition at line 255 of file SCTPAssociation.h.
Referenced by SCTPAssociation::process_TIMEOUT_HEARTBEAT_INTERVAL(), SCTPAssociation::processHeartbeatAckArrived(), SCTPAssociation::processSackArrived(), and SCTPPathVariables().
Definition at line 241 of file SCTPAssociation.h.
Referenced by SCTPAssociation::handleChunkReportedAsMissing(), and SCTPAssociation::processSackArrived().
Definition at line 221 of file SCTPAssociation.h.
Referenced by SCTPAssociation::dequeueAckedChunks(), and SCTPAssociation::processSackArrived().
Definition at line 234 of file SCTPAssociation.h.
Referenced by SCTPAssociation::dequeueAckedChunks(), SCTPAssociation::handleChunkReportedAsAcked(), and SCTPAssociation::processSackArrived().
| unsigned int SCTPPathVariables::numberOfDuplicates |
Definition at line 263 of file SCTPAssociation.h.
| unsigned int SCTPPathVariables::numberOfFastRetransmissions |
Definition at line 264 of file SCTPAssociation.h.
Referenced by SCTPAssociation::handleChunkReportedAsMissing(), SCTP::removeAssociation(), and SCTPPathVariables().
| unsigned int SCTPPathVariables::numberOfHeartbeatAcksRcvd |
Definition at line 269 of file SCTPAssociation.h.
Referenced by SCTPAssociation::processHeartbeatAckArrived(), SCTP::removeAssociation(), and SCTPPathVariables().
| unsigned int SCTPPathVariables::numberOfHeartbeatAcksSent |
Definition at line 267 of file SCTPAssociation.h.
Referenced by SCTPAssociation::recordInPathVectors(), SCTP::removeAssociation(), and SCTPPathVariables().
| unsigned int SCTPPathVariables::numberOfHeartbeatsRcvd |
Definition at line 268 of file SCTPAssociation.h.
Referenced by SCTPAssociation::process_RCV_Message(), SCTP::removeAssociation(), and SCTPPathVariables().
| unsigned int SCTPPathVariables::numberOfHeartbeatsSent |
Definition at line 266 of file SCTPAssociation.h.
Referenced by SCTPAssociation::recordInPathVectors(), SCTP::removeAssociation(), and SCTPPathVariables().
| unsigned int SCTPPathVariables::numberOfTimerBasedRetransmissions |
Definition at line 265 of file SCTPAssociation.h.
Referenced by SCTPAssociation::process_TIMEOUT_RTX(), SCTP::removeAssociation(), and SCTPPathVariables().
Definition at line 231 of file SCTPAssociation.h.
Referenced by SCTPAssociation::bytesAllowedToSend(), SCTPAssociation::cwndUpdateBytesAcked(), SCTPAssociation::cwndUpdateMaxBurst(), SCTPAssociation::decreaseOutstandingBytes(), SCTPAssociation::increaseOutstandingBytes(), SCTPAssociation::loadPacket(), SCTPAssociation::moveChunkToOtherPath(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::printSctpPathMap(), SCTPAssociation::processSackArrived(), SCTPPathVariables(), SCTPAssociation::sendOnPath(), and SCTPAssociation::storePacket().
Definition at line 233 of file SCTPAssociation.h.
Referenced by SCTPAssociation::cwndUpdateBytesAcked(), and SCTPAssociation::processSackArrived().
Definition at line 229 of file SCTPAssociation.h.
Referenced by SCTPAssociation::cwndUpdateAfterRtxTimeout(), SCTPAssociation::cwndUpdateAfterSack(), SCTPAssociation::cwndUpdateBytesAcked(), SCTPAssociation::pmStartPathManagement(), and SCTPPathVariables().
Definition at line 223 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmClearPathCounter(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::process_TIMEOUT_HEARTBEAT(), SCTPAssociation::process_TIMEOUT_RTX(), SCTPAssociation::processHeartbeatAckArrived(), SCTPPathVariables(), and SCTPAssociation::updateCounters().
Definition at line 224 of file SCTPAssociation.h.
Referenced by SCTPPathVariables().
| cOutVector* SCTPPathVariables::pathHb |
Definition at line 274 of file SCTPAssociation.h.
Referenced by SCTPAssociation::recordInPathVectors(), SCTPPathVariables(), and ~SCTPPathVariables().
| cOutVector* SCTPPathVariables::pathHbAck |
Definition at line 276 of file SCTPAssociation.h.
Referenced by SCTPAssociation::recordInPathVectors(), SCTPPathVariables(), and ~SCTPPathVariables().
| cOutVector* SCTPPathVariables::pathRcvdHb |
Definition at line 275 of file SCTPAssociation.h.
Referenced by SCTPAssociation::process_RCV_Message(), SCTPPathVariables(), and ~SCTPPathVariables().
| cOutVector* SCTPPathVariables::pathRcvdHbAck |
Definition at line 277 of file SCTPAssociation.h.
Referenced by SCTPAssociation::processHeartbeatAckArrived(), SCTPPathVariables(), and ~SCTPPathVariables().
| cOutVector* SCTPPathVariables::pathRcvdTSN |
Definition at line 273 of file SCTPAssociation.h.
Referenced by SCTPAssociation::processDataArrived(), SCTPPathVariables(), and ~SCTPPathVariables().
| simtime_t SCTPPathVariables::pathRto |
Definition at line 256 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmDataIsSentOn(), SCTPAssociation::pmRttMeasurement(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::process_TIMEOUT_HEARTBEAT(), SCTPAssociation::process_TIMEOUT_HEARTBEAT_INTERVAL(), SCTPAssociation::process_TIMEOUT_RTX(), SCTPAssociation::processHeartbeatAckArrived(), SCTPAssociation::processSackArrived(), SCTPPathVariables(), SCTPAssociation::sendOnPath(), and SCTPAssociation::tsnWasReneged().
| cOutVector* SCTPPathVariables::pathTSN |
Definition at line 272 of file SCTPAssociation.h.
Referenced by SCTPAssociation::recordInPathVectors(), SCTPPathVariables(), and ~SCTPPathVariables().
| uint32 SCTPPathVariables::pmtu |
Definition at line 225 of file SCTPAssociation.h.
Referenced by SCTPAssociation::bytesAllowedToSend(), SCTPAssociation::calculateBytesToSendOnPath(), SCTPAssociation::createSack(), SCTPAssociation::cwndUpdateAfterCwndTimeout(), SCTPAssociation::cwndUpdateAfterRtxTimeout(), SCTPAssociation::cwndUpdateAfterSack(), SCTPAssociation::cwndUpdateBytesAcked(), SCTPAssociation::cwndUpdateMaxBurst(), SCTPAssociation::initCCParameters(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::processHeartbeatAckArrived(), SCTPPathVariables(), and SCTPAssociation::sendOnPath().
Definition at line 216 of file SCTPAssociation.h.
Referenced by SCTPAssociation::processHeartbeatAckArrived(), and SCTPPathVariables().
Definition at line 230 of file SCTPAssociation.h.
Referenced by SCTPPathVariables().
Definition at line 210 of file SCTPAssociation.h.
Referenced by SCTPAssociation::bytesAllowedToSend(), SCTPAssociation::choosePathForRetransmission(), SCTPAssociation::cwndUpdateAfterCwndTimeout(), SCTPAssociation::cwndUpdateAfterRtxTimeout(), SCTPAssociation::cwndUpdateAfterSack(), SCTPAssociation::cwndUpdateBytesAcked(), SCTPAssociation::cwndUpdateMaxBurst(), SCTPAssociation::decreaseOutstandingBytes(), SCTPAssociation::getNextAddress(), SCTPAssociation::getNextDestination(), SCTPAssociation::getOutboundDataChunk(), SCTPAssociation::handleChunkReportedAsAcked(), SCTPAssociation::handleChunkReportedAsMissing(), SCTPAssociation::increaseOutstandingBytes(), SCTPAssociation::initCCParameters(), SCTPAssociation::loadPacket(), SCTPAssociation::makeDataVarFromDataMsg(), SCTPAssociation::pathStatusIndication(), SCTPAssociation::pmClearPathCounter(), SCTPAssociation::pmDataIsSentOn(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::printSctpPathMap(), SCTPAssociation::process_TIMEOUT_HEARTBEAT(), SCTPAssociation::process_TIMEOUT_HEARTBEAT_INTERVAL(), SCTPAssociation::process_TIMEOUT_RTX(), SCTPAssociation::processHeartbeatAckArrived(), SCTPAssociation::processInitArrived(), SCTPAssociation::processSackArrived(), SCTP::removeAssociation(), SCTPAssociation::removePath(), SCTPPathVariables(), SCTPAssociation::sendHeartbeat(), SCTPAssociation::sendOnPath(), SCTPAssociation::storePacket(), SCTPAssociation::updateCounters(), and SCTPAssociation::updateFastRecoveryStatus().
Definition at line 215 of file SCTPAssociation.h.
Referenced by SCTPAssociation::cwndUpdateAfterSack(), SCTPAssociation::handleChunkReportedAsMissing(), and SCTPAssociation::processSackArrived().
| simtime_t SCTPPathVariables::rttvar |
Definition at line 258 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmRttMeasurement(), SCTPAssociation::pmStartPathManagement(), and SCTPPathVariables().
| simtime_t SCTPPathVariables::rtxTimeout |
Definition at line 252 of file SCTPAssociation.h.
| simtime_t SCTPPathVariables::srtt |
Definition at line 257 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmRttMeasurement(), SCTPAssociation::pmStartPathManagement(), and SCTPPathVariables().
| uint32 SCTPPathVariables::ssthresh |
Definition at line 228 of file SCTPAssociation.h.
Referenced by SCTPAssociation::cwndUpdateAfterCwndTimeout(), SCTPAssociation::cwndUpdateAfterRtxTimeout(), SCTPAssociation::cwndUpdateAfterSack(), SCTPAssociation::cwndUpdateBytesAcked(), SCTPAssociation::cwndUpdateMaxBurst(), SCTPAssociation::initCCParameters(), SCTPAssociation::processHeartbeatAckArrived(), SCTPAssociation::recordCwndUpdate(), SCTPAssociation::removePath(), and SCTPPathVariables().
| cOutVector* SCTPPathVariables::statisticsPathCwnd |
Definition at line 281 of file SCTPAssociation.h.
Referenced by SCTPAssociation::recordCwndUpdate(), SCTPPathVariables(), and ~SCTPPathVariables().
| cOutVector* SCTPPathVariables::statisticsPathRTO |
Definition at line 278 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmRttMeasurement(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::process_TIMEOUT_HEARTBEAT(), SCTPAssociation::process_TIMEOUT_RTX(), SCTPPathVariables(), and ~SCTPPathVariables().
| cOutVector* SCTPPathVariables::statisticsPathRTT |
Definition at line 279 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmRttMeasurement(), SCTPPathVariables(), and ~SCTPPathVariables().
| cOutVector* SCTPPathVariables::statisticsPathSSthresh |
Definition at line 280 of file SCTPAssociation.h.
Referenced by SCTPAssociation::recordCwndUpdate(), SCTPPathVariables(), and ~SCTPPathVariables().
| cMessage* SCTPPathVariables::T3_RtxTimer |
Definition at line 247 of file SCTPAssociation.h.
Referenced by SCTPAssociation::moveChunkToOtherPath(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::processSackArrived(), SCTPAssociation::processTimer(), SCTPAssociation::removePath(), SCTPPathVariables(), SCTPAssociation::sendOnPath(), and SCTPAssociation::tsnWasReneged().
| simtime_t SCTPPathVariables::updateTime |
Definition at line 254 of file SCTPAssociation.h.
Referenced by SCTPAssociation::pmRttMeasurement(), SCTPAssociation::pmStartPathManagement(), and SCTPPathVariables().
1.7.1