When there is no traffic generator available, you cannot test quality-of-service (QoS) in terms of bandwidth utilization. You need a tool like the traffic generator to generate the required bandwidth.
Consider the following example:
Queue 1 - CoS A - 25% bandwidth priority high
Queue 2 - CoS B - 35% bandwidth priority medium
Queue 3 - CoS C - 40% bandwidth priority low
In the preceding example, to confirm that the queueing mechanism is working properly, you need to generate traffic that is split into the three classes of service (CoS): CoS A, CoS B, and CoS C. One test could be to send 300 Mbps for CoS A and nothing for CoS B and CoS C, and then check whether Queue 1 has access to the leftover bandwidth. For such a test, you need to generate traffic in a "high scale" of bandwidth. To generate such traffic, you need a traffic generator.
However, there are other tests you can perform to validate QoS, that do not involve high amounts of bandwidth---for example:
• Validating the classification process
• Validating that the mapping of the different classes of service to different queues is working as configured
• Validating that the rewrite rules scheme is working as configured
To perform the preceding tests, you only need packets with a certain QoS marking (equivalent to the CoS that you are testing) and inject those packets into the setup. Then, through the CLI, monitor what is happening to those packets next hop by next hop. For example, from PE1 to P1 to P2 to PE2.
CoS value of X, identified by the DiffServ code point (DSCP) value of Y, is mapped to CoS value of Z by using Queue 1 in provider edge routers PE1 and PE2 and Queue 0 in provider routers P1 and P2.
You can inject packets with a DSCP value of Y into a PE1, and then monitor the traffic in PE1, P1, P2, and PE2 to determine which CoS those packets are mapped to and what egress queues are being used.
To generate these packets, you could use logical systems. You can use logical tunnel interfaces to interconnect logical systems or physical loops in the router (or simply use separate physical routers).
If you want a DSCP value of Y, inject packets in the following order:
PE1 (LS1) --- > PE1 (LS2) ----> PE1 (main routing instance)
LS1 generates the ping.
LS2 classifies the traffic as belonging to CoS X and applies a rewrite rule of "SET DSCP to Y."
PE1 (at the main routing instance) receives packets (from the ping) with a DSCP value of Y. Thus you have a flow of packets with the DSCP value you wanted.
Now the obvious limitation is that you cannot generate 1G of traffic using this method. So for high-bandwidth generation, you always need a traffic generator.
There are some developments regarding virtual traffic generators--for example, vSpirent, which is currently being tested.