Permalänk
Medlem

IP fragmentering

Hej!

Om jag har ett 4000 byte stort IPv4 datagram som korsar 10 länkar påväg från A till B. Om länk 1,2,4 och 7 har MTU på 5000 bytes och de andra länkarna har en MTU på 1500 bytes. Sen ska jag rita en figur och förklara hur fragmenteringen går till och hur många fragmenteringar(om man säger så) datagrammet är fragmenterat/defragmenterad när den korsar varje länk mellan A och B.

Vet hur man ritar en figur då man fragmenterar, man bara delar upp men om jag delat upp på länk 3 som i figuren nedan, måste jag slå ihop dem till ett stort vid länk 5 och 7 då MTU på dem är 5000? Eller räcker det att göra som jag gjort nedan?

Permalänk
Medlem

Är det en skoluppgift du försöker att göra?

Visa signatur

| Citera för svar! | Gilla bra inlägg! |

Permalänk
Medlem
Skrivet av BrusE:

Är det en skoluppgift du försöker att göra?

Ja eller försöker öva inför ett prov. Känns konstigt att man inte verkar få posta skoluppgifter här men i andra delar i forumet, t.ex i Programmeringsdelen är det helt lugnt haha.

Permalänk
Inaktiv

LiU? : - )

Permalänk
Medlem
Skrivet av anon205911:

LiU? : - )

Maybe

Permalänk
Datavetare

Du har helt rätt i din bild, intermediära routers kommer aldrig samla ihop fragment bara för deras utgående länk har en MTU som skulle kunna hantera detta.

Däremot är det endast Internet protokoll version 4, IPv4, som fungerar på det sättet och bara för paket som inte har den s.k "don't fragment" flaggan satt. Internet protokoll version 6, IPv6, fungerar precis som IPv4 där "don't fragment" alltid är satt. I detta läge måste avsändaren se till att varje fragment inte är större än att det kan passera alla intermediära länkar, routers får inte genera nya fragment av paket de vidarebefordrar.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Du har helt rätt i din bild, intermediära routers kommer aldrig samla ihop fragment bara för deras utgående länk har en MTU som skulle kunna hantera detta.

Däremot är det endast Internet protokoll version 4, IPv4, som fungerar på det sättet och bara för paket som inte har den s.k "don't fragment" flaggan satt. Internet protokoll version 6, IPv6, fungerar precis som IPv4 där "don't fragment" alltid är satt. I detta läge måste avsändaren se till att varje fragment inte är större än att det kan passera alla intermediära länkar, routers får inte genera nya fragment av paket de vidarebefordrar.

Okej tack för svar! Så om jag förstår det rätt så kommer routers i IPv4 inte samla ihop fragment till ett större bara för att den länken har en MTU som tillåter större paket. Enda felet i min bild är väl att jag inte ritat upp alla länkar men det kan jag förstås göra.

Alright så om don't fragment inte är satt fungerar det som på min bild, men om jag hade fått informationen att don't fragment var 1 så hade den inte kunnat dela upp paketet i fragment? Nästa deluppgift jag hade var att rita figuren och förklara vad som ändras om man byter till IPv6(om man har samma MTU som tidigare osv). Då är det bara rita upp en bild där ett stort paket på 4000 byte går igenom alla länkar eller hur ritar jag en bild där jag själv ser till att varje fragment inte är större än att det kan passera alla länkar? Eftersom paketet är 4000 bytes så kanske jag får dela upp det i 3 själv direkt i början vid A på bilden och sen skicka det genom alla intermediära länkar?

Permalänk
Hedersmedlem
Skrivet av BrusE:

Är det en skoluppgift du försöker att göra?

Skrivet av mhj:

Ja eller försöker öva inför ett prov. Känns konstigt att man inte verkar få posta skoluppgifter här men i andra delar i forumet, t.ex i Programmeringsdelen är det helt lugnt haha.

Det är helt okej att be om hjälp och att hjälpa till med skoluppgifter, så länge det handlar just om att hjälpa till. Det vi inte uppskattar är när det blir ett rent "facit". Det beror på att syftet med detta forum i första hand är att diskutera och dela kunskap med alla.

Permalänk
Medlem
Skrivet av widL:

Det är helt okej att be om hjälp och att hjälpa till med skoluppgifter, så länge det handlar just om att hjälpa till. Det vi inte uppskattar är när det blir ett rent "facit". Det beror på att syftet med detta forum i första hand är att diskutera och dela kunskap med alla.

Ah okej då är jag med. Då gjorde jag det bra då eftersom jag hade tänkt helt rätt på min uppgift

Permalänk
Medlem

Det borde vara okej men konkreta svar eller "facit" på skoluppgifter som man tar hem, för man kan lika bra googla eller söka sig fram till svar vilket jag rekommenderar. Men svar till prov frågor är en helt annan grej.

Det är bra att du lär dig, men som skrevs så används dont fragment i path MTU discovery vilket kommer droppa paketet när den ser att den inte matchar mtu på den utgående porten. Men det finns route-map konfigs man kan göra på Cisco utrustning för att få det att fungera t.ex men du har kanske inte kommit så långt i dina studier eller ens förståelse om OSPF MTU mismatch som kan skapa länk flappningar.

Men man måste ju ner på grunderna i layer-2 och layer-3 och förstå dem innan man tar nästa steg upp

Permalänk
Datavetare

För IPv6 (och även IPv4 om man sätter "don't frag" flaggan) används som redan nämnts en process som kallas "Path MTU discovery" för att den nod som är källa till paketet (den som har sin IP-adress som "source" i paketet) ska lära sig vilken den minsta länken är (för tillfället, vägen genom Internet är dynamisk men rätt säker på att du kan ignorera detta i din uppgift).

Grunden att få detta att fungera är Internet Control Protocol version 6, ICMPv6, mer specifikt för detta fall är meddelande "packet too big" (och för IPv4-paket med "don't frag" satt är det ICMP och meddelande "fragmentation needed").

Och som skrevs ovan, i detta fall får inte intermediära noder (routers) skapa nya fragment så i din bild ska alla fragment skapas på ursprungsnoden, rätt säker på att du fixar att rita in hur "ICMPv6 - packet too big" ska användas för att det ska fungera.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av VexedRelic:

Det borde vara okej men konkreta svar eller "facit" på skoluppgifter som man tar hem, för man kan lika bra googla eller söka sig fram till svar vilket jag rekommenderar. Men svar till prov frågor är en helt annan grej.

Det är bra att du lär dig, men som skrevs så används dont fragment i path MTU discovery vilket kommer droppa paketet när den ser att den inte matchar mtu på den utgående porten. Men det finns route-map konfigs man kan göra på Cisco utrustning för att få det att fungera t.ex men du har kanske inte kommit så långt i dina studier eller ens förståelse om OSPF MTU mismatch som kan skapa länk flappningar.

Men man måste ju ner på grunderna i layer-2 och layer-3 och förstå dem innan man tar nästa steg upp

Skrivet av Yoshman:

För IPv6 (och även IPv4 om man sätter "don't frag" flaggan) används som redan nämnts en process som kallas "Path MTU discovery" för att den nod som är källa till paketet (den som har sin IP-adress som "source" i paketet) ska lära sig vilken den minsta länken är (för tillfället, vägen genom Internet är dynamisk men rätt säker på att du kan ignorera detta i din uppgift).

Grunden att få detta att fungera är Internet Control Protocol version 6, ICMPv6, mer specifikt för detta fall är meddelande "packet too big" (och för IPv4-paket med "don't frag" satt är det ICMP och meddelande "fragmentation needed").

Och som skrevs ovan, i detta fall får inte intermediära noder (routers) skapa nya fragment så i din bild ska alla fragment skapas på ursprungsnoden, rätt säker på att du fixar att rita in hur "ICMPv6 - packet too big" ska användas för att det ska fungera.

Alright så det fungerar såhär om jag har förstått det rätt:
IPv4 - om don't fragment inte är satt så fungerar det som på min bild i trådstart. Om don't fragment är satt till 1 så kommer alla routrar som får paket som har större MTU än någon länk droppa paketet och skicka tillbaks ICMP som säger "fragmentation needed" och MTU värdet, eftersom den då kommer behöva dela upp paketet.
IPv6 - Här finns inte fragmentering utan om en router får ett paket som har större MTU än någon länk den ska gå igenom, så kommer den droppa paketet och skicka tillbaks ICMPv6 med "packet too big" och MTU värdet.

Här är min bild för IPv6:

Är den korrekt eller har jag missat något?

Permalänk
Medlem

Japp. Icmpgelmeddelandet är mer formellt. Packet too large, don't fragment flag set. Är man ändå inte på det så innehåller Icmp den header som var på originalpaketet för att avsändaren ska veta vilket paket som stoppats.

Pmtu discovery är då man helt enkelt skickar paket med df flaggan satt och genom eventuella icmp-felmeddelanden lär man sig vad maxstorleken är utan fragmentering.

Ett annat sätt att slippa fragmentering i tcp är att använda sig utav mss.

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av Talisker00:

Japp. Icmpgelmeddelandet är mer formellt. Packet too large, don't fragment flag set. Är man ändå inte på det så innehåller Icmp den header som var på originalpaketet för att avsändaren ska veta vilket paket som stoppats.

Pmtu discovery är då man helt enkelt skickar paket med df flaggan satt och genom eventuella icmp-felmeddelanden lär man sig vad maxstorleken är utan fragmentering.

Ett annat sätt att slippa fragmentering i tcp är att använda sig utav mss.

Skickades från m.sweclockers.com

Pratar du om IPv4 eller IPV6? Känns som du blandar lite då i IPv4 finns don't fragment flaggan men inte i IPv6. Så "packet too large" är felkoden för IPv6 medan felkoden för IPv4 är "fragmentation needed" i detta fall. Men varför vill man så gärna undvika fragmentering som Path MTU discovery tekniken vill? Är det för att det tar tid och prestanda att fragmentera hela tiden? Har inte så bra koll på mss men det är väl maximum segment size, dvs maxstorleken på ett paket.

Permalänk
Medlem

Jag pratar bara ip v4.

Fragmentering kan bara ställa till saker. Det går åt cpu till att fragmentera, respektive plocka ihop. Vid packet loss blir det stora bekymmer då den som ska packa ihop originalpaketet låser upp buffrar, men även i de fall som paketen kommer i oordning kan det få tråkiga konsekvenser. Dessutom går det åt mer bandbredd då du får fler header än om du skickar optimal storlek.

Kort sagt. Det finns ingenting att vinna på fragmentering. Det behöver inte vara ett problem heller, men varför riskera något.

Var det inte ping of death som gick ut på att skicka fragmenterade paket till Windows som aldrig gick att sätta ihop?

Skickades från m.sweclockers.com

Permalänk
Medlem

Jo, man kan vid upprättandet av en tcpförbindelse skicka mss (maximum segment size) som gör att själva tcp inte skickar för stora paket som andra sidan inte kan/vill ta emot. Sätt den på 1460 så slipper du större paket än 1500 (ip).

Skickades från m.sweclockers.com

Permalänk
Medlem

Okej men då är jag med och känns bra att jag fått upp rätt bilder! Tack för hjälpen och förklaringarna!