Final Project

Network Traffic Generator

Updated 12/12/01

 

John Cummings

Jeyashankher Ramamirtham

 

Abstract

We implemented a network traffic generator capable of generating six different patterns of cells. On a pre-determined VCI, the generator accepts a control cell that is used to specific the pattern of cells to be generated and several variables used in generation. The current implementation currently accepts a maximum clock of 38 MHz, which can be improved by pipelining calculations in the design. In actual hardware tests, the generator performed as specified with no problems.

 

Introduction

The purpose of this project is to implement a network traffic generator on the FPX that is able to send ATM cells over a link with various probabilistic patterns determined by control cells. The generator has two specific applications:

1. Research - The generator will allow researchers to study various patterns of data and their effects on new networking devices.

2. Industry - The generator can be used by engineers to perform testing on a networking device, such as a router, to ensure it is ready to be marketed.

 

Overview

Figure 1 shows that the generator is divided into two parts: the control cell processor (CCP) and the network traffic generator (NTG). The CPP is responsible for extracting fields from the control cell and informing the NTG that a new command is ready to be processed. The NTG is responsible for generating cells using the parameters it receives from the CCP.

 

Figure 1 - Block diagram of the Network Traffic Generator

 

 

 

The opcodes are shown in table 1 and the traffic patterns associated with them are shown in figure 2. Each square represents one cell.

 

Table 1 - Input opcodes

Input Opcode (hex)

Traffic Pattern

00

None. Generator is idle.

02

Constant interarrival time (IAT) cells

04

Variable IAT cells

06

Constant IAT, constant burst length (BL)

08

Variable IAT, constant BL

0A

Constant IAT, variable BL

0C

Variable IAT, variable BL

 

 

Figure 2 - Traffic patterns

 

Figure 3 shows the control cell format used in this project. When the control cell has been processed by the generator, the OpCode is incremented and the entire cell is passed out of the generator before any traffic is generated. The output control cell is used to verify that the command was received.

 

Figure 3 - Control Cell

The module file for NCHARGE is shown in listing 1.

 

Listing 1 - Module file for NCHARGE

Text Box: <module>
Network Traffic Generator
</module>

<input_opcodes>
0x00,A,0,
0x02,B,2,VCI,Avg_IAT,
0x04,C,1,VCI,
0x06,D,3,VCI,Avg_IAT,Avg_BL,
0x08,E,2,VCI,Avg_BL,
0x0A,F,2,VCI,Avg_IAT,
0x0C,G,1,VCI,
</input_opcodes>

<output_opcodes>
0x01,0,
0x03,2,VCI,Avg_IAT,
0x05,1,VCI,
0x07,3,VCI,Avg_IAT,Avg_BL,
0x09,2,VCI,Avg_BL,
0x0B,2,VCI,Avg_IAT,
0x0D,1,VCI,
</output_opcodes>

<fields>
VCI,x,1,31,1,16,
Avg_IAT,x,2,31,2,0,
Avg_BL,x,4,31,4,0,
</fields>

<help>
A Idle traffic
B Const IAT cells
C Variable IAT cells
D Constant IAT and Constant BL
E Variable IAT and Constant Bl
F Constant IAT and Variable BL
G Variable IAT and Variable BL
</help>

 

 

 


The Control Cell Processor (CCP)

Figure 4 shows the block diagram of the CCP, and figure 5 shows the finite state machine (FSM). A cell enters the CCP at D_Mod_In, and after 14 clock cycles, the entire cell is buffered in the registers. The CountTo14 block raises the Done signal when it has counted to 14, which started when the SOC_Mod_In signal went high. The Done signal alerts the FSM that the cell is ready to be processed. If the cell is a control cell (VCI=23h), then the FSM will inactivate the enable signals of registers (causing the data to stop shifting) and activate the NewCommand signal to inform the NTG that a new command is ready to be processed. When the NTG activates the NewCommandAck to inform the CPP that it is ready to receive the command, the FSM enables the registers to shift the data out of the CCP.

 

Figure 4 - Control Cell Processor block diagram

 

 

Figure 5 - Control Cell Process FSM

 

It is important to note that while the CCP is waiting for the NewCommandAck signal, any other cells that attempt to enter the FPX will be dropped. Therefore, back-to-back control cells will not be processed and should be spaced out enough to give the NTG time to acknowledge the first control cell.

 

If the cell in the registers is not a control cell, the FSM will hold the enable signals high, causing the cell to shift out of the CCP. If the NTG is disabled, this data will be forwarded out of the NTG. If the NTG is active, this data will be dropped.

 

The Network Traffic Generator (NTG)

Figure 6 shows the block diagram of the NTG. Using the fields extracted from the control cell, an inter-arrival time (IAT) random number and burst length (BL) random number are generated by the random number generators (RNG). The IAT Timer and BL Timer are set by the RNGs and are used by the Cell Generator to determine how long to wait between cells and how many cells to send in one burst. The SOC_Out_Mod signal is generated with each outgoing cell.

Figure 6 - Network Traffic Generator block diagram

The RNGs are implemented using linear feedback shift registers (LFSR). Figure 7 shows the block diagram of an 32-bit LFSR, and figure 8 shows the block diagram of a 4-bit LFSR. Bits in the register are tapped and XORed together. The result is a new bit to be shifted into the most significant place of the register. These registers generate uniformly distributed random numbers. The location of the taps were selected based on [Alfke].

Figure 7 - 32-bit Linear Feedback Shift Register (LFSR)

 

Figure 8 - 4-bit LFSR for burst length

 

Figure 9 shows the pass-through hardware that allows the NTG to forward control cells to the output before generating any traffic.

Figure 9 - Pass-through hardware in the NTG

 

Synthesis

The results of the place-and-route are shown in listing 2.

 

Text Box: Design Summary:

Number of errors:      0
Number of warnings:   13
Number of Slices:              1,041 out of 12,288    8%
Number of Slices containing
unrelated logic:                0 out of  1,041    0%
Number of Slice Flip Flops:    1,501 out of 24,576    6%
Number of 4 input LUTs:          700 out of 24,576    2%
Number of bonded IOBs:           174 out of    512   33%
IOB Flip Flops:                             173

Number of GCLKs:                   2 out of      4   50%

Number of GCLKIOBs:                2 out of      4   50%

Total equivalent gate count for design:  18,888

Additional JTAG gate count for IOBs:  8,448

Device utilization summary:

   Number of External GCLKIOBs         2 out of 4      50%
   Number of External IOBs           174 out of 512    33%
   Number of SLICEs                 1041 out of 12288   8%
   Number of GCLKs                     2 out of 4      50%

Listing 2 - Results of place-and-route

The timing results are shown in listing 3.

 

Text Box: --------------------------------------------------------------------------------
  Constraint                                | Requested  | Actual     | Logic 
                                            |            |            | Levels
--------------------------------------------------------------------------------
  NET "RAD_CLKB_ibuf/IBUFG" PERIOD =  33.33 | 33.333ns   | 29.215ns   | 11   
  3 nS   HIGH 50.000 %                      |            |            |      
--------------------------------------------------------------------------------
  NET "RAD_CLK_ibuf/IBUFG" PERIOD =  33.333 | 33.333ns   | 16.930ns   | 9    
   nS   HIGH 50.000 %                       |            |            |      
--------------------------------------------------------------------------------
  COMP "RAD_READY" OFFSET = OUT 33.333 nS   | 33.333ns   | 10.171ns   | 2    
  AFTER COMP "RAD_CLK"                      |            |            |      
--------------------------------------------------------------------------------
  COMP "TCAFF_LC_RAD" OFFSET = OUT 33.333 n | 33.333ns   | 6.502ns    | 1    
  S  AFTER COMP "RAD_CLK"                   |            |            |      
--------------------------------------------------------------------------------
  COMP "RAD_TEST2(4)" OFFSET = OUT 33.333 n | 33.333ns   | 6.502ns    | 1    
  S  AFTER COMP "RAD_CLK"                   |            |            |      
--------------------------------------------------------------------------------
  COMP "RAD_TEST2(3)" OFFSET = OUT 33.333 n | 33.333ns   | 6.502ns    | 1    
  S  AFTER COMP "RAD_CLK"                   |            |            |      
--------------------------------------------------------------------------------
Listing 3 - Timing results

 

 


Testing

Testing occurred in two stages. Stage 1 testing was performed with ModelSim and involved the simulation of all part of the implementation. Stage 2 testing was performed on the actual hardware. In simulation, the generator performed to specification with no problems. In hardware, the generator performed as expected. It successful returned an output control cell and generated the requested traffic.

 

Conclusions

The network traffic generator was fully implemented. Future work on the device will include pipelining the calculations to allow the generator to perform at 100 MHz. The current speed is 38 MHz, which does not meet our goal. Nevertheless, all traffic pattern are generated as expected. The generator is ready to be used by researchers and test engineers to study the effects of network traffic on other networking devices.

 

References

Alfke, Peter. "Efficient Shift Registers, LFSR Counters, and Long Pseudo-Random Sequence Generators." http://www.xilinx.com/xapp/xapp052.pdf

 

George, Maria and Peter Alfke. "Linear Feedback Shift Registers in Vertex devices." http://www.xilinx.com/xapp/xapp210.pdf