2013-01-05 3 views
6

Ağ kartı tarafından alınan çerçeveler, sürücü tarafından ele alınacak ve daha sonra, Linux çekirdeği tarafından protokol yığınının üst katmanına geçirilecektir.Çekirdeğin paketlerden ağ katmanına geçmesi nasıl önlenir?

Çekirdeğin paketlerden ağ katmanına geçmesini önlemek için kolay bir yol var mı? Çerçeveleri veri bloğu katmanından alabilir ve tüm paketleri kendim halledebilirim (belki uygulama katmanı programları yeniden yazılır)?

Kernelin gerekli olduğunu yeniden derlemeliyim, bu, softirq'deki kodu veya netif_rx veya cpu başına liste sıraları gibi işlevleri değiştirerek yapılmalı mı?

Aslında bazı sınıf arkadaşları ve alıştırmalar için kullanıcı alanında TCP/IP protokol yığınının basitleştirilmiş bir sürümünü uygulamaya çalışıyoruz ve yeni başladık. UNP, APUE2, TCP/IP v1, v2, Linux ağ mimarisi, linux kaynak kodu ve benzeri gibi bazı kitapları okuyorum. Başka sorunum var, başka bir soru göndermek zorunda mıyım?

+0

Ne yapmak istiyorsunuz? Çekirdeği değiştirmek o kadar kolay olmayabilir. – prehistoricpenguin

+0

Çözmeyi denediğiniz problemi gerçekten açıklamalısınız. Aşağıdaki cevaplardan biri netfilter'i göstermektedir. Diğer bir seçenek, doğrudan paketlerden bekletmek için pcap kütüphanesini kullanmak olabilir. Sizin için doğru cevabın ne olduğunu bilmeyeceğiz, çözmeye çalıştığınız sorunun ne olduğunu biliyoruz. – chetan

+0

Sorumu düzenledim ve bazı önerileri bekledim. –

cevap

2

Paketlemeyi kendiniz halletmek isterseniz, çekirdek modülü netfilter'u kullanabilir ve bazı kancalar uygulayabilirsiniz. Kolayca bir kod örneği bulabilirsiniz.

Farklı kancalarınızda, paketi işlemeyi ve çekirdeğe geri vermeyi veya bırakmayı seçebilirsiniz. Değişecek bir dönüş kodu. uygulamak çok zor, ama bu sorununuzu RESOLV doğal yolu bu değil emin http://www.linuxjournal.com/article/7184

Bu çözüm çalışacak değil: Bazı kodunu ve açıklama konunun vermek

Madde.

+0

Evet, bu işe yarıyor. İstediğimden biraz farklı ama uygulamak için basit. belki de tüm paketlerin kontrol altında olmasını sağlamak için arp paketlerini bırakabilecek bir güvenlik duvarı bulmalıyım –

0

DPDK, aradığınız bir şey gibi görünüyor.