I just looked at the last few posts...I guess that I did digress a bit. So, class, time for a short review on how I figured out the whole thing.
I had found and decoded the viral microcode on the router I brought home from my client in Sacramento. The next step was to get some of my old 'sniffer' packets and run them through the router, and trace what they do.
So I built my own Internet. I grabbed a couple of my spare computers, and set up two client computers, connected through a computer running as a router, using the viral microcode I had found. I built a short routine that would accept data packets into my software viral 'router', let the router code do it's thing, then another normal virtual router would send the data off to the other client computer.
I set up the simulation software to read from the packets I had captured with my sniffers. And I set up a trap in the virtual viral router's code so that the software would halt when it got to those mystery instructions. I set up one of my computers to run the simulation software on my packet files.
I had the viral router BIOS code figured out. I knew what it does, but I needed to see it in action. I needed to load the BIOS into my router emulator so I could see the code in action.
I gathered up the printouts and headed back into the computer room. It was getting kind of late, but I was really curious about the delay factors in the router code.
I sat down at the test machine, and loaded the BIOS program into it. I changed my testing program to use the BIOS code as the router program. I tested it with some sample packets, and with a few more tweaks to get the logging program working, got the sample packets to move right through the tester.
I then set up the source computer to start feeding data packets through the router emulator. And set up the third computer to receive the data packets from the test router.
Then I started the whole process. Data packets from the first computer into the computer with the virtual router, then out of that one into the third computer. I let it run for about 15 minutes, and then stopped the process to look at the timing log. The timings were about what I'd expect. The router code, when running with normal data packets, was pretty efficient in its routings. Data popped right through the router, fast like it was supposed to.
While the first test was running, I created some data packets with the three basic delay codes. I then built a table of packets to send, interspersing the delay packets with normal ones in a random manner. I set the ratio of good data to delay data to about 100 to 1, but randomly dispersed so that the 100:1 was just an average. That would be higher than in the real world, but it would give me an idea about the possible extent of the problem.
Now that I had a baseline for normal data through the delay router, it was time to try my test on the delay packets that I created. I loaded the packets I created into the first computer, and then set it up to start the test. I reset the time logger, and started the test. This test would take a bit longer to run to give me good timings, so I set the first computer to loop continuously until I stopped it. A final check of everything, and I started the process. I watched it for a minute or two and then I left the room for a break. It was about midnight, so I figured that I'd let it run all night while I caught some sleep.
I turned out the lights in the computer room, so there was just the glow of the monitors lighting the room (this was before the big California energy crisis, so I wasn't too concerned about electrical use), and then closed the door to the computer room. A final check of the house, checking the alarm, and made sure the kitchen was cleaned up. I then headed back to the bedroom, after a pit stop and brushed my teeth, and got undressed and climbed into bed. Didn't need to set the alarm, because I had a pretty good internal alarm clock. I figured I'd get up about 6:00 am, and then check out the computer room. It had been a pretty long and intense day, so I was able to fall asleep quite fast.
The next morning, I woke up at 6:10am. OK, so my internal alarm clock was a bit off. But it was close enough for this morning.
After getting dressed, I disabled the alarm system and went outside for the paper. Then back into the kitchen for some breakfast. I looked in the pantry at the cereal shelf. Lots of choices, but today felt like a "Cheerios" day. I grabbed a bowl, a carton of milk, and a banana. Cheerios in the bowl, slicing half of the banana on top, a little bit of sugar, then poured milk over everything. I got a glass from the cupboard and filled it with orange juice. And I spread out the paper, eating Cheerios while I read it. Good stuff: Cheerios and bananas and orange juice. A balanced breakfast; today was a "Go with the Goodness of Cheerios" day.
I spent about 15 minutes with the paper and the bowl of Cheerios. Well, two bowls, since there was still that other half of the banana to use up. When I was done, I cleaned up things as I usually did: dishes rinsed off and in the dishwasher, everything else put away. Looked like the dishwasher was full enough to run, so I put some detergent in the little cup, closed it up, and started it. A quick wipe of the counter and table, put the newspaper in the recycle pile, and the banana peel in the trash (the one for biodegradable items).
After a short trip to the library (I told you I was a "regular" guy!) I was ready to head into computer room. I went down the hallway, and opened the door and turned on the lights. The test computers were just as I left them, happily running through the loops of the test program. I hit the Escape key on the keyboard, so the program would stop the process after the next packet was done. Then I sat down at the logging computer and fed the time log into the spreadsheet, building the graph, and then printing it out.
I held the graph for the normal data in my left hand, and the graph for the delay data in my right. Looking back and forth, you could tell that the delay data graph showed that the delay packets hadn't transferred as fast as the normal data.
I took a closer look at the timing data, and found that each of the delay packets was causing the delay. Well, that stands to reason. The real question was that why was the router code built to respond to the delay code that was in the packets? And where were the packets coming from?
I'd need to confirm my test with the router that I brought home. But it was quite puzzling.