Wir entwickeln auf einem Linux-System, dessen Kernel vor Jahren ohne QOS-Dienst kompiliert wurde. Derzeit möchten wir den QOS-Dienst zurück und planen, nur die QOS-bezogenen Kernelmodule zu kompilieren und sie in den Systemkernel zu installieren.
Aber wir wissen nicht, welche Kernelmodule den QOS-Dienst darstellen. Welche Module sollen wir erstellen? Und welche zusätzlichen Schritte sollen wir unternehmen, einschließlich derer, die wir normalerweise für ein benutzerdefiniertes Kernelmodul ausführen? Weiß jemand etwas darüber?
Antwort1
Auf einem 3.2-Kernel sind dies die Module:
$ ls /lib/modules/3.2.0-local/kernel/net/sched
act_csum.ko cls_flow.ko em_u32.ko sch_multiq.ko
act_gact.ko cls_fw.ko sch_atm.ko sch_netem.ko
act_ipt.ko cls_route.ko sch_cbq.ko sch_prio.ko
act_mirred.ko cls_rsvp6.ko sch_choke.ko sch_qfq.ko
act_nat.ko cls_rsvp.ko sch_drr.ko sch_red.ko
act_pedit.ko cls_tcindex.ko sch_dsmark.ko sch_sfb.ko
act_police.ko cls_u32.ko sch_gred.ko sch_sfq.ko
act_simple.ko em_cmp.ko sch_hfsc.ko sch_tbf.ko
act_skbedit.ko em_meta.ko sch_htb.ko sch_teql.ko
cls_basic.ko em_nbyte.ko sch_ingress.ko
cls_cgroup.ko em_text.ko sch_mqprio.ko
Unter make menuconfig
siehe
- Netzwerkunterstützung
- Netzwerkoptionen
- QoS und/oder faires Queueing
- Netzwerkoptionen
Oder in Ihrer .config
--- .config_noqos
+++ .config_qos
@@ -1044,7 +1044,66 @@
CONFIG_PHONET=m
CONFIG_IEEE802154=m
CONFIG_IEEE802154_6LOWPAN=m
-# CONFIG_NET_SCHED is not set
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFB=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCH_MQPRIO=m
+CONFIG_NET_SCH_CHOKE=m
+CONFIG_NET_SCH_QFQ=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+# CONFIG_CLS_U32_PERF is not set
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_CLS_CGROUP=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+CONFIG_NET_ACT_CSUM=m
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_SCH_FIFO=y
CONFIG_DCB=y
CONFIG_DNS_RESOLVER=y
CONFIG_BATMAN_ADV=m
@@ -1899,6 +1958,7 @@
CONFIG_MII=y
CONFIG_IEEE802154_DRIVERS=m
# CONFIG_IEEE802154_FAKEHARD is not set
+CONFIG_IFB=m
CONFIG_MACVLAN=m
CONFIG_MACVTAP=m
CONFIG_NETCONSOLE=m