| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659 | 
							
- Network Working Group                                            S. Kent
 
- Request for Comments: 4301                                        K. Seo
 
- Obsoletes: 2401                                         BBN Technologies
 
- Category: Standards Track                                  December 2005
 
-             Security Architecture for the Internet Protocol
 
- Status of This Memo
 
-    This document specifies an Internet standards track protocol for the
 
-    Internet community, and requests discussion and suggestions for
 
-    improvements.  Please refer to the current edition of the "Internet
 
-    Official Protocol Standards" (STD 1) for the standardization state
 
-    and status of this protocol.  Distribution of this memo is unlimited.
 
- Copyright Notice
 
-    Copyright (C) The Internet Society (2005).
 
- Abstract
 
-    This document describes an updated version of the "Security
 
-    Architecture for IP", which is designed to provide security services
 
-    for traffic at the IP layer.  This document obsoletes RFC 2401
 
-    (November 1998).
 
- Dedication
 
-    This document is dedicated to the memory of Charlie Lynn, a long-time
 
-    senior colleague at BBN, who made very significant contributions to
 
-    the IPsec documents.
 
- Kent & Seo                  Standards Track                     [Page 1]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- Table of Contents
 
-    1. Introduction ....................................................4
 
-       1.1. Summary of Contents of Document ............................4
 
-       1.2. Audience ...................................................4
 
-       1.3. Related Documents ..........................................5
 
-    2. Design Objectives ...............................................5
 
-       2.1. Goals/Objectives/Requirements/Problem Description ..........5
 
-       2.2. Caveats and Assumptions ....................................6
 
-    3. System Overview .................................................7
 
-       3.1. What IPsec Does ............................................7
 
-       3.2. How IPsec Works ............................................9
 
-       3.3. Where IPsec Can Be Implemented ............................10
 
-    4. Security Associations ..........................................11
 
-       4.1. Definition and Scope ......................................12
 
-       4.2. SA Functionality ..........................................16
 
-       4.3. Combining SAs .............................................17
 
-       4.4. Major IPsec Databases .....................................18
 
-            4.4.1. The Security Policy Database (SPD) .................19
 
-                   4.4.1.1. Selectors .................................26
 
-                   4.4.1.2. Structure of an SPD Entry .................30
 
-                   4.4.1.3. More Regarding Fields Associated
 
-                            with Next Layer Protocols .................32
 
-            4.4.2. Security Association Database (SAD) ................34
 
-                   4.4.2.1. Data Items in the SAD .....................36
 
-                   4.4.2.2. Relationship between SPD, PFP
 
-                            flag, packet, and SAD .....................38
 
-            4.4.3. Peer Authorization Database (PAD) ..................43
 
-                   4.4.3.1. PAD Entry IDs and Matching Rules ..........44
 
-                   4.4.3.2. IKE Peer Authentication Data ..............45
 
-                   4.4.3.3. Child SA Authorization Data ...............46
 
-                   4.4.3.4. How the PAD Is Used .......................46
 
-       4.5. SA and Key Management .....................................47
 
-            4.5.1. Manual Techniques ..................................48
 
-            4.5.2. Automated SA and Key Management ....................48
 
-            4.5.3. Locating a Security Gateway ........................49
 
-       4.6. SAs and Multicast .........................................50
 
-    5. IP Traffic Processing ..........................................50
 
-       5.1. Outbound IP Traffic Processing
 
-            (protected-to-unprotected) ................................52
 
-            5.1.1. Handling an Outbound Packet That Must Be
 
-                   Discarded ..........................................54
 
-            5.1.2. Header Construction for Tunnel Mode ................55
 
-                   5.1.2.1. IPv4: Header Construction for
 
-                            Tunnel Mode ...............................57
 
-                   5.1.2.2. IPv6: Header Construction for
 
-                            Tunnel Mode ...............................59
 
-       5.2. Processing Inbound IP Traffic (unprotected-to-protected) ..59
 
- Kent & Seo                  Standards Track                     [Page 2]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    6. ICMP Processing ................................................63
 
-       6.1. Processing ICMP Error Messages Directed to an
 
-            IPsec Implementation ......................................63
 
-            6.1.1. ICMP Error Messages Received on the
 
-                   Unprotected Side of the Boundary ...................63
 
-            6.1.2. ICMP Error Messages Received on the
 
-                   Protected Side of the Boundary .....................64
 
-       6.2. Processing Protected, Transit ICMP Error Messages .........64
 
-    7. Handling Fragments (on the protected side of the IPsec
 
-       boundary) ......................................................66
 
-       7.1. Tunnel Mode SAs that Carry Initial and Non-Initial
 
-            Fragments .................................................67
 
-       7.2. Separate Tunnel Mode SAs for Non-Initial Fragments ........67
 
-       7.3. Stateful Fragment Checking ................................68
 
-       7.4. BYPASS/DISCARD Traffic ....................................69
 
-    8. Path MTU/DF Processing .........................................69
 
-       8.1. DF Bit ....................................................69
 
-       8.2. Path MTU (PMTU) Discovery .................................70
 
-            8.2.1. Propagation of PMTU ................................70
 
-            8.2.2. PMTU Aging .........................................71
 
-    9. Auditing .......................................................71
 
-    10. Conformance Requirements ......................................71
 
-    11. Security Considerations .......................................72
 
-    12. IANA Considerations ...........................................72
 
-    13. Differences from RFC 2401 .....................................72
 
-    14. Acknowledgements ..............................................75
 
-    Appendix A: Glossary ..............................................76
 
-    Appendix B: Decorrelation .........................................79
 
-       B.1. Decorrelation Algorithm ...................................79
 
-    Appendix C: ASN.1 for an SPD Entry ................................82
 
-    Appendix D: Fragment Handling Rationale ...........................88
 
-       D.1. Transport Mode and Fragments ..............................88
 
-       D.2. Tunnel Mode and Fragments .................................89
 
-       D.3. The Problem of Non-Initial Fragments ......................90
 
-       D.4. BYPASS/DISCARD Traffic ....................................93
 
-       D.5. Just say no to ports? .....................................94
 
-       D.6. Other Suggested Solutions..................................94
 
-       D.7. Consistency................................................95
 
-       D.8. Conclusions................................................95
 
-    Appendix E: Example of Supporting Nested SAs via SPD and
 
-                Forwarding Table Entries...............................96
 
-    References.........................................................98
 
-       Normative References............................................98
 
-       Informative References..........................................99
 
- Kent & Seo                  Standards Track                     [Page 3]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- 1.  Introduction
 
- 1.1.  Summary of Contents of Document
 
-    This document specifies the base architecture for IPsec-compliant
 
-    systems.  It describes how to provide a set of security services for
 
-    traffic at the IP layer, in both the IPv4 [Pos81a] and IPv6 [DH98]
 
-    environments.  This document describes the requirements for systems
 
-    that implement IPsec, the fundamental elements of such systems, and
 
-    how the elements fit together and fit into the IP environment.  It
 
-    also describes the security services offered by the IPsec protocols,
 
-    and how these services can be employed in the IP environment.  This
 
-    document does not address all aspects of the IPsec architecture.
 
-    Other documents address additional architectural details in
 
-    specialized environments, e.g., use of IPsec in Network Address
 
-    Translation (NAT) environments and more comprehensive support for IP
 
-    multicast.  The fundamental components of the IPsec security
 
-    architecture are discussed in terms of their underlying, required
 
-    functionality.  Additional RFCs (see Section 1.3 for pointers to
 
-    other documents) define the protocols in (a), (c), and (d).
 
-         a. Security Protocols -- Authentication Header (AH) and
 
-            Encapsulating Security Payload (ESP)
 
-         b. Security Associations -- what they are and how they work,
 
-            how they are managed, associated processing
 
-         c. Key Management -- manual and automated (The Internet Key
 
-            Exchange (IKE))
 
-         d. Cryptographic algorithms for authentication and encryption
 
-    This document is not a Security Architecture for the Internet; it
 
-    addresses security only at the IP layer, provided through the use of
 
-    a combination of cryptographic and protocol security mechanisms.
 
-    The spelling "IPsec" is preferred and used throughout this and all
 
-    related IPsec standards.  All other capitalizations of IPsec (e.g.,
 
-    IPSEC, IPSec, ipsec) are deprecated.  However, any capitalization of
 
-    the sequence of letters "IPsec" should be understood to refer to the
 
-    IPsec protocols.
 
-    The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD,
 
-    SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this
 
-    document, are to be interpreted as described in RFC 2119 [Bra97].
 
- 1.2.  Audience
 
-    The target audience for this document is primarily individuals who
 
-    implement this IP security technology or who architect systems that
 
-    will use this technology.  Technically adept users of this technology
 
- Kent & Seo                  Standards Track                     [Page 4]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    (end users or system administrators) also are part of the target
 
-    audience.  A glossary is provided in Appendix A to help fill in gaps
 
-    in background/vocabulary.  This document assumes that the reader is
 
-    familiar with the Internet Protocol (IP), related networking
 
-    technology, and general information system security terms and
 
-    concepts.
 
- 1.3.  Related Documents
 
-    As mentioned above, other documents provide detailed definitions of
 
-    some of the components of IPsec and of their interrelationship.  They
 
-    include RFCs on the following topics:
 
-         a. security protocols -- RFCs describing the Authentication
 
-            Header (AH) [Ken05b] and Encapsulating Security Payload
 
-            (ESP) [Ken05a] protocols.
 
-         b. cryptographic algorithms for integrity and encryption -- one
 
-            RFC that defines the mandatory, default algorithms for use
 
-            with AH and ESP [Eas05], a similar RFC that defines the
 
-            mandatory algorithms for use with IKEv2 [Sch05] plus a
 
-            separate RFC for each cryptographic algorithm.
 
-         c. automatic key management -- RFCs on "The Internet Key
 
-            Exchange (IKEv2) Protocol" [Kau05] and "Cryptographic
 
-            Algorithms for Use in the Internet Key Exchange Version 2
 
-            (IKEv2)" [Sch05].
 
- 2.  Design Objectives
 
- 2.1.  Goals/Objectives/Requirements/Problem Description
 
-    IPsec is designed to provide interoperable, high quality,
 
-    cryptographically-based security for IPv4 and IPv6.  The set of
 
-    security services offered includes access control, connectionless
 
-    integrity, data origin authentication, detection and rejection of
 
-    replays (a form of partial sequence integrity), confidentiality (via
 
-    encryption), and limited traffic flow confidentiality.  These
 
-    services are provided at the IP layer, offering protection in a
 
-    standard fashion for all protocols that may be carried over IP
 
-    (including IP itself).
 
-    IPsec includes a specification for minimal firewall functionality,
 
-    since that is an essential aspect of access control at the IP layer.
 
-    Implementations are free to provide more sophisticated firewall
 
-    mechanisms, and to implement the IPsec-mandated functionality using
 
-    those more sophisticated mechanisms. (Note that interoperability may
 
-    suffer if additional firewall constraints on traffic flows are
 
-    imposed by an IPsec implementation but cannot be negotiated based on
 
-    the traffic selector features defined in this document and negotiated
 
- Kent & Seo                  Standards Track                     [Page 5]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    via IKEv2.)  The IPsec firewall function makes use of the
 
-    cryptographically-enforced authentication and integrity provided for
 
-    all IPsec traffic to offer better access control than could be
 
-    obtained through use of a firewall (one not privy to IPsec internal
 
-    parameters) plus separate cryptographic protection.
 
-    Most of the security services are provided through use of two traffic
 
-    security protocols, the Authentication Header (AH) and the
 
-    Encapsulating Security Payload (ESP), and through the use of
 
-    cryptographic key management procedures and protocols.  The set of
 
-    IPsec protocols employed in a context, and the ways in which they are
 
-    employed, will be determined by the users/administrators in that
 
-    context.  It is the goal of the IPsec architecture to ensure that
 
-    compliant implementations include the services and management
 
-    interfaces needed to meet the security requirements of a broad user
 
-    population.
 
-    When IPsec is correctly implemented and deployed, it ought not
 
-    adversely affect users, hosts, and other Internet components that do
 
-    not employ IPsec for traffic protection.  IPsec security protocols
 
-    (AH and ESP, and to a lesser extent, IKE) are designed to be
 
-    cryptographic algorithm independent.  This modularity permits
 
-    selection of different sets of cryptographic algorithms as
 
-    appropriate, without affecting the other parts of the implementation.
 
-    For example, different user communities may select different sets of
 
-    cryptographic algorithms (creating cryptographically-enforced
 
-    cliques) if required.
 
-    To facilitate interoperability in the global Internet, a set of
 
-    default cryptographic algorithms for use with AH and ESP is specified
 
-    in [Eas05] and a set of mandatory-to-implement algorithms for IKEv2
 
-    is specified in [Sch05].  [Eas05] and [Sch05] will be periodically
 
-    updated to keep pace with computational and cryptologic advances.  By
 
-    specifying these algorithms in documents that are separate from the
 
-    AH, ESP, and IKEv2 specifications, these algorithms can be updated or
 
-    replaced without affecting the standardization progress of the rest
 
-    of the IPsec document suite.  The use of these cryptographic
 
-    algorithms, in conjunction with IPsec traffic protection and key
 
-    management protocols, is intended to permit system and application
 
-    developers to deploy high quality, Internet-layer, cryptographic
 
-    security technology.
 
- 2.2.  Caveats and Assumptions
 
-    The suite of IPsec protocols and associated default cryptographic
 
-    algorithms are designed to provide high quality security for Internet
 
-    traffic.  However, the security offered by use of these protocols
 
-    ultimately depends on the quality of their implementation, which is
 
- Kent & Seo                  Standards Track                     [Page 6]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    outside the scope of this set of standards.  Moreover, the security
 
-    of a computer system or network is a function of many factors,
 
-    including personnel, physical, procedural, compromising emanations,
 
-    and computer security practices.  Thus, IPsec is only one part of an
 
-    overall system security architecture.
 
-    Finally, the security afforded by the use of IPsec is critically
 
-    dependent on many aspects of the operating environment in which the
 
-    IPsec implementation executes.  For example, defects in OS security,
 
-    poor quality of random number sources, sloppy system management
 
-    protocols and practices, etc., can all degrade the security provided
 
-    by IPsec.  As above, none of these environmental attributes are
 
-    within the scope of this or other IPsec standards.
 
- 3.  System Overview
 
-    This section provides a high level description of how IPsec works,
 
-    the components of the system, and how they fit together to provide
 
-    the security services noted above.  The goal of this description is
 
-    to enable the reader to "picture" the overall process/system, see how
 
-    it fits into the IP environment, and to provide context for later
 
-    sections of this document, which describe each of the components in
 
-    more detail.
 
-    An IPsec implementation operates in a host, as a security gateway
 
-    (SG), or as an independent device, affording protection to IP
 
-    traffic. (A security gateway is an intermediate system implementing
 
-    IPsec, e.g., a firewall or router that has been IPsec-enabled.) More
 
-    detail on these classes of implementations is provided later, in
 
-    Section 3.3. The protection offered by IPsec is based on requirements
 
-    defined by a Security Policy Database (SPD) established and
 
-    maintained by a user or system administrator, or by an application
 
-    operating within constraints established by either of the above.  In
 
-    general, packets are selected for one of three processing actions
 
-    based on IP and next layer header information ("Selectors", Section
 
-    4.4.1.1) matched against entries in the SPD.  Each packet is either
 
-    PROTECTed using IPsec security services, DISCARDed, or allowed to
 
-    BYPASS IPsec protection, based on the applicable SPD policies
 
-    identified by the Selectors.
 
- 3.1.  What IPsec Does
 
-    IPsec creates a boundary between unprotected and protected
 
-    interfaces, for a host or a network (see Figure 1 below).  Traffic
 
-    traversing the boundary is subject to the access controls specified
 
-    by the user or administrator responsible for the IPsec configuration.
 
-    These controls indicate whether packets cross the boundary unimpeded,
 
-    are afforded security services via AH or ESP, or are discarded.
 
- Kent & Seo                  Standards Track                     [Page 7]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    IPsec security services are offered at the IP layer through selection
 
-    of appropriate security protocols, cryptographic algorithms, and
 
-    cryptographic keys.  IPsec can be used to protect one or more "paths"
 
-    (a) between a pair of hosts, (b) between a pair of security gateways,
 
-    or (c) between a security gateway and a host.  A compliant host
 
-    implementation MUST support (a) and (c) and a compliant security
 
-    gateway must support all three of these forms of connectivity, since
 
-    under certain circumstances a security gateway acts as a host.
 
-                         Unprotected
 
-                          ^       ^
 
-                          |       |
 
-            +-------------|-------|-------+
 
-            | +-------+   |       |       |
 
-            | |Discard|<--|       V       |
 
-            | +-------+   |B  +--------+  |
 
-          ................|y..| AH/ESP |..... IPsec Boundary
 
-            |   +---+     |p  +--------+  |
 
-            |   |IKE|<----|a      ^       |
 
-            |   +---+     |s      |       |
 
-            | +-------+   |s      |       |
 
-            | |Discard|<--|       |       |
 
-            | +-------+   |       |       |
 
-            +-------------|-------|-------+
 
-                          |       |
 
-                          V       V
 
-                          Protected
 
-             Figure 1.  Top Level IPsec Processing Model
 
-    In this diagram, "unprotected" refers to an interface that might also
 
-    be described as "black" or "ciphertext".  Here, "protected" refers to
 
-    an interface that might also be described as "red" or "plaintext".
 
-    The protected interface noted above may be internal, e.g., in a host
 
-    implementation of IPsec, the protected interface may link to a socket
 
-    layer interface presented by the OS.  In this document, the term
 
-    "inbound" refers to traffic entering an IPsec implementation via the
 
-    unprotected interface or emitted by the implementation on the
 
-    unprotected side of the boundary and directed towards the protected
 
-    interface.  The term "outbound" refers to traffic entering the
 
-    implementation via the protected interface, or emitted by the
 
-    implementation on the protected side of the boundary and directed
 
-    toward the unprotected interface.  An IPsec implementation may
 
-    support more than one interface on either or both sides of the
 
-    boundary.
 
- Kent & Seo                  Standards Track                     [Page 8]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    Note the facilities for discarding traffic on either side of the
 
-    IPsec boundary, the BYPASS facility that allows traffic to transit
 
-    the boundary without cryptographic protection, and the reference to
 
-    IKE as a protected-side key and security management function.
 
-    IPsec optionally supports negotiation of IP compression [SMPT01],
 
-    motivated in part by the observation that when encryption is employed
 
-    within IPsec, it prevents effective compression by lower protocol
 
-    layers.
 
- 3.2.  How IPsec Works
 
-    IPsec uses two protocols to provide traffic security services --
 
-    Authentication Header (AH) and Encapsulating Security Payload (ESP).
 
-    Both protocols are described in detail in their respective RFCs
 
-    [Ken05b, Ken05a].  IPsec implementations MUST support ESP and MAY
 
-    support AH. (Support for AH has been downgraded to MAY because
 
-    experience has shown that there are very few contexts in which ESP
 
-    cannot provide the requisite security services.  Note that ESP can be
 
-    used to provide only integrity, without confidentiality, making it
 
-    comparable to AH in most contexts.)
 
-     o The IP Authentication Header (AH) [Ken05b] offers integrity and
 
-       data origin authentication, with optional (at the discretion of
 
-       the receiver) anti-replay features.
 
-     o The Encapsulating Security Payload (ESP) protocol [Ken05a] offers
 
-       the same set of services, and also offers confidentiality.  Use of
 
-       ESP to provide confidentiality without integrity is NOT
 
-       RECOMMENDED.  When ESP is used with confidentiality enabled, there
 
-       are provisions for limited traffic flow confidentiality, i.e.,
 
-       provisions for concealing packet length, and for facilitating
 
-       efficient generation and discard of dummy packets.  This
 
-       capability is likely to be effective primarily in virtual private
 
-       network (VPN) and overlay network contexts.
 
-     o Both AH and ESP offer access control, enforced through the
 
-       distribution of cryptographic keys and the management of traffic
 
-       flows as dictated by the Security Policy Database (SPD, Section
 
-       4.4.1).
 
-    These protocols may be applied individually or in combination with
 
-    each other to provide IPv4 and IPv6 security services.  However, most
 
-    security requirements can be met through the use of ESP by itself.
 
-    Each protocol supports two modes of use: transport mode and tunnel
 
-    mode.  In transport mode, AH and ESP provide protection primarily for
 
- Kent & Seo                  Standards Track                     [Page 9]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    next layer protocols; in tunnel mode, AH and ESP are applied to
 
-    tunneled IP packets.  The differences between the two modes are
 
-    discussed in Section 4.1.
 
-    IPsec allows the user (or system administrator) to control the
 
-    granularity at which a security service is offered.  For example, one
 
-    can create a single encrypted tunnel to carry all the traffic between
 
-    two security gateways, or a separate encrypted tunnel can be created
 
-    for each TCP connection between each pair of hosts communicating
 
-    across these gateways.  IPsec, through the SPD management paradigm,
 
-    incorporates facilities for specifying:
 
-     o which security protocol (AH or ESP) to employ, the mode (transport
 
-       or tunnel), security service options, what cryptographic
 
-       algorithms to use, and in what combinations to use the specified
 
-       protocols and services, and
 
-     o the granularity at which protection should be applied.
 
-    Because most of the security services provided by IPsec require the
 
-    use of cryptographic keys, IPsec relies on a separate set of
 
-    mechanisms for putting these keys in place.  This document requires
 
-    support for both manual and automated distribution of keys.  It
 
-    specifies a specific public-key based approach (IKEv2 [Kau05]) for
 
-    automated key management, but other automated key distribution
 
-    techniques MAY be used.
 
-    Note: This document mandates support for several features for which
 
-    support is available in IKEv2 but not in IKEv1, e.g., negotiation of
 
-    an SA representing ranges of local and remote ports or negotiation of
 
-    multiple SAs with the same selectors.  Therefore, this document
 
-    assumes use of IKEv2 or a key and security association management
 
-    system with comparable features.
 
- 3.3.  Where IPsec Can Be Implemented
 
-    There are many ways in which IPsec may be implemented in a host, or
 
-    in conjunction with a router or firewall to create a security
 
-    gateway, or as an independent security device.
 
-    a. IPsec may be integrated into the native IP stack.  This requires
 
-       access to the IP source code and is applicable to both hosts and
 
-       security gateways, although native host implementations benefit
 
-       the most from this strategy, as explained later (Section 4.4.1,
 
-       paragraph 6; Section 4.4.1.1, last paragraph).
 
- Kent & Seo                  Standards Track                    [Page 10]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    b. In a "bump-in-the-stack" (BITS) implementation, IPsec is
 
-       implemented "underneath" an existing implementation of an IP
 
-       protocol stack, between the native IP and the local network
 
-       drivers.  Source code access for the IP stack is not required in
 
-       this context, making this implementation approach appropriate for
 
-       use with legacy systems.  This approach, when it is adopted, is
 
-       usually employed in hosts.
 
-    c. The use of a dedicated, inline security protocol processor is a
 
-       common design feature of systems used by the military, and of some
 
-       commercial systems as well.  It is sometimes referred to as a
 
-       "bump-in-the-wire" (BITW) implementation.  Such implementations
 
-       may be designed to serve either a host or a gateway.  Usually, the
 
-       BITW device is itself IP addressable.  When supporting a single
 
-       host, it may be quite analogous to a BITS implementation, but in
 
-       supporting a router or firewall, it must operate like a security
 
-       gateway.
 
-    This document often talks in terms of use of IPsec by a host or a
 
-    security gateway, without regard to whether the implementation is
 
-    native, BITS, or BITW.  When the distinctions among these
 
-    implementation options are significant, the document makes reference
 
-    to specific implementation approaches.
 
-    A host implementation of IPsec may appear in devices that might not
 
-    be viewed as "hosts".  For example, a router might employ IPsec to
 
-    protect routing protocols (e.g., BGP) and management functions (e.g.,
 
-    Telnet), without affecting subscriber traffic traversing the router.
 
-    A security gateway might employ separate IPsec implementations to
 
-    protect its management traffic and subscriber traffic.  The
 
-    architecture described in this document is very flexible.  For
 
-    example, a computer with a full-featured, compliant, native OS IPsec
 
-    implementation should be capable of being configured to protect
 
-    resident (host) applications and to provide security gateway
 
-    protection for traffic traversing the computer.  Such configuration
 
-    would make use of the forwarding tables and the SPD selection
 
-    function described in Sections 5.1 and 5.2.
 
- 4.  Security Associations
 
-    This section defines Security Association management requirements for
 
-    all IPv6 implementations and for those IPv4 implementations that
 
-    implement AH, ESP, or both AH and ESP.  The concept of a "Security
 
-    Association" (SA) is fundamental to IPsec.  Both AH and ESP make use
 
-    of SAs, and a major function of IKE is the establishment and
 
-    maintenance of SAs.  All implementations of AH or ESP MUST support
 
-    the concept of an SA as described below.  The remainder of this
 
- Kent & Seo                  Standards Track                    [Page 11]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    section describes various aspects of SA management, defining required
 
-    characteristics for SA policy management and SA management
 
-    techniques.
 
- 4.1.  Definition and Scope
 
-    An SA is a simplex "connection" that affords security services to the
 
-    traffic carried by it.  Security services are afforded to an SA by
 
-    the use of AH, or ESP, but not both.  If both AH and ESP protection
 
-    are applied to a traffic stream, then two SAs must be created and
 
-    coordinated to effect protection through iterated application of the
 
-    security protocols.  To secure typical, bi-directional communication
 
-    between two IPsec-enabled systems, a pair of SAs (one in each
 
-    direction) is required.  IKE explicitly creates SA pairs in
 
-    recognition of this common usage requirement.
 
-    For an SA used to carry unicast traffic, the Security Parameters
 
-    Index (SPI) by itself suffices to specify an SA.  (For information on
 
-    the SPI, see Appendix A and the AH and ESP specifications [Ken05b,
 
-    Ken05a].)  However, as a local matter, an implementation may choose
 
-    to use the SPI in conjunction with the IPsec protocol type (AH or
 
-    ESP) for SA identification.  If an IPsec implementation supports
 
-    multicast, then it MUST support multicast SAs using the algorithm
 
-    below for mapping inbound IPsec datagrams to SAs.  Implementations
 
-    that support only unicast traffic need not implement this de-
 
-    multiplexing algorithm.
 
-    In many secure multicast architectures, e.g., [RFC3740], a central
 
-    Group Controller/Key Server unilaterally assigns the Group Security
 
-    Association's (GSA's) SPI.  This SPI assignment is not negotiated or
 
-    coordinated with the key management (e.g., IKE) subsystems that
 
-    reside in the individual end systems that constitute the group.
 
-    Consequently, it is possible that a GSA and a unicast SA can
 
-    simultaneously use the same SPI.  A multicast-capable IPsec
 
-    implementation MUST correctly de-multiplex inbound traffic even in
 
-    the context of SPI collisions.
 
-    Each entry in the SA Database (SAD) (Section 4.4.2) must indicate
 
-    whether the SA lookup makes use of the destination IP address, or the
 
-    destination and source IP addresses, in addition to the SPI.  For
 
-    multicast SAs, the protocol field is not employed for SA lookups.
 
-    For each inbound, IPsec-protected packet, an implementation must
 
-    conduct its search of the SAD such that it finds the entry that
 
-    matches the "longest" SA identifier.  In this context, if two or more
 
-    SAD entries match based on the SPI value, then the entry that also
 
-    matches based on destination address, or destination and source
 
-    address (as indicated in the SAD entry) is the "longest" match.  This
 
-    implies a logical ordering of the SAD search as follows:
 
- Kent & Seo                  Standards Track                    [Page 12]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       1. Search the SAD for a match on the combination of SPI,
 
-          destination address, and source address.  If an SAD entry
 
-          matches, then process the inbound packet with that
 
-          matching SAD entry.  Otherwise, proceed to step 2.
 
-       2. Search the SAD for a match on both SPI and destination address.
 
-          If the SAD entry matches, then process the inbound packet
 
-          with that matching SAD entry.  Otherwise, proceed to step 3.
 
-       3. Search the SAD for a match on only SPI if the receiver has
 
-          chosen to maintain a single SPI space for AH and ESP, and on
 
-          both SPI and protocol, otherwise.  If an SAD entry matches,
 
-          then process the inbound packet with that matching SAD entry.
 
-          Otherwise, discard the packet and log an auditable event.
 
-    In practice, an implementation may choose any method (or none at all)
 
-    to accelerate this search, although its externally visible behavior
 
-    MUST be functionally equivalent to having searched the SAD in the
 
-    above order.  For example, a software-based implementation could
 
-    index into a hash table by the SPI.  The SAD entries in each hash
 
-    table bucket's linked list could be kept sorted to have those SAD
 
-    entries with the longest SA identifiers first in that linked list.
 
-    Those SAD entries having the shortest SA identifiers could be sorted
 
-    so that they are the last entries in the linked list.  A
 
-    hardware-based implementation may be able to effect the longest match
 
-    search intrinsically, using commonly available Ternary
 
-    Content-Addressable Memory (TCAM) features.
 
-    The indication of whether source and destination address matching is
 
-    required to map inbound IPsec traffic to SAs MUST be set either as a
 
-    side effect of manual SA configuration or via negotiation using an SA
 
-    management protocol, e.g., IKE or Group Domain of Interpretation
 
-    (GDOI) [RFC3547].  Typically, Source-Specific Multicast (SSM) [HC03]
 
-    groups use a 3-tuple SA identifier composed of an SPI, a destination
 
-    multicast address, and source address.  An Any-Source Multicast group
 
-    SA requires only an SPI and a destination multicast address as an
 
-    identifier.
 
-    If different classes of traffic (distinguished by Differentiated
 
-    Services Code Point (DSCP) bits [NiBlBaBL98], [Gro02]) are sent on
 
-    the same SA, and if the receiver is employing the optional
 
-    anti-replay feature available in both AH and ESP, this could result
 
-    in inappropriate discarding of lower priority packets due to the
 
-    windowing mechanism used by this feature.  Therefore, a sender SHOULD
 
-    put traffic of different classes, but with the same selector values,
 
-    on different SAs to support Quality of Service (QoS) appropriately.
 
-    To permit this, the IPsec implementation MUST permit establishment
 
-    and maintenance of multiple SAs between a given sender and receiver,
 
- Kent & Seo                  Standards Track                    [Page 13]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    with the same selectors.  Distribution of traffic among these
 
-    parallel SAs to support QoS is locally determined by the sender and
 
-    is not negotiated by IKE.  The receiver MUST process the packets from
 
-    the different SAs without prejudice.  These requirements apply to
 
-    both transport and tunnel mode SAs.  In the case of tunnel mode SAs,
 
-    the DSCP values in question appear in the inner IP header.  In
 
-    transport mode, the DSCP value might change en route, but this should
 
-    not cause problems with respect to IPsec processing since the value
 
-    is not employed for SA selection and MUST NOT be checked as part of
 
-    SA/packet validation.  However, if significant re-ordering of packets
 
-    occurs in an SA, e.g., as a result of changes to DSCP values en
 
-    route, this may trigger packet discarding by a receiver due to
 
-    application of the anti-replay mechanism.
 
-    DISCUSSION: Although the DSCP [NiBlBaBL98, Gro02] and Explicit
 
-    Congestion Notification (ECN) [RaFlBl01] fields are not "selectors",
 
-    as that term in used in this architecture, the sender will need a
 
-    mechanism to direct packets with a given (set of) DSCP values to the
 
-    appropriate SA.  This mechanism might be termed a "classifier".
 
-    As noted above, two types of SAs are defined: transport mode and
 
-    tunnel mode.  IKE creates pairs of SAs, so for simplicity, we choose
 
-    to require that both SAs in a pair be of the same mode, transport or
 
-    tunnel.
 
-    A transport mode SA is an SA typically employed between a pair of
 
-    hosts to provide end-to-end security services.  When security is
 
-    desired between two intermediate systems along a path (vs. end-to-end
 
-    use of IPsec), transport mode MAY be used between security gateways
 
-    or between a security gateway and a host.  In the case where
 
-    transport mode is used between security gateways or between a
 
-    security gateway and a host, transport mode may be used to support
 
-    in-IP tunneling (e.g., IP-in-IP [Per96] or Generic Routing
 
-    Encapsulation (GRE) tunneling [FaLiHaMeTr00] or dynamic routing
 
-    [ToEgWa04]) over transport mode SAs.  To clarify, the use of
 
-    transport mode by an intermediate system (e.g., a security gateway)
 
-    is permitted only when applied to packets whose source address (for
 
-    outbound packets) or destination address (for inbound packets) is an
 
-    address belonging to the intermediate system itself.  The access
 
-    control functions that are an important part of IPsec are
 
-    significantly limited in this context, as they cannot be applied to
 
-    the end-to-end headers of the packets that traverse a transport mode
 
-    SA used in this fashion.  Thus, this way of using transport mode
 
-    should be evaluated carefully before being employed in a specific
 
-    context.
 
- Kent & Seo                  Standards Track                    [Page 14]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    In IPv4, a transport mode security protocol header appears
 
-    immediately after the IP header and any options, and before any next
 
-    layer protocols (e.g., TCP or UDP).  In IPv6, the security protocol
 
-    header appears after the base IP header and selected extension
 
-    headers, but may appear before or after destination options; it MUST
 
-    appear before next layer protocols (e.g., TCP, UDP, Stream Control
 
-    Transmission Protocol (SCTP)).  In the case of ESP, a transport mode
 
-    SA provides security services only for these next layer protocols,
 
-    not for the IP header or any extension headers preceding the ESP
 
-    header.  In the case of AH, the protection is also extended to
 
-    selected portions of the IP header preceding it, selected portions of
 
-    extension headers, and selected options (contained in the IPv4
 
-    header, IPv6 Hop-by-Hop extension header, or IPv6 Destination
 
-    extension headers).  For more details on the coverage afforded by AH,
 
-    see the AH specification [Ken05b].
 
-    A tunnel mode SA is essentially an SA applied to an IP tunnel, with
 
-    the access controls applied to the headers of the traffic inside the
 
-    tunnel.  Two hosts MAY establish a tunnel mode SA between themselves.
 
-    Aside from the two exceptions below, whenever either end of a
 
-    security association is a security gateway, the SA MUST be tunnel
 
-    mode.  Thus, an SA between two security gateways is typically a
 
-    tunnel mode SA, as is an SA between a host and a security gateway.
 
-    The two exceptions are as follows.
 
-     o Where traffic is destined for a security gateway, e.g., Simple
 
-       Network Management Protocol (SNMP) commands, the security gateway
 
-       is acting as a host and transport mode is allowed.  In this case,
 
-       the SA terminates at a host (management) function within a
 
-       security gateway and thus merits different treatment.
 
-     o As noted above, security gateways MAY support a transport mode SA
 
-       to provide security for IP traffic between two intermediate
 
-       systems along a path, e.g., between a host and a security gateway
 
-       or between two security gateways.
 
-    Several concerns motivate the use of tunnel mode for an SA involving
 
-    a security gateway.  For example, if there are multiple paths (e.g.,
 
-    via different security gateways) to the same destination behind a
 
-    security gateway, it is important that an IPsec packet be sent to the
 
-    security gateway with which the SA was negotiated.  Similarly, a
 
-    packet that might be fragmented en route must have all the fragments
 
-    delivered to the same IPsec instance for reassembly prior to
 
-    cryptographic processing.  Also, when a fragment is processed by
 
-    IPsec and transmitted, then fragmented en route, it is critical that
 
-    there be inner and outer headers to retain the fragmentation state
 
-    data for the pre- and post-IPsec packet formats.  Hence there are
 
-    several reasons for employing tunnel mode when either end of an SA is
 
- Kent & Seo                  Standards Track                    [Page 15]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    a security gateway. (Use of an IP-in-IP tunnel in conjunction with
 
-    transport mode can also address these fragmentation issues.  However,
 
-    this configuration limits the ability of IPsec to enforce access
 
-    control policies on traffic.)
 
-    Note: AH and ESP cannot be applied using transport mode to IPv4
 
-    packets that are fragments.  Only tunnel mode can be employed in such
 
-    cases.  For IPv6, it would be feasible to carry a plaintext fragment
 
-    on a transport mode SA; however, for simplicity, this restriction
 
-    also applies to IPv6 packets.  See Section 7 for more details on
 
-    handling plaintext fragments on the protected side of the IPsec
 
-    barrier.
 
-    For a tunnel mode SA, there is an "outer" IP header that specifies
 
-    the IPsec processing source and destination, plus an "inner" IP
 
-    header that specifies the (apparently) ultimate source and
 
-    destination for the packet.  The security protocol header appears
 
-    after the outer IP header, and before the inner IP header.  If AH is
 
-    employed in tunnel mode, portions of the outer IP header are afforded
 
-    protection (as above), as well as all of the tunneled IP packet
 
-    (i.e., all of the inner IP header is protected, as well as next layer
 
-    protocols).  If ESP is employed, the protection is afforded only to
 
-    the tunneled packet, not to the outer header.
 
-    In summary,
 
-    a) A host implementation of IPsec MUST support both transport and
 
-       tunnel mode.  This is true for native, BITS, and BITW
 
-       implementations for hosts.
 
-    b) A security gateway MUST support tunnel mode and MAY support
 
-       transport mode.  If it supports transport mode, that should be
 
-       used only when the security gateway is acting as a host, e.g., for
 
-       network management, or to provide security between two
 
-       intermediate systems along a path.
 
- 4.2.  SA Functionality
 
-    The set of security services offered by an SA depends on the security
 
-    protocol selected, the SA mode, the endpoints of the SA, and the
 
-    election of optional services within the protocol.
 
-    For example, both AH and ESP offer integrity and authentication
 
-    services, but the coverage differs for each protocol and differs for
 
-    transport vs. tunnel mode.  If the integrity of an IPv4 option or
 
-    IPv6 extension header must be protected en route between sender and
 
-    receiver, AH can provide this service, except for IP or extension
 
-    headers that may change in a fashion not predictable by the sender.
 
- Kent & Seo                  Standards Track                    [Page 16]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    However, the same security may be achieved in some contexts by
 
-    applying ESP to a tunnel carrying a packet.
 
-    The granularity of access control provided is determined by the
 
-    choice of the selectors that define each SA.  Moreover, the
 
-    authentication means employed by IPsec peers, e.g., during creation
 
-    of an IKE (vs. child) SA also affects the granularity of the access
 
-    control afforded.
 
-    If confidentiality is selected, then an ESP (tunnel mode) SA between
 
-    two security gateways can offer partial traffic flow confidentiality.
 
-    The use of tunnel mode allows the inner IP headers to be encrypted,
 
-    concealing the identities of the (ultimate) traffic source and
 
-    destination.  Moreover, ESP payload padding also can be invoked to
 
-    hide the size of the packets, further concealing the external
 
-    characteristics of the traffic.  Similar traffic flow confidentiality
 
-    services may be offered when a mobile user is assigned a dynamic IP
 
-    address in a dialup context, and establishes a (tunnel mode) ESP SA
 
-    to a corporate firewall (acting as a security gateway).  Note that
 
-    fine-granularity SAs generally are more vulnerable to traffic
 
-    analysis than coarse-granularity ones that are carrying traffic from
 
-    many subscribers.
 
-    Note: A compliant implementation MUST NOT allow instantiation of an
 
-    ESP SA that employs both NULL encryption and no integrity algorithm.
 
-    An attempt to negotiate such an SA is an auditable event by both
 
-    initiator and responder.  The audit log entry for this event SHOULD
 
-    include the current date/time, local IKE IP address, and remote IKE
 
-    IP address.  The initiator SHOULD record the relevant SPD entry.
 
- 4.3.  Combining SAs
 
-    This document does not require support for nested security
 
-    associations or for what RFC 2401 [RFC2401] called "SA bundles".
 
-    These features still can be effected by appropriate configuration of
 
-    both the SPD and the local forwarding functions (for inbound and
 
-    outbound traffic), but this capability is outside of the IPsec module
 
-    and thus the scope of this specification.  As a result, management of
 
-    nested/bundled SAs is potentially more complex and less assured than
 
-    under the model implied by RFC 2401 [RFC2401].  An implementation
 
-    that provides support for nested SAs SHOULD provide a management
 
-    interface that enables a user or administrator to express the nesting
 
-    requirement, and then create the appropriate SPD entries and
 
-    forwarding table entries to effect the requisite processing. (See
 
-    Appendix E for an example of how to configure nested SAs.)
 
- Kent & Seo                  Standards Track                    [Page 17]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- 4.4.  Major IPsec Databases
 
-    Many of the details associated with processing IP traffic in an IPsec
 
-    implementation are largely a local matter, not subject to
 
-    standardization.  However, some external aspects of the processing
 
-    must be standardized to ensure interoperability and to provide a
 
-    minimum management capability that is essential for productive use of
 
-    IPsec.  This section describes a general model for processing IP
 
-    traffic relative to IPsec functionality, in support of these
 
-    interoperability and functionality goals.  The model described below
 
-    is nominal; implementations need not match details of this model as
 
-    presented, but the external behavior of implementations MUST
 
-    correspond to the externally observable characteristics of this model
 
-    in order to be compliant.
 
-    There are three nominal databases in this model: the Security Policy
 
-    Database (SPD), the Security Association Database (SAD), and the Peer
 
-    Authorization Database (PAD).  The first specifies the policies that
 
-    determine the disposition of all IP traffic inbound or outbound from
 
-    a host or security gateway (Section 4.4.1).  The second database
 
-    contains parameters that are associated with each established (keyed)
 
-    SA (Section 4.4.2).  The third database, the PAD, provides a link
 
-    between an SA management protocol (such as IKE) and the SPD (Section
 
-    4.4.3).
 
-    Multiple Separate IPsec Contexts
 
-       If an IPsec implementation acts as a security gateway for multiple
 
-       subscribers, it MAY implement multiple separate IPsec contexts.
 
-       Each context MAY have and MAY use completely independent
 
-       identities, policies, key management SAs, and/or IPsec SAs.  This
 
-       is for the most part a local implementation matter.  However, a
 
-       means for associating inbound (SA) proposals with local contexts
 
-       is required.  To this end, if supported by the key management
 
-       protocol in use, context identifiers MAY be conveyed from
 
-       initiator to responder in the signaling messages, with the result
 
-       that IPsec SAs are created with a binding to a particular context.
 
-       For example, a security gateway that provides VPN service to
 
-       multiple customers will be able to associate each customer's
 
-       traffic with the correct VPN.
 
-    Forwarding vs Security Decisions
 
-       The IPsec model described here embodies a clear separation between
 
-       forwarding (routing) and security decisions, to accommodate a wide
 
-       range of contexts where IPsec may be employed.  Forwarding may be
 
-       trivial, in the case where there are only two interfaces, or it
 
-       may be complex, e.g., if the context in which IPsec is implemented
 
- Kent & Seo                  Standards Track                    [Page 18]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       employs a sophisticated forwarding function.  IPsec assumes only
 
-       that outbound and inbound traffic that has passed through IPsec
 
-       processing is forwarded in a fashion consistent with the context
 
-       in which IPsec is implemented.  Support for nested SAs is
 
-       optional; if required, it requires coordination between forwarding
 
-       tables and SPD entries to cause a packet to traverse the IPsec
 
-       boundary more than once.
 
-    "Local" vs "Remote"
 
-       In this document, with respect to IP addresses and ports, the
 
-       terms "Local" and "Remote" are used for policy rules.  "Local"
 
-       refers to the entity being protected by an IPsec implementation,
 
-       i.e., the "source" address/port of outbound packets or the
 
-       "destination" address/port of inbound packets. "Remote" refers to
 
-       a peer entity or peer entities.  The terms "source" and
 
-       "destination" are used for packet header fields.
 
-    "Non-initial" vs "Initial" Fragments
 
-       Throughout this document, the phrase "non-initial fragments" is
 
-       used to mean fragments that do not contain all of the selector
 
-       values that may be needed for access control (e.g., they might not
 
-       contain Next Layer Protocol, source and destination ports, ICMP
 
-       message type/code, Mobility Header type).  And the phrase "initial
 
-       fragment" is used to mean a fragment that contains all the
 
-       selector values needed for access control.  However, it should be
 
-       noted that for IPv6, which fragment contains the Next Layer
 
-       Protocol and ports (or ICMP message type/code or Mobility Header
 
-       type [Mobip]) will depend on the kind and number of extension
 
-       headers present.  The "initial fragment" might not be the first
 
-       fragment, in this context.
 
- 4.4.1.  The Security Policy Database (SPD)
 
-    An SA is a management construct used to enforce security policy for
 
-    traffic crossing the IPsec boundary.  Thus, an essential element of
 
-    SA processing is an underlying Security Policy Database (SPD) that
 
-    specifies what services are to be offered to IP datagrams and in what
 
-    fashion.  The form of the database and its interface are outside the
 
-    scope of this specification.  However, this section specifies minimum
 
-    management functionality that must be provided, to allow a user or
 
-    system administrator to control whether and how IPsec is applied to
 
-    traffic transmitted or received by a host or transiting a security
 
-    gateway.  The SPD, or relevant caches, must be consulted during the
 
-    processing of all traffic (inbound and outbound), including traffic
 
-    not protected by IPsec, that traverses the IPsec boundary.  This
 
-    includes IPsec management traffic such as IKE.  An IPsec
 
- Kent & Seo                  Standards Track                    [Page 19]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    implementation MUST have at least one SPD, and it MAY support
 
-    multiple SPDs, if appropriate for the context in which the IPsec
 
-    implementation operates.  There is no requirement to maintain SPDs on
 
-    a per-interface basis, as was specified in RFC 2401 [RFC2401].
 
-    However, if an implementation supports multiple SPDs, then it MUST
 
-    include an explicit SPD selection function that is invoked to select
 
-    the appropriate SPD for outbound traffic processing.  The inputs to
 
-    this function are the outbound packet and any local metadata (e.g.,
 
-    the interface via which the packet arrived) required to effect the
 
-    SPD selection function.  The output of the function is an SPD
 
-    identifier (SPD-ID).
 
-    The SPD is an ordered database, consistent with the use of Access
 
-    Control Lists (ACLs) or packet filters in firewalls, routers, etc.
 
-    The ordering requirement arises because entries often will overlap
 
-    due to the presence of (non-trivial) ranges as values for selectors.
 
-    Thus, a user or administrator MUST be able to order the entries to
 
-    express a desired access control policy.  There is no way to impose a
 
-    general, canonical order on SPD entries, because of the allowed use
 
-    of wildcards for selector values and because the different types of
 
-    selectors are not hierarchically related.
 
-    Processing Choices:  DISCARD, BYPASS, PROTECT
 
-       An SPD must discriminate among traffic that is afforded IPsec
 
-       protection and traffic that is allowed to bypass IPsec.  This
 
-       applies to the IPsec protection to be applied by a sender and to
 
-       the IPsec protection that must be present at the receiver.  For
 
-       any outbound or inbound datagram, three processing choices are
 
-       possible: DISCARD, BYPASS IPsec, or PROTECT using IPsec.  The
 
-       first choice refers to traffic that is not allowed to traverse the
 
-       IPsec boundary (in the specified direction).  The second choice
 
-       refers to traffic that is allowed to cross the IPsec boundary
 
-       without IPsec protection.  The third choice refers to traffic that
 
-       is afforded IPsec protection, and for such traffic the SPD must
 
-       specify the security protocols to be employed, their mode,
 
-       security service options, and the cryptographic algorithms to be
 
-       used.
 
-    SPD-S, SPD-I, SPD-O
 
-       An SPD is logically divided into three pieces.  The SPD-S (secure
 
-       traffic) contains entries for all traffic subject to IPsec
 
-       protection.  SPD-O (outbound) contains entries for all outbound
 
-       traffic that is to be bypassed or discarded.  SPD-I (inbound) is
 
-       applied to inbound traffic that will be bypassed or discarded.
 
-       All three of these can be decorrelated (with the exception noted
 
-       above for native host implementations) to facilitate caching.  If
 
- Kent & Seo                  Standards Track                    [Page 20]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       an IPsec implementation supports only one SPD, then the SPD
 
-       consists of all three parts.  If multiple SPDs are supported, some
 
-       of them may be partial, e.g., some SPDs might contain only SPD-I
 
-       entries, to control inbound bypassed traffic on a per-interface
 
-       basis.  The split allows SPD-I to be consulted without having to
 
-       consult SPD-S, for such traffic.  Since the SPD-I is just a part
 
-       of the SPD, if a packet that is looked up in the SPD-I cannot be
 
-       matched to an entry there, then the packet MUST be discarded.
 
-       Note that for outbound traffic, if a match is not found in SPD-S,
 
-       then SPD-O must be checked to see if the traffic should be
 
-       bypassed.  Similarly, if SPD-O is checked first and no match is
 
-       found, then SPD-S must be checked.  In an ordered,
 
-       non-decorrelated SPD, the entries for the SPD-S, SPD-I, and SPD-O
 
-       are interleaved.  So there is one lookup in the SPD.
 
-    SPD Entries
 
-       Each SPD entry specifies packet disposition as BYPASS, DISCARD, or
 
-       PROTECT.  The entry is keyed by a list of one or more selectors.
 
-       The SPD contains an ordered list of these entries.  The required
 
-       selector types are defined in Section 4.4.1.1. These selectors are
 
-       used to define the granularity of the SAs that are created in
 
-       response to an outbound packet or in response to a proposal from a
 
-       peer.  The detailed structure of an SPD entry is described in
 
-       Section 4.4.1.2. Every SPD SHOULD have a nominal, final entry that
 
-       matches anything that is otherwise unmatched, and discards it.
 
-       The SPD MUST permit a user or administrator to specify policy
 
-       entries as follows:
 
-        - SPD-I: For inbound traffic that is to be bypassed or discarded,
 
-          the entry consists of the values of the selectors that apply to
 
-          the traffic to be bypassed or discarded.
 
-        - SPD-O: For outbound traffic that is to be bypassed or
 
-          discarded, the entry consists of the values of the selectors
 
-          that apply to the traffic to be bypassed or discarded.
 
-        - SPD-S: For traffic that is to be protected using IPsec, the
 
-          entry consists of the values of the selectors that apply to the
 
-          traffic to be protected via AH or ESP, controls on how to
 
-          create SAs based on these selectors, and the parameters needed
 
-          to effect this protection (e.g., algorithms, modes, etc.). Note
 
-          that an SPD-S entry also contains information such as "populate
 
-          from packet" (PFP) flag (see paragraphs below on "How To Derive
 
-          the Values for an SAD entry") and bits indicating whether the
 
- Kent & Seo                  Standards Track                    [Page 21]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-          SA lookup makes use of the local and remote IP addresses in
 
-          addition to the SPI (see AH [Ken05b] or ESP [Ken05a]
 
-          specifications).
 
-    Representing Directionality in an SPD Entry
 
-       For traffic protected by IPsec, the Local and Remote address and
 
-       ports in an SPD entry are swapped to represent directionality,
 
-       consistent with IKE conventions.  In general, the protocols that
 
-       IPsec deals with have the property of requiring symmetric SAs with
 
-       flipped Local/Remote IP addresses.  However, for ICMP, there is
 
-       often no such bi-directional authorization requirement.
 
-       Nonetheless, for the sake of uniformity and simplicity, SPD
 
-       entries for ICMP are specified in the same way as for other
 
-       protocols.  Note also that for ICMP, Mobility Header, and
 
-       non-initial fragments, there are no port fields in these packets.
 
-       ICMP has message type and code and Mobility Header has mobility
 
-       header type.  Thus, SPD entries have provisions for expressing
 
-       access controls appropriate for these protocols, in lieu of the
 
-       normal port field controls.  For bypassed or discarded traffic,
 
-       separate inbound and outbound entries are supported, e.g., to
 
-       permit unidirectional flows if required.
 
-    OPAQUE and ANY
 
-       For each selector in an SPD entry, in addition to the literal
 
-       values that define a match, there are two special values: ANY and
 
-       OPAQUE.  ANY is a wildcard that matches any value in the
 
-       corresponding field of the packet, or that matches packets where
 
-       that field is not present or is obscured.  OPAQUE indicates that
 
-       the corresponding selector field is not available for examination
 
-       because it may not be present in a fragment, it does not exist for
 
-       the given Next Layer Protocol, or prior application of IPsec may
 
-       have encrypted the value.  The ANY value encompasses the OPAQUE
 
-       value.  Thus, OPAQUE need be used only when it is necessary to
 
-       distinguish between the case of any allowed value for a field, vs.
 
-       the absence or unavailability (e.g., due to encryption) of the
 
-       field.
 
-    How to Derive the Values for an SAD Entry
 
-       For each selector in an SPD entry, the entry specifies how to
 
-       derive the corresponding values for a new SA Database (SAD, see
 
-       Section 4.4.2) entry from those in the SPD and the packet.  The
 
-       goal is to allow an SAD entry and an SPD cache entry to be created
 
-       based on specific selector values from the packet, or from the
 
-       matching SPD entry.  For outbound traffic, there are SPD-S cache
 
-       entries and SPD-O cache entries.  For inbound traffic not
 
- Kent & Seo                  Standards Track                    [Page 22]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       protected by IPsec, there are SPD-I cache entries and there is the
 
-       SAD, which represents the cache for inbound IPsec-protected
 
-       traffic (see Section 4.4.2).  If IPsec processing is specified for
 
-       an entry, a "populate from packet" (PFP) flag may be asserted for
 
-       one or more of the selectors in the SPD entry (Local IP address;
 
-       Remote IP address; Next Layer Protocol; and, depending on Next
 
-       Layer Protocol, Local port and Remote port, or ICMP type/code, or
 
-       Mobility Header type).  If asserted for a given selector X, the
 
-       flag indicates that the SA to be created should take its value for
 
-       X from the value in the packet.  Otherwise, the SA should take its
 
-       value(s) for X from the value(s) in the SPD entry.  Note: In the
 
-       non-PFP case, the selector values negotiated by the SA management
 
-       protocol (e.g., IKEv2) may be a subset of those in the SPD entry,
 
-       depending on the SPD policy of the peer.  Also, whether a single
 
-       flag is used for, e.g., source port, ICMP type/code, and Mobility
 
-       Header (MH) type, or a separate flag is used for each, is a local
 
-       matter.
 
-       The following example illustrates the use of the PFP flag in the
 
-       context of a security gateway or a BITS/BITW implementation.
 
-       Consider an SPD entry where the allowed value for Remote address
 
-       is a range of IPv4 addresses: 192.0.2.1 to 192.0.2.10.  Suppose an
 
-       outbound packet arrives with a destination address of 192.0.2.3,
 
-       and there is no extant SA to carry this packet.  The value used
 
-       for the SA created to transmit this packet could be either of the
 
-       two values shown below, depending on what the SPD entry for this
 
-       selector says is the source of the selector value:
 
-           PFP flag value  example of new
 
-           for the Remote  SAD dest. address
 
-           addr. selector  selector value
 
-           --------------- ------------
 
-           a. PFP TRUE     192.0.2.3 (one host)
 
-           b. PFP FALSE    192.0.2.1 to 192.0.2.10 (range of hosts)
 
-       Note that if the SPD entry above had a value of ANY for the Remote
 
-       address, then the SAD selector value would have to be ANY for case
 
-       (b), but would still be as illustrated for case (a).  Thus, the
 
-       PFP flag can be used to prohibit sharing of an SA, even among
 
-       packets that match the same SPD entry.
 
-    Management Interface
 
-       For every IPsec implementation, there MUST be a management
 
-       interface that allows a user or system administrator to manage the
 
-       SPD.  The interface must allow the user (or administrator) to
 
-       specify the security processing to be applied to every packet that
 
-       traverses the IPsec boundary. (In a native host IPsec
 
- Kent & Seo                  Standards Track                    [Page 23]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       implementation making use of a socket interface, the SPD may not
 
-       need to be consulted on a per-packet basis, as noted at the end of
 
-       Section 4.4.1.1 and in Section 5.)  The management interface for
 
-       the SPD MUST allow creation of entries consistent with the
 
-       selectors defined in Section 4.4.1.1, and MUST support (total)
 
-       ordering of these entries, as seen via this interface.  The SPD
 
-       entries' selectors are analogous to the ACL or packet filters
 
-       commonly found in a stateless firewall or packet filtering router
 
-       and which are currently managed this way.
 
-       In host systems, applications MAY be allowed to create SPD
 
-       entries.  (The means of signaling such requests to the IPsec
 
-       implementation are outside the scope of this standard.)  However,
 
-       the system administrator MUST be able to specify whether or not a
 
-       user or application can override (default) system policies.  The
 
-       form of the management interface is not specified by this document
 
-       and may differ for hosts vs. security gateways, and within hosts
 
-       the interface may differ for socket-based vs. BITS
 
-       implementations.  However, this document does specify a standard
 
-       set of SPD elements that all IPsec implementations MUST support.
 
-    Decorrelation
 
-       The processing model described in this document assumes the
 
-       ability to decorrelate overlapping SPD entries to permit caching,
 
-       which enables more efficient processing of outbound traffic in
 
-       security gateways and BITS/BITW implementations.  Decorrelation
 
-       [CoSa04] is only a means of improving performance and simplifying
 
-       the processing description.  This RFC does not require a compliant
 
-       implementation to make use of decorrelation.  For example, native
 
-       host implementations typically make use of caching implicitly
 
-       because they bind SAs to socket interfaces, and thus there is no
 
-       requirement to be able to decorrelate SPD entries in these
 
-       implementations.
 
-       Note:  Unless otherwise qualified, the use of "SPD" refers to the
 
-       body of policy information in both ordered or decorrelated
 
-       (unordered) state.  Appendix B provides an algorithm that can be
 
-       used to decorrelate SPD entries, but any algorithm that produces
 
-       equivalent output may be used.  Note that when an SPD entry is
 
-       decorrelated all the resulting entries MUST be linked together, so
 
-       that all members of the group derived from an individual, SPD
 
-       entry (prior to decorrelation) can all be placed into caches and
 
-       into the SAD at the same time.  For example, suppose one starts
 
-       with an entry A (from an ordered SPD) that when decorrelated,
 
-       yields entries A1, A2, and A3.  When a packet comes along that
 
-       matches, say A2, and triggers the creation of an SA, the SA
 
-       management protocol (e.g., IKEv2) negotiates A.  And all 3
 
- Kent & Seo                  Standards Track                    [Page 24]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       decorrelated entries, A1, A2, and A3, are placed in the
 
-       appropriate SPD-S cache and linked to the SA.  The intent is that
 
-       use of a decorrelated SPD ought not to create more SAs than would
 
-       have resulted from use of a not-decorrelated SPD.
 
-       If a decorrelated SPD is employed, there are three options for
 
-       what an initiator sends to a peer via an SA management protocol
 
-       (e.g., IKE).  By sending the complete set of linked, decorrelated
 
-       entries that were selected from the SPD, a peer is given the best
 
-       possible information to enable selection of the appropriate SPD
 
-       entry at its end, especially if the peer has also decorrelated its
 
-       SPD.  However, if a large number of decorrelated entries are
 
-       linked, this may create large packets for SA negotiation, and
 
-       hence fragmentation problems for the SA management protocol.
 
-       Alternatively, the original entry from the (correlated) SPD may be
 
-       retained and passed to the SA management protocol.  Passing the
 
-       correlated SPD entry keeps the use of a decorrelated SPD a local
 
-       matter, not visible to peers, and avoids possible fragmentation
 
-       concerns, although it provides less precise information to a
 
-       responder for matching against the responder's SPD.
 
-       An intermediate approach is to send a subset of the complete set
 
-       of linked, decorrelated SPD entries.  This approach can avoid the
 
-       fragmentation problems cited above yet provide better information
 
-       than the original, correlated entry.  The major shortcoming of
 
-       this approach is that it may cause additional SAs to be created
 
-       later, since only a subset of the linked, decorrelated entries are
 
-       sent to a peer.  Implementers are free to employ any of the
 
-       approaches cited above.
 
-       A responder uses the traffic selector proposals it receives via an
 
-       SA management protocol to select an appropriate entry in its SPD.
 
-       The intent of the matching is to select an SPD entry and create an
 
-       SA that most closely matches the intent of the initiator, so that
 
-       traffic traversing the resulting SA will be accepted at both ends.
 
-       If the responder employs a decorrelated SPD, it SHOULD use the
 
-       decorrelated SPD entries for matching, as this will generally
 
-       result in creation of SAs that are more likely to match the intent
 
-       of both peers.  If the responder has a correlated SPD, then it
 
-       SHOULD match the proposals against the correlated entries.  For
 
-       IKEv2, use of a decorrelated SPD offers the best opportunity for a
 
-       responder to generate a "narrowed" response.
 
-       In all cases, when a decorrelated SPD is available, the
 
-       decorrelated entries are used to populate the SPD-S cache.  If the
 
-       SPD is not decorrelated, caching is not allowed and an ordered
 
- Kent & Seo                  Standards Track                    [Page 25]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       search of SPD MUST be performed to verify that inbound traffic
 
-       arriving on an SA is consistent with the access control policy
 
-       expressed in the SPD.
 
-    Handling Changes to the SPD While the System Is Running
 
-       If a change is made to the SPD while the system is running, a
 
-       check SHOULD be made of the effect of this change on extant SAs.
 
-       An implementation SHOULD check the impact of an SPD change on
 
-       extant SAs and SHOULD provide a user/administrator with a
 
-       mechanism for configuring what actions to take, e.g., delete an
 
-       affected SA, allow an affected SA to continue unchanged, etc.
 
- 4.4.1.1.   Selectors
 
-    An SA may be fine-grained or coarse-grained, depending on the
 
-    selectors used to define the set of traffic for the SA.  For example,
 
-    all traffic between two hosts may be carried via a single SA, and
 
-    afforded a uniform set of security services.  Alternatively, traffic
 
-    between a pair of hosts might be spread over multiple SAs, depending
 
-    on the applications being used (as defined by the Next Layer Protocol
 
-    and related fields, e.g., ports), with different security services
 
-    offered by different SAs.  Similarly, all traffic between a pair of
 
-    security gateways could be carried on a single SA, or one SA could be
 
-    assigned for each communicating host pair.  The following selector
 
-    parameters MUST be supported by all IPsec implementations to
 
-    facilitate control of SA granularity.  Note that both Local and
 
-    Remote addresses should either be IPv4 or IPv6, but not a mix of
 
-    address types.  Also, note that the Local/Remote port selectors (and
 
-    ICMP message type and code, and Mobility Header type) may be labeled
 
-    as OPAQUE to accommodate situations where these fields are
 
-    inaccessible due to packet fragmentation.
 
-       - Remote IP Address(es) (IPv4 or IPv6): This is a list of ranges
 
-         of IP addresses (unicast, broadcast (IPv4 only)).  This
 
-         structure allows expression of a single IP address (via a
 
-         trivial range), or a list of addresses (each a trivial range),
 
-         or a range of addresses (low and high values, inclusive), as
 
-         well as the most generic form of a list of ranges.  Address
 
-         ranges are used to support more than one remote system sharing
 
-         the same SA, e.g., behind a security gateway.
 
-       - Local IP Address(es) (IPv4 or IPv6): This is a list of ranges of
 
-         IP addresses (unicast, broadcast (IPv4 only)).  This structure
 
-         allows expression of a single IP address (via a trivial range),
 
-         or a list of addresses (each a trivial range), or a range of
 
-         addresses (low and high values, inclusive), as well as the most
 
-         generic form of a list of ranges.  Address ranges are used to
 
- Kent & Seo                  Standards Track                    [Page 26]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-         support more than one source system sharing the same SA, e.g.,
 
-         behind a security gateway.  Local refers to the address(es)
 
-         being protected by this implementation (or policy entry).
 
-         Note: The SPD does not include support for multicast address
 
-         entries.  To support multicast SAs, an implementation should
 
-         make use of a Group SPD (GSPD) as defined in [RFC3740].  GSPD
 
-         entries require a different structure, i.e., one cannot use the
 
-         symmetric relationship associated with local and remote address
 
-         values for unicast SAs in a multicast context.  Specifically,
 
-         outbound traffic directed to a multicast address on an SA would
 
-         not be received on a companion, inbound SA with the multicast
 
-         address as the source.
 
-       - Next Layer Protocol: Obtained from the IPv4 "Protocol" or the
 
-         IPv6 "Next Header" fields.  This is an individual protocol
 
-         number, ANY, or for IPv6 only, OPAQUE.  The Next Layer Protocol
 
-         is whatever comes after any IP extension headers that are
 
-         present.  To simplify locating the Next Layer Protocol, there
 
-         SHOULD be a mechanism for configuring which IPv6 extension
 
-         headers to skip.  The default configuration for which protocols
 
-         to skip SHOULD include the following protocols: 0 (Hop-by-hop
 
-         options), 43 (Routing Header), 44 (Fragmentation Header), and 60
 
-         (Destination Options).  Note: The default list does NOT include
 
-         51 (AH) or 50 (ESP).  From a selector lookup point of view,
 
-         IPsec treats AH and ESP as Next Layer Protocols.
 
-         Several additional selectors depend on the Next Layer Protocol
 
-         value:
 
-          * If the Next Layer Protocol uses two ports (as do TCP, UDP,
 
-            SCTP, and others), then there are selectors for Local and
 
-            Remote Ports.  Each of these selectors has a list of ranges
 
-            of values.  Note that the Local and Remote ports may not be
 
-            available in the case of receipt of a fragmented packet or if
 
-            the port fields have been protected by IPsec (encrypted);
 
-            thus, a value of OPAQUE also MUST be supported.  Note: In a
 
-            non-initial fragment, port values will not be available.  If
 
-            a port selector specifies a value other than ANY or OPAQUE,
 
-            it cannot match packets that are non-initial fragments.  If
 
-            the SA requires a port value other than ANY or OPAQUE, an
 
-            arriving fragment without ports MUST be discarded. (See
 
-            Section 7, "Handling Fragments".)
 
-          * If the Next Layer Protocol is a Mobility Header, then there
 
-            is a selector for IPv6 Mobility Header message type (MH type)
 
-            [Mobip].  This is an 8-bit value that identifies a particular
 
-            mobility message.  Note that the MH type may not be available
 
- Kent & Seo                  Standards Track                    [Page 27]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-            in the case of receipt of a fragmented packet. (See Section
 
-            7, "Handling Fragments".) For IKE, the IPv6 Mobility Header
 
-            message type (MH type) is placed in the most significant
 
-            eight bits of the 16-bit local "port" selector.
 
-          * If the Next Layer Protocol value is ICMP, then there is a
 
-            16-bit selector for the ICMP message type and code.  The
 
-            message type is a single 8-bit value, which defines the type
 
-            of an ICMP message, or ANY.  The ICMP code is a single 8-bit
 
-            value that defines a specific subtype for an ICMP message.
 
-            For IKE, the message type is placed in the most significant 8
 
-            bits of the 16-bit selector and the code is placed in the
 
-            least significant 8 bits.  This 16-bit selector can contain a
 
-            single type and a range of codes, a single type and ANY code,
 
-            and ANY type and ANY code.  Given a policy entry with a range
 
-            of Types (T-start to T-end) and a range of Codes (C-start to
 
-            C-end), and an ICMP packet with Type t and Code c, an
 
-            implementation MUST test for a match using
 
-                (T-start*256) + C-start <= (t*256) + c <= (T-end*256) +
 
-                C-end
 
-            Note that the ICMP message type and code may not be available
 
-            in the case of receipt of a fragmented packet. (See Section
 
-            7, "Handling Fragments".)
 
-       - Name:  This is not a selector like the others above.  It is not
 
-         acquired from a packet.  A name may be used as a symbolic
 
-         identifier for an IPsec Local or Remote address.  Named SPD
 
-         entries are used in two ways:
 
-          1. A named SPD entry is used by a responder (not an initiator)
 
-             in support of access control when an IP address would not be
 
-             appropriate for the Remote IP address selector, e.g., for
 
-             "road warriors".  The name used to match this field is
 
-             communicated during the IKE negotiation in the ID payload.
 
-             In this context, the initiator's Source IP address (inner IP
 
-             header in tunnel mode) is bound to the Remote IP address in
 
-             the SAD entry created by the IKE negotiation.  This address
 
-             overrides the Remote IP address value in the SPD, when the
 
-             SPD entry is selected in this fashion.  All IPsec
 
-             implementations MUST support this use of names.
 
-          2. A named SPD entry may be used by an initiator to identify a
 
-             user for whom an IPsec SA will be created (or for whom
 
-             traffic may be bypassed).  The initiator's IP source address
 
-             (from inner IP header in tunnel mode) is used to replace the
 
-             following if and when they are created:
 
- Kent & Seo                  Standards Track                    [Page 28]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-                     - local address in the SPD cache entry
 
-                     - local address in the outbound SAD entry
 
-                     - remote address in the inbound SAD entry
 
-             Support for this use is optional for multi-user, native host
 
-             implementations and not applicable to other implementations.
 
-             Note that this name is used only locally; it is not
 
-             communicated by the key management protocol.  Also, name
 
-             forms other than those used for case 1 above (responder) are
 
-             applicable in the initiator context (see below).
 
-          An SPD entry can contain both a name (or a list of names) and
 
-          also values for the Local or Remote IP address.
 
-          For case 1, responder, the identifiers employed in named SPD
 
-          entries are one of the following four types:
 
-                  a. a fully qualified user name string (email), e.g.,
 
-                     mozart@foo.example.com
 
-                     (this corresponds to ID_RFC822_ADDR in IKEv2)
 
-                  b. a fully qualified DNS name, e.g.,
 
-                     foo.example.com
 
-                     (this corresponds to ID_FQDN in IKEv2)
 
-                  c. X.500 distinguished name, e.g., [WaKiHo97],
 
-                     CN = Stephen T. Kent, O = BBN Technologies,
 
-                     SP = MA, C = US
 
-                     (this corresponds to ID_DER_ASN1_DN in IKEv2, after
 
-                     decoding)
 
-                  d. a byte string
 
-                     (this corresponds to Key_ID in IKEv2)
 
-          For case 2, initiator, the identifiers employed in named SPD
 
-          entries are of type byte string.  They are likely to be Unix
 
-          UIDs, Windows security IDs, or something similar, but could
 
-          also be a user name or account name.  In all cases, this
 
-          identifier is only of local concern and is not transmitted.
 
-    The IPsec implementation context determines how selectors are used.
 
-    For example, a native host implementation typically makes use of a
 
-    socket interface.  When a new connection is established, the SPD can
 
-    be consulted and an SA bound to the socket.  Thus, traffic sent via
 
-    that socket need not result in additional lookups to the SPD (SPD-O
 
-    and SPD-S) cache.  In contrast, a BITS, BITW, or security gateway
 
-    implementation needs to look at each packet and perform an
 
-    SPD-O/SPD-S cache lookup based on the selectors.
 
- Kent & Seo                  Standards Track                    [Page 29]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- 4.4.1.2.  Structure of an SPD Entry
 
-    This section contains a prose description of an SPD entry.  Also,
 
-    Appendix C provides an example of an ASN.1 definition of an SPD
 
-    entry.
 
-    This text describes the SPD in a fashion that is intended to map
 
-    directly into IKE payloads to ensure that the policy required by SPD
 
-    entries can be negotiated through IKE.  Unfortunately, the semantics
 
-    of the version of IKEv2 published concurrently with this document
 
-    [Kau05] do not align precisely with those defined for the SPD.
 
-    Specifically, IKEv2 does not enable negotiation of a single SA that
 
-    binds multiple pairs of local and remote addresses and ports to a
 
-    single SA.  Instead, when multiple local and remote addresses and
 
-    ports are negotiated for an SA, IKEv2 treats these not as pairs, but
 
-    as (unordered) sets of local and remote values that can be
 
-    arbitrarily paired.  Until IKE provides a facility that conveys the
 
-    semantics that are expressed in the SPD via selector sets (as
 
-    described below), users MUST NOT include multiple selector sets in a
 
-    single SPD entry unless the access control intent aligns with the IKE
 
-    "mix and match" semantics.  An implementation MAY warn users, to
 
-    alert them to this problem if users create SPD entries with multiple
 
-    selector sets, the syntax of which indicates possible conflicts with
 
-    current IKE semantics.
 
-    The management GUI can offer the user other forms of data entry and
 
-    display, e.g., the option of using address prefixes as well as
 
-    ranges, and symbolic names for protocols, ports, etc. (Do not confuse
 
-    the use of symbolic names in a management interface with the SPD
 
-    selector "Name".) Note that Remote/Local apply only to IP addresses
 
-    and ports, not to ICMP message type/code or Mobility Header type.
 
-    Also, if the reserved, symbolic selector value OPAQUE or ANY is
 
-    employed for a given selector type, only that value may appear in the
 
-    list for that selector, and it must appear only once in the list for
 
-    that selector.  Note that ANY and OPAQUE are local syntax conventions
 
-    -- IKEv2 negotiates these values via the ranges indicated below:
 
-           ANY:     start = 0        end = <max>
 
-           OPAQUE:  start = <max>    end = 0
 
-    An SPD is an ordered list of entries each of which contains the
 
-    following fields.
 
-            o Name -- a list of IDs.  This quasi-selector is optional.
 
-              The forms that MUST be supported are described above in
 
-              Section 4.4.1.1 under "Name".
 
- Kent & Seo                  Standards Track                    [Page 30]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-            o PFP flags -- one per traffic selector.  A given flag, e.g.,
 
-              for Next Layer Protocol, applies to the relevant selector
 
-              across all "selector sets" (see below) contained in an SPD
 
-              entry.  When creating an SA, each flag specifies for the
 
-              corresponding traffic selector whether to instantiate the
 
-              selector from the corresponding field in the packet that
 
-              triggered the creation of the SA or from the value(s) in
 
-              the corresponding SPD entry (see Section 4.4.1, "How to
 
-              Derive the Values for an SAD Entry").  Whether a single
 
-              flag is used for, e.g., source port, ICMP type/code, and
 
-              MH type, or a separate flag is used for each, is a local
 
-              matter.  There are PFP flags for:
 
-                 - Local Address
 
-                 - Remote Address
 
-                 - Next Layer Protocol
 
-                 - Local Port, or ICMP message type/code or Mobility
 
-                   Header type (depending on the next layer protocol)
 
-                 - Remote Port, or ICMP message type/code or Mobility
 
-                   Header type (depending on the next layer protocol)
 
-            o One to N selector sets that correspond to the "condition"
 
-              for applying a particular IPsec action.  Each selector set
 
-              contains:
 
-                 - Local Address
 
-                 - Remote Address
 
-                 - Next Layer Protocol
 
-                 - Local Port, or ICMP message type/code or Mobility
 
-                   Header type (depending on the next layer protocol)
 
-                 - Remote Port, or ICMP message type/code or Mobility
 
-                   Header type (depending on the next layer protocol)
 
-              Note: The "next protocol" selector is an individual value
 
-              (unlike the local and remote IP addresses) in a selector
 
-              set entry.  This is consistent with how IKEv2 negotiates
 
-              the Traffic Selector (TS) values for an SA.  It also makes
 
-              sense because one may need to associate different port
 
-              fields with different protocols.  It is possible to
 
-              associate multiple protocols (and ports) with a single SA
 
-              by specifying multiple selector sets for that SA.
 
-            o Processing info -- which action is required -- PROTECT,
 
-              BYPASS, or DISCARD.  There is just one action that goes
 
-              with all the selector sets, not a separate action for each
 
-              set.  If the required processing is PROTECT, the entry
 
-              contains the following information.
 
-                 - IPsec mode -- tunnel or transport
 
- Kent & Seo                  Standards Track                    [Page 31]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-                 - (if tunnel mode) local tunnel address -- For a
 
-                   non-mobile host, if there is just one interface, this
 
-                   is straightforward; if there are multiple
 
-                   interfaces, this must be statically configured.  For a
 
-                   mobile host, the specification of the local address
 
-                   is handled externally to IPsec.
 
-                 - (if tunnel mode) remote tunnel address -- There is no
 
-                   standard way to determine this.  See 4.5.3, "Locating
 
-                   a Security Gateway".
 
-                 - Extended Sequence Number -- Is this SA using extended
 
-                   sequence numbers?
 
-                 - stateful fragment checking -- Is this SA using
 
-                   stateful fragment checking?  (See Section 7 for more
 
-                   details.)
 
-                 - Bypass DF bit (T/F) -- applicable to tunnel mode SAs
 
-                 - Bypass DSCP (T/F) or map to unprotected DSCP values
 
-                   (array) if needed to restrict bypass of DSCP values --
 
-                   applicable to tunnel mode SAs
 
-                 - IPsec protocol -- AH or ESP
 
-                 - algorithms -- which ones to use for AH, which ones to
 
-                   use for ESP, which ones to use for combined mode,
 
-                   ordered by decreasing priority
 
-    It is a local matter as to what information is kept with regard to
 
-    handling extant SAs when the SPD is changed.
 
- 4.4.1.3.  More Regarding Fields Associated with Next Layer Protocols
 
-    Additional selectors are often associated with fields in the Next
 
-    Layer Protocol header.  A particular Next Layer Protocol can have
 
-    zero, one, or two selectors.  There may be situations where there
 
-    aren't both local and remote selectors for the fields that are
 
-    dependent on the Next Layer Protocol.  The IPv6 Mobility Header has
 
-    only a Mobility Header message type.  AH and ESP have no further
 
-    selector fields.  A system may be willing to send an ICMP message
 
-    type and code that it does not want to receive.  In the descriptions
 
-    below, "port" is used to mean a field that is dependent on the Next
 
-    Layer Protocol.
 
-         A. If a Next Layer Protocol has no "port" selectors, then
 
-            the Local and Remote "port" selectors are set to OPAQUE in
 
-            the relevant SPD entry, e.g.,
 
-            Local's
 
-              next layer protocol = AH
 
-              "port" selector     = OPAQUE
 
- Kent & Seo                  Standards Track                    [Page 32]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-            Remote's
 
-              next layer protocol = AH
 
-              "port" selector     = OPAQUE
 
-         B. Even if a Next Layer Protocol has only one selector, e.g.,
 
-            Mobility Header type, then the Local and Remote "port"
 
-            selectors are used to indicate whether a system is
 
-            willing to send and/or receive traffic with the specified
 
-           "port" values. For example, if Mobility Headers of a
 
-            specified type are allowed to be sent and received via an
 
-            SA, then the relevant SPD entry would be set as follows:
 
-            Local's
 
-              next layer protocol = Mobility Header
 
-              "port" selector     = Mobility Header message type
 
-            Remote's
 
-              next layer protocol = Mobility Header
 
-              "port" selector     = Mobility Header message type
 
-            If Mobility Headers of a specified type are allowed to be
 
-            sent but NOT received via an SA, then the relevant SPD
 
-            entry would be set as follows:
 
-            Local's
 
-              next layer protocol = Mobility Header
 
-              "port" selector     = Mobility Header message type
 
-            Remote's
 
-              next layer protocol = Mobility Header
 
-              "port" selector     = OPAQUE
 
-            If Mobility Headers of a specified type are allowed to be
 
-            received but NOT sent via an SA, then the relevant SPD
 
-            entry would be set as follows:
 
-            Local's
 
-              next layer protocol = Mobility Header
 
-              "port" selector     = OPAQUE
 
-            Remote's
 
-              next layer protocol = Mobility Header
 
-              "port" selector     = Mobility Header message type
 
-         C. If a system is willing to send traffic with a particular
 
-            "port" value but NOT receive traffic with that kind of
 
-            port value, the system's traffic selectors are set as
 
-            follows in the relevant SPD entry:
 
- Kent & Seo                  Standards Track                    [Page 33]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-            Local's
 
-              next layer protocol = ICMP
 
-              "port" selector     = <specific ICMP type & code>
 
-            Remote's
 
-              next layer protocol = ICMP
 
-              "port" selector     = OPAQUE
 
-         D. To indicate that a system is willing to receive traffic
 
-            with a particular "port" value but NOT send that kind of
 
-            traffic, the system's traffic selectors are set as follows
 
-            in the relevant SPD entry:
 
-            Local's
 
-              next layer protocol = ICMP
 
-              "port" selector     = OPAQUE
 
-            Remote's
 
-              next layer protocol = ICMP
 
-              "port" selector     = <specific ICMP type & code>
 
-            For example, if a security gateway is willing to allow
 
-            systems behind it to send ICMP traceroutes, but is not
 
-            willing to let outside systems run ICMP traceroutes to
 
-            systems behind it, then the security gateway's traffic
 
-            selectors are set as follows in the relevant SPD entry:
 
-            Local's
 
-              next layer protocol = 1 (ICMPv4)
 
-              "port" selector     = 30 (traceroute)
 
-            Remote's
 
-              next layer protocol = 1 (ICMPv4)
 
-              "port" selector     = OPAQUE
 
- 4.4.2.  Security Association Database (SAD)
 
-    In each IPsec implementation, there is a nominal Security Association
 
-    Database (SAD), in which each entry defines the parameters associated
 
-    with one SA.  Each SA has an entry in the SAD.  For outbound
 
-    processing, each SAD entry is pointed to by entries in the SPD-S part
 
-    of the SPD cache.  For inbound processing, for unicast SAs, the SPI
 
-    is used either alone to look up an SA or in conjunction with the
 
-    IPsec protocol type.  If an IPsec implementation supports multicast,
 
-    the SPI plus destination address, or SPI plus destination and source
 
-    addresses are used to look up the SA. (See Section 4.1 for details on
 
-    the algorithm that MUST be used for mapping inbound IPsec datagrams
 
-    to SAs.) The following parameters are associated with each entry in
 
- Kent & Seo                  Standards Track                    [Page 34]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    the SAD.  They should all be present except where otherwise noted,
 
-    e.g., AH Authentication algorithm.  This description does not purport
 
-    to be a MIB, only a specification of the minimal data items required
 
-    to support an SA in an IPsec implementation.
 
-    For each of the selectors defined in Section 4.4.1.1, the entry for
 
-    an inbound SA in the SAD MUST be initially populated with the value
 
-    or values negotiated at the time the SA was created. (See the
 
-    paragraph in Section 4.4.1 under "Handling Changes to the SPD while
 
-    the System is Running" for guidance on the effect of SPD changes on
 
-    extant SAs.) For a receiver, these values are used to check that the
 
-    header fields of an inbound packet (after IPsec processing) match the
 
-    selector values negotiated for the SA.  Thus, the SAD acts as a cache
 
-    for checking the selectors of inbound traffic arriving on SAs.  For
 
-    the receiver, this is part of verifying that a packet arriving on an
 
-    SA is consistent with the policy for the SA. (See Section 6 for rules
 
-    for ICMP messages.)  These fields can have the form of specific
 
-    values, ranges, ANY, or OPAQUE, as described in Section 4.4.1.1,
 
-    "Selectors".  Note also that there are a couple of situations in
 
-    which the SAD can have entries for SAs that do not have corresponding
 
-    entries in the SPD.  Since this document does not mandate that the
 
-    SAD be selectively cleared when the SPD is changed, SAD entries can
 
-    remain when the SPD entries that created them are changed or deleted.
 
-    Also, if a manually keyed SA is created, there could be an SAD entry
 
-    for this SA that does not correspond to any SPD entry.
 
-    Note: The SAD can support multicast SAs, if manually configured.  An
 
-    outbound multicast SA has the same structure as a unicast SA.  The
 
-    source address is that of the sender, and the destination address is
 
-    the multicast group address.  An inbound, multicast SA must be
 
-    configured with the source addresses of each peer authorized to
 
-    transmit to the multicast SA in question.  The SPI value for a
 
-    multicast SA is provided by a multicast group controller, not by the
 
-    receiver, as for a unicast SA.  Because an SAD entry may be required
 
-    to accommodate multiple, individual IP source addresses that were
 
-    part of an SPD entry (for unicast SAs), the required facility for
 
-    inbound, multicast SAs is a feature already present in an IPsec
 
-    implementation.  However, because the SPD has no provisions for
 
-    accommodating multicast entries, this document does not specify an
 
-    automated way to create an SAD entry for a multicast, inbound SA.
 
-    Only manually configured SAD entries can be created to accommodate
 
-    inbound, multicast traffic.
 
-    Implementation Guidance: This document does not specify how an SPD-S
 
-    entry refers to the corresponding SAD entry, as this is an
 
-    implementation-specific detail.  However, some implementations (based
 
-    on experience from RFC 2401) are known to have problems in this
 
-    regard.  In particular, simply storing the (remote tunnel header IP
 
- Kent & Seo                  Standards Track                    [Page 35]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    address, remote SPI) pair in the SPD cache is not sufficient, since
 
-    the pair does not always uniquely identify a single SAD entry.  For
 
-    instance, two hosts behind the same NAT could choose the same SPI
 
-    value.  The situation also may arise if a host is assigned an IP
 
-    address (e.g., via DHCP) previously used by some other host, and the
 
-    SAs associated with the old host have not yet been deleted via dead
 
-    peer detection mechanisms.  This may lead to packets being sent over
 
-    the wrong SA or, if key management ensures the pair is unique,
 
-    denying the creation of otherwise valid SAs.  Thus, implementors
 
-    should implement links between the SPD cache and the SAD in a way
 
-    that does not engender such problems.
 
- 4.4.2.1.  Data Items in the SAD
 
-    The following data items MUST be in the SAD:
 
-     o Security Parameter Index (SPI): a 32-bit value selected by the
 
-       receiving end of an SA to uniquely identify the SA.  In an SAD
 
-       entry for an outbound SA, the SPI is used to construct the
 
-       packet's AH or ESP header.  In an SAD entry for an inbound SA, the
 
-       SPI is used to map traffic to the appropriate SA (see text on
 
-       unicast/multicast in Section 4.1).
 
-     o Sequence Number Counter: a 64-bit counter used to generate the
 
-       Sequence Number field in AH or ESP headers. 64-bit sequence
 
-       numbers are the default, but 32-bit sequence numbers are also
 
-       supported if negotiated.
 
-     o Sequence Counter Overflow: a flag indicating whether overflow of
 
-       the sequence number counter should generate an auditable event and
 
-       prevent transmission of additional packets on the SA, or whether
 
-       rollover is permitted.  The audit log entry for this event SHOULD
 
-       include the SPI value, current date/time, Local Address, Remote
 
-       Address, and the selectors from the relevant SAD entry.
 
-     o Anti-Replay Window: a 64-bit counter and a bit-map (or equivalent)
 
-       used to determine whether an inbound AH or ESP packet is a replay.
 
-       Note: If anti-replay has been disabled by the receiver for an SA,
 
-       e.g., in the case of a manually keyed SA, then the Anti-Replay
 
-       Window is ignored for the SA in question. 64-bit sequence numbers
 
-       are the default, but this counter size accommodates 32-bit
 
-       sequence numbers as well.
 
-     o AH Authentication algorithm, key, etc.  This is required only if
 
-       AH is supported.
 
- Kent & Seo                  Standards Track                    [Page 36]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-     o ESP Encryption algorithm, key, mode, IV, etc.  If a combined mode
 
-       algorithm is used, these fields will not be applicable.
 
-     o ESP integrity algorithm, keys, etc.  If the integrity service is
 
-       not selected, these fields will not be applicable.  If a combined
 
-       mode algorithm is used, these fields will not be applicable.
 
-     o ESP combined mode algorithms, key(s), etc.  This data is used when
 
-       a combined mode (encryption and integrity) algorithm is used with
 
-       ESP.  If a combined mode algorithm is not used, these fields are
 
-       not applicable.
 
-     o Lifetime of this SA: a time interval after which an SA must be
 
-       replaced with a new SA (and new SPI) or terminated, plus an
 
-       indication of which of these actions should occur.  This may be
 
-       expressed as a time or byte count, or a simultaneous use of both
 
-       with the first lifetime to expire taking precedence.  A compliant
 
-       implementation MUST support both types of lifetimes, and MUST
 
-       support a simultaneous use of both.  If time is employed, and if
 
-       IKE employs X.509 certificates for SA establishment, the SA
 
-       lifetime must be constrained by the validity intervals of the
 
-       certificates, and the NextIssueDate of the Certificate Revocation
 
-       Lists (CRLs) used in the IKE exchange for the SA.  Both initiator
 
-       and responder are responsible for constraining the SA lifetime in
 
-       this fashion.  Note: The details of how to handle the refreshing
 
-       of keys when SAs expire is a local matter.  However, one
 
-       reasonable approach is:
 
-      (a) If byte count is used, then the implementation SHOULD count the
 
-          number of bytes to which the IPsec cryptographic algorithm is
 
-          applied.  For ESP, this is the encryption algorithm (including
 
-          Null encryption) and for AH, this is the authentication
 
-          algorithm.  This includes pad bytes, etc.  Note that
 
-          implementations MUST be able to handle having the counters at
 
-          the ends of an SA get out of synch, e.g., because of packet
 
-          loss or because the implementations at each end of the SA
 
-          aren't doing things the same way.
 
-      (b) There SHOULD be two kinds of lifetime -- a soft lifetime that
 
-          warns the implementation to initiate action such as setting up
 
-          a replacement SA, and a hard lifetime when the current SA ends
 
-          and is destroyed.
 
-      (c) If the entire packet does not get delivered during the SA's
 
-          lifetime, the packet SHOULD be discarded.
 
-     o IPsec protocol mode: tunnel or transport.  Indicates which mode of
 
-       AH or ESP is applied to traffic on this SA.
 
- Kent & Seo                  Standards Track                    [Page 37]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-     o Stateful fragment checking flag.  Indicates whether or not
 
-       stateful fragment checking applies to this SA.
 
-     o Bypass DF bit (T/F) -- applicable to tunnel mode SAs where both
 
-       inner and outer headers are IPv4.
 
-     o DSCP values -- the set of DSCP values allowed for packets carried
 
-       over this SA.  If no values are specified, no DSCP-specific
 
-       filtering is applied.  If one or more values are specified, these
 
-       are used to select one SA among several that match the traffic
 
-       selectors for an outbound packet.  Note that these values are NOT
 
-       checked against inbound traffic arriving on the SA.
 
-     o Bypass DSCP (T/F) or map to unprotected DSCP values (array) if
 
-       needed to restrict bypass of DSCP values -- applicable to tunnel
 
-       mode SAs.  This feature maps DSCP values from an inner header to
 
-       values in an outer header, e.g., to address covert channel
 
-       signaling concerns.
 
-     o Path MTU: any observed path MTU and aging variables.
 
-     o Tunnel header IP source and destination address -- both addresses
 
-       must be either IPv4 or IPv6 addresses.  The version implies the
 
-       type of IP header to be used.  Only used when the IPsec protocol
 
-       mode is tunnel.
 
- 4.4.2.2.  Relationship between SPD, PFP flag, packet, and SAD
 
-       For each selector, the following tables show the relationship
 
-       between the value in the SPD, the PFP flag, the value in the
 
-       triggering packet, and the resulting value in the SAD.  Note that
 
-       the administrative interface for IPsec can use various syntactic
 
-       options to make it easier for the administrator to enter rules.
 
-       For example, although a list of ranges is what IKEv2 sends, it
 
-       might be clearer and less error prone for the user to enter a
 
-       single IP address or IP address prefix.
 
- Kent & Seo                  Standards Track                    [Page 38]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-                                         Value in
 
-                                         Triggering   Resulting SAD
 
-          Selector  SPD Entry        PFP Packet       Entry
 
-          --------  ---------------- --- ------------ --------------
 
-          loc addr  list of ranges    0  IP addr "S"  list of ranges
 
-                    ANY               0  IP addr "S"  ANY
 
-                    list of ranges    1  IP addr "S"  "S"
 
-                    ANY               1  IP addr "S"  "S"
 
-          rem addr  list of ranges    0  IP addr "D"  list of ranges
 
-                    ANY               0  IP addr "D"  ANY
 
-                    list of ranges    1  IP addr "D"  "D"
 
-                    ANY               1  IP addr "D"  "D"
 
-          protocol  list of prot's*   0  prot. "P"    list of prot's*
 
-                    ANY**             0  prot. "P"    ANY
 
-                    OPAQUE****        0  prot. "P"    OPAQUE
 
-                    list of prot's*   0  not avail.   discard packet
 
-                    ANY**             0  not avail.   ANY
 
-                    OPAQUE****        0  not avail.   OPAQUE
 
-                    list of prot's*   1  prot. "P"    "P"
 
-                    ANY**             1  prot. "P"    "P"
 
-                    OPAQUE****        1  prot. "P"    ***
 
-                    list of prot's*   1  not avail.   discard packet
 
-                    ANY**             1  not avail.   discard packet
 
-                    OPAQUE****        1  not avail.   ***
 
- Kent & Seo                  Standards Track                    [Page 39]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       If the protocol is one that has two ports, then there will be
 
-       selectors for both Local and Remote ports.
 
-                                         Value in
 
-                                         Triggering   Resulting SAD
 
-          Selector  SPD Entry        PFP Packet       Entry
 
-          --------  ---------------- --- ------------ --------------
 
-          loc port  list of ranges    0  src port "s" list of ranges
 
-                    ANY               0  src port "s" ANY
 
-                    OPAQUE            0  src port "s" OPAQUE
 
-                    list of ranges    0  not avail.   discard packet
 
-                    ANY               0  not avail.   ANY
 
-                    OPAQUE            0  not avail.   OPAQUE
 
-                    list of ranges    1  src port "s" "s"
 
-                    ANY               1  src port "s" "s"
 
-                    OPAQUE            1  src port "s" ***
 
-                    list of ranges    1  not avail.   discard packet
 
-                    ANY               1  not avail.   discard packet
 
-                    OPAQUE            1  not avail.   ***
 
-          rem port  list of ranges    0  dst port "d" list of ranges
 
-                    ANY               0  dst port "d" ANY
 
-                    OPAQUE            0  dst port "d" OPAQUE
 
-                    list of ranges    0  not avail.   discard packet
 
-                    ANY               0  not avail.   ANY
 
-                    OPAQUE            0  not avail.   OPAQUE
 
-                    list of ranges    1  dst port "d" "d"
 
-                    ANY               1  dst port "d" "d"
 
-                    OPAQUE            1  dst port "d" ***
 
-                    list of ranges    1  not avail.   discard packet
 
-                    ANY               1  not avail.   discard packet
 
-                    OPAQUE            1  not avail.   ***
 
- Kent & Seo                  Standards Track                    [Page 40]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       If the protocol is mobility header, then there will be a selector
 
-       for mh type.
 
-                                         Value in
 
-                                         Triggering   Resulting SAD
 
-          Selector  SPD Entry        PFP Packet       Entry
 
-          --------  ---------------- --- ------------ --------------
 
-          mh type   list of ranges    0  mh type "T"  list of ranges
 
-                    ANY               0  mh type "T"  ANY
 
-                    OPAQUE            0  mh type "T"  OPAQUE
 
-                    list of ranges    0  not avail.   discard packet
 
-                    ANY               0  not avail.   ANY
 
-                    OPAQUE            0  not avail.   OPAQUE
 
-                    list of ranges    1  mh type "T"  "T"
 
-                    ANY               1  mh type "T"  "T"
 
-                    OPAQUE            1  mh type "T"  ***
 
-                    list of ranges    1  not avail.   discard packet
 
-                    ANY               1  not avail.   discard packet
 
-                    OPAQUE            1  not avail.   ***
 
- Kent & Seo                  Standards Track                    [Page 41]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       If the protocol is ICMP, then there will be a 16-bit selector for
 
-       ICMP type and ICMP code.  Note that the type and code are bound to
 
-       each other, i.e., the codes apply to the particular type.  This
 
-       16-bit selector can contain a single type and a range of codes, a
 
-       single type and ANY code, and ANY type and ANY code.
 
-                                          Value in
 
-                                          Triggering   Resulting SAD
 
-          Selector   SPD Entry        PFP Packet       Entry
 
-          ---------  ---------------- --- ------------ --------------
 
-          ICMP type  a single type &   0  type "t" &   single type &
 
-          and code    range of codes        code "c"    range of codes
 
-                     a single type &   0  type "t" &   single type &
 
-                      ANY code              code "c"    ANY code
 
-                     ANY type & ANY    0  type "t" &   ANY type &
 
-                      code                  code "c"    ANY code
 
-                     OPAQUE            0  type "t" &   OPAQUE
 
-                                            code "c"
 
-                     a single type &   0  not avail.   discard packet
 
-                      range of codes
 
-                     a single type &   0  not avail.   discard packet
 
-                      ANY code
 
-                     ANY type &        0  not avail.   ANY type &
 
-                      ANY code                          ANY code
 
-                     OPAQUE            0  not avail.   OPAQUE
 
-                     a single type &   1  type "t" &   "t" and "c"
 
-                      range of codes        code "c"
 
-                     a single type &   1  type "t" &   "t" and "c"
 
-                      ANY code              code "c"
 
-                     ANY type &        1  type "t" &   "t" and "c"
 
-                      ANY code              code "c"
 
-                     OPAQUE            1  type "t" &   ***
 
-                                            code "c"
 
-                     a single type &   1  not avail.   discard packet
 
-                      range of codes
 
-                     a single type &   1  not avail.   discard packet
 
-                      ANY code
 
-                     ANY type &        1  not avail.   discard packet
 
-                      ANY code
 
-                     OPAQUE            1  not avail.   ***
 
- Kent & Seo                  Standards Track                    [Page 42]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       If the name selector is used:
 
-                                          Value in
 
-                                          Triggering   Resulting SAD
 
-          Selector   SPD Entry        PFP Packet       Entry
 
-          ---------  ---------------- --- ------------ --------------
 
-          name       list of user or  N/A     N/A           N/A
 
-                     system names
 
-             * "List of protocols" is the information, not the way
 
-               that the SPD or SAD or IKEv2 have to represent this
 
-               information.
 
-            ** 0 (zero) is used by IKE to indicate ANY for
 
-               protocol.
 
-           *** Use of PFP=1 with an OPAQUE value is an error and
 
-               SHOULD be prohibited by an IPsec implementation.
 
-          **** The protocol field cannot be OPAQUE in IPv4.  This
 
-               table entry applies only to IPv6.
 
- 4.4.3.  Peer Authorization Database (PAD)
 
-    The Peer Authorization Database (PAD) provides the link between the
 
-    SPD and a security association management protocol such as IKE.  It
 
-    embodies several critical functions:
 
-         o identifies the peers or groups of peers that are authorized
 
-           to communicate with this IPsec entity
 
-         o specifies the protocol and method used to authenticate each
 
-           peer
 
-         o provides the authentication data for each peer
 
-         o constrains the types and values of IDs that can be asserted
 
-           by a peer with regard to child SA creation, to ensure that the
 
-           peer does not assert identities for lookup in the SPD that it
 
-           is not authorized to represent, when child SAs are created
 
-         o peer gateway location info, e.g., IP address(es) or DNS names,
 
-           MAY be included for peers that are known to be "behind" a
 
-           security gateway
 
-    The PAD provides these functions for an IKE peer when the peer acts
 
-    as either the initiator or the responder.
 
-    To perform these functions, the PAD contains an entry for each peer
 
-    or group of peers with which the IPsec entity will communicate.  An
 
-    entry names an individual peer (a user, end system or security
 
-    gateway) or specifies a group of peers (using ID matching rules
 
-    defined below).  The entry specifies the authentication protocol
 
-    (e.g., IKEv1, IKEv2, KINK) method used (e.g., certificates or pre-
 
-    shared secrets) and the authentication data (e.g., the pre-shared
 
- Kent & Seo                  Standards Track                    [Page 43]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    secret or the trust anchor relative to which the peer's certificate
 
-    will be validated).  For certificate-based authentication, the entry
 
-    also may provide information to assist in verifying the revocation
 
-    status of the peer, e.g., a pointer to a CRL repository or the name
 
-    of an Online Certificate Status Protocol (OCSP) server associated
 
-    with the peer or with the trust anchor associated with the peer.
 
-    Each entry also specifies whether the IKE ID payload will be used as
 
-    a symbolic name for SPD lookup, or whether the remote IP address
 
-    provided in traffic selector payloads will be used for SPD lookups
 
-    when child SAs are created.
 
-    Note that the PAD information MAY be used to support creation of more
 
-    than one tunnel mode SA at a time between two peers, e.g., two
 
-    tunnels to protect the same addresses/hosts, but with different
 
-    tunnel endpoints.
 
- 4.4.3.1.  PAD Entry IDs and Matching Rules
 
-    The PAD is an ordered database, where the order is defined by an
 
-    administrator (or a user in the case of a single-user end system).
 
-    Usually, the same administrator will be responsible for both the PAD
 
-    and SPD, since the two databases must be coordinated.  The ordering
 
-    requirement for the PAD arises for the same reason as for the SPD,
 
-    i.e., because use of "star name" entries allows for overlaps in the
 
-    set of IKE IDs that could match a specific entry.
 
-    Six types of IDs are supported for entries in the PAD, consistent
 
-    with the symbolic name types and IP addresses used to identify SPD
 
-    entries.  The ID for each entry acts as the index for the PAD, i.e.,
 
-    it is the value used to select an entry.  All of these ID types can
 
-    be used to match IKE ID payload types.  The six types are:
 
-            o DNS name (specific or partial)
 
-            o Distinguished Name (complete or sub-tree constrained)
 
-            o RFC 822 email address (complete or partially qualified)
 
-            o IPv4 address (range)
 
-            o IPv6 address (range)
 
-            o Key ID (exact match only)
 
-    The first three name types can accommodate sub-tree matching as well
 
-    as exact matches.  A DNS name may be fully qualified and thus match
 
-    exactly one name, e.g., foo.example.com.  Alternatively, the name may
 
-    encompass a group of peers by being partially specified, e.g., the
 
-    string ".example.com" could be used to match any DNS name ending in
 
-    these two domain name components.
 
- Kent & Seo                  Standards Track                    [Page 44]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    Similarly, a Distinguished Name may specify a complete Distinguished
 
-    Name to match exactly one entry, e.g., CN = Stephen, O = BBN
 
-    Technologies, SP = MA, C = US.  Alternatively, an entry may encompass
 
-    a group of peers by specifying a sub-tree, e.g., an entry of the form
 
-    "C = US, SP = MA" might be used to match all DNs that contain these
 
-    two attributes as the top two Relative Distinguished Names (RDNs).
 
-    For an RFC 822 e-mail addresses, the same options exist.  A complete
 
-    address such as foo@example.com matches one entity, but a sub-tree
 
-    name such as "@example.com" could be used to match all the entities
 
-    with names ending in those two domain names to the right of the @.
 
-    The specific syntax used by an implementation to accommodate sub-tree
 
-    matching for distinguished names, domain names or RFC 822 e-mail
 
-    addresses is a local matter.  But, at a minimum, sub-tree matching of
 
-    the sort described above MUST be supported. (Substring matching
 
-    within a DN, DNS name, or RFC 822 address MAY be supported, but is
 
-    not required.)
 
-    For IPv4 and IPv6 addresses, the same address range syntax used for
 
-    SPD entries MUST be supported.  This allows specification of an
 
-    individual address (via a trivial range), an address prefix (by
 
-    choosing a range that adheres to Classless Inter-Domain Routing
 
-    (CIDR)-style prefixes), or an arbitrary address range.
 
-    The Key ID field is defined as an OCTET string in IKE.  For this name
 
-    type, only exact-match syntax MUST be supported (since there is no
 
-    explicit structure for this ID type).  Additional matching functions
 
-    MAY be supported for this ID type.
 
- 4.4.3.2.  IKE Peer Authentication Data
 
-    Once an entry is located based on an ordered search of the PAD based
 
-    on ID field matching, it is necessary to verify the asserted
 
-    identity, i.e., to authenticate the asserted ID.  For each PAD entry,
 
-    there is an indication of the type of authentication to be performed.
 
-    This document requires support for two required authentication data
 
-    types:
 
-         - X.509 certificate
 
-         - pre-shared secret
 
-    For authentication based on an X.509 certificate, the PAD entry
 
-    contains a trust anchor via which the end entity (EE) certificate for
 
-    the peer must be verifiable, either directly or via a certificate
 
-    path.  See RFC 3280 for the definition of a trust anchor.  An entry
 
-    used with certificate-based authentication MAY include additional
 
-    data to facilitate certificate revocation status, e.g., a list of
 
- Kent & Seo                  Standards Track                    [Page 45]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    appropriate OCSP responders or CRL repositories, and associated
 
-    authentication data.  For authentication based on a pre-shared
 
-    secret, the PAD contains the pre-shared secret to be used by IKE.
 
-    This document does not require that the IKE ID asserted by a peer be
 
-    syntactically related to a specific field in an end entity
 
-    certificate that is employed to authenticate the identity of that
 
-    peer.  However, it often will be appropriate to impose such a
 
-    requirement, e.g., when a single entry represents a set of peers each
 
-    of whom may have a distinct SPD entry.  Thus, implementations MUST
 
-    provide a means for an administrator to require a match between an
 
-    asserted IKE ID and the subject name or subject alt name in a
 
-    certificate.  The former is applicable to IKE IDs expressed as
 
-    distinguished names; the latter is appropriate for DNS names, RFC 822
 
-    e-mail addresses, and IP addresses.  Since KEY ID is intended for
 
-    identifying a peer authenticated via a pre-shared secret, there is no
 
-    requirement to match this ID type to a certificate field.
 
-    See IKEv1 [HarCar98] and IKEv2 [Kau05] for details of how IKE
 
-    performs peer authentication using certificates or pre-shared
 
-    secrets.
 
-    This document does not mandate support for any other authentication
 
-    methods, although such methods MAY be employed.
 
- 4.4.3.3.  Child SA Authorization Data
 
-    Once an IKE peer is authenticated, child SAs may be created.  Each
 
-    PAD entry contains data to constrain the set of IDs that can be
 
-    asserted by an IKE peer, for matching against the SPD.  Each PAD
 
-    entry indicates whether the IKE ID is to be used as a symbolic name
 
-    for SPD matching, or whether an IP address asserted in a traffic
 
-    selector payload is to be used.
 
-    If the entry indicates that the IKE ID is to be used, then the PAD
 
-    entry ID field defines the authorized set of IDs.  If the entry
 
-    indicates that child SAs traffic selectors are to be used, then an
 
-    additional data element is required, in the form of IPv4 and/or IPv6
 
-    address ranges. (A peer may be authorized for both address types, so
 
-    there MUST be provision for both a v4 and a v6 address range.)
 
- 4.4.3.4.  How the PAD Is Used
 
-    During the initial IKE exchange, the initiator and responder each
 
-    assert their identity via the IKE ID payload and send an AUTH payload
 
-    to verify the asserted identity.  One or more CERT payloads may be
 
-    transmitted to facilitate the verification of each asserted identity.
 
- Kent & Seo                  Standards Track                    [Page 46]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    When an IKE entity receives an IKE ID payload, it uses the asserted
 
-    ID to locate an entry in the PAD, using the matching rules described
 
-    above.  The PAD entry specifies the authentication method to be
 
-    employed for the identified peer.  This ensures that the right method
 
-    is used for each peer and that different methods can be used for
 
-    different peers.  The entry also specifies the authentication data
 
-    that will be used to verify the asserted identity.  This data is
 
-    employed in conjunction with the specified method to authenticate the
 
-    peer, before any CHILD SAs are created.
 
-    Child SAs are created based on the exchange of traffic selector
 
-    payloads, either at the end of the initial IKE exchange or in
 
-    subsequent CREATE_CHILD_SA exchanges.  The PAD entry for the (now
 
-    authenticated) IKE peer is used to constrain creation of child SAs;
 
-    specifically, the PAD entry specifies how the SPD is searched using a
 
-    traffic selector proposal from a peer.  There are two choices: either
 
-    the IKE ID asserted by the peer is used to find an SPD entry via its
 
-    symbolic name, or peer IP addresses asserted in traffic selector
 
-    payloads are used for SPD lookups based on the remote IP address
 
-    field portion of an SPD entry.  It is necessary to impose these
 
-    constraints on creation of child SAs to prevent an authenticated peer
 
-    from spoofing IDs associated with other, legitimate peers.
 
-    Note that because the PAD is checked before searching for an SPD
 
-    entry, this safeguard protects an initiator against spoofing attacks.
 
-    For example, assume that IKE A receives an outbound packet destined
 
-    for IP address X, a host served by a security gateway.  RFC 2401
 
-    [RFC2401] and this document do not specify how A determines the
 
-    address of the IKE peer serving X.  However, any peer contacted by A
 
-    as the presumed representative for X must be registered in the PAD in
 
-    order to allow the IKE exchange to be authenticated.  Moreover, when
 
-    the authenticated peer asserts that it represents X in its traffic
 
-    selector exchange, the PAD will be consulted to determine if the peer
 
-    in question is authorized to represent X.  Thus, the PAD provides a
 
-    binding of address ranges (or name sub-spaces) to peers, to counter
 
-    such attacks.
 
- 4.5.  SA and Key Management
 
-    All IPsec implementations MUST support both manual and automated SA
 
-    and cryptographic key management.  The IPsec protocols, AH and ESP,
 
-    are largely independent of the associated SA management techniques,
 
-    although the techniques involved do affect some of the security
 
-    services offered by the protocols.  For example, the optional
 
-    anti-replay service available for AH and ESP requires automated SA
 
-    management.  Moreover, the granularity of key distribution employed
 
-    with IPsec determines the granularity of authentication provided.  In
 
-    general, data origin authentication in AH and ESP is limited by the
 
- Kent & Seo                  Standards Track                    [Page 47]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    extent to which secrets used with the integrity algorithm (or with a
 
-    key management protocol that creates such secrets) are shared among
 
-    multiple possible sources.
 
-    The following text describes the minimum requirements for both types
 
-    of SA management.
 
- 4.5.1.  Manual Techniques
 
-    The simplest form of management is manual management, in which a
 
-    person manually configures each system with keying material and SA
 
-    management data relevant to secure communication with other systems.
 
-    Manual techniques are practical in small, static environments but
 
-    they do not scale well.  For example, a company could create a
 
-    virtual private network (VPN) using IPsec in security gateways at
 
-    several sites.  If the number of sites is small, and since all the
 
-    sites come under the purview of a single administrative domain, this
 
-    might be a feasible context for manual management techniques.  In
 
-    this case, the security gateway might selectively protect traffic to
 
-    and from other sites within the organization using a manually
 
-    configured key, while not protecting traffic for other destinations.
 
-    It also might be appropriate when only selected communications need
 
-    to be secured.  A similar argument might apply to use of IPsec
 
-    entirely within an organization for a small number of hosts and/or
 
-    gateways.  Manual management techniques often employ statically
 
-    configured, symmetric keys, though other options also exist.
 
- 4.5.2.  Automated SA and Key Management
 
-    Widespread deployment and use of IPsec requires an Internet-standard,
 
-    scalable, automated, SA management protocol.  Such support is
 
-    required to facilitate use of the anti-replay features of AH and ESP,
 
-    and to accommodate on-demand creation of SAs, e.g., for user- and
 
-    session-oriented keying.  (Note that the notion of "rekeying" an SA
 
-    actually implies creation of a new SA with a new SPI, a process that
 
-    generally implies use of an automated SA/key management protocol.)
 
-    The default automated key management protocol selected for use with
 
-    IPsec is IKEv2 [Kau05].  This document assumes the availability of
 
-    certain functions from the key management protocol that are not
 
-    supported by IKEv1.  Other automated SA management protocols MAY be
 
-    employed.
 
-    When an automated SA/key management protocol is employed, the output
 
-    from this protocol is used to generate multiple keys for a single SA.
 
-    This also occurs because distinct keys are used for each of the two
 
- Kent & Seo                  Standards Track                    [Page 48]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    SAs created by IKE.  If both integrity and confidentiality are
 
-    employed, then a minimum of four keys are required.  Additionally,
 
-    some cryptographic algorithms may require multiple keys, e.g., 3DES.
 
-    The Key Management System may provide a separate string of bits for
 
-    each key or it may generate one string of bits from which all keys
 
-    are extracted.  If a single string of bits is provided, care needs to
 
-    be taken to ensure that the parts of the system that map the string
 
-    of bits to the required keys do so in the same fashion at both ends
 
-    of the SA.  To ensure that the IPsec implementations at each end of
 
-    the SA use the same bits for the same keys, and irrespective of which
 
-    part of the system divides the string of bits into individual keys,
 
-    the encryption keys MUST be taken from the first (left-most,
 
-    high-order) bits and the integrity keys MUST be taken from the
 
-    remaining bits.  The number of bits for each key is defined in the
 
-    relevant cryptographic algorithm specification RFC.  In the case of
 
-    multiple encryption keys or multiple integrity keys, the
 
-    specification for the cryptographic algorithm must specify the order
 
-    in which they are to be selected from a single string of bits
 
-    provided to the cryptographic algorithm.
 
- 4.5.3.  Locating a Security Gateway
 
-    This section discusses issues relating to how a host learns about the
 
-    existence of relevant security gateways and, once a host has
 
-    contacted these security gateways, how it knows that these are the
 
-    correct security gateways.  The details of where the required
 
-    information is stored is a local matter, but the Peer Authorization
 
-    Database (PAD) described in Section 4.4 is the most likely candidate.
 
-    (Note: S* indicates a system that is running IPsec, e.g., SH1 and SG2
 
-    below.)
 
-    Consider a situation in which a remote host (SH1) is using the
 
-    Internet to gain access to a server or other machine (H2) and there
 
-    is a security gateway (SG2), e.g., a firewall, through which H1's
 
-    traffic must pass.  An example of this situation would be a mobile
 
-    host crossing the Internet to his home organization's firewall (SG2).
 
-    This situation raises several issues:
 
-    1. How does SH1 know/learn about the existence of the security
 
-       gateway SG2?
 
-    2. How does it authenticate SG2, and once it has authenticated SG2,
 
-       how does it confirm that SG2 has been authorized to represent H2?
 
-    3. How does SG2 authenticate SH1 and verify that SH1 is authorized to
 
-       contact H2?
 
- Kent & Seo                  Standards Track                    [Page 49]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    4. How does SH1 know/learn about any additional gateways that provide
 
-       alternate paths to H2?
 
-    To address these problems, an IPsec-supporting host or security
 
-    gateway MUST have an administrative interface that allows the
 
-    user/administrator to configure the address of one or more security
 
-    gateways for ranges of destination addresses that require its use.
 
-    This includes the ability to configure information for locating and
 
-    authenticating one or more security gateways and verifying the
 
-    authorization of these gateways to represent the destination host.
 
-    (The authorization function is implied in the PAD.) This document
 
-    does not address the issue of how to automate the
 
-    discovery/verification of security gateways.
 
- 4.6.  SAs and Multicast
 
-    The receiver-orientation of the SA implies that, in the case of
 
-    unicast traffic, the destination system will select the SPI value.
 
-    By having the destination select the SPI value, there is no potential
 
-    for manually configured SAs to conflict with automatically configured
 
-    (e.g., via a key management protocol) SAs or for SAs from multiple
 
-    sources to conflict with each other.  For multicast traffic, there
 
-    are multiple destination systems associated with a single SA.  So
 
-    some system or person will need to coordinate among all multicast
 
-    groups to select an SPI or SPIs on behalf of each multicast group and
 
-    then communicate the group's IPsec information to all of the
 
-    legitimate members of that multicast group via mechanisms not defined
 
-    here.
 
-    Multiple senders to a multicast group SHOULD use a single Security
 
-    Association (and hence SPI) for all traffic to that group when a
 
-    symmetric key encryption or integrity algorithm is employed.  In such
 
-    circumstances, the receiver knows only that the message came from a
 
-    system possessing the key for that multicast group.  In such
 
-    circumstances, a receiver generally will not be able to authenticate
 
-    which system sent the multicast traffic.  Specifications for other,
 
-    more general multicast approaches are deferred to the IETF Multicast
 
-    Security Working Group.
 
- 5.  IP Traffic Processing
 
-    As mentioned in Section 4.4.1, "The Security Policy Database (SPD)",
 
-    the SPD (or associated caches) MUST be consulted during the
 
-    processing of all traffic that crosses the IPsec protection boundary,
 
-    including IPsec management traffic.  If no policy is found in the SPD
 
-    that matches a packet (for either inbound or outbound traffic), the
 
-    packet MUST be discarded.  To simplify processing, and to allow for
 
-    very fast SA lookups (for SG/BITS/BITW), this document introduces the
 
- Kent & Seo                  Standards Track                    [Page 50]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    notion of an SPD cache for all outbound traffic (SPD-O plus SPD-S),
 
-    and a cache for inbound, non-IPsec-protected traffic (SPD-I).  (As
 
-    mentioned earlier, the SAD acts as a cache for checking the selectors
 
-    of inbound IPsec-protected traffic arriving on SAs.) There is
 
-    nominally one cache per SPD.  For the purposes of this specification,
 
-    it is assumed that each cached entry will map to exactly one SA.
 
-    Note, however, exceptions arise when one uses multiple SAs to carry
 
-    traffic of different priorities (e.g., as indicated by distinct DSCP
 
-    values) but the same selectors.  Note also, that there are a couple
 
-    of situations in which the SAD can have entries for SAs that do not
 
-    have corresponding entries in the SPD.  Since this document does not
 
-    mandate that the SAD be selectively cleared when the SPD is changed,
 
-    SAD entries can remain when the SPD entries that created them are
 
-    changed or deleted.  Also, if a manually keyed SA is created, there
 
-    could be an SAD entry for this SA that does not correspond to any SPD
 
-    entry.
 
-    Since SPD entries may overlap, one cannot safely cache these entries
 
-    in general.  Simple caching might result in a match against a cache
 
-    entry, whereas an ordered search of the SPD would have resulted in a
 
-    match against a different entry.  But, if the SPD entries are first
 
-    decorrelated, then the resulting entries can safely be cached.  Each
 
-    cached entry will indicate that matching traffic should be bypassed
 
-    or discarded, appropriately. (Note: The original SPD entry might
 
-    result in multiple SAs, e.g., because of PFP.) Unless otherwise
 
-    noted, all references below to the "SPD" or "SPD cache" or "cache"
 
-    are to a decorrelated SPD (SPD-I, SPD-O, SPD-S) or the SPD cache
 
-    containing entries from the decorrelated SPD.
 
-    Note: In a host IPsec implementation based on sockets, the SPD will
 
-    be consulted whenever a new socket is created to determine what, if
 
-    any, IPsec processing will be applied to the traffic that will flow
 
-    on that socket.  This provides an implicit caching mechanism, and the
 
-    portions of the preceding discussion that address caching can be
 
-    ignored in such implementations.
 
-    Note: It is assumed that one starts with a correlated SPD because
 
-    that is how users and administrators are accustomed to managing these
 
-    sorts of access control lists or firewall filter rules.  Then the
 
-    decorrelation algorithm is applied to build a list of cache-able SPD
 
-    entries.  The decorrelation is invisible at the management interface.
 
-    For inbound IPsec traffic, the SAD entry selected by the SPI serves
 
-    as the cache for the selectors to be matched against arriving IPsec
 
-    packets, after AH or ESP processing has been performed.
 
- Kent & Seo                  Standards Track                    [Page 51]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- 5.1.  Outbound IP Traffic Processing (protected-to-unprotected)
 
-    First consider the path for traffic entering the implementation via a
 
-    protected interface and exiting via an unprotected interface.
 
-                           Unprotected Interface
 
-                                    ^
 
-                                    |
 
-             (nested SAs)      +----------+
 
-            -------------------|Forwarding|<-----+
 
-            |                  +----------+      |
 
-            |                        ^           |
 
-            |                        | BYPASS    |
 
-            V                     +-----+        |
 
-        +-------+                 | SPD |     +--------+
 
-     ...| SPD-I |.................|Cache|.....|PROCESS |...IPsec
 
-        |  (*)  |                 | (*) |---->|(AH/ESP)|   boundary
 
-        +-------+                 +-----+     +--------+
 
-            |        +-------+     /  ^
 
-            |        |DISCARD| <--/   |
 
-            |        +-------+        |
 
-            |                         |
 
-            |                 +-------------+
 
-            |---------------->|SPD Selection|
 
-                              +-------------+
 
-                                     ^
 
-                                     |     +------+
 
-                                     |  -->| ICMP |
 
-                                     | /   +------+
 
-                                     |/
 
-                                     |
 
-                                     |
 
-                             Protected Interface
 
-          Figure 2.  Processing Model for Outbound Traffic
 
-                     (*) = The SPD caches are shown here.  If there
 
-                           is a cache miss, then the SPD is checked.
 
-                           There is no requirement that an
 
-                           implementation buffer the packet if
 
-                           there is a cache miss.
 
- Kent & Seo                  Standards Track                    [Page 52]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    IPsec MUST perform the following steps when processing outbound
 
-    packets:
 
-    1.  When a packet arrives from the subscriber (protected) interface,
 
-        invoke the SPD selection function to obtain the SPD-ID needed to
 
-        choose the appropriate SPD. (If the implementation uses only one
 
-        SPD, this step is a no-op.)
 
-    2.  Match the packet headers against the cache for the SPD specified
 
-        by the SPD-ID from step 1.  Note that this cache contains entries
 
-        from SPD-O and SPD-S.
 
-    3a. If there is a match, then process the packet as specified by the
 
-        matching cache entry, i.e., BYPASS, DISCARD, or PROTECT using AH
 
-        or ESP.  If IPsec processing is applied, there is a link from the
 
-        SPD cache entry to the relevant SAD entry (specifying the mode,
 
-        cryptographic algorithms, keys, SPI, PMTU, etc.).  IPsec
 
-        processing is as previously defined, for tunnel or transport
 
-        modes and for AH or ESP, as specified in their respective RFCs
 
-        [Ken05b, Ken05a].  Note that the SA PMTU value, plus the value of
 
-        the stateful fragment checking flag (and the DF bit in the IP
 
-        header of the outbound packet) determine whether the packet can
 
-        (must) be fragmented prior to or after IPsec processing, or if it
 
-        must be discarded and an ICMP PMTU message is sent.
 
-    3b. If no match is found in the cache, search the SPD (SPD-S and
 
-        SPD-O parts) specified by SPD-ID.  If the SPD entry calls for
 
-        BYPASS or DISCARD, create one or more new outbound SPD cache
 
-        entries and if BYPASS, create one or more new inbound SPD cache
 
-        entries. (More than one cache entry may be created since a
 
-        decorrelated SPD entry may be linked to other such entries that
 
-        were created as a side effect of the decorrelation process.) If
 
-        the SPD entry calls for PROTECT, i.e., creation of an SA, the key
 
-        management mechanism (e.g., IKEv2) is invoked to create the SA.
 
-        If SA creation succeeds, a new outbound (SPD-S) cache entry is
 
-        created, along with outbound and inbound SAD entries, otherwise
 
-        the packet is discarded. (A packet that triggers an SPD lookup
 
-        MAY be discarded by the implementation, or it MAY be processed
 
-        against the newly created cache entry, if one is created.)  Since
 
-        SAs are created in pairs, an SAD entry for the corresponding
 
-        inbound SA also is created, and it contains the selector values
 
-        derived from the SPD entry (and packet, if any PFP flags were
 
-        "true") used to create the inbound SA, for use in checking
 
-        inbound traffic delivered via the SA.
 
-    4.  The packet is passed to the outbound forwarding function
 
-        (operating outside of the IPsec implementation), to select the
 
-        interface to which the packet will be directed.  This function
 
- Kent & Seo                  Standards Track                    [Page 53]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-        may cause the packet to be passed back across the IPsec boundary,
 
-        for additional IPsec processing, e.g., in support of nested SAs.
 
-        If so, there MUST be an entry in SPD-I database that permits
 
-        inbound bypassing of the packet, otherwise the packet will be
 
-        discarded.  If necessary, i.e., if there is more than one SPD-I,
 
-        the traffic being looped back MAY be tagged as coming from this
 
-        internal interface.  This would allow the use of a different
 
-        SPD-I for "real" external traffic vs. looped traffic, if needed.
 
-    Note: With the exception of IPv4 and IPv6 transport mode, an SG,
 
-    BITS, or BITW implementation MAY fragment packets before applying
 
-    IPsec. (This applies only to IPv4.  For IPv6 packets, only the
 
-    originator is allowed to fragment them.) The device SHOULD have a
 
-    configuration setting to disable this.  The resulting fragments are
 
-    evaluated against the SPD in the normal manner.  Thus, fragments not
 
-    containing port numbers (or ICMP message type and code, or Mobility
 
-    Header type) will only match rules having port (or ICMP message type
 
-    and code, or MH type) selectors of OPAQUE or ANY. (See Section 7 for
 
-    more details.)
 
-    Note: With regard to determining and enforcing the PMTU of an SA, the
 
-    IPsec system MUST follow the steps described in Section 8.2.
 
- 5.1.1.  Handling an Outbound Packet That Must Be Discarded
 
-    If an IPsec system receives an outbound packet that it finds it must
 
-    discard, it SHOULD be capable of generating and sending an ICMP
 
-    message to indicate to the sender of the outbound packet that the
 
-    packet was discarded.  The type and code of the ICMP message will
 
-    depend on the reason for discarding the packet, as specified below.
 
-    The reason SHOULD be recorded in the audit log.  The audit log entry
 
-    for this event SHOULD include the reason, current date/time, and the
 
-    selector values from the packet.
 
-    a.  The selectors of the packet matched an SPD entry requiring the
 
-        packet to be discarded.
 
-            IPv4 Type = 3 (destination unreachable) Code = 13
 
-                 (Communication Administratively Prohibited)
 
-            IPv6 Type = 1 (destination unreachable) Code = 1
 
-                 (Communication with destination administratively
 
-                 prohibited)
 
-    b1. The IPsec system successfully reached the remote peer but was
 
-        unable to negotiate the SA required by the SPD entry matching the
 
-        packet because, for example, the remote peer is administratively
 
-        prohibited from communicating with the initiator, the initiating
 
- Kent & Seo                  Standards Track                    [Page 54]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-        peer was unable to authenticate itself to the remote peer, the
 
-        remote peer was unable to authenticate itself to the initiating
 
-        peer, or the SPD at the remote peer did not have a suitable
 
-        entry.
 
-            IPv4 Type = 3 (destination unreachable) Code = 13
 
-                 (Communication Administratively Prohibited)
 
-            IPv6 Type = 1 (destination unreachable) Code = 1
 
-                 (Communication with destination administratively
 
-                 prohibited)
 
-    b2. The IPsec system was unable to set up the SA required by the SPD
 
-        entry matching the packet because the IPsec peer at the other end
 
-        of the exchange could not be contacted.
 
-            IPv4 Type = 3 (destination unreachable) Code = 1 (host
 
-                 unreachable)
 
-            IPv6 Type = 1 (destination unreachable) Code = 3 (address
 
-                 unreachable)
 
-    Note that an attacker behind a security gateway could send packets
 
-    with a spoofed source address, W.X.Y.Z, to an IPsec entity causing it
 
-    to send ICMP messages to W.X.Y.Z.  This creates an opportunity for a
 
-    denial of service (DoS) attack among hosts behind a security gateway.
 
-    To address this, a security gateway SHOULD include a management
 
-    control to allow an administrator to configure an IPsec
 
-    implementation to send or not send the ICMP messages under these
 
-    circumstances, and if this facility is selected, to rate limit the
 
-    transmission of such ICMP responses.
 
- 5.1.2.  Header Construction for Tunnel Mode
 
-    This section describes the handling of the inner and outer IP
 
-    headers, extension headers, and options for AH and ESP tunnels, with
 
-    regard to outbound traffic processing.  This includes how to
 
-    construct the encapsulating (outer) IP header, how to process fields
 
-    in the inner IP header, and what other actions should be taken for
 
-    outbound, tunnel mode traffic.  The general processing described here
 
-    is modeled after RFC 2003, "IP Encapsulation within IP" [Per96]:
 
-     o The outer IP header Source Address and Destination Address
 
-       identify the "endpoints" of the tunnel (the encapsulator and
 
-       decapsulator).  The inner IP header Source Address and Destination
 
-       Addresses identify the original sender and recipient of the
 
-       datagram (from the perspective of this tunnel), respectively.
 
- Kent & Seo                  Standards Track                    [Page 55]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       (See footnote 3 after the table in 5.1.2.1 for more details on the
 
-       encapsulating source IP address.)
 
-     o The inner IP header is not changed except as noted below for TTL
 
-       (or Hop Limit) and the DS/ECN Fields.  The inner IP header
 
-       otherwise remains unchanged during its delivery to the tunnel exit
 
-       point.
 
-     o No change to IP options or extension headers in the inner header
 
-       occurs during delivery of the encapsulated datagram through the
 
-       tunnel.
 
-    Note: IPsec tunnel mode is different from IP-in-IP tunneling (RFC
 
-    2003 [Per96]) in several ways:
 
-     o IPsec offers certain controls to a security administrator to
 
-       manage covert channels (which would not normally be a concern for
 
-       tunneling) and to ensure that the receiver examines the right
 
-       portions of the received packet with respect to application of
 
-       access controls.  An IPsec implementation MAY be configurable with
 
-       regard to how it processes the outer DS field for tunnel mode for
 
-       transmitted packets.  For outbound traffic, one configuration
 
-       setting for the outer DS field will operate as described in the
 
-       following sections on IPv4 and IPv6 header processing for IPsec
 
-       tunnels.  Another will allow the outer DS field to be mapped to a
 
-       fixed value, which MAY be configured on a per-SA basis. (The value
 
-       might really be fixed for all traffic outbound from a device, but
 
-       per-SA granularity allows that as well.) This configuration option
 
-       allows a local administrator to decide whether the covert channel
 
-       provided by copying these bits outweighs the benefits of copying.
 
-     o IPsec describes how to handle ECN or DS and provides the ability
 
-       to control propagation of changes in these fields between
 
-       unprotected and protected domains.  In general, propagation from a
 
-       protected to an unprotected domain is a covert channel and thus
 
-       controls are provided to manage the bandwidth of this channel.
 
-       Propagation of ECN values in the other direction are controlled so
 
-       that only legitimate ECN changes (indicating occurrence of
 
-       congestion between the tunnel endpoints) are propagated.  By
 
-       default, DS propagation from an unprotected domain to a protected
 
-       domain is not permitted.  However, if the sender and receiver do
 
-       not share the same DS code space, and the receiver has no way of
 
-       learning how to map between the two spaces, then it may be
 
-       appropriate to deviate from the default.  Specifically, an IPsec
 
-       implementation MAY be configurable in terms of how it processes
 
-       the outer DS field for tunnel mode for received packets.  It may
 
-       be configured to either discard the outer DS value (the default)
 
-       OR to overwrite the inner DS field with the outer DS field.  If
 
- Kent & Seo                  Standards Track                    [Page 56]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       offered, the discard vs. overwrite behavior MAY be configured on a
 
-       per-SA basis.  This configuration option allows a local
 
-       administrator to decide whether the vulnerabilities created by
 
-       copying these bits outweigh the benefits of copying.  See
 
-       [RFC2983] for further information on when each of these behaviors
 
-       may be useful, and also for the possible need for diffserv traffic
 
-       conditioning prior or subsequent to IPsec processing (including
 
-       tunnel decapsulation).
 
-     o IPsec allows the IP version of the encapsulating header to be
 
-       different from that of the inner header.
 
-    The tables in the following sub-sections show the handling for the
 
-    different header/option fields ("constructed" means that the value in
 
-    the outer field is constructed independently of the value in the
 
-    inner).
 
- 5.1.2.1.  IPv4: Header Construction for Tunnel Mode
 
-                          <-- How Outer Hdr Relates to Inner Hdr -->
 
-                          Outer Hdr at                 Inner Hdr at
 
-     IPv4                 Encapsulator                 Decapsulator
 
-       Header fields:     --------------------         ------------
 
-         version          4 (1)                        no change
 
-         header length    constructed                  no change
 
-         DS Field         copied from inner hdr (5)    no change
 
-         ECN Field        copied from inner hdr        constructed (6)
 
-         total length     constructed                  no change
 
-         ID               constructed                  no change
 
-         flags (DF,MF)    constructed, DF (4)          no change
 
-         fragment offset  constructed                  no change
 
-         TTL              constructed (2)              decrement (2)
 
-         protocol         AH, ESP                      no change
 
-         checksum         constructed                  constructed (2)(6)
 
-         src address      constructed (3)              no change
 
-         dest address     constructed (3)              no change
 
-       Options            never copied                 no change
 
-     Notes:
 
-       (1) The IP version in the encapsulating header can be different
 
-           from the value in the inner header.
 
-       (2) The TTL in the inner header is decremented by the encapsulator
 
-           prior to forwarding and by the decapsulator if it forwards the
 
-           packet.  (The IPv4 checksum changes when the TTL changes.)
 
- Kent & Seo                  Standards Track                    [Page 57]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-           Note: Decrementing the TTL value is a normal part of
 
-           forwarding a packet.  Thus, a packet originating from the same
 
-           node as the encapsulator does not have its TTL decremented,
 
-           since the sending node is originating the packet rather than
 
-           forwarding it.  This applies to BITS and native IPsec
 
-           implementations in hosts and routers.  However, the IPsec
 
-           processing model includes an external forwarding capability.
 
-           TTL processing can be used to prevent looping of packets,
 
-           e.g., due to configuration errors, within the context of this
 
-           processing model.
 
-       (3) Local and Remote addresses depend on the SA, which is used to
 
-           determine the Remote address, which in turn determines which
 
-           Local address (net interface) is used to forward the packet.
 
-           Note: For multicast traffic, the destination address, or
 
-           source and destination addresses, may be required for
 
-           demuxing.  In that case, it is important to ensure consistency
 
-           over the lifetime of the SA by ensuring that the source
 
-           address that appears in the encapsulating tunnel header is the
 
-           same as the one that was negotiated during the SA
 
-           establishment process.  There is an exception to this general
 
-           rule, i.e., a mobile IPsec implementation will update its
 
-           source address as it moves.
 
-       (4) Configuration determines whether to copy from the inner header
 
-           (IPv4 only), clear, or set the DF.
 
-       (5) If the packet will immediately enter a domain for which the
 
-           DSCP value in the outer header is not appropriate, that value
 
-           MUST be mapped to an appropriate value for the domain
 
-           [NiBlBaBL98].  See RFC 2475 [BBCDWW98] for further
 
-           information.
 
-       (6) If the ECN field in the inner header is set to ECT(0) or
 
-           ECT(1), where ECT is ECN-Capable Transport (ECT), and if the
 
-           ECN field in the outer header is set to Congestion Experienced
 
-           (CE), then set the ECN field in the inner header to CE;
 
-           otherwise, make no change to the ECN field in the inner
 
-           header.  (The IPv4 checksum changes when the ECN changes.)
 
-    Note: IPsec does not copy the options from the inner header into the
 
-    outer header, nor does IPsec construct the options in the outer
 
-    header.  However, post-IPsec code MAY insert/construct options for
 
-    the outer header.
 
- Kent & Seo                  Standards Track                    [Page 58]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- 5.1.2.2.  IPv6: Header Construction for Tunnel Mode
 
-                          <-- How Outer Hdr  Relates Inner Hdr --->
 
-                          Outer Hdr at                 Inner Hdr at
 
-     IPv6                 Encapsulator                 Decapsulator
 
-       Header fields:     --------------------         ------------
 
-         version          6 (1)                        no change
 
-         DS Field         copied from inner hdr (5)    no change (9)
 
-         ECN Field        copied from inner hdr        constructed (6)
 
-         flow label       copied or configured (8)     no change
 
-         payload length   constructed                  no change
 
-         next header      AH,ESP,routing hdr           no change
 
-         hop limit        constructed (2)              decrement (2)
 
-         src address      constructed (3)              no change
 
-         dest address     constructed (3)              no change
 
-       Extension headers  never copied (7)             no change
 
-     Notes:
 
-       (1) - (6) See Section 5.1.2.1.
 
-       (7) IPsec does not copy the extension headers from the inner
 
-           packet into outer headers, nor does IPsec construct extension
 
-           headers in the outer header.  However, post-IPsec code MAY
 
-           insert/construct extension headers for the outer header.
 
-       (8) See [RaCoCaDe04].  Copying is acceptable only for end systems,
 
-           not SGs.  If an SG copied flow labels from the inner header to
 
-           the outer header, collisions might result.
 
-       (9) An implementation MAY choose to provide a facility to pass the
 
-           DS value from the outer header to the inner header, on a per-
 
-           SA basis, for received tunnel mode packets.  The motivation
 
-           for providing this feature is to accommodate situations in
 
-           which the DS code space at the receiver is different from that
 
-           of the sender and the receiver has no way of knowing how to
 
-           translate from the sender's space.  There is a danger in
 
-           copying this value from the outer header to the inner header,
 
-           since it enables an attacker to modify the outer DSCP value in
 
-           a fashion that may adversely affect other traffic at the
 
-           receiver.  Hence the default behavior for IPsec
 
-           implementations is NOT to permit such copying.
 
- 5.2.  Processing Inbound IP Traffic (unprotected-to-protected)
 
-    Inbound processing is somewhat different from outbound processing,
 
-    because of the use of SPIs to map IPsec-protected traffic to SAs.
 
-    The inbound SPD cache (SPD-I) is applied only to bypassed or
 
- Kent & Seo                  Standards Track                    [Page 59]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    discarded traffic.  If an arriving packet appears to be an IPsec
 
-    fragment from an unprotected interface, reassembly is performed prior
 
-    to IPsec processing.  The intent for any SPD cache is that a packet
 
-    that fails to match any entry is then referred to the corresponding
 
-    SPD.  Every SPD SHOULD have a nominal, final entry that catches
 
-    anything that is otherwise unmatched, and discards it.  This ensures
 
-    that non-IPsec-protected traffic that arrives and does not match any
 
-    SPD-I entry will be discarded.
 
-                       Unprotected Interface
 
-                                 |
 
-                                 V
 
-                              +-----+   IPsec protected
 
-          ------------------->|Demux|-------------------+
 
-          |                   +-----+                   |
 
-          |                      |                      |
 
-          |            Not IPsec |                      |
 
-          |                      |                      |
 
-          |                      V                      |
 
-          |     +-------+    +---------+                |
 
-          |     |DISCARD|<---|SPD-I (*)|                |
 
-          |     +-------+    +---------+                |
 
-          |                   |                         |
 
-          |                   |-----+                   |
 
-          |                   |     |                   |
 
-          |                   |     V                   |
 
-          |                   |  +------+               |
 
-          |                   |  | ICMP |               |
 
-          |                   |  +------+               |
 
-          |                   |                         V
 
-       +---------+            |                   +-----------+
 
-   ....|SPD-O (*)|............|...................|PROCESS(**)|...IPsec
 
-       +---------+            |                   | (AH/ESP)  | Boundary
 
-          ^                   |                   +-----------+
 
-          |                   |       +---+             |
 
-          |            BYPASS |   +-->|IKE|             |
 
-          |                   |   |   +---+             |
 
-          |                   V   |                     V
 
-          |               +----------+          +---------+   +----+
 
-          |--------<------|Forwarding|<---------|SAD Check|-->|ICMP|
 
-            nested SAs    +----------+          | (***)   |   +----+
 
-                                |               +---------+
 
-                                V
 
-                        Protected Interface
 
-             Figure 3.  Processing Model for Inbound Traffic
 
- Kent & Seo                  Standards Track                    [Page 60]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-                        (*) = The caches are shown here.  If there is
 
-                              a cache miss, then the SPD is checked.
 
-                              There is no requirement that an
 
-                              implementation buffer the packet if
 
-                              there is a cache miss.
 
-                       (**) = This processing includes using the
 
-                              packet's SPI, etc., to look up the SA
 
-                              in the SAD, which forms a cache of the
 
-                              SPD for inbound packets (except for
 
-                              cases noted in Sections 4.4.2 and 5).
 
-                              See step 3a below.
 
-                      (***) = This SAD check refers to step 4 below.
 
-    Prior to performing AH or ESP processing, any IP fragments that
 
-    arrive via the unprotected interface are reassembled (by IP).  Each
 
-    inbound IP datagram to which IPsec processing will be applied is
 
-    identified by the appearance of the AH or ESP values in the IP Next
 
-    Protocol field (or of AH or ESP as a next layer protocol in the IPv6
 
-    context).
 
-    IPsec MUST perform the following steps:
 
-    1.  When a packet arrives, it may be tagged with the ID of the
 
-        interface (physical or virtual) via which it arrived, if
 
-        necessary, to support multiple SPDs and associated SPD-I caches.
 
-        (The interface ID is mapped to a corresponding SPD-ID.)
 
-    2.  The packet is examined and demuxed into one of two categories:
 
-        - If the packet appears to be IPsec protected and it is addressed
 
-          to this device, an attempt is made to map it to an active SA
 
-          via the SAD.  Note that the device may have multiple IP
 
-          addresses that may be used in the SAD lookup, e.g., in the case
 
-          of protocols such as SCTP.
 
-        - Traffic not addressed to this device, or addressed to this
 
-          device and not AH or ESP, is directed to SPD-I lookup. (This
 
-          implies that IKE traffic MUST have an explicit BYPASS entry in
 
-          the SPD.) If multiple SPDs are employed, the tag assigned to
 
-          the packet in step 1 is used to select the appropriate SPD-I
 
-          (and cache) to search.  SPD-I lookup determines whether the
 
-          action is DISCARD or BYPASS.
 
-    3a. If the packet is addressed to the IPsec device and AH or ESP is
 
-        specified as the protocol, the packet is looked up in the SAD.
 
-        For unicast traffic, use only the SPI (or SPI plus protocol).
 
-        For multicast traffic, use the SPI plus the destination or SPI
 
-        plus destination and source addresses, as specified in Section
 
-        4.1. In either case (unicast or multicast), if there is no match,
 
-        discard the traffic.  This is an auditable event.  The audit log
 
- Kent & Seo                  Standards Track                    [Page 61]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-        entry for this event SHOULD include the current date/time, SPI,
 
-        source and destination of the packet, IPsec protocol, and any
 
-        other selector values of the packet that are available.  If the
 
-        packet is found in the SAD, process it accordingly (see step 4).
 
-    3b. If the packet is not addressed to the device or is addressed to
 
-        this device and is not AH or ESP, look up the packet header in
 
-        the (appropriate) SPD-I cache.  If there is a match and the
 
-        packet is to be discarded or bypassed, do so.  If there is no
 
-        cache match, look up the packet in the corresponding SPD-I and
 
-        create a cache entry as appropriate. (No SAs are created in
 
-        response to receipt of a packet that requires IPsec protection;
 
-        only BYPASS or DISCARD cache entries can be created this way.) If
 
-        there is no match, discard the traffic.  This is an auditable
 
-        event.  The audit log entry for this event SHOULD include the
 
-        current date/time, SPI if available, IPsec protocol if available,
 
-        source and destination of the packet, and any other selector
 
-        values of the packet that are available.
 
-    3c. Processing of ICMP messages is assumed to take place on the
 
-        unprotected side of the IPsec boundary.  Unprotected ICMP
 
-        messages are examined and local policy is applied to determine
 
-        whether to accept or reject these messages and, if accepted, what
 
-        action to take as a result.  For example, if an ICMP unreachable
 
-        message is received, the implementation must decide whether to
 
-        act on it, reject it, or act on it with constraints. (See Section
 
-        6.)
 
-    4.  Apply AH or ESP processing as specified, using the SAD entry
 
-        selected in step 3a above.  Then match the packet against the
 
-        inbound selectors identified by the SAD entry to verify that the
 
-        received packet is appropriate for the SA via which it was
 
-        received.
 
-    5.  If an IPsec system receives an inbound packet on an SA and the
 
-        packet's header fields are not consistent with the selectors for
 
-        the SA, it MUST discard the packet.  This is an auditable event.
 
-        The audit log entry for this event SHOULD include the current
 
-        date/time, SPI, IPsec protocol(s), source and destination of the
 
-        packet, any other selector values of the packet that are
 
-        available, and the selector values from the relevant SAD entry.
 
-        The system SHOULD also be capable of generating and sending an
 
-        IKE notification of INVALID_SELECTORS to the sender (IPsec peer),
 
-        indicating that the received packet was discarded because of
 
-        failure to pass selector checks.
 
- Kent & Seo                  Standards Track                    [Page 62]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    To minimize the impact of a DoS attack, or a mis-configured peer, the
 
-    IPsec system SHOULD include a management control to allow an
 
-    administrator to configure the IPsec implementation to send or not
 
-    send this IKE notification, and if this facility is selected, to rate
 
-    limit the transmission of such notifications.
 
-    After traffic is bypassed or processed through IPsec, it is handed to
 
-    the inbound forwarding function for disposition.  This function may
 
-    cause the packet to be sent (outbound) across the IPsec boundary for
 
-    additional inbound IPsec processing, e.g., in support of nested SAs.
 
-    If so, then as with ALL outbound traffic that is to be bypassed, the
 
-    packet MUST be matched against an SPD-O entry.  Ultimately, the
 
-    packet should be forwarded to the destination host or process for
 
-    disposition.
 
- 6.  ICMP Processing
 
-    This section describes IPsec handling of ICMP traffic.  There are two
 
-    categories of ICMP traffic: error messages (e.g., type = destination
 
-    unreachable) and non-error messages (e.g., type = echo).  This
 
-    section applies exclusively to error messages.  Disposition of
 
-    non-error, ICMP messages (that are not addressed to the IPsec
 
-    implementation itself) MUST be explicitly accounted for using SPD
 
-    entries.
 
-    The discussion in this section applies to ICMPv6 as well as to
 
-    ICMPv4.  Also, a mechanism SHOULD be provided to allow an
 
-    administrator to cause ICMP error messages (selected, all, or none)
 
-    to be logged as an aid to problem diagnosis.
 
- 6.1.  Processing ICMP Error Messages Directed to an IPsec Implementation
 
- 6.1.1.  ICMP Error Messages Received on the Unprotected Side of the
 
-         Boundary
 
-    Figure 3 in Section 5.2 shows a distinct ICMP processing module on
 
-    the unprotected side of the IPsec boundary, for processing ICMP
 
-    messages (error or otherwise) that are addressed to the IPsec device
 
-    and that are not protected via AH or ESP.  An ICMP message of this
 
-    sort is unauthenticated, and its processing may result in denial or
 
-    degradation of service.  This suggests that, in general, it would be
 
-    desirable to ignore such messages.  However, many ICMP messages will
 
-    be received by hosts or security gateways from unauthenticated
 
-    sources, e.g., routers in the public Internet.  Ignoring these ICMP
 
-    messages can degrade service, e.g., because of a failure to process
 
-    PMTU message and redirection messages.  Thus, there is also a
 
-    motivation for accepting and acting upon unauthenticated ICMP
 
-    messages.
 
- Kent & Seo                  Standards Track                    [Page 63]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    To accommodate both ends of this spectrum, a compliant IPsec
 
-    implementation MUST permit a local administrator to configure an
 
-    IPsec implementation to accept or reject unauthenticated ICMP
 
-    traffic.  This control MUST be at the granularity of ICMP type and
 
-    MAY be at the granularity of ICMP type and code.  Additionally, an
 
-    implementation SHOULD incorporate mechanisms and parameters for
 
-    dealing with such traffic.  For example, there could be the ability
 
-    to establish a minimum PMTU for traffic (on a per destination basis),
 
-    to prevent receipt of an unauthenticated ICMP from setting the PMTU
 
-    to a trivial size.
 
-    If an ICMP PMTU message passes the checks above and the system is
 
-    configured to accept it, then there are two possibilities.  If the
 
-    implementation applies fragmentation on the ciphertext side of the
 
-    boundary, then the accepted PMTU information is passed to the
 
-    forwarding module (outside of the IPsec implementation), which uses
 
-    it to manage outbound packet fragmentation.  If the implementation is
 
-    configured to effect plaintext side fragmentation, then the PMTU
 
-    information is passed to the plaintext side and processed as
 
-    described in Section 8.2.
 
- 6.1.2.  ICMP Error Messages Received on the Protected Side of the
 
-         Boundary
 
-    These ICMP messages are not authenticated, but they do come from
 
-    sources on the protected side of the IPsec boundary.  Thus, these
 
-    messages generally are viewed as more "trustworthy" than their
 
-    counterparts arriving from sources on the unprotected side of the
 
-    boundary.  The major security concern here is that a compromised host
 
-    or router might emit erroneous ICMP error messages that could degrade
 
-    service for other devices "behind" the security gateway, or that
 
-    could even result in violations of confidentiality.  For example, if
 
-    a bogus ICMP redirect were consumed by a security gateway, it could
 
-    cause the forwarding table on the protected side of the boundary to
 
-    be modified so as to deliver traffic to an inappropriate destination
 
-    "behind" the gateway.  Thus, implementers MUST provide controls to
 
-    allow local administrators to constrain the processing of ICMP error
 
-    messages received on the protected side of the boundary, and directed
 
-    to the IPsec implementation.  These controls are of the same type as
 
-    those employed on the unprotected side, described above in Section
 
-    6.1.1.
 
- 6.2.  Processing Protected, Transit ICMP Error Messages
 
-    When an ICMP error message is transmitted via an SA to a device
 
-    "behind" an IPsec implementation, both the payload and the header of
 
-    the ICMP message require checking from an access control perspective.
 
-    If one of these messages is forwarded to a host behind a security
 
- Kent & Seo                  Standards Track                    [Page 64]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    gateway, the receiving host IP implementation will make decisions
 
-    based on the payload, i.e., the header of the packet that purportedly
 
-    triggered the error response.  Thus, an IPsec implementation MUST be
 
-    configurable to check that this payload header information is
 
-    consistent with the SA via which it arrives. (This means that the
 
-    payload header, with source and destination address and port fields
 
-    reversed, matches the traffic selectors for the SA.) If this sort of
 
-    check is not performed, then, for example, anyone with whom the
 
-    receiving IPsec system (A) has an active SA could send an ICMP
 
-    Destination Unreachable message that refers to any host/net with
 
-    which A is currently communicating, and thus effect a highly
 
-    efficient DoS attack regarding communication with other peers of A.
 
-    Normal IPsec receiver processing of traffic is not sufficient to
 
-    protect against such attacks.  However, not all contexts may require
 
-    such checks, so it is also necessary to allow a local administrator
 
-    to configure an implementation to NOT perform such checks.
 
-    To accommodate both policies, the following convention is adopted.
 
-    If an administrator wants to allow ICMP error messages to be carried
 
-    by an SA without inspection of the payload, then configure an SPD
 
-    entry that explicitly allows for carriage of such traffic.  If an
 
-    administrator wants IPsec to check the payload of ICMP error messages
 
-    for consistency, then do not create any SPD entries that accommodate
 
-    carriage of such traffic based on the ICMP packet header.  This
 
-    convention motivates the following processing description.
 
-    IPsec senders and receivers MUST support the following processing for
 
-    ICMP error messages that are sent and received via SAs.
 
-    If an SA exists that accommodates an outbound ICMP error message,
 
-    then the message is mapped to the SA and only the IP and ICMP headers
 
-    are checked upon receipt, just as would be the case for other
 
-    traffic.  If no SA exists that matches the traffic selectors
 
-    associated with an ICMP error message, then the SPD is searched to
 
-    determine if such an SA can be created.  If so, the SA is created and
 
-    the ICMP error message is transmitted via that SA.  Upon receipt,
 
-    this message is subject to the usual traffic selector checks at the
 
-    receiver.  This processing is exactly what would happen for traffic
 
-    in general, and thus does not represent any special processing for
 
-    ICMP error messages.
 
-    If no SA exists that would carry the outbound ICMP message in
 
-    question, and if no SPD entry would allow carriage of this outbound
 
-    ICMP error message, then an IPsec implementation MUST map the message
 
-    to the SA that would carry the return traffic associated with the
 
-    packet that triggered the ICMP error message.  This requires an IPsec
 
-    implementation to detect outbound ICMP error messages that map to no
 
-    extant SA or SPD entry, and treat them specially with regard to SA
 
- Kent & Seo                  Standards Track                    [Page 65]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    creation and lookup.  The implementation extracts the header for the
 
-    packet that triggered the error (from the ICMP message payload),
 
-    reverses the source and destination IP address fields, extracts the
 
-    protocol field, and reverses the port fields (if accessible).  It
 
-    then uses this extracted information to locate an appropriate, active
 
-    outbound SA, and transmits the error message via this SA.  If no such
 
-    SA exists, no SA will be created, and this is an auditable event.
 
-    If an IPsec implementation receives an inbound ICMP error message on
 
-    an SA, and the IP and ICMP headers of the message do not match the
 
-    traffic selectors for the SA, the receiver MUST process the received
 
-    message in a special fashion.  Specifically, the receiver must
 
-    extract the header of the triggering packet from the ICMP payload,
 
-    and reverse fields as described above to determine if the packet is
 
-    consistent with the selectors for the SA via which the ICMP error
 
-    message was received.  If the packet fails this check, the IPsec
 
-    implementation MUST NOT forwarded the ICMP message to the
 
-    destination.  This is an auditable event.
 
- 7.  Handling Fragments (on the protected side of the IPsec boundary)
 
-    Earlier sections of this document describe mechanisms for (a)
 
-    fragmenting an outbound packet after IPsec processing has been
 
-    applied and reassembling it at the receiver before IPsec processing
 
-    and (b) handling inbound fragments received from the unprotected side
 
-    of the IPsec boundary.  This section describes how an implementation
 
-    should handle the processing of outbound plaintext fragments on the
 
-    protected side of the IPsec boundary. (See Appendix D, "Fragment
 
-    Handling Rationale".) In particular, it addresses:
 
-         o mapping an outbound non-initial fragment to the right SA
 
-           (or finding the right SPD entry)
 
-         o verifying that a received non-initial fragment is
 
-           authorized for the SA via which it was received
 
-         o mapping outbound and inbound non-initial fragments to the
 
-           right SPD-O/SPD-I entry or the relevant cache entry, for
 
-           BYPASS/DISCARD traffic
 
-    Note: In Section 4.1, transport mode SAs have been defined to not
 
-    carry fragments (IPv4 or IPv6).  Note also that in Section 4.4.1, two
 
-    special values, ANY and OPAQUE, were defined for selectors and that
 
-    ANY includes OPAQUE.  The term "non-trivial" is used to mean that the
 
-    selector has a value other than OPAQUE or ANY.
 
-    Note: The term "non-initial fragment" is used here to indicate a
 
-    fragment that does not contain all the selector values that may be
 
-    needed for access control.  As observed in Section 4.4.1, depending
 
-    on the Next Layer Protocol, in addition to Ports, the ICMP message
 
- Kent & Seo                  Standards Track                    [Page 66]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    type/code or Mobility Header type could be missing from non-initial
 
-    fragments.  Also, for IPv6, even the first fragment might NOT contain
 
-    the Next Layer Protocol or Ports (or ICMP message type/code, or
 
-    Mobility Header type) depending on the kind and number of extension
 
-    headers present.  If a non-initial fragment contains the Port (or
 
-    ICMP type and code or Mobility Header type) but not the Next Layer
 
-    Protocol, then unless there is an SPD entry for the relevant
 
-    Local/Remote addresses with ANY for Next Layer Protocol and Port (or
 
-    ICMP type and code or Mobility Header type), the fragment would not
 
-    contain all the selector information needed for access control.
 
-    To address the above issues, three approaches have been defined:
 
-        o Tunnel mode SAs that carry initial and non-initial fragments
 
-          (See Section 7.1.)
 
-        o Separate tunnel mode SAs for non-initial fragments (See
 
-          Section 7.2.)
 
-        o Stateful fragment checking (See Section 7.3.)
 
- 7.1.  Tunnel Mode SAs that Carry Initial and Non-Initial Fragments
 
-    All implementations MUST support tunnel mode SAs that are configured
 
-    to pass traffic without regard to port field (or ICMP type/code or
 
-    Mobility Header type) values.  If the SA will carry traffic for
 
-    specified protocols, the selector set for the SA MUST specify the
 
-    port fields (or ICMP type/code or Mobility Header type) as ANY.  An
 
-    SA defined in this fashion will carry all traffic including initial
 
-    and non-initial fragments for the indicated Local/Remote addresses
 
-    and specified Next Layer protocol(s).  If the SA will carry traffic
 
-    without regard to a specific protocol value (i.e., ANY is specified
 
-    as the (Next Layer) protocol selector value), then the port field
 
-    values are undefined and MUST be set to ANY as well. (As noted in
 
-    4.4.1, ANY includes OPAQUE as well as all specific values.)
 
- 7.2.  Separate Tunnel Mode SAs for Non-Initial Fragments
 
-    An implementation MAY support tunnel mode SAs that will carry only
 
-    non-initial fragments, separate from non-fragmented packets and
 
-    initial fragments.  The OPAQUE value will be used to specify port (or
 
-    ICMP type/code or Mobility Header type) field selectors for an SA to
 
-    carry such fragments.  Receivers MUST perform a minimum offset check
 
-    on IPv4 (non-initial) fragments to protect against overlapping
 
-    fragment attacks when SAs of this type are employed.  Because such
 
-    checks cannot be performed on IPv6 non-initial fragments, users and
 
-    administrators are advised that carriage of such fragments may be
 
-    dangerous, and implementers may choose to NOT support such SAs for
 
-    IPv6 traffic.  Also, an SA of this sort will carry all non-initial
 
-    fragments that match a specified Local/Remote address pair and
 
- Kent & Seo                  Standards Track                    [Page 67]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    protocol value, i.e., the fragments carried on this SA belong to
 
-    packets that if not fragmented, might have gone on separate SAs of
 
-    differing security.  Therefore, users and administrators are advised
 
-    to protect such traffic using ESP (with integrity) and the
 
-    "strongest" integrity and encryption algorithms in use between both
 
-    peers.  (Determination of the "strongest" algorithms requires
 
-    imposing an ordering of the available algorithms, a local
 
-    determination at the discretion of the initiator of the SA.)
 
-    Specific port (or ICMP type/code or Mobility Header type) selector
 
-    values will be used to define SAs to carry initial fragments and
 
-    non-fragmented packets.  This approach can be used if a user or
 
-    administrator wants to create one or more tunnel mode SAs between the
 
-    same Local/Remote addresses that discriminate based on port (or ICMP
 
-    type/code or Mobility Header type) fields.  These SAs MUST have
 
-    non-trivial protocol selector values, otherwise approach #1 above
 
-    MUST be used.
 
-    Note: In general, for the approach described in this section, one
 
-    needs only a single SA between two implementations to carry all
 
-    non-initial fragments.  However, if one chooses to have multiple SAs
 
-    between the two implementations for QoS differentiation, then one
 
-    might also want multiple SAs to carry fragments-without-ports, one
 
-    for each supported QoS class.  Since support for QoS via distinct SAs
 
-    is a local matter, not mandated by this document, the choice to have
 
-    multiple SAs to carry non-initial fragments should also be local.
 
- 7.3.  Stateful Fragment Checking
 
-    An implementation MAY support some form of stateful fragment checking
 
-    for a tunnel mode SA with non-trivial port (or ICMP type/code or MH
 
-    type) field values (not ANY or OPAQUE).  Implementations that will
 
-    transmit non-initial fragments on a tunnel mode SA that makes use of
 
-    non-trivial port (or ICMP type/code or MH type) selectors MUST notify
 
-    a peer via the IKE NOTIFY NON_FIRST_FRAGMENTS_ALSO payload.
 
-    The peer MUST reject this proposal if it will not accept non-initial
 
-    fragments in this context.  If an implementation does not
 
-    successfully negotiate transmission of non-initial fragments for such
 
-    an SA, it MUST NOT send such fragments over the SA.  This standard
 
-    does not specify how peers will deal with such fragments, e.g., via
 
-    reassembly or other means, at either sender or receiver.  However, a
 
-    receiver MUST discard non-initial fragments that arrive on an SA with
 
-    non-trivial port (or ICMP type/code or MH type) selector values
 
-    unless this feature has been negotiated.  Also, the receiver MUST
 
-    discard non-initial fragments that do not comply with the security
 
-    policy applied to the overall packet.  Discarding such packets is an
 
-    auditable event.  Note that in network configurations where fragments
 
- Kent & Seo                  Standards Track                    [Page 68]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    of a packet might be sent or received via different security gateways
 
-    or BITW implementations, stateful strategies for tracking fragments
 
-    may fail.
 
- 7.4.  BYPASS/DISCARD Traffic
 
-    All implementations MUST support DISCARDing of fragments using the
 
-    normal SPD packet classification mechanisms.  All implementations
 
-    MUST support stateful fragment checking to accommodate BYPASS traffic
 
-    for which a non-trivial port range is specified.  The concern is that
 
-    BYPASS of a cleartext, non-initial fragment arriving at an IPsec
 
-    implementation could undermine the security afforded IPsec-protected
 
-    traffic directed to the same destination.  For example, consider an
 
-    IPsec implementation configured with an SPD entry that calls for
 
-    IPsec protection of traffic between a specific source/destination
 
-    address pair, and for a specific protocol and destination port, e.g.,
 
-    TCP traffic on port 23 (Telnet).  Assume that the implementation also
 
-    allows BYPASS of traffic from the same source/destination address
 
-    pair and protocol, but for a different destination port, e.g., port
 
-    119 (NNTP).  An attacker could send a non-initial fragment (with a
 
-    forged source address) that, if bypassed, could overlap with
 
-    IPsec-protected traffic from the same source and thus violate the
 
-    integrity of the IPsec-protected traffic.  Requiring stateful
 
-    fragment checking for BYPASS entries with non-trivial port ranges
 
-    prevents attacks of this sort.  As noted above, in network
 
-    configurations where fragments of a packet might be sent or received
 
-    via different security gateways or BITW implementations, stateful
 
-    strategies for tracking fragments may fail.
 
- 8.  Path MTU/DF Processing
 
-    The application of AH or ESP to an outbound packet increases the size
 
-    of a packet and thus may cause a packet to exceed the PMTU for the SA
 
-    via which the packet will travel.  An IPsec implementation also may
 
-    receive an unprotected ICMP PMTU message and, if it chooses to act
 
-    upon the message, the result will affect outbound traffic processing.
 
-    This section describes the processing required of an IPsec
 
-    implementation to deal with these two PMTU issues.
 
- 8.1.  DF Bit
 
-    All IPsec implementations MUST support the option of copying the DF
 
-    bit from an outbound packet to the tunnel mode header that it emits,
 
-    when traffic is carried via a tunnel mode SA.  This means that it
 
-    MUST be possible to configure the implementation's treatment of the
 
-    DF bit (set, clear, copy from inner header) for each SA.  This
 
-    applies to SAs where both inner and outer headers are IPv4.
 
- Kent & Seo                  Standards Track                    [Page 69]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- 8.2.  Path MTU (PMTU) Discovery
 
-    This section discusses IPsec handling for unprotected Path MTU
 
-    Discovery messages.  ICMP PMTU is used here to refer to an ICMP
 
-    message for:
 
-            IPv4 (RFC 792 [Pos81b]):
 
-                    - Type = 3 (Destination Unreachable)
 
-                    - Code = 4 (Fragmentation needed and DF set)
 
-                    - Next-Hop MTU in the low-order 16 bits of the
 
-                      second word of the ICMP header (labeled "unused"
 
-                      in RFC 792), with high-order 16 bits set to zero)
 
-            IPv6 (RFC 2463 [CD98]):
 
-                    - Type = 2 (Packet Too Big)
 
-                    - Code = 0 (Fragmentation needed)
 
-                    - Next-Hop MTU in the 32-bit MTU field of the ICMP6
 
-                      message
 
- 8.2.1.  Propagation of PMTU
 
-    When an IPsec implementation receives an unauthenticated PMTU
 
-    message, and it is configured to process (vs. ignore) such messages,
 
-    it maps the message to the SA to which it corresponds.  This mapping
 
-    is effected by extracting the header information from the payload of
 
-    the PMTU message and applying the procedure described in Section 5.2.
 
-    The PMTU determined by this message is used to update the SAD PMTU
 
-    field, taking into account the size of the AH or ESP header that will
 
-    be applied, any crypto synchronization data, and the overhead imposed
 
-    by an additional IP header, in the case of a tunnel mode SA.
 
-    In a native host implementation, it is possible to maintain PMTU data
 
-    at the same granularity as for unprotected communication, so there is
 
-    no loss of functionality.  Signaling of the PMTU information is
 
-    internal to the host.  For all other IPsec implementation options,
 
-    the PMTU data must be propagated via a synthesized ICMP PMTU.  In
 
-    these cases, the IPsec implementation SHOULD wait for outbound
 
-    traffic to be mapped to the SAD entry.  When such traffic arrives, if
 
-    the traffic would exceed the updated PMTU value the traffic MUST be
 
-    handled as follows:
 
-        Case 1: Original (cleartext) packet is IPv4 and has the DF
 
-                bit set.  The implementation SHOULD discard the packet
 
-                and send a PMTU ICMP message.
 
- Kent & Seo                  Standards Track                    [Page 70]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-        Case 2: Original (cleartext) packet is IPv4 and has the DF
 
-                bit clear.  The implementation SHOULD fragment (before or
 
-                after encryption per its configuration) and then forward
 
-                the fragments.  It SHOULD NOT send a PMTU ICMP message.
 
-        Case 3: Original (cleartext) packet is IPv6.  The implementation
 
-                SHOULD discard the packet and send a PMTU ICMP message.
 
- 8.2.2.  PMTU Aging
 
-    In all IPsec implementations, the PMTU associated with an SA MUST be
 
-    "aged" and some mechanism is required to update the PMTU in a timely
 
-    manner, especially for discovering if the PMTU is smaller than
 
-    required by current network conditions.  A given PMTU has to remain
 
-    in place long enough for a packet to get from the source of the SA to
 
-    the peer, and to propagate an ICMP error message if the current PMTU
 
-    is too big.
 
-    Implementations SHOULD use the approach described in the Path MTU
 
-    Discovery document (RFC 1191 [MD90], Section 6.3), which suggests
 
-    periodically resetting the PMTU to the first-hop data-link MTU and
 
-    then letting the normal PMTU Discovery processes update the PMTU as
 
-    necessary.  The period SHOULD be configurable.
 
- 9.  Auditing
 
-    IPsec implementations are not required to support auditing.  For the
 
-    most part, the granularity of auditing is a local matter.  However,
 
-    several auditable events are identified in this document, and for
 
-    each of these events a minimum set of information that SHOULD be
 
-    included in an audit log is defined.  Additional information also MAY
 
-    be included in the audit log for each of these events, and additional
 
-    events, not explicitly called out in this specification, also MAY
 
-    result in audit log entries.  There is no requirement for the
 
-    receiver to transmit any message to the purported transmitter in
 
-    response to the detection of an auditable event, because of the
 
-    potential to induce denial of service via such action.
 
- 10.  Conformance Requirements
 
-    All IPv4 IPsec implementations MUST comply with all requirements of
 
-    this document.  All IPv6 implementations MUST comply with all
 
-    requirements of this document.
 
- Kent & Seo                  Standards Track                    [Page 71]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- 11.  Security Considerations
 
-    The focus of this document is security; hence security considerations
 
-    permeate this specification.
 
-    IPsec imposes stringent constraints on bypass of IP header data in
 
-    both directions, across the IPsec barrier, especially when tunnel
 
-    mode SAs are employed.  Some constraints are absolute, while others
 
-    are subject to local administrative controls, often on a per-SA
 
-    basis.  For outbound traffic, these constraints are designed to limit
 
-    covert channel bandwidth.  For inbound traffic, the constraints are
 
-    designed to prevent an adversary who has the ability to tamper with
 
-    one data stream (on the unprotected side of the IPsec barrier) from
 
-    adversely affecting other data streams (on the protected side of the
 
-    barrier).  The discussion in Section 5 dealing with processing DSCP
 
-    values for tunnel mode SAs illustrates this concern.
 
-    If an IPsec implementation is configured to pass ICMP error messages
 
-    over SAs based on the ICMP header values, without checking the header
 
-    information from the ICMP message payload, serious vulnerabilities
 
-    may arise.  Consider a scenario in which several sites (A, B, and C)
 
-    are connected to one another via ESP-protected tunnels: A-B, A-C, and
 
-    B-C.  Also assume that the traffic selectors for each tunnel specify
 
-    ANY for protocol and port fields and IP source/destination address
 
-    ranges that encompass the address range for the systems behind the
 
-    security gateways serving each site.  This would allow a host at site
 
-    B to send an ICMP Destination Unreachable message to any host at site
 
-    A, that declares all hosts on the net at site C to be unreachable.
 
-    This is a very efficient DoS attack that could have been prevented if
 
-    the ICMP error messages were subjected to the checks that IPsec
 
-    provides, if the SPD is suitably configured, as described in Section
 
-    6.2.
 
- 12.  IANA Considerations
 
-    The IANA has assigned the value (3) for the asn1-modules registry and
 
-    has assigned the object identifier 1.3.6.1.5.8.3.1 for the SPD
 
-    module.  See Appendix C, "ASN.1 for an SPD Entry".
 
- 13.  Differences from RFC 2401
 
-    This architecture document differs substantially from RFC 2401
 
-    [RFC2401] in detail and in organization, but the fundamental notions
 
-    are unchanged.
 
-    o The processing model has been revised to address new IPsec
 
-      scenarios, improve performance, and simplify implementation.  This
 
-      includes a separation between forwarding (routing) and SPD
 
- Kent & Seo                  Standards Track                    [Page 72]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-      selection, several SPD changes, and the addition of an outbound SPD
 
-      cache and an inbound SPD cache for bypassed or discarded traffic.
 
-      There is also a new database, the Peer Authorization Database
 
-      (PAD).  This provides a link between an SA management protocol
 
-      (such as IKE) and the SPD.
 
-    o There is no longer a requirement to support nested SAs or "SA
 
-      bundles".  Instead this functionality can be achieved through SPD
 
-      and forwarding table configuration.  An example of a configuration
 
-      has been added in Appendix E.
 
-    o SPD entries were redefined to provide more flexibility.  Each SPD
 
-      entry now consists of 1 to N sets of selectors, where each selector
 
-      set contains one protocol and a "list of ranges" can now be
 
-      specified for the Local IP address, Remote IP address, and whatever
 
-      fields (if any) are associated with the Next Layer Protocol (Local
 
-      Port, Remote Port, ICMP message type and code, and Mobility Header
 
-      type).  An individual value for a selector is represented via a
 
-      trivial range and ANY is represented via a range than spans all
 
-      values for the selector.  An example of an ASN.1 description is
 
-      included in Appendix C.
 
-    o TOS (IPv4) and Traffic Class (IPv6) have been replaced by DSCP and
 
-      ECN.  The tunnel section has been updated to explain how to handle
 
-      DSCP and ECN bits.
 
-    o For tunnel mode SAs, an SG, BITS, or BITW implementation is now
 
-      allowed to fragment packets before applying IPsec.  This applies
 
-      only to IPv4.  For IPv6 packets, only the originator is allowed to
 
-      fragment them.
 
-    o When security is desired between two intermediate systems along a
 
-      path or between an intermediate system and an end system, transport
 
-      mode may now be used between security gateways and between a
 
-      security gateway and a host.
 
-    o This document clarifies that for all traffic that crosses the IPsec
 
-      boundary, including IPsec management traffic, the SPD or associated
 
-      caches must be consulted.
 
-    o This document defines how to handle the situation of a security
 
-      gateway with multiple subscribers requiring separate IPsec
 
-      contexts.
 
-    o A definition of reserved SPIs has been added.
 
- Kent & Seo                  Standards Track                    [Page 73]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    o Text has been added explaining why ALL IP packets must be checked
 
-      -- IPsec includes minimal firewall functionality to support access
 
-      control at the IP layer.
 
-    o The tunnel section has been updated to clarify how to handle the IP
 
-      options field and IPv6 extension headers when constructing the
 
-      outer header.
 
-    o SA mapping for inbound traffic has been updated to be consistent
 
-      with the changes made in AH and ESP for support of unicast and
 
-      multicast SAs.
 
-    o Guidance has been added regarding how to handle the covert channel
 
-      created in tunnel mode by copying the DSCP value to outer header.
 
-    o Support for AH in both IPv4 and IPv6 is no longer required.
 
-    o PMTU handling has been updated.  The appendix on
 
-      PMTU/DF/Fragmentation has been deleted.
 
-    o Three approaches have been added for handling plaintext fragments
 
-      on the protected side of the IPsec boundary.  Appendix D documents
 
-      the rationale behind them.
 
-    o Added revised text describing how to derive selector values for SAs
 
-      (from the SPD entry or from the packet, etc.)
 
-    o Added a new table describing the relationship between selector
 
-      values in an SPD entry, the PFP flag, and resulting selector values
 
-      in the corresponding SAD entry.
 
-    o Added Appendix B to describe decorrelation.
 
-    o Added text describing how to handle an outbound packet that must be
 
-      discarded.
 
-    o Added text describing how to handle a DISCARDED inbound packet,
 
-      i.e., one that does not match the SA upon which it arrived.
 
-    o IPv6 mobility header has been added as a possible Next Layer
 
-      Protocol.  IPv6 Mobility Header message type has been added as a
 
-      selector.
 
-    o ICMP message type and code have been added as selectors.
 
-    o The selector "data sensitivity level" has been removed to simplify
 
-      things.
 
- Kent & Seo                  Standards Track                    [Page 74]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    o Updated text describing handling ICMP error messages.  The appendix
 
-      on "Categorization of ICMP Messages" has been deleted.
 
-    o The text for the selector name has been updated and clarified.
 
-    o The "Next Layer Protocol" has been further explained and a default
 
-      list of protocols to skip when looking for the Next Layer Protocol
 
-      has been added.
 
-    o The text has been amended to say that this document assumes use of
 
-      IKEv2 or an SA management protocol with comparable features.
 
-    o Text has been added clarifying the algorithm for mapping inbound
 
-      IPsec datagrams to SAs in the presence of multicast SAs.
 
-    o The appendix "Sequence Space Window Code Example" has been removed.
 
-    o With respect to IP addresses and ports, the terms "Local" and
 
-      "Remote" are used for policy rules (replacing source and
 
-      destination).  "Local" refers to the entity being protected by an
 
-      IPsec implementation, i.e., the "source" address/port of outbound
 
-      packets or the "destination" address/port of inbound packets.
 
-      "Remote" refers to a peer entity or peer entities.  The terms
 
-      "source" and "destination" are still used for packet header fields.
 
- 14.  Acknowledgements
 
-    The authors would like to acknowledge the contributions of Ran
 
-    Atkinson, who played a critical role in initial IPsec activities, and
 
-    who authored the first series of IPsec standards: RFCs 1825-1827; and
 
-    Charlie Lynn, who made significant contributions to the second series
 
-    of IPsec standards (RFCs 2401, 2402, and 2406) and to the current
 
-    versions, especially with regard to IPv6 issues.  The authors also
 
-    would like to thank the members of the IPsec and MSEC working groups
 
-    who have contributed to the development of this protocol
 
-    specification.
 
- Kent & Seo                  Standards Track                    [Page 75]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- Appendix A: Glossary
 
-    This section provides definitions for several key terms that are
 
-    employed in this document.  Other documents provide additional
 
-    definitions and background information relevant to this technology,
 
-    e.g., [Shi00], [VK83], and [HA94].  Included in this glossary are
 
-    generic security service and security mechanism terms, plus
 
-    IPsec-specific terms.
 
-    Access Control
 
-       A security service that prevents unauthorized use of a resource,
 
-       including the prevention of use of a resource in an unauthorized
 
-       manner.  In the IPsec context, the resource to which access is
 
-       being controlled is often:
 
-                o for a host, computing cycles or data
 
-                o for a security gateway, a network behind the gateway
 
-                  or bandwidth on that network.
 
-    Anti-replay
 
-       See "Integrity" below.
 
-    Authentication
 
-       Used informally to refer to the combination of two nominally
 
-       distinct security services, data origin authentication and
 
-       connectionless integrity.  See the definitions below for each of
 
-       these services.
 
-    Availability
 
-       When viewed as a security service, addresses the security concerns
 
-       engendered by attacks against networks that deny or degrade
 
-       service.  For example, in the IPsec context, the use of
 
-       anti-replay mechanisms in AH and ESP support availability.
 
-    Confidentiality
 
-       The security service that protects data from unauthorized
 
-       disclosure.  The primary confidentiality concern in most instances
 
-       is unauthorized disclosure of application-level data, but
 
-       disclosure of the external characteristics of communication also
 
-       can be a concern in some circumstances.  Traffic flow
 
-       confidentiality is the service that addresses this latter concern
 
-       by concealing source and destination addresses, message length, or
 
-       frequency of communication.  In the IPsec context, using ESP in
 
-       tunnel mode, especially at a security gateway, can provide some
 
-       level of traffic flow confidentiality. (See also "Traffic
 
-       Analysis" below.)
 
- Kent & Seo                  Standards Track                    [Page 76]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    Data Origin Authentication
 
-       A security service that verifies the identity of the claimed
 
-       source of data.  This service is usually bundled with
 
-       connectionless integrity service.
 
-    Encryption
 
-       A security mechanism used to transform data from an intelligible
 
-       form (plaintext) into an unintelligible form (ciphertext), to
 
-       provide confidentiality.  The inverse transformation process is
 
-       designated "decryption".  Often the term "encryption" is used to
 
-       generically refer to both processes.
 
-    Integrity
 
-       A security service that ensures that modifications to data are
 
-       detectable.  Integrity comes in various flavors to match
 
-       application requirements.  IPsec supports two forms of integrity:
 
-       connectionless and a form of partial sequence integrity.
 
-       Connectionless integrity is a service that detects modification of
 
-       an individual IP datagram, without regard to the ordering of the
 
-       datagram in a stream of traffic.  The form of partial sequence
 
-       integrity offered in IPsec is referred to as anti-replay
 
-       integrity, and it detects arrival of duplicate IP datagrams
 
-       (within a constrained window).  This is in contrast to
 
-       connection-oriented integrity, which imposes more stringent
 
-       sequencing requirements on traffic, e.g., to be able to detect
 
-       lost or re-ordered messages.  Although authentication and
 
-       integrity services often are cited separately, in practice they
 
-       are intimately connected and almost always offered in tandem.
 
-    Protected vs. Unprotected
 
-       "Protected" refers to the systems or interfaces that are inside
 
-       the IPsec protection boundary, and "unprotected" refers to the
 
-       systems or interfaces that are outside the IPsec protection
 
-       boundary.  IPsec provides a boundary through which traffic passes.
 
-       There is an asymmetry to this barrier, which is reflected in the
 
-       processing model.  Outbound data, if not discarded or bypassed, is
 
-       protected via the application of AH or ESP and the addition of the
 
-       corresponding headers.  Inbound data, if not discarded or
 
-       bypassed, is processed via the removal of AH or ESP headers.  In
 
-       this document, inbound traffic enters an IPsec implementation from
 
-       the "unprotected" interface.  Outbound traffic enters the
 
-       implementation via the "protected" interface, or is internally
 
-       generated by the implementation on the "protected" side of the
 
-       boundary and directed toward the "unprotected" interface.  An
 
-       IPsec implementation may support more than one interface on either
 
-       or both sides of the boundary.  The protected interface may be
 
- Kent & Seo                  Standards Track                    [Page 77]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       internal, e.g., in a host implementation of IPsec.  The protected
 
-       interface may link to a socket layer interface presented by the
 
-       OS.
 
-    Security Association (SA)
 
-       A simplex (uni-directional) logical connection, created for
 
-       security purposes.  All traffic traversing an SA is provided the
 
-       same security processing.  In IPsec, an SA is an Internet-layer
 
-       abstraction implemented through the use of AH or ESP.  State data
 
-       associated with an SA is represented in the SA Database (SAD).
 
-    Security Gateway
 
-       An intermediate system that acts as the communications interface
 
-       between two networks.  The set of hosts (and networks) on the
 
-       external side of the security gateway is termed unprotected (they
 
-       are generally at least less protected than those "behind" the SG),
 
-       while the networks and hosts on the internal side are viewed as
 
-       protected.  The internal subnets and hosts served by a security
 
-       gateway are presumed to be trusted by virtue of sharing a common,
 
-       local, security administration.  In the IPsec context, a security
 
-       gateway is a point at which AH and/or ESP is implemented in order
 
-       to serve a set of internal hosts, providing security services for
 
-       these hosts when they communicate with external hosts also
 
-       employing IPsec (either directly or via another security gateway).
 
-    Security Parameters Index (SPI)
 
-       An arbitrary 32-bit value that is used by a receiver to identify
 
-       the SA to which an incoming packet should be bound.  For a unicast
 
-       SA, the SPI can be used by itself to specify an SA, or it may be
 
-       used in conjunction with the IPsec protocol type.  Additional IP
 
-       address information is used to identify multicast SAs.  The SPI is
 
-       carried in AH and ESP protocols to enable the receiving system to
 
-       select the SA under which a received packet will be processed.  An
 
-       SPI has only local significance, as defined by the creator of the
 
-       SA (usually the receiver of the packet carrying the SPI); thus an
 
-       SPI is generally viewed as an opaque bit string.  However, the
 
-       creator of an SA may choose to interpret the bits in an SPI to
 
-       facilitate local processing.
 
-    Traffic Analysis
 
-       The analysis of network traffic flow for the purpose of deducing
 
-       information that is useful to an adversary.  Examples of such
 
-       information are frequency of transmission, the identities of the
 
-       conversing parties, sizes of packets, and flow identifiers
 
-       [Sch94].
 
- Kent & Seo                  Standards Track                    [Page 78]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- Appendix B: Decorrelation
 
-    This appendix is based on work done for caching of policies in the IP
 
-    Security Policy Working Group by Luis Sanchez, Matt Condell, and John
 
-    Zao.
 
-    Two SPD entries are correlated if there is a non-null intersection
 
-    between the values of corresponding selectors in each entry.  Caching
 
-    correlated SPD entries can lead to incorrect policy enforcement.  A
 
-    solution to this problem, which still allows for caching, is to
 
-    remove the ambiguities by decorrelating the entries.  That is, the
 
-    SPD entries must be rewritten so that for every pair of entries there
 
-    exists a selector for which there is a null intersection between the
 
-    values in both of the entries.  Once the entries are decorrelated,
 
-    there is no longer any ordering requirement on them, since only one
 
-    entry will match any lookup.  The next section describes
 
-    decorrelation in more detail and presents an algorithm that may be
 
-    used to implement decorrelation.
 
- B.1.  Decorrelation Algorithm
 
-    The basic decorrelation algorithm takes each entry in a correlated
 
-    SPD and divides it into a set of entries using a tree structure.
 
-    The nodes of the tree are the selectors that may overlap between the
 
-    policies.  At each node, the algorithm creates a branch for each of
 
-    the values of the selector.  It also creates one branch for the
 
-    complement of the union of all selector values.  Policies are then
 
-    formed by traversing the tree from the root to each leaf.  The
 
-    policies at the leaves are compared to the set of already
 
-    decorrelated policy rules.  Each policy at a leaf is either
 
-    completely overridden by a policy in the already decorrelated set and
 
-    is discarded or is decorrelated with all the policies in the
 
-    decorrelated set and is added to it.
 
-    The basic algorithm does not guarantee an optimal set of decorrelated
 
-    entries.  That is, the entries may be broken up into smaller sets
 
-    than is necessary, though they will still provide all the necessary
 
-    policy information.  Some extensions to the basic algorithm are
 
-    described later to improve this and improve the performance of the
 
-    algorithm.
 
-            C   A set of ordered, correlated entries (a correlated SPD).
 
-            Ci  The ith entry in C.
 
-            U   The set of decorrelated entries being built from C.
 
-            Ui  The ith entry in U.
 
-            Sik The kth selection for policy Ci.
 
-            Ai  The action for policy Ci.
 
- Kent & Seo                  Standards Track                    [Page 79]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    A policy (SPD entry) P may be expressed as a sequence of selector
 
-    values and an action (BYPASS, DISCARD, or PROTECT):
 
-            Ci = Si1 x Si2 x ... x Sik -> Ai
 
-    1) Put C1 in set U as U1
 
-    For each policy Cj (j > 1) in C
 
-    2) If Cj is decorrelated with every entry in U, then add it to U.
 
-    3) If Cj is correlated with one or more entries in U, create a tree
 
-    rooted at the policy Cj that partitions Cj into a set of decorrelated
 
-    entries.  The algorithm starts with a root node where no selectors
 
-    have yet been chosen.
 
-      A) Choose a selector in Cj, Sjn, that has not yet been chosen when
 
-         traversing the tree from the root to this node.  If there are no
 
-         selectors not yet used, continue to the next unfinished branch
 
-         until all branches have been completed.  When the tree is
 
-         completed, go to step D.
 
-         T is the set of entries in U that are correlated with the entry
 
-         at this node.
 
-         The entry at this node is the entry formed by the selector
 
-         values of each of the branches between the root and this node.
 
-         Any selector values that are not yet represented by branches
 
-         assume the corresponding selector value in Cj, since the values
 
-         in Cj represent the maximum value for each selector.
 
-      B) Add a branch to the tree for each value of the selector Sjn that
 
-         appears in any of the entries in T.  (If the value is a superset
 
-         of the value of Sjn in Cj, then use the value in Cj, since that
 
-         value represents the universal set.)  Also add a branch for the
 
-         complement of the union of all the values of the selector Sjn
 
-         in T.  When taking the complement, remember that the universal
 
-         set is the value of Sjn in Cj.  A branch need not be created
 
-         for the null set.
 
-      C) Repeat A and B until the tree is completed.
 
-      D) The entry to each leaf now represents an entry that is a subset
 
-         of Cj.  The entries at the leaves completely partition Cj in
 
-         such a way that each entry is either completely overridden by
 
-         an entry in U, or is decorrelated with the entries in U.
 
-         Add all the decorrelated entries at the leaves of the tree to U.
 
- Kent & Seo                  Standards Track                    [Page 80]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    4) Get next Cj and go to 2.
 
-    5) When all entries in C have been processed, then U will contain an
 
-    decorrelated version of C.
 
-    There are several optimizations that can be made to this algorithm.
 
-    A few of them are presented here.
 
-    It is possible to optimize, or at least improve, the amount of
 
-    branching that occurs by carefully choosing the order of the
 
-    selectors used for the next branch.  For example, if a selector Sjn
 
-    can be chosen so that all the values for that selector in T are equal
 
-    to or a superset of the value of Sjn in Cj, then only a single branch
 
-    needs to be created (since the complement will be null).
 
-    Branches of the tree do not have to proceed with the entire
 
-    decorrelation algorithm.  For example, if a node represents an entry
 
-    that is decorrelated with all the entries in U, then there is no
 
-    reason to continue decorrelating that branch.  Also, if a branch is
 
-    completely overridden by an entry in U, then there is no reason to
 
-    continue decorrelating the branch.
 
-    An additional optimization is to check to see if a branch is
 
-    overridden by one of the CORRELATED entries in set C that has already
 
-    been decorrelated.  That is, if the branch is part of decorrelating
 
-    Cj, then check to see if it was overridden by an entry Cm, m < j.
 
-    This is a valid check, since all the entries Cm are already expressed
 
-    in U.
 
-    Along with checking if an entry is already decorrelated in step 2,
 
-    check if Cj is overridden by any entry in U.  If it is, skip it since
 
-    it is not relevant.  An entry x is overridden by another entry y if
 
-    every selector in x is equal to or a subset of the corresponding
 
-    selector in entry y.
 
- Kent & Seo                  Standards Track                    [Page 81]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- Appendix C: ASN.1 for an SPD Entry
 
-    This appendix is included as an additional way to describe SPD
 
-    entries, as defined in Section 4.4.1.  It uses ASN.1 syntax that has
 
-    been successfully compiled.  This syntax is merely illustrative and
 
-    need not be employed in an implementation to achieve compliance.  The
 
-    SPD description in Section 4.4.1 is normative.
 
-    SPDModule
 
-     {iso(1) org (3) dod (6) internet (1) security (5) mechanisms (5)
 
-      ipsec (8) asn1-modules (3) spd-module (1) }
 
-        DEFINITIONS IMPLICIT TAGS ::=
 
-        BEGIN
 
-        IMPORTS
 
-            RDNSequence FROM PKIX1Explicit88
 
-              { iso(1) identified-organization(3)
 
-                dod(6) internet(1) security(5) mechanisms(5) pkix(7)
 
-                id-mod(0) id-pkix1-explicit(18) } ;
 
-        -- An SPD is a list of policies in decreasing order of preference
 
-        SPD ::= SEQUENCE OF SPDEntry
 
-        SPDEntry ::= CHOICE {
 
-            iPsecEntry       IPsecEntry,               -- PROTECT traffic
 
-            bypassOrDiscard  [0] BypassOrDiscardEntry } -- DISCARD/BYPASS
 
-        IPsecEntry ::= SEQUENCE {       -- Each entry consists of
 
-            name        NameSets OPTIONAL,
 
-            pFPs        PacketFlags,    -- Populate from packet flags
 
-                               -- Applies to ALL of the corresponding
 
-                               -- traffic selectors in the SelectorLists
 
-            condition   SelectorLists,  -- Policy "condition"
 
-            processing  Processing      -- Policy "action"
 
-            }
 
-        BypassOrDiscardEntry ::= SEQUENCE {
 
-            bypass      BOOLEAN,        -- TRUE BYPASS, FALSE DISCARD
 
-            condition   InOutBound }
 
-        InOutBound ::= CHOICE {
 
-            outbound    [0] SelectorLists,
 
-            inbound     [1] SelectorLists,
 
-            bothways    [2] BothWays }
 
- Kent & Seo                  Standards Track                    [Page 82]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-        BothWays ::= SEQUENCE {
 
-            inbound     SelectorLists,
 
-            outbound    SelectorLists }
 
-        NameSets ::= SEQUENCE {
 
-            passed      SET OF Names-R,  -- Matched to IKE ID by
 
-                                         -- responder
 
-            local       SET OF Names-I } -- Used internally by IKE
 
-                                         -- initiator
 
-        Names-R ::= CHOICE {                   -- IKEv2 IDs
 
-            dName       RDNSequence,           -- ID_DER_ASN1_DN
 
-            fqdn        FQDN,                  -- ID_FQDN
 
-            rfc822      [0] RFC822Name,        -- ID_RFC822_ADDR
 
-            keyID       OCTET STRING }         -- KEY_ID
 
-        Names-I ::= OCTET STRING       -- Used internally by IKE
 
-                                       -- initiator
 
-        FQDN ::= IA5String
 
-        RFC822Name ::= IA5String
 
-        PacketFlags ::= BIT STRING {
 
-                    -- if set, take selector value from packet
 
-                    -- establishing SA
 
-                    -- else use value in SPD entry
 
-            localAddr  (0),
 
-            remoteAddr (1),
 
-            protocol   (2),
 
-            localPort  (3),
 
-            remotePort (4)  }
 
-        SelectorLists ::= SET OF SelectorList
 
-        SelectorList ::= SEQUENCE {
 
-            localAddr   AddrList,
 
-            remoteAddr  AddrList,
 
-            protocol    ProtocolChoice }
 
-        Processing ::= SEQUENCE {
 
-            extSeqNum   BOOLEAN, -- TRUE 64 bit counter, FALSE 32 bit
 
-            seqOverflow BOOLEAN, -- TRUE rekey, FALSE terminate & audit
 
-            fragCheck   BOOLEAN, -- TRUE stateful fragment checking,
 
-                                 -- FALSE no stateful fragment checking
 
-            lifetime    SALifetime,
 
-            spi         ManualSPI,
 
-            algorithms  ProcessingAlgs,
 
- Kent & Seo                  Standards Track                    [Page 83]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-            tunnel      TunnelOptions OPTIONAL } -- if absent, use
 
-                                                 -- transport mode
 
-        SALifetime ::= SEQUENCE {
 
-            seconds   [0] INTEGER OPTIONAL,
 
-            bytes     [1] INTEGER OPTIONAL }
 
-        ManualSPI ::= SEQUENCE {
 
-            spi     INTEGER,
 
-            keys    KeyIDs }
 
-        KeyIDs ::= SEQUENCE OF OCTET STRING
 
-        ProcessingAlgs ::= CHOICE {
 
-            ah          [0] IntegrityAlgs,  -- AH
 
-            esp         [1] ESPAlgs}        -- ESP
 
-        ESPAlgs ::= CHOICE {
 
-            integrity       [0] IntegrityAlgs,       -- integrity only
 
-            confidentiality [1] ConfidentialityAlgs, -- confidentiality
 
-                                                     -- only
 
-            both            [2] IntegrityConfidentialityAlgs,
 
-            combined        [3] CombinedModeAlgs }
 
-        IntegrityConfidentialityAlgs ::= SEQUENCE {
 
-            integrity       IntegrityAlgs,
 
-            confidentiality ConfidentialityAlgs }
 
-        -- Integrity Algorithms, ordered by decreasing preference
 
-        IntegrityAlgs ::= SEQUENCE OF IntegrityAlg
 
-        -- Confidentiality Algorithms, ordered by decreasing preference
 
-        ConfidentialityAlgs ::= SEQUENCE OF ConfidentialityAlg
 
-        -- Integrity Algorithms
 
-        IntegrityAlg ::= SEQUENCE {
 
-            algorithm   IntegrityAlgType,
 
-            parameters  ANY -- DEFINED BY algorithm -- OPTIONAL }
 
-        IntegrityAlgType ::= INTEGER {
 
-            none              (0),
 
-            auth-HMAC-MD5-96  (1),
 
-            auth-HMAC-SHA1-96 (2),
 
-            auth-DES-MAC      (3),
 
-            auth-KPDK-MD5     (4),
 
-            auth-AES-XCBC-96  (5)
 
-        --  tbd (6..65535)
 
-            }
 
- Kent & Seo                  Standards Track                    [Page 84]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-        -- Confidentiality Algorithms
 
-        ConfidentialityAlg ::= SEQUENCE {
 
-            algorithm   ConfidentialityAlgType,
 
-            parameters  ANY -- DEFINED BY algorithm -- OPTIONAL }
 
-        ConfidentialityAlgType ::= INTEGER {
 
-            encr-DES-IV64   (1),
 
-            encr-DES        (2),
 
-            encr-3DES       (3),
 
-            encr-RC5        (4),
 
-            encr-IDEA       (5),
 
-            encr-CAST       (6),
 
-            encr-BLOWFISH   (7),
 
-            encr-3IDEA      (8),
 
-            encr-DES-IV32   (9),
 
-            encr-RC4       (10),
 
-            encr-NULL      (11),
 
-            encr-AES-CBC   (12),
 
-            encr-AES-CTR   (13)
 
-        --  tbd (14..65535)
 
-            }
 
-        CombinedModeAlgs ::= SEQUENCE OF CombinedModeAlg
 
-        CombinedModeAlg ::= SEQUENCE {
 
-            algorithm   CombinedModeType,
 
-            parameters  ANY -- DEFINED BY algorithm} -- defined outside
 
-                                     -- of this document for AES modes.
 
-        CombinedModeType ::= INTEGER {
 
-            comb-AES-CCM    (1),
 
-            comb-AES-GCM    (2)
 
-        --  tbd (3..65535)
 
-            }
 
-        TunnelOptions ::= SEQUENCE {
 
-            dscp        DSCP,
 
-            ecn         BOOLEAN,    -- TRUE Copy CE to inner header
 
-            df          DF,
 
-            addresses   TunnelAddresses }
 
-        TunnelAddresses ::= CHOICE {
 
-            ipv4        IPv4Pair,
 
-            ipv6        [0] IPv6Pair }
 
-        IPv4Pair ::= SEQUENCE {
 
-            local       OCTET STRING (SIZE(4)),
 
-            remote      OCTET STRING (SIZE(4)) }
 
- Kent & Seo                  Standards Track                    [Page 85]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-        IPv6Pair ::= SEQUENCE {
 
-            local       OCTET STRING (SIZE(16)),
 
-            remote      OCTET STRING (SIZE(16)) }
 
-        DSCP ::= SEQUENCE {
 
-            copy      BOOLEAN, -- TRUE copy from inner header
 
-                               -- FALSE do not copy
 
-            mapping   OCTET STRING OPTIONAL} -- points to table
 
-                                             -- if no copy
 
-        DF ::= INTEGER {
 
-            clear   (0),
 
-            set     (1),
 
-            copy    (2) }
 
-        ProtocolChoice::= CHOICE {
 
-            anyProt  AnyProtocol,              -- for ANY protocol
 
-            noNext   [0] NoNextLayerProtocol,  -- has no next layer
 
-                                               -- items
 
-            oneNext  [1] OneNextLayerProtocol, -- has one next layer
 
-                                               -- item
 
-            twoNext  [2] TwoNextLayerProtocol, -- has two next layer
 
-                                               -- items
 
-            fragment FragmentNoNext }          -- has no next layer
 
-                                               -- info
 
-        AnyProtocol ::= SEQUENCE {
 
-            id          INTEGER (0),    -- ANY protocol
 
-            nextLayer   AnyNextLayers }
 
-        AnyNextLayers ::= SEQUENCE {      -- with either
 
-            first       AnyNextLayer,     -- ANY next layer selector
 
-            second      AnyNextLayer }    -- ANY next layer selector
 
-        NoNextLayerProtocol ::= INTEGER (2..254)
 
-        FragmentNoNext ::= INTEGER (44)   -- Fragment identifier
 
-        OneNextLayerProtocol ::= SEQUENCE {
 
-            id          INTEGER (1..254),   -- ICMP, MH, ICMPv6
 
-            nextLayer   NextLayerChoice }   -- ICMP Type*256+Code
 
-                                            -- MH   Type*256
 
-        TwoNextLayerProtocol ::= SEQUENCE {
 
-            id          INTEGER (2..254),   -- Protocol
 
-            local       NextLayerChoice,    -- Local and
 
-            remote      NextLayerChoice }   -- Remote ports
 
- Kent & Seo                  Standards Track                    [Page 86]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-        NextLayerChoice ::= CHOICE {
 
-            any         AnyNextLayer,
 
-            opaque      [0] OpaqueNextLayer,
 
-            range       [1] NextLayerRange }
 
-        -- Representation of ANY in next layer field
 
-        AnyNextLayer ::= SEQUENCE {
 
-            start       INTEGER (0),
 
-            end         INTEGER (65535) }
 
-        -- Representation of OPAQUE in next layer field.
 
-        -- Matches IKE convention
 
-        OpaqueNextLayer ::= SEQUENCE {
 
-            start       INTEGER (65535),
 
-            end         INTEGER (0) }
 
-        -- Range for a next layer field
 
-        NextLayerRange ::= SEQUENCE {
 
-            start       INTEGER (0..65535),
 
-            end         INTEGER (0..65535) }
 
-        -- List of IP addresses
 
-        AddrList ::= SEQUENCE {
 
-            v4List      IPv4List OPTIONAL,
 
-            v6List      [0] IPv6List OPTIONAL }
 
-        -- IPv4 address representations
 
-        IPv4List ::= SEQUENCE OF IPv4Range
 
-        IPv4Range ::= SEQUENCE {    -- close, but not quite right ...
 
-            ipv4Start   OCTET STRING (SIZE (4)),
 
-            ipv4End     OCTET STRING (SIZE (4)) }
 
-        -- IPv6 address representations
 
-        IPv6List ::= SEQUENCE OF IPv6Range
 
-        IPv6Range ::= SEQUENCE {    -- close, but not quite right ...
 
-            ipv6Start   OCTET STRING (SIZE (16)),
 
-            ipv6End     OCTET STRING (SIZE (16)) }
 
-        END
 
- Kent & Seo                  Standards Track                    [Page 87]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- Appendix D: Fragment Handling Rationale
 
-    There are three issues that must be resolved regarding processing of
 
-    (plaintext) fragments in IPsec:
 
-         - mapping a non-initial, outbound fragment to the right SA
 
-           (or finding the right SPD entry)
 
-         - verifying that a received, non-initial fragment is authorized
 
-           for the SA via which it is received
 
-         - mapping outbound and inbound non-initial fragments to the
 
-           right SPD/cache entry, for BYPASS/DISCARD traffic
 
-    The first and third issues arise because we need a deterministic
 
-    algorithm for mapping traffic to SAs (and SPD/cache entries).  All
 
-    three issues are important because we want to make sure that
 
-    non-initial fragments that cross the IPsec boundary do not cause the
 
-    access control policies in place at the receiver (or transmitter) to
 
-    be violated.
 
- D.1.  Transport Mode and Fragments
 
-    First, we note that transport mode SAs have been defined to not carry
 
-    fragments.  This is a carryover from RFC 2401, where transport mode
 
-    SAs always terminated at endpoints.  This is a fundamental
 
-    requirement because, in the worst case, an IPv4 fragment to which
 
-    IPsec was applied might then be fragmented (as a ciphertext packet),
 
-    en route to the destination.  IP fragment reassembly procedures at
 
-    the IPsec receiver would not be able to distinguish between pre-IPsec
 
-    fragments and fragments created after IPsec processing.
 
-    For IPv6, only the sender is allowed to fragment a packet.  As for
 
-    IPv4, an IPsec implementation is allowed to fragment tunnel mode
 
-    packets after IPsec processing, because it is the sender relative to
 
-    the (outer) tunnel header.  However, unlike IPv4, it would be
 
-    feasible to carry a plaintext fragment on a transport mode SA,
 
-    because the fragment header in IPv6 would appear after the AH or ESP
 
-    header, and thus would not cause confusion at the receiver with
 
-    respect to reassembly.  Specifically, the receiver would not attempt
 
-    reassembly for the fragment until after IPsec processing.  To keep
 
-    things simple, this specification prohibits carriage of fragments on
 
-    transport mode SAs for IPv6 traffic.
 
-    When only end systems used transport mode SAs, the prohibition on
 
-    carriage of fragments was not a problem, since we assumed that the
 
-    end system could be configured to not offer a fragment to IPsec.  For
 
-    a native host implementation, this seems reasonable, and, as someone
 
-    already noted, RFC 2401 warned that a BITS implementation might have
 
-    to reassemble fragments before performing an SA lookup.  (It would
 
- Kent & Seo                  Standards Track                    [Page 88]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    then apply AH or ESP and could re-fragment the packet after IPsec
 
-    processing.) Because a BITS implementation is assumed to be able to
 
-    have access to all traffic emanating from its host, even if the host
 
-    has multiple interfaces, this was deemed a reasonable mandate.
 
-    In this specification, it is acceptable to use transport mode in
 
-    cases where the IPsec implementation is not the ultimate destination,
 
-    e.g., between two SGs.  In principle, this creates a new opportunity
 
-    for outbound, plaintext fragments to be mapped to a transport mode SA
 
-    for IPsec processing.  However, in these new contexts in which a
 
-    transport mode SA is now approved for use, it seems likely that we
 
-    can continue to prohibit transmission of fragments, as seen by IPsec,
 
-    i.e., packets that have an "outer header" with a non-zero fragment
 
-    offset field.  For example, in an IP overlay network, packets being
 
-    sent over transport mode SAs are IP-in-IP tunneled and thus have the
 
-    necessary inner header to accommodate fragmentation prior to IPsec
 
-    processing.  When carried via a transport mode SA, IPsec would not
 
-    examine the inner IP header for such traffic, and thus would not
 
-    consider the packet to be a fragment.
 
- D.2.  Tunnel Mode and Fragments
 
-    For tunnel mode SAs, it has always been the case that outbound
 
-    fragments might arrive for processing at an IPsec implementation.
 
-    The need to accommodate fragmented outbound packets can pose a
 
-    problem because a non-initial fragment generally will not contain the
 
-    port fields associated with a next layer protocol such as TCP, UDP,
 
-    or SCTP.  Thus, depending on the SPD configuration for a given IPsec
 
-    implementation, plaintext fragments might or might not pose a
 
-    problem.
 
-    For example, if the SPD requires that all traffic between two address
 
-    ranges is offered IPsec protection (no BYPASS or DISCARD SPD entries
 
-    apply to this address range), then it should be easy to carry
 
-    non-initial fragments on the SA defined for this address range, since
 
-    the SPD entry implies an intent to carry ALL traffic between the
 
-    address ranges.  But, if there are multiple SPD entries that could
 
-    match a fragment, and if these entries reference different subsets of
 
-    port fields (vs. ANY), then it is not possible to map an outbound
 
-    non-initial fragment to the right entry, unambiguously. (If we choose
 
-    to allow carriage of fragments on transport mode SAs for IPv6, the
 
-    problems arises in that context as well.)
 
-    This problem largely, though not exclusively, motivated the
 
-    definition of OPAQUE as a selector value for port fields in RFC 2401.
 
-    The other motivation for OPAQUE is the observation that port fields
 
-    might not be accessible due to the prior application of IPsec.  For
 
-    example, if a host applied IPsec to its traffic and that traffic
 
- Kent & Seo                  Standards Track                    [Page 89]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    arrived at an SG, these fields would be encrypted.  The algorithm
 
-    specified for locating the "next layer protocol" described in RFC
 
-    2401 also motivated use of OPAQUE to accommodate an encrypted next
 
-    layer protocol field in such circumstances.  Nonetheless, the primary
 
-    use of the OPAQUE value was to match traffic selector fields in
 
-    packets that did not contain port fields (non-initial fragments), or
 
-    packets in which the port fields were already encrypted (as a result
 
-    of nested application of IPsec).  RFC 2401 was ambiguous in
 
-    discussing the use of OPAQUE vs. ANY, suggesting in some places that
 
-    ANY might be an alternative to OPAQUE.
 
-    We gain additional access control capability by defining both ANY and
 
-    OPAQUE values.  OPAQUE can be defined to match only fields that are
 
-    not accessible.  We could define ANY as the complement of OPAQUE,
 
-    i.e., it would match all values but only for accessible port fields.
 
-    We have therefore simplified the procedure employed to locate the
 
-    next layer protocol in this document, so that we treat ESP and AH as
 
-    next layer protocols.  As a result, the notion of an encrypted next
 
-    layer protocol field has vanished, and there is also no need to worry
 
-    about encrypted port fields either.  And accordingly, OPAQUE will be
 
-    applicable only to non-initial fragments.
 
-    Since we have adopted the definitions above for ANY and OPAQUE, we
 
-    need to clarify how these values work when the specified protocol
 
-    does not have port fields, and when ANY is used for the protocol
 
-    selector.  Accordingly, if a specific protocol value is used as a
 
-    selector, and if that protocol has no port fields, then the port
 
-    field selectors are to be ignored and ANY MUST be specified as the
 
-    value for the port fields. (In this context, ICMP TYPE and CODE
 
-    values are lumped together as a single port field (for IKEv2
 
-    negotiation), as is the IPv6 Mobility Header TYPE value.) If the
 
-    protocol selector is ANY, then this should be treated as equivalent
 
-    to specifying a protocol for which no port fields are defined, and
 
-    thus the port selectors should be ignored, and MUST be set to ANY.
 
- D.3.  The Problem of Non-Initial Fragments
 
-    For an SG implementation, it is obvious that fragments might arrive
 
-    from end systems behind the SG.  A BITW implementation also may
 
-    encounter fragments from a host or gateway behind it. (As noted
 
-    earlier, native host implementations and BITS implementations
 
-    probably can avoid the problems described below.) In the worst case,
 
-    fragments from a packet might arrive at distinct BITW or SG
 
-    instantiations and thus preclude reassembly as a solution option.
 
-    Hence, in RFC 2401 we adopted a general requirement that fragments
 
-    must be accommodated in tunnel mode for all implementations. However,
 
- Kent & Seo                  Standards Track                    [Page 90]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    RFC 2401 did not provide a perfect solution.  The use of OPAQUE as a
 
-    selector value for port fields (a SHOULD in RFC 2401) allowed an SA
 
-    to carry non-initial fragments.
 
-    Using the features defined in RFC 2401, if one defined an SA between
 
-    two IPsec (SG or BITW) implementations using the OPAQUE value for
 
-    both port fields, then all non-initial fragments matching the
 
-    source/destination (S/D) address and protocol values for the SA would
 
-    be mapped to that SA.  Initial fragments would NOT map to this SA, if
 
-    we adopt a strict definition of OPAQUE.  However, RFC 2401 did not
 
-    provide detailed guidance on this and thus it may not have been
 
-    apparent that use of this feature would essentially create a
 
-    "non-initial fragment only" SA.
 
-    In the course of discussing the "fragment-only" SA approach, it was
 
-    noted that some subtle problems, problems not considered in RFC 2401,
 
-    would have to be avoided.  For example, an SA of this sort must be
 
-    configured to offer the "highest quality" security services for any
 
-    traffic between the indicated S/D addresses (for the specified
 
-    protocol).  This is necessary to ensure that any traffic captured by
 
-    the fragment-only SA is not offered degraded security relative to
 
-    what it would have been offered if the packet were not fragmented.  A
 
-    possible problem here is that we may not be able to identify the
 
-    "highest quality" security services defined for use between two IPsec
 
-    implementation, since the choice of security protocols, options, and
 
-    algorithms is a lattice, not a totally ordered set. (We might safely
 
-    say that BYPASS < AH < ESP w/integrity, but it gets complicated if we
 
-    have multiple ESP encryption or integrity algorithm options.) So, one
 
-    has to impose a total ordering on these security parameters to make
 
-    this work, but this can be done locally.
 
-    However, this conservative strategy has a possible performance
 
-    downside.  If most traffic traversing an IPsec implementation for a
 
-    given S/D address pair (and specified protocol) is bypassed, then a
 
-    fragment-only SA for that address pair might cause a dramatic
 
-    increase in the volume of traffic afforded crypto processing.  If the
 
-    crypto implementation cannot support high traffic rates, this could
 
-    cause problems. (An IPsec implementation that is capable of line rate
 
-    or near line rate crypto performance would not be adversely affected
 
-    by this SA configuration approach.  Nonetheless, the performance
 
-    impact is a potential concern, specific to implementation
 
-    capabilities.)
 
-    Another concern is that non-initial fragments sent over a dedicated
 
-    SA might be used to effect overlapping reassembly attacks, when
 
-    combined with an apparently acceptable initial fragment. (This sort
 
-    of attack assumes creation of bogus fragments and is not a side
 
-    effect of normal fragmentation.) This concern is easily addressed in
 
- Kent & Seo                  Standards Track                    [Page 91]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    IPv4, by checking the fragment offset value to ensure that no
 
-    non-initial fragments have a small enough offset to overlap port
 
-    fields that should be contained in the initial fragment.  Recall that
 
-    the IPv4 MTU minimum is 576 bytes, and the max IP header length is 60
 
-    bytes, so any ports should be present in the initial fragment.  If we
 
-    require all non-initial fragments to have an offset of, say, 128 or
 
-    greater, just to be on the safe side, this should prevent successful
 
-    attacks of this sort.  If the intent is only to protect against this
 
-    sort of reassembly attack, this check need be implemented only by a
 
-    receiver.
 
-    IPv6 also has a fragment offset, carried in the fragmentation
 
-    extension header.  However, IPv6 extension headers are variable in
 
-    length and there is no analogous max header length value that we can
 
-    use to check non-initial fragments, to reject ones that might be used
 
-    for an attack of the sort noted above.  A receiver would need to
 
-    maintain state analogous to reassembly state, to provide equivalent
 
-    protection.  So, only for IPv4 is it feasible to impose a fragment
 
-    offset check that would reject attacks designed to circumvent port
 
-    field checks by IPsec (or firewalls) when passing non-initial
 
-    fragments.
 
-    Another possible concern is that in some topologies and SPD
 
-    configurations this approach might result in an access control
 
-    surprise.  The notion is that if we create an SA to carry ALL
 
-    (non-initial) fragments, then that SA would carry some traffic that
 
-    might otherwise arrive as plaintext via a separate path, e.g., a path
 
-    monitored by a proxy firewall.  But, this concern arises only if the
 
-    other path allows initial fragments to traverse it without requiring
 
-    reassembly, presumably a bad idea for a proxy firewall.  Nonetheless,
 
-    this does represent a potential problem in some topologies and under
 
-    certain assumptions with respect to SPD and (other) firewall rule
 
-    sets, and administrators need to be warned of this possibility.
 
-    A less serious concern is that non-initial fragments sent over a
 
-    non-initial fragment-only SA might represent a DoS opportunity, in
 
-    that they could be sent when no valid, initial fragment will ever
 
-    arrive.  This might be used to attack hosts behind an SG or BITW
 
-    device.  However, the incremental risk posed by this sort of attack,
 
-    which can be mounted only by hosts behind an SG or BITW device, seems
 
-    small.
 
-    If we interpret the ANY selector value as encompassing OPAQUE, then a
 
-    single SA with ANY values for both port fields would be able to
 
-    accommodate all traffic matching the S/D address and protocol traffic
 
-    selectors, an alternative to using the OPAQUE value.  But, using ANY
 
- Kent & Seo                  Standards Track                    [Page 92]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    here precludes multiple, distinct SAs between the same IPsec
 
-    implementations for the same address pairs and protocol.  So, it is
 
-    not an exactly equivalent alternative.
 
-    Fundamentally, fragment handling problems arise only when more than
 
-    one SA is defined with the same S/D address and protocol selector
 
-    values, but with different port field selector values.
 
- D.4.  BYPASS/DISCARD Traffic
 
-    We also have to address the non-initial fragment processing issue for
 
-    BYPASS/DISCARD entries, independent of SA processing.  This is
 
-    largely a local matter for two reasons:
 
-            1) We have no means for coordinating SPD entries for such
 
-               traffic between IPsec implementations since IKE is not
 
-               invoked.
 
-            2) Many of these entries refer to traffic that is NOT
 
-               directed to or received from a location that is using
 
-               IPsec.  So there is no peer IPsec implementation with
 
-               which to coordinate via any means.
 
-    However, this document should provide guidance here, consistent with
 
-    our goal of offering a well-defined, access control function for all
 
-    traffic, relative to the IPsec boundary.  To that end, this document
 
-    says that implementations MUST support fragment reassembly for
 
-    BYPASS/DISCARD traffic when port fields are specified.  An
 
-    implementation also MUST permit a user or administrator to accept
 
-    such traffic or reject such traffic using the SPD conventions
 
-    described in Section 4.4.1.  The concern is that BYPASS of a
 
-    cleartext, non-initial fragment arriving at an IPsec implementation
 
-    could undermine the security afforded IPsec-protected traffic
 
-    directed to the same destination.  For example, consider an IPsec
 
-    implementation configured with an SPD entry that calls for
 
-    IPsec-protection of traffic between a specific source/destination
 
-    address pair, and for a specific protocol and destination port, e.g.,
 
-    TCP traffic on port 23 (Telnet).  Assume that the implementation also
 
-    allows BYPASS of traffic from the same source/destination address
 
-    pair and protocol, but for a different destination port, e.g., port
 
-    119 (NNTP).  An attacker could send a non-initial fragment (with a
 
-    forged source address) that, if bypassed, could overlap with
 
-    IPsec-protected traffic from the same source and thus violate the
 
-    integrity of the IPsec-protected traffic.  Requiring stateful
 
-    fragment checking for BYPASS entries with non-trivial port ranges
 
-    prevents attacks of this sort.
 
- Kent & Seo                  Standards Track                    [Page 93]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- D.5.  Just say no to ports?
 
-    It has been suggested that we could avoid the problems described
 
-    above by not allowing port field selectors to be used in tunnel mode.
 
-    But the discussion above shows this to be an unnecessarily stringent
 
-    approach, i.e., since no problems arise for the native OS and BITS
 
-    implementations.  Moreover, some WG members have described scenarios
 
-    where use of tunnel mode SAs with (non-trivial) port field selectors
 
-    is appropriate.  So the challenge is defining a strategy that can
 
-    deal with this problem in BITW and SG contexts.  Also note that
 
-    BYPASS/DISCARD entries in the SPD that make use of ports pose the
 
-    same problems, irrespective of tunnel vs. transport mode notions.
 
-    Some folks have suggested that a firewall behind an SG or BITW should
 
-    be left to enforce port-level access controls and the effects of
 
-    fragmentation.  However, this seems to be an incongruous suggestion
 
-    in that elsewhere in IPsec (e.g., in IKE payloads) we are concerned
 
-    about firewalls that always discard fragments.  If many firewalls
 
-    don't pass fragments in general, why should we expect them to deal
 
-    with fragments in this case? So, this analysis rejects the suggestion
 
-    of disallowing use of port field selectors with tunnel mode SAs.
 
- D.6.  Other Suggested Solutions
 
-    One suggestion is to reassemble fragments at the sending IPsec
 
-    implementation, and thus avoid the problem entirely.  This approach
 
-    is invisible to a receiver and thus could be adopted as a purely
 
-    local implementation option.
 
-    A more sophisticated version of this suggestion calls for
 
-    establishing and maintaining minimal state from each initial fragment
 
-    encountered, to allow non-initial fragments to be matched to the
 
-    right SAs or SPD/cache entries.  This implies an extension to the
 
-    current processing model (and the old one).  The IPsec implementation
 
-    would intercept all fragments; capture Source/Destination IP
 
-    addresses, protocol, packet ID, and port fields from initial
 
-    fragments; and then use this data to map non-initial fragments to SAs
 
-    that require port fields.  If this approach is employed, the receiver
 
-    needs to employ an equivalent scheme, as it too must verify that
 
-    received fragments are consistent with SA selector values.  A
 
-    non-initial fragment that arrives prior to an initial fragment could
 
-    be cached or discarded, awaiting arrival of the corresponding initial
 
-    fragment.
 
-    A downside of both approaches noted above is that they will not
 
-    always work.  When a BITW device or SG is configured in a topology
 
-    that might allow some fragments for a packet to be processed at
 
-    different SGs or BITW devices, then there is no guarantee that all
 
- Kent & Seo                  Standards Track                    [Page 94]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    fragments will ever arrive at the same IPsec device.  This approach
 
-    also raises possible processing problems.  If the sender caches
 
-    non-initial fragments until the corresponding initial fragment
 
-    arrives, buffering problems might arise, especially at high speeds.
 
-    If the non-initial fragments are discarded rather than cached, there
 
-    is no guarantee that traffic will ever pass, e.g., retransmission
 
-    will result in different packet IDs that cannot be matched with prior
 
-    transmissions.  In any case, housekeeping procedures will be needed
 
-    to decide when to delete the fragment state data, adding some
 
-    complexity to the system.  Nonetheless, this is a viable solution in
 
-    some topologies, and these are likely to be common topologies.
 
-    The Working Group rejected an earlier version of the convention of
 
-    creating an SA to carry only non-initial fragments, something that
 
-    was supported implicitly under the RFC 2401 model via use of OPAQUE
 
-    port fields, but never clearly articulated in RFC 2401.  The
 
-    (rejected) text called for each non-initial fragment to be treated as
 
-    protocol 44 (the IPv6 fragment header protocol ID) by the sender and
 
-    receiver.  This approach has the potential to make IPv4 and IPv6
 
-    fragment handling more uniform, but it does not fundamentally change
 
-    the problem, nor does it address the issue of fragment handling for
 
-    BYPASS/DISCARD traffic.  Given the fragment overlap attack problem
 
-    that IPv6 poses, it does not seem that it is worth the effort to
 
-    adopt this strategy.
 
- D.7.  Consistency
 
-    Earlier, the WG agreed to allow an IPsec BITS, BITW, or SG to perform
 
-    fragmentation prior to IPsec processing.  If this fragmentation is
 
-    performed after SA lookup at the sender, there is no "mapping to the
 
-    right SA" problem.  But, the receiver still needs to be able to
 
-    verify that the non-initial fragments are consistent with the SA via
 
-    which they are received.  Since the initial fragment might be lost en
 
-    route, the receiver encounters all of the potential problems noted
 
-    above.  Thus, if we are to be consistent in our decisions, we need to
 
-    say how a receiver will deal with the non-initial fragments that
 
-    arrive.
 
- D.8.  Conclusions
 
-    There is no simple, uniform way to handle fragments in all contexts.
 
-    Different approaches work better in different contexts.  Thus, this
 
-    document offers 3 choices -- one MUST and two MAYs.  At some point in
 
-    the future, if the community gains experience with the two MAYs, they
 
-    may become SHOULDs or MUSTs or other approaches may be proposed.
 
- Kent & Seo                  Standards Track                    [Page 95]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- Appendix E: Example of Supporting Nested SAs via SPD and Forwarding
 
-             Table Entries
 
-    This appendix provides an example of how to configure the SPD and
 
-    forwarding tables to support a nested pair of SAs, consistent with
 
-    the new processing model.  For simplicity, this example assumes just
 
-    one SPD-I.
 
-    The goal in this example is to support a transport mode SA from A to
 
-    C, carried over a tunnel mode SA from A to B.  For example, A might
 
-    be a laptop connected to the public Internet, B might be a firewall
 
-    that protects a corporate network, and C might be a server on the
 
-    corporate network that demands end-to-end authentication of A's
 
-    traffic.
 
-          +---+     +---+  +---+
 
-          | A |=====| B |  | C |
 
-          |   |------------|   |
 
-          |   |=====|   |  |   |
 
-          +---+     +---+  +---+
 
-    A's SPD contains entries of the form:
 
-                         Next Layer
 
-       Rule Local Remote Protocol   Action
 
-       ---- ----- ------ ---------- -----------------------
 
-        1     C     A     ESP       BYPASS
 
-        2     A     C     ICMP,ESP  PROTECT(ESP,tunnel,integr+conf)
 
-        3     A     C     ANY       PROTECT(ESP,transport,integr-only)
 
-        4     A     B     ICMP,IKE  BYPASS
 
-    A's unprotected-side forwarding table is set so that outbound packets
 
-    destined for C are looped back to the protected side.  A's
 
-    protected-side forwarding table is set so that inbound ESP packets
 
-    are looped back to the unprotected side.  A's forwarding tables
 
-    contain entries of the form:
 
-       Unprotected-side forwarding table
 
-         Rule Local Remote Protocol Action
 
-         ---- ----- ------ -------- ---------------------------
 
-          1     A     C       ANY   loop back to protected side
 
-          2     A     B       ANY   forward to B
 
- Kent & Seo                  Standards Track                    [Page 96]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-       Protected-side forwarding table
 
-         Rule Local Remote Protocol Action
 
-         ---- ----- ------ -------- -----------------------------
 
-          1     A     C       ESP   loop back to unprotected side
 
-    An outbound TCP packet from A to C would match SPD rule 3 and have
 
-    transport mode ESP applied to it.  The unprotected-side forwarding
 
-    table would then loop back the packet.  The packet is compared
 
-    against SPD-I (see Figure 2), matches SPD rule 1, and so it is
 
-    BYPASSed.  The packet is treated as an outbound packet and compared
 
-    against the SPD for a third time.  This time it matches SPD rule 2,
 
-    so ESP is applied in tunnel mode.  This time the forwarding table
 
-    doesn't loop back the packet, because the outer destination address
 
-    is B, so the packet goes out onto the wire.
 
-    An inbound TCP packet from C to A is wrapped in two ESP headers; the
 
-    outer header (ESP in tunnel mode) shows B as the source, whereas the
 
-    inner header (ESP transport mode) shows C as the source.  Upon
 
-    arrival at A, the packet would be mapped to an SA based on the SPI,
 
-    have the outer header removed, and be decrypted and
 
-    integrity-checked.  Then it would be matched against the SAD
 
-    selectors for this SA, which would specify C as the source and A as
 
-    the destination, derived from SPD rule 2.  The protected-side
 
-    forwarding function would then send it back to the unprotected side
 
-    based on the addresses and the next layer protocol (ESP), indicative
 
-    of nesting.  It is compared against SPD-O (see Figure 3) and found to
 
-    match SPD rule 1, so it is BYPASSed.  The packet is mapped to an SA
 
-    based on the SPI, integrity-checked, and compared against the SAD
 
-    selectors derived from SPD rule 3.  The forwarding function then
 
-    passes it up to the next layer, because it isn't an ESP packet.
 
- Kent & Seo                  Standards Track                    [Page 97]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- References
 
- Normative References
 
-    [BBCDWW98]     Blake, S., Black, D., Carlson, M., Davies, E., Wang,
 
-                   Z., and W. Weiss, "An Architecture for Differentiated
 
-                   Service", RFC 2475, December 1998.
 
-    [Bra97]        Bradner, S., "Key words for use in RFCs to Indicate
 
-                   Requirement Level", BCP 14, RFC 2119, March 1997.
 
-    [CD98]         Conta, A. and S. Deering, "Internet Control Message
 
-                   Protocol (ICMPv6) for the Internet Protocol Version 6
 
-                   (IPv6) Specification", RFC 2463, December 1998.
 
-    [DH98]         Deering, S., and R. Hinden, "Internet Protocol,
 
-                   Version 6 (IPv6) Specification", RFC 2460, December
 
-                   1998.
 
-    [Eas05]        3rd Eastlake, D., "Cryptographic Algorithm
 
-                   Implementation Requirements For Encapsulating Security
 
-                   Payload (ESP) and Authentication Header (AH)", RFC
 
-                   4305, December 2005.
 
-    [HarCar98]     Harkins, D. and D. Carrel, "The Internet Key Exchange
 
-                   (IKE)", RFC 2409, November 1998.
 
-    [Kau05]        Kaufman, C., Ed., "The Internet Key Exchange (IKEv2)
 
-                   Protocol", RFC 4306, December 2005.
 
-    [Ken05a]       Kent, S., "IP Encapsulating Security Payload (ESP)",
 
-                   RFC 4303, December 2005.
 
-    [Ken05b]       Kent, S., "IP Authentication Header", RFC 4302,
 
-                   December 2005.
 
-    [MD90]         Mogul, J. and S. Deering, "Path MTU discovery", RFC
 
-                   1191, November 1990.
 
-    [Mobip]        Johnson, D., Perkins, C., and J. Arkko, "Mobility
 
-                   Support in IPv6", RFC 3775, June 2004.
 
-    [Pos81a]       Postel, J., "Internet Protocol", STD 5, RFC 791,
 
-                   September 1981.
 
-    [Pos81b]       Postel, J., "Internet Control Message Protocol", RFC
 
-                   792, September 1981.
 
- Kent & Seo                  Standards Track                    [Page 98]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    [Sch05]        Schiller, J., "Cryptographic Algorithms for use in the
 
-                   Internet Key Exchange Version 2 (IKEv2)", RFC 4307,
 
-                   December 2005.
 
-    [WaKiHo97]     Wahl, M., Kille, S., and T. Howes, "Lightweight
 
-                   Directory Access Protocol (v3): UTF-8 String
 
-                   Representation of Distinguished Names", RFC 2253,
 
-                   December 1997.
 
- Informative References
 
-    [CoSa04]       Condell, M., and L. Sanchez, "On the Deterministic
 
-                   Enforcement of Un-ordered Security Policies", BBN
 
-                   Technical Memo 1346, March 2004.
 
-    [FaLiHaMeTr00] Farinacci, D., Li, T., Hanks, S., Meyer, D., and P.
 
-                   Traina, "Generic Routing Encapsulation (GRE)", RFC
 
-                   2784, March 2000.
 
-    [Gro02]        Grossman, D., "New Terminology and Clarifications for
 
-                   Diffserv", RFC 3260, April 2002.
 
-    [HC03]         Holbrook, H. and B. Cain, "Source Specific Multicast
 
-                   for IP", Work in Progress, November 3, 2002.
 
-    [HA94]         Haller, N. and R. Atkinson, "On Internet
 
-                   Authentication", RFC 1704, October 1994.
 
-    [NiBlBaBL98]   Nichols, K., Blake, S., Baker, F., and D. Black,
 
-                   "Definition of the Differentiated Services Field (DS
 
-                   Field) in the IPv4 and IPv6 Headers", RFC 2474,
 
-                   December 1998.
 
-    [Per96]        Perkins, C., "IP Encapsulation within IP", RFC 2003,
 
-                   October 1996.
 
-    [RaFlBl01]     Ramakrishnan, K., Floyd, S., and D. Black, "The
 
-                   Addition of Explicit Congestion Notification (ECN) to
 
-                   IP", RFC 3168, September 2001.
 
-    [RFC2401]      Kent, S. and R. Atkinson, "Security Architecture for
 
-                   the Internet Protocol", RFC 2401, November 1998.
 
-    [RFC2983]      Black, D., "Differentiated Services and Tunnels", RFC
 
-                   2983, October 2000.
 
-    [RFC3547]      Baugher, M., Weis, B., Hardjono, T., and H. Harney,
 
-                   "The Group Domain of Interpretation", RFC 3547, July
 
-                   2003.
 
- Kent & Seo                  Standards Track                    [Page 99]
 
- RFC 4301              Security Architecture for IP         December 2005
 
-    [RFC3740]      Hardjono, T. and B.  Weis, "The Multicast Group
 
-                   Security Architecture", RFC 3740, March 2004.
 
-    [RaCoCaDe04]   Rajahalme, J., Conta, A., Carpenter, B., and S.
 
-                   Deering, "IPv6 Flow Label Specification", RFC 3697,
 
-                   March 2004.
 
-    [Sch94]        Schneier, B.,  Applied Cryptography, Section 8.6, John
 
-                   Wiley & Sons, New York, NY, 1994.
 
-    [Shi00]        Shirey, R., "Internet Security Glossary", RFC 2828,
 
-                   May 2000.
 
-    [SMPT01]       Shacham, A., Monsour, B., Pereira, R., and M. Thomas,
 
-                   "IP Payload Compression Protocol (IPComp)", RFC 3173,
 
-                   September 2001.
 
-    [ToEgWa04]     Touch, J., Eggert, L., and Y. Wang, "Use of IPsec
 
-                   Transport Mode for Dynamic Routing", RFC 3884,
 
-                   September 2004.
 
-    [VK83]         V.L. Voydock & S.T. Kent, "Security Mechanisms in
 
-                   High-level Networks", ACM Computing Surveys, Vol. 15,
 
-                   No. 2, June 1983.
 
- Authors' Addresses
 
-    Stephen Kent
 
-    BBN Technologies
 
-    10 Moulton Street
 
-    Cambridge, MA  02138
 
-    USA
 
-    Phone: +1 (617) 873-3988
 
-    EMail: kent@bbn.com
 
-    Karen Seo
 
-    BBN Technologies
 
-    10 Moulton Street
 
-    Cambridge, MA  02138
 
-    USA
 
-    Phone: +1 (617) 873-3152
 
-    EMail: kseo@bbn.com
 
- Kent & Seo                  Standards Track                   [Page 100]
 
- RFC 4301              Security Architecture for IP         December 2005
 
- Full Copyright Statement
 
-    Copyright (C) The Internet Society (2005).
 
-    This document is subject to the rights, licenses and restrictions
 
-    contained in BCP 78, and except as set forth therein, the authors
 
-    retain all their rights.
 
-    This document and the information contained herein are provided on an
 
-    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
 
-    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
 
-    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
 
-    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
 
-    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
 
-    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
 
- Intellectual Property
 
-    The IETF takes no position regarding the validity or scope of any
 
-    Intellectual Property Rights or other rights that might be claimed to
 
-    pertain to the implementation or use of the technology described in
 
-    this document or the extent to which any license under such rights
 
-    might or might not be available; nor does it represent that it has
 
-    made any independent effort to identify any such rights.  Information
 
-    on the procedures with respect to rights in RFC documents can be
 
-    found in BCP 78 and BCP 79.
 
-    Copies of IPR disclosures made to the IETF Secretariat and any
 
-    assurances of licenses to be made available, or the result of an
 
-    attempt made to obtain a general license or permission for the use of
 
-    such proprietary rights by implementers or users of this
 
-    specification can be obtained from the IETF on-line IPR repository at
 
-    http://www.ietf.org/ipr.
 
-    The IETF invites any interested party to bring to its attention any
 
-    copyrights, patents or patent applications, or other proprietary
 
-    rights that may cover technology that may be required to implement
 
-    this standard.  Please address the information to the IETF at ietf-
 
-    ipr@ietf.org.
 
- Acknowledgement
 
-    Funding for the RFC Editor function is currently provided by the
 
-    Internet Society.
 
- Kent & Seo                  Standards Track                   [Page 101]
 
 
  |