LinuxovΘ noviny | 08-09/98 | ||
| |||
┌vodJi╛ p°ibli╛n∞ dva roky probφhß prßce na v²vojovΘ °ad∞ linuxov²ch kernel∙ 2.1 a v souΦasnΘ dob∞ sm∞°uje k vyvrcholenφ v podob∞ stabilnφho release 2.2. Za tuto dlouhou dobu se zm∞nily spousty v∞cφ v prakticky v╣ech koutech jßdra, nevyjφmaje ani sφ╗ovΘ subsystΘmy, ba naopak znaΦnΘ procento zm∞n bylo prßv∞ v nich.Tento Φlßnek se sna╛φ formou alespo≥ trochu p°ehlednou Φtenß°i osv∞tliti, co novΘho p°inß╣φ Linux 2.1 (respektive co p°inese Linux 2.2) ohledn∞ sφtφ ve srovnßnφ s p°edchozφ stabilnφ verzφ 2.0. P∙vodn∞ byl tento text p°ednesen v kv∞tnu 1998 jako referßt v rßmci LinuxovΘho seminß°e MFF UK http://sunsite.mff.cuni.cz/linux/seminar/Linux.shtml. Zde se autor sna╛φ o pon∞kud systematiΦt∞j╣φ a ·pln∞j╣φ podßnφ tΘho╛ tΘmatu. P°i rozsahu sφ╗ovΘ podpory v Linuxu a zejmΘna pak p°i rozsahu diskutovan²ch novinek jsou pouze dv∞ mo╛nosti, jak tento Φlßnek m∙╛e dopadnout: bu∩to bude ne·pln² (prost∞ se o mΘn∞ d∙le╛it²ch Φi mΘn∞ zajφmav²ch v∞cech nebude zmi≥ovat) a nebo bude sßhodlouh², nudn² a v∞t╣ina Φtenß°∙ jej p°ed polovinou odlo╛φ jako vyΦerpßvajφcφ, a to nejen tΘma. Pokusil jsem se vybrat si variantu prvnφ jako╛to men╣φ z obou zel.
TCP/IPV oblasti TCP/IP se toho zm∞nilo snad nejvφce. Prakticky cel² k≤d obhospoda°ujφcφ tuto sadu protokol∙ se doΦkal p°epsßnφ od zßkladu (n∞kdy i n∞kolikanßsobnΘho), obvykle zßsluhou nejv∞t╣φho ze sφ╗ov²ch mßg∙ Alexeje Kuzn∞cova.Jeliko╛ klasickΘ UNIXovΘ (z BSD UNIXu pochßzejφcφ) p°φkazy ji╛ dlouhou dobu nepostaΦujφ (nejen implementaΦn∞, ale zejmΘna svou "dinosau°φ" koncepcφ neberoucφ p°φli╣ na v∞domφ dßvno ji╛ b∞╛nΘ v∞ci jako je nap°. classless routing ke konfiguraci v╣ech parametr∙ linuxovΘho TCP/IP, vznikla novß utilita krßtkΘho a v²sti╛nΘho jmΘna ip http://ftp.gts.cz/FTP/pub/MIRRORS/ftp.inr.ac.ru/ip-routing/ syntaxφ v mnoha ohledech podobnß p°φkaz∙m router∙ firmy Cisco http://www.cisco.com a pro pou╛φvßnφ velice ╣ikovnß. LeΦ bohu╛el zatφm bez jedinΘho °ßdku dokumentace, nepoΦφtaje v to zabudovan² help popisujφcφ syntaxi p°φkaz∙. T°φdy adres (v dne╣nφm sv∞t∞ majφcφ v²znam Φist∞ historick²) ji╛ nejsou v kernelu podporovßny, p°i zaklßdßnφ routy Φi konfiguraci interfacu je ji╛ nutno zadat vedle adresy takΘ netmask Φi dΘlku prefixu. ╚etnΘ parametry protokol∙ je nynφ mo╛no nastavovat p°es sysctl, p°φpadn∞ pomocφ interfacu v /proc/sys/net p°φmo ze shellu. Viz dokumentace od utility ip :-) Socket HashingP°ed del╣φ dobou se k u╣φm Davida Millera doneslo, ╛e FreeBSD mß n∞kolikanßsobn∞ rychlej╣φ p°i°azovßnφ p°φchozφch packet∙ ke spojenφm ne╛ m∞l tehdej╣φ Linux. Po cca t²dnu prßce vznikl nov² k≤d pro socket hashing, kter² tyto v∞ci °e╣φ n∞kolikanßsobn∞ rychleji ne╛ FreeBSD.
IP AliasingZcela se zm∞nila podpora alias∙ za°φzenφ (p∙vodnφ eth0:1 apod.). Dnes ji╛ p∙vodnφ aliasy neexistujφ, leΦ ka╛dß sφ╗ovß karta m∙╛e mφt mimo primßrnφ IP adresy je╣t∞ libovoln∞ mnoho adres sekundßrnφch. P∙vodnφ interface s dvojteΦkami ve jmΘnech za°φzenφ byl zachovßn pro kompatibilitu, nicmΘn∞ v detailech se mφrn∞ li╣φ.
IP RoutingLinux ji╛ nemß jedinou routovacφ tabulku, ba naopak tabulek m∙╛e existovat vφce a za pomoci konfigurovateln²ch pravidel je mo╛no vybφrat pro ka╛d² p°φchozφ packet, podle kterΘ tabulky bude routovßn, a to na zßklad∞ zdrojovΘ a cφlovΘ adresy a dal╣φch parametr∙, jako je nap°φklad TOS (Type Of Service) a interface, ze kterΘho packet p°i╣el. Tento mechanismus umo╛≥uje velice p∞kn²m zp∙sobem implementovat jak policy based routing, tak routing by TOS i spoustu jin²ch trik∙.Rovn∞╛ p°i p°i°azenφ IP adresy interfacu automaticky vznikajφ device routy a p°i odkonfigurovßnφ samy mizφ. Toto se p°ipravovalo ji╛ pro kernel 2.0, nicmΘn∞ kv∙li problΘm∙m s kompatibilitou to bylo odlo╛eno o release pozd∞ji. K dispozici je Equal Cost Multipath, to jest distribuce packet∙ mezi n∞kolik ekvivalentnφch polo╛ek v routovacφ tabulce.
TCPTCP bylo rovn∞╛ prakticky od zßkladu p°epsßno, z v∞t╣iny zßsluhou Davida Millera. Nynφ mß o dost lep╣φ logiku timeout∙ a retransmit∙ a zejmΘna podporuje n∞kolik nov∞ standardizovan²ch roz╣φ°enφ:
FirewallingStejn∞ jako verze 2.0, i 2.1 p°inß╣φ zcela p°epracovan² systΘm firewallingu. Do kernelu byla koneΦn∞ za°azena podpora IP Firewalling Chains http://www.adelaide.net.au/~rustcorp/ipfwchains/ umo╛≥ujφcφ °et∞zenφ filtr∙ (co╛ je jednak rychlej╣φ, jednak snaz╣φ na ·dr╛bu). Tato zm∞na op∞t nenφ zp∞tn∞ kompatibilnφ, firewall je nynφ nutno konfigurovat nov²m programem ipfwchains. Podrobnosti viz Φlßnek v Φφsle 3/1998 Linuxov²ch novin.
MasqueradingP°ibyla podpora pro p°eklad adres v dal╣φch protokolech, rovn∞╛ pak mo╛nost o╣et°ovat p°eklad protokol∙ prost°ednictvφm dΘmona b∞╛φcφho mimo kernel (viz balφk ipautofw ftp://ftp.netis.com/pub/members/rlynch/).Masquerading se nynφ konfiguruje pomocφ programu ipmasqadm http://juanjox.home.ml.org/. K dispozici je tΘ╛ Port Forwarding http://www.monmouth.demon.co.uk/ipsubs/portforwarding.html umo╛≥ujφcφ p°esm∞rovßvat vybranß TCP spojenφ na zadan² stroj a zadan² port (u╛iteΦnΘ nap°φklad tehdy, chcete-li mφt WWW server za firewallem na poΦφtaΦi s internφ adresou a forwardovat v╣echna spojenφ s portem 80 firewallu na tento poΦφtaΦ). Konfiguruje se programem ipportfw ftp://ftp.compsoc.net/users/steve/ipportfw/linux21/.
Network Address Translation (NAT)V souvislosti s nov²m routovacφm k≤dem je podporovßno p°eklßdßnφ IP adres, prozatφm pouze p°φpady s navzßjem jednoznaΦn²m p°i°azenφm. (Tedy m∙╛ete si kup°φkladu nechat p°eklßdat Φßst adres internφ sφt∞ na ve°ejn∞ dostupnΘ adresy bez rekonfigurace internφch poΦφtaΦ∙.)Plßnuje se sjednocenφ tohoto mechanismu s masqueradingem, co╛ p°inese mo╛nost jak statickΘho, tak dynamickΘho p°ekladu libovolnΘho poΦtu adres na libovoln² jin² poΦet.
TunnelingLinux se tΘ╛ nauΦil lΘpe tunelovat (packety, nikoliv banky - zdß se, ╛e studiem kvantovΘ ekonomie se linuxovφ hacke°i dosud nezab²vajφ). K dispozici je jak klasick² protokol IP in IP (nynφ ov╣em v²razn∞ lΘpe implementovan²), tak GRE (Generic Routing Encapsulation, umo╛≥uje tunelovßnφ r∙zn²ch protokol∙, multicasting, soft state management apod.) a SIT (Simple Internet Transition, p°enos IPv6 p°es IPv4).
Fast SwitchingTato znaΦn∞ experimentßlnφ feature umo╛≥uje p°φm² p°enos packet∙ mezi buffery jednotliv²ch sφ╗ov²ch karet bez "p°estupu" v hlavnφ pam∞ti, co╛ znateln∞ urychluje routing. Autor (ji╛ zmi≥ovan² Alexej Kuzn∞cov) tvrdφ, ╛e pak jeho vesm∞s normßlnφ PC mß jen o 30% men╣φ propustnost p°i forwardovßnφ ne╛ routery Cisco °ady 7200. Bohu╛el zatφm je tato vymo╛enost dostupnß pouze se sφ╗ov²mi kartami vybaven²mi chipsetem Digital 21140 (DECChip Tulip) Φi 8390 (nutnß specißlnφ podpora v driveru).
IP AutoconfigurationAutomatickß konfigurace IP prost°ednictvφm protokol∙ BOOTP Φi RARP ji╛ nenφ spojena s NFS-rootem a lze ji pou╛φvat i samostatn∞.
NetlinkNetlink je nov² mechanismus pro komunikaci mezi u╛ivatelsk²mi programy (nejΦast∞ji routovacφmi dΘmony) a sφ╗ovou vrstvou. Umo╛≥uje mimo jinΘ:
IP version 6Linux 2.1 podporuje nov² protokol IPv6 http://playground.sun.com/pub/ipng/html/ipng-main.html, kter² by m∞l b∞hem pßr let zvolna zaΦφt nahrazovat p∙vodnφ IPv4 a zbavit tak sv∞t problΘm∙ spojen²ch s r∙stem Internetu.IPv6 v kernelu funguje bez v∞t╣φch problΘm∙ (i kdy╛ tento protokol samoz°ejm∞ dosud nenφ tak vylad∞n² jako IPv4 a je v neustßlΘm v²voji), ov╣em na slu╣nou podporu v aplikacφch si budeme muset je╣t∞ n∞jakou dobu poΦkat. Viz tΘ╛ Linux IPv6 FAQ/HOWTO. http://www.linuxhq.com/IPv6/index.html
Berkeley Packet Filter (BPF)P°eci jen jsme se v n∞Φem inspirovali systΘmem BSD: Generic Packet Filtering. Tato feature umo╛≥uje u╛ivatelsk²m program∙m posφlat kernelu packetovΘ filtry v jednoduchΘm byte-k≤du a tak si vybφrat, kterΘ packety je zajφmajφ a kterΘ ne. Nezb²vß ne╛ doufat, ╛e se tcpdump a podobnΘ programy tuto vymo╛enost brzy nauΦφ pou╛φvat, a nebudou tak ztrßcet drahocenn² Φas procesoru p°enß╣enφm packet∙, kterΘ samy po trivißlnφ anal²ze zahodφ.
DriveryP°ibyla spousta nov²ch driver∙ sφ╗ov²ch karet a je╣t∞ v∞t╣φ mno╛stvφ jich bylo aktualizovßno. Viz strßnka o driverech http://cesdis.gsfc.nasa.gov/linux/drivers/ od Donalda Beckera.TΘ╛ se zaΦφnajφ objevovat drivery na n∞kterΘ synchronnφ sΘriovΘ karty, zejmΘna pak zßsluhou Alana Coxe.
SoundmodemP°φznivci packet radia nynφ mohou pou╛φvat softwarovΘ packet modemy vyu╛φvajφcφ zvukovou kartu jako A/D a D/A p°evodnφk. Za tuto mo╛nost Linux vd∞Φφ Thomasi Sailerovi. ZdrojovΘ texty soundmodem∙ jsou velice zajφmav²m Φtenφm... Na druhou stranu Linux dosud nepodporuje (a po del╣φ diskusi na mailing-listu kernelov²ch v²vojß°∙ to vypadß, ╛e ani podporovat nebude) tak °eΦenΘ WinModemy, co╛ jsou "vylevn∞nΘ" ΦßsteΦn∞ softwarovΘ modemy pro b∞╛nΘ telefonnφ linky. Hlavnφm d∙vodem je notorickß neochota firem tyto modemy vyrßb∞jφcφ k jakΘkoliv spoluprßci.
Syscall sendfileP°ibyla novß systΘmovß slu╛ba umo╛≥ujφcφ kopφrovßnφ dat mezi souborem a libovoln²m file-handlem. Nejednß se sice o Φist∞ sφ╗ovou zßle╛itost, nicmΘn∞ prßv∞ u sφ╗ov²ch aplikacφ to m∙╛e b²t velice u╛iteΦnΘ (nap°. FTP server posφlajφcφ data p°φmo ze souboru do socketu bez kopφrovßnφ p°es adresnφ prostor FTP daemona).
Sφ╗ovΘ filesystΘmyNFSImplementace NFS (Network File System firmy SUN) doznala znaΦn²ch zm∞n. Nynφ mß podstatn∞ lep╣φ cacheovßnφ a tΘ╛ by m∞l b²t schopen fungovat p°es TCP.Na druhou stranu, NFS je sice podporovßno v UNIXovΘm sv∞t∞ prakticky ka╛d²m systΘmem, leΦ je to neobyΦejn∞ mizern∞ navr╛en² protokol, kter² ji╛ dlouhß lΘta Φekß na n∞koho, kdo bude mφt dost odvahy na to, aby jej nahradil n∞Φφm lep╣φm. Mßte-li o prßci na podobnΘm projektu zßjem, nevßhejte a ozv∞te se autorovi tohoto Φlßnku http://atrey.karlin.mff.cuni.cz/~mj/plist.html.
Kernel NFS Server (knfsd)Olaf Kirch vytvo°il NFS server b∞╛φcφ v kernelu. Na prvnφ pohled by se mohlo zdßt, ╛e to je krßsn² p°φklad n∞Φeho, co se mß °e╣it jako user-level daemon, ale bohu╛el, Olafovo °e╣enφ je podstatn∞ rychlej╣φ (u╣et°φ se kopφrovßnφ v╣ech dat mezi kernelem a adresnφm prostorem p°φslu╣nΘho dΘmona). Na druhou stranu, mo╛nß by stßlo za zamy╣lenφ, jestli by se podobnΘ rychlosti nedalo dosßhnout ╣ikovn²m pou╛itφm (a p°φpadn∞ roz╣φ°enφm) mechanismu sendfile.
CODALinux nynφ mß i implementaci distribuovanΘho filesystΘmu CODA. Bli╛╣φ informace viz strßnky projektu CODA http://www.coda.cs.cmu.edu/.
Automounter (autofs)KoneΦn∞ d∙stojnß nßhrada za starΘho auto-mount daemona (amd), to jest n∞co, co umo╛≥uje spolehliv∞ automaticky mountovat disky p°i prvnφm pokusu o p°φstup do danΘho adresß°e.
Sv∞t NovelluStran podpory sφtφ sv∞ta novellskΘho mßme pouze dv∞ novinky: jednou je podpora protokolu SPX (Sequence Packet Exchange) a druhou pak v╣emo╛nß vylep╣enφ NCPFS.Pom∞rn∞ podrobnΘ povφdßnφ o t∞chto v∞cech je v kv∞tnov²ch Linuxov²ch novinßch.
Packet SocketP∙vodnφ metoda p°φmΘho p°φstupu k packet∙m (op∞t podivnΘ d∞dictvφ z archaick²ch UNIX∙) byla nahrazena metodou rozumnou a konsistentnφ, konkrΘtn∞ zavedenφm novΘho protokolu PF_PACKET, kter² umo╛≥uje p°φmo vysφlat i p°ijφmat jak kompletnφ link-level packety, tak packety zbavenΘ linkov²ch hlaviΦek.D∙sledky: tcpdump ji╛ nemusφ podporovat v╣echny existujφcφ linkovΘ vrstvy - kdy╛ link layer nepoznß, prost∞ si nechß packety posφlat "rozbalenΘ" a obsahu porozumφ. KoneΦn∞ je mo╛nΘ Φist∞ implementovat servery, jako╛ i klienty pro BOOTP a DHCP a neuchylovat se kv∙li tomu k podivn²m trik∙m typu p°i°azovßnφ nulovΘ IP adresy interfacu, co╛ stejn∞ s kernelem 2.1 nefunguje.
Packet SchedulingV²znamn²m p°φnosem je zavedenφ nastaviteln²ch a vym∞niteln²ch packet queue manager∙ pro jednotlivß sφ╗ovß za°φzenφ. Pro ka╛d² interface si nynφ m∙╛ete vybrat, jak p°esn∞ bude spravovßna jeho odchozφ fronta a jak se budou °e╣it p°φpady, kdy mφsto na packety bude dochßzet. Tento mechanismus °e╣φ hned n∞kolik problΘm∙ najednou:
K tomuto v╣emu je je╣t∞ nutnΘ p°idat algoritmus, kter² packet∙m p°id∞luje jejich priority. M∙╛ete si vybrat z nßsledujφcφch mo╛nostφ:
V╣e se konfiguruje novou utilitou tc, dokumentace jako obvykle zatφm ╛ßdnß.
Acorn EconetPodporovßn jest i Econet, podivnß to proprietßrnφ sφ╗ navr╛enß a pou╛φvanß firmou Acorn, a to jak po p∙vodnφch kartßch od Acornu, tak po jin²ch sφtφch (dßrkovΘ balenφ v UDP).
WAN RouterLinux 2.1 rovn∞╛ obsahuje kostru k≤du pro WAN routing - na ni se mohou "p°iv∞╣ovat" modulßrnφ drivery pro Frame Relay a jinΘ WAN protokoly.Viz strßnka o X.25 a Frame-Relay sφ╗ovßnφ http://users.skynet.be/kribonne/linux-x.25/index_old.html.
X25 a LAPBTi ne╣╗astnφci, kte°i pot°ebujφ pou╛φvat sφ╗∞ zalo╛enΘ na protokolu X25 (opravdu je lituji, n∞co tak mizern∞ navr╛enΘho jsem snad v ╛ivot∞ nevid∞l ... mo╛nß s v²jimkou NFS :-)), naleznou jistou podporu tohoto archaismu, Φφtaje v to i LAPB (ni╛╣φ vrstva urΦenß pro spolehliv² p°enos datagram∙ "na dost°el").
Network Block DevicePavel Machek stvo°il driver, kter² po TCP spojenφ emuluje blokovΘ za°φzenφ (zatφm bez ioctl a podobn²ch fines, nicmΘn∞ vcelku pou╛iteln∞). Viz domßcφ strßnka projektu NBD http://atrey.karlin.mff.cuni.cz/~pavel/nbd/nbd.html.Z odd∞lenφ ╣patn²ch zprßv: Ani NBD nepom∙╛e k bezbolestnΘmu (Φt∞te: nepadajφcφmu) swapovßnφ po sφti. K tomu jsou nutnΘ netrivißlnφ zm∞ny v memory-managementu a ty se rozhodn∞ hned tak nepoda°φ prosadit... Pohled do budoucnosti╚asu na v²voj bylo bohu╛el k dispozici pouze koneΦnΘ mno╛stvφ, tak╛e zdaleka ne v╣echno, co si kdo p°ßl, bylo dokonΦeno. Na verzi 2.3 bylo nap°φklad odlo╛eno:
Zßv∞remTento v²Φet "sφ╗ov²ch novinek" ukazuje, ╛e jßdra 2.1 toho stran sφ╗ovßnφ opravdu mohou nabφdnout mnoho novΘho. Za zmφnku ov╣em stojφ, ╛e ani kernel∙m 2.0 se vylep╣ovßnφ nevyhnulo - i tam byly postupn∞ (po d∙kladnΘm prozkou╣enφ ve 2.1) n∞kterΘ v∞ci z 2.1 p°eneseny: nap°φklad autofs Φi socket hashing.![]() |