hello, every one

when i read the XCP code in ns2.30, i have two question:
i)as to the WRR queue schedule method in xcp.cc, i think the router
would serve all the queue in the same way no matter what was the
queue's weight; the qToDq_'s value was just 0 1 2 and turn round; the
weight didn't work;but in ns manual it say the XCP router would serve
XCP queue and TCP queue in
default. did i make mistake?
int XCPWrapQ::queueToDeque()
{
        int i = 0;

        if (wrrTemp_[qToDq_] <= 0) {
                qToDq_ = ((qToDq_ + 1) % MAX_QNUM);
                wrrTemp_[qToDq_] = queueWeight_[qToDq_] - 1;
        } else {
                wrrTemp_[qToDq_] = wrrTemp_[qToDq_] -1;
        }
        while ((i < MAX_QNUM) && (q_[qToDq_]->length() == 0)) {
                wrrTemp_[qToDq_] = 0;
                qToDq_ = ((qToDq_ + 1) % MAX_QNUM);
                wrrTemp_[qToDq_] = queueWeight_[qToDq_] - 1;
                i++;
        }
        return (qToDq_);
}
ii)when the XCP end system initial the congestion header, it just
define the MAX_THROUGHPUT to a constant value, it was different from
the draft-falk-xcp-spec-02; did it mean the delta_throughput_'s value
is not important, the router will change it anyway?
void
XcpEndsys::send(Packet *p, int datalen)
{
        ......
        if (xh->xcp_enabled_) {
#define MAX_THROUGHPUT        1e24
                if (srtt_estimate_ != 0) {
                        tput = tcp_->window() * tcp_->size_ / srtt_estimate_;
                        xh->x_ = srtt_estimate_/tcp_->window();
                        xh->delta_throughput_ = (MAX_THROUGHPUT
                                                 - tput);
                } else {
                        //XXX can do xh->xcp_enabled_ = hdr_xcp::XCP_DISABLED;
                        xh->x_ = 0;
                        xh->delta_throughput_ = 0;
                }
        }
        ........
}

best regards.

Reply via email to