В том месте, где TCP New Reno устанавливает пороговое значение после отбрасывания пакета в NS3

В TCP New Reno он устанавливает пороговое значение на половину текущего CWND, как только обнаруживается отбрасывание пакета. Мне нужно найти метод, который решит эту задачу.

В tcp-l4-protocol.h оно использует TcpClassicRecoveryкак метод восстановления. ВTcpClassicRecovery входя в фазу, он использует следующий сегмент кода для установки текущего CWND,

void
TcpClassicRecovery::EnterRecovery (Ptr<TcpSocketState> tcb, uint32_t dupAckCount,
                                uint32_t unAckDataCount, uint32_t lastSackedBytes)
{
  NS_LOG_FUNCTION (this << tcb << dupAckCount << unAckDataCount << lastSackedBytes);
  NS_UNUSED (unAckDataCount);
  NS_UNUSED (lastSackedBytes);
  tcb->m_cWnd = tcb->m_ssThresh;
  tcb->m_cWndInfl = tcb->m_ssThresh + (dupAckCount * tcb->m_segmentSize);
}

Тогда я предполагаю, прежде чем позвонить EnterRecoveryметод cwnd уже обновлен. Мне нужно найти место, где обновляется cwnd.

Я также обновил TcpNewReno::GetSsThreshи проанализировал вывод. Но это также не тот метод, который мне нужен, поскольку он не сокращает cwnd вдвое.

ПРИМЕЧАНИЕ: я использую seventh.ccпроверить cwnd. Всегда опускает cwnd до 1072. График, который я получаю, тоже включен. Что мне нужно сделать, так это сбросить cwnd до половины значения после отбрасывания пакета. Может бытьseventh.cc не использует значение по умолчанию tcp-l4-protocol.h. Если да, то как я могу это изменить?

2 ответа

Я нашел ответ. Проблема была вseventh.cc. Он не использует протокол TCP уровня 4 по умолчанию.

Чтобы запустить протокол TCP уровня 4 по умолчанию (TCP New Reno), я нашел пример, который tcp-large-transfer.cc. Он расположен вns-3.30/examples/tcp/tcp-large-transfer.cc.

Я просто хотел добавить небольшое примечание: код для изменения cwnd находится в самом фрагменте вашего вопроса. В частности, это строка:

tcb-> m_cWnd = tcb-> m_ssThresh;

Большая часть состояния сокета TCP фактически хранится в tcb который является Ptr<TcpSocketState>.

Другие вопросы по тегам