internet networking knowledgebase
KnowledgeBase (10)
Networking related knowledge
Vendor codes
Ethernet hardware addresses are 48 bits, expressed as 12 hexadecimal digits (0-9, plus A-F, capitalized). These 12 hex digits consist of the first/left 6 digits (which should match the vendor of the Ethernet interface within the station) and the last/right 6 digits which specify the interface serial number for that interface vendor.
Ethernet addresses might be written unhyphenated (e.g. 123456789ABC), or with one hyphen (e.g. 123456-789ABC), but should be written hyphenated by octets (e.g. 12-34-56-78-9A-BC).
These addresses are physical station addresses, not multicast nor broadcast, so the second hex digit (reading from the left) will be even, not odd.
According to some informal correspondence, when the IEEE assigns an Ethernet address block, a block of 2**25 is reserved. Both a unicast and a multicast (group address) block, in a pair. Thus multicast groups for vendor-specific uses tend to match the non-multicast vendor assignments with "010000" added. This rule seems to be true for most of the addresses in these files.
A portion of the vendor block address is reportedly assigned serially, with the other portion intentionally assigned randomly. If there is a global algorithm for which addresses are designated to be physical (in a chipset) versus logical (assigned in software), or globally-assigned versus locally-assigned addresses, some of the known addresses do not follow the scheme (e.g AA0003; 02xxxx).
Address checker at: http://www.arcai.com/mac-addressnetcard-brand-checker.html
000001 SuperLAN-2U
000002 BBN (was internal usage only, no longer used)
000009 powerpipes?
00000C Cisco
00000E Fujitsu
00000F NeXT
000010 Hughes LAN Systems (formerly Sytek)
000011 Tektronix
000015 Datapoint Corporation
000018 Webster Computer Corporation Appletalk/Ethernet Gateway
00001A AMD (?)
00001B Novell (now Eagle Technology)
00001C JDR Microdevices generic, NE2000 drivers
00001D Cabletron
00001F Cryptall Communications Corp.
000020 DIAB (Data Intdustrier AB)
000021 SC&C (PAM Soft&Hardware also reported)
000022 Visual Technology
000023 ABB Automation AB, Dept. Q
000024 Olicom
000029 IMC
00002A TRW
00002C NRC - Network Resources Corporation - MultiGate Hub1+, Hub2, etc
000032 GPT Limited (reassigned from GEC Computers Ltd)
000037 Oxford Metrics Ltd
00003B Hyundai/Axil Sun clones
00003C Auspex
00003D AT&T
00003F Syntrex Inc
000044 Castelle
000046 ISC-Bunker Ramo, An Olivetti Company
000048 Epson
000049 Apricot Ltd.
00004B APT -ICL also reported
00004C NEC Corporation
00004F Logicraft 386-Ware P.C. Emulator
000051 Hob Electronic Gmbh & Co. KG
000052 Optical Data Systems
000055 AT&T
000058 Racore Computer Products Inc
00005A SK (Schneider & Koch in Europe and Syskonnect outside of Europe)
00005A Xerox 806 (unregistered)
00005B Eltec
00005D RCE
00005E U.S. Department of Defense (IANA)
00005F Sumitomo
000061 Gateway Communications
000062 Honeywell
000063 Hewlett-Packard LanProbe
000064 Yokogawa Digital Computer Corp
000065 Network General
000066 Talaris
000068 Rosemount Controls
000069 Concord Communications, Inc (although someone said Silicon Graphics)
00006B MIPS
00006D Case
00006E Artisoft, Inc.
00006F Madge Networks Ltd. Token-ring adapters
000073 DuPont
000075 Bell Northern Research (BNR)
000077 Interphase [Used in other systems, e.g. MIPS, Motorola]
000078 Labtam Australia
000079 Networth Incorporated [bought by Compaq, used in Netelligent series]
00007A Ardent
00007B Research Machines
00007D Cray Research Superservers,Inc [Also Harris (3M) (old)]
00007E NetFRAME multiprocessor network servers
00007F Linotype-Hell AG Linotronic typesetters
000080 Cray Communications (formerly Dowty Network Services) [Also shows as "Harris (3M) (new)" and/or "Imagen(?)" elsewhere]
000081 Synoptics
000083 Tadpole Technology [had Optical Data Systems which is wrong according to both]
000084 Aquila (?), ADI Systems Inc.(?)
000086 Gateway Communications Inc. (then Megahertz & now 3com)
000087 Hitachi
000089 Cayman Systems Gatorbox
00008A Datahouse Information Systems
00008E Solbourne(?), Jupiter(?) (I've had confirming mail on Solbourne)
000092 Unisys, Cogent (both reported)
000093 Proteon
000094 Asante MAC
000095 Sony/Tektronix
000097 Epoch
000098 Cross Com
000099 Memorex Telex Corporations
00009F Ameristar Technology
0000A0 Sanyo Electronics
0000A2 Wellfleet
0000A3 Network Application Technology (NAT)
0000A4 Acorn
0000A5 Compatible Systems Corporation
0000A6 Network General (internal assignment, not for products)
0000A7 Network Computing Devices (NCD) X-terminals
0000A8 Stratus Computer, Inc.
0000A9 Network Systems
0000AA Xerox Xerox machines
0000AC Conware Netzpartner [had Apollo, claimed incorrect]
0000AE Dassault Automatismes et Telecommunications
0000AF Nuclear Data Acquisition Interface Modules (AIM)
0000B0 RND (RAD Network Devices)
0000B1 Alpha Microsystems Inc.
0000B3 CIMLinc
0000B4 Edimax
0000B5 Datability Terminal Servers
0000B6 Micro-matic Research
0000B7 Dove Fastnet
0000BB TRI-DATA Systems Inc. Netway products, 3274 emulators
0000BC Allen-Bradley
0000C0 Western Digital now SMC (Std. Microsystems Corp.)
0000C1 Olicom A/S
0000C5 Farallon Computing Inc
0000C6 HP Intelligent Networks Operation (formerly Eon Systems)
0000C8 Altos
0000C9 Emulex Terminal Servers, Print Servers
0000CA LANcity Cable Modems (now owned by BayNetworks)
0000CC Densan Co., Ltd.
0000CD Industrial Research Limited
0000D0 Develcon Electronics, Ltd.
0000D1 Adaptec, Inc. "Nodem" product
0000D2 SBE Inc
0000D3 Wang Labs
0000D4 PureData
0000D7 Dartmouth College (NED Router)
0000D8 old Novell NE1000's (before about 1987?) (also 3Com)
0000DD Gould
0000DE Unigraph
0000E1 Hitachi (laptop built-in)
0000E2 Acer Counterpoint
0000E3 Integrated Micro Products Ltd
0000E4 mips?
0000E6 Aptor Produits De Comm Indust
0000E8 Accton Technology Corporation
0000E9 ISICAD, Inc.
0000ED April
0000EE Network Designers Limited [also KNX Ltd, a former division]
0000EF Alantec (now owned by ForeSystems)
0000F0 Samsung
0000F2 Spider Communications (Montreal, not Spider Systems)
0000F3 Gandalf Data Ltd. - Canada
0000F4 Allied Telesis, Inc.
0000F6 A.M.C. (Applied Microsystems Corp.)
0000F8 DEC
0000FB Rechner zur Kommunikation
0000FD High Level Hardware (Orion, UK)
0000FF Camtec Electronics (UK) Ltd.
000102 BBN (Bolt Beranek and Newman, Inc.) internal usage (not registered)
000143 IEEE 802
000150 Megahertz (now 3com) modem
000163 NDC (National Datacomm Corporation)
000168 W&G (Wandel & Goltermann) [incorrect according to W&G]
0001C8 Thomas Conrad Corp.
0001FA Compaq (PageMarq printers)
000204 Novell NE3200
000205 Hamilton (Sparc Clones)
000216 ESI (Extended Systems, Inc) print servers
000288 Global Village (PCcard in Mac portable)
0003C6 Morning Star Technologies Inc
000400 Lexmark (Print Server)
0004AC IBM PCMCIA Ethernet adapter.
000502 Apple (PCI bus Macs)
00059A PowerComputing (Mac clone)
0005A8 PowerComputing Mac clones
00060D Hewlett-Packard JetDirect token-ring interfaces
000629 IBM RISC6000 system
00067C Cisco
0006C1 Cisco
000701 Racal-Datacom
00070D Cisco 2511 Token Ring
000852 Technically Elite Concepts
000855 Fermilab
0008C7 Compaq
001007 Cisco Systems Catalyst 1900
00100B Cisco Systems
00100D Cisco Systems Catalyst 2924-XL
001011 Cisco Systems Cisco 75xx
00101F Cisco Systems Catalyst 2901
001029 Cisco Systems Catalyst 5000
00102F Cisco Systems Cisco 5000
00104B 3Com 3C905-TX PCI
00105A 3Com Fast Etherlink XL in a Gateway 2000
001060 Billington Novell NE200 Compatible
001079 Cisco 5500 Router
00107A Ambicom (was Tandy?)
00107B Cisco Systems
001083 HP-UX E 9000/889
0010A4 Xircom RealPort 10/100 PC Card
0010A6 Cisco
0010D7 Argosy EN 220 Fast Ethernet PCMCIA
0010F6 Cisco
001700 Kabel
002000 Lexmark (Print Server)
002005 simpletech
002008 Cable & Computer Technology
00200C Adastra Systems Corp
002011 Canopus Co Ltd
002017 Orbotech
002018 Realtek
00201A Nbase
002025 Control Technology Inc (Industrial Controls and Network Interfaces)
002028 Bloomberg
002029 TeleProcessing CSU/DSU (now owned by ADC/Kentrox)
00202B ATML (Advanced Telecommunications Modules, Ltd.)
002035 IBM (International Business Machines) mainframes, Etherjet printers
002036 BMC Software
002042 Datametrics Corp
002045 SolCom Systems Limited
002048 Fore Systems Inc
00204B Autocomputer Co Ltd
00204C Mitron Computer Pte Ltd
002056 Neoproducts
002061 Dynatech Communications Inc
002063 Wipro Infotech Ltd
002066 General Magic Inc
002067 Node Runner Inc
00206B Minolta Co., Ltd Network printers
002078 Runtop Inc
002085 3COM SuperStack II UPS management module
00208A Sonix Communications Ltd
00208B Focus Enhancements
00208C Galaxy Networks Inc
002094 Cubix Corporation
0020A5 Newer Technology
0020A6 Proxim Inc
0020A7 Pairgain Technologies, Inc.
0020AF 3COM Corporation
0020B2 CSP (Printline Multiconnectivity converter)
0020B6 Agile Networks Inc
0020B9 Metricom, Inc.
0020C5 Eagle NE2000
0020C6 NECTEC
0020D0 Versalynx Corp. "The One Port" terminal server
0020D2 RAD Data Communications Ltd
0020D3 OST (Ouet Standard Telematique)
0020D8 NetWave
0020DA Xylan
0020DC Densitron Taiwan Ltd
0020E0 PreMax PE-200 (PCMCIA NE2000-clone card, sold by InfoExpress)
0020E5 Apex Data
0020EE Gtech Corporation
0020F6 Net Tek & Karlnet Inc
0020F8 Carrera Computers Inc
0020FC Matrox
004001 Zero One Technology Co Ltd (ZyXEL?)
004005 TRENDware International Inc.; Linksys; Simple Net; all three reported
004009 Tachibana Tectron Co Ltd
00400B Crescendo (now owned by Cisco)
00400C General Micro Systems, Inc.
00400D LANNET Data Communications
004010 Sonic Mac Ethernet interfaces
004011 Facilities Andover Environmental Controllers
004013 NTT Data Communication Systems Corp
004014 Comsoft Gmbh
004015 Ascom
004017 XCd XJet - HP printer server card
00401C AST Pentium/90 PC (emulating AMD EISA card)
00401F Colorgraph Ltd
004020 Pilkington Communication
004023 Logic Corporation
004025 Molecular Dynamics
004026 Melco Inc
004027 SMC Massachusetts [Had:Sigma (?), maybe the "S"?]
004028 Netcomm
00402A Canoga-Perkins
00402B TriGem
00402F Xlnt Designs Inc (XDI)
004030 GK Computer
004032 Digital Communications
004033 Addtron Technology Co., Ltd.
004036 TribeStar
004039 Optec Daiichi Denko Co Ltd
00403C Forks, Inc.
004041 Fujikura Ltd.
004043 Nokia Data Communications
004048 SMD Informatica S.A.
00404C Hypertec Pty Ltd.
00404D Telecomm Techniques
00404F Space & Naval Warfare Systems
004050 Ironics, Incorporated
004052 Star Technologies Inc
004053 Datum [Bancomm Division] TymServe 2000
004054 Thinking Machines Corporation
004057 Lockheed-Sanders
004059 Yoshida Kogyo K.K.
00405B Funasset Limited
00405D Star-Tek Inc
004066 Hitachi Cable, Ltd.
004067 Omnibyte Corporation
004068 Extended Systems
004069 Lemcom Systems Inc
00406A Kentek Information Systems Inc
00406E Corollary, Inc.
00406F Sync Research Inc
004072 Applied Innovation
004074 Cable and Wireless
004076 AMP Incorporated
004078 Wearnes Automation Pte Ltd
00407F Agema Infrared Systems AB
004082 Laboratory Equipment Corp
004085 SAAB Instruments AB
004086 Michels & Kleberhoff Computer
004087 Ubitrex Corporation
004088 Mobuis NuBus (Mac) combination video/EtherTalk
00408A TPS Teleprocessing Sys. Gmbh
00408C Axis Communications AB
00408E CXR/Digilog
00408F WM-Data Minfo AB
004090 Ansel Communications PC NE2000 compatible twisted-pair ethernet cards
004091 Procomp Industria Eletronica
004092 ASP Computer Products, Inc.
004094 Shographics Inc
004095 Eagle Technologies [UMC also reported]
004096 Telesystems SLW Inc
00409A Network Express Inc
00409C Transware
00409D DigiBoard Ethernet-ISDN bridges
00409E Concurrent Technologies Ltd.
00409F Lancast/Casat Technology Inc
0040A4 Rose Electronics
0040A6 Cray Research Inc.
0040AA Valmet Automation Inc
0040AD SMA Regelsysteme Gmbh
0040AE Delta Controls, Inc.
0040AF Digital Products, Inc. (DPI).
0040B4 3COM K.K.
0040B5 Video Technology Computers Ltd
0040B6 Computerm Corporation
0040B9 MACQ Electronique SA
0040BD Starlight Networks Inc
0040C1 Bizerba-Werke Wilheim Kraut
0040C2 Applied Computing Devices
0040C3 Fischer and Porter Co.
0040C5 Micom Communications Corp.
0040C6 Fibernet Research, Inc.
0040C7 Danpex Corporation
0040C8 Milan Technology Corp.
0040CC Silcom Manufacturing Technology Inc
0040CF Strawberry Tree Inc
0040D0 DEC/Compaq
0040D2 Pagine Corporation
0040D4 Gage Talker Corp.
0040D7 Studio Gen Inc
0040D8 Ocean Office Automation Ltd
0040DC Tritec Electronic Gmbh
0040DF Digalog Systems, Inc.
0040E1 Marner International Inc
0040E2 Mesa Ridge Technologies Inc
0040E3 Quin Systems Ltd
0040E5 Sybus Corporation
0040E7 Arnos Instruments & Computer
0040E9 Accord Systems, Inc.
0040EA PlainTree Systems Inc
0040ED Network Controls International Inc
0040F0 Micro Systems Inc
0040F1 Chuo Electronics Co., Ltd.
0040F4 Cameo Communications, Inc.
0040F5 OEM Engines
0040F6 Katron Computers Inc
0040F9 Combinet
0040FA Microboards Inc
0040FB Cascade Communications Corp.
0040FD LXE
0040FF Telebit Corporation Personal NetBlazer
004854 Digital SemiConductor 21143/2 based 10/100
004F49 Realtek
004F4B Pine Technology Ltd.
005004 3com 3C90X
00500F Cisco
00504D Repotec Group
00504E UMC UM9008 NE2000-compatible ISA Card for PC
005050 Cisco
005069 PixStream Incorporated
0050BD Cisco
0050E2 Cisco
005500 Xerox
006008 3Com 3Com PCI form factor 3C905 TX board
006009 Cisco Catalyst 5000 Ethernet switch
006025 Active Imaging Inc.
00602F Cisco
006030 VillageTronic used on Amiga
00603E Cisco 100Mbps interface
006047 Cisco
00604E Cycle Computer (Sun MotherBoard Replacements)
006052 Realtek (RTL 8029 == PCI NE2000)
00605C Cisco
006067 Acer Lan
006070 Cisco routers (2524 and 4500)
006083 Cisco Systems, Inc. 3620/3640 routers
00608C 3Com (1990 onwards)
006094 AMD PCNET PCI
006097 3Com
0060B0 Hewlett-Packard
0060F5 Phobos FastEthernet for Unix WS
008000 Multitech Systems Inc
008001 Periphonics Corporation
008004 Antlow Computers, Ltd.
008005 Cactus Computer Inc.
008006 Compuadd Corporation
008007 Dlog NC-Systeme
008009 Jupiter Systems (older MX-600 series machines)
00800D Vosswinkel FU
00800F SMC (Standard Microsystem Corp.)
008010 Commodore
008012 IMS Corp. IMS failure analysis tester
008013 Thomas Conrad Corp.
008015 Seiko Systems Inc
008016 Wandel & Goltermann
008017 PFU
008019 Dayna Communications "Etherprint" product
00801A Bell Atlantic
00801B Kodiak Technology
00801C Cisco
008021 Newbridge Networks Corporation
008023 Integrated Business Networks
008024 Kalpana
008026 Network Products Corporation
008029 Microdyne Corporation
00802A Test Systems & Simulations Inc
00802C The Sage Group PLC
00802D Xylogics, Inc. Annex terminal servers
00802E Plexcom, Inc.
008033 Formation (?)
008034 SMT-Goupil
008035 Technology Works
008037 Ericsson Business Comm.
008038 Data Research & Applications
00803B APT Communications, Inc.
00803D Surigiken Co Ltd
00803E Synernetics
00803F Hyundai Electronics
008042 Force Computers
008043 Networld Inc
008045 Matsushita Electric Ind Co
008046 University of Toronto
008048 Compex, used by Commodore and DEC at least
008049 Nissin Electric Co Ltd
00804C Contec Co., Ltd.
00804D Cyclone Microsystems, Inc.
008051 ADC Fibermux
008052 Network Professor
008057 Adsoft Ltd
00805A Tulip Computers International BV
00805B Condor Systems, Inc.
00805C Agilis(?)
00805F Compaq Computer Corporation
008060 Network Interface Corporation
008062 Interface Co.
008063 Richard Hirschmann Gmbh & Co
008064 Wyse
008067 Square D Company
008069 Computone Systems
00806A ERI (Empac Research Inc.)
00806B Schmid Telecommunication
00806C Cegelec Projects Ltd
00806D Century Systems Corp.
00806E Nippon Steel Corporation
00806F Onelan Ltd
008071 SAI Technology
008072 Microplex Systems Ltd
008074 Fisher Controls
008079 Microbus Designs Ltd
00807B Artel Communications Corp.
00807C FiberCom
00807D Equinox Systems Inc
008082 PEP Modular Computers Gmbh
008086 Computer Generation Inc.
008087 Okidata
00808A Summit (?)
00808B Dacoll Limited
00808C Netscout Systems (formerly Frontier Software Development)
00808D Westcove Technology BV
00808E Radstone Technology
008090 Microtek International Inc
008092 Japan Computer Industry, Inc.
008093 Xyron Corporation
008094 Sattcontrol AB
008096 HDS (Human Designed Systems) X terminals
008098 TDK Corporation
00809A Novus Networks Ltd
00809B Justsystem Corporation
00809D Datacraft Manufactur'g Pty Ltd
00809F Alcatel Business Systems
0080A1 Microtest
0080A3 Lantronix (see also 0800A3)
0080A6 Republic Technology Inc
0080A7 Measurex Corp
0080AD CNet Technology Used by Telebit (among others)
0080AE Hughes Network Systems
0080AF Allumer Co., Ltd.
0080B1 Softcom A/S
0080B2 NET (Network Equipment Technologies)
0080B6 Themis corporation
0080BA Specialix (Asia) Pte Ltd
0080C0 Penril Datability Networks
0080C2 IEEE 802.1 Committee
0080C6 Soho
0080C7 Xircom, Inc.
0080C8 D-Link (also Solectek Pocket Adapters, and LinkSys PCMCIA)
0080C9 Alberta Microelectronic Centre
0080CE Broadcast Television Systems
0080D0 Computer Products International
0080D3 Shiva Appletalk-Ethernet interface
0080D4 Chase Limited
0080D6 Apple Mac Portable(?)
0080D7 Fantum Electronics
0080D8 Network Peripherals
0080DA Bruel & Kjaer
0080E0 XTP Systems Inc
0080E3 Coral (?)
0080E7 Lynwood Scientific Dev Ltd
0080EA The Fiber Company
0080F0 Kyushu Matsushita Electric Co
0080F1 Opus
0080F3 Sun Electronics Corp
0080F4 Telemechanique Electrique
0080F5 Quantel Ltd
0080F7 Zenith Communications Products
0080FB BVM Limited
0080FE Azure Technologies Inc
009004 3Com
009027 Intel
0090B1 Cisco
00902B Cisco Ethernet Switches and Light Streams
009086 Cisco
009092 Cisco
0090AB Cisco
0090B1 Cisco
0090F2 Cisco Ethernet Switches and Light Streams
00A000 Bay Networks Ethernet switch
00A00C Kingmax Technology Inc. PCMCIA card
00A024 3com
00A040 Apple (PCI Mac)
00A04B Sonic Systems Inc. EtherFE 10/100 PCI for Mac or PC
00A073 Com21
00A083 Intel
00A092 Intermate International [LAN printer interfaces]
00A0AE Network Peripherals, Inc.
00A0C8 Adtran, Inc.
00A0C9 Intel (PRO100B and PRO100+) [used on Cisco PIX firewall among others]
00A0CC Lite-On (used by MacSense in Adapter for Mac, also seen in PCs)
00A0D1 National Semiconductor [COMPAQ Docking Station]
00A0D2 Allied Telesyn
00AA00 Intel
00B0D0 Computer Products International
00C000 Lanoptics Ltd
00C001 Diatek Patient Managment
00C002 Sercomm Corporation
00C003 Globalnet Communications
00C004 Japan Business Computer Co.Ltd
00C005 Livingston Enterprises Inc Portmaster (OEMed by Cayman)
00C006 Nippon Avionics Co Ltd
00C007 Pinnacle Data Systems Inc
00C008 Seco SRL
00C009 KT Technology (s) Pte Inc
00C00A Micro Craft
00C00B Norcontrol A.S.
00C00C ARK PC Technology, Inc.
00C00D Advanced Logic Research Inc
00C00E Psitech Inc
00C00F QNX Software Systems Ltd. [also Quantum Software Systems Ltd]
00C011 Interactive Computing Devices
00C012 Netspan Corp
00C013 Netrix
00C014 Telematics Calabasas
00C015 New Media Corp
00C016 Electronic Theatre Controls
00C017 Fluke
00C018 Lanart Corp
00C01A Corometrics Medical Systems
00C01B Socket Communications
00C01C Interlink Communications Ltd.
00C01D Grand Junction Networks, Inc. (Cisco Catalyst also reported)
00C01F S.E.R.C.E.L.
00C020 Arco Electronic, Control Ltd.
00C021 Netexpress
00C023 Tutankhamon Electronics
00C024 Eden Sistemas De Computacao SA
00C025 Dataproducts Corporation
00C027 Cipher Systems, Inc.
00C028 Jasco Corporation
00C029 Kabel Rheydt AG
00C02A Ohkura Electric Co
00C02B Gerloff Gesellschaft Fur
00C02C Centrum Communications, Inc.
00C02D Fuji Photo Film Co., Ltd.
00C02E Netwiz
00C02F Okuma Corp
00C030 Integrated Engineering B. V.
00C031 Design Research Systems, Inc.
00C032 I-Cubed Limited
00C033 Telebit Corporation
00C034 Dale Computer Corporation
00C035 Quintar Company
00C036 Raytech Electronic Corp
00C039 Silicon Systems
00C03B Multiaccess Computing Corp
00C03C Tower Tech S.R.L.
00C03D Wiesemann & Theis Gmbh
00C03E Fa. Gebr. Heller Gmbh
00C03F Stores Automated Systems Inc
00C040 ECCI
00C041 Digital Transmission Systems
00C042 Datalux Corp.
00C043 Stratacom
00C044 Emcom Corporation
00C045 Isolation Systems Inc
00C046 Kemitron Ltd
00C047 Unimicro Systems Inc
00C048 Bay Technical Associates
00C049 US Robotics Total Control (tm) NETServer Card
00C04D Mitec Ltd
00C04E Comtrol Corporation
00C04F Dell
00C050 Toyo Denki Seizo K.K.
00C051 Advanced Integration Research
00C055 Modular Computing Technologies
00C056 Somelec
00C057 Myco Electronics
00C058 Dataexpert Corp
00C059 Nippondenso Corp
00C05B Networks Northwest Inc
00C05C Elonex PLC
00C05D L&N Technologies
00C05E Vari-Lite Inc
00C060 ID Scandinavia A/S
00C061 Solectek Corporation
00C063 Morning Star Technologies Inc May be miswrite of 0003C6
00C064 General Datacomm Ind Inc
00C065 Scope Communications Inc
00C066 Docupoint, Inc.
00C067 United Barcode Industries
00C068 Philp Drake Electronics Ltd
00C069 California Microwave Inc
00C06A Zahner-Elektrik Gmbh & Co KG
00C06B OSI Plus Corporation
00C06C SVEC Computer Corp
00C06D Boca Research, Inc.
00C06F Komatsu Ltd
00C070 Sectra Secure-Transmission AB
00C071 Areanex Communications, Inc.
00C072 KNX Ltd
00C073 Xedia Corporation
00C074 Toyoda Automatic Loom Works Ltd
00C075 Xante Corporation
00C076 I-Data International A-S
00C077 Daewoo Telecom Ltd
00C078 Computer Systems Engineering
00C079 Fonsys Co Ltd
00C07A Priva BV
00C07B Ascend Communications ISDN bridges/routers
00C07D RISC Developments Ltd
00C07F Nupon Computing Corp
00C080 Netstar Inc
00C081 Metrodata Ltd
00C082 Moore Products Co
00C084 Data Link Corp Ltd
00C085 Canon
00C086 The Lynk Corporation
00C087 UUNET Technologies Inc
00C089 Telindus Distribution
00C08A Lauterbach Datentechnik Gmbh
00C08B RISQ Modular Systems Inc
00C08C Performance Technologies Inc
00C08D Tronix Product Development
00C08E Network Information Technology
00C08F Matsushita Electric Works, Ltd.
00C090 Praim S.R.L.
00C091 Jabil Circuit, Inc.
00C092 Mennen Medical Inc
00C093 Alta Research Corp.
00C095 Znyx (Network Appliance); Jupiter Systems (MX-700); Apple (G3) all seen
00C096 Tamura Corporation
00C097 Archipel SA
00C098 Chuntex Electronic Co., Ltd.
00C09B Reliance Comm/Tec, R-Tec Systems Inc
00C09C TOA Electronic Ltd
00C09D Distributed Systems Int'l, Inc.
00C09F Quanta Computer Inc
00C0A0 Advance Micro Research, Inc.
00C0A1 Tokyo Denshi Sekei Co
00C0A2 Intermedium A/S
00C0A3 Dual Enterprises Corporation
00C0A4 Unigraf OY
00C0A7 SEEL Ltd
00C0A8 GVC Corporation
00C0A9 Barron McCann Ltd
00C0AA Silicon Valley Computer
00C0AB Jupiter Technology Inc
00C0AC Gambit Computer Communications
00C0AD Computer Communication Systems
00C0AE Towercom Co Inc DBA PC House
00C0B0 GCC Technologies,Inc.
00C0B2 Norand Corporation
00C0B3 Comstat Datacomm Corporation
00C0B4 Myson Technology Inc
00C0B5 Corporate Network Systems Inc
00C0B6 Meridian Data Inc
00C0B7 American Power Conversion Corp
00C0B8 Fraser's Hill Ltd.
00C0B9 Funk Software Inc
00C0BA Netvantage
00C0BB Forval Creative Inc
00C0BD Inex Technologies, Inc.
00C0BE Alcatel - Sel
00C0BF Technology Concepts Ltd
00C0C0 Shore Microsystems Inc
00C0C1 Quad/Graphics Inc
00C0C2 Infinite Networks Ltd.
00C0C3 Acuson Computed Sonography
00C0C4 Computer Operational
00C0C5 SID Informatica
00C0C6 Personal Media Corp
00C0C8 Micro Byte Pty Ltd
00C0C9 Bailey Controls Co
00C0CA Alfa, Inc.
00C0CB Control Technology Corporation
00C0CD Comelta S.A.
00C0D0 Ratoc System Inc
00C0D1 Comtree Technology Corporation (EFA also reported)
00C0D2 Syntellect Inc
00C0D4 Axon Networks Inc
00C0D5 Quancom Electronic Gmbh
00C0D6 J1 Systems, Inc.
00C0D9 Quinte Network Confidentiality Equipment Inc
00C0DB IPC Corporation (Pte) Ltd
00C0DC EOS Technologies, Inc.
00C0DE ZComm Inc
00C0DF Kye Systems Corp
00C0E1 Sonic Solutions
00C0E2 Calcomp, Inc.
00C0E3 Ositech Communications Inc
00C0E4 Landis & Gyr Powers Inc
00C0E5 GESPAC S.A.
00C0E6 TXPORT
00C0E7 Fiberdata AB
00C0E8 Plexcom Inc
00C0E9 Oak Solutions Ltd
00C0EA Array Technology Ltd.
00C0EC Dauphin Technology
00C0ED US Army Electronic Proving Ground
00C0EE Kyocera Corporation
00C0EF Abit Corporation
00C0F0 Kingston Technology Corporation
00C0F1 Shinko Electric Co Ltd
00C0F2 Transition Engineering Inc
00C0F3 Network Communications Corp
00C0F4 Interlink System Co., Ltd.
00C0F5 Metacomp Inc
00C0F6 Celan Technology Inc.
00C0F7 Engage Communication, Inc.
00C0F8 About Computing Inc.
00C0FA Canary Communications Inc
00C0FB Advanced Technology Labs
00C0FC ASDG Incorporated
00C0FD Prosum
00C0FF Box Hill Systems Corporation
00DD00 Ungermann-Bass IBM RT
00DD01 Ungermann-Bass
00DD08 Ungermann-Bass
00E011 Uniden Corporation
00E014 Cisco
00E016 rapid-city (now a part of bay networks)
00E018 Asustek Intel 82558-based Integrated Fast Ethernet for WIM
00E01E Cisco
00E029 SMC EtherPower II 10/100
00E02C AST - built into 5166M PC motherboard (win95 id's as Intel)
00E034 Cisco
00E039 Paradyne 7112 T1 DSU/CSU
00E04F Cisco
00E07D Encore (Netronix?) 10/100 PCI Fast ethernet card
00E081 Tyan Computer Corp. Onboard Intel 82558 10/100
00E083 Jato Technologies, Inc.
00E08F Cisco Systems Catalyst 2900 series
00E098 Linksys PCMCIA card
00E0A3 Cisco Systems Catalyst 1924
00E0B0 Cisco Systems Various systems reported
00E0B8 AMD PCNet in a Gateway 2000
00E0C5 BCOM Electronics Inc.
00E0ED New Link
00E0F7 Cisco
00E0F9 Cisco
00E0FE Cisco
020406 BBN internal usage (not registered)
020701 Interlan [now Racal-InterLAN] DEC (UNIBUS or QBUS), Apollo, Cisco
020701 Racal-Datacom
026060 3Com
026086 Satelcom MegaPac (UK)
02608C 3Com IBM PC; Imagen; Valid; Cisco; Macintosh
02A0C9 Intel
02AA3C Olivetti
02CF1F CMC Masscomp; Silicon Graphics; Prime EXL
02E03B Prominet Corporation Gigabit Ethernet Switch
02E6D3 BTI (Bus-Tech, Inc.) IBM Mainframes
048845 Bay Networks token ring line card
080001 Computer Vision
080002 3Com (formerly Bridge)
080003 ACC (Advanced Computer Communications)
080005 Symbolics Symbolics LISP machines
080006 Siemens Nixdorf PC clone
080007 Apple
080008 BBN (Bolt Beranek and Newman, Inc.)
080009 Hewlett-Packard
08000A Nestar Systems
08000B Unisys also Ascom-Timeplex (former Unisys subsidiary)
08000D ICL (International Computers, Ltd.)
08000E NCR/AT&T
08000F SMC (Standard Microsystems Corp.)
080010 AT&T [misrepresentation of 800010?]
080011 Tektronix, Inc.
080014 Excelan BBN Butterfly, Masscomp, Silicon Graphics
080017 National Semiconductor Corp. (used to have Network System Corp., wrong NSC)
08001A Tiara? (used to have Data General)
08001B Data General
08001E Apollo
08001F Sharp
080020 Sun
080022 NBI (Nothing But Initials)
080023 Matsushita Denso
080025 CDC
080026 Norsk Data (Nord)
080027 PCS Computer Systems GmbH
080028 TI Explorer
08002B DEC
08002E Metaphor
08002F Prime Computer Prime 50-Series LHC300
080030 CERN
080032 Tigan
080036 Intergraph CAE stations
080037 Fuji Xerox
080038 Bull
080039 Spider Systems
08003B Torus Systems
08003D cadnetix
08003E Motorola VME bus processor modules
080041 DCA (Digital Comm. Assoc.)
080044 DSI (DAVID Systems, Inc.)
080045 ???? (maybe Xylogics, but they claim not to know this number)
080046 Sony
080047 Sequent
080048 Eurotherm Gauging Systems
080049 Univation
08004C Encore
08004E BICC [3com bought BICC, so may appear on 3com equipment as well]
080051 Experdata
080056 Stanford University
080057 Evans & Sutherland (?)
080058 ??? DECsystem-20
08005A IBM
080066 AGFA printers, phototypesetters etc.
080067 Comdesign
080068 Ridge
080069 Silicon Graphics
08006A ATTst (?)
08006E Excelan
080070 Mitsubishi
080074 Casio
080075 DDE (Danish Data Elektronik A/S)
080077 TSL (now Retix)
080079 Silicon Graphics
08007C Vitalink TransLAN III
080080 XIOS
080081 Crosfield Electronics
080083 Seiko Denshi
080086 Imagen/QMS
080087 Xyplex terminal servers
080088 McDATA Corporation
080089 Kinetics AppleTalk-Ethernet interface
08008B Pyramid
08008D XyVision XyVision machines
08008E Tandem / Solbourne Computer ?
08008F Chipcom Corp.
080090 Retix, Inc. Bridges
09006A AT&T
10005A IBM
100090 Hewlett-Packard Advisor products
1000D4 DEC
1000E0 Apple A/UX (modified addresses for licensing)
2E2E2E LAA (Locally Administered Address) for Meditech Systems
3C0000 3Com dual function (V.34 modem + Ethernet) card
400003 Net Ware (?)
444553 Microsoft (Windows95 internal "adapters")
444649 DFI (Diamond Flower Industries)
475443 GTC (Not registered!) (This number is a multicast!)
484453 HDS ???
484C00 Network Solutions
4854E8 winbond?
4C424C Information Modes software modified addresses (not registered?)
525400 Realtek (UpTech? also reported)
52544C Novell 2000
5254AB REALTEK (a Realtek 8029 based PCI Card)
565857 Aculab plc audio bridges
800010 AT&T [misrepresented as 080010? One source claims this is correct]
80AD00 CNET Technology Inc. (Probably an error, see instead 0080AD)
AA0000 DEC obsolete
AA0001 DEC obsolete
AA0002 DEC obsolete
AA0003 DEC Global physical address for some DEC machines
AA0004 DEC Local logical address for DECNET systems
C00000 Western Digital (may be reversed 00 00 C0?)
EC1000 Enance Source Co., Ltd. PC clones(?)
E20C0F Kingston Technologies
This going to be key enough information for TCP/IP learner.
TCP has a random seq number that need exist in each of it's packet. Each OS has it's own way to come up with this "Random" number. this leave us space to Detect . "fingerPrinting" which OS is packets been sent from. Each packet transfer on internet are content of either TCP or UDP or ICMP, for user. for routing purpose, there are other like BGP/RIP those work above Layer 2 and below application layer. when our data are transfered from end to end, anything below Layer 2 could be changed by switch or router, but unlikely layer 3 's content be altered. so this leave us some space to use to different purpose. TCP fingerPrinting is one of them.
The purpose of TCP fingureprinting is to identify the operation system of a device. about why you need to know this information is another story, we can talk later. in this topic, we only talk about why this technology work.
We need to read some text before give details. as usual :)
Reference:
>>>.Reliability:
The TCP must recover from data that is damaged, lost, duplicated, or
delivered out of order by the internet communication system. This
is achieved by assigning a sequence number to each octet
transmitted, and requiring a positive acknowledgment (ACK) from the
receiving TCP. If the ACK is not received within a timeout
interval, the data is retransmitted. At the receiver, the sequence
numbers are used to correctly order segments that may be received
out of order and to eliminate duplicates. Damage is handled by
adding a checksum to each segment transmitted, checking it at the
receiver, and discarding damaged segments
Since connections must be established between unreliable hosts and
over the unreliable internet communication system, a handshake
mechanism with clock-based sequence numbers is used to avoid
erroneous initialization of connections.
>>>>>>>>>>>>>>>>>>>
Notice the line with bold font ? two key information here 1. Each TCP packet have to have a SEQ number. 2. this SEQ number generated by OS, not by application, not by hardware, not by user, it is "suggested" to be "clock-based". this is interesting. because we know for sure, each OS have their own way to generate TIME and Random. when you gather enough packet from one end , you can match the logic of the packet's SEQ to how it is generated. and this lead to OS detection.
SO it is "SEQ"------"Gather packet" ---- OS detection.
Ref: http://en.wikipedia.org/wiki/TCP/IP_stack_fingerprinting
TRANSMISSION CONTROL PROTOCOL http://www.ietf.org/rfc/rfc793.txt
http://nmap.org/book/osdetect-methods.html
Tools: Nmap
On the Internet each device is assigned a unique IP address.
IP address consists of 32 bits, usually to display a 4-octet from decimal format instead of the binary digits of the form 0-255.
For example, IP address: 168.212.226.204 in binary form is 101,010,00.,110,101.. But we have to remember the number of decimal places, rather than a binary number, so we use a decimal number to represent the IP address, in describing them more easily.
However, the binary number is important, because this will determine the type of network the IP address belongs to. IP addresses are divided into two parts, a fixed network and node address, or host. Address class to determine which part of the network address and which part of the respective node address. All of the nodes on a given network share the same network prefix but must have a unique host number.
Class a network binary addresses start with 0, so a decimal number can be anywhere from 1 to 126. (The first octet) the first 8 bits identifies the network, and the remaining 24 bits indicate the host within the network. An example of a class a IP address Yes 102.168., "102" identifies the network and the "168.212.226" identifies the host on the network.
Class b network binary addresses start with 10, so a decimal number can be anywhere from 128 to 191. (127 reserved for loopback and used for internal testing on a local computer). The first 16 bits (two bytes) identifies the network and the remaining 16 bits indicate the host within the network. An example of a class b IP address 168.212.226.204 in the "168.212" identifies the network and "226.204" identifies the host on the network.
Class c network binary addresses start with 110, so a decimal number can be anywhere from 192 to 223. 24th (the first three octets) identify the network and the remaining 8 bits indicate the host within the network. An example of a class c IP address 200.168.212.226 in the "200.168.212" identifies the network and "226" identifies the host on the network.
Class d network binary addresses start--1110 years, so a decimal number can be anywhere between 224 and 239. D class methods that support multicast network.
Class e network binary addresses start--1111 years, so a decimal number can be anywhere from 240 to 255. Class e network used in experiments. They will never be recorded or been used.
Arcai.com start since 1999, as a networking expert and offering advices to network/security query. products includes NetCut, netcut defender
Arcai.com is the very first one discover ARP weakness, and publish it to Microsoft/Cisco/Sun/IBM. also IEEF. Through no response from the industry owner of ARP. arcai.com release the tool that help detect and protect from ARP spoofing attack. It has been running for over 10 years since first release.
Arcai.com is still continue to support/develop new feature to service the public.
There are many different types of Proxy Servers out there. Depending on the purpose you can get Proxy Servers to route any of these common protocols, and many more:
FTP HTTP Gopher IRC MSN AIM ICQ VOIP SSL
So out of the common types of Proxy Servers, you end up with the following:
FTP Proxy Server:
Relays and caches FTP Traffic.
HTTP Proxy Server:
A one way request to retrieve Web Pages.
Socks Proxy Server:
A newer protocol to allow relaying of far more different types of data, whether TCP or UDP.
NAT Proxy Server:
This one works a little different, it allows the redirection of all packets without a Program having to support a Proxy Server.
SSL Proxy Server:
An extension was created to the HTTP Proxy Server which allows relaying of TCP data similar to a Socks Proxy Server. This one done mainly to allow encryption of Web Page requests.
Furthermore, a Proxy Server can be split into another two Categories:
Anonymous:
An Anonymous Proxy Server blocks the remote Computer from knowing the identity of the Computer using the Proxy Server to make requests.
Transparent:
A Transparent Proxy Server tells the remote Computer the IP Address of your Computer. This provides no privacy.
Anonymous Proxy Servers can further be broken down into two more categories, Elite and Disguised. An Elite Proxy Server is not identifiable to the remote computer as a Proxy in any way. A Disguised Proxy Server gives the remote computer enough information to let it know that it is a Proxy, however it still does not give away the IP of the Computer it is relaying information for.
Network Working Group S. Deering
Request for Comments: 2460 Cisco
Obsoletes: 1883 R. Hinden
Category: Standards Track Nokia
December 1998
Internet Protocol, Version 6 (IPv6)
Specification
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 (1998). All Rights Reserved.
Abstract
This document specifies version 6 of the Internet Protocol (IPv6),
also sometimes referred to as IP Next Generation or IPng.
Table of Contents
1. Introduction..................................................2
2. Terminology...................................................3
3. IPv6 Header Format............................................4
4. IPv6 Extension Headers........................................6
4.1 Extension Header Order...................................7
4.2 Options..................................................9
4.3 Hop-by-Hop Options Header...............................11
4.4 Routing Header..........................................12
4.5 Fragment Header.........................................18
4.6 Destination Options Header..............................23
4.7 No Next Header..........................................24
5. Packet Size Issues...........................................24
6. Flow Labels..................................................25
7. Traffic Classes..............................................25
8. Upper-Layer Protocol Issues..................................27
8.1 Upper-Layer Checksums...................................27
8.2 Maximum Packet Lifetime.................................28
8.3 Maximum Upper-Layer Payload Size........................28
8.4 Responding to Packets Carrying Routing Headers..........29
Deering & Hinden Standards Track [Page 1]
RFC 2460 IPv6 Specification December 1998
Appendix A. Semantics and Usage of the Flow Label Field.........30
Appendix B. Formatting Guidelines for Options...................32
Security Considerations.........................................35
Acknowledgments.................................................35
Authors' Addresses..............................................35
References......................................................35
Changes Since RFC-1883..........................................36
Full Copyright Statement........................................39
1. Introduction
IP version 6 (IPv6) is a new version of the Internet Protocol,
designed as the successor to IP version 4 (IPv4) [RFC-791]. The
changes from IPv4 to IPv6 fall primarily into the following
categories:
o Expanded Addressing Capabilities
IPv6 increases the IP address size from 32 bits to 128 bits, to
support more levels of addressing hierarchy, a much greater
number of addressable nodes, and simpler auto-configuration of
addresses. The scalability of multicast routing is improved by
adding a "scope" field to multicast addresses. And a new type
of address called an "anycast address" is defined, used to send
a packet to any one of a group of nodes.
o Header Format Simplification
Some IPv4 header fields have been dropped or made optional, to
reduce the common-case processing cost of packet handling and
to limit the bandwidth cost of the IPv6 header.
o Improved Support for Extensions and Options
Changes in the way IP header options are encoded allows for
more efficient forwarding, less stringent limits on the length
of options, and greater flexibility for introducing new options
in the future.
o Flow Labeling Capability
A new capability is added to enable the labeling of packets
belonging to particular traffic "flows" for which the sender
requests special handling, such as non-default quality of
service or "real-time" service.
Deering & Hinden Standards Track [Page 2]
RFC 2460 IPv6 Specification December 1998
o Authentication and Privacy Capabilities
Extensions to support authentication, data integrity, and
(optional) data confidentiality are specified for IPv6.
This document specifies the basic IPv6 header and the initially-
defined IPv6 extension headers and options. It also discusses packet
size issues, the semantics of flow labels and traffic classes, and
the effects of IPv6 on upper-layer protocols. The format and
semantics of IPv6 addresses are specified separately in [ADDRARCH].
The IPv6 version of ICMP, which all IPv6 implementations are required
to include, is specified in [ICMPv6].
2. Terminology
node - a device that implements IPv6.
router - a node that forwards IPv6 packets not explicitly
addressed to itself. [See Note below].
host - any node that is not a router. [See Note below].
upper layer - a protocol layer immediately above IPv6. Examples are
transport protocols such as TCP and UDP, control
protocols such as ICMP, routing protocols such as OSPF,
and internet or lower-layer protocols being "tunneled"
over (i.e., encapsulated in) IPv6 such as IPX,
AppleTalk, or IPv6 itself.
link - a communication facility or medium over which nodes can
communicate at the link layer, i.e., the layer
immediately below IPv6. Examples are Ethernets (simple
or bridged); PPP links; X.25, Frame Relay, or ATM
networks; and internet (or higher) layer "tunnels",
such as tunnels over IPv4 or IPv6 itself.
neighbors - nodes attached to the same link.
interface - a node's attachment to a link.
address - an IPv6-layer identifier for an interface or a set of
interfaces.
packet - an IPv6 header plus payload.
link MTU - the maximum transmission unit, i.e., maximum packet
size in octets, that can be conveyed over a link.
Deering & Hinden Standards Track [Page 3]
RFC 2460 IPv6 Specification December 1998
path MTU - the minimum link MTU of all the links in a path between
a source node and a destination node.
Note: it is possible, though unusual, for a device with multiple
interfaces to be configured to forward non-self-destined packets
arriving from some set (fewer than all) of its interfaces, and to
discard non-self-destined packets arriving from its other interfaces.
Such a device must obey the protocol requirements for routers when
receiving packets from, and interacting with neighbors over, the
former (forwarding) interfaces. It must obey the protocol
requirements for hosts when receiving packets from, and interacting
with neighbors over, the latter (non-forwarding) interfaces.
3. IPv6 Header Format
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Traffic Class | Flow Label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Length | Next Header | Hop Limit |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Source Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Destination Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Version 4-bit Internet Protocol version number = 6.
Traffic Class 8-bit traffic class field. See section 7.
Flow Label 20-bit flow label. See section 6.
Payload Length 16-bit unsigned integer. Length of the IPv6
payload, i.e., the rest of the packet following
this IPv6 header, in octets. (Note that any
Deering & Hinden Standards Track [Page 4]
RFC 2460 IPv6 Specification December 1998
extension headers [section 4] present are
considered part of the payload, i.e., included
in the length count.)
Next Header 8-bit selector. Identifies the type of header
immediately following the IPv6 header. Uses the
same values as the IPv4 Protocol field [RFC-1700
et seq.].
Hop Limit 8-bit unsigned integer. Decremented by 1 by
each node that forwards the packet. The packet
is discarded if Hop Limit is decremented to
zero.
Source Address 128-bit address of the originator of the packet.
See [ADDRARCH].
Destination Address 128-bit address of the intended recipient of the
packet (possibly not the ultimate recipient, if
a Routing header is present). See [ADDRARCH]
and section 4.4.
Deering & Hinden Standards Track [Page 5]
RFC 2460 IPv6 Specification December 1998
4. IPv6 Extension Headers
In IPv6, optional internet-layer information is encoded in separate
headers that may be placed between the IPv6 header and the upper-
layer header in a packet. There are a small number of such extension
headers, each identified by a distinct Next Header value. As
illustrated in these examples, an IPv6 packet may carry zero, one, or
more extension headers, each identified by the Next Header field of
the preceding header:
+---------------+------------------------
| IPv6 header | TCP header + data
| |
| Next Header = |
| TCP |
+---------------+------------------------
+---------------+----------------+------------------------
| IPv6 header | Routing header | TCP header + data
| | |
| Next Header = | Next Header = |
| Routing | TCP |
+---------------+----------------+------------------------
+---------------+----------------+-----------------+-----------------
| IPv6 header | Routing header | Fragment header | fragment of TCP
| | | | header + data
| Next Header = | Next Header = | Next Header = |
| Routing | Fragment | TCP |
+---------------+----------------+-----------------+-----------------
With one exception, extension headers are not examined or processed
by any node along a packet's delivery path, until the packet reaches
the node (or each of the set of nodes, in the case of multicast)
identified in the Destination Address field of the IPv6 header.
There, normal demultiplexing on the Next Header field of the IPv6
header invokes the module to process the first extension header, or
the upper-layer header if no extension header is present. The
contents and semantics of each extension header determine whether or
not to proceed to the next header. Therefore, extension headers must
be processed strictly in the order they appear in the packet; a
receiver must not, for example, scan through a packet looking for a
particular kind of extension header and process that header prior to
processing all preceding ones.
Deering & Hinden Standards Track [Page 6]
RFC 2460 IPv6 Specification December 1998
The exception referred to in the preceding paragraph is the Hop-by-
Hop Options header, which carries information that must be examined
and processed by every node along a packet's delivery path, including
the source and destination nodes. The Hop-by-Hop Options header,
when present, must immediately follow the IPv6 header. Its presence
is indicated by the value zero in the Next Header field of the IPv6
header.
If, as a result of processing a header, a node is required to proceed
to the next header but the Next Header value in the current header is
unrecognized by the node, it should discard the packet and send an
ICMP Parameter Problem message to the source of the packet, with an
ICMP Code value of 1 ("unrecognized Next Header type encountered")
and the ICMP Pointer field containing the offset of the unrecognized
value within the original packet. The same action should be taken if
a node encounters a Next Header value of zero in any header other
than an IPv6 header.
Each extension header is an integer multiple of 8 octets long, in
order to retain 8-octet alignment for subsequent headers. Multi-
octet fields within each extension header are aligned on their
natural boundaries, i.e., fields of width n octets are placed at an
integer multiple of n octets from the start of the header, for n = 1,
2, 4, or 8.
A full implementation of IPv6 includes implementation of the
following extension headers:
Hop-by-Hop Options
Routing (Type 0)
Fragment
Destination Options
Authentication
Encapsulating Security Payload
The first four are specified in this document; the last two are
specified in [RFC-2402] and [RFC-2406], respectively.
4.1 Extension Header Order
When more than one extension header is used in the same packet, it is
recommended that those headers appear in the following order:
IPv6 header
Hop-by-Hop Options header
Destination Options header (note 1)
Routing header
Fragment header
Deering & Hinden Standards Track [Page 7]
RFC 2460 IPv6 Specification December 1998
Authentication header (note 2)
Encapsulating Security Payload header (note 2)
Destination Options header (note 3)
upper-layer header
note 1: for options to be processed by the first destination
that appears in the IPv6 Destination Address field
plus subsequent destinations listed in the Routing
header.
note 2: additional recommendations regarding the relative
order of the Authentication and Encapsulating
Security Payload headers are given in [RFC-2406].
note 3: for options to be processed only by the final
destination of the packet.
Each extension header should occur at most once, except for the
Destination Options header which should occur at most twice (once
before a Routing header and once before the upper-layer header).
If the upper-layer header is another IPv6 header (in the case of IPv6
being tunneled over or encapsulated in IPv6), it may be followed by
its own extension headers, which are separately subject to the same
ordering recommendations.
If and when other extension headers are defined, their ordering
constraints relative to the above listed headers must be specified.
IPv6 nodes must accept and attempt to process extension headers in
any order and occurring any number of times in the same packet,
except for the Hop-by-Hop Options header which is restricted to
appear immediately after an IPv6 header only. Nonetheless, it is
strongly advised that sources of IPv6 packets adhere to the above
recommended order until and unless subsequent specifications revise
that recommendation.
Deering & Hinden Standards Track [Page 8]
RFC 2460 IPv6 Specification December 1998
4.2 Options
Two of the currently-defined extension headers -- the Hop-by-Hop
Options header and the Destination Options header -- carry a variable
number of type-length-value (TLV) encoded "options", of the following
format:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
| Option Type | Opt Data Len | Option Data
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
Option Type 8-bit identifier of the type of option.
Opt Data Len 8-bit unsigned integer. Length of the Option
Data field of this option, in octets.
Option Data Variable-length field. Option-Type-specific
data.
The sequence of options within a header must be processed strictly in
the order they appear in the header; a receiver must not, for
example, scan through the header looking for a particular kind of
option and process that option prior to processing all preceding
ones.
The Option Type identifiers are internally encoded such that their
highest-order two bits specify the action that must be taken if the
processing IPv6 node does not recognize the Option Type:
00 - skip over this option and continue processing the header.
01 - discard the packet.
10 - discard the packet and, regardless of whether or not the
packet's Destination Address was a multicast address, send an
ICMP Parameter Problem, Code 2, message to the packet's
Source Address, pointing to the unrecognized Option Type.
11 - discard the packet and, only if the packet's Destination
Address was not a multicast address, send an ICMP Parameter
Problem, Code 2, message to the packet's Source Address,
pointing to the unrecognized Option Type.
The third-highest-order bit of the Option Type specifies whether or
not the Option Data of that option can change en-route to the
packet's final destination. When an Authentication header is present
Deering & Hinden Standards Track [Page 9]
RFC 2460 IPv6 Specification December 1998
in the packet, for any option whose data may change en-route, its
entire Option Data field must be treated as zero-valued octets when
computing or verifying the packet's authenticating value.
0 - Option Data does not change en-route
1 - Option Data may change en-route
The three high-order bits described above are to be treated as part
of the Option Type, not independent of the Option Type. That is, a
particular option is identified by a full 8-bit Option Type, not just
the low-order 5 bits of an Option Type.
The same Option Type numbering space is used for both the Hop-by-Hop
Options header and the Destination Options header. However, the
specification of a particular option may restrict its use to only one
of those two headers.
Individual options may have specific alignment requirements, to
ensure that multi-octet values within Option Data fields fall on
natural boundaries. The alignment requirement of an option is
specified using the notation xn+y, meaning the Option Type must
appear at an integer multiple of x octets from the start of the
header, plus y octets. For example:
2n means any 2-octet offset from the start of the header.
8n+2 means any 8-octet offset from the start of the header,
plus 2 octets.
There are two padding options which are used when necessary to align
subsequent options and to pad out the containing header to a multiple
of 8 octets in length. These padding options must be recognized by
all IPv6 implementations:
Pad1 option (alignment requirement: none)
+-+-+-+-+-+-+-+-+
| 0 |
+-+-+-+-+-+-+-+-+
NOTE! the format of the Pad1 option is a special case -- it does
not have length and value fields.
The Pad1 option is used to insert one octet of padding into the
Options area of a header. If more than one octet of padding is
required, the PadN option, described next, should be used, rather
than multiple Pad1 options.
Deering & Hinden Standards Track [Page 10]
RFC 2460 IPv6 Specification December 1998
PadN option (alignment requirement: none)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
| 1 | Opt Data Len | Option Data
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
The PadN option is used to insert two or more octets of padding
into the Options area of a header. For N octets of padding, the
Opt Data Len field contains the value N-2, and the Option Data
consists of N-2 zero-valued octets.
Appendix B contains formatting guidelines for designing new options.
4.3 Hop-by-Hop Options Header
The Hop-by-Hop Options header is used to carry optional information
that must be examined by every node along a packet's delivery path.
The Hop-by-Hop Options header is identified by a Next Header value of
0 in the IPv6 header, and has the following format:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
. .
. Options .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Next Header 8-bit selector. Identifies the type of header
immediately following the Hop-by-Hop Options
header. Uses the same values as the IPv4
Protocol field [RFC-1700 et seq.].
Hdr Ext Len 8-bit unsigned integer. Length of the Hop-by-
Hop Options header in 8-octet units, not
including the first 8 octets.
Options Variable-length field, of length such that the
complete Hop-by-Hop Options header is an integer
multiple of 8 octets long. Contains one or more
TLV-encoded options, as described in section
4.2.
The only hop-by-hop options defined in this document are the Pad1 and
PadN options specified in section 4.2.
Deering & Hinden Standards Track [Page 11]
RFC 2460 IPv6 Specification December 1998
4.4 Routing Header
The Routing header is used by an IPv6 source to list one or more
intermediate nodes to be "visited" on the way to a packet's
destination. This function is very similar to IPv4's Loose Source
and Record Route option. The Routing header is identified by a Next
Header value of 43 in the immediately preceding header, and has the
following format:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | Routing Type | Segments Left |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. .
. type-specific data .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Next Header 8-bit selector. Identifies the type of header
immediately following the Routing header. Uses
the same values as the IPv4 Protocol field
[RFC-1700 et seq.].
Hdr Ext Len 8-bit unsigned integer. Length of the Routing
header in 8-octet units, not including the first
8 octets.
Routing Type 8-bit identifier of a particular Routing header
variant.
Segments Left 8-bit unsigned integer. Number of route
segments remaining, i.e., number of explicitly
listed intermediate nodes still to be visited
before reaching the final destination.
type-specific data Variable-length field, of format determined by
the Routing Type, and of length such that the
complete Routing header is an integer multiple
of 8 octets long.
If, while processing a received packet, a node encounters a Routing
header with an unrecognized Routing Type value, the required behavior
of the node depends on the value of the Segments Left field, as
follows:
Deering & Hinden Standards Track [Page 12]
RFC 2460 IPv6 Specification December 1998
If Segments Left is zero, the node must ignore the Routing header
and proceed to process the next header in the packet, whose type
is identified by the Next Header field in the Routing header.
If Segments Left is non-zero, the node must discard the packet and
send an ICMP Parameter Problem, Code 0, message to the packet's
Source Address, pointing to the unrecognized Routing Type.
If, after processing a Routing header of a received packet, an
intermediate node determines that the packet is to be forwarded onto
a link whose link MTU is less than the size of the packet, the node
must discard the packet and send an ICMP Packet Too Big message to
the packet's Source Address.
Deering & Hinden Standards Track [Page 13]
RFC 2460 IPv6 Specification December 1998
The Type 0 Routing header has the following format:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | Routing Type=0| Segments Left |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Address[1] +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Address[2] +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . .
. . .
. . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Address[n] +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Next Header 8-bit selector. Identifies the type of header
immediately following the Routing header. Uses
the same values as the IPv4 Protocol field
[RFC-1700 et seq.].
Hdr Ext Len 8-bit unsigned integer. Length of the Routing
header in 8-octet units, not including the first
8 octets. For the Type 0 Routing header, Hdr
Ext Len is equal to two times the number of
addresses in the header.
Routing Type 0.
Deering & Hinden Standards Track [Page 14]
RFC 2460 IPv6 Specification December 1998
Segments Left 8-bit unsigned integer. Number of route
segments remaining, i.e., number of explicitly
listed intermediate nodes still to be visited
before reaching the final destination.
Reserved 32-bit reserved field. Initialized to zero for
transmission; ignored on reception.
Address[1..n] Vector of 128-bit addresses, numbered 1 to n.
Multicast addresses must not appear in a Routing header of Type 0, or
in the IPv6 Destination Address field of a packet carrying a Routing
header of Type 0.
A Routing header is not examined or processed until it reaches the
node identified in the Destination Address field of the IPv6 header.
In that node, dispatching on the Next Header field of the immediately
preceding header causes the Routing header module to be invoked,
which, in the case of Routing Type 0, performs the following
algorithm:
Deering & Hinden Standards Track [Page 15]
RFC 2460 IPv6 Specification December 1998
if Segments Left = 0 {
proceed to process the next header in the packet, whose type is
identified by the Next Header field in the Routing header
}
else if Hdr Ext Len is odd {
send an ICMP Parameter Problem, Code 0, message to the Source
Address, pointing to the Hdr Ext Len field, and discard the
packet
}
else {
compute n, the number of addresses in the Routing header, by
dividing Hdr Ext Len by 2
if Segments Left is greater than n {
send an ICMP Parameter Problem, Code 0, message to the Source
Address, pointing to the Segments Left field, and discard the
packet
}
else {
decrement Segments Left by 1;
compute i, the index of the next address to be visited in
the address vector, by subtracting Segments Left from n
if Address [i] or the IPv6 Destination Address is multicast {
discard the packet
}
else {
swap the IPv6 Destination Address and Address[i]
if the IPv6 Hop Limit is less than or equal to 1 {
send an ICMP Time Exceeded -- Hop Limit Exceeded in
Transit message to the Source Address and discard the
packet
}
else {
decrement the Hop Limit by 1
resubmit the packet to the IPv6 module for transmission
to the new destination
}
}
}
}
Deering & Hinden Standards Track [Page 16]
RFC 2460 IPv6 Specification December 1998
As an example of the effects of the above algorithm, consider the
case of a source node S sending a packet to destination node D, using
a Routing header to cause the packet to be routed via intermediate
nodes I1, I2, and I3. The values of the relevant IPv6 header and
Routing header fields on each segment of the delivery path would be
as follows:
As the packet travels from S to I1:
Source Address = S Hdr Ext Len = 6
Destination Address = I1 Segments Left = 3
Address[1] = I2
Address[2] = I3
Address[3] = D
As the packet travels from I1 to I2:
Source Address = S Hdr Ext Len = 6
Destination Address = I2 Segments Left = 2
Address[1] = I1
Address[2] = I3
Address[3] = D
As the packet travels from I2 to I3:
Source Address = S Hdr Ext Len = 6
Destination Address = I3 Segments Left = 1
Address[1] = I1
Address[2] = I2
Address[3] = D
As the packet travels from I3 to D:
Source Address = S Hdr Ext Len = 6
Destination Address = D Segments Left = 0
Address[1] = I1
Address[2] = I2
Address[3] = I3
Deering & Hinden Standards Track [Page 17]
RFC 2460 IPv6 Specification December 1998
4.5 Fragment Header
The Fragment header is used by an IPv6 source to send a packet larger
than would fit in the path MTU to its destination. (Note: unlike
IPv4, fragmentation in IPv6 is performed only by source nodes, not by
routers along a packet's delivery path -- see section 5.) The
Fragment header is identified by a Next Header value of 44 in the
immediately preceding header, and has the following format:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Reserved | Fragment Offset |Res|M|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Next Header 8-bit selector. Identifies the initial header
type of the Fragmentable Part of the original
packet (defined below). Uses the same values as
the IPv4 Protocol field [RFC-1700 et seq.].
Reserved 8-bit reserved field. Initialized to zero for
transmission; ignored on reception.
Fragment Offset 13-bit unsigned integer. The offset, in 8-octet
units, of the data following this header,
relative to the start of the Fragmentable Part
of the original packet.
Res 2-bit reserved field. Initialized to zero for
transmission; ignored on reception.
M flag 1 = more fragments; 0 = last fragment.
Identification 32 bits. See description below.
In order to send a packet that is too large to fit in the MTU of the
path to its destination, a source node may divide the packet into
fragments and send each fragment as a separate packet, to be
reassembled at the receiver.
For every packet that is to be fragmented, the source node generates
an Identification value. The Identification must be different than
that of any other fragmented packet sent recently* with the same
Source Address and Destination Address. If a Routing header is
present, the Destination Address of concern is that of the final
destination.
Deering & Hinden Standards Track [Page 18]
RFC 2460 IPv6 Specification December 1998
* "recently" means within the maximum likely lifetime of a packet,
including transit time from source to destination and time spent
awaiting reassembly with other fragments of the same packet.
However, it is not required that a source node know the maximum
packet lifetime. Rather, it is assumed that the requirement can
be met by maintaining the Identification value as a simple, 32-
bit, "wrap-around" counter, incremented each time a packet must
be fragmented. It is an implementation choice whether to
maintain a single counter for the node or multiple counters,
e.g., one for each of the node's possible source addresses, or
one for each active (source address, destination address)
combination.
The initial, large, unfragmented packet is referred to as the
"original packet", and it is considered to consist of two parts, as
illustrated:
original packet:
+------------------+----------------------//-----------------------+
| Unfragmentable | Fragmentable |
| Part | Part |
+------------------+----------------------//-----------------------+
The Unfragmentable Part consists of the IPv6 header plus any
extension headers that must be processed by nodes en route to the
destination, that is, all headers up to and including the Routing
header if present, else the Hop-by-Hop Options header if present,
else no extension headers.
The Fragmentable Part consists of the rest of the packet, that is,
any extension headers that need be processed only by the final
destination node(s), plus the upper-layer header and data.
The Fragmentable Part of the original packet is divided into
fragments, each, except possibly the last ("rightmost") one, being an
integer multiple of 8 octets long. The fragments are transmitted in
separate "fragment packets" as illustrated:
original packet:
+------------------+--------------+--------------+--//--+----------+
| Unfragmentable | first | second | | last |
| Part | fragment | fragment | .... | fragment |
+------------------+--------------+--------------+--//--+----------+
Deering & Hinden Standards Track [Page 19]
RFC 2460 IPv6 Specification December 1998
fragment packets:
+------------------+--------+--------------+
| Unfragmentable |Fragment| first |
| Part | Header | fragment |
+------------------+--------+--------------+
+------------------+--------+--------------+
| Unfragmentable |Fragment| second |
| Part | Header | fragment |
+------------------+--------+--------------+
o
o
o
+------------------+--------+----------+
| Unfragmentable |Fragment| last |
| Part | Header | fragment |
+------------------+--------+----------+
Each fragment packet is composed of:
(1) The Unfragmentable Part of the original packet, with the
Payload Length of the original IPv6 header changed to contain
the length of this fragment packet only (excluding the length
of the IPv6 header itself), and the Next Header field of the
last header of the Unfragmentable Part changed to 44.
(2) A Fragment header containing:
The Next Header value that identifies the first header of
the Fragmentable Part of the original packet.
A Fragment Offset containing the offset of the fragment,
in 8-octet units, relative to the start of the
Fragmentable Part of the original packet. The Fragment
Offset of the first ("leftmost") fragment is 0.
An M flag value of 0 if the fragment is the last
("rightmost") one, else an M flag value of 1.
The Identification value generated for the original
packet.
(3) The fragment itself.
The lengths of the fragments must be chosen such that the resulting
fragment packets fit within the MTU of the path to the packets'
destination(s).
Deering & Hinden Standards Track [Page 20]
RFC 2460 IPv6 Specification December 1998
At the destination, fragment packets are reassembled into their
original, unfragmented form, as illustrated:
reassembled original packet:
+------------------+----------------------//------------------------+
| Unfragmentable | Fragmentable |
| Part | Part |
+------------------+----------------------//------------------------+
The following rules govern reassembly:
An original packet is reassembled only from fragment packets that
have the same Source Address, Destination Address, and Fragment
Identification.
The Unfragmentable Part of the reassembled packet consists of all
headers up to, but not including, the Fragment header of the first
fragment packet (that is, the packet whose Fragment Offset is
zero), with the following two changes:
The Next Header field of the last header of the Unfragmentable
Part is obtained from the Next Header field of the first
fragment's Fragment header.
The Payload Length of the reassembled packet is computed from
the length of the Unfragmentable Part and the length and offset
of the last fragment. For example, a formula for computing the
Payload Length of the reassembled original packet is:
PL.orig = PL.first - FL.first - 8 + (8 * FO.last) + FL.last
where
PL.orig = Payload Length field of reassembled packet.
PL.first = Payload Length field of first fragment packet.
FL.first = length of fragment following Fragment header of
first fragment packet.
FO.last = Fragment Offset field of Fragment header of
last fragment packet.
FL.last = length of fragment following Fragment header of
last fragment packet.
The Fragmentable Part of the reassembled packet is constructed
from the fragments following the Fragment headers in each of the
fragment packets. The length of each fragment is computed by
subtracting from the packet's Payload Length the length of the
Deering & Hinden Standards Track [Page 21]
RFC 2460 IPv6 Specification December 1998
headers between the IPv6 header and fragment itself; its relative
position in Fragmentable Part is computed from its Fragment Offset
value.
The Fragment header is not present in the final, reassembled
packet.
The following error conditions may arise when reassembling fragmented
packets:
If insufficient fragments are received to complete reassembly of a
packet within 60 seconds of the reception of the first-arriving
fragment of that packet, reassembly of that packet must be
abandoned and all the fragments that have been received for that
packet must be discarded. If the first fragment (i.e., the one
with a Fragment Offset of zero) has been received, an ICMP Time
Exceeded -- Fragment Reassembly Time Exceeded message should be
sent to the source of that fragment.
If the length of a fragment, as derived from the fragment packet's
Payload Length field, is not a multiple of 8 octets and the M flag
of that fragment is 1, then that fragment must be discarded and an
ICMP Parameter Problem, Code 0, message should be sent to the
source of the fragment, pointing to the Payload Length field of
the fragment packet.
If the length and offset of a fragment are such that the Payload
Length of the packet reassembled from that fragment would exceed
65,535 octets, then that fragment must be discarded and an ICMP
Parameter Problem, Code 0, message should be sent to the source of
the fragment, pointing to the Fragment Offset field of the
fragment packet.
The following conditions are not expected to occur, but are not
considered errors if they do:
The number and content of the headers preceding the Fragment
header of different fragments of the same original packet may
differ. Whatever headers are present, preceding the Fragment
header in each fragment packet, are processed when the packets
arrive, prior to queueing the fragments for reassembly. Only
those headers in the Offset zero fragment packet are retained in
the reassembled packet.
The Next Header values in the Fragment headers of different
fragments of the same original packet may differ. Only the value
from the Offset zero fragment packet is used for reassembly.
Deering & Hinden Standards Track [Page 22]
RFC 2460 IPv6 Specification December 1998
4.6 Destination Options Header
The Destination Options header is used to carry optional information
that need be examined only by a packet's destination node(s). The
Destination Options header is identified by a Next Header value of 60
in the immediately preceding header, and has the following format:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
. .
. Options .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Next Header 8-bit selector. Identifies the type of header
immediately following the Destination Options
header. Uses the same values as the IPv4
Protocol field [RFC-1700 et seq.].
Hdr Ext Len 8-bit unsigned integer. Length of the
Destination Options header in 8-octet units, not
including the first 8 octets.
Options Variable-length field, of length such that the
complete Destination Options header is an
integer multiple of 8 octets long. Contains one
or more TLV-encoded options, as described in
section 4.2.
The only destination options defined in this document are the Pad1
and PadN options specified in section 4.2.
Note that there are two possible ways to encode optional destination
information in an IPv6 packet: either as an option in the Destination
Options header, or as a separate extension header. The Fragment
header and the Authentication header are examples of the latter
approach. Which approach can be used depends on what action is
desired of a destination node that does not understand the optional
information:
o If the desired action is for the destination node to discard
the packet and, only if the packet's Destination Address is not
a multicast address, send an ICMP Unrecognized Type message to
the packet's Source Address, then the information may be
encoded either as a separate header or as an option in the
Deering & Hinden Standards Track [Page 23]
RFC 2460 IPv6 Specification December 1998
Destination Options header whose Option Type has the value 11
in its highest-order two bits. The choice may depend on such
factors as which takes fewer octets, or which yields better
alignment or more efficient parsing.
o If any other action is desired, the information must be encoded
as an option in the Destination Options header whose Option
Type has the value 00, 01, or 10 in its highest-order two bits,
specifying the desired action (see section 4.2).
4.7 No Next Header
The value 59 in the Next Header field of an IPv6 header or any
extension header indicates that there is nothing following that
header. If the Payload Length field of the IPv6 header indicates the
presence of octets past the end of a header whose Next Header field
contains 59, those octets must be ignored, and passed on unchanged if
the packet is forwarded.
5. Packet Size Issues
IPv6 requires that every link in the internet have an MTU of 1280
octets or greater. On any link that cannot convey a 1280-octet
packet in one piece, link-specific fragmentation and reassembly must
be provided at a layer below IPv6.
Links that have a configurable MTU (for example, PPP links [RFC-
1661]) must be configured to have an MTU of at least 1280 octets; it
is recommended that they be configured with an MTU of 1500 octets or
greater, to accommodate possible encapsulations (i.e., tunneling)
without incurring IPv6-layer fragmentation.
From each link to which a node is directly attached, the node must be
able to accept packets as large as that link's MTU.
It is strongly recommended that IPv6 nodes implement Path MTU
Discovery [RFC-1981], in order to discover and take advantage of path
MTUs greater than 1280 octets. However, a minimal IPv6
implementation (e.g., in a boot ROM) may simply restrict itself to
sending packets no larger than 1280 octets, and omit implementation
of Path MTU Discovery.
In order to send a packet larger than a path's MTU, a node may use
the IPv6 Fragment header to fragment the packet at the source and
have it reassembled at the destination(s). However, the use of such
fragmentation is discouraged in any application that is able to
adjust its packets to fit the measured path MTU (i.e., down to 1280
octets).
Deering & Hinden Standards Track [Page 24]
RFC 2460 IPv6 Specification December 1998
A node must be able to accept a fragmented packet that, after
reassembly, is as large as 1500 octets. A node is permitted to
accept fragmented packets that reassemble to more than 1500 octets.
An upper-layer protocol or application that depends on IPv6
fragmentation to send packets larger than the MTU of a path should
not send packets larger than 1500 octets unless it has assurance that
the destination is capable of reassembling packets of that larger
size.
In response to an IPv6 packet that is sent to an IPv4 destination
(i.e., a packet that undergoes translation from IPv6 to IPv4), the
originating IPv6 node may receive an ICMP Packet Too Big message
reporting a Next-Hop MTU less than 1280. In that case, the IPv6 node
is not required to reduce the size of subsequent packets to less than
1280, but must include a Fragment header in those packets so that the
IPv6-to-IPv4 translating router can obtain a suitable Identification
value to use in resulting IPv4 fragments. Note that this means the
payload may have to be reduced to 1232 octets (1280 minus 40 for the
IPv6 header and 8 for the Fragment header), and smaller still if
additional extension headers are used.
6. Flow Labels
The 20-bit Flow Label field in the IPv6 header may be used by a
source to label sequences of packets for which it requests special
handling by the IPv6 routers, such as non-default quality of service
or "real-time" service. This aspect of IPv6 is, at the time of
writing, still experimental and subject to change as the requirements
for flow support in the Internet become clearer. Hosts or routers
that do not support the functions of the Flow Label field are
required to set the field to zero when originating a packet, pass the
field on unchanged when forwarding a packet, and ignore the field
when receiving a packet.
Appendix A describes the current intended semantics and usage of the
Flow Label field.
7. Traffic Classes
The 8-bit Traffic Class field in the IPv6 header is available for use
by originating nodes and/or forwarding routers to identify and
distinguish between different classes or priorities of IPv6 packets.
At the point in time at which this specification is being written,
there are a number of experiments underway in the use of the IPv4
Type of Service and/or Precedence bits to provide various forms of
"differentiated service" for IP packets, other than through the use
of explicit flow set-up. The Traffic Class field in the IPv6 header
is intended to allow similar functionality to be supported in IPv6.
Deering & Hinden Standards Track [Page 25]
RFC 2460 IPv6 Specification December 1998
It is hoped that those experiments will eventually lead to agreement
on what sorts of traffic classifications are most useful for IP
packets. Detailed definitions of the syntax and semantics of all or
some of the IPv6 Traffic Class bits, whether experimental or intended
for eventual standardization, are to be provided in separate
documents.
The following general requirements apply to the Traffic Class field:
o The service interface to the IPv6 service within a node must
provide a means for an upper-layer protocol to supply the value
of the Traffic Class bits in packets originated by that upper-
layer protocol. The default value must be zero for all 8 bits.
o Nodes that support a specific (experimental or eventual
standard) use of some or all of the Traffic Class bits are
permitted to change the value of those bits in packets that
they originate, forward, or receive, as required for that
specific use. Nodes should ignore and leave unchanged any bits
of the Traffic Class field for which they do not support a
specific use.
o An upper-layer protocol must not assume that the value of the
Traffic Class bits in a received packet are the same as the
value sent by the packet's source.
Deering & Hinden Standards Track [Page 26]
RFC 2460 IPv6 Specification December 1998
8. Upper-Layer Protocol Issues
8.1 Upper-Layer Checksums
Any transport or other upper-layer protocol that includes the
addresses from the IP header in its checksum computation must be
modified for use over IPv6, to include the 128-bit IPv6 addresses
instead of 32-bit IPv4 addresses. In particular, the following
illustration shows the TCP and UDP "pseudo-header" for IPv6:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Source Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Destination Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Upper-Layer Packet Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| zero | Next Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
o If the IPv6 packet contains a Routing header, the Destination
Address used in the pseudo-header is that of the final
destination. At the originating node, that address will be in
the last element of the Routing header; at the recipient(s),
that address will be in the Destination Address field of the
IPv6 header.
o The Next Header value in the pseudo-header identifies the
upper-layer protocol (e.g., 6 for TCP, or 17 for UDP). It will
differ from the Next Header value in the IPv6 header if there
are extension headers between the IPv6 header and the upper-
layer header.
o The Upper-Layer Packet Length in the pseudo-header is the
length of the upper-layer header and data (e.g., TCP header
plus TCP data). Some upper-layer protocols carry their own
Deering & Hinden Standards Track [Page 27]
RFC 2460 IPv6 Specification December 1998
length information (e.g., the Length field in the UDP header);
for such protocols, that is the length used in the pseudo-
header. Other protocols (such as TCP) do not carry their own
length information, in which case the length used in the
pseudo-header is the Payload Length from the IPv6 header, minus
the length of any extension headers present between the IPv6
header and the upper-layer header.
o Unlike IPv4, when UDP packets are originated by an IPv6 node,
the UDP checksum is not optional. That is, whenever
originating a UDP packet, an IPv6 node must compute a UDP
checksum over the packet and the pseudo-header, and, if that
computation yields a result of zero, it must be changed to hex
FFFF for placement in the UDP header. IPv6 receivers must
discard UDP packets containing a zero checksum, and should log
the error.
The IPv6 version of ICMP [ICMPv6] includes the above pseudo-header in
its checksum computation; this is a change from the IPv4 version of
ICMP, which does not include a pseudo-header in its checksum. The
reason for the change is to protect ICMP from misdelivery or
corruption of those fields of the IPv6 header on which it depends,
which, unlike IPv4, are not covered by an internet-layer checksum.
The Next Header field in the pseudo-header for ICMP contains the
value 58, which identifies the IPv6 version of ICMP.
8.2 Maximum Packet Lifetime
Unlike IPv4, IPv6 nodes are not required to enforce maximum packet
lifetime. That is the reason the IPv4 "Time to Live" field was
renamed "Hop Limit" in IPv6. In practice, very few, if any, IPv4
implementations conform to the requirement that they limit packet
lifetime, so this is not a change in practice. Any upper-layer
protocol that relies on the internet layer (whether IPv4 or IPv6) to
limit packet lifetime ought to be upgraded to provide its own
mechanisms for detecting and discarding obsolete packets.
8.3 Maximum Upper-Layer Payload Size
When computing the maximum payload size available for upper-layer
data, an upper-layer protocol must take into account the larger size
of the IPv6 header relative to the IPv4 header. For example, in
IPv4, TCP's MSS option is computed as the maximum packet size (a
default value or a value learned through Path MTU Discovery) minus 40
octets (20 octets for the minimum-length IPv4 header and 20 octets
for the minimum-length TCP header). When using TCP over IPv6, the
MSS must be computed as the maximum packet size minus 60 octets,
Deering & Hinden Standards Track [Page 28]
RFC 2460 IPv6 Specification December 1998
because the minimum-length IPv6 header (i.e., an IPv6 header with no
extension headers) is 20 octets longer than a minimum-length IPv4
header.
8.4 Responding to Packets Carrying Routing Headers
When an upper-layer protocol sends one or more packets in response to
a received packet that included a Routing header, the response
packet(s) must not include a Routing header that was automatically
derived by "reversing" the received Routing header UNLESS the
integrity and authenticity of the received Source Address and Routing
header have been verified (e.g., via the use of an Authentication
header in the received packet). In other words, only the following
kinds of packets are permitted in response to a received packet
bearing a Routing header:
o Response packets that do not carry Routing headers.
o Response packets that carry Routing headers that were NOT
derived by reversing the Routing header of the received packet
(for example, a Routing header supplied by local
configuration).
o Response packets that carry Routing headers that were derived
by reversing the Routing header of the received packet IF AND
ONLY IF the integrity and authenticity of the Source Address
and Routing header from the received packet have been verified
by the responder.
Deering & Hinden Standards Track [Page 29]
RFC 2460 IPv6 Specification December 1998
Appendix A. Semantics and Usage of the Flow Label Field
A flow is a sequence of packets sent from a particular source to a
particular (unicast or multicast) destination for which the source
desires special handling by the intervening routers. The nature of
that special handling might be conveyed to the routers by a control
protocol, such as a resource reservation protocol, or by information
within the flow's packets themselves, e.g., in a hop-by-hop option.
The details of such control protocols or options are beyond the scope
of this document.
There may be multiple active flows from a source to a destination, as
well as traffic that is not associated with any flow. A flow is
uniquely identified by the combination of a source address and a
non-zero flow label. Packets that do not belong to a flow carry a
flow label of zero.
A flow label is assigned to a flow by the flow's source node. New
flow labels must be chosen (pseudo-)randomly and uniformly from the
range 1 to FFFFF hex. The purpose of the random allocation is to
make any set of bits within the Flow Label field suitable for use as
a hash key by routers, for looking up the state associated with the
flow.
All packets belonging to the same flow must be sent with the same
source address, destination address, and flow label. If any of those
packets includes a Hop-by-Hop Options header, then they all must be
originated with the same Hop-by-Hop Options header contents
(excluding the Next Header field of the Hop-by-Hop Options header).
If any of those packets includes a Routing header, then they all must
be originated with the same contents in all extension headers up to
and including the Routing header (excluding the Next Header field in
the Routing header). The routers or destinations are permitted, but
not required, to verify that these conditions are satisfied. If a
violation is detected, it should be reported to the source by an ICMP
Parameter Problem message, Code 0, pointing to the high-order octet
of the Flow Label field (i.e., offset 1 within the IPv6 packet).
The maximum lifetime of any flow-handling state established along a
flow's path must be specified as part of the description of the
state-establishment mechanism, e.g., the resource reservation
protocol or the flow-setup hop-by-hop option. A source must not re-
use a flow label for a new flow within the maximum lifetime of any
flow-handling state that might have been established for the prior
use of that flow label.
Deering & Hinden Standards Track [Page 30]
RFC 2460 IPv6 Specification December 1998
When a node stops and restarts (e.g., as a result of a "crash"), it
must be careful not to use a flow label that it might have used for
an earlier flow whose lifetime may not have expired yet. This may be
accomplished by recording flow label usage on stable storage so that
it can be remembered across crashes, or by refraining from using any
flow labels until the maximum lifetime of any possible previously
established flows has expired. If the minimum time for rebooting the
node is known, that time can be deducted from the necessary waiting
period before starting to allocate flow labels.
There is no requirement that all, or even most, packets belong to
flows, i.e., carry non-zero flow labels. This observation is placed
here to remind protocol designers and implementors not to assume
otherwise. For example, it would be unwise to design a router whose
performance would be adequate only if most packets belonged to flows,
or to design a header compression scheme that only worked on packets
that belonged to flows.
Deering & Hinden Standards Track [Page 31]
RFC 2460 IPv6 Specification December 1998
Appendix B. Formatting Guidelines for Options
This appendix gives some advice on how to lay out the fields when
designing new options to be used in the Hop-by-Hop Options header or
the Destination Options header, as described in section 4.2. These
guidelines are based on the following assumptions:
o One desirable feature is that any multi-octet fields within the
Option Data area of an option be aligned on their natural
boundaries, i.e., fields of width n octets should be placed at
an integer multiple of n octets from the start of the Hop-by-
Hop or Destination Options header, for n = 1, 2, 4, or 8.
o Another desirable feature is that the Hop-by-Hop or Destination
Options header take up as little space as possible, subject to
the requirement that the header be an integer multiple of 8
octets long.
o It may be assumed that, when either of the option-bearing
headers are present, they carry a very small number of options,
usually only one.
These assumptions suggest the following approach to laying out the
fields of an option: order the fields from smallest to largest, with
no interior padding, then derive the alignment requirement for the
entire option based on the alignment requirement of the largest field
(up to a maximum alignment of 8 octets). This approach is
illustrated in the following examples:
Example 1
If an option X required two data fields, one of length 8 octets and
one of length 4 octets, it would be laid out as follows:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Type=X |Opt Data Len=12|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 4-octet field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ 8-octet field +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Deering & Hinden Standards Track [Page 32]
RFC 2460 IPv6 Specification December 1998
Its alignment requirement is 8n+2, to ensure that the 8-octet field
starts at a multiple-of-8 offset from the start of the enclosing
header. A complete Hop-by-Hop or Destination Options header
containing this one option would look as follows:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len=1 | Option Type=X |Opt Data Len=12|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 4-octet field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ 8-octet field +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Example 2
If an option Y required three data fields, one of length 4 octets,
one of length 2 octets, and one of length 1 octet, it would be laid
out as follows:
+-+-+-+-+-+-+-+-+
| Option Type=Y |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Opt Data Len=7 | 1-octet field | 2-octet field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 4-octet field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Its alignment requirement is 4n+3, to ensure that the 4-octet field
starts at a multiple-of-4 offset from the start of the enclosing
header. A complete Hop-by-Hop or Destination Options header
containing this one option would look as follows:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len=1 | Pad1 Option=0 | Option Type=Y |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Opt Data Len=7 | 1-octet field | 2-octet field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 4-octet field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PadN Option=1 |Opt Data Len=2 | 0 | 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Deering & Hinden Standards Track [Page 33]
RFC 2460 IPv6 Specification December 1998
Example 3
A Hop-by-Hop or Destination Options header containing both options X
and Y from Examples 1 and 2 would have one of the two following
formats, depending on which option appeared first:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len=3 | Option Type=X |Opt Data Len=12|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 4-octet field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ 8-octet field +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PadN Option=1 |Opt Data Len=1 | 0 | Option Type=Y |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Opt Data Len=7 | 1-octet field | 2-octet field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 4-octet field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PadN Option=1 |Opt Data Len=2 | 0 | 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len=3 | Pad1 Option=0 | Option Type=Y |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Opt Data Len=7 | 1-octet field | 2-octet field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 4-octet field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PadN Option=1 |Opt Data Len=4 | 0 | 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0 | 0 | Option Type=X |Opt Data Len=12|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 4-octet field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ 8-octet field +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Deering & Hinden Standards Track [Page 34]
RFC 2460 IPv6 Specification December 1998
Security Considerations
The security features of IPv6 are described in the Security
Architecture for the Internet Protocol [RFC-2401].
Acknowledgments
The authors gratefully acknowledge the many helpful suggestions of
the members of the IPng working group, the End-to-End Protocols
research group, and the Internet Community At Large.
Authors' Addresses
Stephen E. Deering
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706
USA
Phone: +1 408 527 8213
Fax: +1 408 527 8254
EMail:
This e-mail address is being protected from spambots. You need JavaScript enabled to view it
Robert M. Hinden
Nokia
232 Java Drive
Sunnyvale, CA 94089
USA
Phone: +1 408 990-2004
Fax: +1 408 743-5677
EMail:
This e-mail address is being protected from spambots. You need JavaScript enabled to view it
References
[RFC-2401] Kent, S. and R. Atkinson, "Security Architecture for the
Internet Protocol", RFC 2401, November 1998.
[RFC-2402] Kent, S. and R. Atkinson, "IP Authentication Header",
RFC 2402, November 1998.
[RFC-2406] Kent, S. and R. Atkinson, "IP Encapsulating Security
Protocol (ESP)", RFC 2406, November 1998.
[ICMPv6] Conta, A. and S. Deering, "ICMP for the Internet
Protocol Version 6 (IPv6)", RFC 2463, December 1998.
Deering & Hinden Standards Track [Page 35]
RFC 2460 IPv6 Specification December 1998
[ADDRARCH] Hinden, R. and S. Deering, "IP Version 6 Addressing
Architecture", RFC 2373, July 1998.
[RFC-1981] McCann, J., Mogul, J. and S. Deering, "Path MTU
Discovery for IP version 6", RFC 1981, August 1996.
[RFC-791] Postel, J., "Internet Protocol", STD 5, RFC 791,
September 1981.
[RFC-1700] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2,
RFC 1700, October 1994. See also:
http://www.iana.org/numbers.html
[RFC-1661] Simpson, W., "The Point-to-Point Protocol (PPP)", STD
51, RFC 1661, July 1994.
CHANGES SINCE RFC-1883
This memo has the following changes from RFC-1883. Numbers identify
the Internet-Draft version in which the change was made.
02) Removed all references to jumbograms and the Jumbo Payload
option (moved to a separate document).
02) Moved most of Flow Label description from section 6 to (new)
Appendix A.
02) In Flow Label description, now in Appendix A, corrected maximum
Flow Label value from FFFFFF to FFFFF (i.e., one less "F") due
to reduction of size of Flow Label field from 24 bits to 20
bits.
02) Renumbered (relettered?) the previous Appendix A to be Appendix
B.
02) Changed the wording of the Security Considerations section to
avoid dependency loop between this spec and the IPsec specs.
02) Updated R. Hinden's email address and company affiliation.
--------------------------------------------------------
01) In section 3, changed field name "Class" to "Traffic Class" and
increased its size from 4 to 8 bits. Decreased size of Flow
Label field from 24 to 20 bits to compensate for increase in
Traffic Class field.
Deering & Hinden Standards Track [Page 36]
RFC 2460 IPv6 Specification December 1998
01) In section 4.1, restored the order of the Authentication Header
and the ESP header, which were mistakenly swapped in the 00
version of this memo.
01) In section 4.4, deleted the Strict/Loose Bit Map field and the
strict routing functionality from the Type 0 Routing header, and
removed the restriction on number of addresses that may be
carried in the Type 0 Routing header (was limited to 23
addresses, because of the size of the strict/loose bit map).
01) In section 5, changed the minimum IPv6 MTU from 576 to 1280
octets, and added a recommendation that links with configurable
MTU (e.g., PPP links) be configured to have an MTU of at least
1500 octets.
01) In section 5, deleted the requirement that a node must not send
fragmented packets that reassemble to more than 1500 octets
without knowledge of the destination reassembly buffer size, and
replaced it with a recommendation that upper-layer protocols or
applications should not do that.
01) Replaced reference to the IPv4 Path MTU Discovery spec (RFC-
1191) with reference to the IPv6 Path MTU Discovery spec (RFC-
1981), and deleted the Notes at the end of section 5 regarding
Path MTU Discovery, since those details are now covered by RFC-
1981.
01) In section 6, deleted specification of "opportunistic" flow
set-up, and removed all references to the 6-second maximum
lifetime for opportunistically established flow state.
01) In section 7, deleted the provisional description of the
internal structure and semantics of the Traffic Class field, and
specified that such descriptions be provided in separate
documents.
--------------------------------------------------------
00) In section 4, corrected the Code value to indicate "unrecognized
Next Header type encountered" in an ICMP Parameter Problem
message (changed from 2 to 1).
00) In the description of the Payload Length field in section 3, and
of the Jumbo Payload Length field in section 4.3, made it
clearer that extension headers are included in the payload
length count.
Deering & Hinden Standards Track [Page 37]
RFC 2460 IPv6 Specification December 1998
00) In section 4.1, swapped the order of the Authentication header
and the ESP header. (NOTE: this was a mistake, and the change
was undone in version 01.)
00) In section 4.2, made it clearer that options are identified by
the full 8-bit Option Type, not by the low-order 5 bits of an
Option Type. Also specified that the same Option Type numbering
space is used for both Hop-by-Hop Options and Destination
Options headers.
00) In section 4.4, added a sentence requiring that nodes processing
a Routing header must send an ICMP Packet Too Big message in
response to a packet that is too big to fit in the next hop link
(rather than, say, performing fragmentation).
00) Changed the name of the IPv6 Priority field to "Class", and
replaced the previous description of Priority in section 7 with
a description of the Class field. Also, excluded this field
from the set of fields that must remain the same for all packets
in the same flow, as specified in section 6.
00) In the pseudo-header in section 8.1, changed the name of the
"Payload Length" field to "Upper-Layer Packet Length". Also
clarified that, in the case of protocols that carry their own
length info (like non-jumbogram UDP), it is the upper-layer-
derived length, not the IP-layer-derived length, that is used in
the pseudo-header.
00) Added section 8.4, specifying that upper-layer protocols, when
responding to a received packet that carried a Routing header,
must not include the reverse of the Routing header in the
response packet(s) unless the received Routing header was
authenticated.
00) Fixed some typos and grammatical errors.
00) Authors' contact info updated.
--------------------------------------------------------
Deering & Hinden Standards Track [Page 38]
RFC 2460 IPv6 Specification December 1998
Full Copyright Statement
Copyright (C) The Internet Society (1998). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS 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.
Deering & Hinden Standards Track [Page 39]
An unmanaged switch simply allows Ethernet devices to communicate with one another, such as a
PC or network printer, and those are typically what we call “plug and play.” They are shipped with a
fixed configuration and do not allow any changes to this configuration
Managed switches provide all the features of an unmanaged switch and provide the
ability to configure, manage, and monitor your LAN. And this gives you greater control over how
data travels over the network and who has access to it.
Also, managed switches use protocols such as the Simple Network Management Protocol, or what
we call SNMP, for monitoring the devices on the network. SNMP is a protocol that facilitates the
exchange of management information between network devices. SNMP queries can determine the
health of the network or the status of a particular device. By displaying this data in an easily
understood format, IT managers located at a central site can monitor the performance of the
network and quickly detect and repair network problems without having to physically interact with
the switch.
It’s true that a managed switch is more expensive than an unmanaged switch. However,
there are many additional features you get with a managed switch, such as quality of service,
virtual LANs, redundancy, and port mirroring.
VLANs allow a switch to logically group devices together to isolate traffic between these
groups even when the traffic is passing over the same physical switch. This segmentation and
isolation of network traffic help reduce unnecessary traffic. For instance, you can segment traffic
between your finance and marketing groups, so that mission-critical finance information can flow
without delay to the finance users and get bogged down by marketing traffic. This allows better
network performance and in many cases provides an additional level of security.
Another important feature of a managed switch is redundancy. Redundancy provides the ability to
safeguard a network in case a connection or cable fails by providing an alternate data path for
traffic. Managed switches incorporate what is called Spanning Tree Protocol standard, or STP, to
provide path redundancy in the network. Using the spanning-tree algorithm, STP provides
redundant paths while preventing loops that are created by multiple active paths between switches.
STP allows for one active path at a time between two network devices, preventing loops and
establishing the redundant links as a backup to keep integrated systems available and preventing
expensive downtime, which network admins can appreciate.
And, finally, there is port mirroring. In conjunction with a network analyzer, this feature is useful to
diagnose problems. It copies the switch network traffic and forwards it to a single port on the same
switch for analysis by a network analyzer. You can use the analyzer on a monitor port to
troubleshoot network problems by examining traffic on other ports or segments. The benefit of this
is you can troubleshoot problems without taking the network out of service
Switch is a device manage network packet between one device to another. home network today usually have router + switch together.
Beside normal packet routing, Smart Switch allow you manage filter/Vlan and QOS.
Wireless network usually use AP as switch.
The way to select switch are
1. Port number : how many device you need to connect to switch. 24 - 48
2. Function : QOS needs? Vlan needs?
3: Admin consol: remote admin ? local admin
4: security: MAC filter? address learning ?
Each device that talk over internet have route table.
Target network | Target interface |
inside command line window, type "route print" this will give you local PC's route table, usually it's simple one gateway table.
example
Interface List
14...00 03 10 22 1c 4e ......Atheros 802.11 a/b/g/n Dualband Wireless Network Module
10...00 03 10 fd 3d f6 ......Realtek RTL8168C(P)/8111C(P)
17...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1
18...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8
1...........................Software Loopback Interface 1
22...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
11...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
19...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
20...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #3
===========================================================================
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.2.1 192.168.2.11 25
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
192.168.2.0 255.255.255.0 On-link 192.168.2.11 281
192.168.2.11 255.255.255.255 On-link 192.168.2.11 281
192.168.2.255 255.255.255.255 On-link 192.168.2.11 281
192.168.33.0 255.255.255.0 On-link 192.168.33.1 276
192.168.33.1 255.255.255.255 On-link 192.168.33.1 276
192.168.33.255 255.255.255.255 On-link 192.168.33.1 276
192.168.210.0 255.255.255.0 On-link 192.168.210.1 276
192.168.210.1 255.255.255.255 On-link 192.168.210.1 276
192.168.210.255 255.255.255.255 On-link 192.168.210.1 276
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 192.168.33.1 276
224.0.0.0 240.0.0.0 On-link 192.168.210.1 276
224.0.0.0 240.0.0.0 On-link 192.168.2.11 281
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 192.168.33.1 276
255.255.255.255 255.255.255.255 On-link 192.168.210.1 276
255.255.255.255 255.255.255.255 On-link 192.168.2.11 281
===========================================================================
Persistent Routes:
None
IPv6 Route Table
===========================================================================
Active Routes:
If Metric Network Destination Gateway
1 306 ::1/128 On-link
17 276 fe80::/64 On-link
18 276 fe80::/64 On-link
14 281 fe80::/64 On-link
18 276 fe80::2101:aa2f:8783:e0ad/128
On-link
17 276 fe80::b897:7539:8bff:1051/128
On-link
14 281 fe80::d9c9:281a:cc1b:1e01/128
On-link
1 306 ff00::/8 On-link
17 276 ff00::/8 On-link
18 276 ff00::/8 On-link
14 281 ff00::/8 On-link
===========================================================================
Persistent Routes:
None
In above example, we can see the target to 0.0.0.0 , that's give the default gateway
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.2.1 192.168.2.11 25
Network Working Group David C. Plummer
Request For Comments: 826 (DCP@MIT-MC)
November 1982
An Ethernet Address Resolution Protocol
-- or --
Converting Network Protocol Addresses
to 48.bit Ethernet Address
for Transmission on
Ethernet Hardware
Abstract
The implementation of protocol P on a sending host S decides,
through protocol P's routing mechanism, that it wants to transmit
to a target host T located some place on a connected piece of
10Mbit Ethernet cable. To actually transmit the Ethernet packet
a 48.bit Ethernet address must be generated. The addresses of
hosts within protocol P are not always compatible with the
corresponding Ethernet address (being different lengths or
values). Presented here is a protocol that allows dynamic
distribution of the information needed to build tables to
translate an address A in protocol P's address space into a
48.bit Ethernet address.
Generalizations have been made which allow the protocol to be
used for non-10Mbit Ethernet hardware. Some packet radio
networks are examples of such hardware.
--------------------------------------------------------------------
The protocol proposed here is the result of a great deal of
discussion with several other people, most notably J. Noel
Chiappa, Yogen Dalal, and James E. Kulp, and helpful comments
from David Moon.
[The purpose of this RFC is to present a method of Converting
Protocol Addresses (e.g., IP addresses) to Local Network
Addresses (e.g., Ethernet addresses). This is a issue of general
concern in the ARPA Internet community at this time. The
method proposed here is presented for your consideration and
comment. This is not the specification of a Internet Standard.]
Notes:
------
This protocol was originally designed for the DEC/Intel/Xerox
10Mbit Ethernet. It has been generalized to allow it to be used
for other types of networks. Much of the discussion will be
directed toward the 10Mbit Ethernet. Generalizations, where
applicable, will follow the Ethernet-specific discussion.
DOD Internet Protocol will be referred to as Internet.
Numbers here are in the Ethernet standard, which is high byte
first. This is the opposite of the byte addressing of machines
such as PDP-11s and VAXes. Therefore, special care must be taken
with the opcode field (ar$op) described below.
An agreed upon authority is needed to manage hardware name space
values (see below). Until an official authority exists, requests
should be submitted to
David C. Plummer
Symbolics, Inc.
243 Vassar Street
Cambridge, Massachusetts 02139
Alternatively, network mail can be sent to DCP@MIT-MC.
The Problem:
------------
The world is a jungle in general, and the networking game
contributes many animals. At nearly every layer of a network
architecture there are several potential protocols that could be
used. For example, at a high level, there is TELNET and SUPDUP
for remote login. Somewhere below that there is a reliable byte
stream protocol, which might be CHAOS protocol, DOD TCP, Xerox
BSP or DECnet. Even closer to the hardware is the logical
transport layer, which might be CHAOS, DOD Internet, Xerox PUP,
or DECnet. The 10Mbit Ethernet allows all of these protocols
(and more) to coexist on a single cable by means of a type field
in the Ethernet packet header. However, the 10Mbit Ethernet
requires 48.bit addresses on the physical cable, yet most
protocol addresses are not 48.bits long, nor do they necessarily
have any relationship to the 48.bit Ethernet address of the
hardware. For example, CHAOS addresses are 16.bits, DOD Internet
addresses are 32.bits, and Xerox PUP addresses are 8.bits. A
protocol is needed to dynamically distribute the correspondences
between a <protocol, address> pair and a 48.bit Ethernet address.
Motivation:
-----------
Use of the 10Mbit Ethernet is increasing as more manufacturers
supply interfaces that conform to the specification published by
DEC, Intel and Xerox. With this increasing availability, more
and more software is being written for these interfaces. There
are two alternatives: (1) Every implementor invents his/her own
method to do some form of address resolution, or (2) every
implementor uses a standard so that his/her code can be
distributed to other systems without need for modification. This
proposal attempts to set the standard.
Definitions:
------------
Define the following for referring to the values put in the TYPE
field of the Ethernet packet header:
ether_type$XEROX_PUP,
ether_type$DOD_INTERNET,
ether_type$CHAOS,
and a new one:
ether_type$ADDRESS_RESOLUTION.
Also define the following values (to be discussed later):
ares_op$REQUEST (= 1, high byte transmitted first) and
ares_op$REPLY (= 2),
and
ares_hrd$Ethernet (= 1).
Packet format:
--------------
To communicate mappings from <protocol, address> pairs to 48.bit
Ethernet addresses, a packet format that embodies the Address
Resolution protocol is needed. The format of the packet follows.
Ethernet transmission layer (not necessarily accessible to
the user):
48.bit: Ethernet address of destination
48.bit: Ethernet address of sender
16.bit: Protocol type = ether_type$ADDRESS_RESOLUTION
Ethernet packet data:
16.bit: (ar$hrd) Hardware address space (e.g., Ethernet,
Packet Radio Net.)
16.bit: (ar$pro) Protocol address space. For Ethernet
hardware, this is from the set of type
fields ether_typ$<protocol>.
8.bit: (ar$hln) byte length of each hardware address
8.bit: (ar$pln) byte length of each protocol address
16.bit: (ar$op) opcode (ares_op$REQUEST | ares_op$REPLY)
nbytes: (ar$sha) Hardware address of sender of this
packet, n from the ar$hln field.
mbytes: (ar$spa) Protocol address of sender of this
packet, m from the ar$pln field.
nbytes: (ar$tha) Hardware address of target of this
packet (if known).
mbytes: (ar$tpa) Protocol address of target.
Packet Generation:
------------------
As a packet is sent down through the network layers, routing
determines the protocol address of the next hop for the packet
and on which piece of hardware it expects to find the station
with the immediate target protocol address. In the case of the
10Mbit Ethernet, address resolution is needed and some lower
layer (probably the hardware driver) must consult the Address
Resolution module (perhaps implemented in the Ethernet support
module) to convert the <protocol type, target protocol address>
pair to a 48.bit Ethernet address. The Address Resolution module
tries to find this pair in a table. If it finds the pair, it
gives the corresponding 48.bit Ethernet address back to the
caller (hardware driver) which then transmits the packet. If it
does not, it probably informs the caller that it is throwing the
packet away (on the assumption the packet will be retransmitted
by a higher network layer), and generates an Ethernet packet with
a type field of ether_type$ADDRESS_RESOLUTION. The Address
Resolution module then sets the ar$hrd field to
ares_hrd$Ethernet, ar$pro to the protocol type that is being
resolved, ar$hln to 6 (the number of bytes in a 48.bit Ethernet
address), ar$pln to the length of an address in that protocol,
ar$op to ares_op$REQUEST, ar$sha with the 48.bit ethernet address
of itself, ar$spa with the protocol address of itself, and ar$tpa
with the protocol address of the machine that is trying to be
accessed. It does not set ar$tha to anything in particular,
because it is this value that it is trying to determine. It
could set ar$tha to the broadcast address for the hardware (all
ones in the case of the 10Mbit Ethernet) if that makes it
convenient for some aspect of the implementation. It then causes
this packet to be broadcast to all stations on the Ethernet cable
originally determined by the routing mechanism.
Packet Reception:
-----------------
When an address resolution packet is received, the receiving
Ethernet module gives the packet to the Address Resolution module
which goes through an algorithm similar to the following.
Negative conditionals indicate an end of processing and a
discarding of the packet.
?Do I have the hardware type in ar$hrd?
Yes: (almost definitely)
[optionally check the hardware length ar$hln]
?Do I speak the protocol in ar$pro?
Yes:
[optionally check the protocol length ar$pln]
Merge_flag := false
If the pair <protocol type, sender protocol address> is
already in my translation table, update the sender
hardware address field of the entry with the new
information in the packet and set Merge_flag to true.
?Am I the target protocol address?
Yes:
If Merge_flag is false, add the triplet <protocol type,
sender protocol address, sender hardware address> to
the translation table.
?Is the opcode ares_op$REQUEST? (NOW look at the opcode!!)
Yes:
Swap hardware and protocol fields, putting the local
hardware and protocol addresses in the sender fields.
Set the ar$op field to ares_op$REPLY
Send the packet to the (new) target hardware address on
the same hardware on which the request was received.
Notice that the <protocol type, sender protocol address, sender
hardware address> triplet is merged into the table before the
opcode is looked at. This is on the assumption that communcation
is bidirectional; if A has some reason to talk to B, then B will
probably have some reason to talk to A. Notice also that if an
entry already exists for the <protocol type, sender protocol
address> pair, then the new hardware address supersedes the old
one. Related Issues gives some motivation for this.
Generalization: The ar$hrd and ar$hln fields allow this protocol
and packet format to be used for non-10Mbit Ethernets. For the
10Mbit Ethernet <ar$hrd, ar$hln> takes on the value <1, 6>. For
other hardware networks, the ar$pro field may no longer
correspond to the Ethernet type field, but it should be
associated with the protocol whose address resolution is being
sought.
Why is it done this way??
-------------------------
Periodic broadcasting is definitely not desired. Imagine 100
workstations on a single Ethernet, each broadcasting address
resolution information once per 10 minutes (as one possible set
of parameters). This is one packet every 6 seconds. This is
almost reasonable, but what use is it? The workstations aren't
generally going to be talking to each other (and therefore have
100 useless entries in a table); they will be mainly talking to a
mainframe, file server or bridge, but only to a small number of
other workstations (for interactive conversations, for example).
The protocol described in this paper distributes information as
it is needed, and only once (probably) per boot of a machine.
This format does not allow for more than one resolution to be
done in the same packet. This is for simplicity. If things were
multiplexed the packet format would be considerably harder to
digest, and much of the information could be gratuitous. Think
of a bridge that talks four protocols telling a workstation all
four protocol addresses, three of which the workstation will
probably never use.
This format allows the packet buffer to be reused if a reply is
generated; a reply has the same length as a request, and several
of the fields are the same.
The value of the hardware field (ar$hrd) is taken from a list for
this purpose. Currently the only defined value is for the 10Mbit
Ethernet (ares_hrd$Ethernet = 1). There has been talk of using
this protocol for Packet Radio Networks as well, and this will
require another value as will other future hardware mediums that
wish to use this protocol.
For the 10Mbit Ethernet, the value in the protocol field (ar$pro)
is taken from the set ether_type$. This is a natural reuse of
the assigned protocol types. Combining this with the opcode
(ar$op) would effectively halve the number of protocols that can
be resolved under this protocol and would make a monitor/debugger
more complex (see Network Monitoring and Debugging below). It is
hoped that we will never see 32768 protocols, but Murphy made
some laws which don't allow us to make this assumption.
In theory, the length fields (ar$hln and ar$pln) are redundant,
since the length of a protocol address should be determined by
the hardware type (found in ar$hrd) and the protocol type (found
in ar$pro). It is included for optional consistency checking,
and for network monitoring and debugging (see below).
The opcode is to determine if this is a request (which may cause
a reply) or a reply to a previous request. 16 bits for this is
overkill, but a flag (field) is needed.
The sender hardware address and sender protocol address are
absolutely necessary. It is these fields that get put in a
translation table.
The target protocol address is necessary in the request form of
the packet so that a machine can determine whether or not to
enter the sender information in a table or to send a reply. It
is not necessarily needed in the reply form if one assumes a
reply is only provoked by a request. It is included for
completeness, network monitoring, and to simplify the suggested
processing algorithm described above (which does not look at the
opcode until AFTER putting the sender information in a table).
The target hardware address is included for completeness and
network monitoring. It has no meaning in the request form, since
it is this number that the machine is requesting. Its meaning in
the reply form is the address of the machine making the request.
In some implementations (which do not get to look at the 14.byte
ethernet header, for example) this may save some register
shuffling or stack space by sending this field to the hardware
driver as the hardware destination address of the packet.
There are no padding bytes between addresses. The packet data
should be viewed as a byte stream in which only 3 byte pairs are
defined to be words (ar$hrd, ar$pro and ar$op) which are sent
most significant byte first (Ethernet/PDP-10 byte style).
Network monitoring and debugging:
---------------------------------
The above Address Resolution protocol allows a machine to gain
knowledge about the higher level protocol activity (e.g., CHAOS,
Internet, PUP, DECnet) on an Ethernet cable. It can determine
which Ethernet protocol type fields are in use (by value) and the
protocol addresses within each protocol type. In fact, it is not
necessary for the monitor to speak any of the higher level
protocols involved. It goes something like this:
When a monitor receives an Address Resolution packet, it always
enters the <protocol type, sender protocol address, sender
hardware address> in a table. It can determine the length of the
hardware and protocol address from the ar$hln and ar$pln fields
of the packet. If the opcode is a REPLY the monitor can then
throw the packet away. If the opcode is a REQUEST and the target
protocol address matches the protocol address of the monitor, the
monitor sends a REPLY as it normally would. The monitor will
only get one mapping this way, since the REPLY to the REQUEST
will be sent directly to the requesting host. The monitor could
try sending its own REQUEST, but this could get two monitors into
a REQUEST sending loop, and care must be taken.
Because the protocol and opcode are not combined into one field,
the monitor does not need to know which request opcode is
associated with which reply opcode for the same higher level
protocol. The length fields should also give enough information
to enable it to "parse" a protocol addresses, although it has no
knowledge of what the protocol addresses mean.
A working implementation of the Address Resolution protocol can
also be used to debug a non-working implementation. Presumably a
hardware driver will successfully broadcast a packet with Ethernet
type field of ether_type$ADDRESS_RESOLUTION. The format of the
packet may not be totally correct, because initial
implementations may have bugs, and table management may be
slightly tricky. Because requests are broadcast a monitor will
receive the packet and can display it for debugging if desired.
An Example:
-----------
Let there exist machines X and Y that are on the same 10Mbit
Ethernet cable. They have Ethernet address EA(X) and EA(Y) and
DOD Internet addresses IPA(X) and IPA(Y) . Let the Ethernet type
of Internet be ET(IP). Machine X has just been started, and
sooner or later wants to send an Internet packet to machine Y on
the same cable. X knows that it wants to send to IPA(Y) and
tells the hardware driver (here an Ethernet driver) IPA(Y). The
driver consults the Address Resolution module to convert <ET(IP),
IPA(Y)> into a 48.bit Ethernet address, but because X was just
started, it does not have this information. It throws the
Internet packet away and instead creates an ADDRESS RESOLUTION
packet with
(ar$hrd) = ares_hrd$Ethernet
(ar$pro) = ET(IP)
(ar$hln) = length(EA(X))
(ar$pln) = length(IPA(X))
(ar$op) = ares_op$REQUEST
(ar$sha) = EA(X)
(ar$spa) = IPA(X)
(ar$tha) = don't care
(ar$tpa) = IPA(Y)
and broadcasts this packet to everybody on the cable.
Machine Y gets this packet, and determines that it understands
the hardware type (Ethernet), that it speaks the indicated
protocol (Internet) and that the packet is for it
((ar$tpa)=IPA(Y)). It enters (probably replacing any existing
entry) the information that <ET(IP), IPA(X)> maps to EA(X). It
then notices that it is a request, so it swaps fields, putting
EA(Y) in the new sender Ethernet address field (ar$sha), sets the
opcode to reply, and sends the packet directly (not broadcast) to
EA(X). At this point Y knows how to send to X, but X still
doesn't know how to send to Y.
Machine X gets the reply packet from Y, forms the map from
<ET(IP), IPA(Y)> to EA(Y), notices the packet is a reply and
throws it away. The next time X's Internet module tries to send
a packet to Y on the Ethernet, the translation will succeed, and
the packet will (hopefully) arrive. If Y's Internet module then
wants to talk to X, this will also succeed since Y has remembered
the information from X's request for Address Resolution.
Related issue:
---------------
It may be desirable to have table aging and/or timeouts. The
implementation of these is outside the scope of this protocol.
Here is a more detailed description (thanks to MOON@SCRC@MIT-MC).
If a host moves, any connections initiated by that host will
work, assuming its own address resolution table is cleared when
it moves. However, connections initiated to it by other hosts
will have no particular reason to know to discard their old
address. However, 48.bit Ethernet addresses are supposed to be
unique and fixed for all time, so they shouldn't change. A host
could "move" if a host name (and address in some other protocol)
were reassigned to a different physical piece of hardware. Also,
as we know from experience, there is always the danger of
incorrect routing information accidentally getting transmitted
through hardware or software error; it should not be allowed to
persist forever. Perhaps failure to initiate a connection should
inform the Address Resolution module to delete the information on
the basis that the host is not reachable, possibly because it is
down or the old translation is no longer valid. Or perhaps
receiving of a packet from a host should reset a timeout in the
address resolution entry used for transmitting packets to that
host; if no packets are received from a host for a suitable
length of time, the address resolution entry is forgotten. This
may cause extra overhead to scan the table for each incoming
packet. Perhaps a hash or index can make this faster.
The suggested algorithm for receiving address resolution packets
tries to lessen the time it takes for recovery if a host does
move. Recall that if the <protocol type, sender protocol
address> is already in the translation table, then the sender
hardware address supersedes the existing entry. Therefore, on a
perfect Ethernet where a broadcast REQUEST reaches all stations
on the cable, each station will be get the new hardware address.
Another alternative is to have a daemon perform the timeouts.
After a suitable time, the daemon considers removing an entry.
It first sends (with a small number of retransmissions if needed)
an address resolution packet with opcode REQUEST directly to the
Ethernet address in the table. If a REPLY is not seen in a short
amount of time, the entry is deleted. The request is sent
directly so as not to bother every station on the Ethernet. Just
forgetting entries will likely cause useful information to be
forgotten, which must be regained.
Since hosts don't transmit information about anyone other than
themselves, rebooting a host will cause its address mapping table
to be up to date. Bad information can't persist forever by being
passed around from machine to machine; the only bad information
that can exist is in a machine that doesn't know that some other
machine has changed its 48.bit Ethernet address. Perhaps
manually resetting (or clearing) the address mapping table will
suffice.
This issue clearly needs more thought if it is believed to be
important. It is caused by any address resolution-like protocol.
|
|
Advertisements
|