On Thu, Jul 23, 2020 at 12:05 PM Rick Payne <[email protected]> wrote:

>
> Another alternative (for me and maybe others) would be to have a
> standard way to hook packets direct from the virtio interface.
>

We did have something like that in the past, and I remember Vlad used it to
write
some sort of super-efficient HTTP server or something like that - Vlad, do
you remember
where it is? I can't recall now :-(

We also had until recently something more general, "assigned virtio", where
the application
gets access directly to the viritio rings (and needs to work with them -
the kernel doesn't
touch them any more). Waldek recently removed it but I guess you can see
how it worked
before that, and if needed we can bring it back.

Especially if we could ensure that we don't dhcp on that interface.
>
> For instance, setup 2 interfaces from the host - 1 for OSv-y stuff, and
> one just for an application which takes over the interface at a very
> low level.
>
> Rick
>
> On Mon, 2020-07-20 at 21:32 -0700, Waldek Kozaczuk wrote:
> > Honestly, I am not familiar enough in this subject domain so I cannot
> > give any authoritative advice. But it seems to me that the latter
> > idea of introducing and supporting LINUX_AF_PACKET may be less effort
> > and more in line with what Charles did. I am not familiar with BPF so
> > I do not know if it would even make sense for OSv nor how much effort
> > it would be to support it.
> >
> > Waldek
> >
> > On Thursday, July 16, 2020 at 9:43:14 AM UTC-4 [email protected]
> > wrote:
> > > Hi,
> > >
> > >  I think that the type of raw sockets (SOCK_RAW) works well in OSv,
> > > it is possible to hook L3 packets (assuming an INET domain) with no
> > > problems. I guess that BSD does not support the PACKET domain, thus
> > > the OSv does not support too. If I remember well, we can hook
> > > frames in BSD by using libpcap, which in turn uses bpf
> > > (alternatively, we can use bpf directly). However, the bsd/sys/net
> > > in OSv does not have the FreeBSD's bpf implementation. Maybe one
> > > interesting way to enable L2 packet hooking is by migrating the bpf
> > > from sys/net of FreeBSD to the bsd/sys/net of OSv (what do you
> > > think about that guys?). Another possibility is to create a kind of
> > > PACKET domain support (similar to NETLINK support provided by
> > > Charles Meyers in the Spirent fork), but in that case, we will need
> > > to hook the bytes of frames straightforward from the mbuffs.
> > >
> > > Regards,
> > > Vinicius
> > >
> > > Em quinta-feira, 16 de julho de 2020 às 02:57:52 UTC-3, Pekka
> > > Enberg escreveu:
> > > > Hi,
> > > >
> > > > On Wed, Jul 15, 2020 at 6:13 PM Waldek Kozaczuk <
> > > > [email protected]> wrote:
> > > > > Hi,
> > > > >
> > > > > Unfortunately, I have no idea what it would take to add raw
> > > > > sockets support. Please be aware that we maintain another IPV6
> > > > > branch - https://github.com/cloudius-systems/osv/tree/ipv6 -
> > > > > which besides IPV6 might have better networking support but I
> > > > > doubt it supports raw sockets.
> > > > >
> > > > > I am also adding Charles Meyers from Spirent who wrote original
> > > > > IPV6 support to this thread. He may have some thoughts on this
> > > > > matter. Also, Spirent has also its own OSv fork -
> > > > > https://github.com/SpirentOrion/osv - which has extra
> > > > > stuff/fixes to networking stack (I would like to port some of
> > > > > those to the mainline OSv at some point).
> > > > >
> > > >
> > > > The TCP/IP stack supports raw sockets (it's the FreeBSD stack
> > > > after all).
> > > >
> > > > One potential issue is that the Linux socket()
> > > > compatibility layer is incorrect. I see that linux_socket()
> > > > (called by socket() function) has some support for raw sockets:
> > > >
> > > >
> https://github.com/cloudius-systems/osv/blob/master/bsd/sys/compat/linux/linux_socket.cc#L619
> > > >
> > > > However, it's bit picky on the "domain" and "protocol" and will
> > > > ignore what Frederic attempted to do:
> > > >
> > > >        fd=socket(AF_PACKET,SOCK_RAW,htons(ETH_P_ALL));
> > > >
> > > > I assume if you fix up linux_socket() to do what Linux does,
> > > > things will work fine.
> > > >
> > > > - Pekka
> >
> > --
> > You received this message because you are subscribed to the Google
> > Groups "OSv Development" group.
> > To unsubscribe from this group and stop receiving emails from it,
> > send an email to [email protected].
> > To view this discussion on the web visit
> >
> https://groups.google.com/d/msgid/osv-dev/397b053e-b06b-467e-89b8-75d9dd6d117an%40googlegroups.com
> > .
>
> --
> You received this message because you are subscribed to the Google Groups
> "OSv Development" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/osv-dev/6a3ce5daecbcb84bcdee0738242937e11d2f9d33.camel%40rossfell.co.uk
> .
>

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/CANEVyjuU8YEaeQxSpKwFh5Oj604_fgf2NTQyr5F4JpD86rn%3D2g%40mail.gmail.com.

Reply via email to