-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multi-homed support #123
Comments
This configuration is not supported at the moment as the kernel module is tied to a single network interface. |
Nod. Appreciate the analysis and comment back. Not sure if you mark issues as feature requests. I'll keep working on my project with a switch proper and loop back here once the setup is working in the standard configuration. Kind regards, Aris |
yes, we can use the issue as feature request. Let's keep it open then. |
Just dropping in to say that the standard configuration (fed by a separate PTP master) works as expected :) |
Can it be tied to a bridge interface, instead of a physical interface, and then the physical interfaces could be joined to that bridge? |
You can give it a try, it would be interesting to see the result. |
I think PTP doesn't work with bridge networking. See this. |
As long as on the bridge interface you can receive multicast traffic it should work. |
The configuration I was running was based on distributing 4 sets of 8ch audio from a main AES67-DAEMON instance, using a an appropriate switch to which 4 end point devices are patched in. I removed the switch, replacing with a bridged setup on all ports of a 4-port PCIe card, and set the main AES67-DAEMON instance to use this bridge. I tried running PTP4L on one of the physical 4-port interfaces that are part of the bridge (no sync). I did connect a separate device running PTP to one of the bridged interfaces - and yes, that works nicely. So, I've removed the switch (nice), but still need a separate physical device that patches into the bridge to provide a clock. Maybe I misunderstood the comments above? |
did you patch ptp4l in order to enable IP_MULTICAST_LOOP ? Without the patch you will not be able to receive PTP packets sent by ptp4l on the same interface where the daemon is running. |
Thanks. I have patched ptp4l, and retried. Regardless of the interface I run ptp4l on, I observe the following:
Maybe multicast is not setup correctly... |
can you describe your setup better? are you running multiple daemon instances on the same host? |
System consists of:
Scenario 1:
This configuration works just fine. Scenario 2:
This configuration results in two aes67-daemon PTP syncs only; the primary host always syncs, as does the satellite system that is associated with the port on which the patched PTP is run. Hopefully this is clear, can make a diagram if needed! |
I cannot reproduce your environment here, try to disable the multicast snooping on the interface br0:
and also, maybe:
|
any update on this ? |
I'll try this tonight and let you know how it goes. |
Well, those options didn't do anything. But good news - what seems to work is if I run PTP4L in JBOD mode. Then it seems to work just fine - all clocks sync. |
My command (on the primary aes67-daemon host that has the 4port ethernet): root@controller:~/bin# /usr/local/sbin/ptp4l -i eno2 -i enp1s0f0 -i enp1s0f1 -i enp1s0f2 -i enp1s0f3 -f /etc/linuxptp/ptp4l.conf --domainNumber 0 --dscp_event 46 --dscp_general 34 --logAnnounceInterval 1 --logSyncInterval 0 --logMinDelayReqInterval 0 --logMinPdelayReqInterval 0 --announceReceiptTimeout 3 --boundary_clock_jbod 1 -m Maybe not all those options are necessary, I re-used an old config I had from previous projects. |
Maybe I spoke too soon, the endpoints sync, but not the primary host. Sigh. |
Very weird, checking the settings: root@controller: and running PTP4L: /usr/local/sbin/ptp4l -i enp1s0f0 -i enp1s0f1 -i enp1s0f2 -i enp1s0f3 -f /etc/linuxptp/ptp4l.conf --domainNumber 0 --dscp_event 46 --dscp_general 34 --logAnnounceInterval 1 --logSyncInterval 0 --logMinDelayReqInterval 0 --logMinPdelayReqInterval 0 --announceReceiptTimeout 3 --boundary_clock_jbod 1 -m All aes67-daemon's sync (the primary & the 4 satellite hosts). I'll monitor it for a while and report back if everything stays synced. The (patched) ptp4l output seems well behaved: ptp4l[252799.913]: selected /dev/ptp1 as PTP clock |
Well, I've stopped ptp4l a few times this evening (and all aes67-daemons unsync), start ptp4l up (and all aes67-daemons sync again, and hold). If I find any failures I'll report back. But for now, running in JBOD mode, with the patched ptp4l mentioned above seems to work for me for running aes67-daemon and Ravenna kernel module via a Linux Bridge configuration of a multi-port card or cards without using a separate switch. Note the ptp4l.conf configuration is pretty much stock. |
I guess you cannot run ptp4l n on the br0 interface directly because of the missing support for the requested timestamp mode, correct ? |
Yes, that's my understanding. ptp4l notices a bridge interface and dumps out. Assuming the JBOD with loopback mod for ptp4l approach is stable with aes67-daemon, it would satisfy the need that this Issue was raised for, and you can either close, or keep open if you want to consider a different longer term approach down the track. |
solution for multi-homed support via bridge interface |
A project I'm working on involves a configuration with a 4-port ethernet PCI card (Intel i350) on a DSP host working with 32ch audio, with four endpoints handling 8ch audio each, connected to the server by ethernet XO cables (no switch in the setup). PTP is locking on each of the endpoint and server aes67-daemon instances, using software time stamping and modified LinuxPTP to support loopback multicast.
However as aes67-daemon only provides one ip_addr and interface name, only one of the endpoints is able to see the server.
I'm wondering whether aes67-daemon could be modified to support multiple ethernet interfaces.
Would be great to be able to connect 4 devices to a "broadcast" host without a switch.
Aris
The text was updated successfully, but these errors were encountered: