The point is who sets those MAC address. The M5 simulator or users? I know the IP addresses are set by users in .rcS files. In the original M5, does each packet contain the destination mac address? Could you tell me where a packet is created in M5 source files? Thanks a lot.
Xin ---- Original message ---- >Date: Thu, 6 Dec 2007 20:36:10 -0500 >From: Ali Saidi <[EMAIL PROTECTED]> >Subject: Re: [m5-users] issues on switch model for cluster >To: M5 users mailing list <[email protected]> > >The correct way is the MAC address, and it's always the mac address. >The IEEE 802.1D specification has a section on ethernet switches that >describes the process. > >Ali > >On Dec 6, 2007, at 7:19 PM, <[EMAIL PROTECTED]> wrote: > >> Actually, the EtherLink model can be completely replaced >> by the EtherSwitch model. The topology is looked as follows: >> ------------------------- >> System1--EtherInt1-|-Interface1--Interface2-|-EtherInt2--System2 >> | \ / | >> | \ / | >> | Interface3 | >> | | | >> ----------|---------------- >> EtherInt3 >> | >> System3 >> >> The above box is the switch model. The peer of EtherInt(i) is >> set to be Interface(i) and Interfaces in the box are >> interconnected with Links instead of EtherLinks. >> In your switch model, even though there are N EtherInts in >> the box and they are connected via Etherlinks from/to >> outside, some kind of route procedure is still needed. >> When the packet arrive at the EtherInt in the switch model, >> how can you determine which port is appropriate? I think >> the only way is to find the destination information from >> the packet,no matter mac address or ip address. >> So the question is how to get the destination information >> from packet. >> >> Xin >> >> ---- Original message ---- >>> Date: Thu, 6 Dec 2007 11:39:27 -0500 >>> From: Ali Saidi <[EMAIL PROTECTED]> >>> Subject: Re: [m5-users] issues on switch model for cluster >>> To: M5 users mailing list <[email protected]> >>> >>> >>> On Dec 6, 2007, at 11:06 AM, <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> wrote: >>> >>>> Hello, >>>> >>>> I have created an EtherSwitch model to replace the EtherLink. >>>> However, I got two problems: >>>> >>>> 1) In original EtherLink model, each Interface has only one >>>> txlink, so when Interface::recvPacket(packet) is called by >>>> its peer, txlink->transmit(packet) is returned. But in >>>> the EtherSwitch model, each Interface has N-1 txlinks(N is >>>> # of systems), so function recvPacket(packet) must >>>> determine >>>> which txlink is needed to transmit the packet. >>> The idea is that each two endpoints should have an EtherInt. So each >>> system will have an EtherInt and then the switch should have a >>> separate EtherInt for each "port" that exists on the switch. The >>> probably should be connected with an EtherLink. >>> >>>> I tried to >>>> find the destination information in the packet. I looked >>>> through base/inet.hh and found the function dst() can >>>> return >>>> the destination address, so I wrote the following codes: >>>> IpPtr p = IpPtr(packet); >>>> uint32_t ip_address = p->dst(); >>>> But the simulator exited with error when it ran the >>>> above codes. Can anyone know how to get the destination >>>> information from the packet? >>> You should read the IEEE 802.1D ethernet standard. Not all packets >>> transfered across ethernet are IP packets. You need to route based on >>> MAC addresses, not on IP addresses. The switch model needs to keep a >>> list of MAC addresses behind each port and then when it receives a >>> packet it needs to find the appropriate port and send the packet to >>> it. To be complete the model also needs to detect when no port exists >>> and respond appropriately. >>> >>>> >>>> 2) similar to the above problem. In original EtherLink model, >>>> when Interface::isBusy() is called, it just returns >>>> txlink->busy() since it has only one txlink. But in the >>>> EtherSwitch model, isBusy doesn't know which txlink >>>> is needed to transmit the packet and the worse is no packet >>>> can be used to determine the destination. One feasible >>>> solution is make sure all txlinks are free before a packet >>>> is transmitted although only one txlink is used. My >>>> question is how to modify the original code in order to >>>> replace isBusy() by isBusy(packet). >>> I think this will be more clear when you read the above >>> specification, >>> but the architecture should look something like this: >>> http://zeep.eecs.umich.edu/~saidi/etherswitch.pdf >>> >>> Ali >>> >>> _______________________________________________ >>> m5-users mailing list >>> [email protected] >>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users >> _______________________________________________ >> m5-users mailing list >> [email protected] >> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users >> > >_______________________________________________ >m5-users mailing list >[email protected] >http://m5sim.org/cgi-bin/mailman/listinfo/m5-users _______________________________________________ m5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
