Назад | Перейти на главную страницу

неизвестная ошибка при использовании TCMON / TCCOM для применения маркировки QoS DSCP в Windows 2003

У меня есть требование отмечать определенный трафик, исходящий от некоторых серверов Windows 2003, с определенным значением DSCP.

К сожалению, в этой ситуации мы не можем использовать ни маркировку трафика на маршрутизаторе, ни обновление до Windows 2008.

Я провел некоторое время с tcmon и tccom, и я так близок к тому, чтобы это заработало. На полностью обновленной и обновленной виртуальной машине XP я выяснил, как написать сценарий TCCOM (использовал проводник процессов для переменных и проводник объектов word 2003 vba, чтобы выяснить api). Сценарий запускается при загрузке и без проблем настраивает потоки на моей виртуальной машине XP.

Но на сервере Windows 2003 я вообще не могу добавить поток ни через скрипт, ни с помощью tcmon gui. Он просто говорит «неизвестная ошибка» (при написании сценария выдается код ошибки 80004005).

Я попытался решить эту проблему следующим образом:

Кому-нибудь удалось вообще заставить tcmon / tccom работать на Windows 2003?

Для всех, кому интересно, вот мой сценарий (vbscript) с примером потока (не то, что я на самом деле делаю). Он создает поток и добавляет фильтр, который применяет DSCP 32 к трафику с 192.168.10.0/24, идущему на 192.168.20.0/24 tcp-порт 80.

option explicit

dim client 
set client = wscript.createobject("TrafficControl.Client")

dim sInterface 
sInterface = "AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler Miniport"

dim ifce
set ifce = getInterface(client,sInterface)

dim flowSpec
set flowSpec = ifce.CreateFlowSpec

dim filterSpec
set filterSpec = ifce.CreateFilterSpec(2)

clearAllFlows client

flowSpec.Parameters("TX_FRIENDLY_NAME") = "From Vbscript"
flowSpec.Parameters("TX_DCLASS") = 40
flowSpec.Parameters("TX_TOKEN_RATE") = -1
flowSpec.Parameters("TX_SERVICE_TYPE") = 1

filterSpec.Parameters("PROTOCOL_ID_MASK") =0
filterSpec.Parameters("PROTOCOL_ID") = 0
filterSpec.Parameters("DEST_PORT_MASK") = 65535
filterSpec.Parameters("SOURCE_PORT_MASK") = 0
filterSpec.Parameters("DEST_PORT") = 80
filterSpec.Parameters("SOURCE_PORT") = 0
filterSpec.Parameters("DEST_ADDRESS_MASK") = "255.255.255.0"
filterSpec.Parameters("SOURCE_ADDRESS_MASK") = "255.255.255.0"
filterSpec.Parameters("DEST_ADDRESS") = "192.168.20.0"
filterSpec.Parameters("SOURCE_ADDRESS") = "192.168.10.0"

dim newFlow
set newFlow = ifce.CreateFlow(flowSpec,1,"Flow obj from vbscript")
newFlow.CreateFilter filterSpec


function getInterface(oClient,sIntName)
    dim oInterface
    for each oInterface in oClient.interfaces
        if oInterface.Name = sIntName then
            set getInterface = oInterface
        end if
    Next
end function

sub clearAllFlows(oClient)
    dim oInterface, oFlow
    for each oInterface in client.interfaces
        for each oFlow in oInterface.flows
            oFlow.delete
        Next
    Next
end sub