Linux Network Traffic ControlImplementation Overview.docx
- 文档编号:5208865
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:19
- 大小:453.38KB
Linux Network Traffic ControlImplementation Overview.docx
《Linux Network Traffic ControlImplementation Overview.docx》由会员分享,可在线阅读,更多相关《Linux Network Traffic ControlImplementation Overview.docx(19页珍藏版)》请在冰豆网上搜索。
LinuxNetworkTrafficControlImplementationOverview
LinuxNetworkTrafficControl-ImplementationOverview
Abstract
Linuxoffersarichsetoftrafficcontrolfunctions.Thisdocumentgivesanoverviewofthedesignoftherespectivekernelcode,describesitsstructure,andillustratestheadditionofnewelementsbydescribinganewqueuingdiscipline.
1Introduction
RecentLinuxkernelsofferawidevarietyoftrafficcontrolfunctions.Thekernelpartsfortrafficcontrol,andseveraluser-spaceprogramstocontrolthemhavebeenimplementedbyAlexeyKuznetsov
Figure1showsroughlyhowthekernelprocessesdatareceivedfromthenetwork,andhowitgeneratesnewdatatobesentonthenetwork:
incomingpacketsareexaminedandtheneitherdirectlyforwardedtothenetwork(e.g.onadifferentinterface,ifthemachineisactingasarouterorabridge),ortheyarepasseduptohigherlayersintheprotocolstack(e.g.toatransportprotocollikeUDPorTCP)forfurtherprocessing.Thosehigherlayersmayalsogeneratedataontheirownandhandittothelowerlayersfortaskslikeencapsulation,routing,andeventuallytransmission.
"Forwarding"includestheselectionoftheoutputinterface,theselectionofthenexthop,encapsulation,etc.Onceallthisisdone,packetsarequeuedontherespectiveoutputinterface.Thisisthepointwheretrafficcontrolcomesintoplay.Trafficcontrolcan,amongotherthings,decideifpacketsarequeuedoriftheyaredropped(e.g.ifthequeuehasreachedsomelengthlimit,orifthetrafficexceedssomeratelimit),itcandecideinwhichorderpacketsaresent(e.g.togiveprioritytocertainflows),itcandelaythesendingofpackets(e.g.tolimittherateofoutboundtraffic),etc.
Oncetrafficcontrolhasreleasedapacketforsending,thedevicedriverpicksitupandemitsitonthenetwork.
Sections2to4giveanoverviewandexplainsometerminology.Sections5to8describetheelementsoftrafficcontrolintheLinuxkernelinmoredetail.Section9describesaqueuingdisciplinethathasbeenimplementedbytheauthor.
2Overview
ThetrafficcontrolcodeintheLinuxkernelconsistsofthefollowingmajorconceptualcomponents:
●queuingdisciplines
●classes(withinaqueuingdiscipline)
●filters
●policing
Figure1:
Processingofnetworkdata.
Eachnetworkdevicehasaqueuingdisciplineassociatedwithit,whichcontrolshowpacketsenqueuedonthatdevicearetreated.Averysimplequeuingdisciplinemayjustconsistofasinglequeue,whereallpacketsarestoredintheorderinwhichtheyhavebeenenqueued,andwhichisemptiedasfastastherespectivedevicecansend.Seefigure2forsuchaqueuingdisciplinewithoutexternallyvisibleinternalstructure.
Figure2:
Asimplequeuingdisciplinewithoutclasses.
Moreelaboratequeuingdisciplinesmayusefilterstodistinguishamongdifferentclassesofpacketsandprocesseachclassinaspecificway,e.g.bygivingoneclasspriorityoverotherclasses.
Figure3showsanexampleofsuchaqueuingdiscipline.Notethatmultiplefiltersmaymaptothesameclass.
Queuingdisciplinesandclassesareintimatelytiedtogether:
thepresenceofclassesandtheirsemanticsarefundamentalpropertiesofthequeuingdiscipline.Incontrasttothat,filterscanbecombinedarbitrarilywithqueuingdisciplinesandclassesaslongasthequeuingdisciplinehasclassesatall.Butflexibilitydoesn'tendyet-classesnormallydon'ttakecareofstoringtheirpacketsthemselves,buttheyuseanotherqueuingdisciplinetotakecareofthat.Thatqueuingdisciplinecanbearbitrarilychosenfromthesetofavailablequeuingdisciplines,anditmaywellhaveclasses,whichinturnusequeuingdisciplines,etc.
Figure4showsanexampleofsuchastack:
first,thereisaqueuingdisciplinewithtwodelaypriorities.Packetswhichareselectedbythefiltergotothehigh-priorityclass,whileallotherpacketsgotothelow-priorityclass.Whenevertherearepacketsinthehigh-priorityqueue,theyaresentbeforepacketsinthelow-priorityqueue(e.g.thesch_prioqueuingdisciplineworksthisway).Inordertopreventhigh-prioritytrafficfromstarvinglow-prioritytraffic,weuseatokenbucketfilter(TBF),whichenforcesarateofatmost1Mbps.Finally,thequeuingoflow-prioritypacketsisdonebyaFIFOqueuingdiscipline.Notethattherearebetterwaystoaccomplishwhatwe'vedonehere,e.g.byusingclass-basedqueuing(CBQ)[5].
Packetsareenqueuedasfollows:
whentheenqueuedfunctionofaqueuingdisciplineiscalled,itrunsonefilteraftertheotheruntiloneofthemindicatesamatch.Itthenqueuesthepacketforthecorrespondingclass,whichusuallymeanstoinvoketheenqueuedfunctionofthequeuingdiscipline"owned"bythatclass.Packetswhichdonotmatchanyofthefiltersaretypicallyattributedtosomedefaultclass.
Typically,eachclass"owns"onequeue,butitisinprinciplealsopossiblethatseveralclassessharethesamequeueoreventhatasinglequeueisusedbyallclassesoftherespectivequeuingdiscipline.Notehoweverthatpacketsdonotcarryanyexplicitindicationofwhichclasstheywereattributedto.Queuingdisciplinesthatchangeper-classinformationwhendequeuingpackets(e.g.CBQ)maythereforenotworkproperlyifthe"inner"queuesareshared,unlesstheyareableeithertorepeattheclassificationortopasstheclassificationresultfromenqueuedtodequeuebysomeothermeans.
Usuallywhenenqueuingpackets,thecorrespondingflow(s)canbepoliced,e.g.bydiscardingpacketswhichexceedacertainrate.
Wewillnottrytointroducenewterminologytodistinguishamongalgorithms,theirimplementations,andinstancesofsuchelements,butratherusethetermsqueuingdiscipline,class,andfilterthrough-outmostofthisdocument,torefertoallthreelevelsofabstractionatthesametime.
3Resources
Linuxtrafficcontrolisspreadoveracomparablylargenumberoffiles.Notethatallpathnamesarerelativetothebasedirectoryoftherespectivecomponent,Filtere.g.fortheLinuxkernelthisis/usr/src/linux/,forthetcprogramiproute2/tc/.
Figure3:
Asimplequeuingdisciplinewithmultipleclasses.
Figure4:
Combinationofpriority,TBF,andFIFOqueuingdisciplines.
Tcisauser-spaceprogramusedtomanipulateindividualtrafficcontrolelements.Itssourceisinthefileiproute2-version.tar.gz,whichcanbeobtainedfromftp:
//linux.wauug.org/pub/net/ip-routing/.
Thekernelcoderesidesmainlyinthedirectorynet/sched/.Theinterfacesbetweenkerneltrafficcontrolelementsanduserspaceprogramsusingthemaredeclaredininclude/linux/pkt_cls.handinclude/linux/pkt_sched.h.Declarationsusedonlyinsidethekernelandthedefinitionsofsomeinlinefunctionscanbefoundininclude/net/pkt_cls.handinclude/net/pkt_sched.h.
Thertnetlinkmechanismusedforcommunicationbetweentrafficcontrolelementsinuser-spaceandinthekernelisimplementedinnet/core/rtnetlink.candinclude/linux/rtnetlink.h.rtnetlinkisbasedonnetlink,whichcanbefoundinnet/netlink/andinclude/linux/netlink.h.
Thekernelsourcecanbeobtainedfromtheusualwell-knownplaces,e.g.fromftp:
//ftp.kernel.org/pub/linux/kernel/v2.2/.
Theexampleinsection9isincludedintheATMonLinuxdistribution,whichcanbedownloadedfromhttp:
//icawww1.epfl.ch/linux-atm/dist.html.
TheDifferentiatedServicesonLinuxproject(http:
//icawww1.epfl.ch/linux-diffserv/)hasproducedfurtherexamplesforextensionsofLinuxtrafficcontrolandtheiruse.
4Terminology
Unfortunately,theterminologyusedtodescribetrafficcontrolelementsisfarfromconsistentinliterature,andtherearesomevariationsevenwithinLinuxtrafficcontrol.Thepurposeofthissectionistohelptoputthingsintocontext.
Figure5showsthearchitecturalmodelsandtheterminologyusedintheIETFgroups"intserv"[6]and"diffserv"[7,8],andhowelementsofLinuxtrafficcontrolarerelatedtothem.Notethatclassesplayanambivalentrole,becausetheydeterminethefinaloutcomeofaclassificationandtheycanalsobepartofthemechanismthatimplementsacertainqueuingorschedulingbehavior.
Table1summarizesthekeywordsusedatthetccommandline,thefilenamesusedinthekernel(innet/sched/),andthefilenamesusedinthesourceoftc.
Figure5:
RelationofelementsoftheintservanddiffservarchitecturetotrafficcontrolintheLinuxkernel.
Table1:
Keywordsandfilenamesusedfortrafficcontrolelements.
5Queuingdisciplines
Eachqueuingdisciplineprovidesthefollowingsetoffunctionstocontrolitsoperation(seestructQdisc_opsininclude/net/pkt_sched.h):
enqueueenqueuesapacketwiththequeuingdiscipline.Ifthequeuingdisciplinehasclasses,theenqueuedfunctionfirstselectsaclassandtheninvokestheenqueuefunctionofthecorrespondingqueuingdisciplineforfurtherenqueuing.
dequeuereturnsthenextpacketeligibleforsending.Ifthequeuingdisciplinehasnopacketstosend(e.g.becausethequeueisemptyorbecausethey'renotscheduledtobesentyet),dequeuereturnsNULL.
requeueputsapacketbackintothequeueafterdequeuingitwithdequeue.Thisdiffersfromenqueueinthatthepacketshouldbequeuedate
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux Network Traffic Control Implementation Overview
链接地址:https://www.bdocx.com/doc/5208865.html