...first of all - congratulations for reaching this new milestone!! I'm very excited and willing to test the new features in our lab environment (...and hopefully get rid of my own ARP/ND/IGMP code) :-) But I'm not sure if my requirements can already be solved with the new features. What I need to do:
- STL L2 Mode (qinq, currently I'm using service_arp and service_IPv6ND to resolve GWs and respond to arp-requests from the NUT)
Somehow I'm not able to find an example on how to accomplish this setup using the new features. Is there any example?
Thanks and best regards,
Andreas
--
You received this message because you are subscribed to the Google Groups "TRex Traffic Generator" group.
To unsubscribe from this group and stop receiving emails from it, send an email to trex-tgn+u...@googlegroups.com.
To post to this group, send email to trex...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/trex-tgn/29ec47b3-4f45-4876-8994-04b74329dd83%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/trex-tgn/872ee926-716b-498a-9703-566f0b7a360c%40googlemail.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/trex-tgn/83088ff2-6d9b-440f-a45c-3584c7d53cc9%40googlemail.com.
For more options, visit https://groups.google.com/d/optout.
Hi Hanoh,
…great news! Will be back in business next week and try to test this ASAP! Thanks so much for your efforts!
Best regards,
Andreas
--
You received this message because you are subscribed to the Google Groups "TRex Traffic Generator" group.
To unsubscribe from this group and stop receiving emails from it, send an email to trex-tgn+u...@googlegroups.com.
To post to this group, send email to trex...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/trex-tgn/6caaf2c4-706a-485b-a32e-3b21a2bfd65e%40googlegroups.com.
Hi Yaroslav,
It's very nice that you adopt our features so quickly.
QinQ should behave as you have recorded in TX (outer 0x88a8 and inner 0x8100)
https://en.wikipedia.org/wiki/QinQ
[AB] As far as I know only the Cisco-Metro-Switches are using 802.1ad – all catalysts and nexus Switches in our testlab use double 802.1q 😊 So I cannot change this requirement in my setup, since this is caused by the cisco gear 😉
However, we have talked with Hanoch and will provide a way make it configurable.
[AB] Great – thanks!
Andreas
Thanks,
Yaroslav.
Hi,
...I have some questions regarding the usage of the namespaces feature regarding stream-attachment. From my understanding the current namespace feature would resolve the problems where DUTs/NUTs are doing ARP requests towards TRex. Is there any functionality from TRex towards the DUTs as well (performing ARPs, NDs)? My current implementation is relying on the services framework (use service_arp to discover default-gw MAC) and I would like to get rid of the services for ARP resolution.
When connecting to a namespace and do a ping to an ip address in another subnet I can see the arp-request for the default-gw:
root:/home/trex/v2.50 $ifconfig
trex-a-0-3-L Link encap:Ethernet HWaddr 00:33:33:33:00:01
inet addr:172.17.22.21 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:9280 Metric:1
RX packets:1598 errors:0 dropped:472 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:195990 (191.3 KiB) TX bytes:672 (672.0 B)
root:/home/trex/v2.50 $route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.17.22.1 0.0.0.0 UG 0 0 0 trex-a-0-3-L
172.17.22.1 0.0.0.0 255.255.255.255 UH 0 0 0 trex-a-0-3-L
root:/home/trex/v2.50 $ping 172.17.21.1
PING 172.17.21.1 (172.17.21.1) 56(84) bytes of data.
[...]
root:/home/trex/v2.50 $tshark -i trex-a-0-3-L
Running as user "root" and group "root". This could be dangerous.
Capturing on 'trex-a-0-3-L'
[...]
4 19.127676 00:33:33:33:00:01 -> Broadcast ARP 42 Who has 172.17.22.1? Tell 172.17.22.21
So if everything would work correctly (qinq encapsulation fixed...), there would be an ARP entry for the default-gw in this namespace.
now my questions:
- is there any way to make the namespace resolve the default-gw MAC via API (explicitly or implicitly by just sending traffic)?
- what's the recommended way to attach stateless streams to the namespace interface – is it possible at all?
- Do I need to rediscover the gateway MAC myself or can I just attach the streams without default-gw MAC to the namespace interface (how would I do that) ?
I’m trying to get an idea on what I have to modify in my existing script to make full use of the namespace feature. In the best case, I would just attach a stream to the namespace interface without any requirement to resolve L2 MACs?!
Thanks,
Andreas
Von: Yaroslav Brustinov <y.bru...@gmail.com>
Gesendet: Montag, 7. Januar 2019 08:49
An: Andreas Bourges <andyb...@googlemail.com>
Cc: TRex Traffic Generator <trex...@googlegroups.com>
Betreff: Re: [trex-tgn] Namespaces with stl l2
Hi, Andreas.
"now my questions:
- is there any way to make the namespace resolve the default-gw MAC via API (explicitly or implicitly by just sending traffic)?
[hh] It is not possible today but it is duable. however we didn't do that beacuse it would be super slow to do that on 1000 namespace. (we need to run a arp command in each namespace only to send packet it about factor 1000 slower)
Faster way is to use the services infra to generate many arps and process the response in parallel
- what's the recommended way to attach stateless streams to the namespace interface – is it possible at all?
[hh] not possible. you can sent traffic on bealf of the namespace using streams but you need to build it yourself. namespace are *SLOW* and only for maintenance/slow/complex protocols.
- Do I need to rediscover the gateway MAC myself or can I just attach the streams without default-gw MAC to the namespace interface (how would I do that) ?
[hh] Yes, your need to discover the gateway MAC, this would be the fastest way to do that. namespace will maintain it,
To view this discussion on the web visit https://groups.google.com/d/msgid/trex-tgn/004801d4a673%24bcdf55f0%24369e01d0%24%40googlemail.com.
For more options, visit https://groups.google.com/d/optout.
Hi Hanoh,
…ok – thanks for your explanation, I understand. So I will keep using the services framework and add namespaces interfaces for ARP/ND handling from DUT during initialization. Two more things:
Thanks for your prompt response,
Andreas
To view this discussion on the web visit https://groups.google.com/d/msgid/trex-tgn/706417a3-e6cf-4ea1-b6c5-d0804cb4ecf5%40googlemail.com.
For more options, visit https://groups.google.com/d/optout.
cmds.add_node("00:01:02:03:04:05")cmds.set_vlan("00:01:02:03:04:05", [123, 123], [0x8100, 0x8100])...
To view this discussion on the web visit https://groups.google.com/d/msgid/trex-tgn/74b72c58-fba7-4454-a928-d2cd74748792%40googlemail.com.
Hi,
thanks for reacting so fast! In the meanwhile I already modified the local code to (hard-code) 8100/8100 somewhere in the TREX cpp/.h files and adjusted my script. From what I can tell till now, it looks *really* great!
Will checkout the new branch and use it for further testing!
Hi Yaroslav,
…unfortunately your branch seems not up-to-date with v2.50:
ansible:~/ansible-dc/scripts (namespace_support) $ ./trex_client.py --exc "(MC|IPv6|WA|OTV)"
Traceback (most recent call last):
File "./trex_client.py", line 2491, in <module>
curses.wrapper(sm.run, streamLog, duration, cli_args.transmit)
File "/usr/lib/python2.7/curses/wrapper.py", line 43, in wrapper
return func(stdscr, *args, **kwds)
File "./trex_client.py", line 201, in run
self.setupNamespaces()
File "./trex_client.py", line 244, in setupNamespaces
r=self.c.set_namespace(port, method='get_nodes')
AttributeError: 'STLClient' object has no attribute 'set_namespace'
ansible:~/ansible-dc/scripts (namespace_support) $
Works fine with v2.50 ?!
Thanks,
Andreas
Von: Yaroslav Brustinov <y.bru...@gmail.com>
Gesendet: Dienstag, 8. Januar 2019 15:55
To view this discussion on the web visit https://groups.google.com/d/msgid/trex-tgn/006e01d4a76f%24e9a4d810%24bcee8830%24%40googlemail.com.
For more options, visit https://groups.google.com/d/optout.
…sorry – I had switched to the proper branch on the server machine, but forgot to do the same on my client machine, where the script runs ☹
Now it works – will have a more closer look tomorrow!
Thanks for your assistance,
Hi,
…the double-802.1q works as expected – great stuff! Tried IPv4 and IPv6 and both worked right out of the box. As expected, setting up the namespaces takes a while (almost 2s on my server per namespace), but since they’re kept until the next TRex-restart that’s fine for me. I will adjust and “optimize” my script and perform further tests with namespaces, but from what I can tell until now, this is a huge progress for my use-case and makes me very confident in using TRex for the next big project 😉
Thanks a lot for all your efforts!
Andreas
--
You received this message because you are subscribed to the Google Groups "TRex Traffic Generator" group.
To unsubscribe from this group and stop receiving emails from it, send an email to trex-tgn+u...@googlegroups.com.
To post to this group, send email to trex...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/trex-tgn/009001d4a7e6%248b6b2ac0%24a2418040%24%40googlemail.com.
For more options, visit https://groups.google.com/d/optout.
Hi Hanoh,
Hi Andreas, In regards to multicast IGMP (join requests)
Do you think that adding a small IGMP server that will handle the traffic will help?
the API will be something like this:
mc_add_member_ipv4(namespace-mac, ipv4)
mc_remove_member_ipv4(namespace-mac, ipv4)
mc_set_ttl_ipv4(namespace-mac)
The same for IPv6.
The server will handle the IGMP traffic (responses to DUT requests) an generate the
IGMP packets join requests.
The multicast traffic ( e.g. Video) will be generated by the streams
[AB] This would certainly give the last polishing to the namespace feature 😉 I’m not sure how much effort this would mean to you?! For the time being, I could also live with periodic join requests sent via a low-speed stream, but having a mini-server that takes care of proper IGMP handling would be great!
Thanks,
Andreas