#include <SCTPAssociation.h>
Public Member Functions | |
SCTPPathVariables (IPvXAddress addr, SCTPAssociation *assoc) | |
~SCTPPathVariables () | |
Public Attributes | |
SCTPAssociation * | association |
IPvXAddress | remoteAddress |
bool | activePath |
bool | confirmed |
bool | requiresRtx |
bool | hbWasAcked |
bool | primaryPathCandidate |
bool | forceHb |
uint32 | pathErrorCount |
uint32 | pathErrorThreshold |
uint32 | pmtu |
uint32 | cwnd |
uint32 | ssthresh |
uint32 | partialBytesAcked |
uint32 | outstandingBytes |
simtime_t | heartbeatTimeout |
simtime_t | heartbeatIntervalTimeout |
simtime_t | rtxTimeout |
simtime_t | cwndTimeout |
simtime_t | updateTime |
simtime_t | lastAckTime |
simtime_t | cwndAdjustmentTime |
simtime_t | pathRto |
simtime_t | srtt |
simtime_t | rttvar |
cMessage * | HeartbeatTimer |
cMessage * | HeartbeatIntervalTimer |
cMessage * | CwndTimer |
cMessage * | T3_RtxTimer |
cOutVector * | pathSsthresh |
cOutVector * | pathCwnd |
cOutVector * | pathTSN |
cOutVector * | pathRcvdTSN |
cOutVector * | pathRTO |
cOutVector * | pathRTT |
SCTPPathVariables::SCTPPathVariables | ( | IPvXAddress | addr, | |
SCTPAssociation * | assoc | |||
) |
00032 { 00033 association = assoc; 00034 remoteAddress = addr; 00035 activePath = true; 00036 confirmed = false; 00037 primaryPathCandidate = false; 00038 pathErrorCount =0; 00039 pathErrorThreshold = assoc->getSctpMain()->par("pathMaxRetrans"); 00040 if (!pathErrorThreshold) 00041 pathErrorThreshold = PATH_MAX_RETRANS; 00042 pathRto = assoc->getSctpMain()->par("rtoInitial"); 00043 heartbeatTimeout = pathRto; 00044 double interval = (double)assoc->getSctpMain()->par("hbInterval"); 00045 00046 if (!interval) 00047 interval = HB_INTERVAL; 00048 heartbeatIntervalTimeout = pathRto+interval; 00049 srtt = pathRto; 00050 lastAckTime = 0; 00051 forceHb = false; 00052 partialBytesAcked = 0; 00053 outstandingBytes = 0; 00054 RoutingTableAccess routingTableAccess; 00055 InterfaceEntry *rtie = routingTableAccess.get()->getInterfaceForDestAddr(remoteAddress.get4()); 00056 pmtu = rtie->getMTU(); 00057 hbWasAcked = false; 00058 rttvar = 0.0; 00059 00060 cwndTimeout = pathRto; 00061 cwnd = 0; 00062 updateTime = 0.0; 00063 cwndAdjustmentTime=0; 00064 char str[70]; 00065 sprintf(str, "HB_TIMER %d:%s",assoc->assocId,addr.str().c_str()); 00066 HeartbeatTimer = new cMessage(str); 00067 sprintf(str, "HB_INT_TIMER %d:%s",assoc->assocId,addr.str().c_str()); 00068 HeartbeatIntervalTimer = new cMessage(str); 00069 sprintf(str, "CWND_TIMER %d:%s",assoc->assocId,addr.str().c_str()); 00070 CwndTimer = new cMessage(str); 00071 sprintf(str, "RTX_TIMER %d:%s",assoc->assocId,addr.str().c_str()); 00072 T3_RtxTimer = new cMessage(str); 00073 HeartbeatTimer->setContextPointer(association); 00074 HeartbeatIntervalTimer->setContextPointer(association); 00075 CwndTimer->setContextPointer(association); 00076 T3_RtxTimer->setContextPointer(association); 00077 sprintf(str, "Slow Start Threshold %d:%s",assoc->assocId,addr.str().c_str()); 00078 pathSsthresh = new cOutVector(str); 00079 sprintf(str, "Congestion Window %d:%s",assoc->assocId,addr.str().c_str()); 00080 pathCwnd = new cOutVector(str); 00081 sprintf(str, "TSN sent for assoc %d on path %s",assoc->assocId,addr.str().c_str()); 00082 pathTSN = new cOutVector(str); 00083 sprintf(str, "TSN received for assoc %d on path %s",assoc->assocId,addr.str().c_str()); 00084 pathRcvdTSN = new cOutVector(str); 00085 sprintf(str, "RTO for assoc %d on path %s",assoc->assocId,addr.str().c_str()); 00086 pathRTO = new cOutVector(str); 00087 sprintf(str, "RTT for assoc %d on path %s",assoc->assocId,addr.str().c_str()); 00088 pathRTT = new cOutVector(str); 00089 sprintf(str, "peerRwnd/RTT for assoc %d on path %s",assoc->assocId,addr.str().c_str()); 00090 SCTPPathInfo* pinfo = new SCTPPathInfo(); 00091 pinfo->setRemoteAddress(addr); 00092 T3_RtxTimer->setControlInfo(pinfo); 00093 HeartbeatTimer->setControlInfo(pinfo->dup()); 00094 HeartbeatIntervalTimer->setControlInfo(pinfo->dup()); 00095 CwndTimer->setControlInfo(pinfo->dup()); 00096 00097 }
Referenced by SCTPPathVariables().
Referenced by SCTPAssociation::cwndUpdateAfterCwndTimeout(), SCTPAssociation::dequeueAckedChunks(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::printSctpPathMap(), SCTPAssociation::process_TIMEOUT_CWND(), SCTPAssociation::process_TIMEOUT_HEARTBEAT(), SCTPAssociation::process_TIMEOUT_HEARTBEAT_INTERVAL(), SCTPAssociation::process_TIMEOUT_RTX(), SCTPAssociation::processHeartbeatAckArrived(), SCTPAssociation::processInitArrived(), SCTPAssociation::processSackArrived(), SCTPPathVariables(), SCTPAssociation::sendAll(), SCTPAssociation::sendHeartbeat(), and SCTPAssociation::updateCounters().
Referenced by SCTPAssociation::cwndUpdateAfterSack(), and SCTPAssociation::processSackArrived().
Referenced by SCTPAssociation::processHeartbeatAckArrived(), and SCTPPathVariables().
Referenced by SCTPPathVariables().
uint32 SCTPPathVariables::pmtu |
Referenced by SCTPAssociation::createSack(), SCTPAssociation::cwndUpdateAfterCwndTimeout(), SCTPAssociation::cwndUpdateAfterRtxTimeout(), SCTPAssociation::cwndUpdateAfterSack(), SCTPAssociation::cwndUpdateBytesAcked(), SCTPAssociation::cwndUpdateMaxBurst(), SCTPAssociation::fcAdjustCounters(), SCTPAssociation::initCCParameters(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::process_TIMEOUT_CWND(), SCTPAssociation::processHeartbeatAckArrived(), SCTPPathVariables(), and SCTPAssociation::sendAll().
uint32 SCTPPathVariables::cwnd |
Referenced by SCTPAssociation::cwndUpdateAfterCwndTimeout(), SCTPAssociation::cwndUpdateAfterRtxTimeout(), SCTPAssociation::cwndUpdateAfterSack(), SCTPAssociation::cwndUpdateBytesAcked(), SCTPAssociation::cwndUpdateMaxBurst(), SCTPAssociation::fcAdjustCounters(), SCTPAssociation::initCCParameters(), SCTPAssociation::printSctpPathMap(), SCTPAssociation::process_TIMEOUT_CWND(), SCTPPathVariables(), and SCTPAssociation::sendAll().
uint32 SCTPPathVariables::ssthresh |
Referenced by SCTPAssociation::bytesAllowedToSend(), SCTPAssociation::cwndUpdateMaxBurst(), SCTPAssociation::dequeueAckedChunks(), SCTPAssociation::pmStartPathManagement(), SCTPAssociation::printSctpPathMap(), SCTPAssociation::process_TIMEOUT_RTX(), SCTPAssociation::processSackArrived(), SCTPPathVariables(), and SCTPAssociation::sendAll().
simtime_t SCTPPathVariables::heartbeatTimeout |
simtime_t SCTPPathVariables::rtxTimeout |
simtime_t SCTPPathVariables::cwndTimeout |
Referenced by SCTPAssociation::pmDataIsSentOn(), and SCTPPathVariables().
simtime_t SCTPPathVariables::updateTime |
simtime_t SCTPPathVariables::lastAckTime |
simtime_t SCTPPathVariables::cwndAdjustmentTime |
Referenced by SCTPAssociation::cwndUpdateAfterCwndTimeout(), SCTPAssociation::cwndUpdateAfterRtxTimeout(), SCTPAssociation::cwndUpdateAfterSack(), SCTPAssociation::cwndUpdateBytesAcked(), SCTPAssociation::cwndUpdateMaxBurst(), SCTPAssociation::fcAdjustCounters(), SCTPAssociation::initCCParameters(), SCTPAssociation::process_TIMEOUT_CWND(), SCTPAssociation::processHeartbeatAckArrived(), and SCTPPathVariables().
simtime_t SCTPPathVariables::pathRto |
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(), and SCTPAssociation::sendAll().
simtime_t SCTPPathVariables::srtt |
simtime_t SCTPPathVariables::rttvar |
cMessage* SCTPPathVariables::HeartbeatTimer |
cMessage* SCTPPathVariables::CwndTimer |
cMessage* SCTPPathVariables::T3_RtxTimer |
cOutVector* SCTPPathVariables::pathSsthresh |
cOutVector* SCTPPathVariables::pathCwnd |
Referenced by SCTPAssociation::cwndUpdateAfterCwndTimeout(), SCTPAssociation::cwndUpdateAfterRtxTimeout(), SCTPAssociation::cwndUpdateAfterSack(), SCTPAssociation::cwndUpdateBytesAcked(), SCTPAssociation::cwndUpdateMaxBurst(), SCTPAssociation::fcAdjustCounters(), SCTPAssociation::initCCParameters(), SCTPAssociation::process_TIMEOUT_CWND(), and SCTPPathVariables().
cOutVector* SCTPPathVariables::pathTSN |
Referenced by SCTPPathVariables(), and SCTPAssociation::sendAll().
cOutVector* SCTPPathVariables::pathRcvdTSN |
cOutVector* SCTPPathVariables::pathRTO |
cOutVector* SCTPPathVariables::pathRTT |
Referenced by SCTPAssociation::pmRttMeasurement(), and SCTPPathVariables().