使用net_device创建虚拟接口,有什么风险吗?
一个交换机项目,需要出24个口。众所周知,Linux网络协议栈是只支持一个设备对应一个接口的,而交换机中需要一个设备对应多个接口,因此如果想不对协议栈做改动基本不能实现。
所以,本人现在想到的一个办法是,创建多个虚拟接口来实现与网络端口的一一对应。虚拟接口中的DMA等硬件资源拷贝真实ETH对应的net_device的值。不知道这样实现有什么风险吗?有没有做过分享一下经验,谢谢先。 应该可以吧。不过你这奇怪的用法是用来干什么的? 不能通过路由啊mac地址那些自动转发的,建这么多设备干什么用的?
奇怪是因为交换机的硬件架构导致的。通常交换机中,一个CPU通过一个ETH和一片或者多片Switch芯片相连,由Switch芯片出多个端口。
由于在内核中,一个net_device是对应的一个接口的,所以为了做到一一对应,才考虑创建多个device。
同时,创建这么多设备(其实也就是接口)的另一个目的是,方便上层应用收发协议报文。
我的疑问是,如果这么多设备共用一套硬件资源,会不会发生资源冲突的情况? 应该可以,相当于软件实现交换机的功能嘛! 回复 4# qxhgd
数据交换还是由交换芯片来完成的,这里是为了处理一些特定的报文服务的,比如说协议报文等。
回复 5# liwei_swjtu
那也可以啊 回复 6# qxhgd
嗯,谢谢了!
页:
[1]